本页使用了标题或全文手工转换

FFmpeg

维基百科,自由的百科全书
跳转至: 导航搜索
FFmpeg
FFmpeg Logo new.svg
FFmpeg.png
FFmpeg
开发者 FFmpeg team
稳定版本 3.4.1(2017年12月10日,​2天前​(2017-12-10
预览版本 2.2-rc2(2014年3月15日,​3年前​(2014-03-15
开发状态 开发中
编程语言 C语言
操作系统 跨平台
系统平台 跨平台
类型 多媒体
许可协议 GNU宽通用公共许可证
网站 ffmpeg.org
源代码库 git.videolan.org?p=ffmpeg.git%3Ba%3Dsummary

FFmpeg是一个自由软体,可以执行音讯和视讯多种格式的录影、转档、串流功能[1],包含了libavcodec——这是一个用于多个专案中音讯和视讯的解码器函式库,以及libavformat——一个音讯与视讯格式转换函式库。

“FFmpeg”这个单词中的“FF”指的是“Fast Forward”[2]。有些新手写信给“FFmpeg”的项目负责人,询问FF是不是代表“Fast Free”或者“Fast Fourier”等意思,“FFmpeg”的项目负责人回信说:“Just for the record, the original meaning of "FF" in FFmpeg is "Fast Forward"...”

这个项目最初是由Fabrice Bellard发起的,而现在是由Michael Niedermayer在进行维护。许多FFmpeg的开发者同时也是MPlayer项目的成员,FFmpeg在MPlayer项目中是被设计为服务器版本进行开发。

2011年3月13日,FFmpeg部分开发人士决定另组Libav英语Libav,同时制定了一套关于项目继续发展和维护的规则。[3][4]

组成元件[编辑]

此计划由几个元件组成:

  • ffmpeg——一个命令列工具,用来对视讯档案转换格式,也支援对电视卡即时编码
  • ffserver——一个HTTP多媒体即时广播串流伺服器,支援时光平移
  • ffplay——一个简单的播放器,基于SDL与FFmpeg函式库
  • libavcodec——包含全部FFmpeg音讯/视讯编解码函式库
  • libavformat——包含demuxers和muxer函式库
  • libavutil——包含一些工具函式库
  • libpostproc——对于视讯做前处理的函式库
  • libswscale——对于影像作缩放的函式库

参数[编辑]

FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异,使用前建议先参考参数及编解码器的叙述。此外,参数明细可用ffmpeg -h显示;编解码器名称等明细可用ffmpeg -formats显示。

下列为较常使用的参数:

主要参数[编辑]

  • -i——设定输入档名。
  • -f——设定输出格式。
  • -y——若输出档案已存在时则覆盖档案。
  • -fs——超过指定的档案大小时则结束转换。
  • -ss——从指定时间开始转换。
  • -t-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
  • -title——设定标题。
  • -timestamp——设定时间戳。
  • -vsync——增减Frame使影音同步。

影像参数[编辑]

  • -b:v——设定影像流量,预设为200Kbit/秒。(单位请参照下方注意事项
  • -r——设定帧率值,预设为25。
  • -s——设定画面的宽与高。
  • -aspect——设定画面的比例。
  • -vn——不处理影像,于仅针对声音做处理时使用。
  • -vcodec( -c:v )——设定影像影像编解码器,未设定时则使用与输入档案相同之编解码器。

声音参数[编辑]

  • -b:a——设定每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请参照下方注意事项
  • -ar——设定采样率。
  • -ac——设定声音的Channel数。
  • -acodec ( -c:a ) ——设定声音编解码器,未设定时与影像相同,使用与输入档案相同之编解码器。
  • -an——不处理声音,于仅针对影像做处理时使用。
  • -vol——设定音量大小,256为标准音量。(要设定成两倍音量时则输入512,依此类推。)

注意事项[编辑]

  • -b:v-b:a参数设定流量时,根据使用的ffmpeg版本,须注意单位会有kbits/sec与bits/sec的不同。(可用ffmpeg -h显示说明来确认单位。)
例如,单位为bits/sec的情况时,欲指定流量64kbps时需输入 -b:a 64k;单位为kbits/sec的情况时则需输入 -b:a 64
  • -acodec-vcodec所指定的编解码器名称,会根据使用的ffmpeg版本而有所不同。例如使用AAC编解码器时,会有输入aac与libfaac的情况。此外,编解码器有分为仅供解码时使用与仅供编码时使用,因此一定要利用ffmpeg -formats确认输入的编解码器是否能运作。

支援的编码器、格式和协议[编辑]

编码器[编辑]

FFmpeg项目原生的编码器:

FFmpeg已实现的:

The default MPEG-4 codec used by FFmpegs the FourCC of FMP4.

格式[编辑]

协议[编辑]

  • IETF标准:TCP, UDP, Gopher, HTTP, RTP, RTSPSDP
  • 苹果公司的相关标准:HTTP Live Streaming
  • RealMedia的相关标准:RealMedia RTSP/RDT
  • Adobe的相关标准:RTMP, RTMPT(由librtmp实现),RTMPE(由librtmp实现),RTMPTE(由librtmp)和RTMPS(由librtmp实现)
  • 微软的相关标准:MMS在TCP上和MMS在HTTP上

社区内部问题[编辑]

2011年1月19日,FFmpeg的现任维护者Michael Niedermayer在邮件列表上披露,FFmpeg发生了“政变”,一些开发者占领了官方网站,关闭了其他人的写入权限。随后政变者宣布FFmpeg “建立新政权”,维护任务将由他们接手,宣称只有维护团队才能拥有主源码库的写入权限。

“新内阁”成员之一的Diego Biurrun解释了他们的行动,称“政变”是迫不得已,表示他们原本想联络每一个开发者,但没成功,因为不是每个人都在IRC上,或者能及时回电话邮件短信。“革命”的原因是为了统一,FFmpeg社区分裂的情况严重到他们已经看不下去了。他们期望FFmpeg项目能建立一个健康而友好的开发环境。[13]

随后Fabrice Bellard等人于2011年3月13日跳出去开新专案,称作Libav,Libav里面每位成员的管理权限缩更小(至少不能任意关闭其他人更改程式码权限)。而Debian血统也响应,宣布2012年要将ffmpeg指令改成avconv[14]

Libav跳槽之后有一定程度上更改FFmpeg的指令[15]

Libav/FFmpeg版权[编辑]

由于Libav、FFmpeg是在LGPLGPL下发布的(如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议),任何人都可以在遵守协议的情况下自由使用。目前有很多播放软件都使用了Libav、FFmpeg的代码,但它们并没有遵守LGPL,GPL协议,没有公开任何源代码。Libav、FFmpeg社区便将这些违反协议的公司、组织、个人的网址贴在“耻辱大厅”(又叫“耻辱柱”)上,并与这些公司/组织/个人商讨如何解决版权争议。[16]

参考资料[编辑]

  1. ^ FFmpeg Documentation
  2. ^ Bellard, Fabrice. FFmpeg naming and logo. FFmpeg developer mailing list. Mplayer website. 2006-02-18 [2007-03-29]. (原始内容存档于2007-09-30). 
  3. ^ 红薯. FFmpeg项目改名为libav. 开源中国社区. 2011-03-15 [2011-06-14]. 
  4. ^ libav官方网站. [2011-06-14]. 
  5. ^ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 banan. Changelog. FFmpeg trunk SVN. FFmpeg website. 17 April 2007 [26 April 2007]. [失效链接]
  6. ^ 6.0 6.1 ivo. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 2007-05-07 [2010-12-24]. (原始内容存档于2007-08-11). 
  7. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 13 April 2008 [14 April 2008]. [失效链接]
  8. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 30 March 2008 [30 March 2008]. [失效链接]
  9. ^ faust3. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 21 March 2008 [21 March 2008]. (原始内容存档于2008年4月25日). 
  10. ^ benoit. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 14 April 2008 [14 April 2008]. [失效链接]
  11. ^ ramiro. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 18 March 2008 [18 March 2008]. (原始内容存档于2008年8月17日). 
  12. ^ banan. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 8 June 2008 [8 June 2008]. (原始内容存档于2009年1月14日). 
  13. ^ FFmpeg发生政变-中国开源社区
  14. ^ Debian Bug Tracker
  15. ^ http://libav.org/news.html#fftools_rename
  16. ^ FFmpeg开发者接受采访 - 开源中国社区

外部链接[编辑]