Ubuntu10.04编译FFmpeg
刚开始安装折腾了好久,很多软件包都找不到,可能是跟软件源有关,所以先说一下我的软件源:
软件源是用的中国默认的官方源
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 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。