Minisky

好记性不如个烂笔头,记一些有用的东西!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Ubuntu10.04编译FFmpeg

Posted on 2010-10-12 20:28  Minisky  阅读(2632)  评论(2编辑  收藏  举报

刚开始安装折腾了好久,很多软件包都找不到,可能是跟软件源有关,所以先说一下我的软件源:

软件源是用的中国默认的官方源
http://cn.archive.ubuntu.com/ubuntu/

 

一、安装编译所需的工具和库:
(1)先可以执行命令:
sudo apt-get purge ffmpeg x264 libx264-dev

清除原来的安装包

 

(2)然后执行命令:

sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libMP3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore-dev zlib1g-dev

 

 

注意:ubuntu10.04以前的版本请将libxvidcore-dev替换为libxvidcore4-dev,否则会找不到包。

 

二、编译和安装x264库(可选)
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo make install
有时候编译不过去,则可以使用新力德软件安装程序来进行安装,使用方便。


三、编译和装ffmpeg:
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

 

./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac  --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3

 

注意:配置中没有这一项--enable-libfaad暂时移除,还需要安装两个包libopencore-amrnb-dev libopencore-amrwb-dev

make

make install

完成了上面几步,就可以使用FFmpeg的各项功能了。

 

上面很多内容也是来源于网络资源,自己根据实际情况做了一些小的修改,做个记录。

 

10/15更新:

按上面的配置编译完成之后,播放视频音频是没有什么问题了,但是不能用来编译自己写的程序,总会报错。后来发现要加上--enable-shared这个选项,这样才可以编译自己的例子。还有,要把--enable-libx264这个选项也先去掉,可能也是在编译的时候没有配置shared选项,暂时先不管了,有空再看。下面是一个更新之后的配置选项:

./configure --enable-shared --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac  --enable-libmp3lame --enable-libtheora --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3

在configure,make, make install之后,执行ffplay时会报下面的错:

ffplay: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory

 

这个是因为默认的*.so库是安装到了/usr/local/lib这个目录下面,这个目录并不是系统默认的路径,所以会说找不到文件或目录。解决方法有两种:

1. 把/usr/local/lib目录下的库拷贝到/usr/lib下面。

2. 修改/etc/ld.so.conf文件,在下面加上一行include /usr/local/lib,然后执行一下sudo ldconfig。

 

编译ffmpeg/libavcodec/api-example.c命令:

 

gcc -o api-example api-example.c -lavcodec -lavformat -lavutil