前些阵子在项目中用到了FFMpeg这个强大的视频处理开源类库。确实,关于这方面的文档太少了,在国内的网站上找了好多,回复大多都是09年以前的。讲述中用到的函数,有的都已经被标为过期。在其官网推荐的两个Demo的网站上的教程,也同样存在这个问题。 自己在摸索中也遇到了很多很多的困难,但大多问题都无法在官方的资料中找到答案。 也是经历了导出搜索资料后又一步一步尝试,最终完成了任务。 虽说对FFMpeg不能说精通到什么程度,但是有些前车之鉴和最新的使用经验分享给可能需要的人。 早就想总结一下了,可任务完成后又有新的事情,一拖再拖。 以后会每隔一段时间把以前的内容总结总结。好了开始:
首先,我的编程环境是在Linux(Centos 6.3)下搭建的,编程语言用的C语言,没有用C++。虽然CentOS存在的问题是有的类库过于陈旧(比如金山的WPS就安装不上T^T),但其稳定性绝对是不用质疑的。UI的稳定对于开发来说无比重要,这也是命令行界面的魅力啊。(可惜纯Text界面看不了视频啊 :))。如果想在Windows下开发或者在其他Linux环境下开发,配置环境篇文章不大适合你了。不过网上关于在Windows下配置的文章很多,自己google一下吧。 配置好环境,开发中用到的函数可是一样滴。。。 1. 安装CentOS 6.3 Centos不知道为什么,好像不能刻到U盘里头安装,当然你可以用虚拟机,但是我还是用的双系统。 如果有在U盘中安装成功的可以给我扫扫盲。。。具体安装过程我就不赘述了。 2. 安装第三方软件源RPMForge Centos和Fedora 这些基于红帽Linux的系统都是通过yum命令来安装软件的,原理如同Ubuntu的 apt-get。到http://packages.sw.be/ 下载RPMForge的rpm包,注意你的操作系统是x86还是x64,这里我只测试过载32位系统的运行情况,所以默认都是描述的32位。双击安装或者命令行安装:输入:rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm3. 安装依赖类库: 安装好上面的软件源之后,安装一些FFMpeg依赖的类库就非常的方便了。大部分的软件包可以通过命令直接安装,省去了手动去官网下载,然后自己编译的麻烦(手动安装的时候有一个最大的问题就是版本不匹配:新版的FFMpeg有可能调用了更新的函数,而安装的类库里没有,所以折腾之后的总结,可以少走弯路啊!)输入以下命令(保证没错 可以复制):
yum -y install lame lame-devel libogg libogg-devel dirac dirac-devel libvorbis libvorbis-devel SDL SDL-devel gsm gsm-devel libvpx libvpx-devel libvpxlame-devel xvidcore xvidcore-devel faac faac-devel opencore-amr opencore-amr-devel yasm faad2 a52dec4. 安装zlib-devel
yum install zlib-devel这个包很重要,也很容易被忽略。如果不装,会报各种编译错误。 5. 安装libtheora软件包 这个包需要自己上网下载以下,注意版本不要错(其他版本的匹配我没有测试过)。输入以下命令:
tar jxf libtheora-1.1.1.tar.bz2 cd libtheora-1.1.1 ./configure --prefix=/usr --with-ogg=/usr --with-vorbis=/usr --with-sdl-prefix=/usr make make install6. 安装x264 输入命令:
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar jxf last_x264.tar.bz2 cd x264-snapshot-20110822-2245 ./configure --prefix=/usr --enable-shared make make install7. 安装FFMpeg 先下载下来:
wget http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.gz然后解压:
tar zxf ffmpeg-0.11.1.tar.gz进入解压后的目录:
cd ffmpeg-0.11.1输入命令:
./configure --prefix=/usr --enable-avfilter --enable-libdirac --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grabmakemake install到此为止,一切类库都配置好了! 这些类库采用的是动态链接库的生成方式,会生成.so的动态链接文件。下一篇打算介绍一下如何在Eclipse里编译和连接C/C++ Makefile项目,并引入FFMpeg类库。