Ubuntu编译安装FFmpeg

时间:2022-02-25 04:36:04

refer to:

http://www.cnblogs.com/hongyanee/archive/2013/09/09.html


 这几天安装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 -- 编解码器不存在