Ubantu编译安装FFmpeg
这几天安装FFmpeg搞得很头疼,直接用apt-get安装工具安装会比较方便,但是想要自定义编解码器就比较麻烦了。所以编译安装FFmpeg倒成了一个比较靠谱的做法。
FFmpeg版本:
平台: Ubantu 12.0 64位
1. 首先下载最新版本的FFmpeg源码
sudo git clone https://github.com/FFmpeg/FFmpeg.git
2. 然后按照需求配置
sudo ./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --disable-yasm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libvpx --enable-x11grab --extra-cflags=-I/usr/local/ffmpeg/include/ --extra-ldflags=-L/usr/local/ffmpeg/lib --enable-version3 --extra-version=syslin
--prefix=PREFIX 设置的是ffmpeg安装目录
--enable-shared 设置允许编译共享库
--enable-nonfree --enable-gpl 设置对License的限制,分别为允许使用付费代码和gpl代码。
--disable-yasm 禁用汇编程序
--enable-lib* 设置可能会用到的编解码器
--enable-x11grab 允许录制屏幕,需要安装libxfixes库。
--extra-ldflags 设置动态链接库目录(后面还会提到)
如果设置系统没安装的编解码器,上面命令就会报错。例如,系统中没有 libfaac,而上述命令中包含enable-libfaac,上述命令就会执行错误。
ERROR: libfaac not found
只要安装libfaac就可以解决了。执行
sudo apt-get install libfaac-dev
上述配置前,需要执行一个安装编解码器的操作。
sudo apt-get install libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libvpx-dev libx264-dev libxvidcore-dev libxfixes-dev
3. 编译安装
sudo make
sudo make install
安装完成后,如果我们直接运行ffmpeg程序,会报错:
ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory
这是因为还有一些动态链接库没有注册到系统中。第4步执行注册动态链接库。
4. 注册动态链接库
我们设置了动态链接库的目录,需要注册到系统中。
echo "/usr/local/ffmpeg/lib" > /etc/ld.so.conf.d/ffmpeg.conf
ldconfig -v
4. 设置快捷方式
进入ffmpeg的安装目录,运行ffmpeg,可以发现是正常的。然后通过设置连接设置快捷方式。
cd /usr/local/bin
ln -sf /usr/local/ffmpeg/ffmpeg
ln -sf /usr/local/ffmpeg/ffserver
ln -sf /usr/local/ffmpeg/ffprobe
这样ffmpeg就安装完成了。
5. 常见错误
Unknown input or output format: x11grab -- 安装时未设置允许录制屏幕
error while loading shared libraries: libavdevice.so.55 -- 未注册动态链接库
ERROR: libfaac not found -- 编解码器不存在