0
点赞
收藏
分享

微信扫一扫

ubuntu18.04编译FFMPEG


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

ubuntu18.04编译FFMPEG_编解码器

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

FFMPEG框架:

ubuntu18.04编译FFMPEG_Google_02

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

1:获取源码

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

ubuntu18.04编译FFMPEG_编解码器_03

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选项,否则配置会出错

ubuntu18.04编译FFMPEG_编解码器_04

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

ubuntu18.04编译FFMPEG_linux_05

4 编译.

ubuntu18.04编译FFMPEG_编解码器_06

ubuntu18.04编译FFMPEG_Google_07

5.安装

ubuntu18.04编译FFMPEG_编解码器_08

ubuntu18.04编译FFMPEG_Google_09

安装后,查看安装目录:

ubuntu18.04编译FFMPEG_Google_10

多媒体解码测试:

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

ubuntu18.04编译FFMPEG_编解码器_11

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

ubuntu18.04编译FFMPEG_Google_12

加上后:

./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"的了。

ubuntu18.04编译FFMPEG_编解码器_13

这样编译出来的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

ubuntu18.04编译FFMPEG_Google_14

可以看到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

ubuntu18.04编译FFMPEG_Google_15

通过mediainfo查看转码成功

ubuntu18.04编译FFMPEG_编解码器_16

ffplay可以正常播放:

ubuntu18.04编译FFMPEG_Google_17

结束!

举报

相关推荐

0 条评论