FFmpeg

FFmpeg 是一個開放原始碼的自由軟體，可以執行音訊和視訊多種格式的錄影、轉檔、串-{}-流功能，包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫，以及libavformat——一個音訊與視訊格式轉換函式庫。

「FFmpeg」这个单词中的「FF」指的是「Fast Forward（快速前進）」。「FFmpeg」的项目负责人在一封回信中说：“Just for the record, the original meaning of "FF" in FFmpeg is "Fast Forward"...”

这个项目最初是由法國程式設計師法布里斯·贝拉（）发起的，而现在是由邁克爾·尼德梅爾（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

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
AVIF
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
 NUT
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社區便將這些違反協議的公司、組織、個人的網址貼在“恥辱大廳”（又叫“恥辱柱”）上，并與這些公司/組織/個人商討如何解決版權爭議。

參考資料

参见
 影片轉換

外部連結

C函式庫
开源软件
多媒體
多媒体框架
视频编解码器
音频编解码器
自由跨平台軟體