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

在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

FFmpeg编译出错

  • 本人在直接运行 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编译完成
运行FFmpeg
测试用FFmpeg进行x265编码,ffmpeg -i test.mp4 -c:v libx265 -an output.265,可以输出265压缩码流文件。编译成功!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值