一、ffmpeg 0.8.2编译
由于对linux系统的熟悉程度不够,近段时间编译ffmpeg 0.8.2时遇到了很大的麻烦,在不停地查资料,不停地重试之后,我终于搞定了这个让我头疼的编译问题,现在将我的编译方法和大家分享一下,希望对大家有用:

 

1、 下载debian-multimedia-keyring_2010.12.26_all.deb包,执行:

 

dpkg -i debian-multimedia-keyring_2010.12.26_all.deb

 

 
2、 将下面的代码加到文件/etc/apt/sources.list

 

## Debian Multimedia squeeze:

 

deb http://www.debian-multimedia.org squeeze main non-free

 

deb-src http://www.debian-multimedia.org squeeze main non-free

 

 
3、 开始安装编译需要的lib

 

apt-get update
apt-get install subversion frei0r-plugins-dev libdc1394-22-dev libfaac-dev libmp3lame-dev libx264-dev libdirac-dev libxvidcore-dev libfreetype6-dev libvorbis-dev libgsm1-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenjpeg-dev libschroedinger-dev libspeex-dev libtheora-dev libva-dev
 
4、 进入ffmpeg 0.8.2目录
./configure --prefix=/opt/ffmpeg --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-x11grab --enable-swscale --enable-version3 --enable-shared --disable-yasm --enable-filter=movie --enable-frei0r --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libdirac --enable-libxvid --enable-libfreetype --enable-libvorbis --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora
之前试过好多种编译的方式,编译完成后视频/音频的转换都没有问题,测试一下水印,发现水印能加上,但是水印的效果相当差。重新编译发现上面参数中:--enable-filter=movie--enable-frei0r两个参数很重要,顺利编译上这两个参数之后,水印也就正常地加上了。
不知道什么原因,我到这步的时候总是出现一个警告信息,上网查了一下,原来是系统时间不对,检查一下我的时间居然和现在差着三个月,怪不得过不去,于是进行系统对时:
chkconfig time on
ntpdate 210.72.145.44
顺利通过后:
make
make install
 
编译完成,执行:/opt/ffmpeg/bin/ffmpeg,大功告成!
 
二、编译包的迁移
将编译包copy到没有安装过ffmpeg得服务器上之后运行时会出现与这样类似的错误提示:
error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
这个提示很清晰,就是找不到lib文件,原因是在编译ffmpeg的服务器上我们使用apt-get install装了一些包,这些包默认装到/usr/lib目录下,而迁移之后的服务器上没有这些需要的包,所以出现以上类似的提示。
解决办法:将这些文件复制到新的服务器里相应的文件夹下,如复制到/opt/ffmpeg/lib中(如果是文件复制,不是整个lib文件夹复制,复制的是要用命令:cp -d)。
然后,在vi /etc/ld.so.conf文件中第一行加入:/opt/ffmpeg/lib,保存退出。
执行:ldconfig
这样再去运行ffmpeg的时候就能正常使用了。
 
三、视频加水印
顺便给大家一个ffmpeg 0.8.2加透明水印的命令示例:
ffmpeg -i moviegs.mp4 -vf "movie=logo.png [logo]; [in][logo] overlay=(main_w-overlay_w)/2:main_h-overlay_h:1 [out]" 888.flv
其中:
-vf命令为添加水印
Overlay=……,这个是定义水印的位置,第一个参数水印图片的x坐标,第二个参数为y坐标,main_w-overlay_w这个参数代表水印加在视频最右端,以此类推main_h-overlay_h代表水印加到视频最底部。
举两个例子:
overlay=10:10:1将水印加在视频左上角
overlay=10:main_h-overlay_h:1将水印加在视频左下角
overlay=main_w-overlay_w:10:1将水印加在视频右上角

   overlay=main_w-overlay_w:main_h-overlay_h:1将水印加在视频右下角