为确保最佳阅读效果,请前往http://vistb.net/?p=356阅读原帖。另:原创文章,转载请注明出处。

转换各种媒体文件是我们经常遇见的一个问题,在Windows平台下,我们的选择很多,从傻瓜式的到高级的一应俱全(个人最爱的是MediaCoder)。而在Linux平台下,我们的选择就显得少了很多。在这其中,ffmpeg算是最为出众者了,但苦于其纯命令行界面,很多人都无从下手。最近一段时间,由于经常使用其转换媒体文件,也算对其的使用入了门,故写下此文,也算是一个简短的初级教程吧。

首先说说怎么安装吧。这里仅以ubuntu为例,其他的发行版的安装方法大家可以自己google或者直接去ffmpeg的下载页下载。

在ubuntu 9.10以及更高版本上只要输入以下命令就OK了:

sudo apt-get install ffmpeg libavcodec-extra-52

但是,这样安装的版本缺乏一些编码器(如AAC和AMR的编码器),原因就是这些编码器的版权存在问题。为了能使用它们,我们要从medibuntu的仓库中下载libavcodec-extra-52才行。当然,如果你觉得用不上这些编码器,也不必费更多的神了,可以直接开始使用ffmepg。

sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list –output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get –yes -q –allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update

sudo apt-get install ffmpeg libavcodec-extra-52

下面开始介绍ffmpeg的一些主要的参数选项。更详细的选项说明和使用方法以及使用示例可以在http://ffmpeg.org/ffmpeg.html找到

信息选项

-formats

用于显示ffmpeg支持的文件格式,如mp3、mp4等等。附加D的话(就是ffmpeg -formats D)输出支持的解码格式,E的话输出支持的编码格式。

-codecs

显示支持的编码器和解码器。同样可以附加D、E选项,也可以附加A、V、S选项,代表支持的音频、视频、字幕编解码器。

一般选项

-f format

-f选项用于指明输出格式。可用格式可以用上面的-formats查询。

-i filename

指明输入文件名称。

-y

直接覆盖同名文件。

-ss position

从position(以秒计算)开始的位置进行转换。position也可以使用hh:mm:ss格式。

-t duration

只转换duration长度,duration以秒计算。duration也可以使用hh:mm:ss格式。-t和-ss选项配合使用可以指定只转换原始文件的一部分。例如,我们想转换从1分30秒开始到2分10秒的如诶龙内容的话,可以使用”-ss 00:01:30 -t 00:00:40″或者”-ss 90 -t 40″。需要说明的一点是,如果要使用-ss和-t选项的话,它们一定要放在其他选线的前面,而且-ss要在-t的前面,否则可能出现无法转换的错误。

视频选项

-b bitrate

指定输出视频的码率(以bits/s计算,不是kbits/s哦)。默认是200kbits/s。如果我们想要输出的视频码率是1Mbps的话,可以用”-b 1000k”或者”-b 1000000″。一般在移动设备上观赏或者用于网络视频的话,500kbps左右足矣;桌面视频的话,1000kbps-1500kbps即可。

-r fps

指定输出帧率(默认是25)。

-s size

指定输出文件的宽和高。size的格式是widthxheight,例如想要输出的视频的宽是640,高是360的话,就用”-s 640×360″。

-vf crop=width:height:x:y

用于对原始视频进行裁剪后再输出。没有使用过,但感觉应该比较常用,就也列出来了。

-vcodec codec

指定视频编码器。可用的编码器可以用“ffmpeg -codecs V”查看。这里要特别谈谈H264的编码器,如果使用libx264进行H264编码的话,直接指定“-vcodec libx264”貌似不够,因为ffmpeg内置的H264编码配置文件貌似有问题,需要手动指定编码的配置,一般再添加一个“-vpre medium”选项就OK了。

音频选项

-ar freq

指定音频的采样率,默认和输入文件的相同。推荐使用44100。

-ab bitrate

指定音频的码率。和-b选项类似。一般来说,转换视频中的音频,96kps足矣(也就是使用“-ab 96k”)。默认是64kbps。

-ac channels

指定有多少个声道。一般用2就可以了。默认值和输入文件的声道数目相同。

-acodec codec

指定音频编码器。可用的编码器可以用“ffmpeg -codecs A”查看。

字幕选项

是的,ffmpeg也可以对字幕进行处理。但还没使用过,就不多写了。列出个标题来只是让大家知道ffmpeg的强大,哈哈。

除此以外,ffmpeg还有很多其他的初级选项和高级选项,而且上面列出的选项也还有一些其他的使用方法。但由于本文只是入门教程,就不细写了。感兴趣的可以去我上面列出的地址看ffmpeg的文档。

下面列出了一个我实际使用的例子,就当给大家一个直观的感觉吧:

ffmpeg -ss 01:27:48 -t 00:03:13 -i trinity.and.beyond.mkv -b 600k -r 24 -s 640×360 -vcodec libx264 -vpre slow -vpre main -threads 0 -ar 44100 -ab 96k -ac 2 -acodec libfaac -f flv -pass 1 china-gets-the-bomb.f4v