ubuntu18.04编译FFMPEG

一个多媒体播放器的实现架构如下图所示:

FFMPEG在搞多媒体音视编解码同学的手里可谓是瑞士军刀,FFMPEG不但集成了算法,框架,而且可以作为一个插件嵌入进更大的框架中,比如gstreamer默认的解码路径就是通过gst-libav插件实现的,而gst-libav就是对FFMPEG的封装。很多流行的多媒体播放器比如QQ影音就是将FFPEG套了个GUI的壳实现的,还死不承认,结果上了FFMPEG的黑名单。

FFMPEG框架:

下面介绍一下FFMPEG在ubuntu18.04上的编译:

1:获取源码

http://www.ffmpeg.org/download.html#releases

2.安装依赖

sudo apt install yasm 
sudo apt-get install libx264-dev
sudo apt install libsdl2-dev
sudo apt-get install libmp3lame-dev
sudo apt-get install libopus-dev
sudo apt-get install libavdevice-dev

3.配置

最新的gstreamer构建已经从configure切换为meson和ninja了,ffmpeg仍然沿用./configure

./configure --target-os=linux --prefix=/home/caozilong/Workspace/ffmpeg/ffmpeg-install --arch=x86_64 --disable-doc --enable-libx264 --enable-libmp3lame --enable-libopus --enable-debug=3 --extra-cflags="" --extra-ldflags="" --enable-gpl

因为--enable-libx264引入GPL协议的文件,所以FFMPG必须也要打开--enable-gpl选项,否则配置会出错

配置结束后,会列出当前支持的所有功能组件:

4 编译.

5.安装

安装后,查看安装目录:


多媒体解码测试:

./ffplay /media/caozilong/B0509F8C509F5844/The.Godfather.Part2.Blu-ray.720p.x264.DD51-HiS@MySiLU.mkv

上面的配置生成的固件是stripped的,要想保留调试信息,需要添加--disable-stripping选项,调试的话,最好也加上--disable-optimizations选项。

加上后:

./configure --target-os=linux --prefix=/home/caozilong/Workspace/ffmpeg/ffmpeg-install --arch=x86_64 --disable-doc --enable-libx264 --enable-libmp3lame --enable-libopus --enable-debug=3 --extra-cflags="" --extra-ldflags="" --enable-gpl --disable-stripping --disable-optimizations

重新编译,这次是 "not stripped"的了。

这样编译出来的FFMPEG不支持google VP8/VP9格式,由于H264/H265等格式有版权问题,很多开源项目在引用这类视频Codec的时候都非常小心的将这两种格式的解码器以库形式提供,并不开放源代码,比如Browser, 而VP8/VP9则没有这个顾虑。

我们把他加上:

配置:

./configure --target-os=linux --prefix=/home/caozilong/Workspace/ffmpeg/ffmpeg-install --arch=x86_64 --disable-doc --enable-libx264 --enable-libmp3lame --enable-libopus --enable-debug=3 --extra-cflags="" --extra-ldflags="" --enable-gpl --enable-libvpx --enable-encoder=libvpx_vp8 --enable-encoder=libvpx_vp9 --enable-decoder=vp8 --enable-decoder=vp9 --enable-parser=vp8 --enable-parser=vp9

编译安装,查看新的FFMPEG是否支持VP8/VP9的命令是:

ffmpeg -codecs|grep vp9

可以看到VP9解码器和编码器都已经支持,而且支持不止一种,其中的vp9很可能(我没分析代码,不确定)就是ffmpeg编写的FFVP9解码器,它比Google自己开发的还要快,VP9是Google主导开发的下一代开源视频编解码器,压缩效率比H264高一倍,是私有编解码器H265的竞争对手。FFvp9声称在不同机器上其解码速度比Google开发的快25~50%,其多线程性能有显著改进。这一结果并不出人意料,FFmpeg开发的VP8解码器也比Google的快。

重新编译,将视频转码的命令是:

 ffmpeg -i /home/caozilong/Workspace/video/movie.mp4  -vcodec libvpx-vp9 -b:v 3M vp9movie_libvpx.mp4

通过mediainfo查看转码成功

ffplay可以正常播放:


结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值