Ubuntu下FFmpeg的安装(支持libfdk_acc)
FFmpeg及libfdk-aac编译与安装
操作系统:Ubuntu 16.04
安装
方法1:软件包安装
sudo apt update
sudo apt install ffmpeg
最初我用的是这种方法,因为比较简单,可以满足视频编码的需求。但是后来在对音频进行编码的时候,需要使用libfdk_aac
这个音频编码库,这种方法就行不通了。为了满足需求,最终采用了下面这个方法:
方法2:源码安装
2022.05.08更新:
FFmpeg较为复杂,有条件和经验的建议直接按照官方文档给出的步骤进行环境配置和编译,自选所需要的模块。本文提供的方法较为简单,可能无法满足较复杂的编码需求(如VP9、AV1编码等)。
参考:
- Linux 下ffmpeg的安装
- Encode/AAC – FFmpeg
- ffmpeg开启libfdk_aac跟libmp3lame
- ubuntu ffmpeg编译(x264+fdk_aac+mp3lame)
- ubuntu 14.10下安装带有libfdk-aac的ffmpeg
- CompilationGuide/Ubuntu - FFmpeg
步骤:
-
安装Yasm
下载网页:Download - The Yasm Modular Assembler Project
源码链接:yasm-1.3.0.tar.gz
安装命令:wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0/ sudo ./configure sudo make sudo make install
-
安装fdk_aac
下载网页:fdk-aac-2.0.1
源码链接:fdk-aac-2.0.1.tar.gz
安装命令:wget https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz tar -zxvf fdk-aac-2.0.1.tar.gz cd fdk-aac-2.0.1/ autoreconf -fiv sudo ./configure --prefix=/usr --disable-shared sudo make sudo make install
-
安装ffmpeg
下载网页:Download FFmpeg
源码链接:ffmpeg-4.2.1.tar.bz2
安装命令:wget https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 tar -jxvf ffmpeg-4.2.1.tar.bz2 cd ffmpeg-4.2.1/ sudo ./configure --enable-libfdk-aac --enable-nonfree sudo make sudo make install
*注1:若提示
WARNING: pkg-config not found, library detection may fail.
,则需先安装pkg-config
,参考:pkg-config 编译安装
下载页面:Index of /releases
源码链接:pkg-config-0.29.2.tar.gzwget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz tar -zxvf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2/ sudo ./configure --with-internal-glib sudo make sudo make install
*注2:必须要在配置ffmpeg之前先装libfdk-aac,否则会报错:
ERROR: libfdk_aac not found
若执行时遇到找不到libfdk-aac.so.2的问题,在/etc/ld.so.conf中加入/usr/lib后执行ldconfig即可,参考:ffmpeg执行报.so不存在
*注3:编译过程比较耗时间,可以考虑在
make
后加-j 4
等选项实现多核编译以提高速度*注4:在Win10的Ubuntu子系统中安装成功,但在使用时遇到错误:
Unknown encoder 'libx264'
经过查询,发现是缺少x264库,参考:
-解决Ubuntu16.04视频编码出现Unknown encoder 'libx264’问题
-解决Ubuntu18.04视频编码出现Unknown encoder 'libx264’问题解决步骤:
1.安装nasm(否则后面会报错),参考:ffmpeg开发环境的安装测试和更新的步骤wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz xz nasm-2.13.03.tar.xz tar -xvf nasm-2.13.03.tar cd nasm-2.13.03/ sudo ./configure --prefix=/usr sudo make sudo make install
2.安装x264库
git clone http://git.videolan.org/git/x264.git cd x264/ sudo ./configure --enable-shared --enable-static sudo make sudo make install
3.重新编译ffmpeg
sudo ./configure --enable-libfdk-aac --enable-nonfree --enable-gpl --enable-libx264 sudo make -j 4 sudo make install
4.之后验证时,又遇报错:
ffmpeg: error while loading shared libraries: libx264.so.159: cannot open shared object file: No such file or directory
解决参考:./ffmpeg: error while…
修改/etc/ld.so.conf
,添加:/usr/local/x264/lib
保存并退出后,执行:
ldconfig
验证:
ffmpeg -version
正常的话,会输出:
*软件包安装:
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
*源码安装:
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 20160609
configuration: --enable-libfdk-aac --enable-nonfree
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
命令格式(基础):
ffmpeg -i input_video output_video
常用选项:
-c:v或-vcodec:视频编码器
-c:a或-acodec:音频编码器
-b:v:视频码率,单位为bit
-b:a:音频码率,单位为bit
-s:画面尺寸,即分辨率,如“1920x1080”
-r:帧率,即每秒有多少帧,单位为fps
-g:GOP大小,即关键帧(I帧)间隔
-vn:不处理视频
-an:不处理音频
安装ffmpeg的同时也安装了ffplay和ffrpobe,这里介绍一些关于ffrpobe的使用。
查看关键帧数量:
ffprobe -show_frames input.mp4 | grep -c key_frame=1
查看GOP长度:
ffprobe -show_frames input.mp4 | grep key_frame
从输出中,数关键帧(key_frame=1)之间有多少非关键帧(key_frame=0),即为GOP的帧数量
*FFmpeg的功能很强大,因此本文不包含具体使用FFmpeg的内容。可以参考一个H.264编码的例子:DSAH视频系统(服务器&播放器)搭建
更多推荐
所有评论(0)