ffmpeg 64位动态库编译,支持h264

之前本人写过ffmpeg 64位静态库编译,没计划再写关于ffmpeg动态库的编译,今天用ffmpeg命令行录制桌面视频,指定h264编码格式,结果失败,需要将x264库编译进ffmpeg。
先编译x264,本人直接下载的是master分支的x264代码,官网地址如下:
https://www.videolan.org/developers/x264.html

编译前进行配置,用的是如下命令

./configure  --host=x86_64-w64-mingw32 --enable-static --disable-asm --disable-opencl --disable-cli -–prefix=/usr/local/x264

注意,这个–host=x86_64-w64-mingw32是一定要带的
然后make和make install。

接着编译ffmpeg,首先是配置,如下所示:

./configure --arch=x86_64 --disable-debug --enable-shared --disable-static --enable-gpl --enable-libx264 --extra-cflags=-I/usr/local/x264/include --extra-ldflags="-L/usr/local/x264/lib -static" --pkgconfigdir=/usr/local/x264/lib/pkgconfig --prefix=/home/ffmpeg_x264_dll

接着make和make install,编译完成后,用ffmpeg进行录屏测试,在命令行(cmd)中执行如下语句

ffmpeg -f gdigrab -i desktop  -vcodec libx264 -f mp4 h264out.mp4

录制一段时间后,按q键停止录制,注意,此处不要用ctrl+c停止录制,否则最终生成的视频文件无法播放。
此时用qq影音播放,如下显示:
在这里插入图片描述
很明显存在问题,接着用迅雷影音播放,效果如下
在这里插入图片描述

很明显,都存在着问题,接着将视频拖入到chrome浏览器播放,如下所示:
在这里插入图片描述
chrome浏览器播放正常。

下面排查下问题原因,在命令行(cmd)中输入录屏命令(上面有提到)后,可以观察下命令行。
在这里插入图片描述
可以看出图片的格式yuv444p格式,一般而言,图片的存储格式多是yuv420p格式。
应该是qq影音和迅雷影音对yuv444p格式的视频处理不够好导致,ffmpeg在录屏时,可以指定图片存储格式,此次指定为yuv420p,命令如下:

ffmpeg -f gdigrab -i desktop  -pix_fmt yuv420p -vcodec libx264 -f mp4 h264out.mp4

这次生成的视频文件,用qq影音和迅雷影音播放时,是ok的,当然,用chrome浏览器播放时,也正常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值