默認編譯時全部的比特流濾鏡都被支持,你能夠在配置腳本中以--list-bsfs
獲取有效的濾鏡列表html
能夠利用--disable-bsfs
禁用全部的比特流濾鏡。要指定個別的濾鏡可用,則在此基礎上--enable-bsf=BSF
,或者在默認(沒有指定--disable-bsfs
)下禁用個別的濾鏡--disable-bsf=BSF
,這裏BSF
是個別濾鏡名稱。git
在ff*工具集中,-bsfs
能夠列出(編譯容許了的)支持的比特流濾鏡。web
在ff*工具集中,-bsf
選項能夠指定濾鏡應用到每一個流,具體濾鏡由`濾鏡名1=選項名1=選項值1/選項名2=選項值2...'給出,例如windows
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1/opt2=str2][,filter2] OUTPUT
下面介紹了當前有效的一些比特流濾鏡ide
轉換MPEG-2/4 的AAC ADTS 到 MPEG-4 音頻的專用配置比特流濾鏡。工具
這個濾鏡從MPEG-2/4 的ADTS頭建立一個移除了ADTS頭的MPEG-4音頻專用配置流測試
這是十分必要的,例如把由raw ADTS轉換的AAC音頻內容複製到FLV/MOV/MP4文件時就須要進行這樣的處理編碼
移除每一個包後面附加的0idea
對過濾包的開始添加extradataspa
附加參數指定了如何處理,有以下可能值:
‘a’
對每一個包添加extradata,除了flags2 codec context field中local_header被設置的
‘k’
每一個關鍵包添加extradata
‘e’
每一個包添加extradata
若是沒有指定則爲k
例以下面ffmpeg強制在編碼H.264中採用全局頭(禁用單獨數據包頭),即將全局頭添加做爲extradata添加修正每一個數據包
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
轉換H.264編碼比特流,從長前導模式爲開始碼前導模式(定義在ITU-T H.264 的附錄B)
它是一些流格式要求的,一般如MPEG-2傳輸流格式("mpegts")
例如採用ffmpeg從新混編一個H.264的MP4文件,把流轉換成mpegts
格式,可使用:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
修正爲可編輯的比特流MOV格式,以用於Final Cut Pro解碼。這個濾鏡僅僅用於mpeg2video編碼,對於需適用於Final Cut Pro 7如下版本的 ,同時使用-tag:v
選項
例如,從新混編 30MB/sec 的NTSC IMX 到MOV:
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
轉換MJPEG/AVI1 包爲全 JPEG/JFIF包
MJPEG是一種視頻編碼,它每幀基本都是一個JPEG圖像,能夠直接無損提取,如:
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
不幸的是,這些塊是不完整的JPEG圖像,由於他們缺少解碼所需的DHT段。
http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:
Avery Lee, writing in the rec.video.desktop newsgroup in 2001, commented that "MJPEG, or at least the MJPEG in AVIs having the MJPG fourcc, is restricted JPEG with a fixed – and *omitted* – Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2, and it must use basic Huffman encoding, not arithmetic or progressive. . . . You can indeed extract the MJPEG frames and decode them with a regular JPEG decoder, but you have to prepend the DHT segment to them, or else the decoder won’t have any idea how to decompress the data. The exact table necessary is given in the OpenDML spec."
這個比特流濾鏡能夠擴展修復MJPEG流(攜帶AVI1頭ID,但缺失DHT段)爲完整的JPEG圖像
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg exiftran -i -9 frame*.jpg ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
解包DivX包裝的B幀
DivX風格的B幀是無效的MPEG-4,且僅用於windows系統的零散解決方案,它使用更多的空間,而能看致使輕微的AV同步問題,須要更多的CPU資源用於解碼(除非播放採用一些2,0,2,0幀分組方式),若是直接複製到一個MP4標準封裝或MPEG PS/TS流中將引發問題(MPEG-4不能正確解碼,由於它不是有效的MPEG-4編碼數據)
例如修正一個包含DivX風格B幀數據的AVI文件到MPEG-4流,可使用:
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
不破壞容器,僅處理內容包。通常用於凍結或測試 錯誤恢復/隱藏
參數:一個數字字符串,其值一般由輸出而被修改,所以值小於等於0被禁止。低於更新頻率的字節被修改,1表示每一個字節被修改。
ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv
表示每一個字節都被修改。