在Win10中编译完x264、x265后,开始编译FFmpeg,并将集成这几个主流视频编解码算法

准备

系统环境: Win10 + VS2019
编译环境: Mingw64 + msys2 + cmake + yasm + nasm
编码算法:x264_161、x265_3.3、avs2(xavs2_1.3、davs2_1.6)

为方便将以上编码器一起集成到FFmpeg中,全部采用msys2编译,并编译到同一地址,本人全部编译到 /home/build 中, 即在编译时,全部采用./configure --prefix=/home/build,这样三个编码器+一个解码器(avs2 分为:编码器 xavs2 和解码器 davs2)全部放在同一文件夹中。

具体见【X265】Win10环境编译x264 / x265

AVS2编译

AVS2是我国自主研制的视频编码算法,具体框架与HEVC类似,性能上也对标HEVC。北京大学数字视频编解码技术国家工程实验室已开源AVS2高清实时编码器。AVS3正在研制中,还未看到开源代码。

AVS2编码器开源地址
AVS2解码器开源地址

FFmpeg已可集成AVS2编解码器,因此顺便编译了AVS2,与FFmpeg一起编译。
AVS2编译过程很简单,有msys2和VS工程两种,在开源中已明确说明编译方法,不再赘述,这里采用msys2编译。

FFmpeg编译

FFmpeg源码获取
FFmpeg详细配置参数

  1. 将获取的源码拷到msys2中(本人下载的FFmpeg_4.4版本);
  2. 由于可选编译选项比较长,这里采用创建sh脚本的方式,输入编译指令:在 ffmpeg-4.4文件夹中创建build.sh,可通过vim build.sh创建并编写脚本。本人编写的 sh 文件如下:
./configure \--enable-shared \--enable-static \--enable-gpl \--enable-encoder=libx264 \--enable-encoder=libx265 \--enable-encoder=libxavs2 \--enable-libx264 \--enable-libx265 \--enable-libxavs2 \--enable-asm \--prefix=/home/ffmpeg \--extra-cflags=-I/home/build/include \--extra-ldflags=-LIBPATH:/home/build/lib
make
make install
  • 注意: FFmpeg好像不能集成版本号 >= 1.6 的 davs2解码器,现在在北大官网下载的只有 davs2_1.6,因此这里没有集成解码器,如需要可添加--enable-decoder=libdavs2 \ --enable-libdavs2
  • 我目前还不知道--enable-encoder=libx264--enable-libx264有什么区别,有这个选项就都输上了。。
  1. 开始编译前,还需要修改一个环境变量:PKG_CONFIG_PATH

  • 本人在直接运行 build.sh 后报错 ERROR:libx264 not found,查看 ffmpeg-4.4/ffbuild/config.log,发现最后会提示在路径 PKG_CONFIG_PATH 下没有找到libx264(具体咋写的忘了),查看此路径echo $PKG_CONFIG_PATH,发现定位如上图;
  • PKG_CONFIG_PATH 指之前x264、x265等编译后,生成的lib文件夹中的pkgconfig文件夹,其中的几个pc文件会指引查询到x264、x265、avs2的库文件和头文件;
  • 因此,使用export PKG_CONFIG_PATH=/home/build/lib/pkgconfig 将此环境变量定位在正确位置,再开始配置和编译;
  • 实际上本人在修改完这个后,仍遇到了 ERROR:libx264 not found错误,查看 config.log 发现跟此次 PKG_CONFIG_PATH 无关,但仍未找到 lx264,最终发现是在/home/build/lib/路径中,我本来是删去了libx264.dll.a 的动态链接库,libx264.a 仍在,但FFmpeg没找到 lx264,不知道为啥必须要这个动态链接库,反正添加上之后就正确了。
  1. 配置成功后,在弹出的配置列表中可以找到 Enabled encoders,其中包含了 libx264,libx265,libxavs2等,这在未配置几个编码器前是没有的,说明此时 configure 成功,可以开始编译


5. 编译完成,在生成的 ffmpeg文件夹中可以看到以下4个文件夹,其中bin文件中的ffmpeg.exe可以直接运行,运行如下:


测试用FFmpeg进行x265编码,ffmpeg -i test.mp4 -c:v libx265 -an output.265,可以输出265压缩码流文件。编译成功!

【X265】Win10环境编译FFmpeg,集成 x264、x265、avs2相关推荐

  1. linux 编译ffmpeg 支持x264, x265

    原址 1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plaincopy sudo apt-get - ...

  2. linux 编译x264,linux 编译ffmpeg 支持x264, x265

    1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...

  3. 交叉编译ffmpeg:aac x264 x265

    交叉编译AAC: 1.下载aac源码 wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master tar xzv ...

  4. Ubuntu下编译ffmpeg+openh264+x264

    [笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...

  5. Ubuntu 下编译ffmpeg和x264解编码器(翻译的一篇文章:)

    拿出自己一篇早期接触Ubuntu时翻译的文章,对逝去的SEO-DIC.COM.CN这个网站默哀. Ubuntu 下编译ffmpeg和x264解编码器 今年初由于个人的一些原因和其它因素:希奥开源(ht ...

  6. Windows msys2 下编译FFmpeg并实现x265依赖

    这里写自定义目录标题 引言 Msys2的安装 x265的编译 编译FFmpeg 结语 引言 为了做毕设,要使用FFmpeg与x265,由于之前没有相关方面的经验,算是一个小白,所以安装过程属实艰辛.暂 ...

  7. 完美解决Linux环境编译ffmpeg库

    背景说明 项目功能实现需要在Linux下编译出可用的FFmpeg库.FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器 ...

  8. 音视频学习 - windows10 + vs2019环境编译ffmpeg

    一.编译经历 1.[第一次失败]基于windows11 + vs2022编译,总是卡住不动. 2.[第二次失败]基于ubantu进行交叉编译,各种报错,没搞定. 3.[第一次成功]基于虚拟机的win1 ...

  9. MinGw+Msys搭建环境 编译ffmpeg

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

最新文章

  1. 如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!
  2. jQuery源码学习之Callbacks
  3. OpenGL的简单研究-开端
  4. CTFshow 信息收集 web7
  5. Oracle - Log buffer 的相关设置
  6. Bumblebee微服务网关之Url重写
  7. 视觉SLAM笔记(56) 位姿图优化
  8. 央行发布声纹识别安全应用技术标准,适用手机银行、第三方支付
  9. 利用bwm-ng 实时监控系统
  10. intellij idea 键盘映射
  11. 西北工业大学noj数据结构实验003稀疏矩阵转置
  12. 网吧免费上网的7种武器
  13. Deep Light Enhancement without Paired Supervision (非配对数据监督学习用于低曝光图像增强)
  14. Go会否给Java带来冲击?
  15. 程序员成就技术大拿之路
  16. 上升了百分之几怎么算_计算上涨百分比的公式,上涨比例怎么算公式?
  17. 山东省地震局2008年事业单位公开招聘工作人员公告
  18. 一元函数微分学的几何与物理应用
  19. 【计算机网络】思科实验(9):动态路由协议RIPv2
  20. ssh框架可以使用Ajax,基于Ajax的SSH框架的应用研究

热门文章

  1. Back键和Home键的屏蔽
  2. 安卓开发教你监听手机Home键
  3. 随机森林分析共享单车的需求
  4. Win8.1 取消开机密码
  5. FastQC软件下载
  6. 高德地图定位及导航开发流程
  7. vue + echarts 之饼形图
  8. [禅悟人生]生活中的烦恼, 一笑了之
  9. 三防平板终端丨三防平板电脑丨三防平板如何应用在工业中?
  10. 坦克大战第一阶段代码