Linux下使用ffmpeg转换媒体文件

Python与开源GIS

Linux下使用ffmpeg转换媒体文件

2015-01-30 作者: giser 浏览: 1870 次

摘要: 转换各种媒体文件是我们经常遇见的一个问题,在Windows平台下,我们的选择很多,从傻瓜式的到高级的一应俱全(个人最爱的是MediaCoder)。而在Linux平台下,我们的选择就显得少了很多。在这其中,ffmpeg算是最为出众者了,但苦于其纯命令行界面,很多...

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

首先说说怎么安装吧。这里仅以ubuntu为例,其他的发行版的安装方法大家可以自己google或者直接去ffmpeg的下载页下载。 在ubuntu9.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 640x360"。
  • -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 640x360 -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

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © 2014-2019 OSGeo中国中心 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org