2009-03-01

编译安装Mencoder和FFMpeg

  由于这两个程序现在都基本不提供所谓的release了,很多新的功能必须使用svn的代码来编译安装,其实本来编译很简单,不过按照我们的需求来编有时候就会麻烦了。。
编译准备:
  先安装其他编码器:
  FAAC和FAAD:https://sourceforge.net/project/showfiles.php?group_id=704
  LAME:https://sourceforge.net/project/showfiles.php?group_id=290
  Theora:http://downloads.xiph.org/releases/theora/
  vorbis:http://downloads.xiph.org/releases/vorbis/
  x264:http://www.videolan.org/developers/x264.html

下载完以后一个个编译好。x264需要yasm
之后再编译mplayer和ffmpeg
mplayer最简单了,如果你不需要gui的话直接
./configure --prefix=dir_you_want
就可以了。不过注意,如果你编译的时候发现很多codec不支持的话记得要指定解码器目录
ffmpeg会麻烦一点,你编译ffmpeg的时候,可能需要
./configure --prefix=dir_you_want --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-shared --enable-libfaac --enable-libfaad --enable-gpl --enable-libtheora --enable-libx264
编译完成之后,跑ffmpeg发现
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file
这样的错误,那有两种解决方法。
一个是把你用prefix指定的安装目录下的lib目录里面的文件link到/usr/lib中去。
另外一个是修改/etc/ld.so.conf
添加你prefix指定的目录的lib目录的绝对路径。
然后ldconfig即可。

------------------------------------------------------------------------
更新:
  如果你在使用libx264编码的时候遇到这样的错误:

[libx264 @ 0x9d515e0]no ratecontrol method specified

那么,80%的概率是你编译x264的时候使用了--enable-shared。这个选项引发了这个错误。具体原因似乎是没能加载所需要的动态库。
但是问题是,如果你想要ffmpeg能够使用libx264的话又必须要使用libx264.so.66这个动态库。否则你不能编译ffmpeg。所以这个问题相当奇怪。
我是在编译完ffmpeg之后重新编译x264才搞定的。
------------------------------------------------------------------------
更新:在另一台机器上编译过程不同于此,因此,本帖可能有错,待研究一下动态编译.

没有评论: