目錄
- 1 描述
- 2 位元串流濾鏡
- 2.1 aac_adtstoasc
- 2.2 av1_metadata
- 2.3 chomp
- 2.4 dca_core
- 2.5 dovi_rpu
- 2.6 dump_extra
- 2.7 dv_error_marker
- 2.8 eac3_core
- 2.9 extract_extradata
- 2.10 filter_units
- 2.11 hapqa_extract
- 2.12 h264_metadata
- 2.13 h264_mp4toannexb
- 2.14 h264_redundant_pps
- 2.15 hevc_metadata
- 2.16 hevc_mp4toannexb
- 2.17 imxdump
- 2.18 mjpeg2jpeg
- 2.19 mjpegadump
- 2.20 mov2textsub
- 2.21 mpeg2_metadata
- 2.22 mpeg4_unpack_bframes
- 2.23 noise
- 2.24 null
- 2.25 pcm_rechunk
- 2.26 pgs_frame_merge
- 2.27 prores_metadata
- 2.28 remove_extra
- 2.29 setts
- 2.30 showinfo
- 2.31 text2movsub
- 2.32 trace_headers
- 2.33 truehd_core
- 2.34 vp9_metadata
- 2.35 vp9_superframe
- 2.36 vp9_superframe_split
- 2.37 vp9_raw_reorder
- 3 參見
- 4 作者
1 描述
本文檔描述了 libavcodec 函式庫提供的位元串流濾鏡。
位元串流濾鏡作用於編碼串流數據,並在不執行解碼的情況下執行位元串流層級的修改。
2 位元串流濾鏡
當您配置 FFmpeg 建置時,預設會啟用所有支援的位元串流濾鏡。您可以使用配置選項 --list-bsfs
列出所有可用的濾鏡。
您可以使用配置選項 --disable-bsfs
停用所有位元串流濾鏡,並使用選項 --enable-bsf=BSF
選擇性地啟用任何位元串流濾鏡,或者您可以使用選項 --disable-bsf=BSF
停用特定的位元串流濾鏡。
ff* 工具的選項 -bsfs
將顯示您的建置中包含的所有支援的位元串流濾鏡列表。
ff* 工具具有每個串流應用的 -bsf 選項,該選項接受以逗號分隔的濾鏡列表,其參數在濾鏡名稱後以 ' =' 符號分隔。
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
以下是目前可用的位元串流濾鏡及其參數(如果有的話)的描述。
2.1 aac_adtstoasc
將 MPEG-2/4 AAC ADTS 轉換為 MPEG-4 音訊特定配置位元串流。
此濾鏡從 MPEG-2/4 ADTS 標頭建立 MPEG-4 AudioSpecificConfig,並移除 ADTS 標頭。
例如,當將 AAC 串流從原始 ADTS AAC 或 MPEG-TS 容器複製到 MP4A-LATM、FLV 檔案或 MOV/MP4 檔案以及相關格式(如 3GP 或 M4A)時,需要此濾鏡。請注意,它會自動插入 MP4A-LATM 和 MOV/MP4 以及相關格式。
2.2 av1_metadata
修改嵌入在 AV1 串流中的元數據。
- td
在串流的所有時間單元中插入或移除時間分隔符 OBU。
- 「insert」
在每個尚未具有時間分隔符的 TU 的開頭插入一個 TD。
- 「remove」
從每個具有時間分隔符的 TU 的開頭移除 TD。
- color_primaries
- transfer_characteristics
- matrix_coefficients
設定串流中的色彩描述欄位(請參閱 AV1 6.4.2 節)。
- color_range
設定串流中的色彩範圍(請參閱 AV1 6.4.2 節;請注意,對於使用 BT.709 原色、sRGB 傳輸特性和恆等(RGB)矩陣係數的串流,無法設定此項)。
- 「tv」
有限範圍。
- 「pc」
完整範圍。
- chroma_sample_position
設定串流中的色度樣本位置(請參閱 AV1 6.4.2 節)。這只能針對 4:2:0 串流設定。
- 「vertical」
左側位置(與 MPEG-2 和 H.264 中的預設值相符)。
- 「colocated」
左上角位置。
- tick_rate
設定序列標頭中計時資訊的滴答率(time_scale / num_units_in_display_tick)。
- num_ticks_per_picture
設定每個圖片中的滴答數,以指示串流具有固定的影格率。如果未同時設定 tick_rate,則忽略此選項。
- delete_padding
刪除填充 OBU。
2.3 chomp
移除封包末尾的零填充。
2.4 dca_core
從 DCA/DTS 串流中提取核心,丟棄 DTS-HD 等擴展。
2.5 dovi_rpu
操作 HEVC/AV1 位元串流中的杜比視界元數據,可選擇啟用元數據壓縮。
- strip
如果啟用,則從串流中剝離所有杜比視界元數據(配置記錄 + RPU 數據塊)。
- compression
要啟用的壓縮級別。
- 「none」
無元數據壓縮。
- 「limited」
有限的元數據壓縮方案。應與大多數設備相容。這是預設值。
- 「extended」
擴展的元數據壓縮。設備不需要支援此項。請注意,此級別目前在 libavcodec 中的行為與「limited」相同。
2.6 dump_extra
將額外數據添加到已篩選封包的開頭,除非所述封包已經完全以打算添加的額外數據開始。
- freq
附加參數指定應篩選哪些封包。它接受以下值
- 「k」
- 「keyframe」
將額外數據添加到所有關鍵封包
- 「e」
- 「all」
將額外數據添加到所有封包
如果未指定,則假定為「k」。
例如,以下 ffmpeg
命令強制在 libx264
編碼器產生的 H.264 封包中使用全域標頭(因此停用個別封包標頭),但透過將儲存在額外數據中的標頭添加到關鍵封包來修正它們
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
2.7 dv_error_marker
DV 中標記為損壞的區塊將被指定顏色的區塊取代。
- color
用於取代損壞區塊的顏色
- sta
一個 16 位元遮罩,指定 16 個可能的錯誤狀態值中的哪些值要由彩色區塊取代。0xFFFE 是預設值,它會取代所有非 0 錯誤狀態值。
- 「ok」
無錯誤,無隱藏
- 「err」
錯誤,無隱藏
- 「res」
保留
- 「notok」
錯誤或隱藏
- 「notres」
未保留
- 「Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru」
特定的錯誤狀態碼
請參閱 http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的第 44-46 頁或第 5.5 節
2.8 eac3_core
從 E-AC-3 串流中提取核心,丟棄額外的聲道。
2.9 extract_extradata
提取帶內額外數據。
某些編解碼器允許長期標頭(例如 MPEG-2 序列標頭,或 H.264/HEVC (VPS/)SPS/PPS)以「帶內」(即作為包含編碼影格的位元串流的一部分)或「帶外」(例如在容器層級)傳輸。後者在 FFmpeg 術語中稱為「額外數據」。
此位元串流濾鏡偵測帶內標頭,並使其可用作額外數據。
- remove
啟用此選項後,長期標頭會在提取後從位元串流中移除。
2.10 filter_units
從串流中移除類型在給定集合中或不在給定集合中的單元。
- pass_types
要通過的單元類型或單元類型範圍列表,同時移除所有其他類型。這被指定為以「|」分隔的單元類型值或以「-」分隔的值範圍的列表。
- remove_types
與 pass_types 相同,只是給定集合中的單元被移除,而所有其他單元都通過。
pass_types 和 remove_types 使用的類型對應於 H.264、HEVC 和 H.266 中的 NAL 單元類型(nal_unit_type)(請參閱 H.264 和 HEVC 規範中的表 7-1 或 H.266 規範中的表 5)、JPEG 的標記值(不帶 0xFF 前綴)和 MPEG-2 的起始碼(不帶起始碼前綴,即 0x000001 後面的位元組)。對於 VP8 和 VP9,每個單元的類型都為零。
額外數據在此轉換中保持不變,但請注意,如果串流包含內嵌參數集,則如果移除這些參數集,則輸出可能無法使用。
例如,要從 H.264 串流中移除所有非 VCL NAL 單元
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
要從 H.265 串流中移除所有 AUD、SEI 和填充
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
要從 MPEG-2 串流中移除所有使用者數據,包括隱藏式字幕
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
要從 H264 串流中移除所有 SEI,包括隱藏式字幕
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
要從 HEVC 串流中移除所有前綴和後綴 SEI,包括隱藏式字幕和動態 HDR
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
2.11 hapqa_extract
提取 HAPQA 檔案的 Rgb 或 Alpha 部分,無需重新壓縮,以便建立 HAPQ 或 HAPAlphaOnly 檔案。
- texture
指定要保留的紋理。
- color
- alpha
將 HAPQA 轉換為 HAPQ
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
將 HAPQA 轉換為 HAPAlphaOnly
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
2.12 h264_metadata
修改嵌入在 H.264 串流中的元數據。
- aud
在串流的所有存取單元中插入或移除 AUD NAL 單元。
- 「pass」
- 「insert」
- 「remove」
預設值為 pass。
- sample_aspect_ratio
在 VUI 參數中設定串流的樣本縱橫比。請參閱 H.264 表 E-1。
- overscan_appropriate_flag
設定串流是否適合使用過掃描顯示(請參閱 H.264 E.2.1 節)。
- video_format
- video_full_range_flag
設定串流中的視訊格式(請參閱 H.264 E.2.1 節和表 E-2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
設定串流中的色彩描述(請參閱 H.264 E.2.1 節和表 E-3、E-4 和 E-5)。
- chroma_sample_loc_type
設定串流中的色度樣本位置(請參閱 H.264 E.2.1 節和圖 E-1)。
- tick_rate
在 VUI 參數中設定滴答率(time_scale / num_units_in_tick)。這是串流中可表示的最小時間單位,在許多情況下表示串流的欄位率(影格率的兩倍)。
- fixed_frame_rate_flag
設定串流是否具有固定影格率 - 通常這表示影格率正好是滴答率的一半,但確切含義取決於交錯和圖片結構(請參閱 H.264 E.2.1 節和表 E-6)。
- zero_new_constraint_set_flags
將 SPS 中的 constraint_set4_flag 和 constraint_set5_flag 設定為零。這些位元在先前版本的 H.264 規範中是保留的,因此某些硬體解碼器要求它們為零。將此設定為零的結果仍然是有效的位元串流。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中設定影格裁剪偏移量。如果串流已裁剪,這些值將取代目前的值。
這些欄位以像素為單位設定。請注意,如果色度被二次取樣或串流是交錯的,則某些尺寸可能無法表示(請參閱 H.264 7.4.2.1.1 節)。
- sei_user_data
將字串作為 SEI 未註冊使用者數據插入。參數的格式必須為 UUID+string,其中 UUID 是十六進位數字(可能以連字號分隔),而字串可以是任何內容。
例如,「086f3693-b7b3-4f2c-9653-21492feee5b8+hello」將插入與給定 UUID 關聯的字串「hello」。
- delete_filler
刪除填充 NAL 單元和填充 SEI 訊息。
- display_orientation
插入、提取或移除顯示方向 SEI 訊息。有關語法和語意,請參閱 H.264 D.1.27 和 D.2.27 節。
- 「pass」
- 「insert」
- 「remove」
- 「extract」
預設值為 pass。
插入模式與
rotate
和flip
選項結合使用。在插入或移除模式下,將移除任何預先存在的顯示方向訊息。提取模式將顯示矩陣作為側數據附加到封包。- rotate
設定顯示方向 SEI 中的旋轉(逆時針角度,以度為單位)。範圍為 -360 到 +360。預設值為 NaN。
- flip
設定顯示方向 SEI 中的翻轉。
- 「horizontal」
- 「vertical」
預設值為未設定。
- level
在 SPS 中設定級別。請參閱 H.264 A.3 節和表 A-1 到 A-5。
參數必須是級別的名稱(例如,「4.2」)、level_idc 值(例如,「42」)或特殊名稱「auto」,表示濾鏡應嘗試從輸入串流屬性中猜測級別。
2.13 h264_mp4toannexb
將 H.264 位元串流從長度前綴模式轉換為起始碼前綴模式(如 ITU-T H.264 規範的附件 B 中所定義)。
某些串流格式需要此功能,通常是 MPEG-2 傳輸串流格式(muxer mpegts
)。
例如,要使用 ffmpeg
將包含 H.264 串流的 MP4 檔案重新混合為 mpegts 格式,您可以使用以下命令
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
請注意,對於 MPEG-TS(muxer mpegts
)和原始 H.264(muxer h264
)輸出格式,此濾鏡會自動插入。
2.14 h264_redundant_pps
這會對某些 Blu-ray BDMV H264 串流應用特定的修復,這些串流包含冗餘 PPS。PPS 修改了串流的無關參數,混淆了其他需要正確額外數據的轉換。
在這些受影響的串流上使用的編碼器會在整個串流中添加額外的 PPS,從而改變初始 QP 以及是否啟用了加權預測。這會在將串流複製到全域標頭容器後導致問題,因為起始 PPS 不適用於串流的其餘部分。例如,一個副作用是搜尋將返回亂碼輸出,直到出現新的 PPS。
此 BSF 移除額外的 PPS,並重寫切片標頭,以便串流在全域標頭中使用單個前導 PPS,從而解決問題。
2.15 hevc_metadata
修改嵌入在 HEVC 串流中的元數據。
- aud
在串流的所有存取單元中插入或移除 AUD NAL 單元。
- 「insert」
- 「remove」
- sample_aspect_ratio
在 VUI 參數中設定串流的樣本縱橫比。
- video_format
- video_full_range_flag
設定串流中的視訊格式(請參閱 H.265 E.3.1 節和表 E.2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
設定串流中的色彩描述(請參閱 H.265 E.3.1 節和表 E.3、E.4 和 E.5)。
- chroma_sample_loc_type
設定串流中的色度樣本位置(請參閱 H.265 E.3.1 節和圖 E.1)。
- tick_rate
在 VPS 和 VUI 參數中設定滴答率(time_scale / num_units_in_tick)。結合 num_ticks_poc_diff_one,這可以在串流中設定恆定的影格率。請注意,當串流位於容器中時,它很可能會被容器參數覆蓋。
- num_ticks_poc_diff_one
在 VPS 和 VUI 中設定 poc_proportional_to_timing_flag,並使用此值設定 num_ticks_poc_diff_one_minus1(請參閱 H.265 7.4.3.1 節和 E.3.1 節)。如果未同時設定 tick_rate,則忽略此選項。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中設定一致性視窗裁剪偏移量。如果串流已裁剪,這些值將取代目前的值。
這些欄位以像素為單位設定。請注意,如果色度被二次取樣,則某些尺寸可能無法表示(H.265 7.4.3.2.1 節)。
- width
- height
設定裁剪後的寬度和高度。
- level
在 VPS 和 SPS 中設定級別。請參閱 H.265 A.4 節和表 A.6 和 A.7。
參數必須是級別的名稱(例如,「5.1」)、general_level_idc 值(例如,級別 5.1 的「153」)或特殊名稱「auto」,表示濾鏡應嘗試從輸入串流屬性中猜測級別。
2.16 hevc_mp4toannexb
將 HEVC/H.265 位元串流從長度前綴模式轉換為起始碼前綴模式(如 ITU-T H.265 規範的附件 B 中所定義)。
某些串流格式需要此功能,通常是 MPEG-2 傳輸串流格式(muxer mpegts
)。
例如,要使用 ffmpeg
將包含 HEVC 串流的 MP4 檔案重新混合為 mpegts 格式,您可以使用以下命令
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
請注意,對於 MPEG-TS(muxer mpegts
)和原始 HEVC/H.265(muxer h265
或 hevc
)輸出格式,此濾鏡會自動插入。
2.17 imxdump
修改位元串流以適合 MOV 並可供 Final Cut Pro 解碼器使用。此濾鏡僅適用於 mpeg2video 編解碼器,並且對於 Final Cut Pro 7 及更新版本以及適當的 -tag:v,可能不需要此濾鏡。
例如,要將 30 MB/秒 NTSC IMX 重新混合為 MOV
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
2.18 mjpeg2jpeg
將 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 在 2001 年在 rec.video.desktop 新聞群組中寫道,「MJPEG,或至少 AVI 中具有 MJPG fourcc 的 MJPEG,是受限制的 JPEG,具有固定的 – 且 *省略* – Huffman 表格。JPEG 必須是 YCbCr 色彩空間,它必須是 4:2:2,並且必須使用基本 Huffman 編碼,而不是算術或漸進式編碼。 。 。 。 您確實可以提取 MJPEG 影格並使用常規 JPEG 解碼器對其進行解碼,但您必須將 DHT 段添加到它們的前面,否則解碼器將不知道如何解壓縮數據。OpenDML 規範中給出了必要的確切表格。」
此位元串流濾鏡修補從 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
2.19 mjpegadump
將 MJPEG A 標頭添加到位元串流,以啟用 Quicktime 解碼。
2.20 mov2textsub
從 MOV 字幕中提取可表示的文字檔,從每個字幕封包中剝離元數據標頭。
另請參閱 text2movsub 濾鏡。
2.21 mpeg2_metadata
修改嵌入在 MPEG-2 串流中的元數據。
- display_aspect_ratio
設定串流中的顯示縱橫比。
支援以下固定值
- 4/3
- 16/9
- 221/100
任何其他值都會改為發出正方形像素訊號(請參閱 H.262 6.3.3 節和表 6-3)。
- frame_rate
設定串流中的影格率。這是從已知值的表格結合小的乘數和除數構建的 - 如果提供的值無法精確表示,則將改為使用最接近的可表示值(請參閱 H.262 6.3.3 節和表 6-4)。
- video_format
設定串流中的視訊格式(請參閱 H.262 6.3.6 節和表 6-6)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
設定串流中的色彩描述(請參閱 H.262 6.3.6 節和表 6-7、6-8 和 6-9)。
2.22 mpeg4_unpack_bframes
解壓縮 DivX 樣式的封裝 B 影格。
DivX 樣式的封裝 B 影格不是有效的 MPEG-4,僅僅是損壞的 Windows 視訊子系統的權宜之計。它們使用更多空間,可能會導致輕微的 AV 同步問題,需要更多 CPU 功率來解碼(除非播放器具有一些解碼圖片佇列來補償每個封包樣式的 2,0,2,0 影格),並且如果複製到標準容器(如 mp4 或 mpeg-ps/ts)中,則會引起問題,因為 MPEG-4 解碼器可能無法解碼它們,因為它們不是有效的 MPEG-4。
例如,要使用 ffmpeg
修復包含具有 DivX 樣式封裝 B 影格的 MPEG-4 串流的 AVI 檔案,您可以使用以下命令
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
2.23 noise
損壞封包的內容,或僅僅丟棄它們而不損壞容器。可用於模糊測試或測試錯誤彈性/隱藏。
參數
- amount
接受一個表達式,該表達式對每個封包的評估決定了該封包中位元組被修改的頻率。小於 0 的值將導致可變頻率。預設值為 0,表示不進行修改。但是,如果未指定 amount 和 drop,則 amount 將設定為 -1。請參閱下文以了解接受的變數。
- drop
接受一個對每個封包評估的表達式,其值決定是否丟棄該封包。評估為正值會導致封包被丟棄。評估為負值會導致封包被丟棄的機率可變,大致與值的絕對值成反比。預設值為 0,表示不丟棄。請參閱下文以了解接受的變數。
- dropamount
接受一個非負整數,該整數指定封包被丟棄的可變機率,大致與該值成反比。預設值為 0,表示不丟棄。保留此選項是為了向後相容性,並且等效於將 drop 設定為具有相同絕對值的負值,即
dropamount=4
與drop=-4
相同。如果也指定了 drop,則忽略此選項。
amount
和 drop
都接受包含以下變數的表達式
- 「n」
封包的索引,從零開始。
- 「tb」
封包時間戳的時間基底。
- 「pts」
封包呈現時間戳。
- 「dts」
封包解碼時間戳。
- 「nopts」
表示 AV_NOPTS_VALUE 的常數。
- 「startpts」
在串流中看到的第一個非 AV_NOPTS_VALUE PTS。
- 「startdts」
在串流中看到的第一個非 AV_NOPTS_VALUE DTS。
- 「duration」
- 「d」
封包持續時間,以時間基底單位表示。
- 「pos」
封包在輸入中的位置;當未知或未設定時,可能為 -1。
- 「size」
封包大小,以位元組為單位。
- 「key」
封包是否標記為關鍵影格。
- 「state」
一個偽隨機整數,主要從封包有效負載的內容派生而來。
2.23.1 範例
對每個位元組應用修改,但不丟棄任何封包。
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
在時間戳 30 秒後丟棄每個未標記為關鍵影格的視訊封包,但不修改任何剩餘封包。
ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
每 10 秒丟棄一秒鐘的音訊,並為其餘部分添加一些隨機雜訊。
ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
2.24 null
此位元串流濾鏡不變地傳遞封包。
2.25 pcm_rechunk
將 PCM 音訊重新封包化為每個封包固定數量的樣本或每秒固定封包率。這與 (ffmpeg-filters)asetnsamples 音訊濾鏡 類似,但適用於音訊封包而不是音訊影格。
- nb_out_samples, n
設定每個輸出音訊封包的樣本數。該數字旨在作為每個聲道的樣本數。預設值為 1024。
- pad, p
如果設定為 1,則濾鏡將使用靜音填充最後一個音訊封包,使其包含與先前的音訊封包相同的樣本數(或大致相同的樣本數,請參閱 frame_rate)。預設值為 1。
- frame_rate, r
此選項使濾鏡每秒輸出固定數量的封包,而不是每個封包固定數量的樣本。如果音訊取樣率不能被影格率整除,則樣本數將不是恆定的,但會略有變化,以便每個封包都盡可能靠近影格邊界開始。使用此選項優先於 nb_out_samples。
您可以使用 frame_rate 選項為 NTSC 影格率產生眾所周知的 1602-1601-1602-1601-1602 48kHz 音訊模式。
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
2.26 pgs_frame_merge
將以「顯示集結束」段結尾的 PGS 字幕段序列合併為單個封包。
某些支援 PGS 字幕的容器(muxer matroska
)需要此功能。
2.27 prores_metadata
修改嵌入在 prores 串流中的顏色屬性元數據。
- color_primaries
設定原色。可用值為
- 「auto」
保持相同的原色屬性(預設值)。
- 「unknown」
- 「bt709」
- 「bt470bg」
BT601 625
- 「smpte170m」
BT601 525
- 「bt2020」
- 「smpte431」
DCI P3
- 「smpte432」
P3 D65
- transfer_characteristics
設定顏色傳輸。可用值為
- 「auto」
保持相同的傳輸特性屬性(預設值)。
- 「unknown」
- 「bt709」
BT 601、BT 709、BT 2020
- 「smpte2084」
SMPTE ST 2084
- 「arib-std-b67」
ARIB STD-B67
- matrix_coefficients
設定矩陣係數。可用值為
- 「auto」
保持相同的色彩空間屬性(預設值)。
- 「unknown」
- 「bt709」
- 「smpte170m」
BT 601
- 「bt2020nc」
為檔案的每個影格設定 Rec709 色彩空間
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
為檔案的每個影格設定混合對數伽瑪參數
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
2.28 remove_extra
從封包中移除額外數據。
它接受以下參數
- freq
設定要從哪些影格類型中移除額外數據。
- 「k」
僅從非關鍵影格中移除額外數據。
- 「keyframe」
僅從關鍵影格中移除額外數據。
- 「e, all」
從所有影格中移除額外數據。
2.29 setts
在封包中設定 PTS 和 DTS。
它接受以下參數
- ts
- pts
- dts
設定 PTS、DTS 或兩者的表達式。
- duration
設定持續時間的表達式。
- time_base
設定輸出時間基底。
表達式透過 eval API 進行評估,並且可以包含以下常數
- N
輸入封包的計數。從 0 開始。
- TS
在
ts
或dts
選項的情況下,輸入中的解多工時間戳,或在pts
選項的情況下,呈現時間戳。- POS
封包在輸入檔案中的原始位置,如果對於當前封包未定義,則為未定義
- DTS
輸入中的解多工時間戳。
- PTS
輸入中的呈現時間戳。
- DURATION
輸入中的持續時間。
- STARTDTS
第一個封包的 DTS。
- STARTPTS
第一個封包的 PTS。
- PREV_INDTS
先前的輸入 DTS。
- PREV_INPTS
先前的輸入 PTS。
- PREV_INDURATION
先前的輸入持續時間。
- PREV_OUTDTS
先前的輸出 DTS。
- PREV_OUTPTS
先前的輸出 PTS。
- PREV_OUTDURATION
先前的輸出持續時間。
- NEXT_DTS
下一個輸入 DTS。
- NEXT_PTS
下一個輸入 PTS。
- NEXT_DURATION
下一個輸入持續時間。
- TB
串流封包所屬的時間基底。
- TB_OUT
輸出時間基底。
- SR
串流封包所屬的取樣率。
- NOPTS
AV_NOPTS_VALUE 常數。
例如,要設定 PTS 等於 DTS(如果涉及 B 影格,則不建議這樣做)
ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv
2.30 showinfo
記錄基本封包資訊。主要用於測試、除錯和開發。
2.31 text2movsub
將文字字幕轉換為帶有元數據標頭的 MOV 字幕(由 mov_text
編解碼器使用)。
另請參閱 mov2textsub 濾鏡。
2.32 trace_headers
記錄追蹤輸出,其中包含編碼串流標頭中的所有語法元素(高於個別編碼區塊層級的所有內容)。這對於除錯低階串流問題非常有用。
支援 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根據建置,可能只有這些的子集可用。
2.33 truehd_core
從 TrueHD 串流中提取核心,丟棄 ATMOS 數據。
2.34 vp9_metadata
修改嵌入在 VP9 串流中的元數據。
- color_space
在影格標頭中設定色彩空間值。請注意,任何設定為 RGB 的影格都會隱式設定為 PC 範圍,並且 RGB 與設定檔 0 和 2 不相容。
- 「unknown」
- 「bt601」
- 「bt709」
- 「smpte170」
- 「smpte240」
- 「bt2020」
- 「rgb」
- color_range
在影格標頭中設定色彩範圍值。請注意,色彩空間強加的任何值都將優先於此值。
- 「tv」
- 「pc」
2.35 vp9_superframe
將 VP9 隱藏(alt-ref)影格合併回 VP9 超級影格。這修正了分割/分段 VP9 串流的合併,其中 alt-ref 影格從其可見對應影格中分割出來。
2.36 vp9_superframe_split
將 VP9 超級影格分割為單個影格。
2.37 vp9_raw_reorder
給定一個具有正確時間戳但可能順序錯誤的 VP9 串流,插入額外的 show-existing-frame 封包以更正順序。
3 參見
ffmpeg, ffplay, ffprobe, libavcodec
4 作者
FFmpeg 開發者。
有關作者身份的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如,在 FFmpeg 原始碼目錄中輸入命令 git log
,或瀏覽線上儲存庫 https://git.ffmpeg.org/ffmpeg。
特定組件的維護者列在原始碼樹中的檔案 MAINTAINERS 中。
本文檔於 2025 年 1 月 21 日 使用 makeinfo 生成。
託管由 telepoint.bg 提供