感谢支持
我们一直在努力

Ubuntu 下编译ffmpeg和x264解编码器

Ubuntu(Linux)下编译ffmpeg(svn版)和x264(git版)解编码器


ffmpeg是一款多媒体视频和音频文件解码和编码的工具,用来提供众多的多媒体(主要指视频和音频)文件的播放和转换支持。x264是一个编解码H264视频格式的库文件,相比较xvid或者其它流行的编解码器转换效率和转换后的画面质量都更加优异。Avidemux, VLC Player, MEncoder, 和Handbrake中都可利用x264库文件。


尽管ffmpeg和x264存在于Ubuntu的软件仓库中,但是实际上通过Uuntu软件仓库apt-get方式安装的ffmpeg是不完整的的版本,仍需要我们通过自行编译才能提供对更多视频、音频格式(例如3gp)转换支持。


获取相应的依赖软件


1. 首先请确认在软件源中已经添加了相应的Universe和Multiverse软件源,目的是我们要通过软件仓库来解决x264和ffmpeg的依赖文件。


2. 接下来如果您之前安装了x264,libx264-dev和ffmpeg请先把它卸载,打开X终端或控制台运行下面的命令:


sudo apt-get purge ffmpeg x264 libx264-dev


下面的步骤我们会安装依赖软件及其它编译所需要的软件


对于Ubuntu的版本:Intrepid Ibex 8.10


命令:


sudo apt-get update


sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaad-dev libfaac-dev libmp3lame-dev libtheora-dev


对于Ubuntu的版本:Hardy Heron 8.04:


命令:


sudo apt-get update


sudo apt-get install build-essential subversion git-core checkinstall texi2html libfaad-dev libfaac-dev liblame-dev libtheora-dev


Intrepid Ibex 8.10 和 Hardy Heron 8.04都用到的依赖包:


libsdl1.2-dev: 运行 ffplay需要


libfaad-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore4-dev libschroedinger-dev libspeex-dev libgsm1-dev: ffmpeg开发应用到的一些文件,其中一些已经在ffmpeg的源码中包含,如果系统中包含且版本太低,可能会导致安装失败(不常见)。


3. 使用Ubuntu版本为Hardy Heron 8.04请注意下。请最好先安装yasm(一个汇编编译软器,和gcc类似)。它可以优化x264的代码。当然即便没有yasm,也可以在编译过程中加入–disable-asm参数来编译,不过这样得到的x264运行效率会稍差一些。


好像在Ubuntu Hardy Heron 8.04软件仓库中的Yasm的版本是0.5.0,而最新版本的x264的汇编编译部分需要yasm的版本至少为0.6.1,否则在执行编译命令时会提示:Minimum version is yasm-0.6.1。这时我们可以通过执行:


命令:


cd ~/


wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.2.tar.gz


tar xzvf yasm-0.7.2.tar.gz


cd yasm-0.7.2


./configure


make


sudo checkinstall


来自行下载并编译相应的软件

安装x264


4. 获取最新版本的x264并编译安装,我们在这里通过git命令获取:


cd ~/


git clone git://git.videolan.org/x264.git


开始编译并安装


cd x264


./configure –enable-shared


make


sudo checkinstall –fstrans=no –install=yes –pkgname=x264 –pkgversion “1:0.svn`date +%Y%m%d`-0.0Ubuntu1”


sudo ldconfig


更多编译参数请执行./configure –help查看。。。


安装ffmpeg


5. 通过svn命令获取最新版本的ffmpeg:


svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg


开始编译并安装:


svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg


cd ffmpeg


./configure –enable-gpl –enable-postproc –enable-pthreads –enable-libfaac –enable-libfaad –enable-libmp3lame –enable-libtheora –enable-libx264


make


sudo checkinstall –fstrans=no –install=yes –pkgname=ffmpeg –pkgversion “3:0.svn`date +%Y%m%d`-12ubuntu3”


更多编译参数请执行./configure –help查看。。。,例如美丽星点用到的参数是(命令中加–prefix=/usr参数目的是规定安装位置,如非必要,请不要加这个参数,以免造成不必要的麻烦):


./configure –prefix=/usr –enable-shared –enable-gpl –enable-postproc –enable-swscale –enable-pthreads –enable-nonfree –enable-libdc1394 –enable-libfaac –enable-libfaad –enable-libfaadbin –enable-libgsm –enable-libmp3lame –enable-libnut –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-avfilter –enable-avfilter-lavf –enable-libamr-nb –enable-libamr-wb


注意:–enable-libamr-nb –enable-libamr-wb –enable-libfaac这三个参数如果想让ffmpeg可以转换3gp,请在编译过程中加上,其它参数请根据需要添加。


6. 锁定x264和ffmpeg这两个软件包阻止其升级。这部分也很重要,由于我们自行编译的软件包可能会在操作操作系统更新时被替换掉。


如果您习惯使用的是图形界面的apt-get命令或者是新利得软件包管理器,请在管理器的界面执行:


System(系统) -> Administration (系统管理)-> Synaptic Package Manager(新得利软件包管理器) -> 在包浏览器中选择安装好的264-> Package(软件包) -> Lock Version(锁定版本)


使用aptitude命令的话,请通过下面的命令来锁定版本:


sudo aptitude hold x264 ffmpeg


Using ffmpeg and x264

使用ffmpeg和x264


使用ffmpeg最简便的转换视频和音频的方法是用它的预设文件(ffmpeg presets),这些文件在ffmpeg的源代码中就有。我们需要把它复制到当前用户目录的.ffmpeg文件夹中:


命令:


新建文件夹


mkdir ~/.ffmpeg


复制预设文件到上面的目录中


cp ~/ffmpeg/ffpresets/* ~/.ffmpeg


现在就可以使用预设文件了(libx264-default.ffpreset,libx264-hq.ffpreset,libx264-normal.ffpreset,libx264-fastfirstpass.ffpreset,libx264-max.ffpreset),下面的两个例子会指导你如何使用这些预设:


命令:


ffmpeg -i infile -vcodec libx264 -vpre hq -b 1M -bt 1M -threads 0 outfile.mp4


改变-vpre 后面的参数即可更改不同的预设,很容易理解这几个参数的意思


备注(点击查看对应文件):


? default – 默认参数(x264 CLI default values)


? fastfirstpass – 快速转换(disables options unnecessary for first pass)


? normal – 正常(Dark Shikari’s Q55 preset)


? hq – 高质量转换(Dark Shikari’s Q75 preset)


? max – 最大文件(all options maxed out)


您确实可以不使用预设文件,不过那样的话你转换视频或音频文件时要照顾到很多细节,代码会很长,使用预设文件省去了我们很多麻烦!

升级ffmpeg和x264


理所当然我们即使我们锁定了版本,我们还是会想到升级我们的ffmpeg和x264到最新的版本,我们可以使用下面的命令(假定您没有删除相应的svn和git同步文件):


sudo apt-get purge ffmpeg x264


cd ~/x264


make distclean


git pull


./configure


make


sudo checkinstall –fstrans=no –install=yes –pkgname=x264 –pkgversion “1:0.svn`date +%Y%m%d`-0.0Ubuntu1”


cd ~/ffmpeg


make distclean


svn update


./configure –enable-gpl –enable-postproc –enable-pthreads –enable-libfaac –enable-libfaad –enable-libmp3lame –enable-libtheora –enable-libx264


make


sudo checkinstall –fstrans=no –install=yes –pkgname=ffmpeg –pkgversion “3:0.svn`date +%Y%m%d`-12ubuntu3”


卸载ffmpeg和x264


Ubuntu发行版Intrepid Ibex 8.10的操作:


命令:


sudo apt-get purge x264 ffmpeg build-essential yasm subversion git-core checkinstall texi2html libfaad-dev libfaac-dev libmp3lame-dev libtheora-dev


Ubuntu发行版Hardy Heron 8.04:


命令:


sudo apt-get purge x264 ffmpeg build-essential yasm subversion git-core checkinstall texi2html libfaad-dev libfaac-dev liblame-dev libtheora-dev


FFmpeg libx264 presets预设文件下载:ffpresets.zip

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu 下编译ffmpeg和x264解编码器
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏