【FFmpeg】
FFmpeg 是一个开放原始码的自由软体，可以执行音讯和视讯多种格式的录影、转档、串-{}-流功能，包含了libavcodec——这是一个用于多个专案中音讯和视讯的解码器函式库，以及libavformat——一个音讯与视讯格式转换函式库。
「FFmpeg」这个单词中的「FF」指的是「Fast Forward（快速前进）」。「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，同时制定了一套关于项目继续发展和维护的规则。
==组成元件==
此计划由几个元件组成：
*命令列应用程式
**ffmpeg：用于对视讯档案或音讯档案转换格式
**ffplay：一个简单的播放器，基于SDL与FFmpeg函式库
**ffprobe：用于显示媒体档案的资讯，见MediaInfo
*函数库
**libswresample
**libavresample
**libavcodec：包含全部FFmpeg音讯/视讯编解码函式库
**libavformat：包含demuxers和muxer函式库
**libavutil：包含一些工具函式库
**libpostproc：对于视讯做前处理的函式库
**libswscale：对于影像作缩放的函式库
**libavfilter
==参数==
FFmpeg可使用众多参数，参数内容会根据ffmpeg版本而有差异，使用前建议先参考参数及编解码器的叙述。此外，参数明细可用ffmpeg -h显示；编解码器名称等明细可用ffmpeg -formats显示。
下列为较常使用的参数：
===主要参数===
*-i——设定输入档名。
*-f——设定输出格式。
*-y——若输出档案已存在时则覆盖档案。
*-fs——超过指定的档案大小时则结束转换。
*-t——指定输出文件的持续时间，以秒为单位。
*-ss——从指定时间开始转换，以秒为单位。
*-ss和-t一起使用时代表从-ss的时间开始转换持续时间为-t的影片，例如：-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始转换到00:00:11.00。
*-title——设定标题。
*-timestamp——设定时间戳。
*-vsync——增减Frame使影音同步。
*-c——指定输出文件的编码。
*-metadata——更改输出文件的元数据。
*-help——查看帮助信息。
===影像参数===
*-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项目原生的编码器：
*Snow
*FFV1
FFmpeg已实现的：
*ITU-T视频标准：H.261, H.262/MPEG-2 Part 2, H.263和H.264/MPEG-4 AVC
*ITU-T音频编解码器标准：G.711 µ-law, G.711 A-law, G.721（也叫G.726 32k）, G.722, G.722.2（也叫AMR-WB）, G.723（也叫G.726 24k和40k）和G.726
*ISO/IEC MPEG视频标准：MPEG-1 Part 2, H.262/MPEG-2 Part 2, MPEG-4 Part 2和H.264/MPEG-4 AVC
*ISO/IEC MPEG音频标准：MP1, MP2, MP3, AAC, HE-AAC和MPEG-4 ALS
*ISO/IEC/ITU-T JPEG图像标准：JPEG和JPEG-LS
*SMPTE视频标准：VC-1（也称作WMV3）, VC-3（也称作AVID DNxHD）和DPX图像
*SMPTE音频标准：SMPTE 302M
*DVD论坛的相关标准 / 杜比实验室的音频编解码器：MLP（也称TrueHD）和AC-3
*3GPP音频编码器标准：AMR-NB, AMR-WB（也叫G.722.2）
*GSM相关的语音信号编解码器：Full Rate
*Windows Media Player相关的视频编解码器：Microsoft RLE, Microsoft Video 1, Cinepak, Indeo 2, 3和5, Motion JPEG, Microsoft MPEG-4 v1, v2和v3, WMV1, WMV2 and WMV3（也称VC-1）
*Windows Media Player相关的音频编解码器：WMA1, WMA2和WMA Pro
*Windows Media Player相关的语音信号编解码器：WMA Voice和MS-GSM
*RealPlayer相关的视频编解码器：RealVideo 1, 2, 3和4
*RealPlayer相关的音频编解码器：RealAudio 3, 6, 7, 8, 9和10
*RealPlayer相关的语音信号编解码器：RealAudio 1, 2 (G.728的衍生), 4和5
*QuickTime相关的视频编解码器：Cinepak, Motion JPEG和Sorenson 3 Codec
*QuickTime相关的音频编解码器：QDesign音乐编解码器2和ALAC
*Adobe Flash Player相关的视频编解码器：Sorenson 3 Codec, VP6和Flash Video (FLV)
*Adobe Flash Player相关的音频编解码器：Adobe SWF ADPCM和Nellymoser Asao
*Xiph.Org: Theora, Speex（通过libspeex实现）, Vorbis和FLAC
*Sony: ATRAC1和ATRAC3
*NTT: TwinVQ
*On2: Duck TrueMotion 1, Duck TrueMotion 2, VP3, VP5, VP6和VP8
*RAD Game Tools: Smacker video和Bink video
*Truespeech
*RenderWare: TXD
The default MPEG-4 codec used by FFmpegs the FourCC of FMP4.
===输出格式===
* AIFF
*ASF
*AVI
*BFI
* CAF
*FLV
* GIF
*GXF, General eXchange Format, SMPTE 360M
* HLS, HTTP Live Streaming
*IFF
*ISO base media file format（包括QuickTime, 3GP和MP4）
*M2V
*Matroska（包括WebM）
*Maxis XA
* MPEG-DASH
*MPEG program stream
*MPEG transport stream（包括 AVCHD）
*MXF, Material eXchange Format, SMPTE 377M
* MSN Webcam stream
* NUTNUT
*Ogg
*OMA
*RL2
* Segment, for creating segmented video streams
* Smooth Streaming
*TXD
*WTV
===协议===
*IETF标准：TCP, UDP, Gopher, HTTP, RTP, RTSP和SDP
*苹果公司的相关标准：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项目能建立一个健康而友好的开发环境。
随后Fabrice Bellard等人于2011年3月13日跳出去开新专案，称作Libav，Libav里面每位成员的管理权限缩更小（至少不能任意关闭其他人更改程式码权限）。而Debian血统也响应，宣布2012年要将ffmpeg指令改成avconv。
Libav跳槽之后有一定程度上更改FFmpeg的指令。
==Libav/FFmpeg版权==
由于Libav、FFmpeg是在LGPL、GPL下发布的（如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议），任何人都可以在遵守协议的情况下自由使用。目前有很多播放软件都使用了Libav、FFmpeg的代码，但它们并没有遵守LGPL，GPL协议，没有公开任何源代码。Libav、FFmpeg社区便将这些违反协议的公司、组织、个人的网址贴在“耻辱大厅”（又叫“耻辱柱”）上，并与这些公司/组织/个人商讨如何解决版权争议。