FFmpeg 位元串流濾鏡文件

目錄

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。

插入模式與 rotateflip 選項結合使用。在插入或移除模式下,將移除任何預先存在的顯示方向訊息。提取模式將顯示矩陣作為側數據附加到封包。

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 h265hevc)輸出格式,此濾鏡會自動插入。

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=4drop=-4 相同。如果也指定了 drop,則忽略此選項。

amountdrop 都接受包含以下變數的表達式

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

tsdts 選項的情況下,輸入中的解多工時間戳,或在 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 提供