ffmpeg 文件檔案

目錄

1 概要

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

2 描述

ffmpeg 是一個通用的媒體轉換器。它可以讀取各種輸入 - 包括即時擷取/錄製裝置 - 濾波,並將它們轉碼成大量的輸出格式。

ffmpeg 從任意數量的輸入(可以是常規檔案、管道、網路串流、擷取裝置等)讀取,這些輸入由 -i 選項指定,並寫入任意數量的輸出,這些輸出由純輸出 URL 指定。在命令列上找到的任何無法解釋為選項的內容都被視為輸出 URL。

原則上,每個輸入或輸出都可以包含任意數量的不同類型(視訊/音訊/字幕/附件/資料)的基本串流,儘管允許的串流計數和/或類型可能受到容器格式的限制。從哪些輸入中選擇哪些串流進入哪個輸出,可以自動完成,也可以使用 -map 選項(請參閱 串流選擇 章節)。

若要在選項中引用輸入/輸出,您必須使用它們的索引(從 0 開始)。例如,第一個輸入是 0,第二個是 1,依此類推。同樣地,輸入/輸出中的串流也由它們的索引引用。例如,2:3 指的是第三個輸入或輸出中的第四個串流。另請參閱 串流指定器 章節。

作為一般規則,選項會應用於下一個指定的檔案。因此,順序很重要,而且您可以在命令列上多次使用相同的選項。每次出現都會應用於下一個輸入或輸出檔案。此規則的例外是全域選項(例如,詳細程度),應首先指定。

不要混合輸入和輸出檔案 – 先指定所有輸入檔案,然後再指定所有輸出檔案。也不要混合屬於不同檔案的選項。所有選項僅適用於下一個輸入或輸出檔案,並且在檔案之間重設。

以下是一些簡單的範例。

  • 透過重新編碼媒體串流,將輸入媒體檔案轉換為不同的格式
    ffmpeg -i input.avi output.mp4
    
  • 將輸出檔案的視訊位元率設定為 64 kbit/s
    ffmpeg -i input.avi -b:v 64k -bufsize 64k output.mp4
    
  • 強制輸出檔案的影格速率為 24 fps
    ffmpeg -i input.avi -r 24 output.mp4
    
  • 強制輸入檔案(僅對原始格式有效)的影格速率為 1 fps,輸出檔案的影格速率為 24 fps
    ffmpeg -r 1 -i input.m2v -r 24 output.mp4
    

原始輸入檔案可能需要格式選項。

3 詳細描述

ffmpeg 從下面列出的組件建立轉碼管線。然後,程式的運作包括輸入資料區塊從來源向下流到接收器,同時被它們沿途遇到的組件轉換。

以下是可用的組件種類

  • 解多工器("demultiplexers" 的縮寫)讀取輸入來源以提取
    • 全域屬性,例如中繼資料或章節;
    • 輸入基本串流及其屬性列表

    為每個 -i 選項建立一個解多工器實例,並將編碼的封包傳送到解碼器多工器

    在其他文獻中,解多工器有時稱為分離器,因為它們的主要功能是將檔案分成基本串流(儘管有些檔案僅包含一個基本串流)。

    解多工器的示意圖如下所示

    ┌──────────┬───────────────────────┐
    │ demuxer  │                       │ packets for stream 0
    ╞══════════╡ elementary stream 0   ├──────────────────────►
    │          │                       │
    │  global  ├───────────────────────┤
    │properties│                       │ packets for stream 1
    │   and    │ elementary stream 1   ├──────────────────────►
    │ metadata │                       │
    │          ├───────────────────────┤
    │          │                       │
    │          │     ...........       │
    │          │                       │
    │          ├───────────────────────┤
    │          │                       │ packets for stream N
    │          │ elementary stream N   ├──────────────────────►
    │          │                       │
    └──────────┴───────────────────────┘
         ▲
         │
         │ read from file, network stream,
         │     grabbing device, etc.
         │
    
  • 解碼器 接收音訊、視訊或字幕基本串流的編碼(壓縮)封包,並將它們解碼成原始(視訊為像素陣列,音訊為 PCM)。解碼器通常與解多工器中的基本串流關聯(並從中接收輸入),但有時也可能獨立存在(請參閱迴路解碼器)。

    解碼器的示意圖如下所示

              ┌─────────┐
     packets  │         │ raw frames
    ─────────►│ decoder ├────────────►
              │         │
              └─────────┘
    
  • 濾鏡圖 處理和轉換原始音訊或視訊。濾鏡圖由一個或多個連結成圖的個別濾鏡組成。濾鏡圖有兩種形式 - 簡單複雜,分別使用 -filter-filter_complex 選項進行配置。

    簡單濾鏡圖與輸出基本串流關聯;它從解碼器接收要過濾的輸入,並將過濾後的輸出發送到該輸出串流的編碼器

    執行去交錯(使用 yadif 去交錯器)然後調整大小(使用 scale 濾鏡)的簡單視訊濾鏡圖可能如下所示

                 ┌────────────────────────┐
                 │  simple filtergraph    │
     frames from ╞════════════════════════╡ frames for
     a decoder   │  ┌───────┐  ┌───────┐  │ an encoder
    ────────────►├─►│ yadif ├─►│ scale ├─►│────────────►
                 │  └───────┘  └───────┘  │
                 └────────────────────────┘
    

    複雜濾鏡圖是獨立的,不與任何特定串流關聯。它可能有多個(或零個)輸入,可能具有不同類型(音訊或視訊),每個輸入都從解碼器或另一個複雜濾鏡圖的輸出接收資料。它還有一個或多個輸出,這些輸出饋送到編碼器或另一個複雜濾鏡圖的輸入。

    以下範例圖表示具有 3 個輸入和 2 個輸出(全部為視訊)的複雜濾鏡圖

              ┌─────────────────────────────────────────────────┐
              │               complex filtergraph               │
              ╞═════════════════════════════════════════════════╡
     frames   ├───────┐  ┌─────────┐      ┌─────────┐  ┌────────┤ frames
    ─────────►│input 0├─►│ overlay ├─────►│ overlay ├─►│output 0├────────►
              ├───────┘  │         │      │         │  └────────┤
     frames   ├───────┐╭►│         │    ╭►│         │           │
    ─────────►│input 1├╯ └─────────┘    │ └─────────┘           │
              ├───────┘                 │                       │
     frames   ├───────┐ ┌─────┐ ┌─────┬─╯              ┌────────┤ frames
    ─────────►│input 2├►│scale├►│split├───────────────►│output 1├────────►
              ├───────┘ └─────┘ └─────┘                └────────┤
              └─────────────────────────────────────────────────┘
    

    來自第二個輸入的幀疊加在來自第一個輸入的幀之上。來自第三個輸入的幀被重新縮放,然後複製成兩個相同的串流。其中一個疊加在組合的前兩個輸入之上,結果作為濾鏡圖的第一個輸出公開。另一個副本最終成為濾鏡圖的第二個輸出。

  • 編碼器 接收原始音訊、視訊或字幕,並將它們編碼成編碼封包。編碼(壓縮)過程通常是有損的 - 它會降低串流品質以使輸出更小;某些編碼器是無損的,但代價是輸出大小大得多。視訊或音訊編碼器從某些濾鏡圖的輸出接收其輸入,字幕編碼器從解碼器接收輸入(因為尚不支援字幕過濾)。每個編碼器都與某些多工器的輸出基本串流關聯,並將其輸出發送到該多工器。

    編碼器的示意圖如下所示

                 ┌─────────┐
     raw frames  │         │ packets
    ────────────►│ encoder ├─────────►
                 │         │
                 └─────────┘
    
  • 多工器("multiplexers" 的縮寫)從編碼器(轉碼路徑)或直接從解多工器(串流複製路徑)接收其基本串流的編碼封包,對它們進行交錯處理(當有多個基本串流時),並將產生的位元組寫入輸出檔案(或管道、網路串流等)。

    多工器的示意圖如下所示

                           ┌──────────────────────┬───────────┐
     packets for stream 0  │                      │   muxer   │
    ──────────────────────►│  elementary stream 0 ╞═══════════╡
                           │                      │           │
                           ├──────────────────────┤  global   │
     packets for stream 1  │                      │properties │
    ──────────────────────►│  elementary stream 1 │   and     │
                           │                      │ metadata  │
                           ├──────────────────────┤           │
                           │                      │           │
                           │     ...........      │           │
                           │                      │           │
                           ├──────────────────────┤           │
     packets for stream N  │                      │           │
    ──────────────────────►│  elementary stream N │           │
                           │                      │           │
                           └──────────────────────┴─────┬─────┘
                                                        │
                         write to file, network stream, │
                             grabbing device, etc.      │
                                                        │
                                                        ▼
    

3.1 串流複製

ffmpeg 中最簡單的管道是單串流串流複製,即複製一個輸入基本串流的封包,而無需解碼、過濾或編碼它們。例如,考慮一個名為 INPUT.mkv 的輸入檔案,其中包含 3 個基本串流,我們從中取出第二個串流並將其寫入檔案 OUTPUT.mp4。這種管道的示意圖如下所示

┌──────────┬─────────────────────┐
│ demuxer  │                     │ unused
╞══════════╡ elementary stream 0 ├────────╳
│          │                     │
│INPUT.mkv ├─────────────────────┤          ┌──────────────────────┬───────────┐
│          │                     │ packets  │                      │   muxer   │
│          │ elementary stream 1 ├─────────►│  elementary stream 0 ╞═══════════╡
│          │                     │          │                      │OUTPUT.mp4 │
│          ├─────────────────────┤          └──────────────────────┴───────────┘
│          │                     │ unused
│          │ elementary stream 2 ├────────╳
│          │                     │
└──────────┴─────────────────────┘

可以使用以下命令列建構上述管道

ffmpeg -i INPUT.mkv -map 0:1 -c copy OUTPUT.mp4

在此命令列中

  • 有一個單一輸入 INPUT.mkv
  • 此輸入沒有輸入選項;
  • 有一個單一輸出 OUTPUT.mp4
  • 此輸出有兩個輸出選項
    • -map 0:1 選擇要使用的輸入串流 - 從索引為 0(即第一個)的輸入中選擇索引為 1(即第二個)的串流;
    • -c copy 選擇 copy 編碼器,即不進行解碼或編碼的串流複製。

串流複製適用於更改基本串流計數、容器格式或修改容器級中繼資料。由於沒有解碼或編碼,因此速度非常快,並且沒有品質損失。但是,由於各種因素(例如,目標容器所需的某些資訊在來源中不可用),它可能在某些情況下無法運作。顯然,應用濾鏡也是不可能的,因為濾鏡作用於解碼後的幀。

可以建構更複雜的串流複製場景 - 例如,將來自兩個輸入檔案的串流組合到單個輸出中

┌──────────┬────────────────────┐         ┌────────────────────┬───────────┐
│ demuxer 0│                    │ packets │                    │   muxer   │
╞══════════╡elementary stream 0 ├────────►│elementary stream 0 ╞═══════════╡
│INPUT0.mkv│                    │         │                    │OUTPUT.mp4 │
└──────────┴────────────────────┘         ├────────────────────┤           │
┌──────────┬────────────────────┐         │                    │           │
│ demuxer 1│                    │ packets │elementary stream 1 │           │
╞══════════╡elementary stream 0 ├────────►│                    │           │
│INPUT1.aac│                    │         └────────────────────┴───────────┘
└──────────┴────────────────────┘

可以使用命令列建構該場景

ffmpeg -i INPUT0.mkv -i INPUT1.aac -map 0:0 -map 1:0 -c copy OUTPUT.mp4

輸出 -map 選項在此處使用了兩次,在輸出檔案中建立兩個串流 - 一個由第一個輸入饋送,另一個由第二個輸入饋送。單個 -c 選項實例為這兩個串流選擇串流複製。您也可以將此選項的多個實例與 串流指定器 一起使用,以將不同的值應用於每個串流,這將在後續章節中示範。

相反的場景是將來自單個輸入的多個串流拆分為多個輸出

┌──────────┬─────────────────────┐          ┌───────────────────┬───────────┐
│ demuxer  │                     │ packets  │                   │ muxer 0   │
╞══════════╡ elementary stream 0 ├─────────►│elementary stream 0╞═══════════╡
│          │                     │          │                   │OUTPUT0.mp4│
│INPUT.mkv ├─────────────────────┤          └───────────────────┴───────────┘
│          │                     │ packets  ┌───────────────────┬───────────┐
│          │ elementary stream 1 ├─────────►│                   │ muxer 1   │
│          │                     │          │elementary stream 0╞═══════════╡
└──────────┴─────────────────────┘          │                   │OUTPUT1.mp4│
                                            └───────────────────┴───────────┘

使用以下命令建構

ffmpeg -i INPUT.mkv -map 0:0 -c copy OUTPUT0.mp4 -map 0:1 -c copy OUTPUT1.mp4

請注意,即使 -c 選項的值相同,每個輸出檔案也需要一個單獨的實例。這是因為非全域選項(即大多數選項)僅在它們之前檔案的上下文中應用。

這些範例當然可以進一步推廣到任意數量的輸入到任意數量的輸出的重新對應。

3.2 轉碼

轉碼 是解碼串流然後再次編碼它的過程。由於編碼往往在計算上很昂貴,並且在大多數情況下會降低串流品質(即它是有損的),因此您應該僅在需要時進行轉碼,否則執行串流複製。轉碼的典型原因包括

  • 應用濾鏡 - 例如,調整大小、去交錯或疊加視訊;重新取樣或混合音訊;
  • 您想要將串流饋送到無法解碼原始編解碼器的裝置。

請注意,除非您為音訊、視訊和字幕串流指定 -c copy,否則 ffmpeg 將會轉碼所有這些串流。

考慮一個範例管道,該管道讀取具有一個音訊串流和一個視訊串流的輸入檔案,轉碼視訊並將音訊複製到單個輸出檔案中。這可以示意性地表示如下

┌──────────┬─────────────────────┐
│ demuxer  │                     │       audio packets
╞══════════╡ stream 0 (audio)    ├─────────────────────────────────────╮
│          │                     │                                     │
│INPUT.mkv ├─────────────────────┤ video    ┌─────────┐     raw        │
│          │                     │ packets  │  video  │ video frames   │
│          │ stream 1 (video)    ├─────────►│ decoder ├──────────────╮ │
│          │                     │          │         │              │ │
└──────────┴─────────────────────┘          └─────────┘              │ │
                                                                     ▼ ▼
                                                                     │ │
┌──────────┬─────────────────────┐ video    ┌─────────┐              │ │
│ muxer    │                     │ packets  │  video  │              │ │
╞══════════╡ stream 0 (video)    │◄─────────┤ encoder ├──────────────╯ │
│          │                     │          │(libx264)│                │
│OUTPUT.mp4├─────────────────────┤          └─────────┘                │
│          │                     │                                     │
│          │ stream 1 (audio)    │◄────────────────────────────────────╯
│          │                     │
└──────────┴─────────────────────┘

並使用以下命令列實作

ffmpeg -i INPUT.mkv -map 0:v -map 0:a -c:v libx264 -c:a copy OUTPUT.mp4

請注意它是如何使用串流指定器 :v:a 來選擇輸入串流並將 -c 選項的不同值應用於它們的;有關更多詳細資訊,請參閱 串流指定器 章節。

3.3 濾鏡處理

轉碼時,可以在編碼之前使用簡單複雜濾鏡圖來過濾音訊和視訊串流。

3.3.1 簡單濾鏡圖

簡單濾鏡圖是指恰好有一個輸入和一個輸出,並且兩者類型相同(音訊或視訊)的濾鏡圖。它們使用每個串流的 -filter 選項(使用 -vf-af 別名分別表示 -filter:v (視訊) 和 -filter:a (音訊))進行配置。請注意,簡單濾鏡圖與其輸出串流綁定,因此,例如,如果您有多個音訊串流,-af 將為每個串流建立一個單獨的濾鏡圖。

以上述轉碼範例為例,新增過濾(並省略音訊以求清晰)使其看起來像這樣

┌──────────┬───────────────┐
│ demuxer  │               │          ┌─────────┐
╞══════════╡ video stream  │ packets  │  video  │ frames
│INPUT.mkv │               ├─────────►│ decoder ├─────►───╮
│          │               │          └─────────┘         │
└──────────┴───────────────┘                              │
                                  ╭───────────◄───────────╯
                                  │   ┌────────────────────────┐
                                  │   │  simple filtergraph    │
                                  │   ╞════════════════════════╡
                                  │   │  ┌───────┐  ┌───────┐  │
                                  ╰──►├─►│ yadif ├─►│ scale ├─►├╮
                                      │  └───────┘  └───────┘  ││
                                      └────────────────────────┘│
                                                                │
                                                                │
┌──────────┬───────────────┐ video    ┌─────────┐               │
│ muxer    │               │ packets  │  video  │               │
╞══════════╡ video stream  │◄─────────┤ encoder ├───────◄───────╯
│OUTPUT.mp4│               │          │         │
│          │               │          └─────────┘
└──────────┴───────────────┘

3.3.2 複雜濾鏡圖

複雜濾鏡圖是那些無法簡單地描述為應用於一個串流的線性處理鏈的濾鏡圖。例如,當圖具有多個輸入和/或輸出,或者當輸出串流類型與輸入不同時,就會發生這種情況。複雜濾鏡圖使用 -filter_complex 選項進行配置。請注意,此選項是全域的,因為複雜濾鏡圖本質上無法與單個串流或檔案明確關聯。每個 -filter_complex 實例都會建立一個新的複雜濾鏡圖,並且可以有任意數量的濾鏡圖。

複雜濾鏡圖的一個簡單範例是 overlay 濾鏡,它有兩個視訊輸入和一個視訊輸出,其中一個視訊疊加在另一個視訊之上。它的音訊對應物是 amix 濾鏡。

3.4 Loopback 解碼器

雖然解碼器通常與解多工器串流關聯,但也可以建立「迴路」解碼器,這些解碼器解碼來自某些編碼器的輸出,並允許將其回饋到複雜濾鏡圖。這是透過 -dec 指令完成的,該指令將應解碼的輸出串流的索引作為參數。每個此類指令都會建立一個新的迴路解碼器,索引從零開始的連續整數。然後應使用這些索引在複雜濾鏡圖連結標籤中引用迴路解碼器,如 -filter_complex 的文件中所述。

可以透過將解碼 AVOptions 放置在 -dec 之前,以類似於輸入/輸出選項的方式傳遞到迴路解碼器。

例如,以下範例

ffmpeg -i INPUT                                        \
  -map 0:v:0 -c:v libx264 -crf 45 -f null -            \
  -threads 3 -dec 0:0                                  \
  -filter_complex '[0:v][dec:0]hstack[stack]'          \
  -map '[stack]' -c:v ffv1 OUTPUT

讀取輸入視訊並

  • (第 2 行)使用低品質的 libx264 對其進行編碼;
  • (第 3 行)使用 3 個執行緒解碼此編碼串流;
  • (第 4 行)將解碼後的視訊與原始輸入視訊並排放置;
  • (第 5 行)組合後的視訊然後進行無損編碼並寫入 OUTPUT

這樣的轉碼管道可以用以下圖表表示

┌──────────┬───────────────┐
│ demuxer  │               │   ┌─────────┐            ┌─────────┐    ┌────────────────────┐
╞══════════╡ video stream  │   │  video  │            │  video  │    │ null muxer         │
│   INPUT  │               ├──►│ decoder ├──┬────────►│ encoder ├─┬─►│(discards its input)│
│          │               │   └─────────┘  │         │(libx264)│ │  └────────────────────┘
└──────────┴───────────────┘                │         └─────────┘ │
                                 ╭───────◄──╯   ┌─────────┐       │
                                 │              │loopback │       │
                                 │ ╭─────◄──────┤ decoder ├────◄──╯
                                 │ │            └─────────┘
                                 │ │
                                 │ │
                                 │ │  ┌───────────────────┐
                                 │ │  │complex filtergraph│
                                 │ │  ╞═══════════════════╡
                                 │ │  │  ┌─────────────┐  │
                                 ╰─╫─►├─►│   hstack    ├─►├╮
                                   ╰─►├─►│             │  ││
                                      │  └─────────────┘  ││
                                      └───────────────────┘│
                                                           │
┌──────────┬───────────────┐  ┌─────────┐                  │
│ muxer    │               │  │  video  │                  │
╞══════════╡ video stream  │◄─┤ encoder ├───────◄──────────╯
│  OUTPUT  │               │  │ (ffv1)  │
│          │               │  └─────────┘
└──────────┴───────────────┘

4 串流選擇

ffmpeg 提供 -map 選項,用於手動控制每個輸出檔案中的串流選擇。使用者可以跳過 -map,讓 ffmpeg 執行如下所述的自動串流選擇。 -vn / -an / -sn / -dn 選項可用於分別跳過包含視訊、音訊、字幕和資料串流,無論是手動對應還是自動選擇,但複雜濾鏡圖的輸出串流除外。

4.1 描述

以下小節描述了串流選擇中涉及的各種規則。接下來的範例展示了如何在實務中應用這些規則。

儘管已盡一切努力準確反映程式的行為,但 FFmpeg 仍在持續開發中,並且程式碼可能自撰寫本文時起已變更。

4.1.1 自動串流選擇

在特定輸出檔案沒有任何對應選項的情況下,ffmpeg 會檢查輸出格式,以檢查可以包含在其中的串流類型,即視訊、音訊和/或字幕。對於每種可接受的串流類型,ffmpeg 將從所有輸入中選擇一個串流(如果可用)。

它將根據以下條件選擇該串流

  • 對於視訊,它是解析度最高的串流,
  • 對於音訊,它是通道數最多的串流,
  • 對於字幕,它是找到的第一個字幕串流,但有一個注意事項。輸出格式的預設字幕編碼器可以是基於文字的或基於圖像的,並且只會選擇相同類型的字幕串流。

如果多個相同類型的串流速率相同,則選擇索引最低的串流。

資料或附件串流不會自動選擇,只能使用 -map 包含。

4.1.2 手動串流選擇

當使用 -map 時,只有使用者對應的串流才會包含在該輸出檔案中,複雜濾鏡圖輸出的一個可能例外情況除外,如下所述。

4.1.3 複雜濾鏡圖

如果存在任何具有未標記襯墊的複雜濾鏡圖輸出串流,它們將被新增到第一個輸出檔案。如果輸出格式不支援串流類型,則會導致嚴重錯誤。在沒有對應選項的情況下,包含這些串流會導致跳過其類型的自動串流選擇。如果存在對應選項,則除了對應的串流之外,還會包含這些濾鏡圖串流。

具有標記襯墊的複雜濾鏡圖輸出串流必須對應一次且僅對應一次。

4.1.4 串流處理

串流處理獨立於串流選擇,但字幕除外,如下所述。串流處理是透過針對特定輸出檔案中串流的 -codec 選項設定的。特別是,編解碼器選項在串流選擇過程之後由 ffmpeg 應用,因此不影響後者。如果沒有為串流類型指定 -codec 選項,ffmpeg 將選擇輸出檔案多工器註冊的預設編碼器。

字幕存在例外情況。如果為輸出檔案指定了字幕編碼器,則將包含找到的任何類型(文字或圖像)的第一個字幕串流。 ffmpeg 不會驗證指定的編碼器是否可以轉換選定的串流,或者轉換後的串流是否在輸出格式中可接受。這也普遍適用:當使用者手動設定編碼器時,串流選擇過程無法檢查編碼後的串流是否可以多工處理到輸出檔案中。如果不能,ffmpeg 將中止,並且所有輸出檔案都將處理失敗。

4.2 範例

以下範例說明了 ffmpeg 串流選擇方法的行為、怪癖和限制。

它們假設以下三個輸入檔案。

input file 'A.avi'
      stream 0: video 640x360
      stream 1: audio 2 channels

input file 'B.mp4'
      stream 0: video 1920x1080
      stream 1: audio 2 channels
      stream 2: subtitles (text)
      stream 3: audio 5.1 channels
      stream 4: subtitles (text)

input file 'C.mkv'
      stream 0: video 1280x720
      stream 1: audio 2 channels
      stream 2: subtitles (image)

範例:自動串流選擇

ffmpeg -i A.avi -i B.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov

指定了三個輸出檔案,並且對於前兩個檔案,未設定 -map 選項,因此 ffmpeg 將自動為這兩個檔案選擇串流。

out1.mkv 是一個 Matroska 容器檔案,接受視訊、音訊和字幕串流,因此 ffmpeg 將嘗試選擇每種類型中的一種。
對於視訊,它將從 B.mp4 中選擇 stream 0,該串流在所有輸入視訊串流中具有最高的解析度。
對於音訊,它將從 B.mp4 中選擇 stream 3,因為它具有最多的通道數。
對於字幕,它將從 B.mp4 中選擇 stream 2,它是 A.aviB.mp4 中第一個字幕串流。

out2.wav 僅接受音訊串流,因此僅選擇來自 B.mp4stream 3

對於 out3.mov,由於設定了 -map 選項,因此不會發生自動串流選擇。 -map 1:a 選項將從第二個輸入 B.mp4 中選擇所有音訊串流。此輸出檔案中將不包含其他串流。

對於前兩個輸出,所有包含的串流都將被轉碼。選擇的編碼器將是每個輸出格式註冊的預設編碼器,這可能與選定輸入串流的編解碼器不符。

對於第三個輸出,音訊串流的編解碼器選項已設定為 copy,因此不會發生或可能發生解碼-過濾-編碼操作。選定串流的封包應從輸入檔案傳輸並多工處理到輸出檔案中。

範例:自動字幕選擇

ffmpeg -i C.mkv out1.mkv -c:s dvdsub -an out2.mkv

儘管 out1.mkv 是一個接受字幕串流的 Matroska 容器檔案,但只會選擇視訊和音訊串流。 C.mkv 的字幕串流是基於圖像的,而 Matroska 多工器的預設字幕編碼器是基於文字的,因此預計字幕的轉碼操作會失敗,因此不會選擇該串流。但是,在 out2.mkv 中,命令中指定了字幕編碼器,因此除了視訊串流外,還選擇了字幕串流。 -an 的存在停用了 out2.mkv 的音訊串流選擇。

範例:未標記的濾鏡圖輸出

ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt

此處使用 -filter_complex 選項設定濾鏡圖,並且由單個視訊濾鏡組成。 overlay 濾鏡正好需要兩個視訊輸入,但未指定任何輸入,因此使用前兩個可用的視訊串流,即 A.aviC.mkv 的視訊串流。濾鏡的輸出襯墊沒有標籤,因此會發送到第一個輸出檔案 out1.mp4。因此,跳過了視訊串流的自動選擇,否則會選擇 B.mp4 中的串流。具有最多通道數的音訊串流,即 B.mp4 中的 stream 3,會自動選擇。但是,由於 MP4 格式沒有註冊預設字幕編碼器,並且使用者未指定字幕編碼器,因此不會選擇字幕串流。

第二個輸出檔案 out2.srt 僅接受基於文字的字幕串流。因此,即使第一個可用的字幕串流屬於 C.mkv,但它是基於圖像的,因此被跳過。選定的串流,B.mp4 中的 stream 2,是第一個基於文字的字幕串流。

範例:標記的濾鏡圖輸出

ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
       -map '[outv]' -an        out1.mp4 \
                                out2.mkv \
       -map '[outv]' -map 1:a:0 out3.mkv

上述命令將會失敗,因為標記為 [outv] 的輸出襯墊已被對應兩次。不會處理任何輸出檔案。

ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0[outv];overlay;aresample" \
       -an        out1.mp4 \
                  out2.mkv \
       -map 1:a:0 out3.mkv

上面的這個命令也會失敗,因為色調濾鏡輸出有一個標籤 [outv],但未對應到任何地方。

應該將命令修改如下,

ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \
        -map '[outv1]' -an        out1.mp4 \
                                  out2.mkv \
        -map '[outv2]' -map 1:a:0 out3.mkv

來自 B.mp4 的視訊串流被傳送到色相濾鏡,其輸出使用 split 濾鏡複製一次,並且兩個輸出都被標記。然後每個副本都被映射到第一個和第三個輸出檔案。

overlay 濾鏡需要兩個視訊輸入,它使用前兩個未使用的視訊串流。這些串流來自 A.aviC.mkv。overlay 的輸出未被標記,因此它被傳送到第一個輸出檔案 out1.mp4,無論 -map 選項是否存在。

aresample 濾鏡被傳送第一個未使用的音訊串流,即來自 A.avi 的串流。由於此濾鏡輸出也未被標記,因此它也被映射到第一個輸出檔案。-an 的存在僅抑制音訊串流的自動或手動選擇,而不是從濾鏡圖發送的輸出。這兩個映射的串流應在 out1.mp4 中映射的串流之前排序。

映射到 out2.mkv 的視訊、音訊和字幕串流完全由自動串流選擇決定。

out3.mkv 由來自色相濾鏡的複製視訊輸出和來自 B.mp4 的第一個音訊串流組成。

5 選項

所有數值選項,如果沒有另行指定,都接受表示數字的字串作為輸入,其後可以跟隨 SI 單位字首之一,例如:'K'、'M' 或 'G'。

如果將 'i' 附加到 SI 單位字首,則完整的字首將被解釋為二進制倍數的單位字首,二進制倍數基於 1024 的冪而不是 1000 的冪。將 'B' 附加到 SI 單位字首會將該值乘以 8。這允許使用,例如:'KB'、'MiB'、'G' 和 'B' 作為數字後綴。

不帶參數的選項是布林選項,並將對應的值設定為 true。它們可以通過在選項名稱前加上 "no" 來設定為 false。例如,使用 "-nofoo" 將把名為 "foo" 的布林選項設定為 false。

帶參數的選項支援一種特殊的語法,其中在命令列上給出的參數被解釋為從中載入實際參數值之檔案的路徑。要使用此功能,請在選項名稱前緊鄰添加一個正斜線 '/'(在開頭的破折號之後)。例如:

ffmpeg -i INPUT -/filter:v filter.script OUTPUT

將從名為 filter.script 的檔案載入濾鏡圖描述。

5.1 串流指定器

某些選項是逐串流應用的,例如位元速率或編解碼器。串流指定器用於精確指定給定選項屬於哪個或哪些串流。

串流指定器是一個字串,通常附加到選項名稱並用冒號與之分隔。例如,-codec:a:1 ac3 包含 a:1 串流指定器,它匹配第二個音訊串流。因此,它將為第二個音訊串流選擇 ac3 編解碼器。

一個串流指定器可以匹配多個串流,以便將該選項應用於所有這些串流。例如,-b:a 128k 中的串流指定器匹配所有音訊串流。

空的串流指定器匹配所有串流。例如,-codec copy-codec: copy 將複製所有串流而不重新編碼。

串流指定器的可能形式為

stream_index

匹配具有此索引的串流。例如,-threads:1 4 將第二個串流的執行緒計數設定為 4。如果 stream_index 用作附加串流指定器(見下文),則它從匹配的串流中選擇串流編號 stream_index。串流編號基於 libavformat 偵測到的串流順序,除非還指定了串流群組指定器或程式 ID。在這種情況下,它基於群組或程式中串流的順序。

stream_type[:additional_stream_specifier]

stream_type 是以下之一:'v' 或 'V' 代表視訊,'a' 代表音訊,'s' 代表字幕,'d' 代表資料,以及 't' 代表附件。'v' 匹配所有視訊串流,'V' 僅匹配非附加圖片、視訊縮圖或封面藝術的視訊串流。如果使用 additional_stream_specifier,則它匹配既具有此類型又匹配 additional_stream_specifier 的串流。否則,它匹配指定類型的所有串流。

g:group_specifier[:additional_stream_specifier]

匹配屬於具有指定器 group_specifier 之群組的串流。如果使用 additional_stream_specifier,則它匹配既是群組的一部分又匹配 additional_stream_specifier 的串流。group_specifier 可以是以下之一

group_index

匹配具有此群組索引的串流。

#group_id 或 i:group_id

匹配具有此群組 ID 的串流。

p:program_id[:additional_stream_specifier]

匹配屬於具有 ID program_id 之程式的串流。如果使用 additional_stream_specifier,則它匹配既是程式的一部分又匹配 additional_stream_specifier 的串流。

#stream_id 或 i:stream_id

通過串流 ID(例如 MPEG-TS 容器中的 PID)匹配串流。

m:key[:value]

匹配具有元數據標籤 key 且具有指定值的串流。如果未給出 value,則匹配包含具有任何值的給定標籤的串流。keyvalue 中的冒號字元 ':' 需要使用反斜線跳脫。

disp:dispositions[:additional_stream_specifier]

匹配具有給定處置的串流。dispositions 是使用 '+' 連接的一個或多個處置(如 -dispositions 選項所印出的)的列表。

u

匹配具有可用組態的串流,編解碼器必須已定義,並且必要的資訊(例如視訊尺寸或音訊取樣率)必須存在。

請注意,在 ffmpeg 中,通過元數據匹配僅適用於輸入檔案。

5.2 通用選項

這些選項在 ff* 工具之間共享。

-L

顯示許可證。

-h, -?, -help, --help [arg]

顯示說明。可以指定一個可選參數來印出關於特定項目的說明。如果未指定任何參數,則僅顯示基本(非進階)工具選項。

arg 的可能值為

long

除了基本工具選項外,還印出進階工具選項。

full

印出完整的選項列表,包括編碼器、解碼器、解多工器、多工器、濾鏡等的共享和私有選項。

decoder=decoder_name

印出關於名為 decoder_name 的解碼器的詳細資訊。使用 -decoders 選項以取得所有解碼器的列表。

encoder=encoder_name

印出關於名為 encoder_name 的編碼器的詳細資訊。使用 -encoders 選項以取得所有編碼器的列表。

demuxer=demuxer_name

印出關於名為 demuxer_name 的解多工器的詳細資訊。使用 -formats 選項以取得所有解多工器和多工器的列表。

muxer=muxer_name

印出關於名為 muxer_name 的多工器的詳細資訊。使用 -formats 選項以取得所有多工器和解多工器的列表。

filter=filter_name

印出關於名為 filter_name 的濾鏡的詳細資訊。使用 -filters 選項以取得所有濾鏡的列表。

bsf=bitstream_filter_name

印出關於名為 bitstream_filter_name 的位元流濾鏡的詳細資訊。使用 -bsfs 選項以取得所有位元流濾鏡的列表。

protocol=protocol_name

印出關於名為 protocol_name 的協定的詳細資訊。使用 -protocols 選項以取得所有協定的列表。

-version

顯示版本。

-buildconf

顯示建置組態,每行一個選項。

-formats

顯示可用的格式(包括裝置)。

-demuxers

顯示可用的解多工器。

-muxers

顯示可用的多工器。

-devices

顯示可用的裝置。

-codecs

顯示 libavcodec 已知的所有編解碼器。

請注意,在整篇文件中,術語「編解碼器」被用作更正確的媒體位元流格式的簡稱。

-decoders

顯示可用的解碼器。

-encoders

顯示所有可用的編碼器。

-bsfs

顯示可用的位元流濾鏡。

-protocols

顯示可用的協定。

-filters

顯示可用的 libavfilter 濾鏡。

-pix_fmts

顯示可用的像素格式。

-sample_fmts

顯示可用的樣本格式。

-layouts

顯示通道名稱和標準通道版面配置。

-dispositions

顯示串流處置。

-colors

顯示已識別的顏色名稱。

-sources device[,opt1=val1[,opt2=val2]...]

顯示輸入裝置的自動偵測來源。某些裝置可能會提供無法自動偵測的系統相關來源名稱。不能假定返回的列表始終完整。

ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]

顯示輸出裝置的自動偵測接收器。某些裝置可能會提供無法自動偵測的系統相關接收器名稱。不能假定返回的列表始終完整。

ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [flags+]loglevel | -v [flags+]loglevel

設定日誌記錄級別和程式庫使用的標誌。

可選的 flags 字首可以包含以下值

repeat

表示重複的日誌輸出不應壓縮到第一行,並且將省略「最後一條訊息重複 n 次」行。

level

表示日誌輸出應在每條訊息行中添加 [level] 字首。這可以用作日誌著色的替代方案,例如在將日誌轉儲到檔案時。

標誌也可以單獨使用,方法是在前面添加 '+'/'-' 字首以設定/重置單個標誌,而不影響其他 flags 或更改 loglevel。當同時設定 flagsloglevel 時,預期在最後一個 flags 值和 loglevel 之前使用 '+' 分隔符。

loglevel 是一個字串或數字,包含以下值之一

quiet, -8

完全不顯示任何內容;保持靜默。

panic, 0

僅顯示可能導致程序崩潰的致命錯誤,例如斷言失敗。目前這沒有用於任何用途。

fatal, 8

僅顯示致命錯誤。這些是程序絕對無法繼續的錯誤之後的錯誤。

error, 16

顯示所有錯誤,包括可以從中恢復的錯誤。

warning, 24

顯示所有警告和錯誤。將顯示任何與可能不正確或意外事件相關的訊息。

info, 32

在處理期間顯示資訊性訊息。這是警告和錯誤之外的訊息。這是預設值。

verbose, 40

info 相同,只是更詳細。

debug, 48

顯示所有內容,包括偵錯資訊。

trace, 56

例如,要啟用重複的日誌輸出、添加 level 字首,並將 loglevel 設定為 verbose

ffmpeg -loglevel repeat+level+verbose -i input output

另一個範例,啟用重複的日誌輸出,而不影響 level 字首標誌或 loglevel 的目前狀態

ffmpeg [...] -loglevel +repeat

預設情況下,程式會記錄到 stderr。如果終端機支援著色,則顏色用於標記錯誤和警告。可以通過設定環境變數 AV_LOG_FORCE_NOCOLOR 來停用日誌著色,或者可以通過設定環境變數 AV_LOG_FORCE_COLOR 來強制啟用。

-report

將完整的命令列和日誌輸出轉儲到目前目錄中名為 program-YYYYMMDD-HHMMSS.log 的檔案中。此檔案對於錯誤報告很有用。它也暗示了 -loglevel debug

將環境變數 FFREPORT 設定為任何值都具有相同的效果。如果該值是以 ':' 分隔的 key=value 序列,則這些選項將影響報告;如果選項值包含特殊字元或選項分隔符 ':',則必須對其進行跳脫(請參閱 ffmpeg-utils 手冊中的「引號和跳脫」章節)。

以下選項被識別

file

設定用於報告的檔案名稱;%p 展開為程式名稱,%t 展開為時間戳記,%% 展開為純 %

level

使用數值設定日誌詳細程度級別(請參閱 -loglevel)。

例如,要使用 32 的日誌級別(info 日誌級別的別名)將報告輸出到名為 ffreport.log 的檔案

FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

解析環境變數中的錯誤不是致命的,並且不會出現在報告中。

-hide_banner

抑制印出橫幅。

所有 FFmpeg 工具通常都會顯示版權聲明、建置選項和程式庫版本。此選項可用於抑制印出此資訊。

-cpuflags flags (global)

允許設定和清除 CPU 標誌。此選項旨在用於測試。除非您知道自己在做什麼,否則請勿使用它。

ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...

此選項的可能標誌為

x86
mmx
mmxext
sse
sse2
sse2slow
sse3
sse3slow
ssse3
atom
sse4.1
sse4.2
avx
avx2
xop
fma3
fma4
3dnow
3dnowext
bmi1
bmi2
cmov
ARM
armv5te
armv6
armv6t2
vfp
vfpv3
neon
setend
AArch64
armv8
vfp
neon
PowerPC
altivec
Specific Processors
pentium2
pentium3
pentium4
k6
k62
athlon
athlonxp
k8
-cpucount count (global)

覆寫 CPU 計數的偵測。此選項旨在用於測試。除非您知道自己在做什麼,否則請勿使用它。

ffmpeg -cpucount 2
-max_alloc bytes

為 ffmpeg 系列 malloc 函數在堆積上分配的區塊設定最大大小限制。使用此選項時請極其謹慎。如果您不完全理解這樣做的後果,請勿使用。預設值為 INT_MAX。

5.3 AVOptions

這些選項由 libavformat、libavdevice 和 libavcodec 程式庫直接提供。要查看可用 AVOption 的列表,請使用 -help 選項。它們分為兩類

generic

這些選項可以為任何容器、編解碼器或裝置設定。通用選項列在容器/裝置的 AVFormatContext 選項下,以及編解碼器的 AVCodecContext 選項下。

private

這些選項特定於給定的容器、裝置或編解碼器。私有選項列在其對應的容器/裝置/編解碼器下。

例如,若要將 ID3v2.3 標頭寫入 MP3 檔案,而非預設的 ID3v2.4,請使用 MP3 多工器 (muxer) 的 id3v2_version 私有選項。

ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有編解碼器 AVOptions 都是針對每個串流 (per-stream) 設定的,因此應將串流指定器附加到它們。

ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4

在上述範例中,一個多聲道音訊串流被對應輸出兩次。第一個實例使用 ac3 編解碼器和 640k 位元率進行編碼。第二個實例被降混為 2 個聲道,並使用 aac 編解碼器進行編碼。使用輸出串流的絕對索引為其指定了 128k 的位元率。

注意:-nooption 語法不能用於布林值 AVOptions,請使用 -option 0/-option 1

注意:舊的、未公開的文件方式,透過在選項名稱前加上 v/a/s 來指定每個串流的 AVOptions,現在已過時,並將很快移除。

5.4 主要選項

-f fmt (輸入/輸出)

強制輸入或輸出檔案格式。格式通常會自動偵測輸入檔案,並從輸出檔案的副檔名猜測,因此在大多數情況下不需要此選項。

-i url (輸入)

輸入檔案網址 (url)

-y (全域)

覆寫輸出檔案而不詢問。

-n (全域)

不要覆寫輸出檔案,如果指定的輸出檔案已存在,則立即結束。

-stream_loop number (輸入)

設定輸入串流應循環播放的次數。循環 0 表示不循環,循環 -1 表示無限循環。

-recast_media (全域)

允許強制使用與解多工器偵測或指定的媒體類型不同的解碼器。適用於解碼多工為資料串流的媒體資料。

-c[:stream_specifier] codec (輸入/輸出,每個串流)
-codec[:stream_specifier] codec (輸入/輸出,每個串流)

為一個或多個串流選擇編碼器(在輸出檔案之前使用時)或解碼器(在輸入檔案之前使用時)。codec 是解碼器/編碼器的名稱,或特殊值 copy(僅限輸出),表示串流不應重新編碼。

例如

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT

使用 libx264 編碼所有視訊串流,並複製所有音訊串流。

對於每個串流,都會套用最後一個符合的 c 選項,因此

ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

將複製除第二個視訊以外的所有串流,第二個視訊將使用 libx264 進行編碼,而第 138 個音訊將使用 libvorbis 進行編碼。

-t duration (輸入/輸出)

當用作輸入選項(在 -i 之前)時,限制從輸入檔案讀取的資料 duration 長度。

當用作輸出選項(在輸出網址之前)時,在輸出持續時間達到 duration 後停止寫入輸出。

duration 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

-to 和 -t 是互斥的,-t 具有優先權。

-to position (輸入/輸出)

position 停止寫入輸出或讀取輸入。position 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

-to 和 -t 是互斥的,-t 具有優先權。

-fs limit_size (輸出)

設定檔案大小限制,以位元組表示。超過限制後,不會再寫入任何位元組區塊。輸出檔案的大小會略微超過請求的檔案大小。

-ss position (輸入/輸出)

當用作輸入選項(在 -i 之前)時,在此輸入檔案中搜尋到 position。請注意,在大多數格式中,無法精確搜尋,因此 ffmpeg 將搜尋到 position 之前的最接近搜尋點。當進行轉碼且啟用 -accurate_seek(預設值)時,搜尋點和 position 之間的額外區段將被解碼並丟棄。當執行串流複製或使用 -noaccurate_seek 時,它將被保留。

當用作輸出選項(在輸出網址之前)時,解碼但丟棄輸入,直到時間戳記達到 position

position 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

-sseof position (輸入)

類似於 -ss 選項,但相對於「檔案結尾」(end of file)。也就是說,負值在檔案中較早,0 在 EOF。

-isync input_index (輸入)

將輸入指定為同步來源。

這將取得目標輸入和參考輸入的開始時間之間的差異,並將目標檔案的時間戳記偏移該差異。兩個輸入的來源時間戳記應來自相同的時鐘來源,以獲得預期的結果。如果設定了 copyts,則也必須設定 start_at_zero。如果任一輸入沒有開始時間戳記,則不會進行同步調整。

可接受的值是參考有效 ffmpeg 輸入索引的值。如果同步參考是目標索引本身或 -1,則不會對目標時間戳記進行調整。同步參考本身不得與任何其他輸入同步。

預設值為 -1

-itsoffset offset (輸入)

設定輸入時間偏移。

offset 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

偏移會加到輸入檔案的時間戳記。指定正偏移表示對應的串流會延遲 offset 中指定的時間長度。

-itsscale scale (輸入,每個串流)

重新調整輸入時間戳記。scale 應為浮點數。

-timestamp date (輸出)

設定容器中的錄製時間戳記。

date 必須是日期規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的日期章節

-metadata[:metadata_specifier] key=value (輸出,每個中繼資料)

設定中繼資料鍵/值對。

可以給定選用的 metadata_specifier,以在串流、章節或節目上設定中繼資料。請參閱 -map_metadata 文件以了解詳細資訊。

此選項會覆寫使用 -map_metadata 設定的中繼資料。也可以透過使用空值來刪除中繼資料。

例如,在輸出檔案中設定標題

ffmpeg -i in.avi -metadata title="my title" out.flv

設定第一個音訊串流的語言

ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
-disposition[:stream_specifier] value (輸出,每個串流)

設定串流的 disposition 旗標。

預設值:預設情況下,所有 disposition 旗標都從輸入串流複製,除非此選項套用的輸出串流是由複雜的濾鏡圖 (filtergraph) 提供 - 在這種情況下,預設不會設定任何 disposition 旗標。

value 是一系列 disposition 旗標,以 '+' 或 '-' 分隔。'+' 前綴會新增給定的 disposition,'-' 前綴會移除它。如果第一個旗標也以 '+' 或 '-' 為前綴,則產生的 disposition 是預設值,並由 value 更新。如果第一個旗標沒有前綴,則產生的 disposition 為 value。也可以透過將其設定為 0 來清除 disposition。

如果沒有為輸出檔案指定 -disposition 選項,當輸出檔案中有多個相同類型的串流,且該類型沒有串流已標記為預設時,ffmpeg 將自動在每種類型的第一個串流上設定 'default' disposition 旗標。

-dispositions 選項列出已知的 disposition 旗標。

例如,將第二個音訊串流設為預設串流

ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv

將第二個字幕串流設為預設串流,並從第一個字幕串流中移除預設 disposition

ffmpeg -i in.mkv -c copy -disposition:s:0 0 -disposition:s:1 default out.mkv

新增嵌入式封面/縮圖

ffmpeg -i in.mp4 -i IMAGE -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4

從第一個音訊串流新增 'original' 並移除 'comment' disposition 旗標,而不移除其其他 disposition 旗標

ffmpeg -i in.mkv -c copy -disposition:a:0 +original-comment out.mkv

從第一個音訊串流移除 'original' 並新增 'comment' disposition 旗標,而不移除其其他 disposition 旗標

ffmpeg -i in.mkv -c copy -disposition:a:0 -original+comment out.mkv

僅在第一個音訊串流上設定 'original' 和 'comment' disposition 旗標(並移除其其他 disposition 旗標)

ffmpeg -i in.mkv -c copy -disposition:a:0 original+comment out.mkv

從第一個音訊串流中移除所有 disposition 旗標

ffmpeg -i in.mkv -c copy -disposition:a:0 0 out.mkv

並非所有多工器都支援嵌入式縮圖,而支援的多工器也僅支援少數格式,例如 JPEG 或 PNG。

-program [title=title:][program_num=program_num:]st=stream[:st=stream...] (輸出)

建立具有指定 titleprogram_num 的節目,並將指定的 stream 新增至其中。

-stream_group [map=input_file_id=stream_group][type=type:]st=stream[:st=stream][:stg=stream_group][:id=stream_group_id...] (輸出)

建立指定 typestream_group_id 的串流群組,或透過 map 映射輸入群組,將指定的 stream 和/或先前定義的 stream_group 新增至其中。

type 可以是以下之一

iamf_audio_element

將屬於相同 IAMF 音訊元素 (Audio Element) 的 stream 分組

對於此群組 type,可以使用以下選項

audio_element_type

音訊元素類型。支援以下值

channel

可擴展聲道音訊表示法

scene

Ambisonics 表示法

demixing

用於重建可擴展聲道音訊表示法的解混音 (Demixing) 資訊。此選項必須以 ',' 與其餘部分分隔,並採用以下鍵=值選項

parameter_id

訊框 (frame) 中的識別碼參數區塊可能參考

dmixp_mode

預定義的解混音參數組合

recon_gain

用於重建可擴展聲道音訊表示法的重建增益 (Recon gain) 資訊。此選項必須以 ',' 與其餘部分分隔,並採用以下鍵=值選項

parameter_id

訊框 (frame) 中的識別碼參數區塊可能參考

layer

定義音訊元素中聲道佈局的圖層 (Layer)。此選項必須以 ',' 與其餘部分分隔。可以定義多個以 ',' 分隔的條目,且至少必須設定一個。

它採用以下以 ":" 分隔的鍵=值選項

ch_layout

圖層的聲道佈局

flags

可以使用以下旗標

recon_gain

是否發出訊號表示 recon_gain 是否作為中繼資料存在於訊框內的參數區塊中

output_gain
output_gain_flags

output_gain 適用於哪些聲道。可以使用以下旗標

FL
FR
BL
BR
TFL
TFR
ambisonics_mode

ambisonics 模式。如果 audio_element_type 設定為 channel,則此選項無效。

支援以下值

mono

每個 ambisonics 聲道都編碼為群組中的個別單聲道串流

default_w

預設權重值

iamf_mix_presentation

將屬於所有 IAMF 音訊元素 (Audio Element) 的相同 IAMF 混音呈現 (Mix Presentation) 參考的 stream 分組

對於此群組 type,可以使用以下選項

submix

混音呈現 (Mix Presentation) 內的子混音 (Sub-mix)。此選項必須以 ',' 與其餘部分分隔。可以定義多個以 ',' 分隔的條目,且至少必須設定一個。

它採用以下以 ":" 分隔的鍵=值選項

parameter_id

訊框中的識別碼參數區塊可能參考,用於後處理混合音訊訊號,以產生用於播放的音訊訊號

parameter_rate

參考此 parameter_id 的訊框中參數區塊的取樣率持續時間欄位表示為

default_mix_gain

當給定訊框沒有與 parameter_id 相同的參數區塊時,要套用的預設混音增益值

element

參考此混音呈現 (Mix Presentation) 中使用的音訊元素 (Audio Element),以產生用於播放的最終輸出音訊訊號。此選項必須以 '|' 與其餘部分分隔。可以定義多個以 '|' 分隔的條目,且至少必須設定一個。

它採用以下以 ":" 分隔的鍵=值選項

stg

此子混音 (Sub-mix) 參考的音訊元素 (Audio Element) 的 stream_group_id

parameter_id

訊框中的識別碼參數區塊可能參考,用於在與其他處理過的音訊元素 (Audio Element) 相加之前,對參考和呈現的音訊元素 (Audio Element) 應用任何處理

parameter_rate

參考此 parameter_id 的訊框中參數區塊的取樣率持續時間欄位表示為

default_mix_gain

當給定訊框沒有與 parameter_id 相同的參數區塊時,要套用的預設混音增益值

annotations

描述子混音元素 (Sub-mix element) 的鍵=值字串,其中 "key" 是符合 BCP-47 的字串,用於指定 "value" 字串的語言。"key" 必須與混音的 annotations 中的 "key" 相同

headphones_rendering_mode

指示當在耳機上播放時,輸入的基於聲道的音訊元素 (Audio Element) 是呈現給立體聲揚聲器還是使用雙耳渲染器進行空間化。如果參考的音訊元素 (Audio Element) 的 audio_element_type 設定為 channel,則此選項無效。

支援以下值

stereo
binaural
layout

指定此子混音 (Sub-mix) 上測量響度資訊的佈局。此選項必須以 '|' 與其餘部分分隔。可以定義多個以 '|' 分隔的條目,且至少必須設定一個。

它採用以下以 ":" 分隔的鍵=值選項

layout_type
loudspeakers

佈局遵循 ITU-2051-3 的揚聲器聲音系統慣例。

binaural

佈局為雙耳。

sound_system

聲道佈局符合 ITU-2051-3 的聲音系統 A 到 J,外加 7.1.2 和 3.1.2。如果 layout_type 設定為 binaural,則此選項無效。

integrated_loudness

程式整合響度資訊,如 ITU-1770-4 中所定義。

digital_peak

音訊訊號的數位(取樣)峰值,如 ITU-1770-4 中所定義。

true_peak

音訊訊號的真峰值,如 ITU-1770-4 中所定義。

dialog_anchored_loudness

對白響度資訊,如 ITU-1770-4 中所定義。

album_anchored_loudness

專輯響度資訊,如 ITU-1770-4 中所定義。

annotations

描述混音的鍵=值字串字串,其中 "key" 是符合 BCP-47 的字串,用於指定 "value" 字串的語言。"key" 必須與所有子混音元素 (Sub-mix element) 的 annotations 中的 "key" 相同

例如,從多個 WAV 輸入檔案建立可擴展的 5.1 IAMF 檔案

ffmpeg -i front.wav -i back.wav -i center.wav -i lfe.wav
-map 0:0 -map 1:0 -map 2:0 -map 3:0 -c:a opus
-stream_group type=iamf_audio_element:id=1:st=0:st=1:st=2:st=3,
demixing=parameter_id=998,
recon_gain=parameter_id=101,
layer=ch_layout=stereo,
layer=ch_layout=5.1,
-stream_group type=iamf_mix_presentation:id=2:stg=0:annotations=en-us=Mix_Presentation,
submix=parameter_id=100:parameter_rate=48000|element=stg=0:parameter_id=100:annotations=en-us=Scalable_Submix|layout=sound_system=stereo|layout=sound_system=5.1
-streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 output.iamf

將具有四個串流的輸入 IAMF 檔案中的兩個串流群組(音訊元素 (Audio Element) 和混音呈現 (Mix Presentation))複製到 mp4 輸出中

ffmpeg -i input.iamf -c:a copy -stream_group map=0=0:st=0:st=1:st=2:st=3 -stream_group map=0=1:stg=0
-streamid 0:0 -streamid 1:1 -streamid 2:2 -streamid 3:3 output.mp4
-target type (輸出)

指定目標檔案類型 (vcd, svcd, dvd, dv, dv50)。type 可以加上 pal-ntsc-film- 前綴,以使用對應的標準。然後會自動設定所有格式選項(位元率、編解碼器、緩衝區大小)。您可以直接輸入

ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

儘管如此,您仍然可以指定其他選項,只要您知道它們與標準沒有衝突,例如

ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg

每個目標設定的參數如下。

VCD

pal:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x288 -r 25
-codec:v mpeg1video -g 15 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k

ntsc:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x240 -r 30000/1001
-codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k

film:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x240 -r 24000/1001
-codec:v mpeg1video -g 18 -b:v 1150k -maxrate:v 1150k -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k

SVCD

pal:
-f svcd -packetsize 2324
-s 480x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k

ntsc:
-f svcd -packetsize 2324
-s 480x480 -pix_fmt yuv420p -r 30000/1001
-codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k

film:
-f svcd -packetsize 2324
-s 480x480 -pix_fmt yuv420p -r 24000/1001
-codec:v mpeg2video -g 18 -b:v 2040k -maxrate:v 2516k -minrate:v 0 -bufsize:v 1835008 -scan_offset 1
-ar 44100
-codec:a mp2 -b:a 224k

DVD

pal:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k

ntsc:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x480 -pix_fmt yuv420p -r 30000/1001
-codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k

film:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x480 -pix_fmt yuv420p -r 24000/1001
-codec:v mpeg2video -g 18 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k

DV

pal:
-f dv
-s 720x576 -pix_fmt yuv420p -r 25
-ar 48000 -ac 2

ntsc:
-f dv
-s 720x480 -pix_fmt yuv411p -r 30000/1001
-ar 48000 -ac 2

film:
-f dv
-s 720x480 -pix_fmt yuv411p -r 24000/1001
-ar 48000 -ac 2

dv50 目標與 dv 目標相同,不同之處在於為所有三個標準設定的像素格式為 yuv422p

上述參數的任何使用者設定值都將覆寫目標預設值。在這種情況下,輸出可能不符合目標標準。

-dn (輸入/輸出)

作為輸入選項,阻止檔案的所有資料串流被過濾或自動選擇或映射到任何輸出。請參閱 -discard 選項以個別停用串流。

作為輸出選項,停用資料錄製,即自動選擇或映射任何資料串流。如需完全手動控制,請參閱 -map 選項。

-dframes number (輸出)

設定要輸出的資料訊框 (frame) 數量。這是 -frames:d 的過時別名,您應該改用它。

-frames[:stream_specifier] framecount (輸出,每個串流)

framecount 個訊框 (frame) 後停止寫入串流。

-q[:stream_specifier] q (輸出,每個串流)
-qscale[:stream_specifier] q (輸出,每個串流)

使用固定品質比例 (VBR)。q/qscale 的含義取決於編解碼器。如果 qscale 在沒有 stream_specifier 的情況下使用,則它僅適用於視訊串流,這是為了保持與先前行為的相容性,並且當沒有使用 stream_specifier 時,為兩個不同的編解碼器(即音訊和視訊)指定相同的編解碼器特定值通常不是預期的行為。

-filter[:stream_specifier] filtergraph (輸出,每個串流)

建立由 filtergraph 指定的濾鏡圖 (filtergraph),並使用它來過濾串流。

濾鏡圖表 是用於描述要套用至串流的濾鏡圖表,且必須具有單一輸入和單一輸出,且輸入和輸出的串流類型必須相同。在濾鏡圖表中,輸入會與標籤 in 關聯,而輸出會與標籤 out 關聯。有關濾鏡圖表語法的更多資訊,請參閱 ffmpeg-filters 手冊。

如果您想要建立具有多個輸入和/或輸出的濾鏡圖表,請參閱 -filter_complex 選項

-reinit_filter[:stream_specifier] integer (input,per-stream)

此布林選項決定當輸入影格參數在串流中途變更時,饋送此串流的濾鏡圖表是否會重新初始化。此選項預設為啟用,因為大多數視訊和所有音訊濾鏡都無法處理輸入影格屬性的變動。重新初始化後,現有的濾鏡狀態會遺失,例如某些濾鏡中可用的影格計數 n 參考。重新初始化時緩衝的任何影格都會遺失。觸發重新初始化的屬性,對於視訊而言是影格解析度或像素格式;對於音訊而言是取樣格式、取樣率、聲道數或聲道配置。

-filter_threads nb_threads (global)

定義用於處理濾鏡管線的執行緒數量。每個管線將產生一個執行緒池,其中包含如此多個可用於平行處理的執行緒。預設值為可用 CPU 的數量。

-pre[:stream_specifier] preset_name (output,per-stream)

指定符合串流的預設集。

-stats (global)

以 "info" 層級日誌(請參閱 -loglevel)記錄編碼進度/統計資訊。預設為啟用,若要明確停用,您需要指定 -nostats

-stats_period time (global)

設定更新編碼進度/統計資訊的週期。預設值為 0.5 秒。

-progress url (global)

將程式友善的進度資訊傳送到 url

進度資訊會定期寫入,並在編碼過程結束時寫入。它由「key=value」行組成。key 僅包含字母數字字元。進度資訊序列的最後一個鍵始終為 "progress",其值為 "continue" 或 "end"。

更新週期是使用 -stats_period 設定的。

例如,將進度資訊記錄到 stdout

ffmpeg -progress pipe:1 -i in.mkv out.mkv
-stdin

啟用標準輸入的互動。預設為啟用,除非標準輸入用作輸入。若要明確停用互動,您需要指定 -nostdin

停用標準輸入的互動很有用,例如,如果 ffmpeg 位於背景處理程序群組中。使用 ffmpeg ... < /dev/null 可以大致達到相同的結果,但它需要 shell。

-debug_ts (global)

印出時間戳記/延遲資訊。預設為關閉。此選項主要用於測試和除錯目的,且輸出格式可能因版本而異,因此可攜式腳本不應使用它。

另請參閱選項 -fdebug ts

-attach filename (output)

將附件新增到輸出檔案。少數格式支援此功能,例如 Matroska,用於渲染字幕的字型。附件實作為特定類型的串流,因此此選項將在檔案中新增一個新的串流。然後可以像平常一樣在此串流上使用每個串流選項。使用此選項建立的附件串流將在所有其他串流(即使用 -map 或自動映射建立的串流)之後建立。

請注意,對於 Matroska,您還必須設定 mimetype metadata 標籤

ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv

(假設附件串流將是輸出檔案中的第三個)。

-dump_attachment[:stream_specifier] filename (input,per-stream)

將符合的附件串流提取到名為 filename 的檔案中。如果 filename 為空,則將使用 filename metadata 標籤的值。

例如,將第一個附件提取到名為 'out.ttf' 的檔案

ffmpeg -dump_attachment:t:0 out.ttf -i INPUT

將所有附件提取到由 filename 標籤決定的檔案

ffmpeg -dump_attachment:t "" -i INPUT

技術說明 – 附件實作為編碼解碼器額外資料,因此此選項實際上可用於從任何串流中提取額外資料,而不僅僅是附件。

5.5 視訊選項

-vframes number (output)

設定要輸出的視訊影格數量。這是 -frames:v 的過時別名,您應該改用它。

-r[:stream_specifier] fps (input/output,per-stream)

設定影格率(Hz 值、分數或縮寫)。

作為輸入選項,忽略檔案中儲存的任何時間戳記,並產生時間戳記,假設恆定影格率為 fps。這與用於某些輸入格式(例如 image2 或 v4l2)的 -framerate 選項不同(在舊版本的 FFmpeg 中曾經相同)。如有疑問,請使用 -framerate 而不是輸入選項 -r

作為輸出選項

視訊編碼

在編碼影格之前複製或丟棄影格,以實現恆定的輸出影格率 fps

視訊串流複製

告知 muxer fps 是串流影格率。在這種情況下,不會丟棄或複製任何資料。如果 fps 與封包時間戳記決定的實際串流影格率不符,則可能會產生無效的檔案。另請參閱 setts 位元串流濾鏡。

-fpsmax[:stream_specifier] fps (output,per-stream)

設定最大影格率(Hz 值、分數或縮寫)。

當輸出影格率自動設定且高於此值時,限制輸出影格率。在批次處理或輸入影格率被錯誤地偵測為非常高時很有用。它不能與 -r 一起設定。在串流複製期間會忽略它。

-s[:stream_specifier] size (input/output,per-stream)

設定影格大小。

作為輸入選項,這是 video_size 私有選項的快捷方式,某些解多工器會識別它,這些解多工器的影格大小要么未儲存在檔案中,要么是可配置的 – 例如原始視訊或視訊擷取器。

作為輸出選項,這會將 scale 視訊濾鏡插入到相應濾鏡圖表的末尾。請直接使用 scale 濾鏡將其插入到開頭或其他位置。

格式為「wxh」(預設 - 與來源相同)。

-aspect[:stream_specifier] aspect (output,per-stream)

設定由 aspect 指定的視訊顯示長寬比。

aspect 可以是浮點數字串,或 num:den 形式的字串,其中 numden 是長寬比的分子和分母。例如 "4:3"、"16:9"、"1.3333" 和 "1.7777" 是有效的參數值。

如果與 -vcodec copy 一起使用,它將影響儲存在容器層級的長寬比,但不會影響儲存在編碼影格中的長寬比(如果存在)。

-display_rotation[:stream_specifier] rotation (input,per-stream)

設定視訊旋轉 metadata。

rotation 是一個十進制數字,指定視訊在顯示之前應逆時針旋轉的度數。

此選項會覆寫檔案中儲存的旋轉/顯示轉換 metadata(如果有的話)。當視訊正在轉碼(而不是複製)且啟用 -autorotate 時,視訊將在濾鏡階段旋轉。否則,如果 muxer 支援,metadata 將會寫入到輸出檔案中。

如果給定了 -display_hflip 和/或 -display_vflip 選項,則它們會在由此選項指定的旋轉之後套用。

-display_hflip[:stream_specifier] (input,per-stream)

設定在顯示時圖像是否應水平翻轉。

有關更多詳細資訊,請參閱 -display_rotation 選項。

-display_vflip[:stream_specifier] (input,per-stream)

設定在顯示時圖像是否應垂直翻轉。

有關更多詳細資訊,請參閱 -display_rotation 選項。

-vn (input/output)

作為輸入選項,阻止檔案的所有視訊串流被濾鏡處理或被自動選擇或映射以進行任何輸出。請參閱 -discard 選項以個別停用串流。

作為輸出選項,停用視訊錄製,即自動選擇或映射任何視訊串流。如需完全手動控制,請參閱 -map 選項。

-vcodec codec (output)

設定視訊編碼解碼器。這是 -codec:v 的別名。

-pass[:stream_specifier] n (output,per-stream)

選擇 pass 數(1 或 2)。它用於執行雙 pass 視訊編碼。視訊的統計資訊在第一 pass 中記錄到日誌檔案中(另請參閱選項 -passlogfile),在第二 pass 中,該日誌檔案用於以精確要求的位元率產生視訊。在 pass 1 中,您可以停用音訊並將輸出設定為 null,Windows 和 Unix 的範例

ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
-passlogfile[:stream_specifier] prefix (output,per-stream)

將雙 pass 日誌檔名前綴設定為 prefix,預設檔名前綴為 “ffmpeg2pass”。完整的檔名將為 PREFIX-N.log,其中 N 是特定於輸出串流的數字

-vf filtergraph (output)

建立由 filtergraph 指定的濾鏡圖 (filtergraph),並使用它來過濾串流。

這是 -filter:v 的別名,請參閱 -filter 選項

-autorotate

根據檔案 metadata 自動旋轉視訊。預設為啟用,請使用 -noautorotate 停用它。

-autoscale

根據第一影格的解析度自動縮放視訊。預設為啟用,請使用 -noautoscale 停用它。當停用自動縮放功能時,濾鏡圖表的所有輸出影格可能不在相同的解析度中,並且可能不適用於某些編碼器/muxer。因此,不建議停用它,除非您真的知道自己在做什麼。停用自動縮放功能,風險自負。

5.6 進階視訊選項

-pix_fmt[:stream_specifier] format (input/output,per-stream)

設定像素格式。使用 -pix_fmts 顯示所有支援的像素格式。如果無法選取選定的像素格式,ffmpeg 將印出警告並選取編碼器支援的最佳像素格式。如果 pix_fmt+ 為前綴,如果無法選取要求的像素格式,ffmpeg 將以錯誤退出,並且濾鏡圖表內的自動轉換將被停用。如果 pix_fmt 是單個 +,ffmpeg 將選取與輸入(或圖表輸出)相同的像素格式,並且自動轉換將被停用。

-sws_flags flags (input/output)

設定 libswscale 函式庫的預設 flags。這些 flags 由自動插入的 scale 濾鏡和簡單濾鏡圖表中的濾鏡使用,如果在濾鏡圖表定義中未被覆寫。

有關 scaler 選項的列表,請參閱 (ffmpeg-scaler)ffmpeg-scaler 手冊

-rc_override[:stream_specifier] override (output,per-stream)

特定間隔的速率控制覆寫,格式為以斜線分隔的 "int,int,int" 列表。前兩個值是開始和結束影格編號,最後一個值是要使用的量化器(如果為正數),或品質因數(如果為負數)。

-vstats

將視訊編碼統計資訊傾印到 vstats_HHMMSS.log。有關格式描述,請參閱 vstats 檔案格式 章節。

-vstats_file file

將視訊編碼統計資訊傾印到 file。有關格式描述,請參閱 vstats 檔案格式 章節。

-vstats_version file

指定要使用的 vstats 格式版本。預設值為 2。有關格式描述,請參閱 vstats 檔案格式 章節。

-vtag fourcc/tag (output)

強制視訊標籤/fourcc。這是 -tag:v 的別名。

-force_key_frames[:stream_specifier] time[,time...] (output,per-stream)
-force_key_frames[:stream_specifier] expr:expr (output,per-stream)
-force_key_frames[:stream_specifier] source (output,per-stream)

force_key_frames 可以接受以下形式的參數

time[,time...]

如果參數由時間戳記組成,ffmpeg 將根據編碼器時間基底將指定的時間四捨五入到最接近的輸出時間戳記,並在第一個時間戳記等於或大於計算出的時間戳記的影格處強制關鍵影格。請注意,如果編碼器時間基底太粗糙,則關鍵影格可能會被強制在時間戳記低於指定時間的影格上。預設編碼器時間基底是輸出影格率的倒數,但可以通過 -enc_time_base 另行設定。

如果其中一個時間是 "chapters[delta]",它將擴展為檔案中所有章節的開始時間,並偏移 delta(以秒為單位表示的時間)。此選項可用於確保在章節標記或輸出檔案中的任何其他指定位置存在搜尋點。

例如,要在 5 分鐘處插入關鍵影格,加上在每個章節開始前 0.1 秒的關鍵影格

-force_key_frames 0:05:00,chapters-0.1
expr:expr

如果參數以 expr: 為前綴,則字串 expr 會被解釋為表達式,並為每個影格評估。如果評估結果為非零,則會強制關鍵影格。

expr 中的表達式可以包含以下常數

n

目前處理的影格編號,從 0 開始

n_forced

強制影格的數量

prev_forced_n

前一個強制影格的編號,當尚未強制關鍵影格時,為 NAN

prev_forced_t

前一個強制影格的時間,當尚未強制關鍵影格時,為 NAN

t

目前處理的影格的時間

例如,要每 5 秒強制一個關鍵影格,您可以指定

-force_key_frames expr:gte(t,n_forced*5)

從第 13 秒開始,強制關鍵影格在上次強制關鍵影格後的 5 秒處

-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
source

如果參數是 source,則當 ffmpeg 編碼的當前影格在其來源中被標記為關鍵影格時,ffmpeg 將強制關鍵影格。如果必須捨棄這個特定的來源影格,則強制下一個可用的影格變成關鍵影格。

請注意,強制過多的關鍵影格對於某些編碼器的前瞻演算法非常有害:使用固定 GOP 選項或類似選項會更有效率。

-apply_cropping[:stream_specifier] source (輸入,每串流)

根據檔案 metadata,在解碼後自動裁切影片。預設值為 all

none (0)

不要套用任何裁切 metadata。

all (1)

套用編碼器和容器層級裁切。這是預設模式。

codec (2)

套用編碼器層級裁切。

container (3)

套用容器層級裁切。

-copyinkf[:stream_specifier] (輸出,每串流)

當執行串流複製時,也複製在開頭找到的非關鍵影格。

-init_hw_device type[=name][:device[,key=value...]]

初始化類型為 type 且名為 name 的新硬體裝置,使用給定的裝置參數。如果未指定名稱,則會收到預設名稱,格式為「type%d」。

device 的含義和後續引數取決於裝置類型

cuda

device 是 CUDA 裝置的編號。

以下選項被識別

primary_ctx

如果設定為 1,則使用主要裝置上下文,而不是建立新的上下文。

範例

-init_hw_device cuda:1

選擇系統上的第二個裝置。

-init_hw_device cuda:0,primary_ctx=1

選擇第一個裝置並使用主要裝置上下文。

dxva2

device 是 Direct3D 9 顯示卡的編號。

d3d11va

device 是 Direct3D 11 顯示卡的編號。如果未指定,它將嘗試使用預設的 Direct3D 11 顯示卡或第一個硬體 VendorId 由 ‘vendor_id’ 指定的 Direct3D 11 顯示卡。

範例

-init_hw_device d3d11va

在預設的 Direct3D 11 顯示卡上建立 d3d11va 裝置。

-init_hw_device d3d11va:1

在索引 1 指定的 Direct3D 11 顯示卡上建立 d3d11va 裝置。

-init_hw_device d3d11va:,vendor_id=0x8086

在硬體 VendorId 為 0x8086 的第一個 Direct3D 11 顯示卡上建立 d3d11va 裝置。

vaapi

device 可以是 X11 顯示名稱、DRM 渲染節點或 DirectX 轉接器索引。如果未指定,它將嘗試開啟預設的 X11 顯示器 ($DISPLAY),然後開啟第一個 DRM 渲染節點 (/dev/dri/renderD128),或 Windows 上的預設 DirectX 轉接器。

以下選項被識別

kernel_driver

當未指定 device 時,使用此選項指定與所需裝置關聯的核心驅動程式名稱。此選項僅在啟用硬體加速方法 drmvaapi 時可用。

vendor_id

當未指定 devicekernel_driver 時,使用此選項指定與所需裝置關聯的供應商 ID。此選項僅在啟用硬體加速方法 drmvaapi 且未指定 kernel_driver 時可用。

範例

-init_hw_device vaapi

在預設裝置上建立 vaapi 裝置。

-init_hw_device vaapi:/dev/dri/renderD129

在 DRM 渲染節點 /dev/dri/renderD129 上建立 vaapi 裝置。

-init_hw_device vaapi:1

在 DirectX 轉接器 1 上建立 vaapi 裝置。

-init_hw_device vaapi:,kernel_driver=i915

在與核心驅動程式 ‘i915’ 關聯的裝置上建立 vaapi 裝置。

-init_hw_device vaapi:,vendor_id=0x8086

在與供應商 ID ‘0x8086’ 關聯的裝置上建立 vaapi 裝置。

vdpau

device 是 X11 顯示名稱。如果未指定,它將嘗試開啟預設的 X11 顯示器 ($DISPLAY)。

qsv

device 在 ‘MFX_IMPL_*’ 中選擇一個值。允許的值為

auto
sw
hw
auto_any
hw_any
hw2
hw3
hw4

如果未指定,則使用 ‘auto_any’。(請注意,對於 QSV,透過建立平台適用的子裝置(‘dxva2’ 或 ‘d3d11va’ 或 ‘vaapi’),然後從該裝置衍生 QSV 裝置,可能更容易達到所需的結果。)

以下選項被識別

child_device

在 Linux 上指定 DRM 渲染節點,或在 Windows 上指定 DirectX 轉接器。

child_device_type

選擇平台適用的子裝置類型。在 Windows 上,如果在設定時指定了 --enable-libvpl,則 ‘d3d11va’ 用作預設子裝置類型;如果在設定時指定了 --enable-libmfx,則 ‘dxva2’ 用作預設子裝置類型。在 Linux 上,使用者只能使用 ‘vaapi’ 作為子裝置類型。

範例

-init_hw_device qsv:hw,child_device=/dev/dri/renderD129

在 DRM 渲染節點 /dev/dri/renderD129 上建立具有 ‘MFX_IMPL_HARDWARE’ 的 QSV 裝置。

-init_hw_device qsv:hw,child_device=1

在 DirectX 轉接器 1 上建立具有 ‘MFX_IMPL_HARDWARE’ 的 QSV 裝置。

-init_hw_device qsv:hw,child_device_type=d3d11va

選擇類型為 ‘d3d11va’ 的 GPU 子裝置,並建立具有 ‘MFX_IMPL_HARDWARE’ 的 QSV 裝置。

-init_hw_device qsv:hw,child_device_type=dxva2

選擇類型為 ‘dxva2’ 的 GPU 子裝置,並建立具有 ‘MFX_IMPL_HARDWARE’ 的 QSV 裝置。

-init_hw_device qsv:hw,child_device=1,child_device_type=d3d11va

在 DirectX 轉接器 1 上建立具有 ‘MFX_IMPL_HARDWARE’ 且子裝置類型為 ‘d3d11va’ 的 QSV 裝置。

-init_hw_device vaapi=va:/dev/dri/renderD129 -init_hw_device qsv=hw1@va

/dev/dri/renderD129 上建立名為 ‘va’ 的 VAAPI 裝置,然後從裝置 ‘va’ 衍生名為 ‘hw1’ 的 QSV 裝置。

opencl

device平台索引.裝置索引 的形式選擇平台和裝置。

也可以使用鍵值對來篩選裝置集,以僅尋找符合特定平台或裝置字串的裝置。

可用作篩選器的字串為

platform_profile
platform_version
platform_name
platform_vendor
platform_extensions
device_name
device_vendor
driver_version
device_version
device_profile
device_extensions
device_type

索引和篩選器必須共同唯一地選擇一個裝置。

範例

-init_hw_device opencl:0.1

選擇第一個平台上的第二個裝置。

-init_hw_device opencl:,device_name=Foo9000

選擇名稱包含字串 Foo9000 的裝置。

-init_hw_device opencl:1,device_type=gpu,device_extensions=cl_khr_fp16

選擇第二個平台上支援 cl_khr_fp16 擴充功能的 GPU 裝置。

vulkan

如果 device 是整數,它會依其在系統相關的裝置列表中的索引選擇裝置。如果 device 是任何其他字串,它會選擇名稱包含該字串作為子字串的第一個裝置。

以下選項被識別

debug

如果設定為 1,則啟用驗證層(如果已安裝)。

linear_images

如果設定為 1,則 hwcontext 分配的影像將是線性的且可本地映射的。

instance_extensions

要啟用的其他實例擴充功能,以加號分隔的列表。

device_extensions

要啟用的其他裝置擴充功能,以加號分隔的列表。

範例

-init_hw_device vulkan:1

選擇系統上的第二個裝置。

-init_hw_device vulkan:RADV

選擇名稱包含字串 RADV 的第一個裝置。

-init_hw_device vulkan:0,instance_extensions=VK_KHR_wayland_surface+VK_KHR_xcb_surface

選擇第一個裝置並啟用 Wayland 和 XCB 實例擴充功能。

-init_hw_device type[=name]@source

初始化類型為 type 且名為 name 的新硬體裝置,從名為 source 的現有裝置衍生而來。

-init_hw_device list

列出此 ffmpeg 建置版本中支援的所有硬體裝置類型。

-filter_hw_device name

將名為 name 的硬體裝置傳遞給任何濾鏡圖中的所有濾鏡。這可用於設定要使用 hwupload 濾鏡上傳到的裝置,或要使用 hwmap 濾鏡映射到的裝置。其他濾鏡在需要硬體裝置時也可能會使用此參數。請注意,這通常僅在輸入還不是硬體影格時才需要 - 當輸入已經是硬體影格時,濾鏡將從它們接收作為輸入的影格的上下文中衍生出它們所需的裝置。

這是一個全域設定,因此所有濾鏡都將接收相同的裝置。

-hwaccel[:stream_specifier] hwaccel (輸入,每串流)

使用硬體加速來解碼符合的串流。 hwaccel 的允許值為

none

不使用任何硬體加速(預設值)。

auto

auto

vdpau

自動選擇硬體加速方法。

dxva2

vdpau

d3d11va

使用 VDPAU(Unix 的影片解碼和呈現 API)硬體加速。

vaapi

dxva2

qsv

使用 DXVA2(DirectX 影片加速)硬體加速。

d3d11va

使用 D3D11VA(DirectX 影片加速)硬體加速。

vaapi

使用 VAAPI(影片加速 API)硬體加速。

qsv

使用 Intel QuickSync Video 加速進行影片轉碼。

與大多數其他值不同,此選項不啟用加速解碼(當選擇 qsv 解碼器時會自動使用),而是加速轉碼,而無需將影格複製到系統記憶體中。

為了使其正常運作,解碼器和編碼器都必須支援 QSV 加速,並且不得使用任何濾鏡。

如果選定的 hwaccel 不可用或不被選擇的解碼器支援,則此選項無效。

請注意,大多數加速方法旨在用於播放,並且在現代 CPU 上不會比軟體解碼更快。此外,ffmpeg 通常需要將解碼後的影格從 GPU 記憶體複製到系統記憶體中,從而導致進一步的效能損失。因此,此選項主要用於測試。

-hwaccel_device[:stream_specifier] hwaccel_device (輸入,每串流)

選擇用於硬體加速的裝置。

僅當也指定了 -hwaccel 選項時,此選項才有意義。它可以透過名稱引用使用 -init_hw_device 建立的現有裝置,或者它可以建立一個新裝置,就像在之前立即呼叫了 ‘-init_hw_devicetype:hwaccel_device 一樣。

5.7 音訊選項

-hwaccels

列出此 ffmpeg 建置版本中啟用的所有硬體加速元件。實際的執行時間可用性取決於硬體及其安裝的合適驅動程式。

-fix_sub_duration_heartbeat[:stream_specifier]

根據隨機存取封包的接收情況,設定特定的輸出影片串流作為心跳串流,根據該串流拆分並推送目前正在進行的字幕。

這降低了結束封包或後續字幕尚未收到的字幕的延遲。作為缺點,這很可能會導致字幕事件重複以涵蓋完整持續時間,因此當處理字幕事件傳遞到輸出的延遲不相關的使用案例時,不應使用此選項。

需要為相關的輸入字幕串流設定 -fix_sub_duration 才能使其生效,並且輸入字幕串流必須直接映射到心跳串流所在的相同輸出中。

-aframes number (輸出)

設定要輸出的音訊影格數。這是 -frames:a 的過時別名,您應該改用它。

-ar[:stream_specifier] freq (輸入/輸出,每串流)

設定音訊採樣頻率。對於輸出串流,預設設定為對應輸入串流的頻率。對於輸入串流,此選項僅對音訊擷取裝置和原始解多工器有意義,並且映射到對應的解多工器選項。

-aq q (輸出)

設定音訊品質(編碼器特定的,VBR)。這是 -q:a 的別名。

-ac[:stream_specifier] channels (輸入/輸出,每串流)

設定音訊聲道數。對於輸出串流,預設設定為輸入音訊聲道數。對於輸入串流,此選項僅對音訊擷取裝置和原始解多工器有意義,並且映射到對應的解多工器選項。

-an (輸入/輸出)

作為輸入選項,阻止檔案的所有音訊串流被濾鏡處理或自動選擇或映射到任何輸出。請參閱 -discard 選項以單獨停用串流。

建立由 filtergraph 指定的濾鏡圖 (filtergraph),並使用它來過濾串流。

作為輸出選項,停用音訊錄製,即自動選擇或映射任何音訊串流。如需完全手動控制,請參閱 -map 選項。

5.8 進階音訊選項

-acodec codec (輸入/輸出)

設定音訊編碼器。這是 -codec:a 的別名。

-sample_fmt[:stream_specifier] sample_fmt (輸出,每串流)

設定音訊採樣格式。使用 -sample_fmts 取得支援的採樣格式列表。

-af filtergraph (輸出)

這是 -filter:a 的別名,請參閱 -filter 選項

-atag fourcc/tag (輸出)

強制音訊標籤/fourcc。這是 -tag:a 的別名。

5.9 字幕選項

-ch_layout[:stream_specifier] layout (輸入/輸出,每串流)

-channel_layout 的別名。

-channel_layout[:stream_specifier] layout (輸入/輸出,每串流)

設定音訊聲道佈局。對於輸出串流,預設設定為輸入聲道佈局。對於輸入串流,它會覆寫輸入的聲道佈局。並非所有解碼器都遵循覆寫的聲道佈局。此選項也設定音訊擷取裝置和原始解多工器的聲道佈局,並映射到對應的解多工器選項。

-guess_layout_max channels (輸入,每串流)

5.10 進階字幕選項

如果某些輸入聲道佈局未知,則僅當它對應於最多指定數量的聲道時才嘗試猜測。例如,2 告訴 ffmpeg 將 1 個聲道識別為單聲道,將 2 個聲道識別為立體聲,但不將 6 個聲道識別為 5.1 聲道。預設值是始終嘗試猜測。使用 0 停用所有猜測。使用 -channel_layout 選項明確指定輸入佈局也會停用猜測。

-scodec codec (輸入/輸出)

設定字幕編碼器。這是 -codec:s 的別名。

-sn (輸入/輸出)

設定用於渲染字幕的畫布大小。

5.11 進階選項

-map [-]input_file_id[:stream_specifier][:view_specifier][:?] | [linklabel] (輸出)

在輸出檔案中建立一個或多個串流。此選項有兩種形式來指定資料來源:第一種是從某些輸入檔案(以 -i 指定)中選擇一個或多個串流,第二種是採用來自複雜濾鏡圖(以 -filter_complex 指定)的輸出。

在第一種形式中,會為輸入檔案中索引為 input_file_id 的每個串流建立一個輸出串流。如果給定了 stream_specifier,則僅使用符合指定符的那些串流(關於 stream_specifier 語法,請參閱 串流指定符 章節)。

串流識別符前的 - 字元會建立「負向」映射。它會停用來自已建立映射的匹配串流。

在串流指定符之後,可以給定一個可選的 view_specifier,對於多視圖視訊,它指定要使用的視圖。視圖指定符可以具有以下格式之一

view:view_id

依其 ID 選擇視圖;view_id 可以設定為 'all' 以使用交錯到一個串流中的所有視圖;

vidx:view_idx

依其索引選擇視圖;即 0 是基礎視圖,1 是第一個非基礎視圖,依此類推。

vpos:position

依其顯示位置選擇視圖;position 可以是 leftright

轉碼的預設設定是僅使用基礎視圖,即等同於 vidx:0。對於串流複製,不支援視圖指定符,並且始終複製所有視圖。

在串流索引後面的尾隨 ? 將允許映射成為可選的:如果映射沒有匹配任何串流,則會忽略該映射,而不是失敗。請注意,如果使用了無效的輸入檔案索引,例如映射引用了不存在的輸入,則映射仍然會失敗。

另一種 [linklabel] 形式會將來自複雜濾鏡圖(請參閱 -filter_complex 選項)的輸出映射到輸出檔案。linklabel 必須對應於圖中定義的輸出連結標籤。

此選項可以指定多次,每次都會向輸出檔案新增更多串流。任何給定的輸入串流也可以多次映射為不同輸出串流的來源,例如,為了使用不同的編碼選項和/或濾鏡。串流會以在命令列上給定 -map 選項的相同順序在輸出中建立。

使用此選項會停用此輸出檔案的預設映射。

範例

映射所有內容

將第一個輸入檔案中的所有串流映射到輸出

ffmpeg -i INPUT -map 0 output
選擇特定串流

如果您的第一個輸入檔案中有兩個音訊串流,則這些串流由 0:00:1 識別。您可以使用 -map 來選擇要放置在輸出檔案中的串流。例如

ffmpeg -i INPUT -map 0:1 out.wav

INPUT 中的第二個輸入串流映射到 out.wav 中的(單個)輸出串流。

建立多個串流

要從輸入檔案 a.mov(由識別符 0:2 指定)中選擇索引為 2 的串流,以及從輸入 b.mov(由識別符 1:6 指定)中選擇索引為 6 的串流,並將它們複製到輸出檔案 out.mov

ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
建立多個串流 2

要從輸入檔案中選擇所有視訊和第三個音訊串流

ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
負向映射

要映射除第二個音訊之外的所有串流,請使用負向映射

ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
可選映射

要映射來自第一個輸入的視訊和音訊串流,並使用尾隨 ?,如果第一個輸入中不存在音訊串流,則忽略音訊映射

ffmpeg -i INPUT -map 0:v -map 0:a? OUTPUT
依語言映射

要選取英語音訊串流

ffmpeg -i INPUT -map 0:m:language:eng OUTPUT
-ignore_unknown

忽略具有未知類型的輸入串流,而不是在嘗試複製此類串流時失敗。

-copy_unknown

允許複製具有未知類型的輸入串流,而不是在嘗試複製此類串流時失敗。

-map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (輸出,每個元數據)

infile 設定下一個輸出檔案的元數據資訊。請注意,這些是檔案索引(從零開始),而不是檔案名稱。可選的 metadata_spec_in/out 參數指定要複製哪些元數據。元數據指定符可以具有以下形式

g

全域元數據,即適用於整個檔案的元數據

s[:stream_spec]

每個串流的元數據。stream_spec串流指定符 章節中描述的串流指定符。在輸入元數據指定符中,從第一個匹配的串流複製。在輸出元數據指定符中,複製到所有匹配的串流。

c:chapter_index

每個章節的元數據。chapter_index 是從零開始的章節索引。

p:program_index

每個節目的元數據。program_index 是從零開始的節目索引。

如果省略元數據指定符,則預設為全域。

預設情況下,全域元數據從第一個輸入檔案複製,每個串流和每個章節的元數據與串流/章節一起複製。透過建立任何相關類型的映射來停用這些預設映射。可以使用負向檔案索引來建立僅停用自動複製的虛擬映射。

例如,要將輸入檔案的第一個串流的元數據複製到輸出檔案的全域元數據

ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3

要反向操作,即將全域元數據複製到所有音訊串流

ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv

請注意,在這個範例中,簡單的 0 也會有效,因為預設情況下假定為全域元數據。

-map_chapters input_file_index (輸出)

將索引為 input_file_index 的輸入檔案中的章節複製到下一個輸出檔案。如果未指定章節映射,則從第一個具有至少一個章節的輸入檔案複製章節。使用負向檔案索引來停用任何章節複製。

-benchmark (全域)

在編碼結束時顯示基準測試資訊。顯示使用的實際時間、系統時間和使用者時間,以及最大記憶體消耗。並非所有系統都支援最大記憶體消耗,如果不支持,通常會顯示為 0。

-benchmark_all (全域)

在編碼期間顯示基準測試資訊。顯示在各個步驟(音訊/視訊編碼/解碼)中使用的實際時間、系統時間和使用者時間。

-timelimit duration (全域)

在 ffmpeg 以 CPU 使用者時間執行 duration 秒後退出。

-dump (全域)

將每個輸入封包傾印到 stderr。

-hex (全域)

傾印封包時,也傾印酬載。

-readrate speed (輸入)

限制輸入讀取速度。

其值是一個浮點正數,表示在一秒的實際時間內應攝取的最大媒體持續時間(以秒為單位)。預設值為零,表示對攝取速度沒有施加限制。值 1 表示即時速度,相當於 -re

主要用於模擬捕獲裝置或即時輸入串流(例如,從檔案讀取時)。當輸入是實際的捕獲裝置或即時串流時,不應使用較低的值,因為這可能會導致封包遺失。

當輸出封包的流速很重要時,例如即時串流,這很有用。

-re (輸入)

以原生幀率讀取輸入。這相當於設定 -readrate 1

-readrate_initial_burst seconds

設定初始讀取爆發時間(以秒為單位),在此之後將強制執行 -re/-readrate

-vsync parameter (全域)
-fps_mode[:stream_specifier] parameter (輸出,每個串流)

設定視訊同步方法/幀率模式。vsync 應用於所有輸出視訊串流,但可以透過設定 fps_mode 來覆寫串流的 vsync。vsync 已被棄用,將在未來版本中移除。

出於相容性原因,vsync 的某些值可以指定為數字(在下表中以括號顯示)。

passthrough (0)

每個幀都以其時間戳記從解多工器傳遞到多工器。

cfr (1)

幀將被複製和丟棄,以精確地達到請求的恆定幀率。

vfr (2)

幀將以其時間戳記傳遞或丟棄,以防止 2 個幀具有相同的时间戳記。

auto (-1)

根據多工器的功能在 cfr 和 vfr 之間選擇。這是預設方法。

請注意,時間戳記可能會在此之後被多工器進一步修改。例如,在格式選項 avoid_negative_ts 啟用的情況下。

使用 -map,您可以選擇應從哪個串流取得時間戳記。您可以保持視訊或音訊不變,並將剩餘的串流同步到未變更的串流。

-frame_drop_threshold parameter

幀丟棄閾值,它指定視訊幀可以落後多少幀才被丟棄。以幀率單位表示,因此 1.0 是一幀。預設值為 -1.1。一個可能的用例是避免在時間戳記雜訊的情況下丟幀,或在精確時間戳記的情況下提高幀丟棄精度。

-apad parameters (輸出,每個串流)

填充輸出音訊串流。這與應用 -af apad 相同。參數是一個濾鏡參數字串,其組成方式與 apad 濾鏡相同。必須為此輸出設定 -shortest 選項才能生效。

-copyts

不要處理輸入時間戳記,而是保留它們的值,而不嘗試清理它們。特別是,不要移除初始開始時間偏移值。

請注意,根據 vsync 選項或特定的多工器處理(例如,在格式選項 avoid_negative_ts 啟用的情況下),即使選擇了此選項,輸出時間戳記也可能與輸入時間戳記不符。

-start_at_zero

copyts 一起使用時,將輸入時間戳記位移,使其從零開始。

這表示使用例如 -ss 50 將使輸出時間戳記從 50 秒開始,而不管輸入檔案從哪個時間戳記開始。

-copytb mode

指定在串流複製時如何設定編碼器時基。mode 是一個整數數值,可以採用以下值之一

1

使用解多工器時基。

時基從對應的輸入解多工器複製到輸出編碼器。當複製具有可變幀率的視訊串流時,有時需要這樣做以避免時間戳記非單調遞增。

0

使用解碼器時基。

時基從對應的輸入解碼器複製到輸出編碼器。

-1

嘗試自動做出選擇,以便產生合理的輸出。

預設值為 -1。

-enc_time_base[:stream_specifier] timebase (輸出,每個串流)

設定編碼器時基。timebase 可以採用以下值之一

0

根據媒體類型指定預設值。

對於視訊 - 使用 1/幀率,對於音訊 - 使用 1/取樣率。

demux

使用來自解多工器的時基。

filter

使用來自濾鏡圖的時基。

正數

使用提供的數字作為時基。

此欄位可以提供為兩個整數的比率(例如 1:24、1:48000)或十進制數字(例如 0.04166、2.0833e-5)

預設值為 0。

-bitexact (輸入/輸出)

為(解)多工器和(解/編)碼器啟用位元精確模式

-shortest (輸出)

當最短的輸出串流結束時完成編碼。

請注意,此選項可能需要緩衝幀,這會引入額外的延遲。可以使用 -shortest_buf_duration 選項來控制此延遲的最大量。

-shortest_buf_duration duration (輸出)

當至少一個串流是「稀疏的」(即在幀之間有很大的間隙 – 這通常是字幕的情況)時,-shortest 選項可能需要緩衝可能大量資料。

此選項控制緩衝幀的最大持續時間(以秒為單位)。較大的值可能允許 -shortest 選項產生更精確的結果,但會增加記憶體使用量和延遲。

預設值為 10 秒。

-dts_delta_threshold threshold

時間戳記不連續性增量閾值,表示為十進制秒數。

此選項啟用的時間戳記不連續性校正僅適用於接受時間戳記不連續性的輸入格式(為其啟用 AVFMT_TS_DISCONT 旗標),例如 MPEG-TS 和 HLS,並且在使用 -copyts 選項時會自動停用(除非檢測到換行)。

如果檢測到時間戳記不連續性,其絕對值大於 threshold,ffmpeg 將透過將目前的 DTS 和 PTS 減少/增加相應的增量值來移除不連續性。

預設值為 10。

-dts_error_threshold threshold

時間戳記錯誤增量閾值,表示為十進制秒數。

此選項啟用的時間戳記校正僅適用於不接受時間戳記不連續性的輸入格式(為其未啟用 AVFMT_TS_DISCONT 旗標)。

如果檢測到時間戳記不連續性,其絕對值大於 threshold,ffmpeg 將丟棄 PTS/DTS 時間戳記值。

預設值為 3600*30 (30 小時),此值為任意選取且相當保守。

-muxdelay seconds (輸出)

設定最大解多工-解碼延遲。

-muxpreload seconds (輸出)

設定初始解多工-解碼延遲。

-streamid output-stream-index:new-value (輸出)

為輸出串流指定新的串流 ID 值。此選項應在套用到的輸出檔案名稱之前指定。對於存在多個輸出檔案的情況,可以將串流 ID 重新分配給不同的值。

例如,要為輸出 mpegts 檔案將串流 0 PID 設定為 33,串流 1 PID 設定為 36

ffmpeg -i inurl -streamid 0:33 -streamid 1:36 out.ts
-bsf[:stream_specifier] bitstream_filters (輸入/輸出,每串流)

將位元串流濾波器套用至符合的串流。濾波器會在從解多工器接收到每個封包時套用(當用作輸入選項時),或在將其發送到多工器之前套用(當用作輸出選項時)。

bitstream_filters 是以逗號分隔的位元串流濾波器規格列表,每個規格的形式如下

filter[=optname0=optval0:optname1=optval1:...]

任何要作為選項值一部分的「’,=:’」字元都需要使用反斜線跳脫字元。

使用 -bsfs 選項取得位元串流濾波器的清單。

例如:

ffmpeg -bsf:v h264_mp4toannexb -i h264.mp4 -c:v copy -an out.h264

h264_mp4toannexb 位元串流濾波器(將 MP4 封裝的 H.264 串流轉換為 Annex B)套用至輸入視訊串流。

另一方面,

ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt

mov2textsub 位元串流濾波器(從 MOV 字幕中提取文字)套用至輸出字幕串流。但是請注意,由於這兩個範例都使用 -c copy,因此濾波器是在輸入還是輸出時套用並不重要 - 如果發生轉碼,情況就會改變。

-tag[:stream_specifier] codec_tag (輸入/輸出,每串流)

強制符合串流的標籤/fourcc。

-timecode hh:mm:ssSEPff

指定要寫入的時間碼。SEP 對於非丟幀時間碼為「:」,對於丟幀時間碼為「;」(或「.」)。

ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
-filter_complex filtergraph (全域)

定義複雜的濾波器圖,即具有任意數量的輸入和/或輸出的濾波器圖。對於簡單的圖形(具有相同類型的一個輸入和一個輸出),請參閱 -filter 選項。filtergraph 是濾波器圖的描述,如 ffmpeg-filters 手冊的「濾波器圖語法」章節中所述。可以多次指定此選項 - 每次使用都會建立一個新的複雜濾波器圖。

複雜濾波器圖的輸入可能來自不同的來源類型,並透過對應的連結標籤格式來區分

  • 要連接輸入串流,請使用 [file_index:stream_specifier](即與 -map 相同的語法)。如果 stream_specifier 符合多個串流,則將使用第一個串流。對於多視圖視訊,串流指定符後面可以跟視圖指定符,請參閱 -map 選項的文件以了解其語法。
  • 要連接迴路解碼器,請使用 [dec:dec_idx],其中 dec_idx 是要連接到給定輸入的迴路解碼器的索引。對於多視圖視訊,解碼器索引後面可以跟視圖指定符,請參閱 -map 選項的文件以了解其語法。
  • 要連接來自另一個複雜濾波器圖的輸出,請使用其連結標籤。例如,以下範例
    ffmpeg -i input.mkv \
      -filter_complex '[0:v]scale=size=hd1080,split=outputs=2[for_enc][orig_scaled]' \
      -c:v libx264 -map '[for_enc]' output.mkv \
      -dec 0:0 \
      -filter_complex '[dec:0][orig_scaled]hstack[stacked]' \
      -map '[stacked]' -c:v ffv1 comparison.mkv
    

    讀取輸入視訊並

    • (第 2 行)使用具有一個輸入和兩個輸出的複雜濾波器圖,將視訊縮放到 1920x1080,並將結果複製到兩個輸出;
    • (第 3 行)使用 libx264 編碼一個縮放後的輸出,並將結果寫入 output.mkv
    • (第 4 行)使用迴路解碼器解碼此編碼串流;
    • (第 5 行)將迴路解碼器的輸出(即 libx264 編碼的視訊)與縮放後的原始輸入並排放置;
    • (第 6 行)然後將組合後的視訊無損編碼並寫入 comparison.mkv

    請注意,這兩個濾波器圖無法合併為一個,因為這樣轉碼管線中會存在循環(濾波器圖輸出進入編碼,從那裡進入解碼,然後返回到同一個圖),而這種循環是不允許的。

未標記的輸入將連接到符合類型的第一個未使用的輸入串流。

輸出連結標籤透過 -map 引用。未標記的輸出會新增到第一個輸出檔案。

請注意,使用此選項可以僅使用 lavfi 來源,而無需正常的輸入檔案。

例如,將影像覆蓋在視訊上

ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
'[out]' out.mkv

這裡 [0:v] 指的是第一個輸入檔案中的第一個視訊串流,它連結到覆蓋濾波器的第一個(主要)輸入。同樣地,第二個輸入中的第一個視訊串流連結到覆蓋的第二個(覆蓋)輸入。

假設每個輸入檔案中只有一個視訊串流,我們可以省略輸入標籤,因此以上等效於

ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
'[out]' out.mkv

此外,我們可以省略輸出標籤,濾波器圖的單個輸出將自動新增到輸出檔案,因此我們可以簡單地寫成

ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv

作為一個特殊的例外,您可以使用點陣圖字幕串流作為輸入:它將轉換為與檔案中最大視訊相同大小的視訊,如果沒有視訊,則轉換為 720x576。請注意,這是一個實驗性和臨時性的解決方案。一旦 libavfilter 正式支援字幕,它將被移除。

例如,要將字幕硬編碼到儲存在 MPEG-TS 格式中的 DVB-T 錄製內容的頂部,並將字幕延遲 1 秒

ffmpeg -i input.ts -filter_complex \
  '[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
  -sn -map '#0x2dc' output.mkv

(0x2d0、0x2dc 和 0x2ef 分別是視訊、音訊和字幕串流的 MPEG-TS PID;0:0、0:3 和 0:7 也會有效)

要使用 lavfi color 來源產生 5 秒的純紅色視訊

ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
-filter_complex_threads nb_threads (全域)

定義用於處理 filter_complex 圖的執行緒數量。與 filter_threads 類似,但僅用於 -filter_complex 圖。預設值是可用的 CPU 數量。

-lavfi filtergraph (全域)

定義複雜的濾波器圖,即具有任意數量的輸入和/或輸出的濾波器圖。等效於 -filter_complex

-accurate_seek (輸入)

此選項啟用或停用使用 -ss 選項在輸入檔案中進行精確搜尋。預設情況下啟用,因此在轉碼時搜尋是精確的。使用 -noaccurate_seek 停用它,這可能在複製某些串流並轉碼其他串流時很有用。

-seek_timestamp (輸入)

此選項啟用或停用使用 -ss 選項在輸入檔案中按時間戳記搜尋。預設情況下停用。如果啟用,則 -ss 選項的引數會被視為實際時間戳記,並且不會被檔案的開始時間偏移。這僅對於不從時間戳記 0 開始的檔案(例如傳輸串流)才重要。

-thread_queue_size size (輸入/輸出)

對於輸入,此選項設定從檔案或裝置讀取時排隊封包的最大數量。對於低延遲/高速率即時串流,如果未及時讀取封包,則可能會丟棄封包;設定此值可以強制 ffmpeg 使用單獨的輸入執行緒並在封包到達時立即讀取封包。預設情況下,ffmpeg 僅在指定多個輸入時才執行此操作。

對於輸出,此選項指定可以排隊到每個多工執行緒的最大封包數量。

-sdp_file file (全域)

將輸出串流的 sdp 資訊列印到 file。這允許在至少一個輸出不是 rtp 串流時傾印 sdp 資訊。(需要至少一個輸出格式為 rtp)。

-discard (輸入)

允許從串流中捨棄特定的串流或影格。可以使用值 all 完全捨棄任何輸入串流,而從串流中選擇性捨棄影格發生在解多工器中,並非所有解多工器都支援。

none

不捨棄任何影格。

預設

預設值,不捨棄任何影格。

noref

捨棄所有非參考影格。

bidir

捨棄所有雙向影格。

nokey

捨棄除關鍵影格外的所有影格。

all

捨棄所有影格。

-abort_on flags (全域)

在各種條件下停止並中止。以下旗標可用

empty_output

沒有封包傳遞到多工器,輸出為空。

empty_output_stream

在某些輸出串流中,沒有封包傳遞到多工器。

-max_error_rate (全域)

設定所有輸入中解碼影格失敗的分數,當超過此分數時,ffmpeg 將傳回結束代碼 69。超過此閾值不會終止處理。範圍是介於 0 到 1 之間的浮點數。預設值為 2/3。

-xerror (全域)

在錯誤時停止並退出

-max_muxing_queue_size packets (輸出,每串流)

當轉碼音訊和/或視訊串流時,ffmpeg 將在每個串流都有一個封包之前不會開始寫入輸出。在等待這種情況發生時,其他串流的封包會被緩衝。此選項設定此緩衝區的大小,以封包為單位,用於符合的輸出串流。

此選項的預設值對於大多數用途來說應該足夠高,因此僅在確定需要時才調整此選項。

-muxing_queue_data_threshold bytes (輸出,每串流)

這是最小閾值,在此閾值之前,不會考慮多工佇列大小。預設值為每個串流 50 兆位元組,並且基於傳遞到多工器的封包的總大小。

-auto_conversion_filters (全域)

在所有濾波器圖中自動啟用插入格式轉換濾波器,包括由 -vf-af-filter_complex-lavfi 定義的濾波器圖。如果濾波器格式協商需要轉換,則濾波器的初始化將失敗。仍然可以透過在圖形中插入相關的轉換濾波器(scale、aresample)來執行轉換。預設為啟用,要明確停用它,您需要指定 -noauto_conversion_filters

-bits_per_raw_sample[:stream_specifier] value (輸出,每串流)

宣告給定輸出串流中每個原始樣本的位元數為 value。請注意,此選項設定提供給編碼器/多工器的資訊,它不會變更串流以符合此值。設定與串流屬性不符的值可能會導致編碼失敗或無效的輸出檔案。

-stats_enc_pre[:stream_specifier] path (輸出,每串流)
-stats_enc_post[:stream_specifier] path (輸出,每串流)
-stats_mux_pre[:stream_specifier] path (輸出,每串流)

將關於符合串流的每個影格編碼資訊寫入由 path 給定的檔案中。

-stats_enc_pre 在原始視訊或音訊影格即將發送進行編碼之前寫入關於它們的資訊,而 -stats_enc_post 則在從編碼器接收到編碼封包時寫入關於它們的資訊。-stats_mux_pre 寫入關於封包即將發送到多工器時的資訊。每個影格或封包都會在指定的檔案中產生一行。此行的格式由 -stats_enc_pre_fmt / -stats_enc_post_fmt / -stats_mux_pre_fmt 控制。

當多個串流的統計資訊寫入到單個檔案中時,對應於不同串流的行將會交錯。此交錯的精確順序未指定,並且不保證在程式的不同調用之間保持穩定,即使使用相同的選項也是如此。

-stats_enc_pre_fmt[:stream_specifier] format_spec (輸出,每串流)
-stats_enc_post_fmt[:stream_specifier] format_spec (輸出,每串流)
-stats_mux_pre_fmt[:stream_specifier] format_spec (輸出,每串流)

指定使用 -stats_enc_pre / -stats_enc_post / -stats_mux_pre 寫入的行的格式。

format_spec 是一個字串,可能包含 {fmt} 形式的指令。format_spec 是反斜線跳脫字元的 — 使用 \{、\} 和 \\ 分別將文字 {、} 或 \ 寫入輸出。

fmt 一起給出的指令可以是以下之一

fidx

輸出檔案的索引。

sidx

檔案中輸出串流的索引。

n

影格編號。預編碼:到目前為止發送到編碼器的影格數。後編碼:到目前為止從編碼器接收到的封包數。多工:到目前為止為此串流提交到多工器的封包數。

ni

輸入影格編號。與此輸出影格或封包對應的輸入影格(即解碼器輸出的影格)的索引。如果不可用,則為 -1。

tb

影格/封包的時間戳記所表達的時間基底,為有理數 num/den。請注意,編碼器和多工器可能使用不同的時間基底。

tbi

ptsi 的時間基底,為有理數 num/den。當 ptsi 可用時可用,否則為 0/1

pts

影格或封包的呈現時間戳記,為整數。應乘以時間基底以計算呈現時間。

ptsi

輸入影格的呈現時間戳記(請參閱 ni),為整數。應乘以 tbi 以計算呈現時間。當不可用時,印為 (2^63 - 1 = 9223372036854775807)。

t

呈現時間

輸入影格的呈現時間(請參閱 ni),為十進制數。等於 ptsi 乘以 tbi。當不可用時,印為 inf。

ti

影格或封包的解碼時間戳記,為整數。應乘以時間基底以計算呈現時間。

dts (封包)

影格或封包的解碼時間,為十進制數。等於 dts 乘以 tb

dt (封包)

到目前為止發送到編碼器的音訊樣本數。

sn (影格,音訊)

影格中的音訊樣本數。

samp (影格,音訊)

編碼封包的大小(以位元組為單位)。

size (封包)

目前的位元率(以位元/秒為單位)。

br (封包)

到目前為止整個串流的平均位元率,以位元/秒為單位,如果在此時無法確定,則為 -1。

abr (封包)

如果封包包含關鍵影格,則為字元 'K',否則為字元 'N'。

key (封包)

標記為封包的指令只能與 -stats_enc_post_fmt-stats_mux_pre_fmt 一起使用。

標記為影格的指令只能與 -stats_enc_pre_fmt 一起使用。

標記為音訊的指令只能與音訊串流一起使用。

預設格式字串為

前編碼

{fidx} {sidx} {n} {t}

後編碼

{fidx} {sidx} {n} {t}

未來,新的項目可能會被添加到預設格式字串的末尾。依賴格式完全不變的使用者,應手動指定格式。

請注意,寫入同一個檔案的不同串流的統計資訊可能會有不同的格式。

5.12 預設檔案

預設檔包含一連串的 option=value 配對,每行一對,用於指定一系列選項,這些選項若在命令列中指定會很麻煩。以井字號('#')字元開頭的行會被忽略,並用於提供註解。請查看 FFmpeg 原始碼樹狀目錄中的 presets 目錄以取得範例。

預設檔有兩種型別:ffpreset 檔和 avpreset 檔。

5.12.1 ffpreset 檔案

ffpreset 檔使用 vpreapresprefpre 選項指定。fpre 選項接受預設檔的檔名作為輸入,而不是預設名稱,並且可以用於任何型別的編解碼器。對於 vpreaprespre 選項,預設檔中指定的選項會應用於目前選定的相同型別編解碼器(如同預設選項的型別)。

傳遞給 vpreaprespre 預設選項的引數,會根據以下規則識別要使用的預設檔

首先,ffmpeg 會在目錄 $FFMPEG_DATADIR(如果已設定)、$HOME/.ffmpeg,以及配置時定義的資料目錄(通常是 PREFIX/share/ffmpeg)或 win32 上可執行檔旁的 ffpresets 資料夾中,依序搜尋名為 arg.ffpreset 的檔案。例如,如果引數為 libvpx-1080p,它將搜尋檔案 libvpx-1080p.ffpreset

如果找不到此類檔案,則 ffmpeg 將在上述目錄中搜尋名為 codec_name-arg.ffpreset 的檔案,其中 codec_name 是將套用預設檔選項的編解碼器的名稱。例如,如果您使用 -vcodec libvpx 選擇視訊編解碼器,並使用 -vpre 1080p,則它將搜尋檔案 libvpx-1080p.ffpreset

5.12.2 avpreset 檔案

avpreset 檔使用 pre 選項指定。它們的工作方式與 ffpreset 檔類似,但它們僅允許編碼器特定的選項。因此,不能使用指定編碼器的 option=value 配對。

當指定 pre 選項時,ffmpeg 將在目錄 $AVCONV_DATADIR(如果已設定)、$HOME/.avconv,以及配置時定義的資料目錄(通常是 PREFIX/share/ffmpeg)中,依序搜尋帶有 .avpreset 後綴的檔案。

首先,ffmpeg 會在上述目錄中搜尋名為 codec_name-arg.avpreset 的檔案,其中 codec_name 是將套用預設檔選項的編解碼器的名稱。例如,如果您使用 -vcodec libvpx 選擇視訊編解碼器,並使用 -pre 1080p,則它將搜尋檔案 libvpx-1080p.avpreset

如果找不到此類檔案,則 ffmpeg 將在相同目錄中搜尋名為 arg.avpreset 的檔案。

5.13 vstats 檔案格式

-vstats-vstats_file 選項啟用生成包含有關產生視訊輸出的統計資訊的檔案。

-vstats_version 選項控制生成的檔案的格式版本。

對於版本 1,格式為

frame= FRAME q= FRAME_QUALITY PSNR= PSNR f_size= FRAME_SIZE s_size= STREAM_SIZEkB time= TIMESTAMP br= BITRATEkbits/s avg_br= AVERAGE_BITRATEkbits/s

對於版本 2,格式為

out= OUT_FILE_INDEX st= OUT_FILE_STREAM_INDEX frame= FRAME_NUMBER q= FRAME_QUALITYf PSNR= PSNR f_size= FRAME_SIZE s_size= STREAM_SIZEkB time= TIMESTAMP br= BITRATEkbits/s avg_br= AVERAGE_BITRATEkbits/s

以下描述每個鍵對應的值

avg_br

平均位元率,以 Kbits/s 表示

br

位元率,以 Kbits/s 表示

frame

編碼影格數

out

輸出檔案索引

PSNR

峰值訊噪比

q

影格品質

f_size

編碼封包大小,以位元組數表示

s_size

串流大小,以 KiB 表示

st

輸出檔案串流索引

time

封包時間

type

圖片型別

另請參閱 -stats_enc 選項,以取得顯示編碼統計資訊的替代方法。

6 範例

6.1 視訊與音訊擷取

如果您指定輸入格式和裝置,則 ffmpeg 可以直接擷取視訊和音訊。

ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

或使用 ALSA 音訊來源(單聲道輸入,卡片 ID 為 1)而不是 OSS

ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg

請注意,您必須在使用任何電視檢視器(例如 Gerd Knorr 的 xawtv)啟動 ffmpeg 之前,先啟用正確的視訊來源和頻道。您還必須使用標準混音器正確設定音訊錄製音量。

6.2 X11 擷取

透過以下方式,使用 ffmpeg 擷取 X11 顯示器

ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg

0.0 是您的 X11 伺服器的顯示器.螢幕編號,與 DISPLAY 環境變數相同。

ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg

0.0 是您的 X11 伺服器的顯示器.螢幕編號,與 DISPLAY 環境變數相同。10 是擷取的 x 偏移量,20 是 y 偏移量。

6.3 視訊與音訊檔案格式轉換

任何支援的檔案格式和協定都可以作為 ffmpeg 的輸入

範例

  • 您可以使用 YUV 檔案作為輸入
    ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
    

    它將使用檔案

    /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
    /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
    

    Y 檔案使用的解析度是 U 和 V 檔案的兩倍。它們是原始檔案,沒有標頭。它們可以由所有優良的視訊解碼器產生。如果 ffmpeg 無法猜測影像大小,您必須使用 -s 選項指定影像大小。

  • 您可以從原始 YUV420P 檔案輸入
    ffmpeg -i /tmp/test.yuv /tmp/out.avi
    

    test.yuv 是一個包含原始 YUV 平面資料的檔案。每個影格都由 Y 平面組成,後跟垂直和水平解析度減半的 U 和 V 平面。

  • 您可以輸出到原始 YUV420P 檔案
    ffmpeg -i mydivx.avi hugefile.yuv
    
  • 您可以設定多個輸入檔案和輸出檔案
    ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
    

    將音訊檔案 a.wav 和原始 YUV 視訊檔案 a.yuv 轉換為 MPEG 檔案 a.mpg。

  • 您也可以同時進行音訊和視訊轉換
    ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
    

    以 22050 Hz 取樣率將 a.wav 轉換為 MPEG 音訊。

  • 您可以同時編碼為多種格式,並定義從輸入串流到輸出串流的映射
    ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
    

    將 a.wav 轉換為 64 kbits 的 a.mp2 和 128 kbits 的 b.mp2。'-map file:index' 指定每個輸出串流使用的輸入串流,依輸出串流定義的順序排列。

  • 您可以轉碼解密的 VOB
    ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
    

    這是一個典型的 DVD 翻錄範例;輸入是 VOB 檔案,輸出是帶有 MPEG-4 視訊和 MP3 音訊的 AVI 檔案。請注意,在此命令中,我們使用 B 影格,因此 MPEG-4 串流與 DivX5 相容,並且 GOP 大小為 300,這表示對於 29.97fps 輸入視訊,每 10 秒有一個畫面內影格。此外,音訊串流是 MP3 編碼的,因此您需要透過傳遞 --enable-libmp3lame 給 configure 來啟用 LAME 支援。映射對於 DVD 轉碼以取得所需的音訊語言特別有用。

    注意:若要查看支援的輸入格式,請使用 ffmpeg -demuxers

  • 您可以從視訊中擷取影像,或從多個影像建立視訊

    對於從視訊中擷取影像

    ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
    

    這將從視訊中每秒擷取一個視訊影格,並將它們輸出到名為 foo-001.jpegfoo-002.jpeg 等的檔案中。影像將被重新縮放以符合新的 WxH 值。

    如果您只想擷取有限數量的影格,您可以將上述命令與 -frames:v-t 選項結合使用,或與 -ss 結合使用以從時間上的特定點開始擷取。

    對於從多個影像建立視訊

    ffmpeg -f image2 -framerate 12 -i foo-%03d.jpeg -s WxH foo.avi
    

    語法 foo-%03d.jpeg 指定使用由三個數字組成的十進制數字(用零填充)來表示序號。它與 C printf 函式支援的語法相同,但只有接受一般整數的格式才適用。

    當匯入影像序列時,-i 也支援在內部展開 shell 類型的萬用字元模式(globbing),方法是選擇影像 2 特定的 -pattern_type glob 選項。

    例如,對於從符合 glob 模式 foo-*.jpeg 的檔名建立視訊

    ffmpeg -f image2 -pattern_type glob -framerate 12 -i 'foo-*.jpeg' -s WxH foo.avi
    
  • 您可以在輸出中放入多個相同型別的串流
    ffmpeg -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut
    

    產生的輸出檔案 test12.nut 將包含來自輸入檔案的前四個串流,順序相反。

  • 強制 CBR 視訊輸出
    ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
    
  • lmin、lmax、mblmin 和 mblmax 這四個選項使用「lambda」單位,但您可以使用 QP2LAMBDA 常數輕鬆地從「q」單位轉換
    ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
    

7 語法

本節說明 FFmpeg 程式庫和工具採用的語法和格式。

7.1 引號與跳脫字元

除非另有明確指定,否則 FFmpeg 採用以下引號和跳脫字元機制。套用以下規則

  • '」和「\」是特殊字元(分別用於引號和跳脫字元)。除了它們之外,根據採用跳脫字元和引號的特定語法,可能還有其他特殊字元。
  • 特殊字元透過在其前面加上「\」來跳脫。
  • 所有用「'」括起來的字元都會按字面包含在已剖析的字串中。引號字元「'」本身無法被引號,因此您可能需要關閉引號並跳脫它。
  • 除非經過跳脫或引號,否則已剖析字串的前導和尾隨空格會被移除。

請注意,當使用命令列或腳本時,您可能需要新增第二層跳脫字元,這取決於採用的 shell 語言的語法。

libavutil/avstring.h 中定義的函式 av_get_token 可用於根據上述規則剖析帶引號或跳脫字元的符記。

FFmpeg 原始碼樹狀目錄中的工具 tools/ffescape 可用於在腳本中自動引用或跳脫字串。

7.1.1 範例

  • 跳脫字串 Crime d'Amour,其中包含 ' 特殊字元
    Crime d\'Amour
    
  • 上面的字串包含引號,因此在引用時需要跳脫 '
    'Crime d'\''Amour'
    
  • 使用引號包含前導或尾隨空格
    '  this string starts and ends with whitespaces  '
    
  • 跳脫字元和引號可以混合使用
    ' The string '\'string\'' is a string '
    
  • 若要包含字面上的「\」,您可以使用跳脫字元或引號
    'c:\foo' can be written as c:\\foo
    

7.2 日期

接受的語法為

[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
now

如果值為 "now",則會採用目前時間。

時間為本地時間,除非附加 Z,在這種情況下,它會被解釋為 UTC。如果未指定年-月-日部分,則會採用目前的年-月-日。

7.3 時間長度

有兩種接受的語法用於表示持續時間。

[-][HH:]MM:SS[.m...]

HH 表示小時數,MM 表示分鐘數(最多 2 位數字),SS 表示秒數(最多 2 位數字)。結尾的 m 表示 SS 的小數值。

[-]S+[.m...][s|ms|us]

S 表示秒數,帶有可選的小數部分 m。可選的字面後綴「s」、「ms」或「us」分別表示將該值解釋為秒、毫秒或微秒。

在這兩種表示式中,可選的「-」表示負持續時間。

7.3.1 範例

以下範例都是有效的持續時間

55

55 秒

0.2

0.2 秒

200ms

200 毫秒,即 0.2 秒

200000us

200000 微秒,即 0.2 秒

12:03:45

12 小時、03 分鐘和 45 秒

23.189

23.189 秒

7.4 視訊尺寸

指定來源視訊的大小,它可以是 widthxheight 形式的字串,或是大小縮寫的名稱。

以下縮寫被識別

ntsc

720x480

pal

720x576

qntsc

352x240

qpal

352x288

sntsc

640x480

spal

768x576

film

352x240

ntsc-film

352x240

sqcif

128x96

qcif

176x144

cif

352x288

4cif

704x576

16cif

1408x1152

qqvga

160x120

qvga

320x240

vga

640x480

svga

800x600

xga

1024x768

uxga

1600x1200

qxga

2048x1536

sxga

1280x1024

qsxga

2560x2048

hsxga

5120x4096

wvga

852x480

wxga

1366x768

wsxga

1600x1024

wuxga

1920x1200

woxga

2560x1600

wqsxga

3200x2048

wquxga

3840x2400

whsxga

6400x4096

whuxga

7680x4800

cga

320x200

ega

640x350

hd480

852x480

hd720

1280x720

hd1080

1920x1080

2k

2048x1080

2kflat

1998x1080

2kscope

2048x858

4k

4096x2160

4kflat

3996x2160

4kscope

4096x1716

nhd

640x360

hqvga

240x160

wqvga

400x240

fwqvga

432x240

hvga

480x320

qhd

960x540

2kdci

2048x1080

4kdci

4096x2160

uhd2160

3840x2160

uhd4320

7680x4320

7.5 視訊速率

指定視訊的影格率,以每秒產生的影格數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。

以下縮寫被識別

ntsc

30000/1001

pal

25/1

qntsc

30000/1001

qpal

25/1

sntsc

30000/1001

spal

25/1

film

24/1

ntsc-film

24000/1001

7.6 比例

比率可以用運算式或 numerator:denominator 的形式表示。

請注意,具有無限大 (1/0) 或負值的比率被視為有效,因此如果您想排除這些值,則應檢查傳回的值。

未定義的值可以使用 "0:0" 字串表示。

7.7 顏色

它可以是如下定義的顏色名稱(不區分大小寫),或是 [0x|#]RRGGBB[AA] 序列,可能後跟 @ 和代表 alpha 分量的字串。

alpha 分量可以是 "0x" 後跟十六進制數字或介於 0.0 和 1.0 之間的十進制數字組成的字串,它表示不透明度值(「0x00」或「0.0」表示完全透明,「0xff」或「1.0」表示完全不透明)。如果未指定 alpha 分量,則假定為「0xff」。

字串「random」將產生隨機顏色。

以下顏色名稱被識別

AliceBlue

0xF0F8FF

AntiqueWhite

0xFAEBD7

Aqua

0x00FFFF

Aquamarine

0x7FFFD4

Azure

0xF0FFFF

Beige

0xF5F5DC

Bisque

0xFFE4C4

Black

0x000000

BlanchedAlmond

0xFFEBCD

Blue

0x0000FF

BlueViolet

0x8A2BE2

Brown

0xA52A2A

BurlyWood

0xDEB887

CadetBlue

0x5F9EA0

Chartreuse

0x7FFF00

Chocolate

0xD2691E

Coral

0xFF7F50

CornflowerBlue

0x6495ED

Cornsilk

0xFFF8DC

Crimson

0xDC143C

Cyan

0x00FFFF

DarkBlue

0x00008B

DarkCyan

0x008B8B

DarkGoldenRod

0xB8860B

DarkGray

0xA9A9A9

DarkGreen

0x006400

DarkKhaki

0xBDB76B

DarkMagenta

0x8B008B

DarkOliveGreen

0x556B2F

Darkorange

0xFF8C00

DarkOrchid

0x9932CC

DarkRed

0x8B0000

DarkSalmon

0xE9967A

深海綠

0x8FBC8F

深石板藍

0x483D8B

深石板灰

0x2F4F4F

深土耳其玉色

0x00CED1

深紫羅蘭色

0x9400D3

深粉紅色

0xFF1493

深天藍色

0x00BFFF

暗灰色

0x696969

道奇藍

0x1E90FF

火磚紅

0xB22222

花卉白

0xFFFAF0

森林綠

0x228B22

紫紅色

0xFF00FF

淡灰色

0xDCDCDC

幽靈白

0xF8F8FF

金色

0xFFD700

金麒麟色

0xDAA520

灰色

0x808080

綠色

0x008000

黃綠色

0xADFF2F

蜜瓜色

0xF0FFF0

鮮粉紅色

0xFF69B4

印度紅

0xCD5C5C

靛藍色

0x4B0082

象牙色

0xFFFFF0

卡其色

0xF0E68C

淡紫色

0xE6E6FA

淡紫紅

0xFFF0F5

草坪綠

0x7CFC00

檸檬雪紡

0xFFFACD

淺藍色

0xADD8E6

淺珊瑚色

0xF08080

淺青色

0xE0FFFF

淺金麒麟黃

0xFAFAD2

淺綠色

0x90EE90

淺灰色

0xD3D3D3

淺粉紅色

0xFFB6C1

淺鮭魚色

0xFFA07A

淺海綠

0x20B2AA

淺天藍色

0x87CEFA

淺石板灰

0x778899

淺鋼青色

0xB0C4DE

淺黃色

0xFFFFE0

萊姆綠

0x00FF00

萊姆綠

0x32CD32

亞麻布色

0xFAF0E6

洋紅色

0xFF00FF

褐紅色

0x800000

中海藍寶石綠

0x66CDAA

中藍色

0x0000CD

中蘭花紫

0xBA55D3

中紫色

0x9370D8

中海綠

0x3CB371

中石板藍

0x7B68EE

中春綠

0x00FA9A

中土耳其玉色

0x48D1CC

中紫紅

0xC71585

午夜藍

0x191970

薄荷奶油

0xF5FFFA

薄霧玫瑰

0xFFE4E1

鹿皮鞋色

0xFFE4B5

Navajo 白

0xFFDEAD

海軍藍

0x000080

古董白

0xFDF5E6

橄欖綠

0x808000

橄欖褐色

0x6B8E23

橙色

0xFFA500

橙紅色

0xFF4500

蘭花紫

0xDA70D6

蒼麒麟黃

0xEEE8AA

蒼綠色

0x98FB98

蒼土耳其玉色

0xAFEEEE

蒼紫紅

0xD87093

木瓜奶油

0xFFEFD5

桃子泡芙

0xFFDAB9

秘魯棕

0xCD853F

粉紅色

0xFFC0CB

李子色

0xDDA0DD

粉藍色

0xB0E0E6

紫色

0x800080

紅色

0xFF0000

玫瑰棕色

0xBC8F8F

皇家藍

0x4169E1

馬鞍棕色

0x8B4513

鮭魚色

0xFA8072

沙棕色

0xF4A460

海綠色

0x2E8B57

海貝殼白

0xFFF5EE

黃土赭色

0xA0522D

銀色

0xC0C0C0

天藍色

0x87CEEB

石板藍

0x6A5ACD

石板灰

0x708090

雪白色

0xFFFAFA

春綠色

0x00FF7F

鋼青色

0x4682B4

棕褐色

0xD2B48C

青鴨色

0x008080

薊色

0xD8BFD8

番茄紅

0xFF6347

土耳其玉色

0x40E0D0

紫羅蘭色

0xEE82EE

小麥色

0xF5DEB3

白色

0xFFFFFF

白煙色

0xF5F5F5

黃色

0xFFFF00

黃綠色

0x9ACD32

7.8 聲道佈局

聲道配置指定了多聲道音訊串流中聲道的空間佈局。為了指定聲道配置,FFmpeg 使用了一種特殊的語法。

個別聲道通過 ID 識別,如下表所示

FL

前置左聲道

FR

前置右聲道

FC

前置中央聲道

LFE

低頻聲道

BL

後置左聲道

BR

後置右聲道

FLC

前置偏左中央聲道

FRC

前置偏右中央聲道

BC

後置中央聲道

SL

側邊左聲道

SR

側邊右聲道

TC

頂部中央聲道

TFL

頂部前置左聲道

TFC

頂部前置中央聲道

TFR

頂部前置右聲道

TBL

頂部後置左聲道

TBC

頂部後置中央聲道

TBR

頂部後置右聲道

DL

混音降頻左聲道

DR

混音降頻右聲道

WL

寬廣左聲道

WR

寬廣右聲道

SDL

環繞直接左聲道

SDR

環繞直接右聲道

LFE2

低頻聲道 2

標準聲道配置組合可以使用以下識別符指定

mono

FC

stereo

FL+FR

2.1

FL+FR+LFE

3.0

FL+FR+FC

3.0(back)

FL+FR+BC

4.0

FL+FR+FC+BC

quad

FL+FR+BL+BR

quad(side)

FL+FR+SL+SR

3.1

FL+FR+FC+LFE

5.0

FL+FR+FC+BL+BR

5.0(side)

FL+FR+FC+SL+SR

4.1

FL+FR+FC+LFE+BC

5.1

FL+FR+FC+LFE+BL+BR

5.1(side)

FL+FR+FC+LFE+SL+SR

6.0

FL+FR+FC+BC+SL+SR

6.0(front)

FL+FR+FLC+FRC+SL+SR

3.1.2

FL+FR+FC+LFE+TFL+TFR

hexagonal

FL+FR+FC+BL+BR+BC

6.1

FL+FR+FC+LFE+BC+SL+SR

6.1

FL+FR+FC+LFE+BL+BR+BC

6.1(front)

FL+FR+LFE+FLC+FRC+SL+SR

7.0

FL+FR+FC+BL+BR+SL+SR

7.0(front)

FL+FR+FC+FLC+FRC+SL+SR

7.1

FL+FR+FC+LFE+BL+BR+SL+SR

7.1(wide)

FL+FR+FC+LFE+BL+BR+FLC+FRC

7.1(wide-side)

FL+FR+FC+LFE+FLC+FRC+SL+SR

5.1.2

FL+FR+FC+LFE+BL+BR+TFL+TFR

octagonal

FL+FR+FC+BL+BR+BC+SL+SR

cube

FL+FR+BL+BR+TFL+TFR+TBL+TBR

5.1.4

FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR

7.1.2

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR

7.1.4

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR

7.2.3

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2

9.1.4

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR

9.1.6

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR+TSL+TSR

hexadecagonal

FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR

binaural

BIL+BIR

downmix

DL+DR

22.2

FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR

自訂聲道配置可以指定為一系列由 '+' 分隔的術語。每個術語可以是

  • 單個聲道的名稱 (例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等),每個聲道可以選擇在 ‘@’ 後包含自訂名稱 (例如 ‘FL@Left’、‘FR@Right’、‘FC@Center’、‘LFE@Low_Frequency’ 等)

標準聲道配置可以通過以下方式指定

  • 單個聲道的名稱 (例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等)
  • 標準聲道配置的名稱 (例如 ‘mono’、‘stereo’、‘4.0’、‘quad’、‘5.0’ 等)
  • 聲道數量,以十進制表示,後跟 ‘c’,產生該聲道數量的預設聲道配置 (請參閱 av_channel_layout_default 函數)。請注意,並非所有聲道計數都有預設配置。
  • 聲道數量,以十進制表示,後跟 ‘C’,產生具有指定聲道數量的未知聲道配置。請注意,並非所有聲道配置規範字串都支援未知聲道配置。
  • 聲道配置遮罩,以十六進制表示,以 "0x" 開頭 (請參閱 libavutil/channel_layout.h 中的 AV_CH_* 巨集)。

在 libavutil 版本 53 之前,用於指定聲道數量的尾隨字元 "c" 是可選的,但現在是必需的,而聲道配置遮罩也可以指定為十進制數字 (當且僅當後面沒有跟隨 "c" 或 "C" 時)。

另請參閱 libavutil/channel_layout.h 中定義的 av_channel_layout_from_string 函數。

8 表達式評估

在評估算術表達式時,FFmpeg 使用內部公式評估器,通過 libavutil/eval.h 介面實現。

表達式可以包含一元運算符、二元運算符、常數和函數。

兩個表達式 expr1expr2 可以組合形成另一個表達式 "expr1;expr2"。expr1expr2 依序評估,新表達式評估為 expr2 的值。

以下二元運算符可用:+-*/^

以下一元運算符可用:+-

一些內部變數可以用於儲存和載入中間結果。可以使用 ldst 函數以及索引參數 (範圍從 0 到 9) 來存取它們,以指定要存取的內部變數。

以下函數可用

abs(x)

計算 x 的絕對值。

acos(x)

計算 x 的反餘弦值。

asin(x)

計算 x 的反正弦值。

atan(x)

計算 x 的反正切值。

atan2(y, x)

計算 y/x 的反正切主值。

between(x, min, max)

如果 x 大於或等於 min 且小於或等於 max,則返回 1,否則返回 0。

bitand(x, y)
bitor(x, y)

xy 執行位元 AND/OR 運算。

在執行位元運算之前,xy 的評估結果會轉換為整數。

請注意,轉換為整數和轉換回浮點數都可能損失精度。請注意大數 (通常為 2^53 及更大) 的意外結果。

ceil(expr)

將表達式 expr 的值向上捨入到最接近的整數。例如,"ceil(1.5)" 為 "2.0"。

clip(x, min, max)

返回 x 的值,該值被限制在 minmax 之間。

cos(x)

計算 x 的餘弦值。

cosh(x)

計算 x 的雙曲餘弦值。

eq(x, y)

如果 xy 相等,則返回 1,否則返回 0。

exp(x)

計算 x 的指數 (以 e 為底,即尤拉數)。

floor(expr)

將表達式 expr 的值向下捨入到最接近的整數。例如,"floor(-1.5)" 為 "-2.0"。

gauss(x)

計算 x 的高斯函數,對應於 exp(-x*x/2) / sqrt(2*PI)

gcd(x, y)

返回 xy 的最大公因數。如果 xy 均為 0,或者其中一個或兩個都小於零,則行為未定義。

gt(x, y)

如果 x 大於 y,則返回 1,否則返回 0。

gte(x, y)

如果 x 大於或等於 y,則返回 1,否則返回 0。

hypot(x, y)

此函數與同名的 C 函數類似;它返回 "sqrt(x*x + y*y)",即邊長為 xy 的直角三角形的斜邊長度,或點 (x, y) 到原點的距離。

if(x, y)

評估 x,如果結果非零,則返回 y 的評估結果,否則返回 0。

if(x, y, z)

評估 x,如果結果非零,則返回 y 的評估結果,否則返回 z 的評估結果。

ifnot(x, y)

評估 x,如果結果為零,則返回 y 的評估結果,否則返回 0。

ifnot(x, y, z)

評估 x,如果結果為零,則返回 y 的評估結果,否則返回 z 的評估結果。

isinf(x)

如果 x 是 +/-INFINITY,則返回 1.0,否則返回 0.0。

isnan(x)

如果 x 是 NAN,則返回 1.0,否則返回 0.0。

ld(idx)

載入索引為 idx 的內部變數的值,該值先前已使用 st(idx, expr) 儲存。該函數返回載入的值。

lerp(x, y, z)

返回 xy 之間按 z 量的線性內插值。

log(x)

計算 x 的自然對數。

lt(x, y)

如果 x 小於 y,則返回 1,否則返回 0。

lte(x, y)

如果 x 小於或等於 y,則返回 1,否則返回 0。

max(x, y)

返回 xy 之間的最大值。

min(x, y)

返回 xy 之間的最小值。

mod(x, y)

計算 x 除以 y 的餘數。

not(expr)

如果 expr 為零,則返回 1.0,否則返回 0.0。

pow(x, y)

計算 xy 次方,等同於 "(x)^(y)"。

print(t)
print(t, l)

使用日誌級別 l 印出表達式 t 的值。如果未指定 l,則使用預設日誌級別。返回印出的表達式的值。

random(idx)

返回介於 0.0 和 1.0 之間的偽隨機值。idx 是用於儲存種子/狀態的內部變數的索引,該種子/狀態可以先前使用 st(idx) 儲存。

要初始化種子,您需要將種子值作為 64 位元無符號整數儲存在索引為 idx 的內部變數中。

例如,要將值為 42 的種子儲存在索引為 0 的內部變數中,並印出一些隨機值

st(0,42); print(random(0)); print(random(0)); print(random(0))
randomi(idx, min, max)

返回介於 minmax 之間的偽隨機值。idx 是內部變數的索引,該變數將用於儲存種子/狀態,該種子/狀態可以先前使用 st(idx) 儲存。

要初始化種子,您需要將種子值作為 64 位元無符號整數儲存在索引為 idx 的內部變數中。

root(expr, max)

尋找一個輸入值,使得在 0..max 區間內,以 ld(0) 為參數且由 expr 表示的函數值為 0。

expr 中的表達式必須表示一個連續函數,否則結果未定義。

ld(0) 用於表示函數輸入值,這表示給定的表達式將會使用多個不同的輸入值進行評估,表達式可以透過 ld(0) 存取這些輸入值。當表達式評估結果為 0 時,將返回對應的輸入值。

round(expr)

將表達式 expr 的值四捨五入到最接近的整數。例如,"round(1.5)" 為 "2.0"。

sgn(x)

計算 x 的符號。

sin(x)

計算 x 的正弦值。

sinh(x)

計算 x 的雙曲正弦值。

sqrt(expr)

計算 expr 的平方根。這等同於 "(expr)^.5"。

squish(x)

計算表達式 1/(1 + exp(4*x))

st(idx, expr)

將表達式 expr 的值儲存在內部變數中。idx 指定儲存值的變數索引,其值範圍為 0 到 9。此函數返回儲存在內部變數中的值。

儲存的值可以使用 ld(var) 檢索。

注意:變數目前在表達式之間不共享。

tan(x)

計算 x 的正切值。

tanh(x)

計算 x 的雙曲正切值。

taylor(expr, x)
taylor(expr, x, idx)

x 處評估泰勒級數,給定一個表示函數在 0 處的 ld(idx) 階導數的表達式。

當級數不收斂時,結果未定義。

ld(idx) 用於表示 expr 中的導數階數,這表示給定的表達式將會使用多個不同的輸入值進行評估,表達式可以透過 ld(idx) 存取這些輸入值。如果未指定 idx,則假定為 0。

注意,當您擁有在 y 而非 0 處的導數時,可以使用 taylor(expr, x-y)

time(0)

以秒為單位返回目前(實際經過)時間。

trunc(expr)

將表達式 expr 的值朝零方向四捨五入到最接近的整數。例如,"trunc(-1.5)" 為 "-1.0"。

while(cond, expr)

當表達式 cond 為非零時,評估表達式 expr,並返回最後一次 expr 評估的值;如果 cond 始終為 false,則返回 NAN。

以下常數可用

PI

單位圓盤的面積,約為 3.14

E

exp(1)(歐拉數),約為 2.718

PHI

黃金比例 (1+sqrt(5))/2,約為 1.618

假設表達式在具有非零值時被視為「真」,請注意

* 的作用類似於 AND(邏輯與)

+ 的作用類似於 OR(邏輯或)

例如,以下構造

if (A AND B) then C

等同於

if(A*B, C)

在您的 C 程式碼中,您可以擴展一元和二元函數的列表,並定義可識別的常數,以便它們可用於您的表達式。

評估器也識別國際單位制詞頭。如果在詞頭後附加 'i',則使用二進制詞頭,它基於 1024 的冪而不是 1000 的冪。後綴 'B' 將值乘以 8,並且可以附加在單位詞頭之後或單獨使用。這允許使用例如 'KB'、'MiB'、'G' 和 'B' 作為數字後綴。

以下是可用的國際單位制詞頭列表,並指示了對應的 10 和 2 的冪。

y

10^-24 / 2^-80

z

10^-21 / 2^-70

a

10^-18 / 2^-60

f

10^-15 / 2^-50

p

10^-12 / 2^-40

n

10^-9 / 2^-30

u

10^-6 / 2^-20

m

10^-3 / 2^-10

c

10^-2

d

10^-1

h

10^2

k

10^3 / 2^10

K

10^3 / 2^10

M

10^6 / 2^20

G

10^9 / 2^30

T

10^12 / 2^40

P

10^15 / 2^50

E

10^18 / 2^60

Z

10^21 / 2^70

Y

10^24 / 2^80

9 編碼器選項

libavcodec 提供了一些通用的全域選項,這些選項可以在所有編碼器和解碼器上設置。此外,每個編解碼器可能支援所謂的私有選項,這些選項是特定於給定編解碼器的。

有時,全域選項可能僅影響特定類型的編解碼器,並且對於另一個編解碼器可能沒有意義或被忽略,因此您需要注意指定選項的含義。此外,某些選項僅適用於解碼或編碼。

可以在 FFmpeg 工具中透過指定 -option value 來設置選項,或者透過在 AVCodecContext 選項中顯式設置值,或使用 libavutil/opt.h API 以程式方式使用。

以下是支援的選項列表

b integer (encoding,audio,video)

設定位元率,單位為位元/秒。預設值為 200K。

ab integer (encoding,audio)

設定音訊位元率(單位為位元/秒)。預設值為 128K。

bt integer (encoding,video)

設定視訊位元率容忍度(單位為位元/秒)。在單次編碼模式下,位元率容忍度指定了速率控制願意偏離目標平均位元率值的程度。這與最小/最大位元率無關。過度降低容忍度會對品質產生不利影響。

flags flags (decoding/encoding,audio,video,subtitles)

設定通用標誌。

可能的值

mv4

每個巨集區塊使用四個運動向量 (mpeg4)。

qpel

使用 1/4 像素運動補償。

loop

使用迴路濾波器。

qscale

使用固定 qscale。

pass1

在第一次編碼模式中使用內部兩次編碼速率控制。

pass2

在第二次編碼模式中使用內部兩次編碼速率控制。

gray

僅解碼/編碼灰階。

psnr

在編碼期間設定 error[?] 變數。

truncated

輸入位元流可能被隨機截斷。

drop_changed

不要輸出參數與串流中第一個解碼幀不同的幀。當幀被丟棄時,會返回錯誤 AVERROR_INPUT_CHANGED。

ildct

使用交錯 DCT。

low_delay

強制低延遲。

global_header

將全域標頭放置在 extradata 中,而不是每個關鍵幀中。

bitexact

僅寫入與平台、建置和時間無關的資料。((I)DCT 除外)。這確保檔案和資料校驗和是可重現的,並且在不同平台之間匹配。其主要用途是用於回歸測試。

aic

應用 H263 進階幀內編碼 / mpeg4 ac 預測。

ilme

應用交錯運動估計。

cgop

使用封閉 gop。

output_corrupt

輸出甚至可能損壞的幀。

time_base 有理數

設定編解碼器時間基底。

它是時間的基本單位(以秒為單位),幀時間戳記以其表示。對於固定 fps 內容,時間基底應為 1 / frame_rate,且時間戳記增量應完全為 1。

g 整數 (encoding,video)

設定圖片群組 (GOP) 大小。預設值為 12。

ar 整數 (decoding/encoding,audio)

設定音訊採樣率(單位為 Hz)。

ac 整數 (decoding/encoding,audio)

設定音訊通道數。

cutoff 整數 (encoding,audio)

設定截止頻寬。(僅受選定的編碼器支援,請參閱其各自的文件章節。)

frame_size 整數 (encoding,audio)

設定音訊幀大小。

除了最後一個提交的幀之外,每個提交的幀都必須包含每個通道正好 frame_size 個樣本。當編解碼器設定了 CODEC_CAP_VARIABLE_FRAME_SIZE 時,可以為 0,在這種情況下,幀大小不受限制。某些解碼器會設定它來指示恆定幀大小。

frame_number 整數

設定幀編號。

delay 整數
qcomp 浮點數 (encoding,video)

設定視訊量化器比例壓縮 (VBR)。它在速率控制方程式中用作常數。預設 rc_eq 的建議範圍:0.0-1.0。

qblur 浮點數 (encoding,video)

設定視訊量化器比例模糊 (VBR)。

qmin 整數 (encoding,video)

設定最小視訊量化器比例 (VBR)。必須包含在 -1 到 69 之間,預設值為 2。

qmax 整數 (encoding,video)

設定最大視訊量化器比例 (VBR)。必須包含在 -1 到 1024 之間,預設值為 31。

qdiff 整數 (encoding,video)

設定量化器比例 (VBR) 之間的最大差異。

bf 整數 (encoding,video)

設定非 B 幀之間的最大 B 幀數。

必須是 -1 到 16 之間的整數。0 表示 B 幀被禁用。如果使用值 -1,它將根據編碼器選擇一個自動值。

預設值為 0。

b_qfactor 浮點數 (encoding,video)

設定 P 幀和 B 幀之間的 qp 因子。

codec_tag 整數
bug flags (decoding,video)

解決未自動偵測到的編碼器錯誤。

可能的值

autodetect
xvid_ilace

Xvid 交錯錯誤(如果 fourcc==XVIX 則自動偵測)

ump4

(如果 fourcc==UMP4 則自動偵測)

no_padding

填充錯誤(自動偵測)

amv
qpel_chroma
std_qpel

舊標準 qpel(每個 fourcc/版本自動偵測)

qpel_chroma2
direct_blocksize

direct-qpel-blocksize 錯誤(每個 fourcc/版本自動偵測)

edge

邊緣填充錯誤(每個 fourcc/版本自動偵測)

hpel_chroma
dc_clip
ms

解決 microsoft 損壞的解碼器中的各種錯誤。

trunc

截斷幀

strict 整數 (decoding/encoding,audio,video)

指定嚴格遵守標準的程度。

可能的值

very

嚴格遵守規範或參考軟體的舊版本,該版本更嚴格

strict

嚴格遵守規範中的所有事項,無論後果如何

normal
unofficial

允許非官方擴展

experimental

允許非標準化的實驗性事物、實驗性(未完成/工作中/未充分測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。

b_qoffset 浮點數 (encoding,video)

設定 P 幀和 B 幀之間的 QP 偏移。

err_detect flags (decoding,audio,video)

設定錯誤偵測標誌。

可能的值

crccheck

驗證嵌入的 CRC

bitstream

偵測位元流規範偏差

buffer

偵測不正確的位元流長度

explode

在偵測到輕微錯誤時中止解碼

ignore_err

忽略解碼錯誤,並繼續解碼。如果您想分析視訊內容,因此希望解碼所有內容,無論如何,這都很有用。如果發生錯誤,此選項不會產生令人滿意的視訊。

careful

將違反規範且未在實際應用中看到的事物視為錯誤

compliant

將所有規範不符之處視為錯誤

aggressive

將理智的編碼器不應做的事情視為錯誤

has_b_frames 整數
block_align 整數
rc_override_count 整數
maxrate 整數 (encoding,audio,video)

設定最大位元率容忍度(單位為位元/秒)。需要設定 bufsize。

minrate 整數 (encoding,audio,video)

設定最小位元率容忍度(單位為位元/秒)。在設定 CBR 編碼時最有用。在其他情況下幾乎沒有用處。

bufsize 整數 (encoding,audio,video)

設定速率控制緩衝區大小(單位為位元)。

i_qfactor 浮點數 (encoding,video)

設定 P 幀和 I 幀之間的 QP 因子。

i_qoffset 浮點數 (encoding,video)

設定 P 幀和 I 幀之間的 QP 偏移。

dct 整數 (encoding,video)

設定 DCT 演算法。

可能的值

auto

自動選擇一個好的演算法(預設)

fastint

快速整數

int

精確整數

mmx
altivec
faan

浮點 AAN DCT

lumi_mask 浮點數 (encoding,video)

比中等亮度區域更強烈地壓縮明亮區域。

tcplx_mask 浮點數 (encoding,video)

設定時間複雜度遮罩。

scplx_mask 浮點數 (encoding,video)

設定空間複雜度遮罩。

p_mask float (encoding,video)

設定內部遮罩。

dark_mask float (encoding,video)

更強烈地壓縮黑暗區域,使其比中等區域更強。

idct integer (decoding/encoding,video)

選擇 IDCT 實作方式。

可能的值

auto
int
simple
simplemmx
simpleauto

自動選擇與 simple 相容的 IDCT

arm
altivec
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
xvid
faani

浮點 AAN IDCT

slice_count integer
ec flags (decoding,video)

設定錯誤隱藏策略。

可能的值

guess_mvs

迭代式運動向量 (MV) 搜尋 (慢速)

deblock

對損壞的 MB 使用強烈的解塊濾波器

favor_inter

偏好從前一個影格而不是目前的影格進行預測

bits_per_coded_sample integer
aspect rational number (encoding,video)

設定樣本縱橫比。

sar rational number (encoding,video)

設定樣本縱橫比。 aspect 的別名。

debug flags (decoding/encoding,audio,video,subtitles)

列印特定的偵錯資訊。

可能的值

pict

圖片資訊

rc

速率控制

bitstream
mb_type

巨集區塊 (MB) 類型

qp

每個區塊的量化參數 (QP)

dct_coeff
green_metadata

顯示即將到來的影格、GoP 或給定持續時間的複雜度元數據。

skip
startcode
er

錯誤識別

mmco

記憶體管理控制操作 (H.264)

bugs
buffers

圖片緩衝區分配

thread_ops

執行緒操作

nomc

跳過運動補償

cmp integer (encoding,video)

設定完整像素運動估計比較函數。

可能的值

sad

絕對差值總和,快速 (預設)

sse

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和 (避免使用,品質低)

bit

區塊所需的位元數

rd

速率失真最佳化,慢速

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

雜訊保留平方差值總和

w53

5/3 小波,僅用於雪花

w97

9/7 小波,僅用於雪花

dctmax
chroma
subcmp integer (encoding,video)

設定子像素運動估計比較函數。

可能的值

sad

絕對差值總和,快速 (預設)

sse

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和 (避免使用,品質低)

bit

區塊所需的位元數

rd

速率失真最佳化,慢速

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

雜訊保留平方差值總和

w53

5/3 小波,僅用於雪花

w97

9/7 小波,僅用於雪花

dctmax
chroma
mbcmp integer (encoding,video)

設定巨集區塊比較函數。

可能的值

sad

絕對差值總和,快速 (預設)

sse

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和 (避免使用,品質低)

bit

區塊所需的位元數

rd

速率失真最佳化,慢速

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

雜訊保留平方差值總和

w53

5/3 小波,僅用於雪花

w97

9/7 小波,僅用於雪花

dctmax
chroma
ildctcmp integer (encoding,video)

設定交錯 DCT 比較函數。

可能的值

sad

絕對差值總和,快速 (預設)

sse

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和 (避免使用,品質低)

bit

區塊所需的位元數

rd

速率失真最佳化,慢速

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

雜訊保留平方差值總和

w53

5/3 小波,僅用於雪花

w97

9/7 小波,僅用於雪花

dctmax
chroma
dia_size integer (encoding,video)

設定運動估計的菱形類型與大小。

(1024, INT_MAX)

完整運動估計 (最慢)

(768, 1024]

UMH 運動估計

(512, 768]

HEX 運動估計

(256, 512]

L2S 菱形運動估計

[2,256]

VAR 菱形運動估計

(-1, 2)

小型菱形運動估計

-1

趣味菱形運動估計

(INT_MIN, -1)

SAB 菱形運動估計

last_pred integer (encoding,video)

設定來自前一個影格的運動預測器數量。

precmp integer (encoding,video)

設定預運動估計比較函數。

可能的值

sad

絕對差值總和,快速 (預設)

sse

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和 (避免使用,品質低)

bit

區塊所需的位元數

rd

速率失真最佳化,慢速

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

雜訊保留平方差值總和

w53

5/3 小波,僅用於雪花

w97

9/7 小波,僅用於雪花

dctmax
chroma
pre_dia_size integer (encoding,video)

設定運動估計預先處理的菱形類型與大小。

subq integer (encoding,video)

設定子像素運動估計品質。

me_range integer (encoding,video)

設定限制運動向量範圍 (DivX 播放器為 1023)。

global_quality integer (encoding,audio,video)
slice_flags integer
mbd integer (encoding,video)

設定巨集區塊決策演算法 (高品質模式)。

可能的值

simple

使用 mbcmp (預設)

bits

使用最少位元

rd

使用最佳速率失真

rc_init_occupancy integer (encoding,video)

設定解碼開始前應載入到 rc 緩衝區的位元數。

flags2 flags (decoding/encoding,audio,video,subtitles)

可能的值

fast

允許不符合規範的加速技巧。

noout

跳過位元流編碼。

ignorecrop

忽略來自 sps 的裁剪資訊。

local_header

將全域標頭放置在每個關鍵影格,而不是 extradata 中。

chunks

影格資料可能會分割成多個區塊。

showall

顯示第一個關鍵影格之前的所有影格。

export_mvs

將運動向量匯出到影格側資料 (請參閱 AV_FRAME_DATA_MOTION_VECTORS),適用於支援的編解碼器。另請參閱 doc/examples/export_mvs.c

skip_manual

不要跳過樣本並將跳過資訊匯出為影格側資料。

ass_ro_flush_noop

在刷新時,不要重設 ASS ReadOrder 欄位。

icc_profiles

從/到色彩標籤產生/解析嵌入式 ICC 描述檔。

export_side_data flags (decoding/encoding,audio,video,subtitles)

可能的值

mvs

將運動向量匯出到影格側資料 (請參閱 AV_FRAME_DATA_MOTION_VECTORS),適用於支援的編解碼器。另請參閱 doc/examples/export_mvs.c

prft

將編碼器生產者參考時間匯出到封包側資料 (請參閱 AV_PKT_DATA_PRFT),適用於支援的編解碼器。

venc_params

透過影格側資料匯出視訊編碼參數 (請參閱 AV_FRAME_DATA_VIDEO_ENC_PARAMS),適用於支援的編解碼器。目前,這些是 H.264 和 VP9。

film_grain

透過影格側資料匯出膠片顆粒參數 (請參閱 AV_FRAME_DATA_FILM_GRAIN_PARAMS)。目前 AV1 解碼器支援。

enhancements

透過影格側資料匯出圖片增強元數據,例如 LCEVC (請參閱 AV_FRAME_DATA_LCEVC)。

threads integer (decoding/encoding,video)

設定要使用的執行緒數量,如果選定的編解碼器實作支援多執行緒。

可能的值

auto, 0

自動選擇要設定的執行緒數量

預設值為 ‘auto’。

dc integer (encoding,video)

設定 intra_dc_precision。

nssew integer (encoding,video)

設定 nsse 權重。

skip_top integer (decoding,video)

設定要跳過的頂部巨集區塊列數。

skip_bottom integer (decoding,video)

設定要跳過的底部巨集區塊列數。

profile integer (encoding,audio,video)

設定編碼器編解碼器設定檔。預設值為 ‘unknown’。編碼器特定設定檔記錄在相關的編碼器文件中。

level integer (encoding,audio,video)

設定編碼器層級。此層級取決於特定的編解碼器,並且可能對應於設定檔層級。預設設定為 ‘unknown’。

可能的值

unknown
lowres integer (decoding,audio,video)

以 1= 1/2、2=1/4、3=1/8 解析度解碼。

mblmin integer (encoding,video)

設定最小巨集區塊拉格朗日乘數 (VBR)。

mblmax integer (encoding,video)

設定最大巨集區塊拉格朗日乘數 (VBR)。

skip_loop_filter integer (decoding,video)
skip_idct integer (decoding,video)
skip_frame integer (decoding,video)

根據選項值選擇的影格類型,使解碼器捨棄處理。

skip_loop_filter 跳過影格迴路濾波,skip_idct 跳過影格 IDCT/反量化,skip_frame 跳過解碼。

可能的值

none

不捨棄任何影格。

default

捨棄無用的影格,例如 0 大小的影格。

noref

捨棄所有非參考影格。

bidir

捨棄所有雙向影格。

nokey

捨棄除關鍵影格外的所有影格。

nointra

捨棄除了 I 影格以外的所有影格。

all

捨棄所有影格。

預設值為 ‘default’。

bidir_refine integer (encoding,video)

精細化雙向巨集區塊中使用的兩個運動向量。

keyint_min integer (encoding,video)

設定 IDR 影格之間的最小間隔。

refs integer (encoding,video)

設定要考慮用於運動補償的參考影格。

trellis integer (encoding,audio,video)

設定速率失真最佳化量化。

mv0_threshold integer (encoding,video)
compression_level integer (encoding,audio,video)
bits_per_raw_sample integer
channel_layout integer (decoding/encoding,audio)

請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的頻道佈局章節,以了解所需的語法。

rc_max_vbv_use float (encoding,video)
rc_min_vbv_use float (encoding,video)
color_primaries integer (decoding/encoding,video)

可能的值

bt709

BT.709

bt470m

BT.470 M

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

film

膠片

bt2020

BT.2020

smpte428
smpte428_1

SMPTE ST 428-1

smpte431

SMPTE 431-2

smpte432

SMPTE 432-1

jedec-p22

JEDEC P22

color_trc integer (decoding/encoding,video)

可能的值

bt709

BT.709

gamma22

BT.470 M

gamma28

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

linear

線性

log
log100

對數

log_sqrt
log316

對數平方根

iec61966_2_4
iec61966-2-4

IEC 61966-2-4

bt1361
bt1361e

BT.1361

iec61966_2_1
iec61966-2-1

IEC 61966-2-1

bt2020_10
bt2020_10bit

BT.2020 - 10 位元

bt2020_12
bt2020_12bit

BT.2020 - 12 位元

smpte2084

SMPTE ST 2084

smpte428
smpte428_1

SMPTE ST 428-1

arib-std-b67

ARIB STD-B67

colorspace integer (decoding/encoding,video)

可能的值

rgb

RGB

bt709

BT.709

fcc

FCC

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

ycocg

YCOCG

bt2020nc
bt2020_ncl

BT.2020 NCL

bt2020c
bt2020_cl

BT.2020 CL

smpte2085

SMPTE 2085

chroma-derived-nc

色度衍生 NCL

chroma-derived-c

色度衍生 CL

ictcp

ICtCp

color_range integer (decoding/encoding,video)

如果用作輸入參數,它會作為解碼器的提示,告知輸入的 color_range。可能的值

tv
mpeg
limited

MPEG (219*2^(n-8))

pc
jpeg
full

JPEG (2^n-1)

chroma_sample_location integer (decoding/encoding,video)

可能的值

left
center
topleft
top
bottomleft
bottom
log_level_offset integer

設定日誌層級偏移。

slices integer (encoding,video)

切片數量,用於平行編碼。

thread_type flags (decoding/encoding,video)

選擇要使用的多執行緒方法。

使用 ‘frame’ 將會使每個執行緒的解碼延遲增加一個影格,因此無法提供未來影格的客戶端不應使用它。

可能的值

slice

一次解碼單一影格的多個部分。

僅當視訊是使用切片編碼時,使用切片的多執行緒才有效。

frame

一次解碼多個影格。

預設值為 ‘slice+frame’。

audio_service_type integer (encoding,audio)

設定音訊服務類型。

可能的值

ma

主要音訊服務

ef

效果

vi

視覺障礙

hi

聽覺障礙

di

對話

co

評論

em

緊急

vo

配音

ka

卡拉 OK

request_sample_fmt sample_fmt (decoding,audio)

設定音訊解碼器應偏好的樣本格式。預設值為 none

pkt_timebase rational number
sub_charenc encoding (decoding,subtitles)

設定輸入字幕字元編碼。

field_order field_order (video)

設定/覆寫視訊的欄位順序。可能的值

progressive

漸進式視訊

tt

交錯式視訊,頂欄位先編碼並顯示

bb

交錯式視訊,底欄位先編碼並顯示

tb

交錯式視訊,頂部先編碼,底部先顯示

bt

交錯式視訊,底部先編碼,頂部先顯示

skip_alpha bool (decoding,video)

設定為 1 以停用處理 Alpha (透明度)。這就像 flags 選項中的 ‘gray’ 旗標,它會跳過色度資訊而不是 Alpha。預設值為 0。

codec_whitelist list (input)

"," 分隔的允許解碼器清單。預設情況下,所有解碼器都允許。

dump_separator string (input)

用於分隔命令列上列印的串流參數欄位的分隔符號。例如,要使用換行符號和縮排來分隔欄位

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_pixels integer (decoding/encoding,video)

每個影像的最大像素數。此值可用於避免因大型影像而導致記憶體不足的錯誤。

apply_cropping bool (decoding,video)

如果裁剪參數是左側和頂部參數所需對齊的倍數,則啟用裁剪。如果未滿足對齊,則將部分套用裁剪以維持對齊。預設值為 1 (啟用)。注意:所需的對齊取決於是否設定了 AV_CODEC_FLAG_UNALIGNED 和 CPU。 AV_CODEC_FLAG_UNALIGNED 無法從命令列變更。此外,硬體解碼器不會套用左/頂部裁剪。

10 解碼器

解碼器是 FFmpeg 中配置的元素,允許解碼多媒體串流。

當您配置 FFmpeg 建置時,預設會啟用所有支援的原生解碼器。需要外部函式庫的解碼器必須透過對應的 --enable-lib 選項手動啟用。您可以使用配置選項 --list-decoders 列出所有可用的解碼器。

您可以使用配置選項 --disable-decoders 停用所有解碼器,並使用選項 --enable-decoder=DECODER / --disable-decoder=DECODER 選擇性地啟用/停用單個解碼器。

ff* 工具的 -decoders 選項將顯示已啟用解碼器的清單。

11 視訊解碼器

以下是一些目前可用的視訊解碼器的描述。

11.1 av1

AOMedia Video 1 (AV1) 解碼器。

11.1.1 選項

operating_point

選擇可縮放 AV1 位元流的操作點 (0 - 31)。預設值為 0。

11.2 hevc

HEVC (又名 ITU-T H.265 或 ISO/IEC 23008-2) 解碼器。

此解碼器支援最多兩個視圖的 MV-HEVC 多視圖串流。要輸出的視圖可以透過提供視圖 ID 列表給解碼器來選取(view_ids 選項)。此選項可以在解碼器初始化之前靜態設定,也可以從 get_format() 回呼函式中設定 - 這對於視圖計數或 ID 在解碼期間動態變更的情況很有用。

預設情況下,只會解碼基礎層。

請注意,如果您正在使用 ffmpeg CLI 工具,您應該使用其手冊中記錄的視圖指定符,而不是此處記錄的選項。

11.2.1 選項

view_ids (MV-HEVC)

指定應輸出的視圖 ID 列表。此選項也可以設定為單個 ' -1 ',這將導致解碼並輸出 VPS 中定義的所有視圖。

view_ids_available (MV-HEVC)

呼叫者可以讀取此選項以檢索活動 VPS 中可用的視圖 ID 陣列。對於單層視訊,此陣列為空。

當從 get_format() 回呼函式讀取時,此選項的值保證是準確的。它也可以在其他時間設定(例如,在開啟解碼器之後),但該值僅供參考,並且可能不正確(例如,當串流包含多個不同的 VPS NALU 時)。

view_pos_available (MV-HEVC)

呼叫者可以讀取此選項以檢索活動 VPS 中可用的視圖位置陣列(左、右或未指定),作為 AVStereo3DView 值。當陣列可用時,其元素適用於 view_ids_available 的對應元素,即 view_pos_available[i] 包含 ID 為 view_ids_available[i] 的視圖位置。

view_ids_available 相同的有效性限制適用於此選項。

11.3 rawvideo

原始視訊解碼器。

此解碼器解碼 rawvideo 串流。

11.3.1 選項

top top_field_first

指定輸入視訊的假定欄位類型。

-1

視訊假定為循序掃描(預設)

0

假定為 bottom-field-first

1

假定為 top-field-first

11.4 libdav1d

dav1d AV1 解碼器。

libdav1d 允許 libavcodec 解碼 AOMedia Video 1 (AV1) 編碼。組態時需要存在 libdav1d 標頭和函式庫。您需要使用 --enable-libdav1d 明確組態建置。

11.4.1 選項

libdav1d wrapper 支援以下選項。

framethreads

設定解碼期間要使用的影格執行緒數量。預設值為 0(自動偵測)。此選項已棄用,適用於 libdav1d >= 1.0,並且將在未來版本中移除。請改用選項 max_frame_delay 和全域選項 threads

tilethreads

設定解碼期間要使用的圖塊執行緒數量。預設值為 0(自動偵測)。此選項已棄用,適用於 libdav1d >= 1.0,並且將在未來版本中移除。請改用全域選項 threads

max_frame_delay

設定解碼器內部可以緩衝的最大影格數量。預設值為 0(自動偵測)。

filmgrain

如果位元串流中存在 film grain,則將其應用於解碼後的視訊。預設為函式庫的內部預設值。此選項已棄用,並且將在未來版本中移除。請參閱全域選項 export_side_data 以匯出 Film Grain 參數,而不是應用它。

oppoint

選擇可縮放 AV1 位元串流的運作點 (0 - 31)。預設為函式庫的內部預設值。

alllayers

輸出可縮放 AV1 位元串流的所有空間層。預設值為 false。

11.5 libdavs2

AVS2-P2/IEEE1857.4 視訊解碼器 wrapper。

此解碼器允許 libavcodec 使用 davs2 函式庫解碼 AVS2 串流。

11.6 libuavs3d

AVS3-P2/IEEE1857.10 視訊解碼器。

libuavs3d 允許 libavcodec 解碼 AVS3 串流。組態時需要存在 libuavs3d 標頭和函式庫。您需要使用 --enable-libuavs3d 明確組態建置。

11.6.1 選項

libuavs3d wrapper 支援以下選項。

frame_threads

設定解碼期間要使用的影格執行緒數量。預設值為 0(自動偵測)。

11.7 libxevd

eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC 解碼器 wrapper。

此解碼器需要組態時存在 libxevd 標頭和函式庫。您需要使用 --enable-libxevd 明確組態建置。

xevd 專案網站位於 https://github.com/mpeg5/xevd

11.7.1 選項

libxevd wrapper 支援以下選項。為了方便遷移,括號中列出了 xevd 等效選項或值。

若要取得更準確且廣泛的 libxevd 選項文件,請調用命令 xevd_app --help 或查閱 libxevd 文件。

threads (threads)

強制使用特定數量的執行緒

11.8 QSV 解碼器

Intel QuickSync Video 解碼器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。

11.8.1 通用選項

所有 qsv 解碼器都支援以下選項。

async_depth

內部平行化深度,值越高,延遲越高。

gpu_copy

視訊記憶體和系統記憶體之間 GPU 加速的複製

default
on
off

11.8.2 HEVC 選項

hevc_qsv 的額外選項。

load_plugin

要在內部會話中載入的使用者外掛程式

none
hevc_sw
hevc_hw
load_plugins

要在內部會話中載入的以冒號分隔的十六進位外掛程式 UID 列表

11.9 v210

未壓縮 4:2:2 10 位元解碼器。

11.9.1 選項

custom_stride

設定 v210 資料的行大小(以位元組為單位)。預設值為 0(自動偵測)。您可以將特殊值 -1 用於 BOXX 檔案中看到的無 stride v210。

12 音訊解碼器

以下是一些目前可用的音訊解碼器的描述。

12.1 ac3

AC-3 音訊解碼器。

此解碼器實作了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分,以及未記錄的 RealAudio 3(又名 dnet)。

12.1.1 AC-3 解碼器選項

-drc_scale value

動態範圍縮放因子。要應用於 AC-3 串流中動態範圍值的因子。此因子以指數方式應用。預設值為 1。有 3 個值得注意的縮放因子範圍

drc_scale == 0

DRC 已停用。產生全範圍音訊。

0 < drc_scale <= 1

DRC 已啟用。應用串流 DRC 值的一部分。音訊重現介於全範圍和全壓縮之間。

drc_scale > 1

DRC 已啟用。非對稱地應用 drc_scale。響亮的聲音會被完全壓縮。柔和的聲音會被增強。

12.2 flac

FLAC 音訊解碼器。

此解碼器旨在實作 Xiph 的完整 FLAC 規範。

12.2.1 FLAC 解碼器選項

-use_buggy_lpc

lavc FLAC 編碼器過去會產生具有高 lpc 值(例如預設值)的錯誤串流。此選項透過使用 lavc 舊的錯誤 lpc 邏輯進行解碼,使其可以正確解碼此類串流。

12.3 ffwavesynth

內部波形合成器。

此解碼器根據預定義的序列產生波形模式。它的使用純粹是內部的,並且它接受的資料格式未公開記錄。

12.4 libcelt

libcelt 解碼器 wrapper。

libcelt 允許 libavcodec 解碼 Xiph CELT 超低延遲音訊編碼。組態時需要存在 libcelt 標頭和函式庫。您需要使用 --enable-libcelt 明確組態建置。

12.5 libgsm

libgsm 解碼器 wrapper。

libgsm 允許 libavcodec 解碼 GSM 全速率音訊編碼。組態時需要存在 libgsm 標頭和函式庫。您需要使用 --enable-libgsm 明確組態建置。

此解碼器同時支援普通的 GSM 和 Microsoft 變體。

12.6 libilbc

libilbc 解碼器 wrapper。

libilbc 允許 libavcodec 解碼網際網路低位元速率編碼 (iLBC) 音訊編碼。組態時需要存在 libilbc 標頭和函式庫。您需要使用 --enable-libilbc 明確組態建置。

12.6.1 選項

libilbc wrapper 支援以下選項。

enhance

設定為 1 時,啟用解碼音訊的增強功能。預設值為 0(停用)。

12.7 libopencore-amrnb

libopencore-amrnb 解碼器 wrapper。

libopencore-amrnb 允許 libavcodec 解碼自適應多速率窄頻音訊編碼。使用它需要組態時存在 libopencore-amrnb 標頭和函式庫。您需要使用 --enable-libopencore-amrnb 明確組態建置。

存在適用於 AMR-NB 的 FFmpeg 原生解碼器,因此使用者無需此函式庫即可解碼 AMR-NB。

12.8 libopencore-amrwb

libopencore-amrwb 解碼器 wrapper。

libopencore-amrwb 允許 libavcodec 解碼自適應多速率寬頻音訊編碼。使用它需要組態時存在 libopencore-amrwb 標頭和函式庫。您需要使用 --enable-libopencore-amrwb 明確組態建置。

存在適用於 AMR-WB 的 FFmpeg 原生解碼器,因此使用者無需此函式庫即可解碼 AMR-WB。

12.9 libopus

libopus 解碼器 wrapper。

libopus 允許 libavcodec 解碼 Opus Interactive Audio Codec。組態時需要存在 libopus 標頭和函式庫。您需要使用 --enable-libopus 明確組態建置。

存在適用於 Opus 的 FFmpeg 原生解碼器,因此使用者無需此函式庫即可解碼 Opus。

13 字幕解碼器

13.1 libaribb24

ARIB STD-B24 字幕解碼器。

實作 ARIB STD-B24 標準的設定檔 A 和 C。

13.1.1 libaribb24 解碼器選項

-aribb24-base-path path

設定 libaribb24 函式庫的基礎路徑。這用於讀取組態檔案(用於自訂 unicode 轉換),以及用於將非文字符號作為圖片傾印到該位置下。

預設為未設定。

-aribb24-skip-ruby-text boolean

告知解碼器 wrapper 跳過包含半高 ruby 文字的文字區塊。

預設為啟用。

13.2 libaribcaption

另一個使用外部 libaribcaption 函式庫的 ARIB STD-B24 字幕解碼器。

實作日本 ARIB STD-B24 標準、巴西 ABNT NBR 15606-1 和菲律賓 ISDB-T 版本的設定檔 A 和 C。

組態時需要存在 libaribcaption 標頭和函式庫 (https://github.com/xqq/libaribcaption)。您需要使用 --enable-libaribcaption 明確組態建置。如果同時啟用 libaribb24libaribcaption,則 libaribcaption 解碼器優先。

13.2.1 libaribcaption 解碼器選項

-sub_type subtitle_type

指定解碼字幕的格式。

bitmap

圖形影像。

ass

ASS 格式化文字。

text

沒有格式的簡單文字輸出。

預設值為 ass,與 libaribb24 解碼器相同。某些現有的播放器(例如,mpv)期望 ARIB 字幕使用 ASS 格式。

-caption_encoding encoding_scheme

指定輸入字幕文字的編碼方案。

auto

自動偵測文字編碼(預設)。

jis

ARIB STD B24 中定義的 8 位元字元 JIS 編碼。此編碼在日本用於 ISDB 字幕。

utf8

ARIB STD B24 中定義的 UTF-8 編碼。此編碼在菲律賓用於 ISDB-T 字幕。

latin

ABNT NBR 15606-1 中定義的拉丁字元編碼。此編碼在南美洲用於 SBTVD / ISDB-Tb 字幕。

-font font_name[,font_name2,...]

指定要用於 bitmapass 類型字幕渲染的以逗號分隔的字型系列名稱列表。只有第一個字型名稱用於 ass 類型字幕。

如果未指定,則使用內部定義的預設字型系列。

-ass_single_rect boolean

ARIB STD-B24 規範指定某些字幕可以同時顯示在不同的位置(多矩形字幕)。由於某些播放器(例如,舊的 mpv)無法處理單個 AVSubtitle 中的多個 ASS 矩形,或具有相同開始時間戳記的多個持續時間不確定的 ASS 矩形,因此此選項可以變更行為,以便所有文字都顯示在單個 ASS 矩形中。

預設值為 false

如果您的播放器無法正確處理具有多個 ASS 矩形的 AVSubtitles,請將此選項設定為 true 或定義 ASS_SINGLE_RECT=1 以在編譯時變更預設行為。

-force_outline_text boolean

指定是否始終為所有字元渲染輪廓文字,無論字元樣式是否有指示。

預設值為 false

-outline_width number (0.0 - 3.0)

指定輪廓文字的寬度,以點(相對)為單位。

預設值為 1.5

-ignore_background boolean

指定是否忽略背景顏色渲染。

預設值為 false

-ignore_ruby boolean

指定是否忽略 ruby 類型(假名標注)字元的渲染。

預設值為 false

-replace_drcs boolean

指定是否將替換的 DRCS 字元渲染為 Unicode 字元。

預設值為 true

-replace_msz_ascii boolean

指定是否將 MSZ(中等大小;半寬)全形英數字元替換為半形英數字元。

預設值為 true

-replace_msz_japanese boolean

指定是否將一些 MSZ(中等大小;半寬)全形日文特殊字元替換為半形字元。

預設值為 true

-replace_msz_glyph boolean

指定如果字型支援,是否將 MSZ(中等大小;半寬)字元替換為半形字形。此選項適用於使用 FreeType 或 DirectWrite 渲染器以及符合 Adobe-Japan1 標準的字型。例如,IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho 和 Meiryo。

預設值為 true

-canvas_size image_size

指定渲染字幕的畫布解析度;通常,這應該是輸入視訊的影格大小。這僅在 -subtitle_type 設定為 bitmap 時適用。

libaribcaption 解碼器假定用於點陣圖渲染的輸入影格大小如下

  1. PROFILE_A:1440 x 1080,SAR (PAR) 4:3
  2. PROFILE_C:320 x 180,SAR (PAR) 1:1

如果輸入視訊的實際影格大小與上述假設不符,則渲染的字幕可能會失真。為了使字幕不失真,請新增 -canvas_size 選項以指定實際的輸入視訊大小。

請注意,對於大小不同但長寬比相同的視訊,不需要 -canvas_size 選項。在這種情況下,如果未指定 -canvas_size 選項,字幕將被拉伸或縮小到實際視訊大小。如果指定了具有不同大小的 -canvas_size 選項,則字幕將被拉伸或縮小為指定大小並計算 SAR。

13.2.2 libaribcaption 解碼器使用範例

使用 ffplay 工具顯示帶有 ARIB 字幕的 MPEG-TS 檔案

ffplay -sub_type bitmap MPEG.TS

使用 ffplay 工具顯示輸入影格大小為 1920x1080 的 MPEG-TS 檔案

ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS

在轉碼視訊中嵌入 ARIB 字幕

ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4

13.3 dvbsub

13.3.1 選項

compute_clut
-2

如果串流中沒有相符的 CLUT,則計算 CLUT 一次。

-1

如果串流中沒有相符的 CLUT,則計算 CLUT。

0

永不計算 CLUT

1

總是計算 CLUT 並覆寫串流中提供的 CLUT。

dvb_substream

選擇 dvb 子串流,或若為 -1 (預設值) 則選擇所有子串流。

13.4 dvdsub

此編碼器解碼 DVD 中使用的點陣圖字幕;相同的字幕也可以在 VobSub 檔案組和一些 Matroska 檔案中找到。

13.4.1 選項

palette

指定點陣圖使用的全域調色盤。當儲存在 VobSub 中時,調色盤通常在索引檔案中指定;在 Matroska 中,調色盤以與 VobSub 相同的格式儲存在編碼器額外資料中。在 DVD 中,調色盤儲存在 IFO 檔案中,因此從傾印的 VOB 檔案讀取時不可用。

此選項的格式為一個字串,包含 16 個以逗號分隔的 24 位元十六進位數字 (不含 0x 前綴),例如 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b

ifo_palette

指定從中取得全域調色盤的 IFO 檔案。(實驗性功能)

forced_subs_only

僅解碼標記為強制的字幕條目。某些標題在同一個軌道中同時具有強制和非強制字幕。將此旗標設定為 1 將只保留強制字幕。預設值為 0

13.5 libzvbi-teletext

Libzvbi 允許 libavcodec 解碼 DVB 圖文電視頁面和 DVB 圖文電視字幕。在配置期間需要 libzvbi 標頭和函式庫的存在。您需要使用 --enable-libzvbi 明確配置建置。

13.5.1 選項

txt_page

要解碼的圖文電視頁碼列表。不符合指定列表的頁面將被捨棄。您可以使用特殊字串 * 來比對所有頁面,或使用 subtitle 來比對所有字幕頁面。預設值為 *。

txt_default_region

設定用於解碼的預設字元集,值介於 0 到 87 之間 (請參閱 ETS 300 706,第 15 節,表 32)。預設值為 -1,這不會覆寫 libzvbi 預設值。對於某些無法發送信號告知正確字元集的舊版 1.0 傳輸,此選項是必要的。

txt_chop_top

捨棄頂部的圖文電視行。預設值為 1。

txt_format

指定解碼字幕的格式。

bitmap

預設格式,您應該將此格式用於圖文電視頁面,因為某些圖形和顏色無法用簡單的文字甚至 ASS 來表達。

text

沒有格式的簡單文字輸出。

ass

格式化的 ASS 輸出,字幕頁面和圖文電視頁面以不同的樣式傳回,字幕頁面被簡化為文字,但會盡力保持文字對齊和格式。

txt_left

產生點陣圖的 X 偏移量,預設值為 0。

txt_top

產生點陣圖的 Y 偏移量,預設值為 0。

txt_chop_spaces

裁切產生的文字中開頭和結尾的空格,並移除空白行。此選項對於基於圖文電視的字幕很有用,在這些字幕中,行首或行尾可能存在空格,或者字幕行之間可能因為雙倍大小的圖文電視字元而存在空白行。預設值為 1。

txt_duration

設定解碼後的圖文電視頁面或字幕的顯示持續時間,以毫秒為單位。預設值為 -1,表示無限期或直到下一個字幕事件發生。

txt_transparent

強制產生圖文電視點陣圖的透明背景。預設值為 0,表示不透明背景。

txt_opacity

設定圖文電視背景的不透明度 (0-255)。如果未設定 txt_transparent,則僅影響起始框和結束框之間的字元,通常是字幕。如果設定 txt_transparent,預設值為 0,否則為 255。

14 編碼器

編碼器是 FFmpeg 中配置的元素,允許對多媒體串流進行編碼。

當您配置 FFmpeg 建置時,所有支援的原生編碼器預設為啟用。需要外部函式庫的編碼器必須透過對應的 --enable-lib 選項手動啟用。您可以使用配置選項 --list-encoders 列出所有可用的編碼器。

您可以使用配置選項 --disable-encoders 停用所有編碼器,並使用選項 --enable-encoder=ENCODER / --disable-encoder=ENCODER 選擇性地啟用/停用單個編碼器。

ff* 工具的 -encoders 選項將顯示已啟用編碼器的列表。

15 音訊編碼器

以下是一些目前可用的音訊編碼器的描述。

15.1 aac

進階音訊編碼 (AAC) 編碼器。

此編碼器是預設的 AAC 編碼器,原生實作於 FFmpeg 中。

15.1.1 選項

b

設定位元率,單位為 位元/秒 (bits/s)。設定此選項會自動啟用固定位元率 (CBR) 模式。如果未指定此選項,則預設值為 128kbps。

q

設定可變位元率 (VBR) 模式的品質。此選項僅在使用 ffmpeg 命令列工具時有效。對於函式庫介面使用者,請使用 global_quality

cutoff

設定截止頻率。如果未指定,將允許編碼器動態調整截止頻率,以提高低位元率下的清晰度。

aac_coder

設定 AAC 編碼器編碼方法。可能的值

twoloop

雙迴圈搜尋 (TLS) 方法。這是預設方法。

此方法首先根據頻帶閾值設定量化器,然後嘗試透過在所有量化器中加入或減去特定值,並稍微調整一些個別量化器,來找到最佳組合。將根據 aac_isaac_msaac_pns 是否啟用來自行調整。

anmr

基於格狀結構的平均雜訊遮蔽比 (ANMR) 解決方案。

這是一個實驗性編碼器,目前產生較低的品質,更不穩定且比預設的 twoloop 編碼器慢,但具有潛力。目前不支援 aac_isaac_pns 選項。目前不建議使用。

fast

固定量化器方法。

使用較便宜版本的 twoloop 演算法,該演算法不會嘗試進行許多巧妙的調整。在低位元率 (小於 64kbps) 下表現較差,但在較高位元率下表現更好且速度更快。

aac_ms

設定中/側聲道編碼模式。預設值 "auto" 將自動對受益於此類編碼的頻帶使用 M/S 編碼。可以使用值 "enable" 強制對所有頻帶使用,這主要用於除錯,或者使用 "disable" 停用。

aac_is

設定強度立體聲編碼工具的使用。預設情況下,它是啟用的,如果有利,將自動為相似的立體聲頻帶對切換 IS。可以透過將值設定為 "disable" 來停用以進行除錯。

aac_pns

使用感知雜訊替換在解碼過程中將低熵高頻頻帶替換為不可察覺的白雜訊。預設情況下,它是啟用的,但可以透過使用 "disable" 為除錯目的停用。

aac_tns

啟用多抽頭 FIR 濾波器的使用,該濾波器跨越高頻頻帶以隱藏編碼過程中的量化雜訊,並由解碼器還原。除了減少高頻範圍內令人不悅的失真之外,這也降低了高頻頻帶中的熵,並允許更多位元用於中低頻頻帶。預設情況下它是啟用的,但可以透過將選項設定為 "disable" 來停用以進行除錯。

aac_ltp

啟用長期預測擴展的使用,這透過在整個訊框中擴展頻帶中的恆定諧波峰值,來提高極低頻寬情況下的編碼效率,例如語音或獨奏鋼琴音樂的編碼。此選項由 profile:a aac_low 隱含,且與 aac_pred 不相容。與 -ar 結合使用可降低取樣率。

aac_pred

啟用更傳統風格的預測的使用,其中傳輸的頻譜係數被替換為當前係數減去先前的「預測」係數的差值。理論上,有時在實務中,這可以提高中低位元率音訊的品質。此選項隱含 aac_main 設定檔,且與 aac_ltp 不相容。

profile

設定編碼設定檔,可能的值

aac_low

預設值,AAC「低複雜度」設定檔。是最相容且產生良好品質的設定檔。

mpeg2_aac_low

等同於 -profile:a aac_low -aac_pns 0。PNS 是在 MPEG4 規範中引入的。

aac_ltp

長期預測設定檔,由 aac_ltp 選項啟用並將啟用該選項。在 MPEG4 中引入。

aac_main

主要類型預測設定檔,由 aac_pred 選項啟用並將啟用該選項。在 MPEG2 中引入。

如果未指定此選項,則預設值為 ‘aac_low’。

15.2 ac3 與 ac3_fixed

AC-3 音訊編碼器。

這些編碼器實作了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分。

ac3 編碼器使用浮點數學,而 ac3_fixed 編碼器僅使用定點整數數學。這並不表示其中一個總是更快,只是其中一個可能更適合特定系統。ac3_fixed 編碼器不是任何輸出格式的預設編碼解碼器,因此必須明確使用選項 -acodec ac3_fixed 才能使用它。

15.2.1 AC-3 Metadata

AC-3 元資料選項用於設定描述音訊的參數,但在大多數情況下,它們本身並不影響音訊編碼。某些選項會直接影響或影響結果位元串流的解碼和播放,而其他選項僅用於資訊目的。少數選項會將位元添加到輸出串流中,這些位元原本可以用於音訊資料,因此會影響輸出品質。這些選項將在下面的選項列表中相應地標示註記。

這些參數在幾份公開文件中詳細描述。

15.2.1.1 Metadata 控制選項

-per_frame_metadata boolean

允許每訊框元資料。指定編碼器是否應檢查每個訊框的變更元資料。

0

在初始化時設定的元資料值將用於串流中的每個訊框。(預設值)

1

元資料值可以在編碼每個訊框之前變更。

15.2.1.2 降混音準位

-center_mixlev level

中央聲道混音位準。解碼器在向下混合為立體聲時應套用於中央聲道的增益量。只有在存在中央聲道時,此欄位才會寫入位元串流。該值指定為比例因子。有 3 個有效值

0.707

套用 -3dB 增益

0.595

套用 -4.5dB 增益 (預設值)

0.500

套用 -6dB 增益

-surround_mixlev level

環繞聲道混音位準。解碼器在向下混合為立體聲時應套用於環繞聲道的增益量。只有在存在一個或多個環繞聲道時,此欄位才會寫入位元串流。該值指定為比例因子。有 3 個有效值

0.707

套用 -3dB 增益

0.500

套用 -6dB 增益 (預設值)

0.000

靜音環繞聲道

15.2.1.3 音訊製作資訊

音訊製作資訊是描述混音環境的可選資訊。欄位可以都不寫入或都寫入位元串流。

-mixing_level number

混音位準。指定混音母帶製作時,製作環境中的峰值聲壓位準 (SPL)。有效值為 80 到 111,或 -1 表示未知或未指示。預設值為 -1,但如果音訊製作資訊寫入位元串流,則不能使用該值。因此,如果 room_type 選項不是預設值,則 mixing_level 選項不得為 -1。

-room_type type

房間類型。描述在錄音室或配音舞台的最終混音階段使用的等化。大型房間是具有產業標準 X 曲線等化的配音舞台;小型房間具有平坦等化。如果 mixing_level 選項和 room_type 選項都為預設值,則此欄位不會寫入位元串流。

0
notindicated

未指示 (預設值)

1
large

大型房間

2
small

小型房間

15.2.1.4 其他 Metadata 選項

-copyright boolean

版權指示器。指定此音訊是否存在版權。

0
off

不存在版權 (預設值)

1
on

存在版權

-dialnorm value

對白標準化。指示節目的平均對白位準低於數位 100% 滿刻度 (0 dBFS) 的程度。此參數決定音訊重製期間的位準偏移,將對白的平均音量設定為預設位準。目標是匹配節目來源之間的音量位準。值 -31dB 將導致音訊重製期間沒有相對於來源音量的音量位準變化。有效值是 -31 到 -1 範圍內的整數,-31 是預設值。

-dsur_mode mode

Dolby Surround 模式。指定立體聲訊號是否使用 Dolby Surround (Pro Logic)。只有在音訊串流為立體聲時,此欄位才會寫入位元串流。使用此選項表示編碼器實際上會應用 Dolby Surround 處理。

0
notindicated

未指示 (預設值)

1
off

未進行 Dolby Surround 編碼

2
on

已進行 Dolby Surround 編碼

-original boolean

原始位元串流指示器。指定此音訊是否來自原始來源而不是副本。

0
off

非原始來源

1
on

原始來源 (預設值)

15.2.2 Extended Bitstream Information

擴展位元串流選項是 A/52:2010 標準附件 D 中指定的替換位元串流語法的一部分。它分為 2 個部分。如果指定群組中的任何一個參數,則該群組中的所有值都將寫入位元串流。對於已寫入但未指定的參數,將使用預設值。如果寫入了混音位準,則如果解碼器支援替換位元串流語法,它將使用這些值,而不是 center_mixlevsurround_mixlev 選項中指定的值。

15.2.2.1 Extended Bitstream Information - Part 1

-dmix_mode mode

偏好的立體聲向下混音模式。允許使用者選擇 Lt/Rt (Dolby Surround) 或 Lo/Ro (普通立體聲) 作為偏好的立體聲向下混音模式。

0
notindicated

未指示 (預設值)

1
ltrt

偏好 Lt/Rt 向下混音

2
loro

偏好 Lo/Ro 向下混音

-ltrt_cmixlev level

Lt/Rt 中央聲道混音位準。解碼器在 Lt/Rt 模式下向下混合為立體聲時應套用於中央聲道的增益量。

1.414

套用 +3dB 增益

1.189

套用 +1.5dB 增益

1.000

套用 0dB 增益

0.841

套用 -1.5dB 增益

0.707

套用 -3.0dB 增益

0.595

套用 -4.5dB 增益 (預設值)

0.500

套用 -6.0dB 增益

0.000

靜音中央聲道

-ltrt_surmixlev level

Lt/Rt 環繞聲道混音位準。解碼器在 Lt/Rt 模式下向下混合為立體聲時應套用於環繞聲道的增益量。

0.841

套用 -1.5dB 增益

0.707

套用 -3.0dB 增益

0.595

套用 -4.5dB 增益

0.500

套用 -6.0dB 增益 (預設值)

0.000

靜音環繞聲道

-loro_cmixlev level

Lo/Ro 中央聲道混音位準。解碼器在 Lo/Ro 模式下向下混合為立體聲時應套用於中央聲道的增益量。

1.414

套用 +3dB 增益

1.189

套用 +1.5dB 增益

1.000

套用 0dB 增益

0.841

套用 -1.5dB 增益

0.707

套用 -3.0dB 增益

0.595

套用 -4.5dB 增益 (預設值)

0.500

套用 -6.0dB 增益

0.000

靜音中央聲道

-loro_surmixlev level

Lo/Ro 環繞聲道混音位準。解碼器在 Lo/Ro 模式下向下混合為立體聲時應套用於環繞聲道的增益量。

0.841

套用 -1.5dB 增益

0.707

套用 -3.0dB 增益

0.595

套用 -4.5dB 增益

0.500

套用 -6.0dB 增益 (預設值)

0.000

靜音環繞聲道

15.2.2.2 Extended Bitstream Information - Part 2

-dsurex_mode mode

杜比環繞EX模式。 指出串流是否使用杜比環繞EX (7.1 矩陣編碼為 5.1)。 使用此選項表示編碼器實際上會應用杜比環繞EX處理。

0
notindicated

未指示 (預設值)

1
on

杜比環繞EX 關閉

2
off

杜比環繞EX 開啟

-dheadphone_mode mode

杜比耳機模式。 指出串流是否使用杜比耳機編碼 (多聲道矩陣編碼為 2.0,供耳機使用)。 使用此選項表示編碼器實際上會應用杜比耳機處理。

0
notindicated

未指示 (預設值)

1
on

杜比耳機 關閉

2
off

杜比耳機 開啟

-ad_conv_type type

A/D 轉換器類型。 指出音訊是否已通過 HDCD A/D 轉換。

0
standard

標準 A/D 轉換器 (預設)

1
hdcd

HDCD A/D 轉換器

15.2.3 其他 AC-3 編碼選項

-stereo_rematrixing boolean

立體聲重新矩陣化。 啟用/停用對立體聲輸入使用重新矩陣化。 這是 AC-3 的可選功能,透過選擇性地將左右聲道編碼為中/側聲道來提高品質。 此選項預設為啟用,強烈建議保持啟用狀態,除非用於測試目的。

cutoff frequency

設定低通截止頻率。 如果未指定,編碼器會根據各種其他編碼參數選擇預設值。

15.2.4 僅限浮點 AC-3 編碼選項

這些選項僅對浮點編碼器有效,並且由於對應的功能未在定點中實作,因此對定點編碼器無效。

-channel_coupling boolean

啟用/停用通道耦合的使用,這是一個可選的 AC-3 功能,透過將來自多個通道的高頻資訊組合到單個通道中來提高品質。 每個通道的高頻資訊在頻域和時域中的精確度都較低。 這允許將更多位元用於較低頻率,同時保留足夠的資訊來重建高頻。 此選項對於浮點編碼器預設為啟用,通常應保持啟用狀態,除非用於測試目的或提高編碼速度。

-1
auto

由編碼器選取 (預設)

0
off

停用通道耦合

1
on

啟用通道耦合

-cpl_start_band number

耦合起始頻帶。 設定通道耦合起始頻帶,範圍從 1 到 15。 如果使用的值高於頻寬,它將減少到比耦合結束頻帶小 1。 如果使用 auto,起始頻帶將由編碼器根據位元率、取樣率和通道佈局來確定。 如果停用通道耦合,此選項無效。

-1
auto

由編碼器選取 (預設)

15.3 ffv1

FFv1 編碼器

15.3.1 選項

以下選項由 FFmpeg 的 FFv1 編碼器支援。

context

設定上下文大小,0 (預設) 為小,1 為大。

coder

設定編碼器,

rice

Golomb rice 編碼器

range_def

具有預設表格的範圍編碼器

range_tab

具有自訂表格的範圍編碼器

slicecrc

-1 (預設,自動), 1 使用具有零初始和最終狀態的 crc,2 使用具有非零初始和最終狀態的 crc

qtable
default

預設,自動

8bit

使用 8 位元預設值

greater8bit

使用 >8 位元預設值

15.4 flac

FLAC (免費無損音訊編碼器) 編碼器

15.4.1 選項

以下選項由 FFmpeg 的 flac 編碼器支援。

compression_level

設定壓縮等級,如果未明確設定,它會為許多其他選項選擇預設值。 有效值為 0 到 12,預設值為 5。

frame_size

設定每聲道幀的大小 (以樣本為單位)。

lpc_coeff_precision

設定 LPC 係數精度,有效值為 1 到 15,預設值為 15。

lpc_type

設定第一階段 LPC 演算法

none

不使用 LPC

fixed

固定 LPC 係數

levinson
cholesky
lpc_passes

在 LPC 分析期間用於 Cholesky 分解的次數

min_partition_order

最小分割階數

max_partition_order

最大分割階數

prediction_order_method
estimation
2level
4level
8level
search

暴力搜尋

log
ch_mode

通道模式

auto

每個幀的模式都會自動選擇

indep

通道被獨立編碼

left_side
right_side
mid_side
exact_rice_parameters

選擇是否精確或近似計算 rice 參數。 如果設定為 1,則會精確選擇它們,這會稍微減慢程式碼速度並稍微提高壓縮率。

multi_dim_quant

多維量化。 如果設定為 1,則在第一階段之後應用第二階段 LPC 演算法來微調係數。 這相當慢,但稍微提高了壓縮率。

15.5 opus

Opus 編碼器。

這是 Opus 格式的原生 FFmpeg 編碼器。 目前,它仍在開發中,僅實作編解碼器的 CELT 部分。 其品質通常較差,最好的情況下與 libopus 編碼器相當。

15.5.1 選項

b

設定位元率,單位為位元/秒。 如果未指定,它會使用通道數和佈局來做出合理的猜測。

opus_delay

設定最大延遲,單位為毫秒。 低於 20 毫秒的延遲會很快降低品質。

15.6 libfdk_aac

libfdk-aac AAC (進階音訊編碼) 編碼器封裝器。

libfdk-aac 函式庫基於 Android 專案中的 Fraunhofer FDK AAC 程式碼。

在配置期間需要 libfdk-aac 標頭和函式庫。 您需要使用 --enable-libfdk-aac 明確配置建置。 該函式庫也與 GPL 不相容,因此如果您允許使用 GPL,則應使用 --enable-gpl --enable-nonfree --enable-libfdk-aac 進行配置。

此編碼器支援 AAC-HE 配置文件。

VBR 編碼,透過 vbrflags +qscale 選項啟用,是實驗性的,僅適用於某些參數組合。

僅 libfdk-aac 0.1.3 或更高版本支援編碼 7.1 音訊。

如需更多資訊,請參閱 fdk-aac 專案,網址為 http://sourceforge.net/p/opencore-amr/fdk-aac/

15.6.1 選項

以下選項對應到共用的 FFmpeg 編解碼器選項。

b

設定位元率,單位為位元/秒。 如果未明確指定位元率,則會根據選取的配置文件自動設定為合適的值。

如果啟用 VBR 模式,則會忽略此選項。

ar

設定音訊採樣率(單位為 Hz)。

channels

設定音訊通道數。

flags +qscale

啟用固定品質、VBR (可變位元率) 模式。 請注意,當 vbr 值為正數時,會隱含地啟用 VBR。

cutoff

設定截止頻率。 如果未指定 (或明確設定為 0),它將使用由函式庫自動計算的值。 預設值為 0。

profile

設定音訊配置文件。

以下是可辨識的配置文件

aac_low

低複雜度 AAC (LC)

aac_he

高效率 AAC (HE-AAC)

aac_he_v2

高效率 AAC 版本 2 (HE-AACv2)

aac_ld

低延遲 AAC (LD)

aac_eld

增強型低延遲 AAC (ELD)

如果未指定,則設定為 ‘aac_low’。

以下是 libfdk_aac 編碼器的私有選項。

afterburner

如果設定為 1,則啟用後燃器功能,如果設定為 0,則停用。 這可以提高品質,但也需要更高的處理能力。

預設值為 1。

eld_sbr

如果設定為 1,則為 ELD 啟用 SBR (頻譜帶複製),如果設定為 0,則停用。

預設值為 0。

eld_v2

如果設定為 1,則為 ELDv2 啟用 ELDv2 (ELD 立體聲訊號的 LD-MPS 擴展),如果設定為 0,則停用。

請注意,當 fdk-aac 版本 (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0) 時,此選項才可用。

預設值為 0。

signaling

設定 SBR/PS 信號樣式。

它可以採用以下值之一

default

隱含地選擇信號 (預設為明確分層,如果停用全域標頭則為隱含)

implicit

隱含向後相容信號

explicit_sbr

明確 SBR,隱含 PS 信號

explicit_hierarchical

明確分層信號

預設值為 ‘default’。

latm

如果設定為 1,則輸出 LATM/LOAS 封裝資料,如果設定為 0,則停用。

預設值為 0。

header_period

設定 StreamMuxConfig 和 PCE 重複週期 (以幀為單位),以便在 LATM/LOAS 傳輸層中發送頻內配置緩衝區。

必須是 16 位元的非負整數。

預設值為 0。

vbr

設定 VBR 模式,範圍從 1 到 5。 1 是最低品質 (但仍然相當不錯),而 5 是最高品質。 值為 0 將停用 VBR,並啟用 CBR (恆定位元率)。

目前只有 ‘aac_low’ 配置文件支援 VBR 編碼。

VBR 模式 1-5 大約對應以下平均位元率

1

32 kbps/通道

2

40 kbps/通道

3

48-56 kbps/通道

4

64 kbps/通道

5

約 80-96 kbps/通道

預設值為 0。

frame_length

設定音訊幀長度,單位為樣本。 預設值為函式庫的內部預設值。 有關支援值的資訊,請參閱函式庫的文件。

15.6.2 範例

  • 使用 ffmpeg 將音訊檔案轉換為 M4A (MP4) 容器中的 VBR AAC
    ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
    
  • 使用 ffmpeg 將音訊檔案轉換為 CBR 64k kbps AAC,並使用高效率 AAC 配置文件
    ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
    

15.7 liblc3

liblc3 LC3 (低複雜度通訊編解碼器) 編碼器封裝器。

在配置期間需要 liblc3 標頭和函式庫。 您需要使用 --enable-liblc3 明確配置建置。

此編碼器支援用於 LE Audio 協定的藍牙 SIG LC3 編解碼器,以及 LC3plus 的以下功能

  • 幀持續時間為 2.5 毫秒和 5 毫秒。
  • 高解析度模式,48 KHz 和 96 kHz 取樣率。

如需更多資訊,請參閱 liblc3 專案,網址為 https://github.com/google/liblc3

15.7.1 選項

以下選項對應到共用的 FFmpeg 編解碼器選項。

b bitrate

設定位元率,單位為位元/秒。 這將決定編碼幀的固定大小,用於選定的幀持續時間。

ar frequency

設定音訊取樣率 (以 Hz 為單位)。

channels

設定音訊通道數。

frame_duration

設定音訊幀持續時間,單位為毫秒。 預設值為 10 毫秒。 允許的幀持續時間為 2.5 毫秒、5 毫秒、7.5 毫秒和 10 毫秒。 LC3 (藍牙 LE 音訊) 允許 7.5 毫秒和 10 毫秒;而 LC3plus 允許 2.5 毫秒、5 毫秒和 10 毫秒。

10 毫秒的幀持續時間在 LC3 和 LC3 plus 標準中都可用。 在此模式下,產生的位元串流可以參考為 LC3 或 LC3plus。

high_resolution boolean

如果設定為 1,則啟用高解析度模式。 高解析度模式適用於所有 LC3plus 幀持續時間以及 48 KHz 和 96 KHz 的取樣率。

編碼器會在較低的取樣率下自動關閉此模式,並在 96 KHz 時啟動它。

在高位元率下應優先選擇此模式。 在此模式下,音訊頻寬始終高達奈奎斯特頻率,而 48 KHz 的 LC3 將頻寬限制為 20 KHz。

15.8 libmp3lame

LAME (Lame Ain’t an MP3 Encoder) MP3 編碼器封裝器。

在配置期間需要 libmp3lame 標頭和函式庫。 您需要使用 --enable-libmp3lame 明確配置建置。

有關定點 MP3 編碼器,請參閱 libshine,但品質較低。

15.8.1 選項

以下選項由 libmp3lame 封裝器支援。 選項的 lame 等效項列在括號中。

b (-b)

設定以位元/秒表示的 CBR 或 ABR 位元率。 LAME bitrate 以千位元/秒表示。

q (-V)

設定 VBR 的恆定品質設定。 此選項僅在使用 ffmpeg 命令列工具時有效。 對於函式庫介面使用者,請使用 global_quality

compression_level (-q)

設定演算法品質。 有效參數是 0-9 範圍內的整數,其中 0 表示最高品質但最慢,而 9 表示最快但產生最差品質。

cutoff (--lowpass)

設定低通截止頻率。 如果未指定,編碼器會動態調整截止頻率。

reservoir

如果設定為 1,則啟用位元儲存槽的使用。 預設值為 1。 LAME 預設啟用此功能,但可以使用 --nores 選項覆寫。

joint_stereo (-m j)

啟用編碼器 (逐幀) 使用 L/R 立體聲或中/側立體聲。 預設值為 1。

abr (--abr)

如果設定為 1,則啟用編碼器使用 ABR。 lame --abr 設定目標位元率,而此選項僅告知 FFmpeg 使用 ABR,仍然依賴 b 來設定位元率。

copyright (-c)

如果設定為 1,則設定 MPEG 音訊版權標誌。 預設值為 0 (停用)。

original (-o)

如果設定為 1,則設定 MPEG 音訊原始標誌。 預設值為 1 (啟用)。

15.9 libopencore-amrnb

OpenCORE Adaptive Multi-Rate Narrowband 編碼器。

在配置期間需要 libopencore-amrnb 標頭和函式庫。 您需要使用 --enable-libopencore-amrnb --enable-version3 明確配置建置。

這是一個僅限單聲道的編碼器。 官方來說,它僅支援 8000Hz 取樣率,但您可以透過將 strict 設定為 ‘unofficial’ 或更低來覆寫它。

15.9.1 選項

b

設定位元率,單位為位元/秒。 僅支援以下位元率,否則 libavcodec 將捨入到最接近的有效位元率。

4750
5150
5900
6700
7400
7950
10200
12200
dtx

如果設定為 1,則允許不連續傳輸 (產生舒適雜訊)。 預設值為 0 (停用)。

15.10 libopus

libopus Opus Interactive Audio Codec 編碼器封裝器。

在配置期間需要 libopus 標頭和函式庫。 您需要使用 --enable-libopus 明確配置建置。

15.10.1 選項映射

大多數 libopus 選項都以 opus-tools 的 opusenc 實用程式為模型。 以下是一個選項對應表,描述了 libopus 封裝器支援的選項及其 opusenc 等效項 (在括號中)。

b (bitrate)

設定位元率,單位為位元/秒。 FFmpeg 的 b 選項以位元/秒表示,而 opusencbitrate 以千位元/秒表示。

vbr (vbr, hard-cbr, and cvbr)

設定 VBR 模式。 FFmpeg 的 vbr 選項具有以下有效參數,opusenc 等效選項在括號中

off (hard-cbr)

使用恆定位元率編碼。

on (vbr)

使用可變位元率編碼 (預設)。

constrained (cvbr)

使用受限可變位元率編碼。

compression_level (comp)

設定編碼演算法複雜度。 有效選項是 0-10 範圍內的整數。 0 提供最快的編碼但品質較低,而 10 提供最高品質但最慢的編碼。 預設值為 10。

frame_duration (framesize)

設定最大幀大小,或幀的持續時間,單位為毫秒。 參數必須是以下之一:2.5、5、10、20、40、60。 較小的幀大小在給定的位元率下實現更低的延遲但品質較低。 大於 20 毫秒的大小僅在相當低的位元率下才有意義。 預設值為 20 毫秒。

packet_loss (expect-loss)

設定預期封包遺失百分比。 預設值為 0。

fec (n/a)

啟用頻內前向錯誤更正。 packet_loss 必須為非零才能利用 - FEC '側數據' 的頻率與預期封包遺失成正比。 預設為停用。

application (N.A.)

設定預期的應用程式類型。 有效選項如下

voip

偏好提高語音清晰度。

audio

偏好忠實於輸入 (預設)。

lowdelay

透過停用語音最佳化模式,限制為僅使用最低延遲模式。

cutoff (N.A.)

設定截止頻寬,單位為 Hz。參數必須為以下其中一個:4000、6000、8000、12000 或 20000,分別對應窄頻、中頻、寬頻、超寬頻和全頻。預設值為 0(截止功能停用)。請注意,libopus 在位元率低於 15 kbps 時,會強制使用寬頻截止,除非使用僅 CELT 模式(application 設定為 ‘lowdelay’)。

mapping_family (通道映射族系)

設定編碼器使用的通道映射族系。預設值 -1 會針對單聲道和立體聲輸入使用映射族系 0,否則使用映射族系 1。預設值也會停用 libopus 中的環繞聲遮蔽和 LFE 頻寬最佳化,並要求輸入包含 8 個或更少的聲道。

其他值包括 0 代表單聲道和立體聲,1 代表具有遮蔽和 LFE 頻寬最佳化的環繞聲,以及 255 代表具有未指定通道佈局的獨立串流。

apply_phase_inv (不適用) (需要 libopus >= 1.2)

若設定為 0,則停用強度立體聲的相位反轉,改善單聲道混音的品質,但稍微降低正常立體聲品質。預設值為 1(啟用相位反轉)。

15.11 libshine

Shine 定點 MP3 編碼器封裝器。

Shine 是一個定點 MP3 編碼器。它在沒有 FPU 的平台上(例如 armel CPU,以及某些手機和平板電腦)具有更好的效能。然而,由於它更注重效能而非品質,因此在品質上不如 LAME 和其他生產級編碼器。此外,根據專案的首頁所述,此編碼器可能並非沒有錯誤,因為程式碼是很久以前編寫的,且該專案至少已停止開發 5 年。

此編碼器僅支援立體聲和單聲道輸入。這也僅限 CBR。

原始專案(上次更新於 2007 年初)位於 http://sourceforge.net/projects/libshine-fxp/。我們僅支援 Savonet/Liquidsoap 專案在 https://github.com/savonet/shine 上的更新分支。

組態設定期間需要 libshine 標頭和函式庫。您需要使用 --enable-libshine 明確設定建置。

另請參閱 libmp3lame

15.11.1 選項

libshine 封裝器支援以下選項。選項的 shineenc 等效項列於括號中。

b (-b)

設定 CBR 的位元率,單位為 bits/s。shineenc -b 選項的單位為 kilobits/s。

15.12 libtwolame

TwoLAME MP2 編碼器封裝器。

組態設定期間需要 libtwolame 標頭和函式庫。您需要使用 --enable-libtwolame 明確設定建置。

15.12.1 選項

libtwolame 封裝器支援以下選項。twolame 等效選項遵循 FFmpeg 選項,並以括號括住。

b (-b)

設定 CBR 的位元率,單位為 bits/s。twolame b 選項的單位為 kilobits/s。預設值為 128k。

q (-V)

設定實驗性 VBR 支援的品質。最大值範圍為 -50 到 50,有用範圍為 -10 到 10。值越高,品質越好。此選項僅在使用 ffmpeg 命令列工具時有效。對於函式庫介面使用者,請使用 global_quality

mode (--mode)

設定產生的音訊模式。可能的值

auto

根據輸入自動選擇模式。這是預設值。

stereo

立體聲

joint_stereo

聯合立體聲

dual_channel

雙聲道

mono

單聲道

psymodel (--psyc-mode)

設定編碼中使用的心理聲學模型。參數必須是介於 -1 到 4 之間的整數,包含 -1 和 4。值越高,品質越好。預設值為 3。

energy_levels (--energy)

設定為 1 時,啟用能量級別擴充功能。預設值為 0(停用)。

error_protection (--protect)

設定為 1 時,啟用 CRC 錯誤保護。預設值為 0(停用)。

copyright (--copyright)

如果設定為 1,則設定 MPEG 音訊版權標誌。 預設值為 0 (停用)。

original (--original)

設定為 1 時,設定 MPEG 音訊原始標誌。預設值為 0(停用)。

15.13 libvo-amrwbenc

VisualOn Adaptive Multi-Rate Wideband 編碼器。

組態設定期間需要 libvo-amrwbenc 標頭和函式庫。您需要使用 --enable-libvo-amrwbenc --enable-version3 明確設定建置。

這是一個僅限單聲道的編碼器。官方上它僅支援 16000Hz 取樣率,但您可以將 strict 設定為 ‘unofficial’ 或更低來覆寫它。

15.13.1 選項

b

設定位元率,單位為 bits/s。僅支援以下位元率,否則 libavcodec 將四捨五入到最接近的有效位元率。

6600
8850
12650
14250
15850
18250
19850
23050
23850
dtx

如果設定為 1,則允許不連續傳輸 (產生舒適雜訊)。 預設值為 0 (停用)。

15.14 libvorbis

libvorbis 編碼器封裝器。

組態設定期間需要 libvorbisenc 標頭和函式庫。您需要使用 --enable-libvorbis 明確設定建置。

15.14.1 選項

libvorbis 封裝器支援以下選項。選項的 oggenc 等效項列於括號中。

若要取得更準確且詳盡的 libvorbis 選項文件,請參閱 libvorbisenc 和 oggenc 的文件。請參閱 http://xiph.org/vorbis/http://wiki.xiph.org/Vorbis-tools 和 oggenc(1)。

b (-b)

設定 ABR 的位元率,單位為 bits/s。oggenc -b 的單位為 kilobits/s。

q (-q)

設定 VBR 的恆定品質設定。值應為 -1.0 到 10.0 範圍內的浮點數。值越高,品質越好。預設值為 ‘3.0’。

此選項僅在使用 ffmpeg 命令列工具時有效。對於函式庫介面使用者,請使用 global_quality

cutoff (--advanced-encode-option lowpass_frequency=N)

設定截止頻寬,單位為 Hz,值為 0 時停用截止功能。oggenc 的相關選項單位為 kHz。預設值為 ‘0’(截止功能停用)。

minrate (-m)

設定最小位元率,單位為 bits/s。oggenc -m 的單位為 kilobits/s。

maxrate (-M)

設定最大位元率,單位為 bits/s。oggenc -M 的單位為 kilobits/s。這僅在 ABR 模式下有效。

iblock (--advanced-encode-option impulse_noisetune=N)

設定脈衝區塊的雜訊基底偏差。值是 -15.0 到 0.0 範圍內的浮點數。負偏差指示編碼器特別注意編碼音訊中瞬態的清晰度。更好的瞬態響應的代價是更高的位元率。

15.15 mjpeg

Motion JPEG 編碼器。

15.15.1 選項

huffman

設定霍夫曼編碼策略。可能的值

default

使用預設霍夫曼表。這是預設策略。

optimal

計算並使用最佳霍夫曼表。

15.16 wavpack

WavPack 無損音訊編碼器。

15.16.1 選項

wavpack 命令列公用程式的等效選項列於括號中。

15.16.1.1 共用選項

以下共用選項對此編碼器有效。此處僅記錄關於此特定編碼器的特殊注意事項。關於選項的一般含義,請參閱 編碼器選項章節

frame_size (--blocksize)

對於此編碼器,此選項的範圍介於 128 到 131072 之間。預設值會根據取樣率和聲道數自動決定。

關於計算預設值的完整公式,請參閱 libavcodec/wavpackenc.c

compression_level (-f-h-hh-x)

15.16.1.2 私有選項

joint_stereo (-j)

設定是否啟用聯合立體聲。有效值為

on (1)

強制中/側邊音訊編碼。

off (0)

強制左/右聲道音訊編碼。

auto

讓編碼器自動決定。

optimize_mono

設定是否啟用單聲道最佳化。此選項僅對非單聲道串流有效。可用值

on

已啟用

off

已停用

16 視訊編碼器

以下描述一些目前可用的視訊編碼器。

16.1 a64_multi, a64_multi5

A64 / Commodore 64 多彩字元集編碼器。a64_multi5 擴充了第五種顏色 (colram)。

16.2 Cinepak

Cinepak 又名 CVID 編碼器。與 Windows 3.1 和舊版 MacOS 相容。

16.2.1 選項

g integer

關鍵影格間隔。關鍵影格至少每 -g 個影格插入一次,有時會更早。

q:v integer

品質因數。值越低越好。值越高,位元率越低。下表列出編碼 akiyo_cif.y4m 時,-q:v 各種值和 -g 100 的位元率

-q:v 1 1918 kb/s
-q:v 2 1735 kb/s
-q:v 4 1500 kb/s
-q:v 10 1041 kb/s
-q:v 20 826 kb/s
-q:v 40 553 kb/s
-q:v 100 394 kb/s
-q:v 200 312 kb/s
-q:v 400 266 kb/s
-q:v 1000 237 kb/s
max_extra_cb_iterations integer

最大額外程式碼簿重新計算次數,次數越多越好,但速度越慢。

skip_empty_cb boolean

避免浪費位元組,忽略舊版 MacOS 解碼器。

max_strips integer
min_strips integer

要使用的最小和最大條帶數。較寬的範圍有時可以提高品質。更多條帶通常品質更好,但會消耗更多位元。較少的條帶往往會產生更多關鍵影格。與舊版相容的值為 1..3。

strip_number_adaptivity integer

允許影格之間條帶數變化的程度。值越高越好,但速度越慢。

16.3 GIF

GIF 圖像/動畫編碼器。

16.3.1 選項

gifflags integer

設定用於 GIF 編碼的標誌。

offsetting

啟用圖片偏移。

預設為啟用。

transdiff

啟用影格之間的透明度偵測。

預設為啟用。

gifimage integer

啟用每個影格編碼一個完整的 GIF 圖像,而不是動畫 GIF。

預設值為 0

global_palette integer

在可行時將調色盤寫入全域 GIF 標頭。

若停用,即使提供了全域調色盤,每個影格也都會始終寫入調色盤。

預設值為 1

16.4 Hap

Vidvox Hap 視訊編碼器。

16.4.1 選項

format integer

指定要編碼的 Hap 格式。

hap
hap_alpha
hap_q

預設值為 hap

chunks integer

指定將影格分割成的區塊數,介於 1 到 64 之間。這允許大型影格的多執行緒解碼,可能會以資料速率為代價。編碼器可能會修改此值以均勻分割影格。

預設值為 1

compressor integer

指定要使用的第二階段壓縮器。若設定為 none,則 chunks 將限制為 1,因為區塊化未壓縮影格沒有任何好處。

none
snappy

預設值為 snappy

16.5 jpeg2000

原生 jpeg 2000 編碼器預設為有損,可以使用 -q:v 選項設定編碼品質。可以使用 -pred 1 選擇無損編碼。

16.5.1 選項

format integer

可以設定為 j2kjp2(預設值),使其可以儲存非 rgb pix_fmts。

tile_width integer

設定磚塊寬度。範圍為 1 到 1073741824。預設值為 256。

tile_height integer

設定磚塊高度。範圍為 1 到 1073741824。預設值為 256。

pred integer

允許設定離散小波轉換 (DWT) 類型

dwt97int (有損)
dwt53 (無損)

預設值為 dwt97int

sop boolean

啟用此選項可在每個封包的開頭新增 SOP 標記。預設為停用。

eph boolean

啟用此選項可在每個封包標頭的結尾新增 EPH 標記。預設為停用。

prog integer

設定編碼器要使用的漸進順序。可能的值為

lrcp
rlcp
rpcl
pcrl
cprl

預設設定為 lrcp

layer_rates string

預設情況下,當未使用此選項時,壓縮會使用品質指標完成。此選項允許使用壓縮比進行壓縮。可以指定每個層級的壓縮比。層級 l 的壓縮比指定第一個 l 層中包含總檔案大小的比例。

範例用法

ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k

這會壓縮影像以包含 3 個層級,其中第一層中包含的資料將壓縮 1000 倍,前兩層壓縮 100 倍,並在使用所有 3 個層級時包含所有資料。

16.6 librav1e

rav1e AV1 編碼器封裝器。

組態設定期間需要 rav1e 標頭和函式庫。您需要使用 --enable-librav1e 明確設定建置。

16.6.1 選項

qmax

設定使用位元率模式時要使用的最大量化器。

qmin

設定使用位元率模式時要使用的最小量化器。

qp

使用量化器模式以給定的量化器 (0-255) 進行編碼。

speed

選擇要用於編碼的速度預設值 (0-10)。

tiles

選擇要用於編碼的磚塊數量。

tile-rows

選擇要用於編碼的磚塊列數。

tile-columns

選擇要用於編碼的磚塊欄數。

rav1e-params

使用 key=value 配對的清單(以 ":" 分隔)設定 rav1e 選項。請參閱 rav1e --help 以取得選項清單。

例如,使用 -rav1e-params 指定 librav1e 編碼選項

ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4

16.7 libaom-av1

libaom AV1 編碼器封裝器。

組態設定期間需要 libaom 標頭和函式庫。您需要使用 --enable-libaom 明確設定建置。

16.7.1 選項

封裝器支援以下標準 libavcodec 選項

b

設定目標位元率,單位為位元/秒。預設情況下,這將使用可變位元率模式。如果 maxrateminrate 也設定為相同的值,則它將使用恆定位元率模式,否則如果也設定了 crf,則它將使用受限品質模式。

g keyint_min

設定關鍵影格位置。GOP 大小設定關鍵影格之間的最大距離;如果為零,則輸出串流將僅為影格內編碼。最小距離會被忽略,除非它與 GOP 大小相同,在這種情況下,關鍵影格將始終以固定的間隔出現。預設未設定,因此若沒有此選項,函式庫可以完全自由地選擇關鍵影格的位置。

qmin qmax

設定最小/最大量化值。有效範圍為 0 到 63(警告:這與 AV1 實際使用的量化值不符 - 除以四以將實際量化值對應到此範圍)。預設為最小/最大值(無限制)。

minrate maxrate bufsize rc_init_occupancy

設定速率控制緩衝參數。若未設定則不使用 - 預設為不受限制的可變位元率。

threads

設定編碼時使用的執行緒數量。這可能需要同時設定 tilesrow-mt 選項,才能完全利用指定的執行緒數量。預設值為主機硬體支援的執行緒數量。

profile

設定編碼設定檔。預設為使用符合輸入位元深度和色度次採樣的設定檔。

此封裝器也具有一些特定選項

cpu-used

設定品質/編碼速度的權衡。有效範圍為 0 到 8,數值越高表示速度越快,品質越低。預設值為 1,這將會是慢速且高品質。

auto-alt-ref

啟用替代參考幀的使用。預設值為函式庫的內部預設值。

arnr-max-frames (frames)

設定 altref 雜訊降低最大幀數計數。預設值為 -1。

arnr-strength (strength)

設定 altref 雜訊降低濾波器強度。範圍為 -1 到 6。預設值為 -1。

aq-mode (aq-mode)

設定自適應量化模式。可能的值

none (0)

已停用。

variance (1)

基於變異數。

complexity (2)

基於複雜度。

cyclic (3)

循環刷新。

tune (tune)

設定編碼器調整的失真指標。預設值為 psnr

psnr (0)
ssim (1)
lag-in-frames

設定編碼器為了預視目的,在任何時間點可能保持在飛行狀態的最大幀數。預設值為函式庫的內部預設值。

error-resilience

啟用錯誤復原功能

預設

改善對整個幀遺失的復原能力。

預設不啟用。

crf

設定恆定品質(無位元率目標)和約束品質(具有最大位元率目標)模式的品質/大小權衡。有效範圍為 0 到 63,數值越高表示品質越低,輸出大小越小。僅在設定時使用;預設情況下僅使用位元率目標。

static-thresh

設定區塊變更閾值,低於此閾值的區塊將被編碼器跳過。以任意單位定義為非負整數,預設為零(不跳過任何區塊)。

drop-threshold

設定接近速率控制邊界時丟幀的閾值。定義為目標緩衝區的百分比 - 當速率控制緩衝區降至此百分比以下時,將丟幀直到它重新填充到閾值以上。預設值為零(不丟幀)。

denoise-noise-level (level)

要為紋理合成移除的雜訊量。如果未設定此選項或設定為 0,則停用紋理合成。

denoise-block-size (pixels)

用於紋理合成的去噪區塊大小。如果未設定,AV1 編碼器使用預設值 32。

undershoot-pct (pct)

設定資料速率下衝(最小值)佔目標位元率的百分比。範圍為 -1 到 100。預設值為 -1。

overshoot-pct (pct)

設定資料速率過衝(最大值)佔目標位元率的百分比。範圍為 -1 到 1000。預設值為 -1。

minsection-pct (pct)

GOP 位元率與目標位元率的最小百分比變動。如果未設定 minsection-pct,libaomenc 封裝器會按以下方式計算:(minrate * 100 / bitrate)。範圍為 -1 到 100。預設值為 -1(未設定)。

maxsection-pct (pct)

GOP 位元率與目標位元率的最大百分比變動。如果未設定 maxsection-pct,libaomenc 封裝器會按以下方式計算:(maxrate * 100 / bitrate)。範圍為 -1 到 5000。預設值為 -1(未設定)。

frame-parallel (boolean)

啟用幀平行解碼功能。預設值為 true。

tiles

設定用於編碼輸入視訊的圖塊數量,格式為 欄 x 列。較大的數字允許編碼和解碼中更高的平行性,但可能會降低編碼效率。預設值為輸入視訊大小所需的最小圖塊數量(對於最大到包含 4K 的尺寸,這是 1x1(即,單個圖塊))。

tile-columns tile-rows

將圖塊數量設定為圖塊行數和列數的 log2 值。為了與 libvpx/VP9 相容而提供。

row-mt (需要 libaom >= 1.0.0-759-g90a15f4f2)

啟用基於行的多執行緒。預設為停用。

enable-cdef (boolean)

啟用約束方向增強濾波器。libaom-av1 編碼器預設啟用 CDEF。

enable-restoration (boolean)

啟用迴路恢復濾波器。對於 libaom-av1,預設值為 true。

enable-global-motion (boolean)

啟用全域運動用於區塊預測。預設值為 true。

enable-intrabc (boolean)

啟用區塊複製模式用於幀內區塊預測。此模式對於螢幕內容很有用。預設值為 true。

enable-rect-partitions (boolean) (需要 libaom >= v2.0.0)

啟用矩形分割。預設值為 true。

enable-1to4-partitions (boolean) (需要 libaom >= v2.0.0)

啟用 1:4/4:1 分割。預設值為 true。

enable-ab-partitions (boolean) (需要 libaom >= v2.0.0)

啟用 AB 形狀分割。預設值為 true。

enable-angle-delta (boolean) (需要 libaom >= v2.0.0)

啟用角度增量幀內預測。預設值為 true。

enable-cfl-intra (boolean) (需要 libaom >= v2.0.0)

啟用從亮度預測色度的幀內預測。預設值為 true。

enable-filter-intra (boolean) (需要 libaom >= v2.0.0)

啟用濾波器幀內預測器。預設值為 true。

enable-intra-edge-filter (boolean) (需要 libaom >= v2.0.0)

啟用幀內邊緣濾波器。預設值為 true。

enable-smooth-intra (boolean) (需要 libaom >= v2.0.0)

啟用平滑幀內預測模式。預設值為 true。

enable-paeth-intra (boolean) (需要 libaom >= v2.0.0)

在幀內預測中啟用 paeth 預測器。預設值為 true。

enable-palette (boolean) (需要 libaom >= v2.0.0)

啟用調色盤預測模式。預設值為 true。

enable-flip-idtx (boolean) (需要 libaom >= v2.0.0)

啟用擴展變換類型,包括 FLIPADST_DCT、DCT_FLIPADST、FLIPADST_FLIPADST、ADST_FLIPADST、FLIPADST_ADST、IDTX、V_DCT、H_DCT、V_ADST、H_ADST、V_FLIPADST、H_FLIPADST。預設值為 true。

enable-tx64 (boolean) (需要 libaom >= v2.0.0)

啟用 64 點變換。預設值為 true。

reduced-tx-type-set (boolean) (需要 libaom >= v2.0.0)

使用縮減的變換類型集合。預設值為 false。

use-intra-dct-only (boolean) (需要 libaom >= v2.0.0)

僅對 INTRA 模式使用 DCT。預設值為 false。

use-inter-dct-only (boolean) (需要 libaom >= v2.0.0)

僅對 INTER 模式使用 DCT。預設值為 false。

use-intra-default-tx-only (boolean) (需要 libaom >= v2.0.0)

僅對 INTRA 模式使用預設變換。預設值為 false。

enable-ref-frame-mvs (boolean) (需要 libaom >= v2.0.0)

啟用時間 MV 預測。預設值為 true。

enable-reduced-reference-set (boolean) (需要 libaom >= v2.0.0)

使用縮減的單一和複合參考集合。預設值為 false。

enable-obmc (boolean) (需要 libaom >= v2.0.0)

啟用 OBMC。預設值為 true。

enable-dual-filter (boolean) (需要 libaom >= v2.0.0)

啟用雙濾波器。預設值為 true。

enable-diff-wtd-comp (boolean) (需要 libaom >= v2.0.0)

啟用差異加權複合。預設值為 true。

enable-dist-wtd-comp (boolean) (需要 libaom >= v2.0.0)

啟用距離加權複合。預設值為 true。

enable-onesided-comp (boolean) (需要 libaom >= v2.0.0)

啟用單邊複合。預設值為 true。

enable-interinter-wedge (boolean) (需要 libaom >= v2.0.0)

啟用 interinter 楔形複合。預設值為 true。

enable-interintra-wedge (boolean) (需要 libaom >= v2.0.0)

啟用 interintra 楔形複合。預設值為 true。

enable-masked-comp (boolean) (需要 libaom >= v2.0.0)

啟用遮罩複合。預設值為 true。

enable-interintra-comp (boolean) (需要 libaom >= v2.0.0)

啟用 interintra 複合。預設值為 true。

enable-smooth-interintra (boolean) (需要 libaom >= v2.0.0)

啟用平滑 interintra 模式。預設值為 true。

aom-params

使用以 ":" 分隔的 key=value 鍵值對列表設定 libaom 選項。如需支援選項的列表,請參閱 aomenc --help 中 "AV1 Specific Options" 區段。

例如,要使用 -aom-params 指定 libaom 編碼選項

ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4

16.8 libsvtav1

SVT-AV1 編碼器封裝器。

在組態期間需要存在 SVT-AV1 標頭和函式庫。您需要使用 --enable-libsvtav1 明確組態建置。

16.8.1 選項

profile

設定編碼設定檔。

main
high
professional
level

設定操作點級別。例如:’4.0’

hielevel

設定階層式預測級別。

3level
4level

這是預設值。

tier

設定操作點層級。

main

這是預設值。

high
qmax

設定使用位元率模式時要使用的最大量化器。

qmin

設定使用位元率模式時要使用的最小量化器。

crf

在 crf 速率控制模式中使用的恆定速率因數值 (0-63)。

qp

設定在 cqp 速率控制模式中使用的量化器 (0-63)。

sc_detection

啟用場景變更偵測。

la_depth

設定預視的幀數 (0-120)。

preset

設定品質-速度權衡,範圍為 0 到 13。數值越高速度越快,但品質越低。

tile_rows

設定要使用的圖塊行數的 log2 值 (0-6)。

tile_columns

設定要使用的圖塊列數的 log2 值 (0-4)。

svtav1-params

使用以 ":" 分隔的 key=value 鍵值對列表設定 SVT-AV1 選項。有關接受參數的列表,請參閱 SVT-AV1 編碼器使用者指南。

16.9 libjxl

libjxl JPEG XL 編碼器封裝器。

在組態期間需要存在 libjxl 標頭和函式庫。您需要使用 --enable-libjxl 明確組態建置。

16.9.1 選項

libjxl 封裝器支援以下選項

distance

設定目標 Butteraugli 距離。這是一個品質設定:較低的距離產生較高的品質,距離 = 1.0 大致相當於攝影內容的 libjpeg 品質 90。設定距離 = 0.0 會產生真正的無損編碼。有效值範圍介於 0.0 和 15.0 之間,合理的數值很少超過 5.0。設定距離 = 0.1 通常可以為大多數輸入實現透明度。預設值為 1.0。

effort

設定使用的編碼努力程度。較高的努力程度值會產生更一致的品質,並且通常會產生更好的品質/bpp 曲線,但會增加所需的 CPU 時間。有效值範圍從 1 到 9,預設值為 7。

modular

強制編碼器使用 Modular 模式,而不是自動選擇。預設為有損編碼使用 VarDCT,無損編碼使用 Modular。對於有損編碼,VarDCT 通常優於 Modular,但不支援無損編碼。

16.10 libkvazaar

Kvazaar H.265/HEVC 編碼器。

在組態期間需要存在 libkvazaar 標頭和函式庫。您需要使用 --enable-libkvazaar 明確組態建置。

16.10.1 選項

b

以 bit/s 為單位設定目標視訊位元率並啟用速率控制。

kvazaar-params

將 kvazaar 參數設定為以逗號 (,) 分隔的 name=value 鍵值對列表。有關選項列表,請參閱 kvazaar 文件。

16.11 libopenh264

Cisco libopenh264 H.264/MPEG-4 AVC 編碼器封裝器。

此編碼器在組態期間需要存在 libopenh264 標頭和函式庫。您需要使用 --enable-libopenh264 明確組態建置。函式庫使用 pkg-config 偵測。

有關函式庫的更多資訊,請參閱 http://www.openh264.org

16.11.1 選項

以下 FFmpeg 全域選項會影響 libopenh264 編碼器的組態。

b

設定位元率(以每秒位元數表示)。

g

設定 GOP 大小。

maxrate

設定最大位元率(以每秒位元數表示)。

flags +global_header

在位元流中設定全域標頭。

slices

設定切片數量,用於平行化編碼。預設值為 0。僅當 slice_mode 設定為 ‘fixed’ 時使用。

loopfilter

啟用迴路濾波器,如果設定為 1(自動啟用)。要停用,請設定值為 0。

profile

設定設定檔限制。如果設定為 ‘main’ 值,則啟用 CABAC(將 SEncParamExt.iEntropyCodingModeFlag 旗標設定為 1)。

max_nal_size

設定最大 NAL 大小(以位元組為單位)。

allow_skip_frames

如果設定為 1,允許跳過幀以達到目標位元率。

16.12 libtheora

libtheora Theora 編碼器封裝器。

在組態期間需要存在 libtheora 標頭和函式庫。您需要使用 --enable-libtheora 明確組態建置。

有關 libtheora 專案的更多資訊,請參閱 http://www.theora.org/

16.12.1 選項

以下全域選項會映射到影響編碼串流品質和位元率的內部 libtheora 選項。

b

以 bit/s 為單位設定 CBR(恆定位元率)模式的視訊位元率。如果啟用 VBR(可變位元率)模式,則忽略此選項。

flags

用於透過 qscale 旗標啟用恆定品質模式 (VBR) 編碼,並啟用 pass1pass2 模式。

g

設定 GOP 大小。

global_quality

以 lambda 單位將全域品質設定為整數。

僅當使用 flags +qscale 啟用 VBR 模式時相關。該值透過除以 FF_QP2LAMBDA 轉換為 QP 單位,裁剪到 [0 - 10] 範圍,然後乘以 6.3 以獲得原生 libtheora 範圍 [0-63] 中的值。較高的值對應於較高的品質。

q

當設定為非負值時啟用 VBR 模式,並將恆定品質值設定為 QP 單位的雙精度浮點值。

該值裁剪到 [0-10] 範圍,然後乘以 6.3 以獲得原生 libtheora 範圍 [0-63] 中的值。

此選項僅在使用 ffmpeg 命令列工具時有效。對於函式庫介面使用者,請使用 global_quality

16.12.2 範例

  • 使用 ffmpeg 設定最大恆定品質 (VBR) 編碼
    ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
    
  • 使用 ffmpeg 轉換 CBR 1000 kbps Theora 視訊串流
    ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
    

16.13 libvpx

透過 libvpx 支援 VP8/VP9 格式。

在組態期間需要存在 libvpx 標頭和函式庫。您需要使用 --enable-libvpx 明確組態建置。

16.13.1 選項

libvpx 封裝器支援以下選項。括號中列出了 vpxenc 等效選項或值,以便於遷移。

為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。有關未記錄的通用選項的文件,請參閱 編解碼器選項章節

要獲得有關 libvpx 選項的更多文件,請調用命令 ffmpeg -h encoder=libvpxffmpeg -h encoder=libvpx-vp9vpxenc --help。更多資訊可在 libvpx API 文件中找到。

b (target-bitrate)

以 bits/s 為單位設定位元率。請注意,FFmpeg 的 b 選項以 bits/s 表示,而 vpxenctarget-bitrate 以 kilobits/s 表示。

g (kf-max-dist)
keyint_min (kf-min-dist)
qmin (min-q)

最小(最佳品質)量化器。

qmax (max-q)

最大(最差品質)量化器。可以逐幀更改。

bufsize (buf-sz, buf-optimal-sz)

設定速率控制緩衝區大小 (以位元為單位)。請注意,vpxenc 的選項以毫秒為單位指定,libvpx 封裝器會將此值轉換如下:buf-sz = bufsize * 1000 / bitratebuf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6

rc_init_occupancy (buf-initial-sz)

設定在解碼開始前應載入到速率控制緩衝區中的位元數。請注意,vpxenc 的選項以毫秒為單位指定,libvpx 封裝器會將此值轉換如下:rc_init_occupancy * 1000 / bitrate

undershoot-pct

設定資料速率低於目標位元率的 (最小) 百分比。

overshoot-pct

設定資料速率高於目標位元率的 (最大) 百分比。

skip_threshold (drop-frame)
qcomp (bias-pct)
maxrate (maxsection-pct)

設定 GOP 最大位元率,單位為位元/秒。請注意,vpxenc 的選項指定為目標位元率的百分比,libvpx 封裝器會將此值轉換如下:(maxrate * 100 / bitrate)

minrate (minsection-pct)

設定 GOP 最小位元率,單位為位元/秒。請注意,vpxenc 的選項指定為目標位元率的百分比,libvpx 封裝器會將此值轉換如下:(minrate * 100 / bitrate)

minrate, maxrate, b end-usage=cbr

(minrate == maxrate == bitrate).

crf (end-usage=cq, cq-level)
tune (tune)
psnr (psnr)
ssim (ssim)
quality, deadline (deadline)
best

使用最佳品質期限。此選項命名不佳且速度相當慢,應避免使用,因為它可能會產生比 good 選項更差的品質輸出。

good

使用良好品質期限。當與 cpu-used 選項一起使用時,這是速度和品質之間良好的權衡。

realtime

使用即時品質期限。

speed, cpu-used (cpu-used)

設定品質/速度比率修改器。較高的值會加速編碼,但會犧牲品質。

nr (noise-sensitivity)
static-thresh

設定區塊變更閾值,低於此閾值的區塊將被編碼器跳過。

slices (token-parts)

請注意,FFmpeg 的 slices 選項給出分割區總數,而 vpxenctoken-parts 則以 log2(partitions) 的形式給出。

max-intra-rate

設定最大 I 幀位元率,以目標位元率的百分比表示。值為 0 表示無限制。

force_key_frames

VPX_EFLAG_FORCE_KF

與替換參考幀相關
auto-alt-ref

啟用替換參考幀的使用 (僅限 2-pass)。大於 1 的值啟用多層替換參考幀 (僅限 VP9)。

arnr-maxframes

設定 altref 雜訊降低最大幀數計數。

arnr-type

設定 altref 雜訊降低濾鏡類型:backward、forward、centered。

arnr-strength

設定 altref 雜訊降低濾鏡強度。

rc-lookahead, lag-in-frames (lag-in-frames)

設定用於幀類型和速率控制的預視幀數。

min-gf-interval

設定最小 golden/替換參考幀間隔 (僅限 VP9)。

error-resilient

啟用錯誤彈性功能。

sharpness integer

提高銳利度,但會犧牲較低的 PSNR。有效範圍為 [0, 7]。

ts-parameters

使用以冒號分隔的 key=value 對列表設定時間可擴展性配置。例如,使用 ffmpeg 指定時間可擴展性參數

ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\
ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\
ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT

以下是每個參數的簡要說明,更多詳細資訊請參閱 vpx/vpx_encoder.h 中的 struct vpx_codec_enc_cfg

ts_number_layers

時間編碼層數。

ts_target_bitrate

每個時間層的目標位元率 (以 kbps 為單位)。(位元率應包含較低的時間層)。

ts_rate_decimator

每個時間層的幀速率抽取因子。

ts_periodicity

定義幀時間層成員資格的序列長度。

ts_layer_id

定義幀時間層成員資格的範本。

ts_layering_mode

(選用) 從一組預定義的時間分層模式中選擇時間結構。目前支援以下選項。

0

內部未提供時間分層標誌,而是依賴於使用 AVFrame 中的 metadata 欄位傳入的標誌,並帶有以下鍵。

vp8-flags

設定傳遞到編碼器的標誌,以指示目前幀的參考方案。更多詳細資訊請參閱 vpx/vpx_encoder.h 中的函式 vpx_codec_encode

temporal_id

明確設定目前幀的 temporal id 以進行編碼。

2

兩個時間層。0-1...

3

三個時間層。0-2-1-2...;使用單一參考幀。

4

與選項 "3" 相同,不同之處在於時間週期內兩個時間層 2 幀之間存在依賴關係。

VP8 特定選項
screen-content-mode

螢幕內容模式,選項之一:0 (關閉)、1 (螢幕)、2 (螢幕,具有更積極的速率控制)。

VP9 特定選項
lossless

啟用無損模式。

tile-columns

設定要使用的圖塊列數。請注意,這以 log2(tile_columns) 的形式給出。例如,若要請求 8 個圖塊列,請將 tile-columns 選項設定為 3。

tile-rows

設定要使用的圖塊欄數。請注意,這以 log2(tile_rows) 的形式給出。例如,若要請求 4 個圖塊欄,請將 tile-rows 選項設定為 2。

frame-parallel

啟用幀並行解碼功能。

aq-mode

設定自適應量化模式 (0:關閉 (預設值)、1:變異數、2:複雜度、3:循環刷新、4:equator360)。

colorspace color-space

設定輸入色彩空間。VP9 位元串流支援發訊以下色彩空間

rgbsRGB
bt709bt709
unspecifiedunknown
bt470bgbt601
smpte170msmpte170
smpte240msmpte240
bt2020_nclbt2020
row-mt boolean

啟用基於列的多執行緒處理。

tune-content

設定內容類型:default (0)、screen (1)、film (2)。

corpus-complexity

Corpus VBR 模式是標準 VBR 的變體,其中複雜度分佈中點被傳入,而不是針對特定片段或區塊計算。

有效範圍為 [0, 10000]。0 (預設值) 使用標準 VBR。

enable-tpl boolean

啟用時間依賴模型。

ref-frame-config

使用逐幀元資料,設定 vpx/vp8cx.hvpx_svc_ref_frame_config_t 結構的成員,以精細控制參考方案和幀緩衝區管理。
使用以冒號分隔的 key=value 對列表。例如,

av_dict_set(&av_frame->metadata, "ref-frame-config", \
"rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0");
rfc_update_buffer_slot

指示要更新的緩衝區插槽號碼

rfc_update_last

指示是否更新 LAST 幀

rfc_update_golden

指示是否更新 GOLDEN 幀

rfc_update_alt_ref

指示是否更新 ALT_REF 幀

rfc_lst_fb_idx

LAST 幀緩衝區索引

rfc_gld_fb_idx

GOLDEN 幀緩衝區索引

rfc_alt_fb_idx

ALT_REF 幀緩衝區索引

rfc_reference_last

指示是否參考 LAST 幀

rfc_reference_golden

指示是否參考 GOLDEN 幀

rfc_reference_alt_ref

指示是否參考 ALT_REF 幀

rfc_reference_duration

指示幀持續時間

有關 libvpx 的更多資訊,請參閱:http://www.webmproject.org/

16.14 libvvenc

VVenC H.266/VVC 編碼器封裝器。

此編碼器需要在配置期間存在 libvvenc 標頭和程式庫。您需要使用 --enable-libvvenc 明確配置建置。

VVenC 專案網站位於 https://github.com/fraunhoferhhi/vvenc

16.14.1 支援的像素格式

VVenC 僅支援 10 位元色彩空間作為輸入。但是,內部 (編碼) 位元深度可以在運行時設定為 8 位元或 10 位元。

16.14.2 選項

b

設定目標視訊位元率。

g

設定 GOP 大小。目前支援 g=1 (僅限 Intra) 或預設值。

preset

設定 VVenC 預設值。

levelidc

設定 level idc。

tier

設定 vvc tier。

qp

設定恆定量化參數。

subopt boolean

設定主觀 (感知動機) 優化。預設值為 1 (開啟)。

bitdepth8 boolean

設定 8 位元編碼模式,而不是使用 10 位元。預設值為 0 (關閉)。

period

以秒為單位設定 (幀內) 刷新週期。

vvenc-params

使用 key=value 組合的列表設定 vvenc 選項,並以 ":" 分隔。有關選項列表,請參閱 vvencapp --fullhelpvvencFFapp --fullhelp

例如,這些選項可以作為以下形式提供

intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8

例如,編碼選項可以使用 -vvenc-params 提供

ffmpeg -i input -c:v libvvenc -b 1M -vvenc-params intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8 output.mp4

16.15 libwebp

libwebp WebP 影像編碼器封裝器

libwebp 是 Google 針對 WebP 影像的官方編碼器。它可以進行有損或無損模式編碼。有損影像本質上是 VP8 幀的封裝器。無損影像是由 Google 開發的單獨編解碼器。

16.15.1 像素格式

目前,由於格式和 libwebp 的限制,libwebp 僅支援有損的 YUV420 和無損的 RGB。兩種模式都支援 Alpha。由於 API 限制,如果在編碼有損時傳入 RGB,或在編碼無損時傳入 YUV,像素格式將自動使用 libwebp 中的函式進行轉換。這並非理想情況,僅為了方便起見而完成。

16.15.2 選項

-lossless boolean

啟用/停用無損模式的使用。預設值為 0。

-compression_level integer

對於有損,這是品質/速度之間的權衡。對於給定大小,較高的值提供更好的品質,但會增加編碼時間。對於無損,這是大小/速度之間的權衡。較高的值提供更小的尺寸,但會增加編碼時間。更具體地說,它控制使用的額外演算法和壓縮工具的數量,並改變這些工具的組合。這對應於 libwebp 中的 method 選項。有效範圍為 0 到 6。預設值為 4。

-quality float

對於有損編碼,這控制影像品質。對於無損編碼,這控制壓縮中付出的努力和時間。範圍為 0 到 100。預設值為 75。

-preset type

配置預設。這會根據影像的總體類型進行一些自動設定。

none

不要使用預設值。

預設

使用編碼器預設值。

picture

數位圖片,例如肖像、室內照片

photo

戶外照片,具有自然光照

drawing

手繪或線條圖,具有高對比度細節

icon

小型彩色影像

text

text

16.16 libx264, libx264rgb

x264 H.264/MPEG-4 AVC 編碼器封裝器。

此編碼器需要在配置期間存在 libx264 標頭和程式庫。您需要使用 --enable-libx264 明確配置建置。

libx264 支援令人印象深刻的功能數量,包括 8x8 和 4x4 自適應空間變換、自適應 B 幀放置、CAVLC/CABAC 熵編碼、交錯 (MBAFF)、無損模式、用於細節保留的 psy 優化 (自適應量化、psy-RD、psy-trellis)。

許多 libx264 編碼器選項對應到 FFmpeg 全域編解碼器選項,而獨特的編碼器選項則通過私有選項提供。此外,x264optsx264-params 私有選項允許使用者傳遞 libx264 x264_param_parse 函式接受的 key=value 組成的元組列表。

x264 專案網站位於 http://www.videolan.org/developers/x264.html

libx264rgb 編碼器與 libx264 相同,不同之處在於它接受封裝的 RGB 像素格式作為輸入,而不是 YUV。

16.16.1 支援的像素格式

x264 支援 8 到 10 位元色彩空間。確切的位元深度在 x264 的配置時控制。

16.16.2 選項

libx264 封裝器支援以下選項。括號中列出了 x264 等效選項或值,以便於遷移。

為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。有關未記錄的通用選項的文件,請參閱 編解碼器選項章節

若要獲得更準確和廣泛的 libx264 選項文件,請調用命令 x264 --fullhelp 或查閱 libx264 文件。

在下面的列表中,請注意,x264 選項名稱顯示在括號中,位於 libavcodec 對應名稱之後,以便在存在直接映射的情況下使用。

b (bitrate)

以位元/秒為單位設定位元率。請注意,FFmpeg 的 b 選項以位元/秒表示,而 x264bitrate 以千位元/秒為單位。

bf (bframes)

I 幀和 P 幀之間的 B 幀數

g (keyint)

最大 GOP 大小

qmin (qpmin)

最小量化器比例

qmax (qpmax)

最大量化器比例

qdiff (qpstep)

量化器比例之間的最大差異

qblur (qblur)

量化器曲線模糊

qcomp (qcomp)

量化器曲線壓縮因子

refs (ref)

每個 P 幀可以使用的參考幀數。範圍為 0-16

level (level)

設定 x264_param_t.i_level_idc 值,如果該值為正數,則會忽略,否則會使用。

此值可以使用 AVCodecContext API 設定 (例如,通過直接設定 AVCodecContext 值),並指定為對應於 level 的整數 (例如,值 31 對應於 H.264 level IDC "3.1",如 x264_levels 表中定義)。當設定為非正值時,它將被忽略。

或者,它可以設定為私有選項,覆蓋在 AVCodecContext 中設定的值,在這種情況下,必須將其指定為 level IDC 識別碼 (例如 "3.1"),如 H.264 附錄 A 所定義。

sc_threshold (scenecut)

設定場景變換偵測的閾值。

trellis (trellis)

執行 Trellis 量化以提高效率。預設為啟用。

nr (nr)

雜訊降低

me_range (merange)

運動搜尋的最大範圍 (以像素為單位)。

me_method (me)

設定運動估計方法。可能的值按速度遞減順序排列

dia (dia)
epzs (dia)

半徑為 1 的菱形搜尋 (最快)。‘epzs’ 是 ‘dia’ 的別名。

hex (hex)

半徑為 2 的六邊形搜尋。

umh (umh)

不均勻多六邊形搜尋。

esa (esa)

窮舉搜尋。

tesa (tesa)

Hadamard 窮舉搜尋 (最慢)。

forced-idr

通常,在強制 I 幀類型時,編碼器可以選擇任何類型的 I 幀。此選項強制它選擇 IDR 幀。

subq (subme)

子像素運動估計方法。

b_strategy (b-adapt)

自適應 B 幀放置決策演算法。僅在 first-pass 上使用。

keyint_min (min-keyint)

最小 GOP 大小。

coder

設定熵編碼器。可能的值

ac

啟用 CABAC。

vlc

啟用 CAVLC 並停用 CABAC。它產生的效果與 x264--no-cabac 選項相同。

cmp

設定全像素運動估計比較演算法。可能的值

chroma

在運動估計中啟用色度。

sad

在運動估計中忽略色度。它產生的效果與 x264--no-chroma-me 選項相同。

threads (threads)

編碼執行緒數。

thread_type

設定多執行緒技術。可能的值

slice

基於切片的多執行緒處理。它產生的效果與 x264--sliced-threads 選項相同。

frame

基於幀的多執行緒處理。

flags

設定編碼標誌。它可用於停用封閉 GOP 並通過將其設定為 -cgop 來啟用開放 GOP。結果類似於 x264--open-gop 選項的行為。

rc_init_occupancy (vbv-init)

初始 VBV 緩衝區佔用率

preset (preset)

設定編碼預設值。

tune (tune)

設定編碼參數的調整。

profile (profile)

設定 profile 限制。

fastfirstpass

當設定為 1 時,在編碼 first pass 時啟用快速設定。當設定為 0 時,它具有與 x264--slow-firstpass 選項相同的效果。

crf (crf)

設定恆定品質模式的品質。

crf_max (crf-max)

在 CRF 模式中,防止 VBV 將品質降低到低於此點。

qp (qp)

設定恆定量化率控制方法參數。

aq-mode (aq-mode)

設定 AQ 方法。可能的值

none (0)

已停用。

variance (1)

變異數 AQ (複雜度遮罩)。

autovariance (2)

自動變異數 AQ (實驗性)。

aq-strength (aq-strength)

設定 AQ 強度,減少平坦和紋理區域的區塊效應和模糊。

psy

設定為 1 時,使用視覺心理最佳化。設定為 0 時,效果與 x264--no-psy 選項相同。

psy-rd (psy-rd)

設定視覺心理最佳化的強度,格式為 psy-rd:psy-trellis

rc-lookahead (rc-lookahead)

設定用於幀類型和速率控制的預視幀數。

weightb

設定為 1 時,啟用 B 影格的加權預測。設定為 0 時,效果與 x264--no-weightb 選項相同。

weightp (weightp)

設定 P 影格的加權預測方法。可能的值

none (0)

已停用

simple (1)

僅啟用加權參考

smart (2)

同時啟用加權參考和重複

ssim (ssim)

啟用編碼後計算和列印 SSIM 統計資訊。

intra-refresh (intra-refresh)

設定為 1 時,啟用週期性畫面內更新以取代 IDR 影格。

avcintra-class (class)

設定編碼器以產生 AVC-Intra。有效值為 50、100 和 200

bluray-compat (bluray-compat)

設定編碼器以相容於藍光標準。這是設定 "bluray-compat=1 force-cfr=1" 的簡寫。

b-bias (b-bias)

設定 B 影格使用頻率的影響程度。

b-pyramid (b-pyramid)

設定將部分 B 影格保留為參考的方法。可能的值

none (none)

已停用。

strict (strict)

嚴格階層式金字塔。

normal (normal)

非嚴格 (不相容於藍光)。

mixed-refs

設定為 1 時,啟用每個分割區使用一個參考,而不是每個巨集區塊使用一個參考。設定為 0 時,效果與 x264--no-mixed-refs 選項相同。

8x8dct

設定為 1 時,啟用自適應空間轉換 (高畫質 8x8 轉換)。設定為 0 時,效果與 x264--no-8x8dct 選項相同。

fast-pskip

設定為 1 時,在 P 影格上啟用早期 SKIP 偵測。設定為 0 時,效果與 x264--no-fast-pskip 選項相同。

aud (aud)

設定為 1 時,啟用存取單元分隔符號的使用。

mbtree

設定為 1 時,啟用巨集區塊樹狀結構率控制的使用。設定為 0 時,效果與 x264--no-mbtree 選項相同。

deblock (deblock)

設定迴路濾波器參數,格式為 alpha:beta

cplxblur (cplxblur)

設定 QP 中的波動減少量 (在曲線壓縮之前)。

partitions (partitions)

設定要考慮的分割區,以逗號分隔的值列表。列表中的可能值

p8x8

8x8 P 影格分割區。

p4x4

4x4 P 影格分割區。

b8x8

4x4 B 影格分割區。

i8x8

8x8 I 影格分割區。

i4x4

4x4 I 影格分割區。(啟用 ‘p4x4’ 需要啟用 ‘p8x8’。啟用 ‘i8x8’ 需要啟用自適應空間轉換 (8x8dct 選項)。)

none (none)

不考慮任何分割區。

all (all)

考慮每個分割區。

direct-pred (direct)

設定直接 MV 預測模式。可能的值

none (none)

停用 MV 預測。

spatial (spatial)

啟用空間預測。

temporal (temporal)

啟用時間預測。

auto (auto)

自動決定。

slice-max-size (slice-max-size)

設定每個切片大小的限制 (以位元組為單位)。如果未指定,但指定了 RTP 酬載大小 (ps),則使用該大小。

stats (stats)

設定多趟次統計資訊的檔案名稱。

nal-hrd (nal-hrd)

設定訊號 HRD 資訊 (需要設定 vbv-bufsize)。可能的值

none (none)

停用 HRD 資訊訊號傳輸。

vbr (vbr)

可變位元率。

cbr (cbr)

恆定位元率 (在 MP4 容器中不允許)。

x264opts opts
x264-params opts

使用以 ":" 分隔的 key=value 選項列表覆寫 x264 設定。

這兩個選項的引數都是以 ":" 分隔的 key=value 配對列表。使用 x264opts 時,可以省略 value,在這種情況下,value 會假設為 1

對於使用 ":" 作為分隔符號的 filterpsy-rd 選項值,請改用 ","。它們也接受 ",",但基於某些原因,這點並未記錄在文件中。

例如,這些選項可以作為以下形式提供

level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0

例如,若要使用 ffmpeg 指定 libx264 編碼選項

ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv

若要取得 libx264 選項的完整列表,請調用命令 x264 --fullhelp 或查閱 libx264 文件。

a53cc boolean

將隱藏式字幕 (必須是 ATSC 相容格式) 匯入輸出。只有 mpeg2 和 h264 解碼器提供這些字幕。預設值為 1 (開啟)。

udu_sei boolean

如果可用,將使用者資料未註冊 SEI 匯入輸出。預設值為 0 (關閉)。

mb_info boolean

透過 AVFrameSideData 設定 mb_info 資料,僅在從 API 使用時有用。預設值為 0 (關閉)。

已提供常用用途的編碼 ffpresets,因此它們可以與一般預設系統一起使用 (例如,傳遞 pre 選項)。

16.17 libx265

x265 H.265/HEVC 編碼器包裝器。

此編碼器需要在設定期間存在 libx265 標頭和程式庫。您需要使用 --enable-libx265 明確設定組建。

16.17.1 選項

b

設定目標視訊位元率。

bf
g

設定 GOP 大小。

keyint_min

最小 GOP 大小。

refs

每個 P 影格可以使用的參考影格數目。範圍從 1-16

preset

設定 x265 預設值。

tune

設定 x265 微調參數。

profile

設定 profile 限制。

crf

設定恆定品質模式的品質。

qp

設定恆定量化率控制方法參數。

qmin

最小量化器比例。

qmax

最大量化器比例。

qdiff

量化器比例之間的最大差異。

qblur

量化器曲線模糊

qcomp

量化器曲線壓縮因子

i_qfactor
b_qfactor
forced-idr

通常,在強制 I 幀類型時,編碼器可以選擇任何類型的 I 幀。此選項強制它選擇 IDR 幀。

udu_sei boolean

如果可用,將使用者資料未註冊 SEI 匯入輸出。預設值為 0 (關閉)。

x265-params

使用以 ":" 分隔的 key=value 配對列表設定 x265 選項。請參閱 x265 --help 以取得選項列表。

例如,若要使用 -x265-params 指定 libx265 編碼選項

ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4

16.18 libxavs2

xavs2 AVS2-P2/IEEE1857.4 編碼器包裝器。

此編碼器需要在設定期間存在 libxavs2 標頭和程式庫。您需要使用 --enable-libxavs2 明確設定組建。

使用下列標準 libavcodec 選項

  • b / bit_rate
  • g / gop_size
  • bf / max_b_frames

編碼器也有其自己的特定選項

16.18.1 選項

lcu_row_threads

設定列的平行執行緒數目,從 1 到 8 (預設值為 5)。

initial_qp

設定 xavs2 量化參數,從 1 到 63 (預設值為 34)。這用於設定第一個影格的初始 qp。

qp

設定 xavs2 量化參數,從 1 到 63 (預設值為 34)。這用於設定恆定量化參數模式下的 qp 值。

max_qp

設定速率控制的最大 qp,從 1 到 63 (預設值為 55)。

min_qp

設定速率控制的最小 qp,從 1 到 63 (預設值為 20)。

speed_level

設定速度等級,從 0 到 9 (預設值為 0)。數值越高越好,但速度越慢。

log_level

設定日誌等級,從 -1 到 3 (預設值為 0)。-1: 無, 0: 錯誤, 1: 警告, 2: 資訊, 3: 偵錯。

xavs2-params

使用以 ":" 分隔的 key=value 配對列表設定 xavs2 選項。

例如,若要使用 -xavs2-params 指定 libxavs2 編碼選項

ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2

16.19 libxeve

eXtra-fast Essential Video Encoder (XEVE) MPEG-5 EVC 編碼器包裝器。括號中列出 xeve 等效選項或值,以便於遷移。

此編碼器需要在設定期間存在 libxeve 標頭和程式庫。您需要使用 --enable-libxeve 明確設定組建。

許多 libxeve 編碼器選項都對應到 FFmpeg 全域編碼器選項,而獨特的編碼器選項則透過私有選項提供。此外,xeve-params 私有選項允許傳遞 libxeve parse_xeve_params 函數接受的 key=value 元組列表。

xeve 專案網站位於 https://github.com/mpeg5/xeve

16.19.1 選項

libxeve 包裝器支援下列選項。括號中列出 xeve 等效選項或值,以便於遷移。

為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。有關未記錄的通用選項的文件,請參閱 編解碼器選項章節

若要取得更準確和廣泛的 libxeve 選項文件,請調用命令 xeve_app --help 或查閱 libxeve 文件。

b (bitrate)

設定目標視訊位元率,以位元/秒為單位。請注意,FFmpeg 的 b 選項以位元/秒表示,而 xeve 的位元率以千位元/秒為單位。

bf (bframes)

設定 B 影格的最大數目 (1,3,7,15)。

g (keyint)

設定 GOP 大小 (I 畫面週期)。

preset (preset)

設定 xeve 預設值。設定編碼器預設值以決定編碼速度 [fast, medium, slow, placebo]

tune (tune)

設定編碼器微調參數 [psnr, zerolatency]

profile (profile)

設定編碼器設定檔 [0: baseline; 1: main]

crf (crf)

設定恆定品質模式的品質。恆定速率因數 <10..49> [預設值: 32]

qp (qp)

設定恆定量化率控制方法參數。量化參數 qp <0..51> [預設值: 32]

threads (threads)

強制使用特定數量的執行緒

16.20 libxvid

Xvid MPEG-4 Part 2 編碼器包裝器。

此編碼器需要在設定期間存在 libxvidcore 標頭和程式庫。您需要使用 --enable-libxvid --enable-gpl 明確設定組建。

原生 mpeg4 編碼器支援 MPEG-4 Part 2 格式,因此使用者無需此程式庫即可編碼為此格式。

16.20.1 選項

libxvid 包裝器支援下列選項。下列部分選項已列出但未記錄在文件中,且對應於共用編碼器選項。請參閱 編碼器選項章節 以取得其文件。未列出的其他共用選項對 libxvid 編碼器無效。

b
g
qmin
qmax
mpeg_quant
threads
bf
b_qfactor
b_qoffset
flags

設定特定編碼旗標。可能的值

mv4

每個巨集區塊使用四個運動向量。

aic

啟用高品質 AC 預測。

gray

僅編碼灰階。

qpel

啟用四分之一像素運動補償。

cgop

啟用封閉式 GOP。

global_header

將全域標頭放置在 extradata 中,而不是每個關鍵幀中。

gmc

啟用全域運動補償 (GMC) 的使用。預設值為 0 (停用)。

me_quality

設定運動估計品質等級。可能的值,依速度遞減和品質遞增順序排列

0

不使用運動估計 (預設)。

1, 2

針對 16x16 區塊啟用進階菱形區域搜尋,並針對 16x16 區塊啟用半像素精細化。

3, 4

啟用上述所有功能,外加針對 8x8 區塊的進階菱形區域搜尋和針對 8x8 區塊的半像素精細化,也針對 P 和 B 影格在色度平面上啟用運動估計。

5, 6

啟用上述所有功能,外加擴展的 16x16 和 8x8 區塊搜尋。

mbd

設定巨集區塊決策演算法。可能的值,依品質遞增順序排列

simple

使用巨集區塊比較函數演算法 (預設)。

bits

針對 16x16 區塊啟用基於率失真 (RD) 的半像素和四分之一像素精細化。

rd

啟用上述所有功能,外加針對 8x8 區塊的基於率失真 (RD) 的半像素和四分之一像素精細化,以及使用正方形模式的基於率失真 (RD) 的搜尋。

lumi_aq

設定為 1 時,啟用亮度遮罩自適應量化。預設值為 0 (停用)。

variance_aq

設定為 1 時,啟用變異數自適應量化。預設值為 0 (停用)。

當與 lumi_aq 結合使用時,產生的品質不會優於單獨指定的任何一個。換句話說,產生的品質將是這兩種效果中較差的一個。

trellis

設定速率失真最佳化量化。

ssim

設定結構相似性 (SSIM) 顯示方法。可能的值

off

停用 SSIM 資訊的顯示。

avg

在編碼結束時將平均 SSIM 輸出到 stdout。顯示平均 SSIM 的格式為

Average SSIM: %f

對於不熟悉 C 的使用者,%f 表示浮點數或小數 (例如 0.939232)。

frame

在編碼期間輸出每個影格的 SSIM 資料,並在編碼結束時將平均 SSIM 輸出到 stdout。每個影格資訊的格式為

       SSIM: avg: %1.3f min: %1.3f max: %1.3f

對於不熟悉 C 的使用者,%1.3f 表示四捨五入到小數點後 3 位數的浮點數 (例如 0.932)。

ssim_acc

設定 SSIM 準確度。有效選項是 0-4 範圍內的整數,其中 0 提供最準確的結果,而 4 計算速度最快。

16.21 MediaFoundation

這為 MediaFoundation 框架中的編碼器 (音訊和視訊) 提供包裝器。它可以存取 SW 和 HW 編碼器。視訊編碼器可以採用 nv12 或 yuv420p 形式的輸入 (某些編碼器同時支援這兩種形式,某些編碼器僅支援其中一種 - 實際上,nv12 是更安全的選擇,尤其是在 HW 編碼器中)。

16.22 Microsoft RLE

Microsoft RLE 又名 MSRLE 編碼器。僅支援 8 位元調色盤模式。相容於 Windows 3.1 和 Windows 95。

16.22.1 選項

g integer

關鍵影格間隔。關鍵影格至少每 -g 個影格插入一次,有時會更早。

16.23 mpeg2

MPEG-2 視訊編碼器。

16.23.1 選項

profile

選擇要編碼的 mpeg2 設定檔

422
high
ss

空間可擴展

snr

SNR 可擴展

main
simple
level

選擇要編碼的 mpeg2 等級

high
high1440
main
low
seq_disp_ext integer

指定編碼器是否應將 sequence_display_extension 寫入輸出。

-1
auto

自動決定是否寫入 (這是預設值),方法是檢查要寫入的資料是否與預設值或未指定的值不同。

0
永不

永不寫入。

1
總是

總是寫入。

video_format integer

指定寫入序列顯示擴展中的 video_format,以指示視訊圖片的來源。預設值為 ‘unspecified’,可以是 ‘component’、‘pal’、‘ntsc’、‘secam’ 或 ‘mac’。為了達到最大的相容性,請使用 ‘component’。

a53cc boolean

將封閉字幕 (必須是 ATSC 相容格式) 匯入輸出。預設值為 1 (開啟)。

16.24 png

PNG 影像編碼器。

16.24.1 私有選項

dpi integer

設定像素的物理密度,單位為點/英寸 (dpi),預設為未設定

dpm integer

設定像素的物理密度,單位為點/公尺 (dpm),預設為未設定

16.25 ProRes

Apple ProRes 編碼器。

FFmpeg 包含 2 個 ProRes 編碼器,即 prores-aw 和 prores-ks 編碼器。可以使用 -vcodec 選項選擇要使用的編碼器。

16.25.1 prores-ks 的私有選項

profile integer

選擇要編碼的 ProRes 設定檔

proxy
lt
standard
hq
4444
4444xq
quant_mat integer

選擇量化矩陣。

auto
default
proxy
lt
standard
hq

如果設定為 auto,將會選取與設定檔相符的矩陣。如果未設定,則會選取提供最高品質的矩陣,即 default

bits_per_mb integer

為一個巨集區塊編碼分配多少位元。不同的設定檔使用每個巨集區塊 200 到 2400 位元,最大值為 8000 位元。

mbs_per_slice integer

每個切片中的巨集區塊數量 (1-8);預設值 (8) 在幾乎所有情況下都應該適用。

vendor string

覆寫 4 位元組的供應商 ID。自訂供應商 ID (例如 apl0) 會聲稱串流是由 Apple 編碼器產生的。

alpha_bits integer

指定 Alpha 分量的位元數。可能的值為 0816。使用 0 停用 Alpha 平面編碼。

16.25.2 速度考量

在預設操作模式下,編碼器必須遵守幀約束 (即,產生的幀大小不得大於請求的大小),同時仍使輸出圖片盡可能良好。包含大量小細節的幀更難壓縮,編碼器會花費更多時間搜尋每個切片的適當量化器。

設定更高的 bits_per_mb 限制將提高速度。

為了獲得最快的編碼速度,請設定 qscale 參數 (建議值為 4),且不要設定大小約束。

16.26 QSV 編碼器

Intel QuickSync Video 編碼器系列 (MPEG-2、H.264、HEVC、JPEG/MJPEG、VP9、AV1)

16.26.1 速率控制方法

速率控制方法的選擇方式如下

  • 當指定 global_quality 時,會使用基於品質的模式。具體而言,這表示以下其中一種:
    • - CQP - 恆定量化器縮放,當也設定了 qscale 編碼器旗標時 (即 -qscale ffmpeg 選項)。
    • - LA_ICQ - 具有前瞻的智慧恆定品質,當也設定了 look_ahead 選項時。
    • - ICQ – 其他情況下的智慧恆定品質。對於 ICQ 模式,全域品質範圍為 1 到 51,其中 1 為最佳品質。
  • 否則,當使用 b 選項指定所需的平均位元率時,會使用基於位元率的模式。
    • - LA - 具有前瞻的可變位元率 (VBR),當指定了 look_ahead 選項時。
    • - VCM - 視訊會議模式,當設定了 vcm 選項時。
    • - CBR - 恆定比特率,當 maxrate 被指定且等於平均比特率時。
    • - VBR - 可變比特率,當 maxrate 被指定,但高於平均比特率時。
    • - AVBR - 平均 VBR 模式,當未指定 maxrate,且 avbr_accuracyavbr_convergence 都設定為非零值時。此模式適用於 Windows 上的 H264 和 HEVC。
  • 否則,會使用預設的速率控制方法 CQP

請注意,根據您的系統,編碼器可能會選取與您指定的模式不同的模式。將詳細程度層級設定為 verbose 或更高,以查看 QSV 執行階段實際使用的設定。

16.26.2 全域選項 -> MSDK 選項

其他 libavcodec 全域選項會對應到 MSDK 選項,如下所示

  • g/gop_size -> GopPicSize
  • bf/max_b_frames+1 -> GopRefDist
  • rc_init_occupancy/rc_initial_buffer_occupancy -> InitialDelayInKB
  • slices -> NumSlice
  • refs -> NumRefFrame
  • b_strategy/b_frame_strategy -> BRefType
  • cgop/CLOSED_GOP 編碼器旗標 -> GopOptFlag
  • 對於 CQP 模式,i_qfactor/i_qoffsetb_qfactor/b_qoffset 分別設定 QPPQPI 之間,以及 QPPQPB 之間的差異。
  • coder 選項設定為值 vlc 將使 H.264 編碼器使用 CAVLC 而非 CABAC。

16.26.3 通用選項

所有 qsv 編碼器都使用以下選項。

async_depth

指定應用程式在明確同步結果之前執行的非同步操作數量。如果為零,則未指定值。

preset

此選項列出了一系列選擇,從 veryfast (最快速度) 到 veryslow (最佳品質)。

veryfast
faster
fast
medium
slow
slower
veryslow
forced_idr

強制將 I 幀作為 IDR 幀。

low_power

對於編碼器,將此旗標設定為 ON 以降低功耗和 GPU 使用率。

16.26.4 執行期選項

以下選項可在 qsv 編碼期間使用。

global_quality
i_quant_factor
i_quant_offset
b_quant_factor
b_quant_offset

h264_qsv 和 hevc_qsv 中支援。變更這些值以重設 qsv 編碼器的 qp 組態。

max_frame_size

h264_qsv 和 hevc_qsv 中支援。變更此值以重設 qsv 編碼器的 MaxFrameSize 組態。

gop_size

變更此值以重設 qsv 編碼器的 gop 組態。

int_ref_type
int_ref_cycle_size
int_ref_qp_delta
int_ref_cycle_dist

h264_qsv 和 hevc_qsv 中支援。變更這些值以重設 qsv 編碼器的 Intra Refresh 組態。

qmax
qmin
max_qp_i
min_qp_i
max_qp_p
min_qp_p
max_qp_b
min_qp_b

h264_qsv 中支援。變更這些值以重設 qsv 編碼器的 max/min qp 組態。

low_delay_brc

h264_qsv、hevc_qsv 和 av1_qsv 中支援。變更此值以重設 qsv 編碼器的 low_delay_brc 組態。

framerate

變更此值以重設 qsv 編碼器的 framerate 組態。

bit_rate
rc_buffer_size
rc_initial_buffer_occupancy
rc_max_rate

變更這些值以重設 qsv 編碼器的比特率控制組態。

pic_timing_sei

h264_qsv 和 hevc_qsv 中支援。變更此值以重設 qsv 編碼器的 pic_timing_sei 組態。

qsv_params

將 QSV 編碼器參數設定為以冒號分隔的鍵值對清單。

qsv_params 應格式化為 key1=value1:key2=value2:...

這些參數會使用 MFXSetParameter 函數直接傳遞至底層的 Intel Quick Sync Video (QSV) 編碼器。

範例

ffmpeg -i input.mp4 -c:v h264_qsv -qsv_params "CodingOption1=1:CodingOption2=2" output.mp4

此選項允許對 QSV 編碼器提供的各種編碼器特定設定進行細微控制。

16.26.5 H264 選項

h264_qsv 使用以下選項

extbrc

擴展比特率控制。

recovery_point_sei

設定此旗標以在每個內部刷新週期的開頭插入恢復點 SEI 訊息。

rdo

啟用速率失真最佳化。

max_frame_size

最大編碼幀大小 (以位元組為單位)。

max_frame_size_i

I 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 I 幀,會忽略 max_frame_size 設定的值。

max_frame_size_p

P 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 P 幀,會忽略 max_frame_size 設定的值。

max_slice_size

最大編碼切片大小 (以位元組為單位)。

bitrate_limit

切換比特率限制。修改比特率以使其在 QSV 編碼器施加的範圍內。關閉此旗標可能會導致違反 HRD 一致性。請注意,指定低於 QSV 編碼器範圍的比特率可能會嚴重影響品質。如果開啟此選項,則在非 CQP 模式下生效:如果比特率不在 QSV 編碼器施加的範圍內,則會將其變更為在該範圍內。

mbbrc

設定此旗標會啟用巨集區塊層級比特率控制,這通常會提高主觀視覺品質。啟用此旗標可能會對效能和客觀視覺品質指標產生負面影響。

low_delay_brc

設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的比特率控制,以最大限度地減少位元串流大小逐幀的差異。值:-1-預設 0-關閉 1-開啟

adaptive_i

此旗標控制 QSV 編碼器插入 I 幀。開啟此旗標以允許將幀類型從 P 和 B 變更為 I。

adaptive_b

此旗標控制將幀類型從 B 變更為 P。

p_strategy

啟用 P 金字塔:0-預設 1-簡單 2-金字塔 (bf 需要設定為 0)。

b_strategy

此選項控制 B 幀作為參考幀的使用。

dblk_idc

此選項停用去區塊效應濾波。它的值在 0~2 範圍內。

cavlc

如果設定,則使用 CAVLC;如果未設定,則使用 CABAC 進行編碼。

vcm

視訊會議模式,請參閱速率控制方法。

idr_interval

IDR 幀之間的距離 (以 I 幀為單位)。

pic_timing_sei

插入帶有 pic_struct_syntax 元素的圖片時序 SEI。

single_sei_nal_unit

將所有 SEI 訊息放入一個 NALU 中。

max_dec_frame_buffering

DPB 中緩衝的最大幀數。

look_ahead

使用具有前瞻的 VBR 演算法。

look_ahead_depth

前瞻深度 (以幀數為單位)。

look_ahead_downsampling

為前瞻分析儲存的幀的降頻取樣因子。

unknown
auto
off
2x
4x
int_ref_type

指定內部刷新類型。內部刷新的主要目標是提高錯誤彈性,而不會顯著影響 I 幀導致的編碼位元串流大小。none 表示不刷新。vertical 表示垂直刷新,按巨集區塊列。horizontal 表示水平刷新,按巨集區塊行。slice 表示按切片進行水平刷新,無重疊。在 slice 的情況下,in_ref_cycle_size 會被忽略。若要啟用內部刷新,B 幀應設定為 0。

int_ref_cycle_size

指定從 2 開始的刷新週期內的圖片數量。0 和 1 是無效值。

int_ref_qp_delta

指定插入的內部巨集區塊的 QP 差異。如果亮度樣本的目標編碼位元深度為 8,則此為 [-51, 51] 範圍內的帶正負號值,如果位元深度為 10,則此範圍為 [-63, 63],如果位元深度為 12,則此範圍為 [-75, 75]。

int_ref_cycle_dist

幀中內部刷新週期開始之間的距離。

profile
unknown
baseline
main
high
a53cc

使用 A53 封閉字幕 (如果可用)。

aud

插入存取單元分隔符 NAL。

mfmode

多幀模式。

off
auto
repeat_pps

為每個幀重複 pps。

max_qp_i

I 幀的最大視訊量化器縮放。

min_qp_i

I 幀的最小視訊量化器縮放。

max_qp_p

P 幀的最大視訊量化器縮放。

min_qp_p

P 幀的最小視訊量化器縮放。

max_qp_b

B 幀的最大視訊量化器縮放。

min_qp_b

B 幀的最小視訊量化器縮放。

scenario

向編碼器提供有關編碼工作階段情境的提示。

unknown
displayremoting
videoconference
archive
livestreaming
cameracapture
videosurveillance
gamestreaming
remotegaming
avbr_accuracy

AVBR 速率控制的準確度 (單位為百分之十)。

avbr_convergence

AVBR 速率控制的收斂性 (單位為 100 幀)

參數 avbr_accuracyavbr_convergence 用於平均可變比特率控制 (AVBR) 演算法。該演算法著重於整體編碼品質,同時在 avbr_accuracy 準確度範圍內,在 avbr_Convergence 週期後,滿足指定的比特率 target_bitrate。此方法不遵循 HRD,且瞬時比特率不受限制或填充。

skip_frame

在編碼時使用每幀元數據 "qsv_skip_frame" 來跳過幀。此選項定義了此元數據的使用方式。

no_skip

幀跳過已停用。

insert_dummy

編碼器將位元串流幀插入到所有巨集區塊都編碼為跳過的位置。

insert_nothing

與 insert_dummy 類似,但編碼器不會在位元串流中插入任何內容。跳過的幀仍用於 brc。例如,gop 仍然包含跳過的幀,並且跳過幀之後的幀大小會更大。

brc_only

skip_frame 元數據指示目前幀之前遺漏的幀數。

16.26.6 HEVC 選項

hevc_qsv 使用以下選項

extbrc

擴展比特率控制。

recovery_point_sei

設定此旗標以在每個內部刷新週期的開頭插入恢復點 SEI 訊息。

rdo

啟用速率失真最佳化。

max_frame_size

最大編碼幀大小 (以位元組為單位)。

max_frame_size_i

I 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 I 幀,會忽略 max_frame_size 設定的值。

max_frame_size_p

P 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 P 幀,會忽略 max_frame_size 設定的值。

max_slice_size

最大編碼切片大小 (以位元組為單位)。

mbbrc

設定此旗標會啟用巨集區塊層級比特率控制,這通常會提高主觀視覺品質。啟用此旗標可能會對效能和客觀視覺品質指標產生負面影響。

low_delay_brc

設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的比特率控制,以最大限度地減少位元串流大小逐幀的差異。值:-1-預設 0-關閉 1-開啟

adaptive_i

此旗標控制 QSV 編碼器插入 I 幀。開啟此旗標以允許將幀類型從 P 和 B 變更為 I。

adaptive_b

此旗標控制將幀類型從 B 變更為 P。

p_strategy

啟用 P 金字塔:0-預設 1-簡單 2-金字塔 (bf 需要設定為 0)。

b_strategy

此選項控制 B 幀作為參考幀的使用。

dblk_idc

此選項停用去區塊效應濾波。它的值在 0~2 範圍內。

idr_interval

IDR 幀之間的距離 (以 I 幀為單位)。

begin_only

僅在串流開始時輸出 IDR 幀。

load_plugin

要在內部工作階段中載入的使用者外掛程式。

none
hevc_sw
hevc_hw
load_plugins

要在內部工作階段中載入的十六進制外掛程式 UID 的 :-分隔清單。

look_ahead_depth

前瞻深度 (以幀數為單位),當啟用 extbrc 選項時可用。

profile

設定編碼設定檔 (scc 需要 libmfx >= 1.32)。

unknown
main
main10
mainsp
rext
scc
tier

設定編碼層級 (僅當層級 >= 4 時才能支援高層級)。此選項僅在指定 level 選項時生效。

main
high
gpb

1:GPB (廣義 P/B 幀)

0:常規 P 幀。

tile_cols

平鋪編碼的列數。

tile_rows

平鋪編碼的行數。

aud

插入存取單元分隔符 NAL。

pic_timing_sei

插入帶有 pic_struct_syntax 元素的圖片時序 SEI。

transform_skip

開啟此選項以啟用 transformskip。在等於或高於 ICL 的平台上支援。

int_ref_type

指定內部刷新類型。內部刷新的主要目標是提高錯誤彈性,而不會顯著影響 I 幀導致的編碼位元串流大小。none 表示不刷新。vertical 表示垂直刷新,按巨集區塊列。horizontal 表示水平刷新,按巨集區塊行。slice 表示按切片進行水平刷新,無重疊。在 slice 的情況下,in_ref_cycle_size 會被忽略。若要啟用內部刷新,B 幀應設定為 0。

int_ref_cycle_size

指定從 2 開始的刷新週期內的圖片數量。0 和 1 是無效值。

int_ref_qp_delta

指定插入的內部巨集區塊的 QP 差異。如果亮度樣本的目標編碼位元深度為 8,則此為 [-51, 51] 範圍內的帶正負號值,如果位元深度為 10,則此範圍為 [-63, 63],如果位元深度為 12,則此範圍為 [-75, 75]。

int_ref_cycle_dist

幀中內部刷新週期開始之間的距離。

max_qp_i

I 幀的最大視訊量化器縮放。

min_qp_i

I 幀的最小視訊量化器縮放。

max_qp_p

P 幀的最大視訊量化器縮放。

min_qp_p

P 幀的最小視訊量化器縮放。

max_qp_b

B 幀的最大視訊量化器縮放。

min_qp_b

B 幀的最小視訊量化器縮放。

scenario

向編碼器提供有關編碼工作階段情境的提示。

unknown
displayremoting
videoconference
archive
livestreaming
cameracapture
videosurveillance
gamestreaming
remotegaming
avbr_accuracy

AVBR 速率控制的準確度 (單位為百分之十)。

avbr_convergence

AVBR 速率控制的收斂性 (單位為 100 幀)

參數 avbr_accuracyavbr_convergence 用於平均可變比特率控制 (AVBR) 演算法。該演算法著重於整體編碼品質,同時在 avbr_accuracy 準確度範圍內,在 avbr_Convergence 週期後,滿足指定的比特率 target_bitrate。此方法不遵循 HRD,且瞬時比特率不受限制或填充。

skip_frame

在編碼時使用每幀元數據 "qsv_skip_frame" 來跳過幀。此選項定義了此元數據的使用方式。

no_skip

幀跳過已停用。

insert_dummy

編碼器將位元串流幀插入到所有巨集區塊都編碼為跳過的位置。

insert_nothing

與 insert_dummy 類似,但編碼器不會在位元串流中插入任何內容。跳過的幀仍用於 brc。例如,gop 仍然包含跳過的幀,並且跳過幀之後的幀大小會更大。

brc_only

skip_frame 元數據指示目前幀之前遺漏的幀數。

16.26.7 MPEG2 選項

mpeg2_qsv 使用以下選項

profile
unknown
simple
main
high

16.26.8 VP9 選項

vp9_qsv 使用以下選項

profile
unknown
profile0
profile1
profile2
profile3
tile_cols

用於分塊編碼的欄數(需要 libmfx >= 1.29)。

tile_rows

用於分塊編碼的列數(需要 libmfx >= 1.29)。

16.26.9 AV1 選項

這些選項由 av1_qsv 使用(需要 libvpl)。

profile
unknown
main
tile_cols

平鋪編碼的列數。

tile_rows

平鋪編碼的行數。

adaptive_i

此旗標控制 QSV 編碼器插入 I 幀。開啟此旗標以允許將幀類型從 P 和 B 變更為 I。

adaptive_b

此旗標控制將幀類型從 B 變更為 P。

b_strategy

此選項控制 B 幀作為參考幀的使用。

extbrc

擴展比特率控制。

look_ahead_depth

前瞻深度 (以幀數為單位),當啟用 extbrc 選項時可用。

low_delay_brc

設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的比特率控制,以最大限度地減少位元串流大小逐幀的差異。值:-1-預設 0-關閉 1-開啟

max_frame_size

設定每個影格允許的最大大小(以位元組為單位)。如果影格大小超過限制,編碼器將調整 QP 值以控制影格大小。在 CQP 速率控制模式下無效。

max_frame_size_i

I 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 I 幀,會忽略 max_frame_size 設定的值。

max_frame_size_p

P 幀的最大編碼幀大小 (以位元組為單位)。如果此值設定為大於零,則對於 P 幀,會忽略 max_frame_size 設定的值。

16.27 snow

16.27.1 選項

iterative_dia_size

迭代式運動估算的 dia 大小

16.28 VAAPI 編碼器

透過 VAAPI 存取的硬體編碼器封裝器。

這些編碼器僅接受 VAAPI 硬體表面的輸入。如果您的輸入是軟體影格,請使用 hwupload 濾鏡將它們上傳到 GPU。

使用下列標準 libavcodec 選項

  • g / gop_size
  • bf / max_b_frames
  • profile

    如果未設定,則會根據輸入影格的格式和驅動程式支援的設定檔自動決定。

  • level
  • b / bit_rate
  • maxrate / rc_max_rate
  • bufsize / rc_buffer_size
  • rc_init_occupancy / rc_initial_buffer_occupancy
  • compression_level

    速度/品質權衡:數值越高,速度越快/品質越差。

  • q / global_quality

    大小/品質權衡:數值越高,檔案越小/品質越差。

  • qmin
  • qmax
  • i_qfactor / i_quant_factor
  • i_qoffset / i_quant_offset
  • b_qfactor / b_quant_factor
  • b_qoffset / b_quant_offset
  • slices

所有編碼器都支援以下選項

low_power

某些驅動程式/平台為某些編解碼器提供第二個編碼器,旨在降低功耗,設定此選項將嘗試使用該編碼器。請注意,它可能支援縮減的功能集,因此某些其他選項可能在此模式下不可用。

idr_interval

設定開放式 GOP 模式中完整刷新 (IDR) 影格之間的正常畫面內影格數量。畫面內影格仍然是 IRAP,但不包含全域標頭,並且可能具有不可解碼的前導圖片。

b_depth

設定 B 影格參考深度。當設定為 1(預設值)時,所有 B 影格將僅參考 P 影格或 I 影格。當設定為較大的值時,將存在多層 B 影格,每層中的影格僅參考較高層中的影格。

async_depth

最大處理並行度。增加此值可提高單通道效能。如果驅動程式未實作 vaSyncBuffer 函數,則此選項不起作用。如果使用大量的 async_depth,請確保分配了足夠的 hw_frames。

max_frame_size

設定每個影格允許的最大大小(以位元組為單位)。如果影格大小超過限制,編碼器將調整 QP 值以控制影格大小。在 CQP 速率控制模式下無效。

rc_mode

設定要使用的速率控制模式。給定的驅動程式可能僅支援模式的子集。

可能的模式

auto

根據驅動程式支援和其他選項自動選擇模式。這是預設值。

CQP

恆定品質。

CBR

恆定位元率。

VBR

可變位元率。

ICQ

智慧型恆定品質。

QVBR

品質定義的可變位元率。

AVBR

平均可變位元率。

blbrc

啟用區塊級別速率控制,這會逐區塊分配不同的位元率。在 CQP 模式下無效。

每個編碼器也有其自己的特定選項

av1_vaapi

profile 設定 seq_profile 的值。tier 設定 seq_tier 的值。level 設定 seq_level_idx 的值。

tiles

設定用於編碼輸入視訊的圖磚數量,格式為欄 x 列。(預設為自動,表示使用最小的圖磚欄/列數)。

tile_groups

設定圖磚群組數量。所有圖磚將盡可能均勻地分配到每個圖磚群組。(預設值為 1)。

h264_vaapi

profile 設定 profile_idcconstraint_set*_flag 的值。level 設定 level_idc 的值。

coder

設定熵編碼器(預設為 cabac)。可能的值

ac
cabac

使用 CABAC。

vlc
cavlc

使用 CAVLC。

aud

在串流中包含存取單元分隔符(預設不包含)。

sei

設定要包含的 SEI 訊息類型。以下值的某些組合

identifier

包含一個 user_data_unregistered 訊息,其中包含有關編碼器的資訊。

timing

包含圖片時序參數 (buffering_periodpic_timing 訊息)。

recovery_point

在適當的地方包含恢復點 (recovery_point 訊息)。

hevc_vaapi

profilelevel 分別設定 general_profile_idcgeneral_level_idc 的值。

aud

在串流中包含存取單元分隔符(預設不包含)。

tier

設定 general_tier_flag。如果未明確指定串流的層級,這可能會影響選擇的層級。

sei

設定要包含的 SEI 訊息類型。以下值的某些組合

hdr

如果輸入影格具有 HDR 元數據,則包含 HDR 元數據 (mastering_display_colour_volumecontent_light_level 訊息)。

tiles

設定用於編碼輸入視訊的圖磚數量,格式為欄 x 列。較大的數字允許在編碼和解碼中具有更大的並行性,但可能會降低編碼效率。

mjpeg_vaapi

僅支援基準 DCT 編碼。編碼器始終使用標準量化表和霍夫曼表 - global_quality 縮放標準量化表(範圍 1-100)。

對於 YUV,支援 4:2:0、4:2:2 和 4:4:4 子採樣模式。也支援 RGB,並將建立 RGB JPEG。

jfif

在每個影格中包含 JFIF 標頭(預設不包含)。

huffman

包含標準霍夫曼表(預設為開啟)。關閉此選項將在每個輸出影格中節省幾百個位元組,但可能會失去與某些未完全處理 MJPEG 的 JPEG 解碼器的相容性。

mpeg2_vaapi

profilelevel 設定 profile_and_level_indication 的值。

vp8_vaapi

不支援 B 影格。

global_quality 設定用於非關鍵影格的 q_idx(範圍 0-127)。

loop_filter_level
loop_filter_sharpness

手動設定迴路濾波器參數。

vp9_vaapi

global_quality 設定用於 P 影格的 q_idx(範圍 0-255)。

loop_filter_level
loop_filter_sharpness

手動設定迴路濾波器參數。

支援 B 影格,但輸出串流始終處於編碼順序而不是顯示順序。如果啟用 B 影格,則可能需要使用 vp9_raw_reorder 位元串流濾鏡來修改輸出串流,以正確的順序顯示影格。

僅產生正常影格 - 可能需要 vp9_superframe 位元串流濾鏡來產生可與所有解碼器一起使用的串流。

16.29 vbn

Vizrt 二進制影像編碼器。

廣播供應商 Vizrt 使用此格式進行快速紋理串流。不支援該格式的進階功能,例如紋理資料的 LZW 壓縮或 mipmap 的產生。

16.29.1 選項

format string

設定 VBN 檔案使用的紋理壓縮。可以是 dxt1dxt5raw。預設為 dxt5

16.30 vc2

SMPTE VC-2(以前稱為 BBC Dirac Pro)。此編解碼器主要針對專業廣播,但由於它支援 yuv420、yuv422 和 yuv444,在 8 位元(有限範圍或完整範圍)、10 位元或 12 位元下,這使其適用於其他需要低開銷和低壓縮的任務(如螢幕錄製)。

16.30.1 選項

b

設定目標視訊位元率。通常約為未壓縮視訊位元率的 1:6(例如,對於 1920x1080 50fps yuv422p10,約為 400Mbps)。較高的值(接近未壓縮的位元率)會開啟無損壓縮模式。

field_order

設定時啟用欄位編碼(例如,對於交錯式輸入,設定為 tt - 頂欄優先)。應提高交錯式內容的壓縮率,因為它會分割欄位並分別編碼每個欄位。

wavelet_depth

設定要應用的總小波轉換量,介於 1 到 5 之間(預設值)。較低的值會降低壓縮率和品質。功能較弱的解碼器可能無法處理超過 3 的 wavelet_depth 值。

wavelet_type

設定轉換類型。目前僅實作了 5_3 (LeGall) 和 9_7 (Deslauriers-Dubuc),其中 9_7 是壓縮效果較好的,因此是預設值。

slice_width
slice_height

設定每個切片的切片大小。較大的值會產生更好的壓縮效果。為了與其他更受限制的解碼器相容,請使用 32 的 slice_width 和 8 的 slice_height

tolerance

設定速率控制系統的欠壓容限百分比。這是為了防止執行昂貴的搜尋。

qm

設定預設情況下或當 wavelet_depth 設定為 5 時要使用的量化矩陣預設值

  • - default 使用規格中的預設量化矩陣,並擴展了第五級的值。這在保持細節和省略偽影之間提供了良好的平衡。
  • - flat 使用完全歸零的量化矩陣。這會提高 PSNR,但可能會降低感知度。在虛假基準測試中使用。
  • - color 降低細節,但嘗試在極低位元率下保留色彩。

17 字幕編碼器

17.1 dvdsub

此編解碼器編碼 DVD 中使用的點陣圖字幕格式。它們通常儲存在 VOBSUB 檔案對 (*.idx + *.sub) 中,並且也可以在 Matroska 檔案中使用。

17.1.1 選項

palette

指定點陣圖使用的全域調色盤。

此選項的格式為一個字串,包含 16 個以逗號分隔的 24 位元十六進位數字 (不含 0x 前綴),例如 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b

even_rows_fix

當設定為 1 時,啟用一種變通方法,使所有字幕中的像素行數為偶數。這修正了一些播放器在行數為奇數時切斷底行的問題。變通方法只是在需要時新增完全透明的行。開銷很低,平均每個字幕一個位元組。

預設情況下,此變通方法已停用。

18 位元串流濾鏡

當您配置 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

以下是目前可用的位元串流濾鏡的描述,以及它們的參數(如果有的話)。

18.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 及相關格式自動插入。

18.2 av1_metadata

修改嵌入在 AV1 串流中的元數據。

td

在串流的所有時間單元中插入或移除時間分隔符 OBU。

insert

在每個尚無 TD 的 TU 的開頭插入 TD。

remove

從每個具有 TD 的 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

刪除 Padding OBU。

18.3 chomp

移除封包結尾的零填充。

18.4 dca_core

從 DCA/DTS 串流中提取核心,移除擴展名,例如 DTS-HD。

18.5 dovi_rpu

在 HEVC/AV1 位元串流中操作 Dolby Vision 元數據,可選擇啟用元數據壓縮。

strip

如果啟用,則從串流中移除所有 Dolby Vision 元數據(配置記錄 + RPU 資料區塊)。

compression

要啟用的壓縮等級。

none

無元數據壓縮。

limited

有限的元數據壓縮方案。應與大多數裝置相容。這是預設值。

extended

擴展的元數據壓縮。裝置不需要支援此功能。請注意,此等級目前在 libavcodec 中的行為與 ‘limited’ 相同。

18.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

18.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

特定的錯誤狀態碼

請參閱第 44-46 頁或 http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的 5.5 節

18.8 eac3_core

從 E-AC-3 串流中提取核心,捨棄額外聲道。

18.9 extract_extradata

提取頻內額外資料。

某些編碼器允許長期的標頭(例如 MPEG-2 序列標頭,或 H.264/HEVC 的 (VPS/)SPS/PPS)以「頻內」(即作為包含編碼幀的位元串流的一部分)或「頻外」(例如在容器層級)傳輸。在 FFmpeg 術語中,後者形式稱為「額外資料」。

此位元串流濾波器偵測頻內標頭,並使其作為額外資料提供。

移除

啟用此選項後,長期標頭會在提取後從位元串流中移除。

18.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

18.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

18.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’,表示篩選器應嘗試從輸入串流屬性中猜測級別。

18.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) 輸出格式自動插入。

18.14 h264_redundant_pps

這會對某些包含冗餘 PPS 的 Blu-ray BDMV H264 串流應用特定的修復。PPS 會修改串流的不相關參數,混淆需要正確額外資料的其他轉換。

在這些受影響串流上使用的編碼器會在整個串流中新增額外的 PPS,改變初始 QP 以及是否啟用加權預測。這會在將串流複製到全域標頭容器後引起問題,因為起始 PPS 不適用於串流的其餘部分。例如,副作用之一是搜尋將傳回亂碼輸出,直到出現新的 PPS。

此 BSF 會移除額外的 PPS,並重寫切片標頭,以便串流在全域標頭中使用單個前導 PPS,從而解決此問題。

18.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’,表示篩選器應嘗試從輸入串流屬性中猜測級別。

18.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) 輸出格式自動插入。

18.17 imxdump

修改位元串流以適合 MOV 並可供 Final Cut Pro 解碼器使用。此篩選器僅適用於 mpeg2video 編碼解碼器,並且對於 Final Cut Pro 7 和更新版本,具有適當的 -tag:v,可能不需要。

例如,將 30 MB/sec NTSC IMX 重新混合為 MOV

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

18.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

18.19 mjpegadump

將 MJPEG A 標頭新增到位元串流,以啟用 Quicktime 解碼。

18.20 mov2textsub

從 MOV 字幕中提取可表示的文字檔案,從每個字幕封包中剝離元資料標頭。

另請參閱 text2movsub 篩選器。

18.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)。

18.22 mpeg4_unpack_bframes

解壓縮 DivX 樣式的封裝 B 幀。

DivX 樣式的封裝 B 幀不是有效的 MPEG-4,僅是針對損壞的 Video for 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

18.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

偽隨機整數,主要從封包有效負載的內容衍生而來。

18.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

18.24 null

此位元流濾波器讓封包保持不變地通過。

18.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 -

18.26 pgs_frame_merge

將一系列以「顯示集結束」片段結尾的 PGS 字幕片段合併為單一封包。

某些支援 PGS 字幕的容器(muxer matroska)需要此功能。

18.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

18.28 remove_extra

從封包中移除額外數據。

它接受以下參數

freq

設定要從哪些幀類型中移除額外數據。

k

僅從非關鍵幀中移除額外數據。

keyframe

僅從關鍵幀中移除額外數據。

e, all

從所有幀中移除額外數據。

18.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

18.30 showinfo

記錄基本封包資訊。主要用於測試、除錯和開發。

18.31 text2movsub

將文字字幕轉換為 MOV 字幕(由 mov_text 編碼解碼器使用),並帶有元數據標頭。

另請參閱 mov2textsub 濾波器。

18.32 trace_headers

記錄追蹤輸出,其中包含編碼串流標頭中的所有語法元素(高於個別編碼區塊層級的所有內容)。這對於除錯低階串流問題可能很有用。

支援 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根據建置版本,可能只有這些的子集可用。

18.33 truehd_core

從 TrueHD 串流中提取核心,捨棄 ATMOS 數據。

18.34 vp9_metadata

修改嵌入在 VP9 串流中的元數據。

color_space

在幀標頭中設定色彩空間值。請注意,任何設定為 RGB 的幀都將隱式設定為 PC 範圍,並且 RGB 與 profile 0 和 2 不相容。

unknown
bt601
bt709
smpte170
smpte240
bt2020
rgb
color_range

在幀標頭中設定色彩範圍值。請注意,色彩空間強加的任何值都將優先於此值。

tv
pc

18.35 vp9_superframe

將 VP9 無形(alt-ref)幀合併回 VP9 超級幀。這修正了分割/分段 VP9 串流的合併問題,其中 alt-ref 幀從其可見對應幀中分割出來。

18.36 vp9_superframe_split

將 VP9 超級幀分割為單個幀。

18.37 vp9_raw_reorder

給定一個時間戳記正確但可能順序錯亂的 VP9 串流,插入額外的 show-existing-frame 封包以修正順序。

19 格式選項

libavformat 函式庫提供了一些通用的全域選項,可以在所有多工器和解多工器上設定。此外,每個多工器或解多工器都可能支援所謂的私有選項,這些選項是該組件特有的。

選項可以透過在 FFmpeg 工具中指定 -option value,或透過在 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 進行程式化使用來設定。

支援的選項列表如下

avioflags flags輸入/輸出

可能的值

direct

減少緩衝。

probesize integer輸入

設定探測大小(以位元組為單位),即用於分析以取得串流資訊的數據大小。較高的值將能夠偵測到更多分散在串流中的資訊,但會增加延遲。必須是不小於 32 的整數。預設值為 5000000。

max_probe_packets integer輸入

設定探測編碼解碼器時緩衝封包的最大數量。預設值為 2500 個封包。

packetsize integer輸出

設定封包大小。

fflags flags

設定格式旗標。有些是為有限數量的格式實作的。

輸入檔案的可能值

discardcorrupt

捨棄損壞的封包。

fastseek

為某些格式啟用快速但不精確的搜尋。

genpts

如果 DTS 存在,則產生遺失的 PTS。

igndts

如果 PTS 也已設定,則忽略 DTS。如果 PTS 已設定,則 DTS 值會設定為 NOPTS。當設定 nofillin 旗標時,這會被忽略。

ignidx

忽略索引。

nobuffer

減少在初始輸入串流分析期間由緩衝引入的延遲。

nofillin

不要填寫可以精確計算的封包欄位中的遺失值。

noparse

停用 AVParsers,這也需要 +nofillin

sortdts

嘗試按 DTS 交錯輸出封包。目前僅適用於具有索引的 AVI。

輸出檔案的可能值

autobsf

自動套用輸出格式要求的位元流濾波器。預設為啟用。

bitexact

僅寫入平台、建置和時間獨立的數據。這確保了檔案和數據校驗和在平台之間是可重現且匹配的。其主要用途是用於迴歸測試。

flush_packets

立即寫出封包。

shortest

在最短串流結束時停止多工。可能需要增加 max_interleave_delta 以避免在 EOF 之前刷新較長的串流。

seek2any integer輸入

如果設定為 1,則允許在解多工器層級搜尋非關鍵幀(如果支援)。預設值為 0。

analyzeduration integer輸入

指定分析多少微秒以探測輸入。較高的值將能夠偵測到更精確的資訊,但會增加延遲。預設值為 5,000,000 微秒 = 5 秒。

cryptokey hexadecimal string輸入

設定解密金鑰。

indexmem integer輸入

設定用於時間戳記索引的最大記憶體(每個串流)。

rtbufsize integer輸入

設定用於緩衝即時幀的最大記憶體。

fdebug flags輸入/輸出

列印特定的偵錯資訊。

可能的值

ts
max_delay integer輸入/輸出

設定最大多工或解多工延遲(以微秒為單位)。

fpsprobesize integer輸入

設定用於探測 fps 的幀數。

audio_preload integer輸出

設定音訊封包應提前交錯的微秒數。

chunk_duration integer輸出

設定每個區塊的微秒數。

chunk_size integer輸出

設定每個區塊的大小(以位元組為單位)。

err_detect, f_err_detect flags輸入

設定錯誤偵測旗標。f_err_detect 已棄用,應僅透過 ffmpeg 工具使用。

可能的值

crccheck

驗證嵌入的 CRC。

bitstream

偵測位元流規格偏差。

buffer

偵測不正確的位元流長度。

explode

在偵測到輕微錯誤時中止解碼。

careful

將違反規格且在實際應用中未見過的事物視為錯誤。

compliant

將所有不符合規格之處視為錯誤。

aggressive

將健全編碼器不應執行的事物視為錯誤。

max_interleave_delta integer輸出

設定交錯的最大緩衝持續時間。持續時間以微秒為單位表示,預設值為 10000000(10 秒)。

為了確保所有串流都正確交錯,libavformat 將等待直到它至少擁有每個串流的一個封包,然後才實際將任何封包寫入輸出檔案。當某些串流「稀疏」(即,連續封包之間存在很大間隙)時,這可能會導致過度緩衝。

此欄位指定多工佇列中第一個和最後一個封包的時間戳記之間的最大差異,超過此差異,libavformat 將輸出一個封包,無論它是否已為所有串流排隊了一個封包。

如果設定為 0,libavformat 將繼續緩衝封包,直到它擁有每個串流的封包,而不管緩衝封包之間的最大時間戳記差異。

use_wallclock_as_timestamps integer輸入

如果設定為 1,則使用系統時鐘作為時間戳記。預設值為 0。

avoid_negative_ts integer輸出

可能的值

make_non_negative

移動時間戳記以使其為非負數。另請注意,這僅影響前導負時間戳記,而不影響非單調負時間戳記。

make_zero

移動時間戳記,使第一個時間戳記為 0。

auto (預設)

在目標格式需要時啟用移動。

disabled

停用時間戳記移動。

啟用移動時,所有輸出時間戳記都會移動相同的量。與不移動的情況相比,音訊、視訊和字幕的時序不同步以及相對時間戳記差異會被保留。

skip_initial_bytes integer輸入

如果設定為 1,則設定在讀取標頭和幀之前要跳過的位元組數。預設值為 0。

correct_ts_overflow integer輸入

如果設定為 1,則修正單個時間戳記溢位。預設值為 1。

flush_packets integer輸出

在每個封包之後刷新底層 I/O 串流。預設值為 -1(自動),這表示底層協議將決定,1 啟用它,並具有降低延遲的效果,0 停用它,在某些情況下可能會提高 IO 吞吐量。

output_ts_offset offset輸出

設定輸出時間偏移。

offset 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

多工器將偏移量添加到輸出時間戳記。

指定正偏移量表示對應的串流延遲了 offset 中指定的時間長度。預設值為 0(表示不套用偏移量)。

format_whitelist list輸入

允許的解多工器之「,」分隔列表。預設情況下,允許所有解多工器。

dump_separator string (input)

用於分隔命令列上列印的串流參數欄位的分隔符號。例如,要使用換行符號和縮排來分隔欄位

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_streams integer輸入

指定串流的最大數量。這可用於拒絕由於大量串流而需要過多資源的檔案。

skip_estimate_duration_from_pts bool輸入

如果估計輸入持續時間需要在檔案結尾額外探測 PTS,則跳過估計。目前,適用於 MPEG-PS 和 MPEG-TS。

duration_probesize integer輸入

設定探測大小(以位元組為單位),用於輸入持續時間估算,當實際需要在檔案末尾額外探測 PTS 時(目前:MPEG-PS 和 MPEG-TS)。其目標使用者是對自身更好的持續時間探測感興趣的使用者,或間接地因為使用 concat 解多工器等。典型的用例是 MPEG-TS CBR,具有高位元率、高視訊緩衝,並以類似視訊和音訊的 PTS 結束清理:在這種情況下,最後一個視訊封包和最後一個音訊封包之間的大物理間隙使得需要讀取許多位元組才能獲得視訊串流持續時間。另一個用例是預設探測行為僅達到單個視訊幀,由於幀重新排序,該幀不是串流的最後一個幀,因此持續時間不準確。即使對於小檔案,設定此選項也會產生效能影響,因為探測大小是固定的。預設行為是一種通用的權衡方案,在很大程度上是自適應的,但探測大小不會擴展到不惜一切代價獲取串流持續時間。必須是不少於 1 的整數,或 0 表示預設行為。

strict, f_strict integer (input/output)

指定嚴格遵循標準的程度。 f_strict 已被棄用,僅應透過 ffmpeg 工具使用。

可能的值

very

嚴格遵守規範或參考軟體的舊版本,該版本更嚴格

strict

嚴格遵守規範中的所有事項,無論後果如何

normal
unofficial

允許非官方擴展

experimental

允許非標準化的實驗性事物、實驗性(未完成/工作中/未充分測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。

19.1 格式串流指定器

格式串流指定器允許選擇一個或多個符合特定屬性的串流。

串流指定器的確切語意由 libavformat/avformat.h 標頭中宣告的 avformat_match_stream_specifier() 函數定義,並在 (ffmpeg)串流指定器 手冊章節中記錄。

20 解多工器

解多工器是 FFmpeg 中配置的元件,可以從特定類型的檔案中讀取多媒體串流。

當您配置 FFmpeg 建置時,預設會啟用所有支援的解多工器。您可以使用配置選項 --list-demuxers 列出所有可用的解多工器。

您可以使用配置選項 --disable-demuxers 停用所有解多工器,並使用選項 --enable-demuxer=DEMUXER 選擇性地啟用單個解多工器,或使用選項 --disable-demuxer=DEMUXER 停用它。

ff* 工具的選項 -demuxers 將顯示已啟用的解多工器列表。使用 -formats 查看已啟用解多工器和多工器的組合列表。

以下是一些目前可用的解多工器的描述。

20.1 aa

Audible Format 2、3 和 4 解多工器。

此解多工器用於解多工 Audible Format 2、3 和 4 (.aa) 檔案。

20.2 aac

原始音訊資料傳輸串流 AAC 解多工器。

此解多工器用於解多工 ADTS 輸入,其中包含單個 AAC 串流以及其中的任何 ID3v1/2 或 APE 標籤。

20.3 apng

動畫可攜式網路圖形解多工器。

此解多工器用於解多工 APNG 檔案。所有標頭,但不包括 PNG 簽名,直到(但不包括)第一個 fcTL 區塊,都作為額外資料傳輸。然後將幀分割為兩個 fcTL 區塊之間,或最後一個 fcTL 和 IEND 區塊之間的所有區塊。

-ignore_loop bool

如果設定,則忽略檔案中的迴圈變數。預設為啟用。

-max_fps int

每秒最大幀速率。預設值 0 表示沒有限制。

-default_fps int

檔案中未指定幀速率時的預設幀速率(0 表示盡可能快)。預設值為 15。

20.4 asf

進階系統格式解多工器。

此解多工器用於解多工 ASF 檔案和 MMS 網路串流。

-no_resync_search bool

不要嘗試透過尋找特定的可選啟動碼來重新同步。

20.5 concat

虛擬串聯腳本解多工器。

此解多工器從文字檔案中讀取檔案和其他指令的列表,並將它們一個接一個地解多工,就好像它們的所有封包都多工在一起一樣。

檔案中的時間戳記會進行調整,以便第一個檔案從 0 開始,而每個後續檔案都從前一個檔案結束的位置開始。請注意,這是全域完成的,如果所有串流的長度不完全相同,可能會導致間隙。

所有檔案必須具有相同的串流(相同的編解碼器、相同的時間基底等)。

每個檔案的持續時間用於調整下一個檔案的時間戳記:如果持續時間不正確(因為它是使用位元率計算的,或者因為檔案被截斷等),則可能導致失真。duration 指令可用於覆蓋每個檔案中儲存的持續時間。

20.5.1 語法

腳本是一個擴充 ASCII 文字檔案,每行一個指令。空行、前導空格和以「#」開頭的行將被忽略。以下指令被識別

file path

要讀取的檔案路徑;特殊字元和空格必須使用反斜線或單引號逸出。

所有後續的檔案相關指令都適用於該檔案。

ffconcat version 1.0

識別腳本類型和版本。

為了使 FFmpeg 自動識別格式,此指令必須完全按原樣出現在腳本的第一行(沒有額外的空格或位元組順序標記)。

duration dur

檔案的持續時間。此資訊可以從檔案中指定;在此處指定可能更有效率,或者在檔案中的資訊不可用或不準確時有所幫助。

如果為所有檔案設定了持續時間,則可以在整個串聯視訊中搜尋。

inpoint timestamp

檔案的入點。當解多工器開啟檔案時,它會立即搜尋到指定的時間戳記。搜尋的目的是為了讓所有串流都可以在入點成功呈現。

此指令最適用於影格內編解碼器,因為對於非影格內編解碼器,您通常會在實際入點之前獲得額外的封包,並且解碼的內容很可能也包含入點之前的影格。

對於每個檔案,檔案入點之前的封包的時間戳記將小於檔案的計算起始時間戳記(如果是第一個檔案則為負數),並且檔案的持續時間(如果未由 duration 指令指定)將根據其指定的入點縮短。

由於指定入點之前的潛在封包,封包時間戳記可能在兩個串聯檔案之間重疊。

outpoint timestamp

檔案的出點。當解多工器在任何串流中達到指定的解碼時間戳記時,它會將其視為檔案結束條件,並跳過當前和所有剩餘的來自所有串流的封包。

出點是互斥的,這表示解多工器將不會輸出解碼時間戳記大於或等於出點的封包。

此指令最適用於影格內編解碼器和所有串流緊密交錯的格式。對於非影格內編解碼器,您通常會獲得在出點之後具有呈現時間戳記的額外封包,因此解碼的內容很可能也包含出點之後的影格。如果您的串流沒有緊密交錯,您可能無法從所有串流中獲得出點之前的所有封包,並且您可能只能解碼最早的串流直到出點。

檔案的持續時間(如果未由 duration 指令指定)將根據其指定的出點縮短。

file_packet_metadata key=value

檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。此指令已被棄用,請改用 file_packet_meta

file_packet_meta key value

檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。

option key value

用於存取、開啟和探測檔案的選項。可以多次出現。

stream

在虛擬檔案中引入串流。所有後續的串流相關指令都適用於最後引入的串流。必須設定一些串流屬性,以便識別子檔案中的匹配串流。如果在腳本中未定義串流,則會複製第一個檔案中的串流。

exact_stream_id id

設定串流的 ID。如果給定此指令,則將使用子檔案中具有相應 ID 的字串。這對於 MPEG-PS (VOB) 檔案尤其有用,其中串流的順序不可靠。

stream_meta key value

串流的中繼資料。可以多次出現。

stream_codec value

串流的編解碼器。

stream_extradata hex_string

串流的額外資料,以十六進位編碼。

chapter id start end

新增章節。 id 是一個唯一的識別碼,可能是小的且連續的。

20.5.2 選項

此解多工器接受以下選項

safe

如果設定為 1,則拒絕不安全檔案路徑和指令。如果檔案路徑不包含協定規範且是相對路徑,並且所有元件僅包含可移植字元集中的字元(字母、數字、句點、底線和連字號),並且元件的開頭沒有句點,則該檔案路徑被視為安全。

如果設定為 0,則接受任何檔案名稱。

預設值為 1。

auto_convert

如果設定為 1,則嘗試對封包資料執行自動轉換,以使串流可串聯。預設值為 1。

目前,唯一的轉換是將 h264_mp4toannexb 位元串流篩選器新增到 MP4 格式的 H.264 串流。當解析度發生變化時,這尤其必要。

segment_time_metadata

如果設定為 1,則每個封包都將包含 lavf.concat.start_timelavf.concat.duration 封包中繼資料值,這些值是以微秒表示的串聯輸出中各個檔案片段的 start_time 和 duration。僅當根據串聯檔案已知持續時間中繼資料時,才會設定持續時間中繼資料。預設值為 0。

20.5.3 範例

  • 使用絕對檔案名稱並包含一些註解
    # my first filename
    file /mnt/share/file-1.wav
    # my second filename including whitespace
    file '/mnt/share/file 2.wav'
    # my third filename including whitespace plus single quote
    file '/mnt/share/file 3'\''.wav'
    
  • 允許輸入格式自動探測,使用安全檔案名稱並設定第一個檔案的持續時間
    ffconcat version 1.0
    
    file file-1.wav
    duration 20.0
    
    file subdir/file-2.wav
    

20.6 dash

HTTP 動態自適應串流解多工器。

此解多工器呈現資訊清單中找到的所有 AVStream。透過設定 AVStream 上的捨棄標誌,呼叫者可以決定實際接收哪些串流。每個串流都鏡像來自 <Representation>idbandwidth 屬性,作為名為 "id" 和 "variant_bitrate" 的中繼資料鍵。

20.6.1 選項

此解多工器接受以下選項

cenc_decryption_key

16 位元組金鑰,以十六進位表示,用於解密使用 ISO 通用加密 (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。

20.7 dvdvideo

DVD-Video 解多工器,由 libdvdnav 和 libdvdread 提供支援。

可以直接將 DVD 標題(特別是循序 PGC)擷取到轉換管道中。也可以根據選單的座標(盡力而為)解多工選單資產,例如背景視訊或音訊。

接受區塊裝置(DVD 光碟機)、ISO 檔案和目錄結構。在其中一個輸入前面使用 -f dvdvideo 啟動。

此解多工器沒有任何種類的解密程式碼。您需要自行處理加密 DVD,並且不應期望在此問題上獲得支援。

底層播放由 libdvdnav 處理,結構剖析由 libdvdread 處理。FFmpeg 必須建置為支援 GPL 程式庫,以及配置開關 --enable-libdvdnav--enable-libdvdread

您需要提供所需的「標題編號」或精確的 PGC/PG 座標。許多開源 DVD 播放器和工具可以協助提供此資訊。如果未指定,解多工器將預設為標題 1,這適用於許多光碟。但是,由於格式的彈性,建議手動檢查。有許多光碟的製作方式很奇怪或標頭無效。

如果輸入是真實的 DVD 光碟機,請注意,有些光碟機可能會在從光碟讀取壞扇區時靜默失敗,而是傳回隨機位元,這實際上是損壞的資料。這在老化的或腐爛的光碟上尤其突出。需要第二次掃描和完整性檢查才能偵測到損壞。這不是 FFmpeg 問題。

20.7.1 背景

DVD-Video 不是傳統意義上的直接存取、線性容器格式。相反,它允許程式化地複雜播放仔細多工的 MPEG-PS 串流,這些串流儲存在無標頭 VOB 檔案中。對於終端使用者而言,這些串流簡稱為「標題」,但實際的邏輯播放順序是由標題內的一個或多個「PGC」(或程式群組鏈)定義的。PGC 又由多個「PG」(或程式)組成,這些程式是實際的視訊片段(對於典型的視訊功能,它們是按順序排列的)。PGC 結構以及串流佈局和中繼資料儲存在需要剖析的 IFO 檔案中。PGC 可以更容易地被認為是播放列表。

實際的 DVD 播放器依賴使用者透過選單和內部 VM 進行 GUI 互動,以驅動解多工的方向。通常,使用者會導航(透過選單)或自動重新導向到他們選擇的 PGC。在此過程中和後續播放期間,DVD 播放器的內部 VM 還維護狀態並執行指令,這些指令可以在播放期間建立跳轉到不同扇區。這就是為什麼 libdvdnav 會參與的原因,因為線性讀取光碟上的 MPEG-PS Blob (VOB) 在許多情況下不足以產生正確的順序。

還有許多其他 DVD 結構(一個漫長的主題)在此不再討論。特別是,此解多工器會處理 NAV 封包以建立準確的計時,但不會作為串流發射。如需良好的高階理解,請參閱:https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures

20.7.2 選項

此解多工器接受以下選項

title int

要播放的標題編號。如果未設定 pgcpg,則必須設定。不適用於選單。預設值為 0(自動),目前僅選擇第一個可用的標題(標題 1)並通知使用者有關含義。

chapter_start int

要開始的章節或 PTT(標題的一部分)編號。不適用於選單。預設值為 1。

chapter_end int

要結束的章節或 PTT(標題的一部分)編號。不適用於選單。預設值為 0,這是一個特殊值,表示在最後可能的章節結束。

angle int

視訊角度編號,指的是基本上是從 VOB 中交錯的備用影格組成的額外視訊串流。不適用於選單。預設值為 1。

region int

用於播放的區域碼。有些光碟可能會使用此設定,以便在不同區域以特定角度預設播放。如果用作輸入,此選項不會影響真實 DVD 光碟機的區域碼。不適用於選單。預設值為 0,"全球"。

menu bool

解多工處理選單素材,而非導覽標題。需要選單的精確座標 (menu_lumenu_vtspgcpg)。預設值為 false。

menu_lu int

要解多工處理的選單語言。在 DVD 中,選單依語言分組。預設值為 1,第一個語言單元。

menu_vts int

選單所在的 VTS,如果是 VMG 選單 (根層級選單) 則為 0。預設值為 1,第一個 VTS 的選單。

pgc int

要開始播放的進入點 PGC,與 pg 結合使用。替代設定 title 的方法。目前不支援章節標記。必須為選單明確設定。預設值為 0,自動從 title 的值解析。

pg int

要開始播放的進入點 PG,與 pgc 結合使用。替代設定 title 的方法。目前不支援章節標記。預設值為 1,PGC 的第一個 PG。

preindex bool

啟用此選項可獲得精確的章節 (PTT) 標記和持續時間測量,這需要進行慢速的第二次掃描才能從 NAV 封包中索引章節標記時間戳記。對於真實光碟機而言,這是不理想的額外工作。建議搭配儲存在硬碟上的 DVD 結構備份使用此選項,速度會更快。與 pgcpg 不相容。預設值為 0,false。

trim bool

跳過開頭的填充單元格 (即短於 1 秒的單元格)。許多光碟在 PGC 的開頭都有填充片段,通常包含用於控制真實 DVD 播放機緩衝速度的垃圾資料,沒有其他素材資料值。不適用於選單。預設值為 1,true。

20.7.3 範例

  • 從給定的 DVD 結構開啟標題 3
    ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
    
  • 從給定的 DVD 結構,從標題 1 開啟章節 3-6
    ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
    
  • 從給定的 DVD 結構,僅開啟標題 1 的章節 5
    ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
    
  • 從 VTS 1、PGC 1 解多工處理語言 1 的選單,從 PG 1 開始
    ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
    

20.8 ea

Electronic Arts Multimedia 格式解多工器。

此格式用於各種 Electronic Arts 遊戲。

20.8.1 選項

merge_alpha bool

通常 VP6 alpha 通道 (如果存在) 會作為次要視訊串流傳回,透過設定此選項,您可以讓解多工器傳回單一視訊串流,其中包含 alpha 通道以及一般視訊。

20.9 imf

Interoperable Master Format 解多工器。

此解多工器呈現 IMF Composition 中找到的音訊和視訊串流,如 SMPTE ST 2067-2 中所指定。

ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...

如果未指定 -assetmaps,解多工器會在與 CPL 相同的目錄中尋找名為 ASSETMAP.xml 的檔案。

20.10 flv, live_flv, kux

Adobe Flash Video Format 解多工器。

此解多工器用於解多工處理 FLV 檔案和 RTMP 網路串流。如果是即時網路串流,如果您強制格式,可以使用 live_flv 選項而不是 flv,以在時間戳記不連續的情況下繼續運作。KUX 是 Youku 平台上使用的 flv 變體。

ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
-flv_metadata bool

根據 onMetaData 陣列內容分配串流。

-flv_ignore_prevtag bool

忽略先前標籤值的大小。

-flv_full_metadata bool

輸出 onMetadata 的所有上下文。

20.11 gif

Animated GIF 解多工器。

它接受以下選項

min_delay

設定影格之間最小有效延遲,以百分之一秒為單位。範圍為 0 到 6000。預設值為 2。

max_gif_delay

設定影格之間最大有效延遲,以百分之一秒為單位。範圍為 0 到 65535。預設值為 65535 (將近 11 分鐘),規格允許的最大值。

default_delay

設定影格之間預設延遲,以百分之一秒為單位。範圍為 0 到 6000。預設值為 10。

ignore_loop

GIF 檔案可以包含循環播放特定次數 (或無限次) 的資訊。如果 ignore_loop 設定為 1,則會忽略輸入中的循環設定,並且不會發生循環播放。如果設定為 0,則會發生循環播放,並根據 GIF 循環播放指定的次數。預設值為 1。

例如,使用 overlay 濾鏡,將無限循環的 GIF 放在另一個視訊之上

ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv

請注意,在上面的範例中,overlay 濾鏡的最短選項用於在最短輸入檔案的長度處結束輸出視訊,在本例中為 input.mp4,因為本範例中的 GIF 無限循環。

20.12 hls

HLS 解多工器

Apple HTTP Live Streaming 解多工器。

此解多工器呈現來自所有變體串流的所有 AVStream。id 欄位設定為位元率變體索引編號。透過在 AVStream 上設定捨棄標誌 (在 ffplay 中按下 'a' 或 'v'),呼叫者可以決定實際接收哪些變體串流。串流所屬變體的總位元率可在名為 "variant_bitrate" 的中繼資料金鑰中找到。

它接受以下選項

live_start_index

即時串流開始的片段索引 (負值表示從結尾算起)。

prefer_x_start

如果播放清單中有 #EXT-X-START,則優先使用它,而不是 live_start_index。

allowed_extensions

允許 hls 存取的檔案副檔名,以 ',' 分隔的清單。

max_reload

嘗試重新載入不完整清單的最大次數。預設值為 1000。

m3u8_hold_counters

當 m3u8 在沒有新片段的情況下重新整理時,載入 m3u8 的最大次數。預設值為 1000。

http_persistent

使用持久 HTTP 連線。僅適用於 HTTP 串流。預設為啟用。

http_multiple

使用多個 HTTP 連線下載 HTTP 片段。對於 HTTP/1.1 伺服器,預設為啟用。

http_seekable

使用 HTTP 部分請求下載 HTTP 片段。0 = 停用,1 = 啟用,-1 = 自動,預設值為自動。

seg_format_options

使用以 : 分隔的 key=value 配對清單,為媒體片段的解多工器設定選項。

seg_max_retry

錯誤時重新載入片段的最大次數,當不希望在網路錯誤時跳過片段時很有用。預設值為 0。

20.13 image2

影像檔案解多工器。

此解多工器從模式指定的影像檔案清單中讀取。模式的語法和含義由選項 pattern_type 指定。

模式可能包含後綴,用於自動判斷檔案中包含的影像格式。

對於序列中的所有檔案,每個影像的大小、像素格式和格式必須相同。

此解多工器接受以下選項

framerate

設定視訊串流的影格率。預設值為 25。

loop

如果設定為 1,則循環播放輸入。預設值為 0。

pattern_type

選取用於解釋所提供檔案名稱的模式類型。

pattern_type 接受下列其中一個值。

none

停用模式比對,因此視訊將僅包含指定的影像。如果您不想從多個影像建立序列,並且您的檔案名稱可能包含特殊的模式字元,則應使用此選項。

sequence

選取序列模式類型,用於指定由循序數字索引的檔案序列。

序列模式可以包含字串 "%d" 或 "%0Nd",它指定在模式比對的每個檔案名稱中,代表循序數字的字元位置。如果使用 "%0Nd" 形式,則每個檔案名稱中代表數字的字串會以 0 填充,而 N 是代表數字的 0 填充數字總位數。可以使用字串 "%%" 在模式中指定文字字元 '%'。

如果序列模式包含 "%d" 或 "%0Nd",則模式指定的檔案清單中的第一個檔案名稱必須包含一個數字,該數字包含在 start_numberstart_number+start_number_range-1 之間 (包含端點),並且所有後續數字都必須是循序的。

例如,模式 "img-%03d.bmp" 將比對 img-001.bmpimg-002.bmp、...、img-010.bmp 等形式的檔案名稱序列;模式 "i%%m%%g-%d.jpg" 將比對 i%m%g-1.jpgi%m%g-2.jpg、...、i%m%g-10.jpg 等形式的檔案名稱序列。

請注意,模式不一定必須包含 "%d" 或 "%0Nd",例如,若要轉換單一影像檔案 img.jpeg,您可以使用命令

ffmpeg -i img.jpeg img.png
glob

選取 glob 萬用字元模式類型。

模式的解譯方式類似於 glob() 模式。僅當 libavformat 在編譯時支援 globbing 時,才能選取此選項。

glob_sequence (已棄用,即將移除)

選取混合的 glob 萬用字元/序列模式。

如果您的 libavformat 版本在編譯時支援 globbing,並且提供的模式在 %*?[]{} 中至少包含一個 glob 元字元,且該字元的前面有一個未逸出的 "%",則模式的解譯方式類似於 glob() 模式,否則其解譯方式類似於序列模式。

所有 glob 特殊字元 %*?[]{} 都必須以 "%" 作為前綴。若要逸出文字 "%",您應使用 "%%"。

例如,模式 foo-%*.jpeg 將比對所有以 "foo-" 為前綴並以 ".jpeg" 結尾的檔案名稱,而 foo-%?%?%?.jpeg 將比對所有以 "foo-" 為前綴,後跟三個字元序列,並以 ".jpeg" 結尾的檔案名稱。

此模式類型已棄用,建議使用 globsequence

預設值為 glob_sequence

pixel_format

設定要讀取的影像的像素格式。如果未指定,則會從序列中的第一個影像檔案猜測像素格式。

start_number

設定要開始讀取的影像檔案模式比對的檔案索引。預設值為 0。

start_number_range

設定在尋找序列中的第一個影像檔案時,要檢查的索引間隔範圍,從 start_number 開始。預設值為 5。

ts_from_file

如果設定為 1,則會將影格時間戳記設定為影像檔案的修改時間。請注意,不保證時間戳記的單調性:影像的順序與不使用此選項時相同。預設值為 0。如果設定為 2,則會以奈秒精度將影格時間戳記設定為影像檔案的修改時間。

video_size

設定要讀取的影像的視訊大小。如果未指定,則會從序列中的第一個影像檔案猜測視訊大小。

export_path_metadata

如果設定為 1,則會在輸入中找到的中繼資料中新增兩個額外欄位,使其也可供其他濾鏡使用 (請參閱 drawtext 濾鏡範例)。預設值為 0。額外欄位說明如下

lavf.image2dec.source_path

對應於正在讀取的輸入檔案的完整路徑。

lavf.image2dec.source_basename

對應於正在讀取的檔案的名稱。

20.13.1 範例

  • 使用 ffmpeg 從檔案序列 img-001.jpegimg-002.jpeg、... 建立視訊,假設輸入影格率為每秒 10 個影格
    ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
    
  • 與上述相同,但從序列中索引為 100 的檔案開始讀取
    ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
    
  • 讀取符合 "*.png" glob 模式的影像,即所有以 ".png" 後綴結尾的檔案
    ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
    

20.14 libgme

Game Music Emu 程式庫是一系列視訊遊戲音樂檔案模擬器。

請參閱 https://bitbucket.org/mpyne/game-music-emu/overview 以取得更多資訊。

它接受以下選項

track_index

設定要解多工處理的音軌索引。解多工器只能匯出一個音軌。音軌索引從 0 開始。預設為選取第一個音軌。音軌數量會以 tracks 中繼資料條目匯出。

sample_rate

設定匯出音軌的取樣率。範圍為 1000 到 999999。預設值為 44100。

max_size (位元組)

解多工器將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這反過來會作為可讀取檔案大小的上限。預設值為 50 MiB。

20.15 libmodplug

ModPlug based module 解多工器

請參閱 https://github.com/Konstanty/libmodplug

它將匯出一個 2 聲道 16 位元 44.1 kHz 音訊串流。選擇性地,可以匯出帶或不帶列印中繼資料的 pal8 16 色視訊串流。

它接受以下選項

noise_reduction

套用簡單的低通濾波器。可以是 1 (開啟) 或 0 (關閉)。預設值為 0。

reverb_depth

設定殘響量。範圍 0-100。預設值為 0。

reverb_delay

設定延遲 (毫秒),限制在 40-250 毫秒。預設值為 0。

bass_amount

套用低音擴展,又稱 XBass 或 megabass。範圍為 0 (靜音) 到 100 (大聲)。預設值為 0。

bass_range

設定截止頻率,即低音頻率的上限。範圍為 10-100 Hz。預設值為 0。

surround_depth

套用 Dolby Pro-Logic 環繞效果。範圍為 0 (靜音) 到 100 (重度)。預設值為 0。

surround_delay

設定環繞延遲 (毫秒),限制在 5-40 毫秒。預設值為 0。

max_size

解多工器將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這反過來會作為可讀取檔案大小的上限。範圍為 0 到 100 MiB。0 移除緩衝區大小限制 (不建議)。預設值為 5 MiB。

video_stream_expr

字串,使用 eval API 評估以將顏色指派給產生的視訊串流。可以使用的變數為 xywhtspeedtempoorderpatternrow

video_stream

產生視訊串流。可以是 1 (開啟) 或 0 (關閉)。預設值為 0。

video_stream_w

以 '字元' 設定視訊影格寬度,其中一個字元表示 8 像素。範圍為 20-512。預設值為 30。

video_stream_h

以 '字元' 設定視訊影格高度,其中一個字元表示 8 像素。範圍為 20-512。預設值為 30。

video_stream_ptxt

在視訊串流上列印中繼資料。包含 speedtempoorderpatternrowts (以毫秒為單位的時間)。可以是 1 (開啟) 或 0 (關閉)。預設值為 1。

20.16 libopenmpt

libopenmpt based module 解多工器

請參閱 https://lib.openmpt.org/libopenmpt/ 以取得更多資訊。

有些檔案有多個子樂曲 (音軌),可以使用 subsong 選項設定。

它接受以下選項

subsong

設定子樂曲索引。可以是 'all'、'auto' 或子樂曲的索引。子樂曲索引從 0 開始。預設值為 'auto'。

預設值是讓 libopenmpt 選擇。

layout

設定聲道配置。有效值為 1、2 和 4 聲道配置。預設值為 STEREO。

sample_rate

設定 libopenmpt 輸出的取樣率。範圍從 1000 到 INT_MAX。預設值為 48000。

20.17 mov/mp4/3gp

Quicktime File Format & ISO/IEC Base Media File Format (ISO/IEC 14496-12 或 MPEG-4 Part 12, ISO/IEC 15444-12 或 JPEG 2000 Part 12) 的解多工器。

已註冊的副檔名:mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v

20.17.1 選項

此解多工器接受以下選項

enable_drefs

啟用載入外部音軌,預設為停用。在某些使用案例中,啟用此功能理論上可能會洩漏資訊。

use_absolute_path

允許透過絕對路徑載入外部音軌,預設為停用。啟用此功能會構成安全風險。僅應在已知來源無惡意的情況下啟用。

seek_streams_individually

搜尋時,個別識別每個串流中最接近的點,並從識別點解多工處理該串流中的封包。與從頭開始線性解多工處理相比,這可能會導致不同的封包序列。預設值為 true。

ignore_editlist

忽略任何編輯清單原子。預設情況下,解多工器會修改串流索引以反映編輯清單描述的時間軸。預設值為 false。

advanced_editlist

修改串流索引以反映編輯列表描述的時間軸。ignore_editlist 必須設定為 false 才能使此選項生效。如果 ignore_editlist 和此選項都設定為 false,則只會修改串流索引的開頭,以反映編輯列表描述的初始停留時間或起始時間戳記。預設值為 true。

ignore_chapters

不要解析章節。這包括 GoPro “HiLight” 標籤/時刻。請注意,章節僅在輸入可搜尋時才會解析。預設值為 false。

use_mfra_for

對於可搜尋的片段化輸入,如果存在媒體片段隨機存取盒,則從中設定片段的起始時間戳記。

以下選項可用

auto

自動偵測是否將 mfra 時間戳記設定為 PTS 或 DTS (預設)

dts

將 mfra 時間戳記設定為 DTS

pts

將 mfra 時間戳記設定為 PTS

0

不要使用 mfra 盒來設定時間戳記

use_tfdt

對於片段化輸入,將片段的起始時間戳記設定為來自 tfdt 盒的 baseMediaDecodeTime。預設為啟用,這將優先使用 tfdt 盒來設定 DTS。停用此選項以使用來自 sidx 盒的 earliest_presentation_time。無論哪種情況,如果 mfra 盒可用且 use_mfra_for 設定為 pts 或 dts,則將使用來自 mfra 盒的時間戳記。

export_all

udta 盒中無法辨識的盒匯出為 metadata 項目。盒類型的頭四個字元會設定為鍵。預設值為 false。

export_xmp

XMP_ 盒和 uuid 盒的完整內容匯出為鍵為 xmp 的字串。請注意,如果設定了 export_all 但未設定此選項,XMP_ 盒的內容仍然會匯出,但鍵為 XMP_。預設值為 false。

activation_bytes

解密 Audible AAX 和 AAX+ 檔案所需的 4 位元組金鑰。請參閱下方的 Audible AAX 小節。

audible_fixed_key

用於處理 Audible AAX/AAX+ 檔案的固定金鑰。它已預先設定,因此不應需要指定。

decryption_key

16 位元組金鑰,以十六進位表示,用於解密使用 ISO 通用加密 (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。

max_stts_delta

在 trak 的 stts 盒中寫入非常大的樣本增量可能偶爾是預期的,但通常是錯誤寫入,或在視為帶符號 32 位元整數時,用於儲存 dts 校正的負值。此選項允許使用者設定上限,超過此上限後,增量將鉗制為 1。如果轉換為 int32 時大於限制的值為負數,則用於調整後續 dts。

單位為軌道時間刻度。範圍為 0 到 UINT_MAX。預設值為 UINT_MAX - 48000*10,這允許 48 kHz 音訊串流最多 10 秒的 dts 校正,同時容納 99.9% 的 uint32 範圍。

interleaved_read

在解多工器層級交錯來自多個軌道的封包。對於交錯不良的檔案,這可以防止不同軌道中封包之間存在大間隙而導致的播放問題,因為 MOV/MP4 沒有封包放置要求。但是,由於在軌道之間搜尋,這可能會導致在非常交錯不良的檔案上過度搜尋,因此停用它可能會防止 I/O 問題,但會犧牲播放效果。

20.17.2 Audible AAX

Audible AAX 檔案是加密的 M4B 檔案,它們可以透過指定 4 位元組的啟動密碼來解密。

ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4

20.18 mpegts

MPEG-2 傳輸串流解多工器。

此解多工器接受以下選項

resync_size

設定尋找新同步的大小的限制。預設值為 65536。

skip_unknown_pmt

跳過 PAT 中未定義的程式的 PMT。預設值為 0。

fix_teletext_pts

使用從第一個程式的 PCR 計算的時間戳記覆寫圖文電視封包 PTS 和 DTS 值,該圖文電視串流是該程式的一部分且未被捨棄。預設值為 1,如果您希望圖文電視封包 PTS 和 DTS 值保持不變,請將此選項設定為 0。

ts_packetsize

輸出選項,攜帶原始封包大小(以位元組為單位)。顯示偵測到的原始封包大小,使用者無法設定。

scan_all_pmts

掃描並合併所有 PMT。該值是一個整數,值從 -1 到 1(-1 表示自動設定,1 表示啟用,0 表示停用)。預設值為 -1。

merge_pmt_versions

當 PMT 的版本更新且基本串流移動到不同的 PID 時,重複使用現有的串流。預設值為 0。

max_packet_size

設定解多工器發出的封包的最大大小,以位元組為單位。超出此大小的酬載將分散在多個封包中。範圍為 1 到 INT_MAX/2。預設值為 204800 位元組。

20.19 mpjpeg

封裝在多部分 MIME 解多工器中的 MJPEG。

此解多工器允許讀取 MJPEG,其中每個影格都表示為 multipart/x-mixed-replace 串流的一部分。

strict_mime_boundary

預設實作對多部分 MIME 邊界偵測應用了較寬鬆的標準,以防止與許多未產生正確 MIME MJPEG 串流的現有端點發生回歸。透過將此選項設定為 1 來開啟此選項將導致對邊界值進行更嚴格的檢查。

20.20 rawvideo

原始視訊解多工器。

此解多工器允許讀取原始視訊資料。由於沒有標頭指定假定的視訊參數,因此使用者必須指定它們才能正確解碼資料。

此解多工器接受以下選項

framerate

設定輸入視訊影格率。預設值為 25。

pixel_format

設定輸入視訊像素格式。預設值為 yuv420p

video_size

設定輸入視訊大小。此值必須明確指定。

例如,若要使用 ffplay 讀取像素格式為 rgb24、視訊大小為 320x240 且影格率為每秒 10 個影像的 rawvideo 檔案 input.raw,請使用以下命令

ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw

20.21 rcwt

RCWT(Raw Captions With Time,帶時間戳記的原始字幕)是 ccextractor 的原生格式,ccextractor 是一個常用的開放原始碼工具,用於處理 608/708 隱藏式字幕 (CC) 來源。有關格式的更多資訊,請參閱 (ffmpeg-formats)rcwtenc

此解多工器實作截至 2024 年 3 月的規格,該規格自 2014 年 4 月以來一直穩定且未更改。

20.21.1 範例

  • 使用內建解碼器將 CC 渲染為 ASS
    ffmpeg -i CC.rcwt.bin CC.ass
    

    請注意,如果您的輸出看起來是空的,您可能必須手動設定解碼器的 data_field 選項以選取所需的 CC 子串流。

  • 將 RCWT 備份轉換為 Scenarist (SCC) 格式
    ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
    

    請注意,SCC 格式不支援可以儲存在 RCWT 中的所有可能的 CC 擴充功能(例如 EIA-708)。

20.22 sbg

SBaGen 腳本解多工器。

此解多工器讀取 SBaGen http://uazu.net/sbagen/ 使用的腳本語言,以產生雙耳節拍會話。SBG 腳本看起來像這樣

-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW      == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00    off

SBG 腳本可以混合絕對和相對時間戳記。如果腳本僅使用絕對時間戳記(包括腳本開始時間)或僅使用相對時間戳記,則其佈局是固定的,並且轉換很簡單。另一方面,如果腳本混合使用兩種時間戳記,則相對時間戳記的 NOW 參考將取自讀取腳本時的目前時間,並且腳本佈局將根據該參考凍結。這表示如果直接播放腳本,則實際時間將與絕對時間戳記匹配,直到聲音控制器的時鐘準確度,但如果使用者以某種方式暫停播放或搜尋,則所有時間都將相應地移動。

20.23 tedcaptions

用於 TED Talks 的 JSON 字幕。

TED 不提供字幕連結,但可以從頁面猜測出來。FFmpeg 原始碼樹中的檔案 tools/bookmarklets.html 包含一個書籤小工具來公開它們。

此解多工器接受以下選項

start_time

設定 TED 演講的開始時間,以毫秒為單位。預設值為 15000 (15 秒)。它用於將字幕與可下載的視訊同步,因為它們包含 15 秒的簡介。

範例:將字幕轉換為大多數播放器都能理解的格式

ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt

20.24 vapoursynth

Vapoursynth 包裝器。

由於安全考量,Vapoursynth 腳本將不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,請在輸入 -i yourscript.vpy 之前新增 -f vapoursynth

此解多工器接受以下選項

max_script_size

解多工器將整個腳本緩衝到記憶體中。調整此值以設定最大緩衝區大小,這反過來又充當可以讀取的腳本大小的上限。預設值為 1 MiB。

20.25 w64

Sony Wave64 音訊解多工器。

此解多工器接受以下選項

max_size

請參閱 wav 解多工器的相同選項。

20.26 wav

RIFF Wave 音訊解多工器。

此解多工器接受以下選項

max_size

指定解多工封包的最大封包大小(以位元組為單位)。預設情況下,此值設定為 0,這表示將根據輸入格式選擇一個合理的數值。

21 多工器

多工器是 FFmpeg 中配置的元素,允許將多媒體串流寫入特定類型的檔案。

當您配置 FFmpeg 建置時,預設會啟用所有支援的多工器。您可以使用配置選項 --list-muxers 列出所有可用的多工器。

您可以使用配置選項 --disable-muxers 停用所有多工器,並使用選項 --enable-muxer=MUXER / --disable-muxer=MUXER 選擇性地啟用/停用單個多工器。

ff* 工具的選項 -muxers 將顯示已啟用的多工器清單。使用 -formats 查看已啟用的解多工器和多工器的組合清單。

以下是一些目前可用的多工器的描述。

21.1 Raw 多工器

本節介紹原始多工器。它們接受與指定編解碼器匹配的單個串流。它們不儲存時間戳記或 metadata。除非另有說明,否則已辨識的副檔名與多工器名稱相同。

它包含以下多工器。媒體類型和最終用於從輸出副檔名自動選擇多工器的副檔名也顯示出來。

ac3 audio

杜比數位,也稱為 AC-3。

adx audio

CRI Middleware ADX 音訊。

當輸出可搜尋且計數可以儲存在 32 位元中時,此多工器將在第一個封包的開頭附近寫出總樣本計數。

aptx audio

aptX(藍牙音訊處理技術)

aptx_hd audio (aptxdh)

aptX HD(藍牙音訊處理技術)音訊

avs2 video (avs, avs2)

AVS2-P2(音訊視訊標準 - 第二代 - 第 2 部分)/ IEEE 1857.4 視訊

avs3 video (avs3)

AVS3-P2(音訊視訊標準 - 第三代 - 第 2 部分)/ IEEE 1857.10 視訊

cavsvideo video (cavs)

中國 AVS(音訊視訊標準 - 第一代)

codec2raw audio

Codec 2 音訊。

未註冊副檔名,因此必須提供格式名稱,例如使用 ffmpeg CLI 工具 -f codec2raw

data any

通用資料多工器。

此多工器接受具有任何類型編解碼器的單個串流。必須使用 ffmpeg CLI 工具的 -map 選項來選擇輸入串流。

未註冊副檔名,因此必須提供格式名稱,例如使用 ffmpeg CLI 工具 -f data

dfpwm audio (dfpwm)

原始 DFPWM1a(動態濾波器脈衝寬度調變)音訊多工器。

dirac video (drc, vc2)

BBC Dirac 視訊。

Dirac Pro 編解碼器是子集,並標準化為 SMPTE VC-2。

dnxhd video (dnxhd, dnxhr)

Avid DNxHD 視訊。

它已標準化為 SMPTE VC-3。接受 DNxHR 串流。

dts audio

DTS 同調聲學 (DCA) 音訊

eac3 audio

杜比數位+,也稱為增強型 AC-3

evc video (evc)

MPEG-5 基本視訊編碼 (EVC) / EVC / MPEG-5 第 1 部分 EVC 視訊

g722 audio

ITU-T G.722 音訊

g723_1 audio (tco, rco)

ITU-T G.723.1 音訊

g726 audio

ITU-T G.726 大端序(“左對齊”)音訊。

未註冊副檔名,因此必須提供格式名稱,例如使用 ffmpeg CLI 工具 -f g726

g726le audio

ITU-T G.726 小端序(“右對齊”)音訊。

未註冊副檔名,因此必須提供格式名稱,例如使用 ffmpeg CLI 工具 -f g726le

gsm audio

行動通訊全球系統音訊

h261 video

ITU-T H.261 視訊

h263 video

ITU-T H.263 / H.263-1996、H.263+ / H.263-1998 / H.263 版本 2 視訊

h264 video (h264, 264)

ITU-T H.264 / MPEG-4 Part 10 AVC 視訊。如果位元串流處於長度前綴模式,則應將其轉換為 Annex B 語法。

hevc video (hevc, h265, 265)

ITU-T H.265 / MPEG-H Part 2 HEVC 視訊。如果位元串流處於長度前綴模式,則應將其轉換為 Annex B 語法。

m4v video

MPEG-4 Part 2 視訊

mjpeg video (mjpg, mjpeg)

Motion JPEG 視訊

mlp audio

Meridian 無損封裝,也稱為封裝 PCM

mp2 audio (mp2, m2a, mpa)

MPEG-1 Audio Layer II 音訊

mpeg1video video (mpg, mpeg, m1v)

MPEG-1 Part 2 視訊。

mpeg2video video (m2v)

ITU-T H.262 / MPEG-2 Part 2 視訊

obu video

AV1 低開銷開放位元串流單元多工器。

時間分隔符 OBU 將插入串流的所有時間單元中。

rawvideo video (yuv, rgb)

原始未壓縮視訊。

sbc audio (sbc, msbc)

藍牙 SIG 低複雜度子頻帶編解碼器音訊

truehd audio (thd)

杜比 TrueHD 音訊

vc1 video

SMPTE 421M / VC-1 視訊

21.1.1 範例

  • 使用 ffmpeg 以 ‘rawvideo’ 多工器儲存原始視訊影格
    ffmpeg -f lavfi -i testsrc -t 10 -s hd1080p testsrc.yuv
    

    由於 rawvideo 多工器不儲存與大小和格式相關的資訊,因此在解多工處理檔案時必須提供此資訊

    ffplay -video_size 1920x1080 -pixel_format rgb24 -f rawvideo testsrc.rgb
    

21.2 Raw PCM 多工器

本節介紹原始 PCM(脈衝碼調變)音訊多工器。

它們接受與指定編解碼器匹配的單個串流。它們不儲存時間戳記或 metadata。已辨識的副檔名與多工器名稱相同。

它包含以下多工器。括號中也顯示了用於從輸出副檔名自動選擇多工器的可選附加副檔名。

alaw (al)

PCM A-law

f32be

PCM 32 位元浮點大端序

f32le

PCM 32 位元浮點小端序

f64be

PCM 64 位元浮點大端序

f64le

PCM 64 位元浮點小端序

mulaw (ul)

PCM mu-law

s16be

PCM 帶符號 16 位元大端序

s16le

PCM 帶符號 16 位元小端序

s24be

PCM 帶符號 24 位元大端序

s24le

PCM 帶符號 24 位元小端序

s32be

PCM 帶符號 32 位元大端序

s32le

PCM 帶符號 32 位元小端序

s8 (sb)

PCM 帶符號 8 位元

u16be

PCM 無符號 16 位元大端序

u16le

PCM 無符號 16 位元小端序

u24be

PCM 無符號 24 位元大端序

u24le

PCM 無符號 24 位元小端序

u32be

PCM 無符號 32 位元大端序

u32le

PCM 無符號 32 位元小端序

u8 (ub)

PCM 無符號 8 位元

vidc

PCM Archimedes VIDC

21.3 MPEG-1/MPEG-2 程式串流多工器

本節介紹屬於 MPEG-1 和 MPEG-2 系統系列的格式。

MPEG-1 系統格式(也稱為 ISO/IEEC 11172-1 或 MPEG-1 程式串流)已被採用為 VCD(視訊光碟)中儲存的媒體軌道的格式。

MPEG-2 系統標準(也稱為 ISO/IEEC 13818-1)涵蓋兩種容器格式,一種稱為傳輸流,另一種稱為節目流;此處僅涵蓋後者。

MPEG-2 節目流格式(也稱為 VOB,因為其對應的檔案副檔名)是 MPEG-1 節目流的擴展:除了支援用於音訊和視訊流的不同編解碼器外,它還儲存字幕和導航元數據。MPEG-2 節目流已被採用於 SVCD 和 DVD 儲存裝置中儲存媒體流。

本節包含以下多工器。

mpeg (mpg,mpeg)

MPEG-1 系統 / MPEG-1 節目流多工器。

vcd

MPEG-1 系統 / MPEG-1 節目流 (VCD) 多工器。

此多工器可用於產生 VCD(視訊光碟)儲存裝置接受格式的軌道。

它與 ‘mpeg’ 多工器相同,但有一些差異。

vob

MPEG-2 節目流 (VOB) 多工器。

dvd

MPEG-2 節目流 (DVD VOB) 多工器。

此多工器可用於產生 DVD(數位多功能光碟)儲存裝置接受格式的軌道。

它與 ‘vob’ 多工器相同,但有一些差異。

svcd (vob)

MPEG-2 節目流 (SVCD VOB) 多工器。

此多工器可用於產生 SVCD(超級視訊光碟)儲存裝置接受格式的軌道。

它與 ‘vob’ 多工器相同,但有一些差異。

21.3.1 選項

muxrate rate

設定使用者定義的多工速率,以位元/秒為單位表示。如果未指定,則採用自動計算的多工速率。預設值為 0

preload delay

設定初始解多工-解碼延遲,單位為微秒。預設值為 500000

21.4 MOV/MPEG-4/ISOMBFF 多工器

本節涵蓋屬於 QuickTime / MOV 系列的格式,包括 MPEG-4 Part 14 格式和 ISO 基礎媒體檔案格式 (ISOBMFF)。這些格式共享一個基於 ISO 基礎媒體檔案格式 (ISOBMFF) 的通用結構。

MOV 格式最初是為 Apple QuickTime 開發的。它後來被用作 MPEG-4 Part 1(後來的 Part 14)格式的基礎,也稱為 ISO/IEC 14496-1。該格式隨後被通用化為 ISOBMFF,也稱為 MPEG-4 Part 12 格式、ISO/IEC 14496-12 或 ISO/IEC 15444-12。

它包含以下多工器。

3gp

第三代合作夥伴計畫 (3GPP) 格式,適用於 3G UMTS 多媒體服務

3g2

第三代合作夥伴計畫 2 (3GP2 或 3GPP2) 格式,適用於 3G CDMA2000 多媒體服務,類似於 ‘3gp’,但具有擴展和限制

f4v

Adobe Flash 視訊格式

ipod

MPEG-4 音訊檔案格式,如同 MOV/MP4,但僅限於包含音訊流,通常與 Apple iPod 裝置一起播放

ismv

Microsoft IIS (網際網路資訊服務) Smooth Streaming 音訊/視訊 (ISMV 或 ISMA) 格式。這基於 MPEG-4 Part 14 格式,有一些不相容的變體,用於為 Microsoft IIS 伺服器串流媒體檔案。

mov

QuickTime 播放器格式,由 .mov 副檔名識別

mp4

MP4 或 MPEG-4 Part 14 格式

psp

PlayStation Portable MP4/MPEG-4 Part 14 格式變體。這基於 MPEG-4 Part 14 格式,有一些不相容的變體,用於在 PlayStation 裝置上播放檔案。

21.4.1 分段

mov’、‘mp4’ 和 ‘ismv’ 多工器支援分段。通常,MOV/MP4 檔案將關於所有封包的所有元數據儲存在一個位置。

此資料通常寫在檔案末尾,但可以移動到開頭以獲得更好的播放效果,方法是在 -movflags 中新增 +faststart,或使用 qt-faststart 工具)。

分段檔案由許多片段組成,其中封包和關於這些封包的元數據一起儲存。寫入分段檔案的優點是,即使寫入中斷,檔案也是可解碼的(而如果未正確完成,則普通 MOV/MP4 是不可解碼的),並且在寫入非常長的檔案時需要較少的記憶體(因為寫入普通 MOV/MP4 檔案會將關於每個封包的資訊儲存在記憶體中,直到檔案關閉)。缺點是與其他應用程式的相容性較差。

透過設定定義如何將檔案切割成片段的其中一個選項來啟用分段

frag_duration
frag_size
min_frag_duration
movflags +frag_keyframe
movflags +frag_custom

如果指定了多個條件,則在滿足其中一個指定條件時切割片段。此規則的例外是 min_frag_duration 選項,必須先滿足此選項,其他任何條件才能適用。

21.4.2 選項

brand brand_string

覆寫主要品牌。

empty_hdlr_name bool

啟用以跳過在 hdlr box 內寫入名稱。預設值為 false

encryption_key key

以十六進位格式設定媒體加密金鑰

encryption_kid kid

以十六進位格式設定媒體加密金鑰識別碼

encryption_scheme scheme

設定加密方案,允許的值為 ‘none’ 和 ‘cenc-aes-ctr

frag_duration duration

建立持續時間為 duration 微秒的片段。

frag_interleave number

在片段內交錯取樣(最大連續取樣數,數值越低,交錯越緊密,但開銷越大。預設值為 0

frag_size size

建立最多包含 size 位元組酬載資料的片段

iods_audio_profile profile

指定音訊設定檔原子 (atom) 的 iods 編號(從 -1 到 255),預設值為 -1

iods_video_profile profile

指定視訊設定檔原子 (atom) 的 iods 編號(從 -1 到 255),預設值為 -1

ism_lookahead num_entries

指定 ISM 檔案的預讀條目數(從 0 到 255),預設值為 0

min_frag_duration duration

不要建立短於 duration 微秒的片段

moov_size bytes

在檔案開頭保留 moov 原子 (atom) 的空間,而不是將 moov 原子 (atom) 放置在末尾。如果保留的空間不足,多工將會失敗。

mov_gamma gamma

指定 gama 原子 (atom) 的伽瑪值(十進制數值,從 0 到 10),預設值為 0.0,必須與 + movflags 一起設定

movflags flags

設定各種多工開關。可以使用以下標誌

cmaf

寫入 CMAF(通用媒體應用格式)相容的分段 MP4 輸出

dash

寫入 DASH(透過 HTTP 的動態自適應串流)相容的分段 MP4 輸出

default_base_moof

與 ‘omit_tfhd_offset’ 標誌類似,此標誌避免在 tfhd 原子 (atom) 中寫入絕對 base_data_offset 欄位,而是使用新的 default-base-is-moof 標誌來實現。此標誌是 14496-12:2012 的新增功能。這可能會使片段在某些情況下更容易解析(避免根據先前軌道片段的隱含結尾來計算軌道片段位置)。

delay_moov

延遲寫入初始 moov,直到第一個片段被切割,或直到第一個片段刷新

disable_chpl

停用 Nero 章節標記(chpl 原子 (atom))。通常,Nero 章節和 QuickTime 章節軌道都會寫入檔案。設定此選項後,只會寫入 QuickTime 章節軌道。當使用某些標記程式(如 mp3Tag 2.61a 和 iTunes 11.3,很可能其他版本也受到影響)重新處理檔案時,Nero 章節可能會導致失敗。

faststart

執行第二次傳輸,將索引(moov 原子 (atom))移動到檔案開頭。此操作可能需要一段時間,並且在各種情況下(例如分段輸出)將無法運作,因此預設情況下未啟用。

frag_custom

允許呼叫者透過呼叫 av_write_frame(ctx, NULL) 來手動選擇何時切割片段,以寫入到目前為止已寫入的封包。(這僅適用於整合 libavformat 的其他應用程式,不適用於 ffmpeg。)

frag_discont

表示下一個片段與之前的片段不連續

frag_every_frame

在每個影格處分段

frag_keyframe

在每個視訊關鍵影格處開始一個新片段

global_sidx

在檔案開頭寫入全域 sidx 索引

isml

建立即時 Smooth Streaming 饋送(用於推送到發佈點)

negative_cts_offsets

啟用 CTTS box 的版本 1,其中 CTS 偏移量可以是負數。這使得初始取樣可以具有零 DTS/CTS,並減少了在某些情況下(例如具有 B 影格的視訊軌道)對編輯列表的需求。此外,也更容易符合 DASH-IF 互操作性指南。

當寫入 ‘ismv’ (Smooth Streaming) 檔案時,此選項會隱含地設定。

omit_tfhd_offset

不要在 tfhd 原子 (atom) 中寫入任何絕對 base_data_offset。這避免了將片段綁定到檔案/串流中的絕對位元組位置。

prefer_icc

如果寫入 colr 原子 (atom),則優先使用串流封包側資料中存在的 ICC 設定檔。

rtphint

將 RTP 提示軌道新增到輸出檔案

separate_moof

為每個軌道寫入單獨的 moof(電影片段)原子 (atom)。通常,所有軌道的封包都寫入一個 moof 原子 (atom)(效率稍高),但設定此選項後,多工器會為每個軌道寫入一個 moof/mdat 對,從而更容易分離軌道。

skip_sidx

跳過寫入 sidx 原子 (atom)。當 sidx 原子 (atom) 造成的位元率開銷很高時,此選項可用於 sidx 原子 (atom) 不是強制性的情況。當啟用 ‘global_sidx’ 標誌時,此選項會被忽略。

skip_trailer

跳過為分段檔案寫入 mfra/tfra/mfro trailer

use_metadata_tags

使用 mdta 原子 (atom) 作為元數據

write_colr

即使未指定顏色資訊,也寫入 colr 原子 (atom)。此標誌是實驗性的,可能會重新命名或更改,請勿從腳本中使用。

write_gama

寫入已棄用的 gama 原子 (atom)

hybrid_fragmented

為了可恢復性 - 將輸出檔案寫成分段檔案。這允許在寫入時讀取中間檔案(特別是,如果寫入過程不乾淨地中止)。寫入完成後,檔案會轉換為常規的非分段檔案,這更相容並且允許更輕鬆和更快速的搜尋。

如果寫入中止,則可以手動重新多工中間檔案,以取得已寫入未完成檔案內容的常規非分段檔案。

movie_timescale scale

設定寫入電影標頭 box (mvhd) 的時間刻度。範圍是 1 到 INT_MAX。預設值為 1000

rtpflags flags

將 RTP 提示軌道新增到輸出檔案。

可以使用以下標誌

h264_mode0

在 RTP 中對 H.264 使用模式 0

latm

對 AAC 使用 MP4A-LATM 封包化,而不是 MPEG4-GENERIC

rfc2190

對 H.263 使用 RFC 2190 封包化,而不是 RFC 4629

send_bye

完成時傳送 RTCP BYE 封包

skip_rtcp

不傳送 RTCP 傳送者報告

skip_iods bool

跳過寫入 iods 原子 (atom)(預設值為 true

use_editlist bool

使用編輯列表(預設值為 auto

use_stream_ids_as_track_ids bool

使用串流 ID 作為軌道 ID(預設值為 false

video_track_timescale scale

設定用於視訊軌道的時間刻度。範圍是 0 到 INT_MAX。如果設定為 0,則時間刻度會根據原生串流時基自動設定。預設值為 0

write_btrt bool

強制或停用在軌道的 stsd box 內寫入位元率 box。該 box 包含軌道的解碼緩衝區大小(以位元組為單位)、最大位元率和平均位元率。如果無法計算這些值中的任何一個,則將跳過該 box。預設值為 -1auto,這將僅在 MP4 模式下寫入該 box。

write_prft option

寫入生產者時間參考 box (PRFT),並為 PRFT box 中的 NTP 欄位指定時間來源。將值設定為 ‘wallclock’ 以將時間來源指定為掛鐘時間,並將 ‘pts’ 設定為將時間來源指定為輸入封包的 PTS 值。

write_tmcd bool

指定 on 以強制寫入時間碼軌道,off 以停用它,以及 auto 以僅針對 mov 和 mp4 輸出寫入時間碼軌道(預設)。

將值設定為 ‘pts’ 僅適用於即時編碼用例,其中 PTS 值設定為來源的掛鐘時間。例如,使用 decklink 擷取來源的編碼用例,其中 video_ptsaudio_pts 設定為 ‘abs_wallclock’。

21.4.3 範例

  • 使用 ‘ismv’ 多工器和 ffmpeg 將 Smooth Streaming 內容即時推送到 IIS 上的發佈點
    ffmpeg -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
    

21.5 a64

A64 Commodore 64 視訊多工器。

此多工器接受單個 a64_multia64_multi5 編解碼器視訊流。

21.6 ac4

原始 AC-4 音訊多工器。

此多工器接受單個 ac4 音訊流。

21.6.1 選項

write_crc bool

啟用後,為每個封包寫入 CRC 檢查和到輸出,預設值為 false

21.7 adts

音訊資料傳輸串流多工器。

它接受單個 AAC 串流。

21.7.1 選項

write_id3v2 bool

啟用以在串流開頭寫入 ID3v2.4 標籤。預設為停用。

write_apetag bool

啟用以在串流末尾寫入 APE 標籤。預設為停用。

write_mpeg2 bool

啟用以在 ADTS 影格標頭中將 MPEG 版本位元設定為 1,表示 MPEG-2。預設值為 0,表示 MPEG-4。

21.8 aea

MD STUDIO 音訊多工器。

此多工器接受具有一個或兩個聲道且取樣率為 44100Hz 的單個 ATRAC1 音訊流。

由於 AEA 支援儲存軌道標題,因此此多工器還會將串流元數據中的標題寫入容器。

21.9 aiff

音訊交換檔案格式多工器。

21.9.1 選項

write_id3v2 bool

設定為 1 時啟用 ID3v2 標籤寫入。預設值為 0(停用)。

id3v2_version bool

選擇要寫入的 ID3v2 版本。目前僅支援版本 3 和 4(又名 ID3v2.3 和 ID3v2.4)。預設版本為 4。

21.10 alp

High Voltage Software 的 Lego Racers 遊戲音訊多工器。

它接受具有不超過 2 個聲道且取樣率不超過 44100 Hz 的單個 ADPCM_IMA_ALP 串流。

副檔名:tunpcm

21.10.1 選項

type type

設定檔案類型。

type 接受以下值

tun

將檔案類型設定為音樂。必須具有 22050 Hz 的取樣率。

pcm

將檔案類型設定為 sfx。

auto

根據輸出檔案副檔名設定檔案類型。.pcm 會產生類型 pcm,否則會設定類型 tun(預設)

21.11 amr

3GPP AMR(自適應多速率)音訊多工器。

它接受包含 AMR NB 串流的單個音訊串流。

21.12 amv

AMV (Actions Media Video) 格式多工器。

21.13 apm

Ubisoft Rayman 2 APM 音訊多工器。

它接受單個 ADPCM IMA APM 音訊串流。

21.14 apng

動畫可攜式網路圖形多工器。

它接受單個 APNG 視訊流。

21.14.1 選項

final_delay delay

強制在每次重複的最後一個影格後延遲一段時間,以秒為單位表示。預設值為 0.0

plays repetitions

指定播放內容的次數,0 會導致無限循環,而 1 則不循環

21.14.2 範例

  • 使用 ffmpeg 產生具有 2 次重複的 APNG 輸出,並在第一次重複後延遲半秒
    ffmpeg -i INPUT -final_delay 0.5 -plays 2 out.apng
    

21.15 argo_asf

Argonaut Games ASF 音訊多工器。

它接受單個 ADPCM 音訊流。

21.15.1 選項

version_major version

覆寫檔案主要版本,指定為整數,預設值為 2

version_minor version

覆寫檔案次要版本,指定為整數,預設值為 1

name name

將檔案名稱嵌入檔案中,若未指定則使用輸出檔案名稱。名稱會截斷為 8 個字元。

21.16 argo_cvg

Argonaut Games CVG 音訊多工器。

它接受單聲道 ADPCM 22050Hz 音訊串流。

loopreverb 選項會在標頭中設定對應的旗標,之後可以檢索這些旗標以相應地處理音訊串流。

21.16.1 選項

skip_rate_check bool

略過取樣率檢查(預設為 false

loop bool

設定循環旗標(預設為 false

reverb boolean

設定殘響旗標(預設為 true

21.17 asf, asf_stream

進階 / 主動系統(或串流)格式音訊多工器。

串流應選擇 ‘asf_stream’ 變體。

請注意,Windows Media Audio (wma) 和 Windows Media Video (wmv) 也使用此多工器。

21.17.1 選項

packet_size size

將多工器封包大小設定為位元組數。透過調整此設定,您可以根據來源減少資料碎片或多工器額外負荷。預設值為 3200,最小值為 100,最大值為 64Ki

21.18 ass

ASS/SSA (SubStation Alpha) 字幕多工器。

它接受單一 ASS 字幕串流。

21.18.1 選項

ignore_readorder bool

立即寫入對話事件,即使它們順序錯亂,預設值為 false,否則它們會被快取直到找到預期的時間事件。

21.19 ast

AST (音訊串流) 多工器。

此格式用於在某些 Nintendo Wii 遊戲上播放音訊。

它接受單一音訊串流。

loopstartloopend 選項可用於定義檔案的循環區段,供支援此選項的播放器使用。

21.19.1 選項

loopstart start

指定循環開始位置,以毫秒表示,從 -1INT_MAX,若設定為 -1 則不指定循環(預設為 -1),且 loopend 值會被忽略。

loopend end

指定循環結束位置,以毫秒表示,從 0INT_MAX,預設值為 0,若設定為 0 則假設為總串流持續時間。

21.20 au

SUN AU 音訊多工器。

它接受單一音訊串流。

21.21 avi

音訊視訊交錯多工器。

AVI 是 Microsoft 開發的專有格式,之後透過 Open DML 規範正式指定。

由於播放器實作的差異,可能需要設定一些選項,以確保產生的輸出可以被目標播放器正確播放。

21.21.1 選項

flipped_raw_rgb bool

若設定為 true,則為原始 RGB 位圖儲存正高度,表示位圖以由下而上方式儲存。請注意,此選項不會翻轉位圖,必須事先手動完成,例如使用 ‘vflip’ 濾鏡。預設值為 false,表示位圖以由上而下方式儲存。

reserve_index_space size

在檔案標頭中為每個串流的 OpenDML 主索引保留指定位元組數的空間。預設情況下,如果第一個主索引中沒有剩餘空間,則額外的主索引會嵌入資料封包中,並鏈接在一起形成索引鏈。這種索引結構可能會在某些使用情況下引起問題,例如,第三方軟體嚴格依賴 OpenDML 索引規範,或檔案搜尋速度緩慢時。在檔案標頭中保留足夠的索引空間可以避免這些問題。

所需的索引空間取決於輸出檔案大小,應約為每 GB 16 個位元組。當省略此選項或設定為零時,會猜測必要的索引空間。

預設值為 0

write_channel_mask bool

將聲道佈局遮罩寫入音訊串流標頭。

預設情況下啟用此選項。停用聲道遮罩在特定情況下可能很有用,例如,為了與僅支援 AVI 中單一音訊串流的軟體相容,將多個音訊串流合併為一個時(請參閱 (ffmpeg-filters)ffmpeg-filters 手冊中的 "amerge" 區段)。

21.22 avif

AV1(開放媒體聯盟視訊編碼 1)影像格式多工器。

此多工器儲存使用 AV1 編碼器編碼的影像。

它接受一個或兩個視訊串流。如果提供兩個視訊串流,則第二個串流應包含儲存 Alpha 遮罩的單一平面。

如果提供多個影像,則產生的輸出會被視為動畫 AVIF,並且可以使用 loop 選項指定循環次數。

這是基於開放媒體聯盟在 URL https://aomediacodec.github.io/av1-avif 上的規範。

21.22.1 選項

loop count

動畫 AVIF 的循環次數,0 指定無限循環,預設值為 0

movie_timescale timescale

設定寫入電影標頭 box (mvhd) 的時間刻度。範圍是 1 到 INT_MAX。預設值為 1000

21.23 avm2

ShockWave Flash (SWF) / ActionScript 虛擬機器 2 (AVM2) 格式多工器。

它接受一個音訊串流、一個視訊串流或兩者皆可。

21.24 bit

G.729 (.bit) 檔案格式多工器。

它接受單一 G.729 音訊串流。

21.25 caf

Apple CAF (Core Audio Format) 多工器。

它接受單一音訊串流。

21.26 codec2

Codec2 音訊多工器。

它接受單一 codec2 音訊串流。

21.27 chromaprint

Chromaprint 指紋辨識多工器。

若要啟用此濾鏡的編譯,您需要使用 --enable-chromaprint 配置 FFmpeg。

此多工器將音訊資料饋送到 Chromaprint 函式庫,該函式庫會為提供的音訊資料產生指紋。請參閱:https://acoustid.org/chromaprint

它接受最多 2 個聲道的單一帶正負號的原生位元組序 16 位元原始音訊串流。

21.27.1 選項

algorithm version

選取要用於指紋辨識的演算法版本。範圍為 04。版本 3 啟用靜音偵測。預設值為 1

fp_format format

輸出指紋的格式。接受以下選項

base64

Base64 壓縮指紋(預設)

compressed

二進位壓縮指紋

raw

二進位原始指紋

silence_threshold threshold

偵測靜音的閾值。範圍從 -132767,其中 -1 停用靜音偵測。靜音偵測只能與演算法版本 3 一起使用。

靜音偵測必須停用才能與 AcoustID 服務一起使用。預設值為 -1

21.28 crc

CRC(循環冗餘檢查)多工器。

此多工器計算並列印所有輸入音訊和視訊影格的 Adler-32 CRC。預設情況下,在計算 CRC 之前,音訊影格會轉換為帶正負號的 16 位元原始音訊,而視訊影格會轉換為原始視訊。

多工器的輸出由單行組成,格式如下:CRC=0xCRC,其中 CRC 是一個十六進位數字,以 0 填充至 8 位數,包含所有已解碼輸入影格的 CRC。

另請參閱 framecrc 多工器。

21.28.1 範例

  • 使用 ffmpeg 計算輸入的 CRC,並將其儲存在檔案 out.crc
    ffmpeg -i INPUT -f crc out.crc
    
  • 使用 ffmpeg 使用以下命令將 CRC 列印到 stdout
    ffmpeg -i INPUT -f crc -
    
  • 您可以透過指定音訊和視訊編碼器和格式,使用 ffmpeg 選取每個影格的輸出格式。例如,若要計算轉換為 PCM 無號碼 8 位元的輸入音訊和轉換為 MPEG-2 視訊的輸入視訊的 CRC,請使用以下命令
    ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
    

21.29 dash

HTTP 動態自適應串流 (DASH) 多工器。

此多工器根據 MPEG-DASH 標準 ISO/IEC 23009-1:2014 和後續標準更新建立區段和資訊清單檔案。

如需更多資訊,請參閱

此多工器為每個串流建立 MPD(媒體呈現描述)資訊清單檔案和區段檔案。區段檔案放置在 MPD 資訊清單檔案的相同目錄中。

區段檔案名稱可能包含標準第 5.3.9.4.4 節中定義的資訊清單 SegmentTemplate 區段中使用的預定義識別符。

可用的識別符為 $RepresentationID$$Number$$Bandwidth$$Time$。除了標準識別符之外,還支援 ffmpeg 特有的 $ext$ 識別符。指定後,ffmpeg 會將檔案名稱中的 $ext$ 替換為多工格式的副檔名,例如 mp4webm 等。

21.29.1 選項

adaptation_sets adaptation_sets

將串流指派給 MPD 資訊清單 AdaptationSets 區段中指定的適應集。

適應集包含一組或多個串流,作為單一子集存取,例如,根據可用頻寬由使用者選擇的不同大小編碼的相應串流,或具有不同語言的不同音訊串流。

每個適應集都以以下語法指定

id=index,streams=streams

其中 index 必須是數字索引,而 streams 是以 , 分隔的串流索引序列。可以指定多個適應集,以空格分隔。

若要將所有視訊(或音訊)串流對應到一個適應集,可以使用 v(或 a)作為串流識別符,而不是 ID。

若未定義任何指派,則預設為每個串流一個適應集。

還可以指定以下選用欄位

descriptor

定義由 ISO/IEC 23009-1:2014/Amd.2:2015 定義的描述符。

例如

<SupplementalProperty schemeIdUri=\"urn:mpeg:dash:srd:2014\" value=\"0,0,0,1,1,2,2\"/>

描述符字串應為自閉 XML 標籤。

frag_duration

覆寫使用 frag_duration 選項指定的全域片段持續時間。

frag_type

覆寫使用 frag_type 選項指定的全域片段類型。

seg_duration

覆寫使用 seg_duration 選項指定的全域區段持續時間。

trick_id

將適應集標記為包含用於參考適應集的 Trick Mode 的串流。

以下是 adaptation_sets 選項的一些可能值範例

id=0,seg_duration=2,frag_duration=1,frag_type=duration,streams=v id=1,seg_duration=2,frag_type=none,streams=a
id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1
dash_segment_type type

設定 DASH 區段檔案類型。

可能的值

auto

dash 區段檔案格式將根據串流編碼器選取。這是預設模式。

mp4

dash 區段檔案將為 ISOBMFF/MP4 格式

webm

dash 區段檔案將為 WebM 格式

extra_window_size size

設定從磁碟移除之前,保留在資訊清單外部的最大區段數。

format_options options_list

使用 : 分隔的 key=value 參數清單設定容器格式 (mp4/webm) 選項。包含 : 特殊字元的值必須逸出。

frag_duration duration

設定區段內片段的長度(以秒為單位),也可以設定小數值。

frag_type type

設定片段化的間隔類型。

可能的值

auto

每個區段設定一個片段

every_frame

在每個影格處分段

duration

在特定時間間隔片段化

pframes

在關鍵影格和後續 P 影格重新排序時片段化(僅限視訊,實驗性功能)

global_sidx bool

寫入全域 SIDX atom。僅適用於單一檔案、mp4 輸出、非串流模式。

hls_master_name file_name

HLS 主播放清單名稱。預設值為 master.m3u8

hls_playlist bool

產生 HLS 播放清單檔案。主播放清單使用 hls_master_name 選項指定的檔案名稱產生。每個串流產生一個媒體播放清單檔案,檔案名稱為 media_0.m3u8media_1.m3u8 等。

http_opts http_opts

指定要傳遞至底層 HTTP 協定的 : 分隔的 key=value 選項清單。僅適用於 HTTP 輸出。

http_persistent bool

使用持久性 HTTP 連線。僅適用於 HTTP 輸出。

http_user_agent user_agent

覆寫 HTTP 標頭中的 User-Agent 欄位。僅適用於 HTTP 輸出。

ignore_io_errors bool

忽略開啟和寫入期間的 IO 錯誤。適用於網路輸出的長時間執行。預設情況下停用。

index_correction bool

啟用或停用區段索引校正邏輯。僅當啟用 use_template 且停用 use_timeline 時適用。預設情況下停用。

啟用後,此邏輯會監控區段索引的流程。如果串流的區段索引值未處於預期的即時位置,則此邏輯會校正該索引值。

通常,即時串流使用案例中需要此邏輯。網路頻寬波動在長時間執行串流期間很常見。每次波動都可能導致區段索引落後於預期的即時位置。

init_seg_name init_name

用於初始化區段的 DASH 範本名稱。預設值為 init-stream$RepresentationID$.$ext$$ext$ 會替換為區段格式特定的檔案名稱副檔名。

ldash bool

透過限制某些元素的存在和值來啟用低延遲 Dash。預設情況下停用。

lhls bool

啟用低延遲 HLS (LHLS)。新增帶有目前區段 URI 的 #EXT-X-PREFETCH 標籤。hls.js 播放器人員正嘗試標準化開放的 LHLS 規範。草稿規範可在 https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md 取得。

此選項嘗試符合上述開放規範。它會自動啟用 streaminghls_playlist 選項。這是一項實驗性功能。

注意:這不是 Apple 版本的 LHLS。請參閱 https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis

master_m3u8_publish_rate segment_intervals_count

在指定的區段間隔數之後,重複發佈主播放清單。

max_playback_rate rate

設定指示的最大播放速率,此速率適用於用戶端在正常播放期間自動調整播放延遲和緩衝區佔用率。

media_seg_name segment_name

用於媒體區段的 DASH 範本名稱。預設值為 chunk-stream$RepresentationID$-$Number%05d$.$ext$$ext$ 會替換為區段格式特定的檔案名稱副檔名。

method method

使用給定的 HTTP 方法建立輸出檔案。通常設定為 PUTPOST

min_playback_rate rate

設定指示的最小播放速率,此速率適用於用戶端在正常播放期間自動調整播放延遲和緩衝區佔用率。

mpd_profile flags

設定一個或多個 MPD 資訊清單設定檔。

可能的值

dash

MPEG-DASH ISO 基礎媒體檔案格式即時設定檔

dvb_dash

DVB-DASH 設定檔

預設值為 dash

remove_at_exit bool

啟用或停用在完成時移除所有區段。預設情況下停用。

seg_duration duration

設定區段長度(以秒為單位)(可以設定小數值)。當啟用 use_template 選項且停用 use_timeline 選項時,該值會被視為平均區段持續時間,而對於所有其他使用情況,則被視為最小區段持續時間。

預設值為 5

single_file bool

啟用或停用將所有區段儲存在單一檔案中,並使用位元組範圍存取。預設情況下停用。

單一檔案的名稱可以使用 single_file_name 選項指定,若未指定,則假設為帶有輸出格式副檔名的資訊清單檔案的basename。

single_file_name file_name

用於資訊清單 baseURL 元素的 DASH 範本名稱。暗示 single_file 選項設定為 true。在範本中,$ext$ 會替換為區段格式特定的檔案名稱副檔名。

streaming bool

啟用或停用輸出的區塊串流模式。在區塊串流模式下,每個影格都會是一個 moof 片段,形成一個區塊。預設情況下停用。

target_latency target_latency

設定服務的目標延遲時間(秒),可以使用小數值。僅在啟用 streamingwrite_prft 選項時適用。這是一個資訊欄位,客戶端可以用來測量服務的延遲。

timeout timeout

設定 socket I/O 操作的逾時時間,單位為秒(可以使用小數值)。僅適用於 HTTP 輸出。

update_period period

設定 MPD 更新週期,適用於動態內容。單位為秒。若設定為 0,週期將自動計算。

預設值為 0

use_template bool

啟用或停用在 manifest 中使用 SegmentTemplate 而非 SegmentList。預設為啟用。

use_timeline bool

啟用或停用在 SegmentTemplate manifest 區段中使用 SegmentTimeline。預設為啟用。

utc_timing_url url

將返回 ISO 格式 UTC 時間戳記的頁面 URL,例如 https://time.akamai.com/?iso

window_size size

設定 manifest 中保留的最大 segment 數量,並丟棄最舊的 segment。這對於 live streaming 非常有用。

若值為 0,則 manifest 中會保留所有 segment。預設值為 0

write_prft write_prft

在支援的串流上寫入 Producer Reference Time 元素。這也會在底層的 muxer 中啟用 prft box 的寫入。僅在啟用 utc_url 選項時適用。預設設定為 auto,在此情況下,muxer 將嘗試僅在需要的模式中啟用它。

21.29.2 範例

使用 ffmpeg 從輸入源即時生成 DASH 輸出。

從輸入檔案生成兩個多媒體串流,皆包含透過 ‘libx264’ 編碼的視訊串流,以及透過 ‘libfdk_aac’ 編碼的音訊串流。第一個多媒體串流包含位元率為 800k 的視訊和預設速率的音訊,第二個串流包含縮放為 320x170 像素、位元率為 300k 的視訊和重新取樣至 22005 Hz 的音訊。

window_size 選項僅保留最新的 5 個 segment,預設持續時間為 5 秒。

ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -profile:v:0 main \
-b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline -ar:a:1 22050 \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 \
-use_timeline 1 -use_template 1 -window_size 5 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd

21.30 daud

D-Cinema 音訊 muxer。

它接受單一 6 聲道音訊串流,以 96000 Hz 重新取樣,並使用 ‘pcm_24daud’ 編碼器編碼。

21.30.1 範例

使用 ffmpeg 將輸入音訊 mux 成 ‘5.1’ 聲道佈局,並以 96000Hz 重新取樣

ffmpeg -i INPUT -af aresample=96000,pan=5.1 slow.302

對於 7.0 之前的 ffmpeg 版本,您可能必須使用 ‘asetnsamples’ 濾鏡來限制 muxed 封包大小,因為此格式不支援 muxing 大於 65535 位元組(3640 個樣本)的封包。對於較新的 ffmpeg 版本,音訊會自動封包化為 36000 位元組(2000 個樣本)的封包。

21.31 dv

DV (數位視訊) muxer。

它正好接受一個 ‘dvvideo’ 視訊串流和最多兩個 ‘pcm_s16’ 音訊串流。更多限制由視訊的屬性定義,該屬性必須對應於 DV 視訊支援的 profile 和影格率。

21.31.1 範例

使用 ffmpeg 轉換輸入

ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv

21.32 ffmetadata

FFmpeg metadata muxer。

此 muxer 以 ‘ffmetadata’ 格式寫入串流 metadata。

請參閱 (ffmpeg-formats)Metadata 章節 以取得有關格式的資訊。

21.32.1 範例

使用 ffmpeg 從輸入檔案中提取 metadata 到 ‘ffmetadata’ 格式的 metadata.ffmeta 檔案

ffmpeg -i INPUT -f ffmetadata metadata.ffmeta

21.33 fifo

FIFO (先進先出) muxer。

fifo’ 虛擬 muxer 允許透過使用先進先出佇列並在單獨的執行緒中執行實際的 muxer 來分離編碼和 muxing。

這在與 tee muxer 結合使用時特別有用,並且可用於將資料發送到具有不同可靠性/寫入速度/延遲的多個目的地。

目標 muxer 可以從輸出名稱中選擇,也可以透過 fifo_format 選項指定。

當佇列填滿或輸出失敗時(例如,當封包無法寫入輸出時),‘fifo’ muxer 的行為是可選的

  • 輸出可以透明地重新啟動,並且重試之間的可配置延遲可以基於即時時間或處理的串流時間。
  • 編碼可以在暫時性故障期間被阻止,或者在 FIFO 佇列填滿的情況下,可以繼續透明地丟棄封包。

API 使用者應注意,在其 AVFormatContext 中使用的回呼函式 (interrupt_callbackio_openio_close) 必須是執行緒安全的。

21.33.1 選項

attempt_recovery bool

如果發生故障,嘗試恢復輸出。這在使用網路輸出時特別有用,因為它可以透明地重新啟動串流。預設情況下,此選項設定為 false

drop_pkts_on_overflow bool

若設定為 true,則在 fifo 佇列填滿的情況下,將會丟棄封包,而不是阻止編碼器。這使得可以繼續串流而不延遲輸入,但代價是省略部分串流。預設情況下,此選項設定為 false,因此在這種情況下,編碼器將被阻止,直到 muxer 處理完一些封包且沒有遺失任何封包。

fifo_format format_name

指定格式名稱。如果無法從輸出名稱後綴猜測格式名稱,則此選項很有用。

format_opts options

為底層 muxer 指定格式選項。Muxer 選項可以指定為以 ’:’ 分隔的 key=value 對列表。

max_recovery_attempts count

設定連續不成功恢復嘗試的最大次數,超過此次數後輸出將永久失敗。預設情況下,此選項設定為 0 (無限制)。

queue_size size

以封包數量指定佇列大小。預設值為 60

recover_any_error bool

若設定為 true,則無論導致故障的錯誤類型為何,都將嘗試恢復。預設情況下,此選項設定為 false,並且在發生某些 (通常是永久性) 錯誤時,即使 attempt_recovery 選項設定為 true,也不會嘗試恢復。

recovery_wait_streamtime bool

若設定為 false,則在等待恢復嘗試時使用即時時間 (亦即,將在 recovery_wait_time 選項指定的時間後嘗試恢復)。

若設定為 true,則會改為考慮處理的串流時間 (亦即,將在丟棄與 recovery_wait_time 選項對應的封包後嘗試恢復)。

預設情況下,此選項設定為 false

recovery_wait_time duration

指定在前一次不成功恢復嘗試後,下一次恢復嘗試之前的等待時間,單位為秒。預設值為 5

restart_with_keyframe bool

指定在從佇列溢位或故障恢復後是否等待關鍵影格。預設情況下,此選項設定為 false

timeshift duration

緩衝指定數量的封包並延遲寫入輸出。請注意,queue_size 選項的值必須足夠大,以儲存用於 timeshift 的封包。在輸入結束時,fifo 緩衝區會以即時速度刷新。

21.33.2 範例

使用 ffmpeg 串流到 RTMP 伺服器,即使在發生暫時性故障 (網路中斷) 的情況下,也以即時速率繼續處理串流,並嘗試每秒無限期地恢復串流

ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \
  -drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \
  -map 0:v -map 0:a rtmp://example.com/live/stream_name

21.34 film_cpk

Sega film (.cpk) muxer。

此格式曾被用作多款 Sega 遊戲的內部格式。

有關 Sega film 檔案格式的更多資訊,請訪問 http://wiki.multimedia.cx/index.php?title=Sega_FILM

它最多接受一個 ‘cinepak’ 或 raw 視訊串流,以及最多一個音訊串流。

21.35 filmstrip

Adobe Filmstrip muxer。

此格式被多種 Adobe 工具用於儲存產生的 filmstrip 匯出。它接受單一 raw 視訊串流。

21.36 fits

Flexible Image Transport System (FITS) muxer。

此影像格式用於儲存天文資料。

有關此格式的更多資訊,請訪問 https://fits.gsfc.nasa.gov

21.37 flac

Raw FLAC 音訊 muxer。

此 muxer 正好接受一個 FLAC 音訊串流。此外,還可以添加 disposition 為 ‘attached_pic’ 的影像。

21.37.1 選項

write_header bool

若設定為 true,則寫入檔案 header,預設值為 true

21.37.2 範例

使用 ffmpeg 儲存來自輸入檔案的音訊串流,以及多個 disposition 為 ‘attached_pic’ 的圖片

ffmpeg -i INPUT -i pic1.png -i pic2.jpg -map 0:a -map 1 -map 2 -disposition:v attached_pic OUTPUT

21.38 flv

Adobe Flash Video Format muxer。

21.38.1 選項

flvflags flags

可能的值

aac_seq_header_detect

根據音訊串流資料放置 AAC sequence header。

no_sequence_end

停用 sequence end tag。

no_metadata

停用 metadata tag。

no_duration_filesize

當串流結束時,若 duration 和 filesize 等於零,則停用 metadata 中的 duration 和 filesize。(用於不可搜尋的 live stream)。

add_keyframe_index

用於方便搜尋;特別是對於 HTTP pseudo streaming。

21.39 framecrc

Per-packet CRC (循環冗餘檢查) 測試格式。

此 muxer 計算並印出每個音訊和視訊封包的 Adler-32 CRC。預設情況下,在計算 CRC 之前,音訊影格會轉換為 signed 16-bit raw 音訊,視訊影格會轉換為 raw 視訊。

muxer 的輸出由每行音訊和視訊封包組成,形式如下

stream_index, packet_dts, packet_pts, packet_duration, packet_size, 0xCRC

CRC 是一個以 0 填充至 8 位數的十六進制數字,包含封包的 CRC。

21.39.1 範例

例如,要計算 INPUT 中音訊和視訊影格的 CRC (已轉換為 raw 音訊和視訊封包),並將其儲存在 out.crc 檔案中

ffmpeg -i INPUT -f framecrc out.crc

若要將資訊印出到 stdout,請使用以下命令

ffmpeg -i INPUT -f framecrc -

使用 ffmpeg,您可以透過指定音訊和視訊編碼器來選擇音訊和視訊影格在計算每個封包的 CRC 之前編碼成的輸出格式。例如,要計算每個解碼的輸入音訊影格 (已轉換為 PCM unsigned 8-bit) 和每個解碼的輸入視訊影格 (已轉換為 MPEG-2 視訊) 的 CRC,請使用以下命令

ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -

另請參閱 crc muxer。

21.40 framehash

Per-packet hash 測試格式。

此 muxer 計算並印出每個音訊和視訊封包的加密 hash。這可用於逐封包的相等性檢查,而無需單獨對每個封包進行二進制比較。

預設情況下,在計算 hash 之前,音訊影格會轉換為 signed 16-bit raw 音訊,視訊影格會轉換為 raw 視訊,但也可以使用顯式轉換為其他編碼器的輸出。它預設使用 SHA-256 加密 hash 函數,但也支援多種其他演算法。

muxer 的輸出由每行音訊和視訊封包組成,形式如下

stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash

hash 是一個十六進制數字,表示封包的計算 hash。

hash algorithm

使用字串 algorithm 指定的加密 hash 函數。支援的值包括 MD5murmur3RIPEMD128RIPEMD160RIPEMD256RIPEMD320SHA160SHA224SHA256 (預設值)、SHA512/224SHA512/256SHA384SHA512CRC32adler32

21.40.1 範例

若要計算 INPUT 中音訊和視訊影格的 SHA-256 hash (已轉換為 raw 音訊和視訊封包),並將其儲存在 out.sha256 檔案中

ffmpeg -i INPUT -f framehash out.sha256

若要使用 MD5 hash 函數將資訊印出到 stdout,請使用以下命令

ffmpeg -i INPUT -f framehash -hash md5 -

另請參閱 hash muxer。

21.41 framemd5

Per-packet MD5 測試格式。

這是 framehash muxer 的變體。與該 muxer 不同,它預設使用 MD5 hash 函數。

21.41.1 範例

若要計算 INPUT 中音訊和視訊影格的 MD5 hash (已轉換為 raw 音訊和視訊封包),並將其儲存在 out.md5 檔案中

ffmpeg -i INPUT -f framemd5 out.md5

若要將資訊印出到 stdout,請使用以下命令

ffmpeg -i INPUT -f framemd5 -

另請參閱 framehashmd5 muxers。

21.42 gif

Animated GIF muxer。

請注意,GIF 格式具有非常大的 time base:因此,兩個影格之間的延遲不能小於一厘秒。

21.42.1 選項

loop bool

設定輸出循環播放的次數。使用 -1 表示不循環,0 表示無限循環播放 (預設值)。

final_delay delay

強制設定最後一個影格後的延遲時間 (以厘秒為單位)。每個影格都以延遲結束,直到下一個影格。預設值為 -1,這是一個特殊值,用於告知 muxer 重新使用先前的延遲。在循環播放的情況下,您可能需要自訂此值以標記暫停時間。

21.42.2 範例

編碼一個循環播放 10 次的 gif,循環之間有 5 秒的延遲

ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif

注意 1:如果您希望將影格提取到單獨的 GIF 檔案中,您需要強制使用 image2 muxer

ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"

21.43 gxf

General eXchange Format (GXF) muxer。

GXF 由 Grass Valley Group 開發,然後由 SMPTE 標準化為 SMPTE 360M,並在 SMPTE RDD 14-2007 中擴展以包含高畫質視訊解析度。

它最多接受一個編碼器為 ‘mjpeg’、‘mpeg1video’、‘mpeg2video’ 或 ‘dvvideo’ 且解析度為 ‘512x480’ 或 ‘608x576’ 的視訊串流,以及多個速率為 48000Hz 且編碼器為 ‘pcm16_le’ 的音訊串流。

21.44 hash

Hash 測試格式。

此 muxer 計算並印出所有輸入音訊和視訊影格的加密 hash。這可用於相等性檢查,而無需進行完整的二進制比較。

預設情況下,在計算 hash 之前,音訊影格會轉換為 signed 16-bit raw 音訊,視訊影格會轉換為 raw 視訊,但也可以使用顯式轉換為其他編碼器的輸出。時間戳記會被忽略。它預設使用 SHA-256 加密 hash 函數,但也支援多種其他演算法。

muxer 的輸出由單行組成,形式如下:algo=hash,其中 algo 是表示所用 hash 函數的簡短字串,而 hash 是一個表示計算 hash 的十六進制數字。

hash algorithm

使用字串 algorithm 指定的加密 hash 函數。支援的值包括 MD5murmur3RIPEMD128RIPEMD160RIPEMD256RIPEMD320SHA160SHA224SHA256 (預設值)、SHA512/224SHA512/256SHA384SHA512CRC32adler32

21.44.1 範例

若要計算輸入 (已轉換為 raw 音訊和視訊) 的 SHA-256 hash,並將其儲存在 out.sha256 檔案中

ffmpeg -i INPUT -f hash out.sha256

若要將 MD5 hash 印出到 stdout,請使用以下命令

ffmpeg -i INPUT -f hash -hash md5 -

另請參閱 framehash muxer。

21.45 hds

HTTP Dynamic Streaming (HDS) muxer。

HTTP dynamic streaming 或 HDS 是 Adobe 開發的一種自適應位元率串流方法。HDS 透過 HTTP 連線傳輸 MP4 視訊內容。HDS 可用於隨選串流或 live streaming。

此 muxer 會在指定為輸出的目錄中建立 .f4m (Adobe Flash Media Manifest File) manifest、每個串流的 .abst (Adobe Bootstrap File) 和 segment 檔案。

這些檔案需要透過 HTTPS 由 HDS 播放器訪問,才能夠在生成的串流上執行播放。

21.45.1 選項

extra_window_size int

在從磁碟移除之前,保留在 manifest 之外的 fragment 數量

min_frag_duration microseconds

最小 fragment 持續時間 (以微秒為單位),預設值為 1 秒 (10000000)

remove_at_exit bool

若設定為 true,則在完成時移除所有 fragment

window_size int

保留在 manifest 中的 fragment 數量,若設定為非 0 的值。預設情況下,所有 segment 都會保留在輸出目錄中。

21.45.2 範例

使用 ffmpeg 以即時速率將 HDS 檔案生成到 output.hds 目錄

ffmpeg -re -i INPUT -f hds -b:v 200k output.hds

21.46 hls

Apple HTTP Live Streaming 多工器,可根據 HTTP Live Streaming (HLS) 規範分割 MPEG-TS。

它會建立一個播放列表檔案,以及一個或多個片段檔案。輸出的檔案名稱會指定播放列表的檔案名稱。

預設情況下,此多工器會為產生的每個片段建立一個檔案。這些檔案的名稱與播放列表相同,後接一個序號和 .ts 副檔名。

請務必在編碼時要求封閉式 GOP,並將 GOP 大小設定為符合您的片段時間限制。

例如,若要使用 ffmpeg 轉換輸入檔案

ffmpeg -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8

此範例將產生播放列表 out.m3u8 和片段檔案:out0.tsout1.tsout2.ts 等。

另請參閱 segment 多工器,它提供更通用且彈性的分段器實作,可用於執行 HLS 分段。

21.46.1 選項

hls_init_time duration

設定初始目標片段長度。預設值為 0

duration 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節

在第一個 m3u8 列表中經過此時間後,片段將在下一個關鍵影格處切割。在初始播放列表填滿後,ffmpeg 將以等於 hls_time 的持續時間切割片段。

hls_time duration

設定目標片段長度。預設值為 2。

duration 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節。片段將在經過此時間後的下一個關鍵影格處切割。

hls_list_size size

設定播放列表項目的最大數量。如果設定為 0,列表檔案將包含所有片段。預設值為 5。

hls_delete_threshold size

設定在 hls_flags delete_segments 刪除未被參考的片段之前,要保留在磁碟上的未被參考片段數量。增加此值可讓持續連線的用戶端下載最近在播放列表中被參考的片段。預設值為 1,表示早於 hls_list_size+1 的片段將被刪除。

hls_start_number_source source

根據指定的來源,啟動播放列表序號 (#EXT-X-MEDIA-SEQUENCE)。除非設定 hls_flags single_file,否則它也會指定片段和字幕檔案名稱的起始序號來源。在任何情況下,如果設定了 hls_flags append_list 且讀取的播放列表序號大於指定的起始序號,則該值將用作起始值。

它接受以下值

generic (預設)

根據 start_number 選項值設定起始編號。

epoch

將起始編號設定為自 epoch (1970-01-01 00:00:00) 以來的秒數。

epoch_us

將起始編號設定為自 epoch (1970-01-01 00:00:00) 以來的微秒數。

datetime

根據目前日期/時間 (YYYYmmddHHMMSS) 設定起始編號。例如 20161231235759。

start_number number

hls_start_number_source 值為 generic 時,從指定的 number 開始播放列表序號 (#EXT-X-MEDIA-SEQUENCE)。(這是預設情況。)除非設定 hls_flags single_file,否則它也會指定片段和字幕檔案名稱的起始序號。預設值為 0。

hls_allow_cache bool

明確設定用戶端「可以」(1) 或「不得」(0) 快取媒體片段。

hls_base_url baseurl

baseurl 附加到播放列表中的每個項目。適用於產生具有絕對路徑的播放列表。

請注意,播放列表序號對於每個片段都必須是唯一的,且不應與片段檔案名稱序號混淆,後者可以是循環的,例如,如果指定了 wrap 選項。

hls_segment_filename filename

設定片段檔案名稱。除非使用 ‘single_file’ 設定了 hls_flags 選項,否則 filename 會用作字串格式,並附加片段編號。

例如

ffmpeg -i in.nut -hls_segment_filename 'file%03d.ts' out.m3u8

將產生播放列表 out.m3u8 和片段檔案:file000.tsfile001.tsfile002.ts 等。

filename 可能包含完整路徑或相對路徑規格,但只有不含任何路徑的檔案名稱部分會包含在 m3u8 片段列表中。如果指定了相對路徑,則建立的片段檔案的路徑將相對於目前的工作目錄。當設定 strftime_mkdir 時,filename 的整個展開值將寫入 m3u8 片段列表。

當使用兩個或多個變體串流設定 var_stream_map 時,filename 模式必須包含字串 "%v",且此字串將展開為產生的片段檔案名稱中變體串流索引的位置。

例如

ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
  -hls_segment_filename 'file_%v_%03d.ts' out_%v.m3u8

將產生播放列表片段檔案集:file_0_000.tsfile_0_001.tsfile_0_002.ts 等,以及 file_1_000.tsfile_1_001.tsfile_1_002.ts 等。

字串 "%v" 可能存在於檔案名稱或包含檔案的最後一個目錄名稱中,但只能在其中一個中。(此外,%v 可能在最後一個子目錄或檔案名稱中出現多次。)如果字串 %v 存在於目錄名稱中,則在展開目錄名稱模式後會建立子目錄。這使得能夠在子目錄中建立對應於不同變體串流的片段。

例如

ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
  -hls_segment_filename 'vs%v/file_%03d.ts' vs%v/out.m3u8

將產生播放列表片段檔案集:vs0/file_000.tsvs0/file_001.tsvs0/file_002.ts 等,以及 vs1/file_000.tsvs1/file_001.tsvs1/file_002.ts 等。

strftime bool

filename 上使用 strftime(),以使用本地時間展開片段檔案名稱。片段編號在此模式下也可用,但若要使用它,您需要在 hls_flag 中設定 ‘second_level_segment_index’,而 %%d 將會是指定符。

例如

ffmpeg -i in.nut -strftime 1 -hls_segment_filename 'file-%Y%m%d-%s.ts' out.m3u8

將產生播放列表 out.m3u8 和片段檔案:file-20160215-1455569023.tsfile-20160215-1455569024.ts 等。注意:在某些系統/環境中,%s 指定符不可用。請參閱 strftime() 文件。

例如

ffmpeg -i in.nut -strftime 1 -hls_flags second_level_segment_index -hls_segment_filename 'file-%Y%m%d-%%04d.ts' out.m3u8

將產生播放列表 out.m3u8 和片段檔案:file-20160215-0001.tsfile-20160215-0002.ts 等。

strftime_mkdir bool

strftime 一起使用,它將建立選項 hls_segment_filename 的展開值中存在的所有子目錄。

例如

ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d-%s.ts' out.m3u8

將建立目錄 201560215(如果它不存在),然後產生播放列表 out.m3u8 和片段檔案:20160215/file-20160215-1455569023.ts20160215/file-20160215-1455569024.ts 等。

例如

ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y/%m/%d/file-%Y%m%d-%s.ts' out.m3u8

將建立目錄階層 2016/02/15(如果它們中的任何一個不存在),然後產生播放列表 out.m3u8 和片段檔案:2016/02/15/file-20160215-1455569023.ts2016/02/15/file-20160215-1455569024.ts 等。

hls_segment_options options_list

使用以冒號分隔的 key=value 參數列表設定輸出格式選項。包含 : 特殊字元的數值必須逸出。

hls_key_info_file key_info_file

使用 key_info_file 中的資訊進行片段加密。key_info_file 的第一行指定寫入播放列表的金鑰 URI。金鑰 URL 用於在播放期間存取加密金鑰。第二行指定金鑰檔案的路徑,用於在加密過程中取得金鑰。金鑰檔案以二進位格式讀取為 16 個八位元的單一封裝陣列。選用的第三行指定初始化向量 (IV) 作為十六進位字串,以用於加密,而不是片段序號(預設)。如果啟用 hls_flags periodic_rekey,則對 key_info_file 的變更將導致使用新的金鑰/IV 進行片段加密,並在播放列表中新增新的金鑰 URI/IV 的項目。

金鑰資訊檔案格式

key URI
key file path
IV (optional)

金鑰 URI 範例

http://server/file.key
/path/to/file.key
file.key

金鑰檔案路徑範例

file.key
/path/to/file.key

IV 範例

0123456789ABCDEF0123456789ABCDEF

金鑰資訊檔案範例

http://server/file.key
/path/to/file.key
0123456789ABCDEF0123456789ABCDEF

Shell 指令碼範例

#!/bin/sh
BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
  -hls_key_info_file file.keyinfo out.m3u8
hls_enc bool

啟用 (1) 或停用 (0) AES128 加密。啟用後,產生的每個片段都會被加密,且加密金鑰會儲存為 playlist name.key。

hls_enc_key key

指定一個 16 個八位元的金鑰來加密片段,預設情況下會隨機產生。

hls_enc_key_url keyurl

如果設定,則 keyurl 會取代 baseurl 附加到播放列表中的金鑰檔案名稱之前。

hls_enc_iv iv

為每個片段指定 16 個八位元的初始化向量,而不是自動產生的向量。

hls_segment_type flags

可能的值

mpegts

以 MPEG-2 傳輸串流格式輸出片段檔案。這與所有 HLS 版本相容。

fmp4

以分段 MP4 格式輸出片段檔案,類似於 MPEG-DASH。fmp4 檔案可用於 HLS 版本 7 及更高版本。

hls_fmp4_init_filename filename

設定片段檔案標頭檔的檔案名稱,預設檔案名稱為 init.mp4

當啟用 strftime 時,filename 會展開為具有本地時間的片段檔案名稱。

例如

ffmpeg -i in.nut -hls_segment_type fmp4 -strftime 1 -hls_fmp4_init_filename "%s_init.mp4" out.m3u8

將產生像這樣的 init 檔案 1602678741_init.mp4

hls_fmp4_init_resend bool

每次 m3u8 檔案重新整理後重新傳送 init 檔案,預設值為 0

當使用兩個或多個變體串流設定 var_stream_map 時,filename 模式必須包含字串 "%v",此字串指定產生的 init 檔案名稱中變體串流索引的位置。字串 "%v" 可能存在於檔案名稱或包含檔案的最後一個目錄名稱中。如果字串存在於目錄名稱中,則在展開目錄名稱模式後會建立子目錄。這使得能夠在子目錄中建立對應於不同變體串流的 init 檔案。

hls_flags flags

可能的值

single_file

如果設定此旗標,多工器將把所有片段儲存在單一 MPEG-TS 檔案中,並在播放列表中使用位元組範圍。以此方式產生的 HLS 播放列表的版本號將為 4。

例如

ffmpeg -i in.nut -hls_flags single_file out.m3u8

將產生播放列表 out.m3u8 和單一片段檔案 out.ts

delete_segments

從播放列表中移除的片段檔案,會在一段等於片段持續時間加上播放列表持續時間的時間後刪除。

append_list

將新的片段附加到舊片段列表的末尾,並從舊片段列表中移除 #EXT-X-ENDLIST

round_durations

將播放列表檔案片段資訊中的持續時間資訊四捨五入為整數值,而不是使用浮點數。如果沒有其他需要使用更高 HLS 版本的功能,則這將允許 ffmpeg 輸出 HLS 版本 2 m3u8。

discont_start

在第一個片段的資訊之前,將 #EXT-X-DISCONTINUITY 標籤新增至播放列表。

omit_endlist

不要在播放列表的末尾附加 EXT-X-ENDLIST 標籤。

periodic_rekey

將定期檢查 hls_key_info_file 指定的檔案,並偵測加密資訊的更新。請務必以原子方式替換此檔案,包括包含 AES 加密金鑰的檔案。

independent_segments

對於具有視訊片段且該播放列表的所有片段都保證以關鍵影格開始的播放列表,新增 #EXT-X-INDEPENDENT-SEGMENTS 標籤。

iframes_only

對於具有視訊片段且只能在 #EXT-X-BYTERANGE 模式下播放 I-frame 的播放列表,新增 #EXT-X-I-FRAMES-ONLY 標籤。

split_by_time

允許片段在關鍵影格以外的影格上開始。當關鍵影格之間的時間不一致時,這可以改善某些播放器的行為,但可能會使其他播放器的情況更糟,並可能在搜尋期間造成一些異常。此旗標應與 hls_time 選項一起使用。

program_date_time

產生 EXT-X-PROGRAM-DATE-TIME 標籤。

second_level_segment_index

啟用 strftime 選項時,除了日期/時間值之外,還可以在 hls_segment_filename 選項表達式中使用片段索引作為 %%d。若要取得具有後補零的固定寬度數字,可以使用 %%0xd 格式,其中 x 是所需的寬度。

second_level_segment_size

啟用 strftime 時,除了日期/時間值之外,還可以在 hls_segment_filename 選項表達式中使用片段大小(以位元組計算)作為 %%s。若要取得具有後補零的固定寬度數字,可以使用 %%0xs 格式,其中 x 是所需的寬度。

second_level_segment_duration

啟用 strftime 時,除了日期/時間值之外,還可以在 hls_segment_filename 選項表達式中使用片段持續時間(以微秒計算)作為 %%t。若要取得具有後補零的固定寬度數字,可以使用 %%0xt 格式,其中 x 是所需的寬度。

例如

ffmpeg -i sample.mpeg \
   -f hls -hls_time 3 -hls_list_size 5 \
   -hls_flags second_level_segment_index+second_level_segment_size+second_level_segment_duration \
   -strftime 1 -strftime_mkdir 1 -hls_segment_filename "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8

將產生如下的片段:segment_20170102194334_0003_00122200_0000003000000.tssegment_20170102194334_0004_00120072_0000003000000.ts 等。

temp_file

將片段資料寫入 filename.tmp,並在片段完成後才重新命名為 filename。

可以將提供片段的網路伺服器設定為拒絕 *.tmp 的請求,以防止在進行中的片段被新增至 m3u8 播放列表之前遭到存取。

此旗標也會影響 m3u8 播放列表檔案的建立方式。如果設定此旗標,所有播放列表檔案都將寫入暫存檔,並在完成後重新命名,與片段的處理方式類似。但是,無論此旗標為何,使用 file 協定且 hls_playlist_type 類型不是 ‘vod’ 的播放列表,始終會寫入暫存檔。

如果 master_pl_publish_rate 值不是零,則使用 file 協定指定的 master_pl_name 主要播放列表檔案(如果有的話),始終會寫入暫存檔,而與此旗標無關。

hls_playlist_type type

如果類型為 ‘event’,則在 m3u8 標頭中發出 #EXT-X-PLAYLIST-TYPE:EVENT。這會強制 hls_list_size 為 0;播放列表只能附加。

如果類型為 ‘vod’,則在 m3u8 標頭中發出 #EXT-X-PLAYLIST-TYPE:VOD。這會強制 hls_list_size 為 0;播放列表不得變更。

method method

使用給定的 HTTP 方法來建立 hls 檔案。

例如

ffmpeg -re -i in.ts -f hls -method PUT http://example.com/live/out.m3u8

將使用 HTTP PUT 方法將所有 mpegts 片段檔案上傳到 HTTP 伺服器,並以相同方法每 refresh 次更新 m3u8 檔案。請注意,HTTP 伺服器必須支援給定的方法來上傳檔案。

http_user_agent agent

覆寫 HTTP 標頭中的 User-Agent 欄位。僅適用於 HTTP 輸出。

var_stream_map stream_map

指定一個地圖字串,定義如何將音訊、視訊和字幕串流分組到不同的變體串流中。變體串流組之間以空格分隔。

預期的字串格式應如下所示:"a:0,v:0 a:1,v:1 ......"。其中 a:、v:、s: 分別是用於指定音訊、視訊和字幕串流的鍵。允許的值為 0 到 9(僅基於實際使用考量)。

當有兩個或更多變體串流時,輸出檔名模式必須包含字串 "%v":此字串指定變體串流索引在輸出媒體播放列表檔名中的位置。字串 "%v" 可能出現在檔名中,或在包含該檔案的最後一個目錄名稱中。如果字串出現在目錄名稱中,則在展開目錄名稱模式後會建立子目錄。這使得可以在子目錄中建立變體串流。

以下是一些範例。

  • 建立兩個 hls 變體串流。第一個變體串流將包含位元率為 1000k 的視訊串流和位元率為 64k 的音訊串流,第二個變體串流將包含位元率為 256k 的視訊串流和位元率為 32k 的音訊串流。在這裡,將建立兩個檔名為 out_0.m3u8out_1.m3u8 的媒體播放列表。
    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
      http://example.com/live/out_%v.m3u8
    
  • 如果您希望在結果名稱中使用有意義的文字而不是索引,您可以為每個或某些變體指定名稱。以下範例將建立兩個 hls 變體串流,與前一個範例相同。但在此範例中,將建立兩個檔名為 out_my_hd.m3u8out_my_sd.m3u8 的媒體播放列表。
    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0,name:my_hd v:1,a:1,name:my_sd" \
      http://example.com/live/out_%v.m3u8
    
  • 建立三個 hls 變體串流。第一個變體串流將是僅包含視訊的串流,視訊位元率為 1000k,第二個變體串流將是僅包含音訊的串流,位元率為 64k,第三個變體串流將是僅包含視訊的串流,位元率為 256k。在這裡,將建立三個檔名為 out_0.m3u8out_1.m3u8out_2.m3u8 的媒體播放列表。
    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k \
      -map 0:v -map 0:a -map 0:v -f hls -var_stream_map "v:0 a:0 v:1" \
      http://example.com/live/out_%v.m3u8
    
  • 在子目錄中建立變體串流。在這裡,第一個媒體播放列表建立在 http://example.com/live/vs_0/out.m3u8,第二個建立在 http://example.com/live/vs_1/out.m3u8
    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
      http://example.com/live/vs_%v/out.m3u8
    
  • 建立兩個僅包含音訊和兩個僅包含視訊的變體串流。除了主播放列表中每個變體串流的 #EXT-X-STREAM-INF 標籤外,還為兩個僅包含音訊的變體串流新增了 #EXT-X-MEDIA 標籤,並且它們使用音訊群組名稱 'aud_low' 和 'aud_high' 映射到兩個僅包含視訊的變體串流。預設情況下,會建立包含所有編碼串流的單個 hls 變體。
    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k -b:v:1 3000k  \
      -map 0:a -map 0:a -map 0:v -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low a:1,agroup:aud_high v:0,agroup:aud_low v:1,agroup:aud_high" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • 建立兩個僅包含音訊和一個僅包含視訊的變體串流。除了主播放列表中每個變體串流的 #EXT-X-STREAM-INF 標籤外,還為兩個僅包含音訊的變體串流新增了 #EXT-X-MEDIA 標籤,並且它們使用音訊群組名稱 'aud_low' 映射到一個僅包含視訊的變體串流,且音訊群組的預設狀態為 NO 或 YES。預設情況下,會建立包含所有編碼串流的單個 hls 變體。
    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \
      -map 0:a -map 0:a -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low,default:yes a:1,agroup:aud_low v:0,agroup:aud_low" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • 建立兩個僅包含音訊和一個僅包含視訊的變體串流。除了主播放列表中每個變體串流的 #EXT-X-STREAM-INF 標籤外,還為兩個僅包含音訊的變體串流新增了 #EXT-X-MEDIA 標籤,並且它們使用音訊群組名稱 'aud_low' 映射到一個僅包含視訊的變體串流,且音訊群組的預設狀態為 NO 或 YES,其中一個音訊具有語言名稱 ENG,另一個音訊語言名稱為 CHN。預設情況下,會建立包含所有編碼串流的單個 hls 變體。
    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \
      -map 0:a -map 0:a -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_low,language:CHN v:0,agroup:aud_low" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • 建立單個變體串流。在主播放列表中新增 TYPE=SUBTITLES#EXT-X-MEDIA 標籤,並帶有 webvtt 字幕群組名稱 'subtitle' 和可選的字幕名稱,例如 'English'。請確保輸入檔案至少有一個文字字幕串流。
    ffmpeg -y -i input_with_subtitle.mkv \
     -b:v:0 5250k -c:v h264 -pix_fmt yuv420p -profile:v main -level 4.1 \
     -b:a:0 256k \
     -c:s webvtt -c:a mp2 -ar 48000 -ac 2 -map 0:v -map 0:a:0 -map 0:s:0 \
     -f hls -var_stream_map "v:0,a:0,s:0,sgroup:subtitle,sname:English" \
     -master_pl_name master.m3u8 -t 300 -hls_time 10 -hls_init_time 4 -hls_list_size \
     10 -master_pl_publish_rate 10 -hls_flags \
     delete_segments+discont_start+split_by_time ./tmp/video.m3u8
    
cc_stream_map cc_stream_map

地圖字串,用於指定不同的隱藏式字幕群組及其屬性。隱藏式字幕串流組之間以空格分隔。

預期的字串格式應如下所示:"ccgroup:<群組名稱>,instreamid:<INSTREAM-ID>,language:<語言代碼> ......"。'ccgroup' 和 'instreamid' 是強制性屬性。'language' 是可選屬性。

使用此選項配置的隱藏式字幕群組,可以透過在 var_stream_map 字串中提供相同的 'ccgroup' 名稱,來映射到不同的變體串流。

例如

ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -a53cc:0 1 -a53cc:1 1 \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls \
  -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \
  -var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \
  -master_pl_name master.m3u8 \
  http://example.com/live/out_%v.m3u8

將在主播放列表中為 INSTREAM-ID 'CC1' 和 'CC2' 新增兩個 #EXT-X-MEDIA 標籤,並帶有 TYPE=CLOSED-CAPTIONS。此外,它將為兩個輸出變體串流新增群組名稱為 'cc' 的 CLOSED-CAPTIONS 屬性。

如果未設定 var_stream_map,則 cc_stream_map 中的第一個可用 ccgroup 將映射到輸出變體串流。

例如

ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \
  -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \
  -master_pl_name master.m3u8 \
  http://example.com/live/out.m3u8

這將在主播放列表中新增 #EXT-X-MEDIA 標籤,帶有 TYPE=CLOSED-CAPTIONS、群組名稱 'cc'、語言 'en' (英文) 和 INSTREAM-ID 'CC1'。此外,它將為輸出變體串流新增群組名稱為 'cc' 的 CLOSED-CAPTIONS 屬性。

master_pl_name name

使用給定的名稱建立 HLS 主播放列表。

例如

ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 http://example.com/live/out.m3u8

建立一個名為 master.m3u8 的 HLS 主播放列表,該列表發佈在 http://example.com/live/

master_pl_publish_rate count

在指定的片段間隔數之後,重複發佈主播放列表。

例如

ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 \
-hls_time 2 -master_pl_publish_rate 30 http://example.com/live/out.m3u8

建立一個名為 master.m3u8 的 HLS 主播放列表,並在每 30 個片段(即每 60 秒)後重複發佈。

http_persistent bool

使用持久性 HTTP 連線。僅適用於 HTTP 輸出。

timeout timeout

設定 socket I/O 操作的逾時時間。僅適用於 HTTP 輸出。

ignore_io_errors bool

忽略開啟、寫入和刪除期間的 IO 錯誤。適用於使用網路輸出的長時間執行。

headers headers

設定自訂 HTTP 標頭,可以覆蓋內建的預設標頭。僅適用於 HTTP 輸出。

21.47 iamf

沉浸式音訊模型和格式 (IAMF) 混合器。

IAMF 用於為串流和離線應用程式中的各種裝置提供沉浸式音訊內容。這些應用程式包括網路音訊串流、多播/廣播服務、檔案下載、遊戲、通訊、虛擬和擴增實境等。在這些應用程式中,音訊可以在各種裝置上播放,例如耳機、手機、平板電腦、電視、sound bar、家庭劇院系統和大螢幕。

此格式由開放媒體聯盟推廣和設計。

有關此格式的更多資訊,請參閱 https://aomedia.org/iamf/

21.48 ico

ICO 檔案混合器。

Microsoft 的圖示檔案格式 (ICO) 有一些嚴格的限制,應注意

  • 任何維度的大小都不能超過 256 像素
  • 只能儲存 BMP 和 PNG 影像
  • 如果使用 BMP 影像,則必須是以下像素格式之一
    BMP Bit Depth      FFmpeg Pixel Format
    1bit               pal8
    4bit               pal8
    8bit               pal8
    16bit              rgb555le
    24bit              bgr24
    32bit              bgra
    
  • 如果使用 BMP 影像,則必須使用 BITMAPINFOHEADER DIB 標頭
  • 如果使用 PNG 影像,則必須使用 rgba 像素格式

21.49 ilbc

網際網路低位元率編碼解碼器 (iLBC) 原始混合器。

它接受單個 'ilbc' 音訊串流。

21.50 image2, image2pipe

影像檔案混合器。

'image2' 混合器將視訊幀寫入影像檔案。

輸出檔名由模式指定,可用於產生順序編號的檔案序列。模式可以包含字串 "%d" 或 "%0Nd",此字串指定檔名中表示編號的字元位置。如果使用 "%0Nd" 形式,則每個檔名中表示數字的字串都以 0 填充到 N 位數。可以使用字串 "%%" 在模式中指定字面字元 '%'。

如果模式包含 "%d" 或 "%0Nd",則指定檔案列表中的第一個檔名將包含數字 1,所有後續數字都將是連續的。

模式可以包含後綴,用於自動確定要寫入的影像檔案的格式。

例如,模式 "img-%03d.bmp" 將指定 img-001.bmpimg-002.bmp、...、img-010.bmp 等形式的檔名序列。模式 "img%%-%d.jpg" 將指定 img%-1.jpgimg%-2.jpg、...、img%-10.jpg 等形式的檔名序列。

影像混合器支援 .Y.U.V 影像檔案格式。此格式很特殊,因為每個影像幀都由三個檔案組成,分別對應 YUV420P 組件。要讀取或寫入此影像檔案格式,請指定 ’.Y’ 檔案的名稱。混合器將根據需要自動開啟 ’.U’ 和 ’.V’ 檔案。

'image2pipe' 混合器接受與 'image2' 混合器相同的選項,但忽略模式驗證和展開,因為它應該寫入命令輸出而不是實際儲存的檔案。

21.50.1 選項

frame_pts bool

如果設定為 1,則使用封包 PTS(簡報時間戳記)展開檔名。預設值為 0。

start_number count

從指定的數字開始序列。預設值為 1。

update bool

如果設定為 1,則檔名將始終被解釋為僅是一個檔名,而不是模式,並且對應的檔案將持續被新影像覆蓋。預設值為 0。

strftime bool

如果設定為 1,則使用來自 strftime() 的日期和時間資訊展開檔名。預設值為 0。

atomic_writing bool

將輸出寫入暫存檔,寫入完成後,將暫存檔重新命名為目標檔名。預設為停用。

protocol_opts options_list

將協定選項設定為以冒號分隔的 key=value 參數列表。包含 : 特殊字元的值必須逸出。

21.50.2 範例

  • 使用 ffmpeg 建立 img-001.jpegimg-002.jpeg、... 檔案序列,每秒從輸入視訊中擷取一個影像
    ffmpeg -i in.avi -vsync cfr -r 1 -f image2 'img-%03d.jpeg'
    

    請注意,使用 ffmpeg 時,如果未使用 -f 選項指定格式,且輸出檔名指定影像檔案格式,則會自動選取 image2 混合器,因此先前的命令可以寫成

    ffmpeg -i in.avi -vsync cfr -r 1 'img-%03d.jpeg'
    

    另請注意,模式不一定必須包含 "%d" 或 "%0Nd",例如要從輸入視訊的開頭建立單個影像檔案 img.jpeg,您可以使用以下命令

    ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
    
  • strftime 選項允許您使用日期和時間資訊展開檔名。請查看 strftime() 函數的文件以了解語法。

    要從 strftime() "%Y-%m-%d_%H-%M-%S" 模式產生影像檔案,可以使用以下 ffmpeg 命令

    ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
    
  • 使用目前幀的 PTS 設定檔名
    ffmpeg -f v4l2 -r 1 -i /dev/video0 -copyts -f image2 -frame_pts true %d.jpg
    
  • 每秒將您的桌面內容直接發佈到 WebDAV 伺服器
    ffmpeg -f x11grab -framerate 1 -i :0.0 -q:v 6 -update 1 -protocol_opts method=PUT http://example.com/desktop.jpg
    

21.51 ircam

Berkeley / IRCAM / CARL Sound Filesystem (BICSF) 格式混合器。

Berkeley/IRCAM/CARL Sound Format 開發於 1980 年代,是幾個不同的早期聲音檔案格式和系統合併的結果,包括加州大學聖地牙哥分校電腦音訊研究實驗室 (CARL) 的 Gareth Loy 博士開發的 csound 系統、巴黎聲學/音樂研究所 (IRCAM) 的 Rob Gross 和 Dan Timis 開發的 IRCAM 聲音檔案系統,以及 Berkeley Fast Filesystem。

它最初是作為 Berkeley/IRCAM/CARL Sound Filesystem 的一部分開發的,這是一套旨在為在 Berkeley UNIX 下執行的音訊應用程式實作檔案系統的程式。它在學術音樂研究中心特別受歡迎,並在早期電腦生成作品的創作中多次使用。

此混合器接受包含 PCM 資料的單個音訊串流。

21.52 ivf

On2 IVF 混合器。

IVF 由 On2 Technologies(前身為 Duck Corporation)開發,用於儲存內部開發的編碼解碼器。

此混合器接受單個 'vp8'、'vp9' 或 'av1' 視訊串流。

21.53 jacosub

JACOsub 字幕格式混合器。

此混合器接受單個 'jacosub' 字幕串流。

有關此格式的更多資訊,請參閱 http://unicorn.us.com/jacosub/jscripts.html

21.54 kvag

Simon & Schuster Interactive VAG 混合器。

此自訂 VAG 容器用於一些 Simon & Schuster Interactive 遊戲,例如 "Real War" 和 "Real War: Rogue States"。

此混合器接受單個 'adpcm_ima_ssi' 音訊串流。

21.55 lc3

藍牙 SIG 低複雜度通訊編碼解碼器音訊 (LC3),或 ETSI TS 103 634 低複雜度通訊編碼解碼器 plus (LC3plus)。

此混合器接受單個 'lc3' 音訊串流。

21.56 lrc

LRC 歌詞檔案格式混合器。

LRC(LyRiCs 的縮寫)是一種電腦檔案格式,可將歌曲歌詞與音訊檔案(例如 MP3、Vorbis 或 MIDI)同步。

此混合器接受單個 'subrip' 或 'text' 字幕串流。

21.56.1 Metadata

以下中繼資料標籤將轉換為格式對應的中繼資料

title
album
artist
author
creator
encoder
encoder_version

如果未明確設定 'encoder_version',則會自動設定為 libavformat 版本。

21.57 matroska

Matroska 容器混合器。

此混合器實作 matroska 和 webm 容器規格。

21.57.1 Metadata

此混合器中可辨識的中繼資料設定為

title

設定提供給單個軌道的標題名稱。這將映射到作為附件寫入的串流的 FileDescription 元素。

language

以 Matroska 語言形式指定軌道的語言。

語言可以是 3 個字母的書目 ISO-639-2 (ISO 639-2/B) 形式(例如法語的 "fre"),或語言代碼與國家/地區代碼的組合,用於表示語言的特殊性(例如加拿大法語的 "fre-ca")。

stereo_mode

設定單個視訊軌道中兩個視圖的立體 3D 視訊佈局。

可辨識以下值

mono

視訊不是立體的

left_right

兩個視圖並排排列,左眼視圖在左側

bottom_top

兩個視圖以頂部到底部方向排列,左眼視圖在底部

top_bottom

兩個視圖以頂部至底部方向排列,左眼視圖在頂部

checkerboard_rl

每個視圖都以西洋棋盤交錯模式排列,左眼視圖優先

checkerboard_lr

每個視圖都以西洋棋盤交錯模式排列,右眼視圖優先

row_interleaved_rl

每個視圖都由基於行的交錯構成,右眼視圖為第一行

row_interleaved_lr

每個視圖都由基於行的交錯構成,左眼視圖為第一行

col_interleaved_rl

兩個視圖以基於列的交錯方式排列,右眼視圖為第一列

col_interleaved_lr

兩個視圖以基於列的交錯方式排列,左眼視圖為第一列

anaglyph_cyan_red

所有影格皆為可透過紅青濾鏡觀看的浮雕格式

right_left

兩個視圖並排排列,右眼視圖在左側

anaglyph_green_magenta

所有影格皆為可透過綠色-洋紅色濾鏡觀看的浮雕格式

block_lr

雙眼視圖交織在一個區塊中,左眼視圖優先

block_rl

雙眼視圖交織在一個區塊中,右眼視圖優先

例如,可以使用以下命令行建立 3D WebM 剪輯

ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm

21.57.2 選項

reserve_index_space size

預設情況下,此多工器會在檔案末尾寫入用於搜尋的索引(在 Matroska 術語中稱為 cues),因為它無法預先知道在檔案開頭為索引保留多少空間。然而,對於某些用例(例如,搜尋是可能的但速度很慢的串流),將索引放在檔案開頭會很有用。

如果此選項設定為非零值,多工器將在檔案標頭中保留 size 位元組的空間,然後嘗試在多工處理完成時將 cues 寫入其中。如果保留的空間不足,則不會寫入 Cues,檔案將會完成,並且寫入 trailer 將傳回錯誤。對於大多數用例,安全的 size 應約為每小時影片 50kB。

請注意,只有在輸出可搜尋時才會寫入 cues,如果輸出不可搜尋,則此選項無效。

cues_to_front bool

如果設定,多工器將透過在必要時移動主要資料,將索引寫入檔案開頭。這可以與 reserve_index_space 結合使用,在這種情況下,只有在最初保留的空間不足時才會移動資料。

如果輸出不可搜尋,則會忽略此選項。

cluster_size_limit size

在一個叢集中最多儲存提供的位元組量。

如果未指定,則限制會自動設定為合理的硬編碼固定值。

cluster_time_limit duration

在一個叢集中最多儲存提供的毫秒數。

如果未指定,則限制會自動設定為合理的硬編碼固定值。

dash bool

建立符合 WebM DASH 規格的 WebM 檔案。預設情況下,它設定為 false

dash_track_number index

DASH 串流的軌道編號。預設情況下,它設定為 1

live bool

寫入檔案時假設它是即時串流。預設情況下,它設定為 false

allow_raw_vfw bool

允許原始 VFW 模式。預設情況下,它設定為 false

flipped_raw_rgb bool

若設定為 true,則為原始 RGB 位圖儲存正高度,表示位圖以由下而上方式儲存。請注意,此選項不會翻轉位圖,必須事先手動完成,例如使用 ‘vflip’ 濾鏡。預設值為 false,表示位圖以由上而下方式儲存。

write_crc32 bool

在每個 Level 1 元素內寫入 CRC32 元素。預設情況下,它設定為 true。此選項在 WebM 中會被忽略。

default_mode mode

控制將如何設定輸出軌道的 FlagDefault。它會影響播放器預設應播放哪些軌道。預設模式為 ‘passthrough’。

infer

每個具有 disposition default 的軌道都將設定 FlagDefault。此外,對於每種類型的軌道(音訊、影片或字幕),如果不存在此類型的 disposition default 軌道,則此類型的第一個軌道將標記為預設(如果存在)。即使輸入源自缺少預設軌道概念的容器,這也能確保以合理的方式設定預設標誌。

infer_no_subs

此模式與 infer 相同,但如果不存在 disposition default 的字幕軌道,則不會將任何字幕軌道標記為預設。

passthrough

在此模式下,只有當對應串流的 disposition 中設定了 AV_DISPOSITION_DEFAULT 標誌時,才會設定 FlagDefault。

21.58 md5

MD5 測試格式。

這是 hash 多工器的一種變體。與該多工器不同,它預設使用 MD5 雜湊函數。

另請參閱 hashframemd5 多工器。

21.58.1 範例

  • 若要計算轉換為原始音訊和影片的輸入的 MD5 雜湊值,並將其儲存在檔案 out.md5
    ffmpeg -i INPUT -f md5 out.md5
    
  • 若要將 MD5 雜湊值列印到 stdout
    ffmpeg -i INPUT -f md5 -
    

21.59 microdvd

MicroDVD 字幕格式多工器。

此多工器接受單個 ‘microdvd’ 字幕串流。

21.60 mmf

合成音樂行動應用程式格式 (SMAF) 格式多工器。

SMAF 是 Yamaha 為行動電話和個人數位助理等可攜式電子裝置指定的音樂資料格式。

此多工器接受單個 ‘adpcm_yamaha’ 音訊串流。

21.61 mp3

MP3 多工器會寫入具有以下可選功能的原始 MP3 串流

  • 開頭的 ID3v2 metadata 標頭(預設啟用)。支援 2.3 版和 2.4 版,id3v2_version 私有選項控制使用哪個版本(3 或 4)。將 id3v2_version 設定為 0 會完全停用 ID3v2 標頭。

    多工器支援將附加圖片 (APIC 影格) 寫入 ID3v2 標頭。圖片以單個封包的影片串流形式提供給多工器。可以有任意數量的這些串流,每個串流將對應於單個 APIC 影格。串流 metadata 標籤 titlecomment 分別對應於 APIC descriptionpicture type。有關允許的圖片類型,請參閱 http://id3.org/id3v2.4.0-frames

    請注意,APIC 影格必須寫入在開頭,因此多工器將緩衝音訊影格,直到取得所有圖片。因此,建議盡快提供圖片,以避免過度緩衝。

  • ID3v2 標頭(如果存在)之後的 Xing/LAME 影格。預設情況下已啟用,但只有在輸出可搜尋時才會寫入。可以使用 write_xing 私有選項停用它。該影格包含各種可能對解碼器有用的資訊,例如音訊持續時間或編碼器延遲。
  • 檔案末尾的舊版 ID3v1 標籤(預設停用)。可以使用 write_id3v1 私有選項啟用它,但由於其功能非常有限,因此不建議使用。

範例

寫入具有 ID3v2.3 標頭和 ID3v1 頁尾的 mp3

ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3

若要將圖片附加到 mp3 檔案,請使用 map 選取音訊和圖片串流

ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3

寫入沒有任何額外功能的「乾淨」MP3

ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3

21.62 mpegts

MPEG 傳輸串流多工器。

此多工器實作 ISO 13818-1 和 ETSI EN 300 468 的一部分。

mpegts 多工器中可辨識的 metadata 設定為 service_providerservice_name。如果未設定,service_provider 的預設值為 ‘FFmpeg’,service_name 的預設值為 ‘Service01’。

21.62.1 選項

多工器選項包括

mpegts_transport_stream_id integer

設定 ‘transport_stream_id’。這會識別 DVB 中的轉發器。預設值為 0x0001

mpegts_original_network_id integer

設定 ‘original_network_id’。這是 DVB 中網路的唯一識別碼。其主要用途是透過路徑 ‘Original_Network_ID, Transport_Stream_ID’ 唯一識別服務。預設值為 0x0001

mpegts_service_id integer

設定 ‘service_id’,在 DVB 中也稱為程式。預設值為 0x0001

mpegts_service_type integer

設定程式 ‘service_type’。預設值為 digital_tv。接受以下選項

hex_value

ETSI 300 468 中定義的 0x010xff 之間的任何十六進位值。

digital_tv

數位電視服務。

digital_radio

數位廣播服務。

teletext

圖文電視服務。

advanced_codec_digital_radio

進階編碼解碼器數位廣播服務。

mpeg2_digital_hdtv

MPEG2 數位 HDTV 服務。

advanced_codec_digital_sdtv

進階編碼解碼器數位 SDTV 服務。

advanced_codec_digital_hdtv

進階編碼解碼器數位 HDTV 服務。

mpegts_pmt_start_pid integer

設定 PMT 的第一個 PID。預設值為 0x1000,最小值為 0x0020,最大值為 0x1ffa。此選項在 m2ts 模式下無效,在 m2ts 模式下,PMT PID 固定為 0x0100

mpegts_start_pid integer

設定基本串流的第一個 PID。預設值為 0x0100,最小值為 0x0020,最大值為 0x1ffa。此選項在 m2ts 模式下無效,在 m2ts 模式下,基本串流 PID 是固定的。

mpegts_m2ts_mode boolean

如果設定為 1,則啟用 m2ts 模式。預設值為 -1,這會停用 m2ts 模式。

muxrate integer

設定恆定多工速率。預設值為 VBR。

pes_payload_size integer

以位元組為單位設定最小 PES 封包酬載。預設值為 2930

mpegts_flags flags

設定 mpegts 標誌。接受以下選項

resend_headers

在寫入下一個封包之前,重新發送 PAT/PMT。

latm

針對 AAC 使用 LATM 封包化。

pat_pmt_at_frames

在每個影片影格重新發送 PAT 和 PMT。

system_b

符合 System B (DVB) 而非 System A (ATSC)。

initial_discontinuity

將每個串流的初始封包標記為不連續。

nit

發出 NIT 表格。

omit_rai

停用隨機存取指示器的寫入。

mpegts_copyts boolean

如果值設定為 1,則保留原始時間戳記。預設值為 -1,這會導致移動時間戳記,使其從 0 開始。

omit_video_pes_length boolean

省略影片封包的 PES 封包長度。預設值為 1 (true)。

pcr_period integer

覆寫預設 PCR 重新傳輸時間(以毫秒為單位)。預設值為 -1,這表示 PCR 間隔將自動決定:CBR 串流使用 20 毫秒,VBR 串流使用小於 100 毫秒的影格持續時間的最高倍數。

pat_period duration

PAT/PMT 表格之間的最大時間(以秒為單位)。預設值為 0.1

sdt_period duration

SDT 表格之間的最大時間(以秒為單位)。預設值為 0.5

nit_period duration

NIT 表格之間的最大時間(以秒為單位)。預設值為 0.5

tables_version integer

設定 PAT、PMT、SDT 和 NIT 版本(預設值 0,有效值為 0 到 31,包含端點)。此選項允許更新串流結構,以便標準用戶端可以偵測到變更。若要執行此操作,請重新開啟輸出 AVFormatContext(在 API 使用情況下)或重新啟動 ffmpeg 執行個體,循環變更 tables_version

ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...
ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...

21.62.2 範例

ffmpeg -i file.mpg -c copy \
     -mpegts_original_network_id 0x1122 \
     -mpegts_transport_stream_id 0x3344 \
     -mpegts_service_id 0x5566 \
     -mpegts_pmt_start_pid 0x1500 \
     -mpegts_start_pid 0x150 \
     -metadata service_provider="Some provider" \
     -metadata service_name="Some Channel" \
     out.ts

21.63 mxf, mxf_d10, mxf_opatom

MXF 多工器。

21.63.1 選項

多工器選項包括

store_user_comments bool

設定是否應儲存使用者註解(如果可用),或永不儲存。IRT D-10 不允許使用者註解。因此,mxf 和 mxf_opatom 的預設值是寫入註解,但 mxf_d10 的預設值則否

21.64 null

Null 多工器。

此多工器不會產生任何輸出檔案,它主要用於測試或基準測試目的。

例如,若要使用 ffmpeg 進行基準測試解碼,您可以使用以下命令

ffmpeg -benchmark -i INPUT -f null out.null

請注意,上述命令不會讀取或寫入 out.null 檔案,但 ffmpeg 語法要求指定輸出檔案。

或者,您可以將命令寫為

ffmpeg -benchmark -i INPUT -f null -

21.65 nut

-syncpoints flags

變更 nut 中的同步點用法

default 使用正常的低額外負荷搜尋輔助。
none 完全不使用同步點,減少額外負荷,但使串流不可搜尋;

不建議使用此選項,因為產生的檔案非常容易損壞,且無法搜尋。此外,一般而言,同步點的額外負荷可忽略不計。請注意,-write_index 0 可用於停用所有成長中的資料表,從而允許以有限的記憶體和沒有這些缺點的方式多工處理無止盡的串流。

timestamped 使用壁鐘欄位擴充同步點。

nonetimestamped 標誌是實驗性的。

-write_index bool

在結尾寫入索引,預設為寫入索引。

ffmpeg -i INPUT -f_strict experimental -syncpoints none - | processor

21.66 ogg

Ogg 容器多工器。

-page_duration duration

偏好的頁面持續時間,以微秒為單位。多工器將嘗試建立大約 duration 微秒長的頁面。這允許使用者在搜尋粒度和容器額外負荷之間做出權衡。預設值為 1 秒。值 0 將填滿所有區段,使頁面盡可能大。值 1 在大多數情況下將有效使用每個頁面 1 個封包,從而在額外容器額外負荷的代價下提供小的搜尋粒度。

-serial_offset value

用於設定串流序號的序號值。將其設定為不同且足夠大的值可確保產生的 ogg 檔案可以安全地鏈結。

21.67 rcwt

RCWT(具有時間的原始字幕)是 ccextractor 原生的格式,ccextractor 是一種常用於處理 608/708 隱藏式字幕 (CC) 來源的開放原始碼工具。它可以用於封存原始擷取的 CC 位元串流,並產生用於稍後處理或轉換的來源檔案。此格式允許 ccextractor 和 FFmpeg 之間的互通性,易於剖析,並且可用於建立 CC 呈現的備份。

此多工器實作截至 2024 年 3 月的規格,該規格自 2014 年 4 月以來一直穩定且未變更。

此多工器與 ccextractor 多工處理 RCWT 的方式會有一些細微差別。到目前為止,尚未觀察到使用 ccextractor 處理輸出時出現任何相容性問題,但結果可能因情況而異,並且輸出不會是位元精確的相符項。

RCWT 的免費規格可以在此處找到:https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT

21.67.1 範例

  • 使用 lavfi 將隱藏式字幕擷取到 RCWT
    ffmpeg -f lavfi -i "movie=INPUT.mkv[out+subcc]" -map 0:s:0 -c:s copy -f rcwt CC.rcwt.bin
    

21.68 segment, stream_segment, ssegment

基本串流分段器。

此多工器將串流輸出到許多持續時間幾乎固定的個別檔案。輸出檔案名稱模式可以以類似於 image2 的方式設定,或者如果啟用 strftime 選項,則可以使用 strftime 範本。

stream_segment 是用於寫入串流輸出格式(即,不需要全域標頭)的多工器的變體,建議用於輸出到 MPEG 傳輸串流區段等。ssegmentstream_segment 的較短別名。

每個區段都以選取參考串流的關鍵影格開始,該參考串流透過 reference_stream 選項設定。

請注意,如果您想要對影片檔案進行精確分割,則需要使輸入關鍵影格對應於分段器預期的確切分割時間,否則區段多工器將使用在指定開始時間之後找到的下一個關鍵影格來開始新區段。

區段多工器最適用於單一恆定影格速率影片。

您可以選擇性地產生已建立區段的清單,方法是設定選項 segment_list。清單類型由 segment_list_type 選項指定。區段清單中的項目檔案名稱預設設定為對應區段檔案的基名。

另請參閱 hls 多工器,它為 HLS 分割提供更具體的實作。

21.68.1 選項

區段多工器支援以下選項

increment_tc 1|0

如果設定為 1,則在每個區段之間遞增時間碼。如果選取此選項,則輸入需要在第一個影片串流中具有時間碼。預設值為 0

reference_stream specifier

設定參考串流,如同字串 specifier 所指定。如果 specifier 設定為 auto,則會自動選擇參考串流。否則,它必須是一個串流指定符(請參閱 ffmpeg 手冊中的「串流指定符」章節),以指定參考串流。預設值為 auto

segment_format format

覆寫內部容器格式,預設情況下會由檔案名稱副檔名推測。

segment_format_options options_list

設定輸出格式選項,使用以冒號分隔的鍵=值參數列表。包含 : 特殊字元的值必須進行跳脫字元處理。

segment_list name

同時產生名為 name 的列表檔案。如果未指定,則不會產生列表檔案。

segment_list_flags flags

設定影響分段列表產生的旗標。

目前支援以下旗標

cache

允許快取(僅影響 M3U8 列表檔案)。

live

允許產生適合直播的檔案。

segment_list_size size

更新列表檔案,使其最多包含 size 個分段。如果為 0,列表檔案將包含所有分段。預設值為 0。

segment_list_entry_prefix prefix

在每個條目前面加上 prefix。用於產生絕對路徑很有用。預設情況下,不套用任何前綴。

segment_list_type type

選擇列表格式。

可辨識以下值

flat

為建立的分段產生平面列表,每行一個分段。

csv, ext

為建立的分段產生列表,每行一個分段,每行符合格式(逗號分隔值)

segment_filename,segment_start_time,segment_end_time

segment_filename 是 muxer 根據提供的模式產生的輸出檔案名稱。如果需要,會套用 CSV 跳脫字元處理(根據 RFC4180)。

segment_start_timesegment_end_time 指定分段的開始和結束時間,以秒為單位表示。

副檔名為 ".csv"".ext" 的列表檔案將自動選擇此格式。

ext’ 已被棄用,建議使用 ‘csv’。

ffconcat

為建立的分段產生 ffconcat 檔案。可以使用 FFmpeg concat 解多工器讀取產生的檔案。

副檔名為 ".ffcat"".ffconcat" 的列表檔案將自動選擇此格式。

m3u8

產生擴展的 M3U8 檔案,版本 3,符合 http://tools.ietf.org/id/draft-pantos-http-live-streaming 規範。

副檔名為 ".m3u8" 的列表檔案將自動選擇此格式。

如果未指定,則會從列表檔案名稱副檔名推測類型。

segment_time time

設定分段持續時間為 time,該值必須是持續時間規格。預設值為 "2"。另請參閱 segment_times 選項。

請注意,除非您在給定時間強制參考串流關鍵影格,否則分割可能不精確。請參閱介紹性注意事項和以下範例。

min_seg_duration time

設定最小分段持續時間為 time,該值必須是持續時間規格。這可以防止 muxer 在低於此值的持續時間結束分段。僅在 segment_time 下有效。預設值為 "0"。

segment_atclocktime 1|0

如果設定為 "1",則從 00:00 開始以規律的時鐘時間間隔分割。在 segment_time 中指定的 time 值用於設定分割間隔的長度。

例如,如果 segment_time 設定為 "900",則可以在 12:00、12:15、12:30 等時間建立檔案。

預設值為 "0"。

segment_clocktime_offset duration

使用 segment_atclocktime 時,使用指定的持續時間延遲分段分割時間。

例如,如果 segment_time 設定為 "900",segment_clocktime_offset 設定為 "300",則可以在 12:05、12:20、12:35 等時間建立檔案。

預設值為 "0"。

segment_clocktime_wrap_duration duration

強制分段器僅在封包在分段時鐘時間後指定持續時間內到達 muxer 時才開始新的分段。這樣可以使分段器更能抵抗本地時間向後跳躍,例如閏秒或從日光節約時間過渡到標準時間。

預設值是最大可能的持續時間,這意味著無論自上次時鐘時間以來經過的時間如何,都開始一個新的分段。

segment_time_delta delta

指定在選擇分段開始時間時的精確度時間,以持續時間規格表示。預設值為 "0"。

當指定 delta 時,如果關鍵影格的 PTS 滿足關係式,則關鍵影格將開始新的分段

PTS >= start_time - time_delta

此選項在分割影片內容時很有用,影片內容總是會在 GOP 邊界分割,以防在指定的分割時間之前找到關鍵影格。

特別是,可以與 ffmpeg 選項 force_key_frames 結合使用。由 force_key_frames 指定的關鍵影格時間可能由於捨入問題而無法精確設定,結果可能導致關鍵影格時間設定在指定時間之前。對於恆定幀率影片,1/(2*frame_rate) 的值應解決指定時間與 force_key_frames 設定時間之間的最壞情況不匹配。

segment_times times

指定分割點列表。times 包含逗號分隔的持續時間規格列表,按遞增順序排列。另請參閱 segment_time 選項。

segment_frames frames

指定分割影片影格編號列表。frames 包含逗號分隔的整數列表,按遞增順序排列。

此選項指定在找到參考串流關鍵影格且影格的序號(從 0 開始)大於或等於列表中的下一個值時,開始新的分段。

segment_wrap limit

分段索引達到 limit 時環繞。

segment_start_number number

設定第一個分段的序號。預設值為 0

strftime 1|0

使用 strftime 函數定義要寫入的新分段的名稱。如果選擇此項,則輸出分段名稱必須包含 strftime 函數範本。預設值為 0

break_non_keyframes 1|0

如果啟用,則允許分段在關鍵影格以外的影格上開始。當關鍵影格之間的時間不一致時,這可以改善某些播放器的行為,但可能會使其他播放器的情況更糟,並可能在搜尋期間造成一些異常。預設值為 0

reset_timestamps 1|0

在每個分段的開頭重設時間戳記,以便每個分段都將以接近零的時間戳記開始。旨在簡化產生分段的播放。可能不適用於某些 muxer/codec 組合。預設設定為 0

initial_offset offset

指定要套用於輸出封包時間戳記的時間戳記偏移量。參數必須是持續時間規格,預設值為 0。

write_empty_segments 1|0

如果啟用,如果在分段通常跨越的期間內沒有封包,則寫入一個空分段。否則,分段將被下一個寫入的封包填滿。預設值為 0

請務必在編碼時要求封閉式 GOP,並將 GOP 大小設定為符合您的片段時間限制。

21.68.2 範例

  • 將檔案 in.mkv 的內容重新封裝為分段列表 out-000.nutout-001.nut 等,並將產生的分段列表寫入 out.list
    ffmpeg -i in.mkv -codec hevc -flags +cgop -g 60 -map 0 -f segment -segment_list out.list out%03d.nut
    
  • 分割輸入並為輸出分段設定輸出格式選項
    ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4
    
  • 根據 segment_times 選項指定的分割點分割輸入檔案
    ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
    
  • 使用 ffmpeg force_key_frames 選項在輸入中指定的位置強制關鍵影格,並結合分段選項 segment_time_delta 以考慮在設定關鍵影格時間時可能進行的捨入。
    ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
    -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
    

    為了在輸入檔案上強制關鍵影格,需要轉碼。

  • 透過根據 segment_frames 選項指定的影格編號序列分割輸入檔案來分割輸入檔案
    ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
    
  • 使用 libx264aac 編碼器將 in.mkv 轉換為 TS 分段
    ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a aac -f ssegment -segment_list out.list out%03d.ts
    
  • 分割輸入檔案,並建立 M3U8 即時播放列表(可用作即時 HLS 來源)
    ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
    -segment_list_flags +live -segment_time 10 out%03d.mkv
    

21.69 smoothstreaming

Smooth Streaming muxer 產生一組檔案(Manifest、chunks),適用於使用傳統網路伺服器提供服務。

window_size

指定資訊清單中保留的片段數量。預設值為 0(保留全部)。

extra_window_size

指定在從磁碟移除之前,資訊清單外部保留的片段數量。預設值為 5。

lookahead_count

指定前瞻片段的數量。預設值為 2。

min_frag_duration

指定最小片段持續時間(以微秒為單位)。預設值為 5000000。

remove_at_exit

指定完成時是否移除所有片段。預設值為 0(不移除)。

21.70 streamhash

每個串流雜湊測試格式。

此 muxer 計算並列印每個輸入影格的密碼編譯雜湊,以每個串流為基礎。這可以用於相等性檢查,而無需進行完整的二進制比較。

預設情況下,在計算 hash 之前,音訊影格會轉換為 signed 16-bit raw 音訊,視訊影格會轉換為 raw 視訊,但也可以使用顯式轉換為其他編碼器的輸出。時間戳記會被忽略。它預設使用 SHA-256 加密 hash 函數,但也支援多種其他演算法。

muxer 的輸出由每個串流一行組成,格式為:streamindex,streamtype,algo=hash,其中 streamindex 是對應串流的索引,streamtype 是指示串流類型的單個字元,algo 是表示所用雜湊函數的短字串,hash 是表示計算出的雜湊值的十六進制數字。

hash algorithm

使用字串 algorithm 指定的加密 hash 函數。支援的值包括 MD5murmur3RIPEMD128RIPEMD160RIPEMD256RIPEMD320SHA160SHA224SHA256 (預設值)、SHA512/224SHA512/256SHA384SHA512CRC32adler32

21.70.1 範例

若要計算輸入 (已轉換為 raw 音訊和視訊) 的 SHA-256 hash,並將其儲存在 out.sha256 檔案中

ffmpeg -i INPUT -f streamhash out.sha256

若要將 MD5 hash 印出到 stdout,請使用以下命令

ffmpeg -i INPUT -f streamhash -hash md5 -

另請參閱 hashframehash muxer。

21.71 tee

tee muxer 可用於將相同資料寫入多個輸出,例如檔案或串流。例如,它可用於透過網路串流視訊並同時將其儲存到磁碟。

這與為 ffmpeg 命令列工具指定多個輸出不同。使用 tee muxer,音訊和視訊資料將僅編碼一次。使用傳統的多個輸出,會並行啟動多個編碼操作,這可能是一個非常昂貴的過程。當直接使用 libavformat API 時,tee muxer 沒有用處,因為那時可以將相同的封包直接饋送到多個 muxer。

由於 tee muxer 不代表任何特定的輸出格式,因此 ffmpeg 無法自動選擇輸出串流。因此,所有預定用於輸出的串流都必須使用 -map 指定。請參閱以下範例。

某些編碼器可能需要根據輸出格式使用不同的選項;tee muxer 無法自動偵測到這一點,因此需要明確指定這些選項。主要範例是 global_header 旗標。

從屬輸出在提供給 muxer 的檔案名稱中指定,以 '|' 分隔。如果任何從屬名稱包含 '|' 分隔符號、前導或尾隨空格或任何特殊字元,則必須對其進行跳脫字元處理(請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「引號和跳脫字元處理」章節)。

21.71.1 選項

use_fifo bool

如果設定為 1,則從屬輸出將使用 fifo muxer 在單獨的執行緒中處理。這允許補償輸出的不同速度/延遲/可靠性,並設定透明恢復。預設情況下,此功能已關閉。

fifo_options

傳遞給 fifo 偽 muxer 實例的選項。請參閱 fifo

可以為每個從屬 muxer 指定 muxer 選項,方法是在方括號之間將其作為以 ':' 分隔的 key=value 對列表前置。如果選項值包含特殊字元或 ':' 分隔符號,則必須對其進行跳脫字元處理;請注意,這是第二級跳脫字元處理。

也識別以下特殊選項

f

指定格式名稱。如果無法從輸出 URL 推測,則為必要選項。

bsfs[/spec]

指定要套用於指定輸出的位元串流過濾器列表。

可以指定給定位元串流過濾器應用於哪些串流,方法是將串流指定符附加到以 / 分隔的選項。 spec 必須是串流指定符(請參閱 格式串流指定符)。

如果未指定串流指定符,則位元串流過濾器將應用於輸出中的所有串流。如果輸出包含位元串流過濾器無法套用的串流,則會導致輸出操作失敗,例如將 h264_mp4toannexb 應用於包含音訊串流的輸出。

位元串流過濾器的選項必須以 opt=value 的形式指定。

可以指定多個位元串流過濾器,以 "," 分隔。

use_fifo bool

這允許覆寫個別從屬 muxer 的 tee muxer use_fifo 選項。

fifo_options

這允許覆寫個別從屬 muxer 的 tee muxer fifo_options。請參閱 fifo

select

選擇應對應到從屬輸出的串流,由串流指定符指定。如果未指定,則預設為所有對應的串流。如果輸出格式不接受所有對應的串流,則會導致輸出操作失敗。

您可以使用多個以逗號 (,) 分隔的串流指定符,例如:a:0,v

onfail

指定輸出失敗時的行為。可以設定為 abort(預設值)或 ignore。如果此從屬輸出失敗,abort 將導致整個程序失敗。 ignore 將忽略此輸出的失敗,因此其他輸出將繼續而不受影響。

21.71.2 範例

  • 編碼某些內容,並將其封存到 WebM 檔案中,並透過 UDP 以 MPEG-TS 串流傳輸
    ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
      "archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
    
  • 如上,但即使輸出到本機檔案失敗(例如本機磁碟已滿),也繼續串流傳輸
    ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
      "[onfail=ignore]archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
    
  • 使用 ffmpeg 編碼輸入,並將輸出傳送到三個不同的目的地。 dump_extra 位元串流過濾器用於將額外資料資訊新增到所有輸出視訊關鍵影格封包,這是 MPEG-TS 格式的要求。 select 選項應用於 out.aac,以使其僅包含音訊封包。
    ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac
           -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac"
    
  • 如上所述,但音訊輸出僅選擇串流 a:1。 請注意,必須執行第二層跳脫字元,因為 ":" 是用於分隔選項的特殊字元。
    ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac
           -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
    

21.72 webm_chunk

WebM Live Chunk Muxer(WebM 即時區塊混合器)。

此混合器將 WebM 標頭和區塊寫出為個別檔案,客戶端可以透過 DASH 使用這些檔案來支援 WebM 即時串流。

21.72.1 選項

此混合器支援以下選項

chunk_start_index(區塊起始索引)

第一個區塊的索引(預設為 0)。

header(標頭)

將寫入初始化資料的標頭檔名。

audio_chunk_duration(音訊區塊持續時間)

每個音訊區塊的持續時間,以毫秒為單位(預設為 5000)。

21.72.2 範例

ffmpeg -f v4l2 -i /dev/video0 \
       -f alsa -i hw:0 \
       -map 0:0 \
       -c:v libvpx-vp9 \
       -s 640x360 -keyint_min 30 -g 30 \
       -f webm_chunk \
       -header webm_live_video_360.hdr \
       -chunk_start_index 1 \
       webm_live_video_360_%d.chk \
       -map 1:0 \
       -c:a libvorbis \
       -b:a 128k \
       -f webm_chunk \
       -header webm_live_audio_128.hdr \
       -chunk_start_index 1 \
       -audio_chunk_duration 1000 \
       webm_live_audio_128_%d.chk

21.73 webm_dash_manifest

WebM DASH Manifest muxer(WebM DASH Manifest 混合器)。

此混合器實作 WebM DASH Manifest 規範以產生 DASH manifest XML。 它也支援為 DASH 即時串流產生 manifest。

如需更多資訊,請參閱

21.73.1 選項

此混合器支援以下選項

adaptation_sets(適應集)

此選項具有以下語法:「id=x,streams=a,b,c id=y,streams=d,e」,其中 x 和 y 是適應集的唯一識別符,而 a、b、c、d 和 e 是對應音訊和視訊串流的索引。 可以使用此選項新增任意數量的適應集。

live(即時)

設定為 1 以建立即時串流 DASH Manifest。 預設值:0。

chunk_start_index(區塊起始索引)

第一個區塊的起始索引。 這將置於 manifest 中 ‘SegmentTemplate’ 元素的 ‘startNumber’ 屬性中。 預設值:0。

chunk_duration_ms(區塊持續時間毫秒)

每個區塊的持續時間,以毫秒為單位。 這將置於 manifest 中 ‘SegmentTemplate’ 元素的 ‘duration’ 屬性中。 預設值:1000。

utc_timing_url(UTC 時間網址)

將傳回 ISO 格式 UTC 時間戳記的頁面網址。 這將置於 manifest 中 ‘UTCTiming’ 元素的 ‘value’ 屬性中。 預設值:無。

time_shift_buffer_depth(時間偏移緩衝區深度)

保證任何 Representation 可用的最小時間(以秒為單位)偏移緩衝區。 這將置於 ‘MPD’ 元素的 ‘timeShiftBufferDepth’ 屬性中。 預設值:60。

minimum_update_period(最小更新週期)

manifest 的最小更新週期(以秒為單位)。 這將置於 ‘MPD’ 元素的 ‘minimumUpdatePeriod’ 屬性中。 預設值:0。

21.73.2 範例

ffmpeg -f webm_dash_manifest -i video1.webm \
       -f webm_dash_manifest -i video2.webm \
       -f webm_dash_manifest -i audio1.webm \
       -f webm_dash_manifest -i audio2.webm \
       -map 0 -map 1 -map 2 -map 3 \
       -c copy \
       -f webm_dash_manifest \
       -adaptation_sets "id=0,streams=0,1 id=1,streams=2,3" \
       manifest.xml

22 Metadata

FFmpeg 能夠將中繼資料從媒體檔案傾印到簡單的 UTF-8 編碼 INI 類型的文字檔中,然後使用中繼資料混合器/解混合器將其載回。

檔案格式如下

  1. 檔案由標頭和許多中繼資料標籤組成,這些標籤分為多個區段,每個區段各佔一行。
  2. 標頭是 ‘;FFMETADATA’ 字串,後跟版本號碼(現在為 1)。
  3. 中繼資料標籤的格式為 ‘key=value
  4. 緊接在標頭之後的是全域中繼資料
  5. 在全域中繼資料之後,可能會有包含每個串流/每個章節中繼資料的區段。
  6. 區段以大寫區段名稱(即 STREAM 或 CHAPTER)括在方括號 (‘[’、‘]’) 中開始,並以next區段或檔案結尾結束。
  7. 在章節區段的開頭,可能會有用於開始/結束值的選用 timebase。 它必須採用 ‘TIMEBASE=num/den’ 格式,其中 numden 是整數。 如果 timebase 遺失,則假設開始/結束時間以奈秒為單位。

    接下來,章節區段必須包含章節開始和結束時間,格式為 ‘START=num’、‘END=num’,其中 num 是正整數。

  8. 空白行和以 ‘;’ 或 ‘#’ 開頭的行會被忽略。
  9. 包含特殊字元 (‘=’、‘;’、‘#’、‘\’ 和換行符號) 的中繼資料鍵或值必須使用反斜線 ‘\’ 跳脫字元。
  10. 請注意,中繼資料中的空格 (例如 ‘foo = bar’) 會被視為標籤的一部分(在上面的範例中,鍵為 ‘foo ’,值為 ‘ bar’)。

ffmetadata 檔案可能如下所示

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

透過使用 ffmetadata 混合器和解混合器,可以從輸入檔案中提取中繼資料到 ffmetadata 檔案,然後使用編輯過的 ffmetadata 檔案將檔案轉碼為輸出檔案。

使用 ffmpeg 提取 ffmetadata 檔案的步驟如下

ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE

從 FFMETADATAFILE 檔案重新插入編輯過的中繼資料資訊可以透過以下方式完成

ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT

23 協定選項

libavformat 程式庫提供了一些通用的全域選項,這些選項可以在所有協定上設定。 此外,每個協定都可能支援所謂的私有選項,這些選項是該元件特有的。

選項可以透過在 FFmpeg 工具中指定 -option value,或透過在 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 進行程式化使用來設定。

支援的選項列表如下

protocol_whitelist list (輸入)

設定以「,」分隔的允許協定清單。「ALL」符合所有協定。 以「-」為首碼的協定會停用。 預設情況下允許所有協定,但另一個協定(巢狀協定)使用的協定會限制為每個協定子集。

24 協定

協定是 FFmpeg 中的已配置元素,可讓您存取需要特定協定的資源。

當您配置 FFmpeg 建置時,預設會啟用所有支援的協定。 您可以使用配置選項「–list-protocols」列出所有可用的協定。

您可以使用配置選項「–disable-protocols」停用所有協定,並使用選項「–enable-protocol=PROTOCOL」選擇性地啟用協定,或者您可以使用選項「–disable-protocol=PROTOCOL」停用特定協定。

ff* 工具的選項「-protocols」將顯示支援的協定清單。

所有協定都接受以下選項

rw_timeout

等待(網路)讀取/寫入操作完成的最長時間,以微秒為單位。

以下是目前可用協定的描述。

24.1 amqp

進階訊息佇列協定 (AMQP) 0-9-1 版是一種基於代理程式的發佈-訂閱通訊協定。

FFmpeg 必須使用 –enable-librabbitmq 編譯才能支援 AMQP。 也必須執行單獨的 AMQP 代理程式。 RabbitMQ 是一個範例開放原始碼 AMQP 代理程式。

啟動代理程式後,FFmpeg 用戶端可以使用以下命令將資料串流傳輸到代理程式

ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]

其中 hostname 和 port(預設為 5672)是代理程式的位址。 用戶端也可以設定使用者/密碼以進行驗證。 這兩個欄位的預設值都是「guest」。 代理程式上的虛擬主機名稱可以使用 vhost 設定。 預設值為「/」。

多個訂閱者可以使用以下命令從代理程式串流傳輸

ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]

在 RabbitMQ 中,發佈到代理程式的所有資料都會流經特定的交換器,而且每個訂閱用戶端都有一個指定的佇列/緩衝區。 當封包到達交換器時,可能會根據 exchange 和 routing_key 欄位將其複製到用戶端的佇列。

支援以下選項

exchange(交換器)

設定要在代理程式上使用的交換器。 RabbitMQ 有幾個預先定義的交換器:「amq.direct」是預設交換器,其中發佈者和訂閱者必須具有相符的 routing_key;「amq.fanout」與廣播操作相同(即,資料會轉發到 fanout 交換器上的所有佇列,而與 routing_key 無關);「amq.topic」與「amq.direct」類似,但允許更複雜的模式比對(請參閱 RabbitMQ 文件)。

routing_key(路由金鑰)

設定路由金鑰。 預設值為「amqp」。 路由金鑰用於「amq.direct」和「amq.topic」交換器,以決定是否將封包寫入訂閱者的佇列。

pkt_size(封包大小)

傳送/接收到代理程式的每個封包的最大大小。 預設值為 131072。 最小值為 4096,最大值為任何大值(可以用 int 表示)。 接收封包時,這會在 FFmpeg 中設定內部緩衝區大小。 它應該等於或大於發佈到代理程式的封包大小。 否則,接收到的訊息可能會被截斷,導致解碼錯誤。

connection_timeout(連線逾時)

初始連線到代理程式期間的逾時時間,以秒為單位。 預設值為 rw_timeout,如果未設定 rw_timeout,則預設值為 5 秒。

delivery_mode mode (傳遞模式 模式

設定傳送到代理程式的每個訊息的傳遞模式。 接受以下值

persistent’(持久)

傳遞模式設定為「persistent」(2)。 這是預設值。 訊息可能會根據其設定寫入代理程式的磁碟。

non-persistent’(非持久)

傳遞模式設定為「non-persistent」(1)。 訊息將保留在代理程式的記憶體中,除非代理程式處於記憶體壓力之下。

24.2 async

輸入串流的非同步資料填寫包裝函式。

在背景執行緒中填寫資料,以將 I/O 操作與解混合執行緒分離。

async:URL
async:http://host/resource
async:cache:http://host/resource

24.3 bluray

讀取 BluRay 播放清單。

接受的選項為

angle(角度)

BluRay 角度

chapter(章節)

開始章節 (1...N)

playlist(播放清單)

要讀取的播放清單 (BDMV/PLAYLIST/?????.mpls)

範例

從掛載到 /mnt/bluray 的 BluRay 讀取最長的播放清單

bluray:/mnt/bluray

從掛載到 /mnt/bluray 的 BluRay 讀取播放清單 4 的角度 2,從章節 2 開始

-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray

24.4 cache

輸入串流的快取包裝函式。

將輸入串流快取到暫存檔。 它為即時串流帶來搜尋功能。

接受的選項為

read_ahead_limit(預讀限制)

在不支援搜尋時可能預讀的位元組數。 範圍為 -1 到 INT_MAX。 -1 表示無限制。 預設值為 65536。

URL 語法為

cache:URL

24.5 concat

實體串連協定。

依序從多個資源讀取和搜尋,如同它們是唯一的資源一樣。

此協定接受的 URL 具有以下語法

concat:URL1|URL2|...|URLN

其中 URL1URL2、...、URLN 是要串連的資源的 URL,每個 URL 都可能指定不同的協定。

例如,若要使用 ffplay 讀取檔案序列 split1.mpegsplit2.mpegsplit3.mpeg,請使用以下命令

ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg

請注意,您可能需要跳脫字元「|」,它對許多 shell 來說是特殊字元。

24.6 concatf

使用換行符號分隔的資源清單的實體串連協定。

依序從多個資源讀取和搜尋,如同它們是唯一的資源一樣。

此協定接受的 URL 具有以下語法

concatf:URL

其中 URL 是包含換行符號分隔的要串連資源清單的 URL,每個資源都可能指定不同的協定。 特殊字元必須使用反斜線或單引號跳脫字元。 請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「引號和跳脫字元」章節。

例如,若要使用 ffplay 讀取檔案 split.txt 中單獨行中列出的檔案序列 split1.mpegsplit2.mpegsplit3.mpeg,請使用以下命令

ffplay concatf:split.txt

其中 split.txt 包含以下行

split1.mpeg
split2.mpeg
split3.mpeg

24.7 crypto

AES 加密串流讀取協定。

接受的選項為

key(金鑰)

從給定的十六進位表示法設定 AES 解密金鑰二進位區塊。

iv(初始向量)

從給定的十六進位表示法設定 AES 解密初始化向量二進位區塊。

接受的 URL 格式

crypto:URL
crypto+URL

24.8 data

URI 中的內嵌資料。 請參閱 http://en.wikipedia.org/wiki/Data_URI_scheme

例如,若要使用 ffmpeg 轉換內嵌的 GIF 檔案

ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png

24.9 fd

檔案描述符存取協定。

接受的語法為

fd: -fd file_descriptor

如果未指定 fd,預設情況下,stdout 檔案描述符將用於寫入,stdin 用於讀取。 與 pipe 協定不同,fd 協定如果對應於常規檔案,則支援搜尋。 fd 協定不支援透過 URL 傳遞檔案描述符以確保安全性。

此協定接受以下選項

blocksize(區塊大小)

設定 I/O 操作最大區塊大小,以位元組為單位。 預設值為 INT_MAX,這會導致不限制請求的區塊大小。 合理地降低此值可以改善使用者終止請求的反應時間,如果資料傳輸速度緩慢,則此值很有價值。

fd

設定檔案描述符。

24.10 file

檔案存取協定。

從檔案讀取或寫入檔案。

檔案 URL 可以具有以下格式

file:filename

其中 filename 是要讀取的檔案路徑。

不具有協定首碼的 URL 將被假定為檔案 URL。 根據建置,看起來像以磁碟機代號開頭的 Windows 路徑的 URL 也將被假定為檔案 URL(在類 Unix 系統的建置中通常不是這種情況)。

例如,若要使用 ffmpeg 從檔案 input.mpeg 讀取,請使用以下命令

ffmpeg -i file:input.mpeg output.mpeg

此協定接受以下選項

truncate(截斷)

如果設定為 1,則在寫入時截斷現有檔案。 值為 0 可防止截斷。 預設值為 1。

blocksize(區塊大小)

設定 I/O 操作最大區塊大小,以位元組為單位。 預設值為 INT_MAX,這會導致不限制請求的區塊大小。 合理地降低此值可以改善使用者終止請求的反應時間,這對於慢速媒體上的檔案很有價值。

follow(跟隨)

如果設定為 1,協定將在檔案結尾重試讀取,允許讀取仍在寫入的檔案。 為了使其終止,您需要使用 rw_timeout 選項,或使用中斷回呼(對於 API 使用者)。

seekable(可搜尋)

控制是否在檔案上宣告可搜尋性。 0 表示不可搜尋,-1 表示自動(常規檔案可搜尋,具名管道不可搜尋)。

許多解混合器以不同的方式處理可搜尋和不可搜尋的資源,覆寫此項可能會加快開啟某些檔案的速度,但會以失去某些功能(例如,精確搜尋)為代價。

24.11 ftp

FTP(檔案傳輸協定)。

使用 FTP 協定從遠端資源讀取或寫入遠端資源。

需要以下語法。

ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此協定接受以下選項。

timeout(逾時)

設定基礎低階操作使用的 socket I/O 操作的逾時時間,以微秒為單位。 預設情況下,它設定為 -1,這表示未指定逾時時間。

ftp-user(FTP 使用者)

設定要用於向 FTP 伺服器驗證身分的使用者。 這會被 FTP URL 中的使用者覆寫。

ftp-password(FTP 密碼)

設定要用於向 FTP 伺服器驗證身分的密碼。 這會被 FTP URL 中的密碼覆寫,如果未設定使用者,則會被 ftp-anonymous-password 覆寫。

ftp-anonymous-password(FTP 匿名密碼)

以匿名使用者身分登入時使用的密碼。 通常應使用電子郵件地址。

ftp-write-seekable(FTP 寫入可搜尋)

控制編碼期間連線的可搜尋性。 如果設定為 1,則資源應為可搜尋的;如果設定為 0,則假定為不可搜尋的。 預設值為 0。

注意:協定可以用作輸出,但不建議這樣做,除非採取特殊措施(測試、自訂伺服器配置等)。 不同的 FTP 伺服器在搜尋操作期間的行為方式不同。 ff* 工具可能會因伺服器限制而產生不完整的內容。

24.12 gopher

Gopher 協定。

24.13 gophers

Gophers 協定。

具有 TLS 封裝的 Gopher 協定。

24.14 hls

將符合 Apple HTTP Live Streaming 標準的分段串流讀取為統一的串流。 描述分段的 M3U8 播放清單可以是遠端 HTTP 資源或本機檔案,可以使用標準檔案協定存取。 巢狀協定透過在 hls URI 協定名稱後指定 "+proto" 來宣告,其中 proto 是「file」或「http」。

hls+http://host/path/to/remote/resource.m3u8
hls+file://path/to/local/resource.m3u8

不建議使用此協定 - hls 解混合器應該也能正常運作(如果沒有,請回報問題),而且更完整。 若要改為使用 hls 解混合器,只需使用 M3U8 檔案的直接 URL 即可。

24.15 http

HTTP(超文字傳輸協定)。

此協定接受以下選項

seekable(可搜尋)

控制連線的可搜尋性。 如果設定為 1,則資源應為可搜尋的;如果設定為 0,則假定為不可搜尋的;如果設定為 -1,則會嘗試自動偵測它是否可搜尋。 預設值為 -1。

chunked_post(分塊發佈)

如果設定為 1,則對發佈使用分塊傳輸編碼,預設值為 1。

http_proxy(HTTP 代理伺服器)

設定要透過其進行通道傳輸的 HTTP 代理伺服器,例如 http://example.com:1234

headers(標頭)

設定自訂 HTTP 標頭,可以覆寫內建的預設標頭。 該值必須是編碼標頭的字串。

content_type(內容類型)

為發佈訊息或監聽模式設定特定的內容類型。

user_agent(使用者代理程式)

覆寫 User-Agent 標頭。 如果未指定,協定將使用描述 libavformat 建置的字串。(「Lavf/<版本>」)

referer(參照位址)

設定 Referer 標頭。 在 HTTP 請求中包含「Referer: URL」標頭。

multiple_requests(多個請求)

如果設定為 1,則使用持續連線,預設值為 0。

post_data(發佈資料)

設定自訂 HTTP 發佈資料。

mime_type(MIME 類型)

匯出 MIME 類型。

http_version

匯出 HTTP 回應版本號碼。通常為 "1.0" 或 "1.1"。

cookies

設定未來請求中要傳送的 cookies。每個 cookie 的格式與 Set-Cookie HTTP 回應欄位的值相同。多個 cookies 可以用換行字元分隔。

icy

若設定為 1,則向伺服器請求 ICY (SHOUTcast) metadata。若伺服器支援此功能,則應用程式必須讀取 icy_metadata_headersicy_metadata_packet 選項來擷取 metadata。預設值為 1。

icy_metadata_headers

若伺服器支援 ICY metadata,則此選項包含 ICY 專用的 HTTP 回應標頭,以換行字元分隔。

icy_metadata_packet

若伺服器支援 ICY metadata,且 icy 設定為 1,則此選項包含伺服器傳送的最後一個非空 metadata 封包。對串流中途 metadata 更新感興趣的應用程式應定期輪詢此選項。

metadata

設定一個匯出的字典,其中包含來自位元串流的 Icecast metadata(如果存在)。僅適用於 C API。

auth_type

設定 HTTP 驗證類型。沒有 Digest 選項,因為此方法需要先從伺服器取得 nonce 參數,且無法像 Basic 那樣直接使用。

none

自動選擇 HTTP 驗證類型。這是預設值。

basic

選擇 HTTP 基本驗證。

基本驗證會傳送一個 Base64 編碼的字串,其中包含用戶名稱和用戶密碼以供客戶端使用。Base64 不是一種加密形式,應被視為與以明文形式傳送用戶名稱和密碼相同(Base64 是一種可逆編碼)。如果資源需要受到保護,強烈建議使用基本驗證以外的驗證方案。HTTPS/TLS 應與基本驗證一起使用。若沒有這些額外的安全增強措施,則不應使用基本驗證來保護敏感或有價值的資訊。

send_expect_100

針對 POST 傳送 Expect: 100-continue 標頭。若設定為 1 則會傳送,若設定為 0 則不會傳送,若設定為 -1 則會在適用的情況下嘗試傳送。預設值為 -1。

location

一個匯出的字典,其中包含內容位置。僅適用於 C API。

offset

設定初始位元組偏移量。

end_offset

嘗試將請求限制在小於此偏移量的位元組。

method

當作為客戶端選項使用時,它會設定請求的 HTTP 方法。

當作為伺服器選項使用時,它會設定預期從客戶端接收的 HTTP 方法。如果預期和接收到的 HTTP 方法不符,則會向客戶端發送 Bad Request 回應。當未設定時,目前不會檢查 HTTP 方法。未來將會被自動偵測取代。

reconnect

在 EOF 到達前斷線時自動重新連線。

reconnect_at_eof

若設定此選項,則 EOF 會被視為錯誤並導致重新連線,這對於即時/無盡串流很有用。

reconnect_on_network_error

在連線期間發生 TCP/TLS 錯誤時自動重新連線。

reconnect_on_http_error

以逗號分隔的 HTTP 狀態碼列表,在這些狀態碼出現時重新連線。此列表可以包含特定的狀態碼(例如 '503')或字串 '4xx' / '5xx'。

reconnect_streamed

若設定此選項,即使是串流/不可搜尋的串流也會在發生錯誤時重新連線。

reconnect_delay_max

設定放棄重新連線前的最大延遲秒數。

reconnect_max_retries

設定重試連線的最大次數。預設為未設定。

reconnect_delay_total_max

設定放棄重新連線前的最大總延遲秒數。

respect_retry_after

若啟用,且遇到 Retry-After 標頭,則會遵循其請求的重新連線延遲,而不是使用指數退避。對於 429 和 503 錯誤很有用。預設為啟用。

listen

若設定為 1,則啟用實驗性的 HTTP 伺服器。當用作輸出選項時,可用於傳送資料;當用作輸入選項時,可用於從使用 HTTP POST 的客戶端讀取資料。若設定為 2,則啟用實驗性的多客戶端 HTTP 伺服器。這尚未在 ffmpeg.c 中實作,因此不得作為命令列選項使用。

# Server side (sending):
ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://server:port

# Client side (receiving):
ffmpeg -i http://server:port -c copy somefile.ogg

# Client can also be done with wget:
wget http://server:port -O somefile.ogg

# Server side (receiving):
ffmpeg -listen 1 -i http://server:port -c copy somefile.ogg

# Client side (sending):
ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://server:port

# Client can also be done with wget:
wget --post-file=somefile.ogg http://server:port
resource

當實驗性 HTTP 伺服器在使用中時,客戶端請求的資源。

reply_code

當實驗性 HTTP 伺服器在使用中時,傳回給客戶端的 HTTP 狀態碼。

short_seek_size

設定閾值(以位元組為單位),當超過此閾值時,應優先使用預讀而非搜尋和新的 HTTP 請求。例如,這對於確保同一個連線用於讀取大的視訊封包和其間的小型音訊封包很有用。

24.15.1 HTTP Cookies

某些 HTTP 請求將被拒絕,除非請求中傳遞了 cookie 值。cookies 選項允許指定這些 cookies。至少,每個 cookie 必須指定一個值以及路徑和網域。符合網域和路徑的 HTTP 請求將自動在 HTTP Cookie 標頭欄位中包含 cookie 值。多個 cookies 可以用換行符分隔。

指定 cookie 以播放串流的必要語法為

ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8

24.16 Icecast

Icecast 協定(串流至 Icecast 伺服器)

此協定接受以下選項

ice_genre

設定串流類型。

ice_name

設定串流名稱。

ice_description

設定串流描述。

ice_url

設定串流網站 URL。

ice_public

設定串流是否應公開。預設值為 0(不公開)。

user_agent(使用者代理程式)

覆寫 User-Agent 標頭。若未指定,將使用 "Lavf/<version>" 形式的字串。

password

設定 Icecast 掛載點密碼。

content_type(內容類型)

設定串流內容類型。如果與 audio/mpeg 不同,則必須設定此選項。

legacy_icecast

這會啟用對 Icecast 版本 < 2.4.0 的支援,這些版本不支援 HTTP PUT 方法,但支援 SOURCE 方法。

tls

建立與 Icecast 的 TLS (HTTPS) 連線。

icecast://[username[:password]@]server:port/mountpoint

24.17 ipfs

星際檔案系統 (IPFS) 協定支援。可以透過所謂的閘道存取儲存在 IPFS 網路上的檔案。這些是 http(s) 端點。此協定封裝了 IPFS 原生協定 (ipfs:// 和 ipns://),以便傳送到此類閘道。使用者可以(並且應該)託管自己的節點,這表示此協定將使用使用者本機閘道來存取 IPFS 網路上的檔案。

此協定接受以下選項

gateway

定義要使用的閘道。若未設定,協定會先嘗試透過依序查看 $IPFS_GATEWAY$IPFS_PATH$HOME/.ipfs/ 來定位本機閘道。

可以使用兩種方式使用此協定。使用 IPFS

ffplay ipfs://<hash>

或 IPNS 協定(IPNS 是可變的 IPFS)

ffplay ipns://<hash>

24.18 mmst

MMS (Microsoft Media Server) 協定透過 TCP。

24.19 mmsh

MMS (Microsoft Media Server) 協定透過 HTTP。

必要的語法為

mmsh://server[:port][/app][/playpath]

24.20 md5

MD5 輸出協定。

計算要寫入資料的 MD5 雜湊值,並在關閉時將其寫入指定的輸出或 stdout(若未指定)。它可用於測試 muxer,而無需寫入實際檔案。

以下是一些範例。

# Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
ffmpeg -i input.flv -f avi -y md5:output.avi.md5

# Write the MD5 hash of the encoded AVI file to stdout.
ffmpeg -i input.flv -f avi -y md5:

請注意,某些格式(通常是 MOV)要求輸出協定是可搜尋的,因此它們在使用 MD5 輸出協定時會失敗。

24.21 pipe

UNIX 管道存取協定。

從 UNIX 管道讀取和寫入。

接受的語法為

pipe:[number]

若未指定 fd,則 number 是對應於管道檔案描述器的數字(例如,0 代表 stdin,1 代表 stdout,2 代表 stderr)。若未指定 number,則預設情況下,stdout 檔案描述器將用於寫入,stdin 用於讀取。

例如,若要使用 ffmpeg 從 stdin 讀取

cat test.wav | ffmpeg -i pipe:0
# ...this is the same as...
cat test.wav | ffmpeg -i pipe:

若要使用 ffmpeg 寫入 stdout

ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
# ...this is the same as...
ffmpeg -i test.wav -f avi pipe: | cat > test.avi

此協定接受以下選項

blocksize(區塊大小)

設定 I/O 操作最大區塊大小,以位元組為單位。 預設值為 INT_MAX,這會導致不限制請求的區塊大小。 合理地降低此值可以改善使用者終止請求的反應時間,如果資料傳輸速度緩慢,則此值很有價值。

fd

設定檔案描述符。

請注意,某些格式(通常是 MOV)要求輸出協定是可搜尋的,因此它們在使用管道輸出協定時會失敗。

24.22 prompeg

Pro-MPEG Code of Practice #3 Release 2 FEC 協定。

Pro-MPEG CoP#3 FEC 是一種用於 MPEG-2 傳輸串流透過 RTP 傳送的 2D 奇偶校驗前向錯誤更正機制。

此協定必須與 rtp_mpegts muxer 和 rtp 協定結合使用。

必要的語法為

-f rtp_mpegts -fec prompeg=option=val... rtp://hostname:port

目標 UDP 埠為:行 FEC 串流為 port + 2,列 FEC 串流為 port + 4

此協定接受以下選項

l=n

行數 (4-20, LxD <= 100)

d=n

列數 (4-20, LxD <= 100)

範例用法

-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://hostname:port

24.23 rist

可靠網際網路串流傳輸協定

接受的選項為

rist_profile

支援的值

simple
main

這是預設值。

advanced
buffer_size

設定用於資料重傳的內部 RIST 緩衝區大小(以毫秒為單位)。預設值為 0,表示 librist 預設值(1 秒)。最大值為 30 秒。

fifo_size

librist 接收器輸出 fifo 的大小(以封包數為單位)。這必須是 2 的冪。預設值為 8192(相較於 librist 預設值 1024)。

overrun_nonfatal=1|0

在 librist fifo 緩衝區溢出的情況下繼續運作。預設值為 0。

pkt_size(封包大小)

設定傳送資料的最大封包大小。預設為 1316。

log_level

設定 RIST 日誌記錄訊息的日誌等級。只有在您明確想要啟用偵錯等級訊息或封包遺失模擬時才需要設定此選項,否則將遵循常規日誌等級。

secret

設定加密密鑰的覆寫,預設為未設定。

encryption

設定加密類型,預設為停用。可接受的值為 128 和 256。

24.24 rtmp

即時訊息協定。

即時訊息協定 (RTMP) 用於透過 TCP/IP 網路串流多媒體內容。

必要的語法為

rtmp://[username:password@]server[:port][/app][/instance][/playpath]

接受的參數為

username

可選的使用者名稱(主要用於發佈)。

password

可選的密碼(主要用於發佈)。

server

RTMP 伺服器的位址。

port

要使用的 TCP 埠號(預設為 1935)。

app

要存取的應用程式名稱。它通常對應於應用程式安裝在 RTMP 伺服器上的路徑(例如 /ondemand//flash/live/ 等)。您也可以透過 rtmp_app 選項覆寫從 URI 剖析的值。

playpath

要播放的資源路徑或名稱,參考 app 中指定的應用程式,可以加上 "mp4:" 前綴。您也可以透過 rtmp_playpath 選項覆寫從 URI 剖析的值。

listen

充當伺服器,監聽連入連線。暗示 listen。

timeout(逾時)

等待連入連線的最長時間。暗示 listen。

此外,可以透過命令列選項(或在程式碼中透過 AVOption)設定以下參數

rtmp_app

要連線到 RTMP 伺服器上的應用程式名稱。此選項會覆寫 URI 中指定的參數。

rtmp_buffer

設定客戶端緩衝時間(以毫秒為單位)。預設值為 3000。

rtmp_conn

額外的任意 AMF 連線參數,從字串剖析,例如 B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0。每個值都以單個字元作為前綴表示類型,B 代表布林值,N 代表數字,S 代表字串,O 代表物件,或 Z 代表 null,後跟一個冒號。對於布林值,資料必須為 0 或 1,分別代表 FALSE 或 TRUE。同樣地,對於物件,資料必須為 0 或 1,分別代表結束或開始物件。子物件中的資料項目可以命名,方法是在類型前加上 'N' 並在值之前指定名稱(即 NB:myFlag:1)。可以多次使用此選項來建構任意 AMF 序列。

rtmp_enhanced_codecs

指定客戶端宣告支援增強型 RTMP 串流的編解碼器列表。此選項應設定為逗號分隔的 fourcc 值列表,例如 hvc1,av01,vp09 代表多個編解碼器,或 hvc1 代表僅一個編解碼器。指定的列表將顯示在 Connect Command Message 的 "fourCcLive" 屬性中。

rtmp_flashver

用於執行 SWF 播放器的 Flash 外掛程式版本。預設值為 LNX 9,0,124,2。(發佈時,預設值為 FMLE/3.0 (compatible; <libavformat version>))。

rtmp_flush_interval

在同一個請求中刷新的封包數(僅限 RTMPT)。預設值為 10。

rtmp_live

指定媒體為即時串流。即時串流中無法恢復或搜尋。預設值為 any,表示訂閱者首先嘗試播放 playpath 中指定的即時串流。如果找不到該名稱的即時串流,則播放錄製的串流。其他可能的值為 liverecorded

rtmp_pageurl

媒體嵌入的網頁 URL。預設情況下,不會傳送任何值。

rtmp_playpath

要播放或發佈的串流識別符。此選項會覆寫 URI 中指定的參數。

rtmp_subscribe

要訂閱的即時串流名稱。預設情況下,不會傳送任何值。僅當指定此選項或 rtmp_live 設定為 live 時才會傳送。

rtmp_swfhash

解壓縮 SWF 檔案的 SHA256 雜湊值(32 個位元組)。

rtmp_swfsize

SWFVerification 所需的解壓縮 SWF 檔案大小。

rtmp_swfurl

媒體 SWF 播放器的 URL。預設情況下,不會傳送任何值。

rtmp_swfverify

播放器 swf 檔案的 URL,自動計算雜湊值/大小。

rtmp_tcurl

目標串流的 URL。預設為 proto://host[:port]/app。

tcp_nodelay=1|0

設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。

備註:目前未優化寫入 socket 以最小化系統呼叫,並降低 TCP_NODELAY 的效率/效果。

例如,若要使用 ffplay 從 RTMP 伺服器 "myserver" 的應用程式 "vod" 讀取名為 "sample" 的多媒體資源

ffplay rtmp://myserver/vod/sample

若要發佈到受密碼保護的伺服器,分別傳遞 playpath 和 app 名稱

ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/

24.25 rtmpe

加密的即時訊息協定。

加密的即時訊息協定 (RTMPE) 用於在標準加密原語(包括 Diffie-Hellman 金鑰交換和 HMACSHA256)內串流多媒體內容,產生一對 RC4 金鑰。

24.26 rtmps

透過安全 SSL 連線的即時訊息協定。

即時訊息協定 (RTMPS) 用於透過加密連線串流多媒體內容。

24.27 rtmpt

透過 HTTP 通道的即時訊息協定。

透過 HTTP 通道的即時訊息協定 (RTMPT) 用於在 HTTP 請求中串流多媒體內容以穿越防火牆。

24.28 rtmpte

加密的透過 HTTP 通道的即時訊息協定。

加密的透過 HTTP 通道的即時訊息協定 (RTMPTE) 用於在 HTTP 請求中串流多媒體內容以穿越防火牆。

24.29 rtmpts

透過 HTTPS 通道的即時訊息協定。

透過 HTTPS 通道的即時訊息協定 (RTMPTS) 用於在 HTTPS 請求中串流多媒體內容以穿越防火牆。

24.30 libsmbclient

libsmbclient 允許使用者操作 CIFS/SMB 網路資源。

需要以下語法。

smb://[[domain:]user[:password@]]server[/share[/path[/file]]]

此協定接受以下選項。

timeout(逾時)

設定底層低階操作使用的 socket I/O 操作逾時時間(以毫秒為單位)。預設情況下,設定為 -1,表示未指定逾時時間。

truncate(截斷)

如果設定為 1,則在寫入時截斷現有檔案。 值為 0 可防止截斷。 預設值為 1。

workgroup

設定用於建立連線的工作群組。預設情況下,未指定工作群組。

如需更多資訊,請參閱:http://www.samba.org/

24.31 libssh

透過 libssh 的安全檔案傳輸協定

使用 SFTP 協定從遠端資源讀取或寫入。

需要以下語法。

sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此協定接受以下選項。

timeout(逾時)

設定底層低階操作使用的 socket I/O 操作逾時時間。預設情況下,設定為 -1,表示未指定逾時時間。

truncate(截斷)

如果設定為 1,則在寫入時截斷現有檔案。 值為 0 可防止截斷。 預設值為 1。

private_key

指定包含授權期間要使用的私密金鑰的檔案路徑。預設情況下,libssh 會在 ~/.ssh/ 目錄中搜尋金鑰。

範例:播放儲存在遠端伺服器上的檔案。

ffplay sftp://user:password@server_address:22/home/user/resource.mpeg

24.32 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte

即時訊息協定及其變體,透過 librtmp 支援。

組態設定期間需要 librtmp 標頭檔和函式庫。您需要使用 "–enable-librtmp" 明確配置建置。如果啟用,這將會取代原生 RTMP 協定。

此協定提供支援 RTMP、HTTP 隧道 RTMP (RTMPT)、加密 RTMP (RTMPE)、SSL/TLS 上的 RTMP (RTMPS) 以及這些加密類型的隧道變體 (RTMPTE、RTMPTS) 所需的大多數用戶端功能和少數伺服器功能。

必要的語法為

rtmp_proto://server[:port][/app][/playpath] options

其中 rtmp_proto 是字串 "rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts" 其中之一,分別對應於每個 RTMP 變體,而 serverportappplaypath 具有與原生 RTMP 協定中指定的相同含義。options 包含以空格分隔的選項列表,格式為 key=val

請參閱 librtmp 手冊頁 (man 3 librtmp) 以取得更多資訊。

例如,要使用 ffmpeg 將檔案即時串流到 RTMP 伺服器

ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream

要使用 ffplay 播放相同的串流

ffplay "rtmp://myserver/live/mystream live=1"

24.33 rtp

即時傳輸協定。

RTP URL 的必要語法為

rtp://hostname[:port][?options]

port 指定要使用的 RTP 埠。

options 包含以 &-分隔的選項列表,格式為 key=val

支援以下 URL 選項

ttl=n

設定 TTL (Time-To-Live) 值(僅適用於多播)。

rtcpport=n

設定遠端 RTCP 埠為 n

localrtpport=n

設定本地 RTP 埠為 n

localrtcpport=n'

設定本地 RTCP 埠為 n

pkt_size=n

設定最大封包大小(以位元組為單位)為 n

buffer_size=size

設定最大 UDP socket 緩衝區大小,以位元組為單位。

connect=0|1

在 UDP socket 上執行 connect() (如果設定為 1) 或不執行 (如果設定為 0)。

sources=ip[,ip]

列出允許的來源 IP 位址。

block=ip[,ip]

列出不允許(封鎖)的來源 IP 位址。

write_to_source=0|1

將封包傳送到最新接收封包的來源位址(如果設定為 1)或預設遠端位址(如果設定為 0)。

localport=n

設定本地 RTP 埠為 n

這是一個已棄用的選項。相反地,應使用 localrtpport

localaddr=addr

用於發送封包或加入多播群組的網路介面的本地 IP 位址。

timeout=n

設定 socket I/O 操作的逾時時間(以微秒為單位)為 n

重要注意事項

  1. 如果未設定 rtcpport,RTCP 埠將設定為 RTP 埠值加 1。
  2. 如果未設定 localrtpport (本地 RTP 埠),則任何可用的埠都將用於本地 RTP 和 RTCP 埠。
  3. 如果未設定 localrtcpport (本地 RTCP 埠),則將設定為本地 RTP 埠值加 1。

24.34 rtsp

即時串流協定。

RTSP 在 libavformat 中技術上不是協定處理器,它是一個解多工器和多工器。解多工器支援標準 RTSP (資料透過 RTP 傳輸;例如 Apple 和 Microsoft 使用) 和 Real-RTSP (資料透過 RDT 傳輸)。

多工器可用於使用 RTSP ANNOUNCE 將串流發送到支援它的伺服器(目前為 Darwin Streaming Server 和 Mischa Spiegelmock 的 RTSP 伺服器)。

RTSP URL 的必要語法為

rtsp://hostname[:port]/path

選項可以在 ffmpeg/ffplay 命令列上設定,或在程式碼中透過 AVOption 或在 avformat_open_input 中設定。

24.34.1 Muxer

支援以下選項。

rtsp_transport

設定 RTSP 傳輸協定。

它接受以下值

udp

使用 UDP 作為下層傳輸協定。

tcp

使用 TCP (在 RTSP 控制通道內交錯) 作為下層傳輸協定。

預設值為 ‘0’。

rtsp_flags

設定 RTSP 旗標。

接受以下值

latm

對於 AAC,使用 MP4A-LATM 封包化而不是 MPEG4-GENERIC。

rfc2190

對於 H.263,使用 RFC 2190 封包化而不是 RFC 4629。

skip_rtcp

不要發送 RTCP 寄件者報告。

h264_mode0

對於 RTP 中的 H.264,使用模式 0。

send_bye

完成時發送 RTCP BYE 封包。

預設值為 ‘0’。

min_port

設定最小本地 UDP 埠。預設值為 5000。

max_port

設定最大本地 UDP 埠。預設值為 65000。

buffer_size

設定最大 socket 緩衝區大小,以位元組為單位。

pkt_size(封包大小)

設定最大發送封包大小(以位元組為單位)。預設值為 1472。

24.34.2 Demuxer

支援以下選項。

initial_pause

如果設定為 1,則不要立即開始播放串流。預設值為 0。

rtsp_transport

設定 RTSP 傳輸協定。

它接受以下值

udp

使用 UDP 作為下層傳輸協定。

tcp

使用 TCP (在 RTSP 控制通道內交錯) 作為下層傳輸協定。

udp_multicast

使用 UDP 多播作為下層傳輸協定。

http

使用 HTTP 隧道作為下層傳輸協定,這對於通過代理伺服器很有用。

https

使用 HTTPs 隧道作為下層傳輸協定,這對於通過代理伺服器很有用,並且廣泛用於安全考量。

可以指定多個下層傳輸協定,在這種情況下,它們會一次嘗試一個(如果一個的設定失敗,則嘗試下一個)。對於多工器,僅支援 ‘tcp’ 和 ‘udp’ 選項。

rtsp_flags

設定 RTSP 旗標。

接受以下值

filter_src

僅接受來自協商的對等位址和埠的封包。

listen

充當伺服器,監聽連入連線。暗示 listen。

prefer_tcp

如果 TCP 可用作 RTSP RTP 傳輸,則首先嘗試 TCP 進行 RTP 傳輸。

satip_raw

匯出原始 MPEG-TS 串流,而不是解多工。此旗標將僅寫出原始串流,並保留原始 PAT/PMT/PID。

預設值為 ‘none’。

allowed_media_types

設定要從伺服器接受的媒體類型。

接受以下旗標

video
audio
data
subtitle

預設情況下,它接受所有媒體類型。

min_port

設定最小本地 UDP 埠。預設值為 5000。

max_port

設定最大本地 UDP 埠。預設值為 65000。

listen_timeout

設定建立初始連線的最大逾時時間(以秒為單位)。設定 listen_timeout > 0 會將 rtsp_flags 設定為 ‘listen’。預設值為 -1,表示在設定 ‘listen’ 模式時為無限逾時。

reorder_queue_size

設定要緩衝以處理重新排序封包的封包數量。

timeout(逾時)

設定 socket TCP I/O 逾時時間,以微秒為單位。

user_agent(使用者代理程式)

覆寫 User-Agent 標頭。如果未指定,則預設為 libavformat 識別字串。

buffer_size

設定最大 socket 緩衝區大小,以位元組為單位。

當透過 UDP 接收資料時,解多工器會嘗試重新排序接收到的封包(因為它們可能亂序到達,或者封包可能完全遺失)。可以透過將最大解多工延遲設定為零(透過 AVFormatContext 的 max_delay 欄位)來停用此功能。

當使用 ffplay 觀看多位元率 Real-RTSP 串流時,可以使用 -vst n-ast n 分別選擇要顯示的視訊和音訊串流,並且可以透過按下 va 即時切換。

24.34.3 範例

以下範例均使用 ffplayffmpeg 工具。

  • 透過 UDP 觀看串流,最大重新排序延遲為 0.5 秒
    ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
    
  • 觀看透過 HTTP 隧道的串流
    ffplay -rtsp_transport http rtsp://server/video.mp4
    
  • 將串流即時發送到 RTSP 伺服器,供其他人觀看
    ffmpeg -re -i input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
    
  • 即時接收串流
    ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp output
    

24.35 sap

會話宣告協定 (RFC 2974)。這在 libavformat 中技術上不是協定處理器,它是一個多工器和解多工器。它用於 RTP 串流的訊號傳輸,方法是在單獨的埠上定期宣告串流的 SDP。

24.35.1 Muxer

給定多工器的 SAP URL 語法為

sap://destination[:port][?options]

RTP 封包會發送到 destination 上的 port 埠,如果未指定埠,則發送到 5004 埠。options 是以 & 分隔的列表。支援以下選項

announce_addr=address

指定用於發送宣告的目的地 IP 位址。如果省略,宣告將發送到常用的 SAP 宣告多播位址 224.2.127.254 (sap.mcast.net),如果 destination 是 IPv6 位址,則發送到 ff0e::2:7ffe。

announce_port=port

指定用於發送宣告的埠,如果未指定,則預設為 9875。

ttl=ttl

指定宣告和 RTP 封包的存活時間值,預設為 255。

same_port=0|1

如果設定為 1,則在相同的埠對上發送所有 RTP 串流。如果為零(預設值),則所有串流都在唯一的埠上發送,每個串流的埠都比前一個高 2 個數字。VLC/Live555 需要將此設定為 1,才能接收串流。libavformat 中用於接收的 RTP 堆疊要求所有串流都在唯一的埠上發送。

以下是範例命令列。

要在本機子網路上廣播串流,以便在 VLC 中觀看

ffmpeg -re -i input -f sap sap://224.0.0.255?same_port=1

同樣地,在 ffplay 中觀看

ffmpeg -re -i input -f sap sap://224.0.0.255

以及在 ffplay 中透過 IPv6 觀看

ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]

24.35.2 Demuxer

給定解多工器的 SAP URL 語法為

sap://[address][:port]

address 是要偵聽宣告的多播位址,如果省略,則使用預設值 224.2.127.254 (sap.mcast.net)。port 是偵聽的埠,如果省略,則為 9875。

解多工器偵聽給定位址和埠上的宣告。收到宣告後,它會嘗試接收該特定串流。

以下是範例命令列。

要播放第一個在正常 SAP 多播位址上宣告的串流

ffplay sap://

要播放第一個在預設 IPv6 SAP 多播位址上宣告的串流

ffplay sap://[ff0e::2:7ffe]

24.36 sctp

串流控制傳輸協定。

接受的 URL 語法為

sctp://host:port[?options]

此協定接受以下選項

listen

如果設定為任何值,則偵聽傳入連線。預設情況下執行傳出連線。

max_streams

設定最大串流數量。預設情況下未設定限制。

24.37 srt

透過 libsrt 的 Haivision 安全可靠傳輸協定。

SRT URL 的支援語法為

srt://hostname:port[?options]

options 包含以 &-分隔的選項列表,格式為 key=val

options srt://hostname:port

options 包含 ' -key val' 選項的列表。

此協定接受以下選項。

connect_timeout=milliseconds

連線逾時;SRT 無法在 RTT > 1500 毫秒(2 次握手交換)的情況下連線,預設連線逾時為 3 秒。此選項適用於呼叫者和會合連線模式。會合模式的連線逾時時間是設定值的 10 倍(可用作早期版本此連線問題的解決方案)。

ffs=bytes

飛行旗標大小(視窗大小),以位元組為單位。FFS 實際上是一個內部參數,您應將其設定為不小於 recv_buffer_sizemss。預設值相對較大,因此除非您設定非常大的接收器緩衝區,否則您無需變更此選項。預設值為 25600。

inputbw=bytes/seconds

傳送者標稱輸入速率,以位元組/秒為單位。與 oheadbw 一起使用,當 maxbw 設定為相對 (0) 時,用於計算最大傳送速率,當恢復封包與主要媒體串流一起傳送時:inputbw * (100 + oheadbw) / 100 如果在 maxbw 設定為相對 (0) 時未設定 inputbw,則實際輸入速率會在函式庫內部評估。預設值為 0。

iptos=tos

IP 服務類型。僅適用於傳送者。預設值為 0xB8。

ipttl=ttl

IP 存活時間。僅適用於傳送者。預設值為 64。

latency=microseconds

基於時間戳記的封包傳遞延遲。用於吸收遺失封包重傳的突發。此旗標將 rcvlatencypeerlatency 都設定為相同的值。請注意,在 1.3.0 之前的版本中,這是設定延遲的唯一旗標,但是,當端是傳送者時,這實際上等同於設定 peerlatency,當端是接收者時,等同於設定 rcvlatency,並且不支援雙向串流傳送。

listen_timeout=microseconds

設定 socket 偵聽逾時。

maxbw=bytes/seconds

最大傳送頻寬,以位元組/秒為單位。-1 無限(CSRTCC 限制為 30mbps) 0 相對於輸入速率(請參閱 inputbw) >0 絕對限制值 預設值為 0(相對)。

mode=caller|listener|rendezvous

連線模式。caller 開啟用戶端連線。listener 啟動伺服器以偵聽傳入連線。rendezvous 使用會合連線模式。預設值為 caller。

mss=bytes

最大區段大小,以位元組為單位。用於緩衝區分配和速率計算,假設封包已完全填滿。使用對等體之間最小的 MSS。這在整個網際網路中預設為 1500。這是 UDP 封包的最大大小,只能減小,除非您有一些不尋常的專用網路設定。預設值為 1500。

nakreport=1|0

如果設定為 1,接收器將定期發送 'UMSG_LOSSREPORT' 訊息,直到遺失的封包重新傳輸或有意丟棄。預設值為 1。

oheadbw=percents

高於輸入速率的恢復頻寬開銷,以百分比表示。請參閱 inputbw。預設值為 25%。

passphrase=string

HaiCrypt 加密/解密密碼字串,長度從 10 到 79 個字元。密碼是傳送者和接收者之間的共享秘密。它用於使用 PBKDF2(基於密碼的金鑰衍生函式)產生金鑰加密金鑰。僅當 pbkeylen 為非零值時才使用它。僅當接收到的資料已加密時,才在接收器上使用它。已設定的密碼無法恢復(僅寫入)。

enforced_encryption=1|0

如果為 true,則連線雙方都必須設定相同的密碼(包括空密碼,即不加密)。如果密碼不符或只有一方未加密,則連線將被拒絕。預設值為 true。

kmrefreshrate=packets

加密金鑰切換為新金鑰前要傳輸的封包數量。預設值為 -1。-1 代表自動(srt 函式庫中的 0x1000000)。此選項的範圍為 0 到 INT_MAX 的整數。

kmpreannounce=封包數

傳送新的加密金鑰和發生切換之間的時間間隔。此值也適用於切換發生後到舊加密金鑰停用之間的後續間隔。預設值為 -1。-1 代表自動(srt 函式庫中的 0x1000)。此選項的範圍為 0 到 INT_MAX 的整數。

snddropdelay=微秒

傳送端在丟棄封包之前的額外延遲時間。此延遲會加到預設的丟包延遲時間間隔值。

特殊值 -1:完全不在傳送端丟棄封包。

payload_size=位元組

設定在即時模式下,單次呼叫傳送函式時所傳輸的封包最大宣告大小。如果未使用此值,請使用 0(檔案模式下的預設值)。預設值為 -1(自動),通常表示 MPEG-TS;如果您打算使用 SRT 傳送任何不同類型的酬載,例如,將即時串流包裝在非常小的影格中,則可以使用更大的最大影格大小,但不得超過 1456 位元組。

pkt_size=位元組

payload_size」的別名。

peerlatency=微秒

由傳送端設定的延遲值(如 rcvlatency 中所述),作為接收端的最小值。

pbkeylen=位元組

傳送端加密金鑰長度,以位元組為單位。只能設定為 0、16、24 和 32。若不為 0 則啟用傳送端加密。接收端不需要(設定為 0),金鑰大小從 HaiCrypt 握手協商中取得。預設值為 0。

rcvlatency=微秒

自封包傳送時刻起,到封包在接收函式中交付給接收器應用程式的時刻,應經過的時間。此時間應為足夠大的緩衝時間,以涵蓋傳送所花費的時間、意外延長的 RTT 時間,以及重新傳輸遺失的 UDP 封包所需的時間。有效的延遲值將為此選項的值與對等端設定的 peerlatency 值的最大值。在 1.3.0 版本之前,此選項僅以 latency 提供。

recv_buffer_size=位元組

設定 UDP 接收緩衝區大小,以位元組表示。

send_buffer_size=位元組

設定 UDP 傳送緩衝區大小,以位元組表示。

timeout=微秒

設定讀取、寫入和連線操作的引發錯誤逾時時間。請注意,SRT 函式庫具有可以單獨控制的內部逾時,此處設定的值僅為這些逾時的上限。

tlpktdrop=1|0

過時封包丟棄。在接收端啟用時,它會跳過未及時交付的遺失封包,並在它們的播放時間到來時將後續封包交付給應用程式。它還會向傳送端傳送偽造的 ACK。在傳送端啟用且在接收端對等點啟用時,傳送端會丟棄較舊的封包,這些封包沒有及時交付的機會。如果接收端支援,則會在傳送端自動啟用它。

sndbuf=位元組

設定傳送緩衝區大小,以位元組表示。

rcvbuf=位元組

設定接收緩衝區大小,以位元組表示。

接收緩衝區不得大於 ffs

lossmaxttl=封包數

重新排序容忍度可能增長到的值。當重新排序容忍度 > 0 時,封包遺失報告會延遲到收到該數量的封包。每次收到「遲到」封包時,重新排序容忍度都會增加,但並非由於重新傳輸(也就是說,當 UDP 封包傾向於亂序到達時),增加量為最新序列和此封包序列之間的差值,且不超過此選項的值。預設值為 0,表示此機制已關閉,並且始終在遇到序列中的「間隙」時立即傳送遺失報告。

minversion

對等端所需的最低 SRT 版本。與不滿足最低版本要求的對等端的連線將被拒絕。

十六進制版本格式為 0xXXYYZZ,人類可讀格式為 x.y.z。

streamid=字串

一個字串,限制為 512 個字元,可以在連線之前在 socket 上設定。此串流 ID 將能夠由監聽器端從 srt_accept 返回的 socket 中檢索,並且由具有該設定串流 ID 的 socket 連線。SRT 不強制對此字串的內容進行任何特殊解釋。此選項在 Rendezvous 連線中沒有意義;結果可能是其中一方會覆蓋另一方的值,並且哪個會獲勝取決於運氣。

srt_streamid=字串

streamid」的別名,以避免與 ffmpeg 命令列選項衝突。

smoother=live|file

用於該 socket 傳輸的平滑器類型,它負責傳輸和擁塞控制。連接雙方的平滑器類型必須完全相同,否則連線將被拒絕。

messageapi=1|0

設定後,此 socket 使用訊息 API,否則使用緩衝區 API。請注意,在即時模式(請參閱 transtype)下,只有訊息 API 可用。在檔案模式下,您可以選擇使用兩種模式之一

串流 API(預設值,當此選項為 false 時)。在此模式下,您可以使用一個傳送指令傳送任意多的資料,甚至可以使用直接從檔案讀取的專用函式。內部設施將處理任何速度和擁塞控制。接收時,您也可以接收任意多的資料,未提取的資料將等待下一次呼叫。在串流模式下,資料部分之間沒有邊界。

訊息 API。在此模式下,您的單個傳送指令恰好傳遞一個具有邊界的資料片段(訊息)。與即時模式相反,此訊息可以跨越多個 UDP 封包,唯一的尺寸限制是它應作為一個整體容納在傳送緩衝區中。接收器應使用盡可能大的緩衝區來接收訊息,否則訊息將不會被釋放。當訊息不完整時(未收到所有封包或發生封包遺失),它將不會被釋放。

transtype=live|file

設定 socket 的傳輸類型,特別是,設定此選項會將多個其他參數設定為特定傳輸類型所需的預設值。

live:將選項設定為即時傳輸。在此模式下,您應該僅透過一個傳送指令傳送適合一個 UDP 封包的資料量,並且限制為首先在 payload_size 中定義的值(在此模式下預設值為 1316)。在此模式下沒有速度控制,只有頻寬控制(如果已配置),以避免頻寬超出負擔傳輸(重新傳輸和控制封包)。

file:將選項設定為非即時傳輸。有關更多說明,請參閱 messageapi

linger=秒數

socket 關閉時等待未傳送資料的秒數。預設值為 -1。-1 代表自動(即時模式下關閉且為 0 秒,檔案模式下開啟且為 180 秒)。此選項的範圍為 0 到 INT_MAX 的整數。

tsbpd=1|0

為 true 時,使用基於時間戳記的封包傳遞模式。預設行為取決於傳輸類型:在即時模式下啟用,在檔案模式下停用。

如需更多資訊,請參閱:https://github.com/Haivision/srt

24.38 srtp

安全即時傳輸協定。

接受的選項為

srtp_in_suite
srtp_out_suite

選擇輸入和輸出編碼套件。

支援的值

AES_CM_128_HMAC_SHA1_80
SRTP_AES128_CM_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_32
SRTP_AES128_CM_HMAC_SHA1_32
srtp_in_params
srtp_out_params

設定輸入和輸出編碼參數,這些參數由二進位區塊的 base64 編碼表示形式表示。此二進位區塊的前 16 個位元組用作主金鑰,後續 14 個位元組用作主鹽。

24.39 subfile

虛擬提取檔案或其他串流的片段。底層串流必須是可搜尋的。

接受的選項

start

提取片段的開始偏移量,以位元組為單位。

end

提取片段的結束偏移量,以位元組為單位。如果設定為 0,則提取到檔案結尾。

範例

從 DVD VOB 檔案中提取章節(開始和結束扇區從外部取得並乘以 2048)

subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB

直接從 TAR 封存檔播放 AVI 檔案

subfile,,start,183241728,end,366490624,,:archive.tar

從開始偏移量到結尾播放 MPEG-TS 檔案

subfile,,start,32815239,end,0,,:video.ts

24.40 tee

將輸出寫入多個協定。各個輸出以 | 分隔

tee:file://path/to/local/this.avi|file://path/to/local/that.avi

24.41 tcp

傳輸控制協定。

TCP url 的必要語法為

tcp://hostname:port[?options]

options 包含以 &-分隔的選項列表,格式為 key=val

以下是支援的選項列表。

listen=2|1|0

監聽連入連線。0 停用監聽,1 在單一用戶端模式下啟用監聽,2 在多用戶端模式下啟用監聽。預設值為 0。

local_addr=addr

用於 tcp socket 連線的網路介面的本機 IP 位址。

local_port=port

用於 tcp socket 連線的本機埠。

timeout=微秒

設定引發錯誤逾時時間,以微秒表示。

此選項僅在讀取模式下相關:如果超過此時間間隔沒有資料到達,則引發錯誤。

listen_timeout=毫秒

設定監聽逾時時間,以毫秒表示。

recv_buffer_size=位元組

設定接收緩衝區大小,以位元組表示。

send_buffer_size=位元組

設定傳送緩衝區大小,以位元組表示。

tcp_nodelay=1|0

設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。

備註:目前未優化寫入 socket 以最小化系統呼叫,並降低 TCP_NODELAY 的效率/效果。

tcp_mss=位元組

設定傳出 TCP 封包的最大區段大小,以位元組表示。

以下範例示範如何使用 ffmpeg 設定監聽 TCP 連線,然後使用 ffplay 存取該連線

ffmpeg -i input -f format tcp://hostname:port?listen
ffplay tcp://hostname:port

24.42 tls

傳輸層安全性 (TLS) / 安全通訊端層 (SSL)

TLS/SSL url 的必要語法為

tls://hostname:port[?options]

以下參數可以透過命令列選項(或程式碼中透過 AVOption)設定

ca_file, cafile=檔案名稱

一個包含憑證授權單位 (CA) 根憑證的檔案,用於視為信任的憑證。如果連結的 TLS 函式庫包含預設值,則可能不需要指定此項即可進行驗證,但並非所有函式庫和設定都內建預設值。該檔案必須為 OpenSSL PEM 格式。

tls_verify=1|0

如果啟用,請嘗試驗證我們正在與之通訊的對等端。請注意,如果使用 OpenSSL,目前這僅確保對等端憑證由 CA 資料庫中的根憑證之一簽署,但它不驗證憑證是否實際上與我們嘗試連線的主機名稱相符。(使用其他後端,也會驗證主機名稱。)

預設情況下停用此功能,因為在許多情況下,這需要呼叫者提供 CA 資料庫。

cert_file, cert=檔案名稱

一個包含憑證的檔案,用於在與對等端握手協商中使用。(當作為伺服器在監聽模式下運作時,對等端更常需要此憑證,而用戶端憑證僅在某些設定中是強制性的。)

key_file, key=檔案名稱

一個包含憑證私密金鑰的檔案。

listen=1|0

如果啟用,則監聽提供的埠上的連線,並在握手協商中擔任伺服器角色,而不是用戶端角色。

http_proxy(HTTP 代理伺服器)

要透過其建立隧道的 HTTP Proxy,例如 http://example.com:1234。Proxy 必須支援 CONNECT 方法。

命令列範例

建立提供輸入串流的 TLS/SSL 伺服器。

ffmpeg -i input -f format tls://hostname:port?listen&cert=server.crt&key=server.key

使用 ffplay 從 TLS/SSL 伺服器播放串流

ffplay tls://hostname:port

24.43 udp

用戶資料包協定。

UDP URL 的必要語法為

udp://hostname:port[?options]

options 包含以 &-分隔的選項列表,格式為 key=val

如果系統上啟用了執行緒,則會使用循環緩衝區來儲存連入資料,這允許減少由於 UDP socket 緩衝區溢位而導致的資料遺失。fifo_sizeoverrun_nonfatal 選項與此緩衝區相關。

以下是支援的選項列表。

buffer_size=size

設定 UDP 最大 socket 緩衝區大小(以位元組為單位)。這用於設定接收或傳送緩衝區大小,具體取決於 socket 的用途。輸出預設值為 32 KB,輸入預設值為 384 KB。另請參閱 fifo_size

bitrate=位元率

如果設定為非零值,則如果輸入有足夠的封包來維持,則輸出將具有指定的恆定位元率。

burst_bits=位元

當使用 bitrate 時,這會指定封包叢發中的最大位元數。

localport=

覆寫要綁定的本機 UDP 埠。

localaddr=addr

用於發送封包或加入多播群組的網路介面的本地 IP 位址。

pkt_size=大小

設定 UDP 封包的大小(以位元組為單位)。

reuse=1|0

明確允許或不允許重複使用 UDP socket。

ttl=ttl

設定存活時間值(僅適用於多播)。

connect=1|0

使用 connect() 初始化 UDP socket。在這種情況下,稍後無法使用 ff_udp_set_remote_url 變更目的地位址。如果目的地位址在開始時未知,則也可以在 ff_udp_set_remote_url 中指定此選項。這允許使用 getsockname 找出封包的來源位址,並使寫入在收到「目的地無法連線」時傳回 AVERROR(ECONNREFUSED)。對於接收,這帶來了僅從指定的對等位址/埠接收封包的好處。

sources=位址[,位址]

僅接收從指定位址傳送的封包。在多播的情況下,也訂閱僅來自這些位址的多播流量。

block=位址[,位址]

忽略從指定位址傳送的封包。在多播的情況下,也在多播訂閱中排除來源位址。

fifo_size=單位

設定 UDP 接收循環緩衝區大小,以 188 位元組大小的封包數表示。如果未指定,則預設為 7*4096。

overrun_nonfatal=1|0

在 UDP 接收循環緩衝區溢出時繼續運作。預設值為 0。

timeout=微秒

設定引發錯誤逾時時間,以微秒表示。

此選項僅在讀取模式下相關:如果超過此時間間隔沒有資料到達,則引發錯誤。

broadcast=1|0

明確允許或禁止 UDP 廣播。

請注意,在具有廣播風暴保護的網路中,廣播可能無法正常運作。

24.43.1 範例

  • 使用 ffmpeg 透過 UDP 串流至遠端端點
    ffmpeg -i input -f format udp://hostname:port
    
  • 使用 ffmpeg 以 mpegts 格式透過 UDP 串流,使用 188 位元組大小的 UDP 封包,並使用大型輸入緩衝區
    ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
    
  • 使用 ffmpeg 透過 UDP 從遠端端點接收
    ffmpeg -i udp://[multicast-address]:port ...
    

24.44 unix

Unix 本地套接字

Unix 套接字 URL 的必要語法為

unix://filepath

以下參數可以透過命令列選項(或程式碼中透過 AVOption)設定

timeout(逾時)

逾時時間,單位為毫秒 (ms)。

listen

以監聽模式建立 Unix 套接字。

24.45 zmq

使用 libzmq 函式庫的 ZeroMQ 非同步訊息傳遞。

此函式庫支援單播串流至多個用戶端,而無需依賴外部伺服器。

串流或連線至串流的必要語法為

zmq:tcp://ip-address:port

範例:在本機主機的 5555 埠建立串流

ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555

多個用戶端可以使用以下方式連線至串流

ffplay zmq:tcp://127.0.0.1:5555

串流至多個用戶端是使用 ZeroMQ 發布-訂閱模式實作的。伺服器端繫結至一個埠並發布資料。用戶端連線至伺服器(透過 IP 位址/埠)並訂閱串流。伺服器和用戶端啟動的順序通常不重要。

ffmpeg 必須使用 –enable-libzmq 選項編譯才能支援此協定。

選項可以在 ffmpeg/ffplay 命令列中設定。支援以下選項

pkt_size(封包大小)

強制設定傳送/接收資料的最大封包大小。預設值為 131,072 位元組。在伺服器端,這設定透過 ZeroMQ 傳送的封包最大大小。在用戶端,這設定接收封包的內部緩衝區大小。請注意,用戶端上的 pkt_size 應等於或大於伺服器上的 pkt_size。否則,接收到的訊息可能會被截斷,導致解碼錯誤。

25 裝置選項

libavdevice 函式庫提供與 libavformat 相同的介面。也就是說,輸入裝置被視為解多工器,而輸出裝置被視為多工器,介面和通用裝置選項與 libavformat 提供的相同(請參閱 ffmpeg-formats 手冊)。

此外,每個輸入或輸出裝置可能支援所謂的私有選項,這些選項是特定於該元件的。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,或者透過在裝置 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 進行程式化使用。

26 輸入裝置

輸入裝置是 FFmpeg 中配置的元件,可讓您存取來自連接到系統的多媒體裝置的資料。

當您配置 FFmpeg 建置時,預設會啟用所有支援的輸入裝置。您可以使用配置選項 "–list-indevs" 列出所有可用的輸入裝置。

您可以使用配置選項 "–disable-indevs" 停用所有輸入裝置,並使用選項 "–enable-indev=INDEV" 選擇性地啟用輸入裝置,或者您可以使用選項 "–disable-indev=INDEV" 停用特定的輸入裝置。

ff* 工具的 "-devices" 選項將顯示支援的輸入裝置列表。

以下描述目前可用的輸入裝置。

26.1 alsa

ALSA (Advanced Linux Sound Architecture,進階 Linux 聲音架構) 輸入裝置。

若要在配置期間啟用此輸入裝置,您需要在系統上安裝 libasound。

此裝置允許從 ALSA 裝置擷取。要擷取的裝置名稱必須是 ALSA 卡識別碼。

ALSA 識別碼的語法為

hw:CARD[,DEV[,SUBDEV]]

其中 DEVSUBDEV 元件為選用。

三個引數(依序為:CARDDEVSUBDEV)指定卡號或識別碼、裝置號碼和子裝置號碼(-1 表示任何)。

若要查看系統目前辨識的卡列表,請檢查 /proc/asound/cards/proc/asound/devices 檔案。

例如,若要使用 ffmpeg 從卡 ID 為 0 的 ALSA 裝置擷取,您可以執行以下命令

ffmpeg -f alsa -i hw:0 alsaout.wav

如需更多資訊,請參閱:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

26.1.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

26.2 android_camera

Android 相機輸入裝置。

此輸入裝置使用 Android Camera2 NDK API,該 API 在 API 等級 24+ 的裝置上可用。android_camera 的可用性在配置期間自動偵測。

此裝置允許從 Android 裝置上的所有相機擷取,這些相機已整合到 Camera2 NDK API 中。

可用的相機在內部枚舉,可以使用 camera_index 參數選擇。輸入檔案字串會被捨棄。

一般來說,後置相機的索引為 0,而前置相機的索引為 1。

26.2.1 選項

video_size

設定影片大小,以字串形式給定,例如 640x480 或 hd720。如果請求的影片大小不可用,或預設情況下,則會回退到 Android 報告的第一個可用配置。

framerate

設定影片影格率。如果請求的影格率不可用,或預設情況下 (-1),則會回退到 Android 報告的第一個可用配置。

camera_index

設定要使用的相機索引。預設值為 0。

input_queue_size

設定要緩衝的最大影格數。預設值為 5。

26.3 avfoundation

AVFoundation 輸入裝置。

AVFoundation 是 Apple 目前推薦的框架,用於在 OSX >= 10.7 以及 iOS 上進行串流擷取。

輸入檔案名稱必須以以下語法給定

-i "[[VIDEO]:[AUDIO]]"

第一個項目選擇視訊輸入,而後者選擇音訊輸入。串流必須由裝置名稱或裝置列表顯示的裝置索引指定。或者,可以使用 -video_device_index <INDEX> 和/或 -audio_device_index <INDEX> 按索引選擇視訊和/或音訊輸入裝置,覆蓋輸入檔案名稱中給定的任何裝置名稱或索引。

可以使用 -list_devices true 列舉所有可用的裝置,列出所有裝置名稱和對應的索引。

有兩個裝置名稱別名

預設

選擇對應類型的 AVFoundation 預設裝置。

none

不錄製對應的媒體類型。這相當於指定空的裝置名稱或索引。

26.3.1 選項

AVFoundation 支援以下選項

-list_devices <TRUE|FALSE>

如果設定為 true,則會提供所有可用輸入裝置的列表,顯示所有裝置名稱和索引。

-video_device_index <INDEX>

依索引指定視訊裝置。覆蓋輸入檔案名稱中給定的任何內容。

-audio_device_index <INDEX>

依索引指定音訊裝置。覆蓋輸入檔案名稱中給定的任何內容。

-pixel_format <FORMAT>

請求視訊裝置使用特定的像素格式。如果指定的格式不受支援,則會提供可用格式的列表,並改用此列表中的第一個格式。可用的像素格式有:monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray

-framerate

設定擷取影格率。預設值為 ntsc,對應於影格率 30000/1001

-video_size

設定視訊影格大小。

-capture_cursor

擷取滑鼠指標。預設值為 0。

-capture_mouse_clicks

擷取螢幕滑鼠點擊。預設值為 0。

-capture_raw_data

擷取原始裝置資料。預設值為 0。使用此選項可能會導致接收傳遞到 AVFoundation 框架的基礎資料。例如,對於將原始 DV 資料傳送到框架的多工裝置(如卡帶式攝影機),將此選項設定為 false 只會擷取以指定像素格式擷取的視訊影格。將此選項設定為 true 會導致接收未經修改的原始 DV 串流。

26.3.2 範例

  • 列印 AVFoundation 支援的裝置列表並結束
    $ ffmpeg -f avfoundation -list_devices true -i ""
    
  • 從視訊裝置 0 和音訊裝置 0 錄製視訊到 out.avi
    $ ffmpeg -f avfoundation -i "0:0" out.avi
    
  • 從視訊裝置 2 和音訊裝置 1 錄製視訊到 out.avi
    $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
    
  • 使用像素格式 bgr0 從系統預設視訊裝置錄製視訊,且不錄製任何音訊到 out.avi
    $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
    
  • 從合適的輸入裝置錄製原始 DV 資料,並將輸出寫入 out.dv
    $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
    

26.4 bktr

BSD 視訊輸入裝置。已棄用且將被移除 - 如果您有興趣維護它,請聯絡開發人員。

26.4.1 選項

framerate

設定影格率。

video_size

設定視訊影格大小。預設值為 vga

standard

可用的值為

pal
ntsc
secam
paln
palm
ntscj

26.5 decklink

decklink 輸入裝置為 Blackmagic DeckLink 裝置提供擷取功能。

若要啟用此輸入裝置,您需要 Blackmagic DeckLink SDK,並且需要使用適當的 --extra-cflags--extra-ldflags 進行配置。在 Windows 上,您需要透過 widl 執行 IDL 檔案。

DeckLink 對其支援的格式非常挑剔。輸入的像素格式可以使用 raw_format 設定。影格率和視訊大小必須使用 -list_formats 1 為您的裝置確定。音訊取樣率始終為 48 kHz,聲道數可以是 2、8 或 16。請注意,所有音訊聲道都捆綁在一個單一音軌中。

26.5.1 選項

list_devices

如果設定為 true,則列印裝置列表並結束。預設為 false。此選項已棄用,請使用 ffmpeg 的 -sources 選項來列出可用的輸入裝置。

list_formats

如果設定為 true,則列印支援的格式列表並結束。預設為 false

format_code <FourCC>

這會將輸入視訊格式設定為 FourCC 給定的格式。若要查看您的裝置支援的值,請使用 list_formats。請注意,有一個 FourCC 'pal ' 也可以用作 pal(3 個字母)。預設行為是自動偵測輸入視訊格式(如果硬體支援)。

raw_format

設定擷取視訊的像素格式。可用的值為

auto

這是預設值,表示如果使用格式自動偵測,則為 8 位元 YUV 422 或 8 位元 ARGB,否則為 8 位元 YUV 422。

uyvy422

8 位元 YUV 422。

yuv422p10

10 位元 YUV 422。

argb

8 位元 RGB。

bgra

8 位元 RGB。

rgb10

10 位元 RGB。

teletext_lines

如果設定為非零值,則將從垂直輔助資料擷取額外的圖文電視串流。支援 SD PAL (576i) 和 HD (1080i 或 1080p) 來源。對於 HD 來源,會解碼 OP47 封包。

此選項是擷取的 SD PAL VBI 行的位元遮罩,特別是第 6 到 22 行和第 318 到 335 行。第 6 行是遮罩中的 LSB。選取的未包含圖文電視資訊的行將被忽略。您可以使用特殊的 all 常數來選取所有可能的行,或使用 standard 來跳過與所有接收器不相容的第 6、318 和 319 行。

對於 SD 來源,ffmpeg 需要使用 --enable-libzvbi 編譯。對於 HD 來源,在較舊(4K 前)的 DeckLink 卡型號上,您必須以 10 位元模式擷取。

channels

定義要擷取的音訊聲道數。必須是 ‘2’、‘8’ 或 ‘16’。預設為 ‘2’。

duplex_mode

設定 decklink 裝置雙工/設定檔模式。必須是 ‘unset’、‘half’、‘full’、‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half’。預設為 ‘unset’。

注意:DeckLink SDK 11.0 已將雙工屬性替換為設定檔屬性。對於 DeckLink Duo 2 和 DeckLink Quad 2,設定檔在任何 2 個使用相同連接器的子裝置之間共享。對於 DeckLink 8K Pro,設定檔在所有 4 個子裝置之間共享。因此 DeckLink 8K Pro 支援四個設定檔。

DeckLink 8K Pro 的有效設定檔模式(使用 DeckLink SDK >= 11.0):‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half

DeckLink Quad 2 和 DeckLink Duo 2 的有效設定檔模式:‘half’、‘full

timecode_format

要包含在影格和視訊串流中繼資料中的時間碼類型。必須是 ‘none’、‘rp188vitc’、‘rp188vitc2’、‘rp188ltc’、‘rp188hfr’、‘rp188any’、‘vitc’、‘vitc2’ 或 ‘serial’。預設為 ‘none’(不包含)。

為了正確支援 50/60 fps 時間碼,對於 >30 fps 內容,‘rp188any’ 查詢的時間碼類型順序為 HFR、VITC1、VITC2 和 LTC。請注意,這與 DeckLink API 使用的順序略有不同,DeckLink API 的順序為 HFR、VITC1、LTC、VITC2。

video_input

設定視訊輸入來源。必須是 ‘unset’、‘sdi’、‘hdmi’、‘optical_sdi’、‘component’、‘composite’ 或 ‘s_video’。預設為 ‘unset’。

audio_input

設定音訊輸入來源。必須是 ‘unset’、‘embedded’、‘aes_ebu’、‘analog’、‘analog_xlr’、‘analog_rca’ 或 ‘microphone’。預設為 ‘unset’。

video_pts

設定視訊封包時間戳記來源。必須是 ‘video’、‘audio’、‘reference’、‘wallclock’ 或 ‘abs_wallclock’。預設為 ‘video’。

audio_pts

設定音訊封包時間戳記來源。必須是 ‘video’、‘audio’、‘reference’、‘wallclock’ 或 ‘abs_wallclock’。預設為 ‘audio’。

draw_bars

如果設定為 ‘true’,則在訊號遺失時繪製彩條。預設為 ‘true’。此選項已棄用,請使用 signal_loss_action 選項。

signal_loss_action

設定在訊號遺失時要採取的動作。接受以下其中一個值

1, none

訊號遺失時不執行任何動作。這通常會導致黑色影格。

2, bars

在訊號遺失時繪製彩條。僅支援 8 位元輸入訊號。

3, repeat

在訊號遺失時重複最後一個視訊影格。

預設為 ‘bars’。

queue_size

設定最大輸入緩衝區大小,單位為位元組。如果緩衝達到此值,則會捨棄傳入的影格。預設為 ‘1073741824’。

audio_depth

設定音訊取樣位元深度。必須是 ‘16’ 或 ‘32’。預設為 ‘16’。

decklink_copyts

若設定為 true,時間戳記會直接轉發,不會移除初始偏移量。預設值為 false

timestamp_align

以秒為單位的擷取開始時間對齊。若設定為非零值,輸入幀會被捨棄,直到系統時間戳記與設定值對齊。容許最多一個幀時長的對齊差異。這對於在為「N向」冗餘部署的 N 個不同硬體裝置之間維持輸入同步非常有用。在使用此選項之前,不同硬體裝置的系統時間應使用 NTP 或 PTP 等協定進行同步。請注意,此方法並非萬無一失。在某些邊緣情況下,由於作業系統中的執行緒排程抖動,輸入同步可能不會發生。同步可能會錯誤 1 幀,或者在更罕見的情況下會錯誤 timestamp_align 秒。預設值為 ‘0’。

wait_for_tc (布林值)

捨棄幀,直到收到帶有時間碼的幀。有時串列時間碼不會與第一個輸入幀一起接收。如果發生這種情況,儲存的串流時間碼將不準確。若此選項設定為 true,則會捨棄輸入幀,直到收到帶有時間碼的幀。必須指定選項 timecode_format。預設值為 false

enable_klv(布林值)

若設定為 true,則從 VANC 提取 KLV 資料並輸出 KLV 封包。KLV VANC 封包會根據 MID 和 PSC 欄位進行聯結,並彙整為一個 KLV 封包。預設值為 false

26.5.2 範例

  • 列出輸入裝置
    ffmpeg -sources decklink
    
  • 列出支援的格式
    ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
    
  • 以 1080i50 擷取視訊片段
    ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
    
  • 以 1080i50 10 位元擷取視訊片段
    ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    
  • 以 1080i50 擷取視訊片段,帶有 16 個音訊頻道
    ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    

26.6 dshow

Windows DirectShow 輸入裝置。

當 FFmpeg 使用 mingw-w64 專案建置時,會啟用 DirectShow 支援。目前僅支援音訊和視訊裝置。

多個裝置可以作為個別輸入開啟,但它們也可以在同一個輸入上開啟,這應該可以改善它們之間的同步性。

輸入名稱應採用以下格式

TYPE=NAME[:TYPE=NAME]

其中 TYPE 可以是 audiovideo,而 NAME 是裝置的名稱或替代名稱。

26.6.1 選項

如果未指定任何選項,則會使用裝置的預設值。如果裝置不支援要求的選項,則會開啟失敗。

video_size

設定擷取視訊中的視訊尺寸。

framerate

設定擷取視訊中的幀率。

sample_rate

設定擷取音訊的取樣率(以 Hz 為單位)。

sample_size

設定擷取音訊的取樣大小(以位元為單位)。

channels

設定擷取音訊中的頻道數量。

list_devices

若設定為 true,則列印裝置列表並退出。

list_options

若設定為 true,則列印所選裝置的選項列表並退出。

video_device_number

為具有相同名稱的裝置設定視訊裝置編號(從 0 開始,預設為 0)。

audio_device_number

為具有相同名稱的裝置設定音訊裝置編號(從 0 開始,預設為 0)。

pixel_format

選擇 DirectShow 要使用的像素格式。僅當未設定視訊編解碼器或設定為 rawvideo 時,才能設定此選項。

audio_buffer_size

以毫秒為單位設定音訊裝置緩衝區大小(這會直接影響延遲,具體取決於裝置)。預設為使用音訊裝置的預設緩衝區大小(通常是 500 毫秒的倍數)。將此值設定得太低可能會降低效能。另請參閱 http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx

video_pin_name

依名稱或替代名稱選擇要使用的視訊擷取針腳。

audio_pin_name

依名稱或替代名稱選擇要使用的音訊擷取針腳。

crossbar_video_input_pin_number

為 crossbar 裝置選擇視訊輸入針腳編號。這將路由到 crossbar 裝置的視訊解碼器輸出針腳。請注意,變更此值可能會影響未來的調用(設定新的預設值),直到系統重新啟動為止。

crossbar_audio_input_pin_number

為 crossbar 裝置選擇音訊輸入針腳編號。這將路由到 crossbar 裝置的音訊解碼器輸出針腳。請注意,變更此值可能會影響未來的調用(設定新的預設值),直到系統重新啟動為止。

show_video_device_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們手動變更視訊濾鏡屬性和配置。請注意,對於 crossbar 裝置,有時可能需要在這個對話方塊中調整值,以在 PAL (25 fps) 和 NTSC (29.97) 輸入幀率、尺寸、交錯等之間切換。變更這些值可以啟用不同的掃描率/幀率,並避免底部出現綠條、掃描線閃爍等情況。請注意,對於某些裝置,變更這些屬性也可能會影響未來的調用(設定新的預設值),直到系統重新啟動為止。

show_audio_device_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們手動變更音訊濾鏡屬性和配置。

show_video_crossbar_connection_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們在開啟視訊裝置時手動修改 crossbar 針腳路由。

show_audio_crossbar_connection_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們在開啟音訊裝置時手動修改 crossbar 針腳路由。

show_analog_tv_tuner_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們手動修改電視頻道和頻率。

show_analog_tv_tuner_audio_dialog

若設定為 true,則在擷取開始之前,會彈出顯示對話方塊給最終使用者,允許他們手動修改電視音訊(例如單聲道與立體聲、語言 A、B 或 C)。

audio_device_load

從檔案載入音訊擷取濾鏡裝置,而不是依名稱搜尋。如果濾鏡支援將其屬性序列化,它也可能會載入其他參數。若要使用此功能,必須指定音訊擷取來源,但它可以是任何來源,甚至是虛假的來源。

audio_device_save

將目前使用的音訊擷取濾鏡裝置及其參數(如果濾鏡支援)儲存到檔案。如果存在同名的檔案,則會覆寫該檔案。

video_device_load

從檔案載入視訊擷取濾鏡裝置,而不是依名稱搜尋。如果濾鏡支援將其屬性序列化,它也可能會載入其他參數。若要使用此功能,必須指定視訊擷取來源,但它可以是任何來源,甚至是虛假的來源。

video_device_save

將目前使用的視訊擷取濾鏡裝置及其參數(如果濾鏡支援)儲存到檔案。如果存在同名的檔案,則會覆寫該檔案。

use_video_device_timestamps

若設定為 false,則視訊幀的時間戳記將從系統時鐘取得,而不是從擷取裝置提供的時間戳記取得。這允許繞過提供不可靠時間戳記的裝置。

26.6.2 範例

  • 列印 DirectShow 支援的裝置列表並退出
    $ ffmpeg -list_devices true -f dshow -i dummy
    
  • 開啟視訊裝置 Camera
    $ ffmpeg -f dshow -i video="Camera"
    
  • 開啟第二個名稱為 Camera 的視訊裝置
    $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
    
  • 開啟視訊裝置 Camera 和音訊裝置 Microphone
    $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
    
  • 列印所選裝置中支援的選項列表並退出
    $ ffmpeg -list_options true -f dshow -i video="Camera"
    
  • 指定針腳名稱以依名稱或替代名稱擷取,指定替代裝置名稱
    $ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
    
  • 配置 crossbar 裝置,指定 crossbar 針腳,允許使用者在啟動時調整視訊擷取屬性
    $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
         -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
    

26.7 fbdev

Linux framebuffer 輸入裝置。

Linux framebuffer 是一個圖形硬體獨立的抽象層,用於在電腦螢幕上顯示圖形,通常在主控台上。它透過檔案裝置節點存取,通常是 /dev/fb0

如需更多詳細資訊,請閱讀 Linux 原始碼樹中包含的 Documentation/fb/framebuffer.txt 檔案。

另請參閱 http://linux-fbdev.sourceforge.net/ 和 fbset(1)。

若要使用 ffmpeg 從 framebuffer 裝置 /dev/fb0 錄製

ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi

您可以使用以下命令擷取單張螢幕截圖影像

ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg

26.7.1 選項

framerate

設定幀率。預設值為 25。

26.8 gdigrab

基於 Win32 GDI 的螢幕擷取裝置。

此裝置允許您在 Windows 上擷取顯示器的區域。

輸入檔案名稱的選項包括以下元素

desktop

title=window_title

hwnd=window_hwnd

第一個選項將擷取整個桌面或桌面的固定區域。第二個和第三個選項將改為擷取單個視窗的內容,無論其在螢幕上的位置如何。

例如,若要使用 ffmpeg 擷取整個桌面

ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg

在位置 10,20 擷取 640x480 區域

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

擷取名為「Calculator」的視窗內容

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

26.8.1 選項

draw_mouse

指定是否繪製滑鼠指標。使用值 0 不繪製指標。預設值為 1

framerate

設定擷取幀率。預設值為 ntsc,對應於 30000/1001 的幀率。

show_region

在螢幕上顯示擷取的區域。

如果 show_region 指定為 1,則擷取區域將在螢幕上指示。使用此選項,如果僅擷取螢幕的一部分,則很容易知道正在擷取什麼。

請注意,show_region 與擷取單個視窗的內容不相容。

例如

ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
video_size

設定視訊幀大小。如果選擇 desktop,則預設為擷取全螢幕;如果選擇 title=window_title,則預設為擷取完整視窗大小。

offset_x

當使用 video_size 擷取區域時,設定與螢幕或桌面左邊緣的距離。

請注意,偏移量的計算是從 Windows 上主螢幕的左上角開始。如果您的螢幕位於主螢幕的左側,則需要使用負 offset_x 值將區域移動到該螢幕。

offset_y

當使用 video_size 擷取區域時,設定與螢幕或桌面頂邊緣的距離。

請注意,偏移量的計算是從 Windows 上主螢幕的左上角開始。如果您的螢幕位於主螢幕的上方,則需要使用負 offset_y 值將區域移動到該螢幕。

26.9 iec61883

使用 libiec61883 的 FireWire DV/HDV 輸入裝置。

若要啟用此輸入裝置,您需要在系統上安裝 libiec61883、libraw1394 和 libavc1394。使用組態選項 --enable-libiec61883 編譯以啟用裝置。

iec61883 擷取裝置支援從透過 IEEE1394 (FireWire) 連接的視訊裝置擷取,使用 libiec61883 和新的 Linux FireWire 堆疊 (juju)。自舊的 FireWire 堆疊被移除後,這是 Linux Kernel 2.6.37 及更高版本中的預設 DV/HDV 輸入方法。

指定要用作輸入檔案的 FireWire 連接埠,或使用「auto」選擇第一個連接的連接埠。

26.9.1 選項

dvtype

覆寫 DV/HDV 的自動偵測。只有在自動偵測不起作用時,或應禁止使用不同裝置類型時,才應使用此選項。將 DV 裝置視為 HDV(或反之亦然)將無法運作並導致未定義的行為。支援值 autodvhdv

dvbuffer

設定傳入資料的緩衝區最大大小,以幀為單位。對於 DV,這是一個確切的值。對於 HDV,它不是幀精確的,因為 HDV 沒有固定的幀大小。

dvguid

透過指定其 GUID 來選擇擷取裝置。擷取將僅從指定的裝置執行,如果找不到具有給定 GUID 的裝置,則會失敗。如果同時連接了多個裝置,這對於選擇輸入非常有用。查看 /sys/bus/firewire/devices 以找出 GUID。

26.9.2 範例

  • 擷取並顯示 FireWire DV/HDV 裝置的輸入。
    ffplay -f iec61883 -i auto
    
  • 擷取並錄製 FireWire DV/HDV 裝置的輸入,如果來源是 HDV,則使用 100000 個封包的封包緩衝區。
    ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
    

26.10 jack

JACK 輸入裝置。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 libjack。

JACK 輸入裝置會建立一個或多個 JACK 可寫入用戶端,每個音訊頻道一個,名稱為 client_name:input_N,其中 client_name 是應用程式提供的名稱,而 N 是一個識別頻道的數字。每個可寫入用戶端都會將取得的資料傳送到 FFmpeg 輸入裝置。

一旦您建立了一個或多個 JACK 可讀取用戶端,您需要將它們連接到一個或多個 JACK 可寫入用戶端。

若要連接或斷開 JACK 用戶端,您可以使用 jack_connectjack_disconnect 程式,或透過圖形介面進行,例如使用 qjackctl

若要列出 JACK 用戶端及其屬性,您可以調用命令 jack_lsp

以下範例示範如何使用 ffmpeg 擷取 JACK 可讀取用戶端。

# Create a JACK writable client with name "ffmpeg".
$ ffmpeg -f jack -i ffmpeg -y out.wav

# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000

# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm

# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1

如需更多資訊,請參閱:http://jackaudio.org/

26.10.1 選項

channels

設定聲道數。預設值為 2。

26.11 kmsgrab

KMS 視訊輸入裝置。

擷取與指定 CRTC 或平面相關聯的 KMS 掃描輸出 framebuffer,作為可以傳遞給其他硬體功能的 DRM 物件。

需要 DRM master 或 CAP_SYS_ADMIN 才能執行。

如果您不了解所有這些含義,您可能不需要這個。請改為查看 x11grab

26.11.1 選項

裝置

用於擷取的 DRM 裝置。預設為 /dev/dri/card0

格式

幀緩衝區的像素格式。如果您執行的是 Linux 5.7 或更新版本,則可以自動偵測到此格式,但對於較早的版本,則需要提供。預設為 bgr0,這是 Linux 控制台和 Xorg X 伺服器最常用的格式。

format_modifier

要在輸出幀上發送信號的格式修飾符。為了正確匯入到某些 API 中,這是必要的。如果您執行的是 Linux 5.7 或更新版本,則可以自動偵測到此格式修飾符,但在較早版本中需要時,則需要明確提供。請參閱 libdrm 文件以了解可能的值。

crtc_id

KMS CRTC ID,用於定義擷取來源。將使用給定 CRTC 上的第一個活動平面。

plane_id

KMS 平面 ID,用於定義擷取來源。如果未指定 crtc_idplane_id,則預設為找到的第一個活動平面。

framerate

要擷取的幀率。這與任何頁面翻轉或幀緩衝區變更都不同步 - 它僅定義對幀緩衝區進行採樣的間隔。採樣速度快於幀緩衝區更新率將產生內容相同的獨立幀。預設為 30

26.11.2 範例

  • 從第一個活動平面擷取,將結果下載到普通幀並進行編碼。這僅在幀緩衝區既是線性的又是可映射的情況下才有效 - 否則,結果可能會混亂或下載失敗。
    ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
    
  • 以 60fps 從 CRTC ID 42 擷取,將結果映射到 VAAPI,轉換為 NV12 並編碼為 H.264。
    ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
    
  • 要僅擷取平面的部分區域,可以裁剪輸出 - 這可以用於擷取單個視窗,只要它具有已知的絕對位置和大小即可。例如,要擷取和編碼 1920x1080 平面的中間四分之一
    ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
    

26.12 lavfi

Libavfilter 輸入虛擬裝置。

此輸入裝置從 libavfilter 濾鏡圖的開放輸出墊讀取資料。

對於每個濾鏡圖開放輸出,輸入裝置將建立一個對應的流,該流映射到產生的輸出。濾鏡圖透過選項 graph 指定。

26.12.1 選項

graph

指定要用作輸入的濾鏡圖。每個視訊開放輸出都必須用 "outN" 形式的唯一字串標記,其中 N 是從 0 開始的數字,對應於裝置產生的映射輸入流。第一個未標記的輸出會自動分配到 "out0" 標籤,但所有其他輸出都需要明確指定。

後綴 "+subcc" 可以附加到輸出標籤,以建立一個額外的流,其中包含附加到該輸出的隱藏式字幕封包(實驗性;目前僅適用於 EIA-608 / CEA-708)。subcc 流在所有普通流之後建立,順序與對應的流相同。例如,如果存在 "out19+subcc"、"out7+subcc" 以及最多 "out42",則流 #43 是流 #7 的 subcc,流 #44 是流 #19 的 subcc。

如果未指定,則預設為輸入裝置指定的檔案名稱。

graph_file

設定要讀取並傳送到其他濾鏡的濾鏡圖的檔案名稱。濾鏡圖的語法與選項 graph 指定的語法相同。

dumpgraph

將圖形轉儲到 stderr。

26.12.2 範例

  • 建立彩色視訊流並使用 ffplay 播放它
    ffplay -f lavfi -graph "color=c=pink [out0]" dummy
    
  • 與前一個範例相同,但使用檔案名稱指定圖形描述,並省略 "out0" 標籤
    ffplay -f lavfi color=c=pink
    
  • 建立三個不同的視訊測試過濾源並播放它們
    ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
    
  • 使用 amovie 源從檔案讀取音訊流並使用 ffplay 播放它
    ffplay -f lavfi "amovie=test.wav"
    
  • 讀取音訊流和視訊流並使用 ffplay 播放它
    ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
    
  • 將解碼的幀轉儲到圖像,並將隱藏式字幕轉儲到 RCWT 備份
    ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
    

26.13 libcdio

基於 libcdio 的 Audio-CD 輸入裝置。

要在配置期間啟用此輸入裝置,您需要在系統上安裝 libcdio。它需要配置選項 --enable-libcdio

此裝置允許播放和抓取 Audio-CD。

例如,要使用 ffmpeg 複製 /dev/sr0 中的整個 Audio-CD,您可以執行命令

ffmpeg -f libcdio -i /dev/sr0 cd.wav

26.13.1 選項

speed

設定光碟機讀取速度。預設值為 0。

速度以 CD-ROM 速度單位指定。速度透過 libcdio cdio_cddap_speed_set 函數設定。在許多 CD-ROM 光碟機上,指定的值過大將導致使用最快的速度。

paranoia_mode

設定偏執狂恢復模式標誌。它接受以下值之一

disable
verify
overlap
neverskip
full

預設值為 ‘disable’。

有關可用恢復模式的更多資訊,請查閱 paranoia 專案文件。

26.14 libdc1394

基於 libdc1394 和 libraw1394 的 IIDC1394 輸入裝置。

需要配置選項 --enable-libdc1394

26.14.1 選項

framerate

設定幀率。預設為 ntsc,對應於 30000/1001 的幀率。

pixel_format

選擇像素格式。預設為 uyvy422

video_size

設定視訊大小,格式為字串,例如 640x480hd720。預設為 qvga

26.15 openal

OpenAL 輸入裝置在所有具有正常運作的 OpenAL 1.1 實作的系統上提供音訊擷取。

要在配置期間啟用此輸入裝置,您需要在系統上安裝 OpenAL 標頭和函式庫,並且需要使用 --enable-openal 配置 FFmpeg。

OpenAL 標頭和函式庫應作為 OpenAL 實作的一部分提供,或作為額外下載(SDK)。根據您的安裝,您可能需要透過 --extra-cflags--extra-ldflags 指定額外標誌,以允許建置系統找到 OpenAL 標頭和函式庫。

以下是不完整的 OpenAL 實作列表

Creative

官方 Windows 實作,提供支援裝置的硬體加速和軟體後備。請參閱 http://openal.org/

OpenAL Soft

可攜式、開放原始碼 (LGPL) 軟體實作。包含 Windows、Linux、Solaris 和 BSD 作業系統上最常見聲音 API 的後端。請參閱 http://kcat.strangesoft.net/openal.html

Apple

OpenAL 是 Core Audio 的一部分,Core Audio 是官方 Mac OS X 音訊介面。請參閱 http://developer.apple.com/technologies/mac/audio-and-video.html

此裝置允許從透過 OpenAL 處理的音訊輸入裝置擷取。

您需要在提供的檔案名稱中指定要擷取的裝置名稱。如果提供空字串,裝置將自動選擇預設裝置。您可以使用選項 list_devices 取得支援裝置的列表。

26.15.1 選項

channels

設定擷取音訊中的聲道數。目前僅支援值 1(單聲道)和 2(立體聲)。預設為 2

sample_size

設定擷取音訊的樣本大小(以位元為單位)。目前僅支援值 816。預設為 16

sample_rate

設定擷取音訊的取樣率(以 Hz 為單位)。預設為 44.1k

list_devices

如果設定為 true,則列印裝置列表並退出。預設為 false

26.15.2 範例

列印 OpenAL 支援的裝置列表並退出

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

從 OpenAL 裝置 DR-BT101 via PulseAudio 擷取

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg

從預設裝置擷取(注意空字串 ” 作為檔案名稱)

$ ffmpeg -f openal -i '' out.ogg

在同一個 ffmpeg 命令中,同時從兩個裝置擷取,寫入到兩個不同的檔案

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg

注意:並非所有 OpenAL 實作都支援多個同時擷取 - 如果上述方法不起作用,請嘗試最新的 OpenAL Soft。

26.16 oss

Open Sound System 輸入裝置。

提供給輸入裝置的檔案名稱是表示 OSS 輸入裝置的裝置節點,通常設定為 /dev/dsp

例如,要使用 ffmpeg/dev/dsp 抓取,請使用命令

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

有關 OSS 的更多資訊,請參閱:http://manuals.opensound.com/usersguide/dsp.html

26.16.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

26.17 pulse

PulseAudio 輸入裝置。

要啟用此輸出裝置,您需要使用 --enable-libpulse 配置 FFmpeg。

提供給輸入裝置的檔案名稱是源裝置或字串 "default"

要列出 PulseAudio 源裝置及其屬性,您可以調用命令 pactl list sources

有關 PulseAudio 的更多資訊,請參閱 http://www.pulseaudio.org

26.17.1 選項

server

連線到特定的 PulseAudio 伺服器,由 IP 位址指定。未提供時,使用預設伺服器。

name

指定 PulseAudio 在顯示活動用戶端時將使用的應用程式名稱,預設為 LIBAVFORMAT_IDENT 字串。

stream_name

指定 PulseAudio 在顯示活動流時將使用的流名稱,預設為 "record"。

sample_rate

指定取樣率,以 Hz 為單位,預設使用 48kHz。

channels

指定使用的聲道,預設設定為 2(立體聲)。

frame_size

此選項不執行任何操作,並且已棄用。

fragment_size

指定 PulseAudio 中最小緩衝片段的大小(以位元組為單位),它將影響音訊延遲。預設設定為 50 毫秒的資料量。

wallclock

使用目前時間設定初始 PTS。預設值為 1。

26.17.2 範例

從預設裝置錄製流

ffmpeg -f pulse -i default /tmp/pulse.wav

26.18 sndio

sndio 輸入裝置。

要在配置期間啟用此輸入裝置,您需要在系統上安裝 libsndio。

提供給輸入裝置的檔案名稱是表示 sndio 輸入裝置的裝置節點,通常設定為 /dev/audio0

例如,要使用 ffmpeg/dev/audio0 抓取,請使用命令

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

26.18.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

26.19 video4linux2, v4l2

Video4Linux2 輸入視訊裝置。

"v4l2" 可以用作 "video4linux2" 的別名。

如果 FFmpeg 是使用 v4l-utils 支援建置的(透過使用 --enable-libv4l2 配置選項),則可以將其與 -use_libv4l2 輸入裝置選項一起使用。

要抓取的裝置名稱是檔案裝置節點,通常 Linux 系統在裝置(例如 USB 網路攝影機)插入系統時會自動建立此類節點,並且名稱類型為 /dev/videoN,其中 N 是與裝置關聯的數字。

Video4Linux2 裝置通常支援有限的 widthxheight 大小和幀率。您可以使用 -list_formats all 檢查 Video4Linux2 裝置支援哪些格式。某些裝置(如電視卡)支援一個或多個標準。可以使用 -list_standards all 列出所有支援的標準。

時間戳記的時間基底為 1 微秒。根據核心版本和配置,時間戳記可能來自即時時鐘(原點為 Unix Epoch)或單調時鐘(原點通常為啟動時間,不受 NTP 或手動時鐘變更的影響)。-timestamps abs-ts abs 選項可用於強制轉換為即時時鐘。

video4linux2 裝置與 ffmpegffplay 的一些使用範例

  • 列出 video4linux2 裝置支援的格式
    ffplay -f video4linux2 -list_formats all /dev/video0
    
  • 抓取並顯示 video4linux2 裝置的輸入
    ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
    
  • 抓取並錄製 video4linux2 裝置的輸入,保持幀率和大小與先前設定相同
    ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
    

有關 Video4Linux 的更多資訊,請查看 http://linuxtv.org/

26.19.1 選項

standard

設定標準。必須是支援標準的名稱。要取得支援標準的列表,請使用 list_standards 選項。

channel

設定輸入聲道號碼。預設為 -1,表示使用先前選取的聲道。

video_size

設定視訊幀大小。參數必須是 WIDTHxHEIGHT 形式的字串或有效的尺寸縮寫。

pixel_format

選擇像素格式(僅對原始視訊輸入有效)。

input_format

設定首選像素格式(對於原始視訊)或編解碼器名稱。當有多種可用格式時,此選項允許選擇輸入格式。

framerate

設定首選視訊幀率。

list_formats

列出可用格式(支援的像素格式、編解碼器和幀大小)並退出。

可用的值為

all

顯示所有可用(壓縮和未壓縮)格式。

raw

僅顯示原始視訊(未壓縮)格式。

compressed

僅顯示壓縮格式。

list_standards

列出支援的標準並退出。

可用的值為

all

顯示所有支援的標準。

timestamps, ts

設定抓取幀的時間戳記類型。

可用的值為

default

使用來自核心的時間戳記。

abs

使用絕對時間戳記(系統時鐘)。

mono2abs

強制從單調時間戳記轉換為絕對時間戳記。

預設值為 default

use_libv4l2

使用 libv4l2 (v4l-utils) 轉換函數。預設值為 0。

26.20 vfwcap

VfW (Video for Windows) 擷取輸入裝置。

作為輸入傳遞的檔案名稱是擷取驅動程式號碼,範圍從 0 到 9。您可以使用 "list" 作為檔案名稱來列印驅動程式列表。任何其他檔案名稱都將被解釋為裝置號碼 0。

26.20.1 選項

video_size

設定視訊影格大小。

framerate

設定擷取幀率。預設值為 ntsc,對應於 30000/1001 的幀率。

26.21 x11grab

X11 視訊輸入裝置。

要在配置期間啟用此輸入裝置,您需要在系統上安裝 libxcb。它將在配置期間自動偵測到。

此裝置允許擷取 X11 顯示器的區域。

作為輸入傳遞的檔案名稱具有以下語法

[hostname]:display_number.screen_number[+x_offset,y_offset]

hostname:display_number.screen_number 指定要從中抓取的螢幕的 X11 顯示器名稱。hostname 可以省略,預設為 "localhost"。環境變數 DISPLAY 包含預設顯示器名稱。

x_offsety_offset 指定抓取區域相對於 X11 螢幕左上邊界的偏移量。它們預設為 0。

查看 X11 文件(例如 man X)以取得更詳細的資訊。

使用 xdpyinfo 程式取得有關 X11 顯示器屬性的基本資訊(例如,grep "name" 或 "dimensions")。

例如,要使用 ffmpeg:0.0 抓取

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

在位置 10,20 抓取

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

26.21.1 選項

select_region

指定是否使用指標以圖形方式選擇抓取區域。值為 1 會提示使用者透過點擊和拖曳以圖形方式選擇抓取區域。單擊而不拖曳將選擇整個螢幕。寬度或高度為零的區域也將選擇整個螢幕。此選項會覆寫 video_sizegrab_xgrab_y 選項。預設值為 0

draw_mouse

指定是否繪製滑鼠指標。值為 0 指定不繪製指標。預設值為 1

follow_mouse

使抓取區域跟隨滑鼠。參數可以是 centered 或像素數量 PIXELS

當指定為 "centered" 時,抓取區域會跟隨滑鼠指標,並保持指標在區域中心;否則,只有當滑鼠指標到達距離區域邊緣 PIXELS (大於零) 像素範圍內時,區域才會跟隨。

例如

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

僅在滑鼠指標到達距離邊緣 100 像素範圍內時跟隨

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
framerate

設定擷取幀率。預設值為 ntsc,對應於 30000/1001 的幀率。

show_region

在螢幕上顯示擷取的區域。

如果 show_region 指定為 1,則擷取區域將在螢幕上指示。使用此選項,如果僅擷取螢幕的一部分,則很容易知道正在擷取什麼。

region_border

如果使用 -show_region 1,則設定區域邊框粗細。範圍是 1 到 128,預設值是 3 (僅限基於 XCB 的 x11grab)。

例如

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

使用 follow_mouse 選項時

ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
window_id

抓取此視窗,而不是整個螢幕。預設值為 0,對應到整個螢幕 (根視窗)。

可以使用 xwininfo 程式找到視窗的 ID,可能搭配 -tree 和 -root 選項。

如果稍後視窗被放大,則不會錄製新的區域。當視窗關閉、取消對應 (即,最小化) 或縮小到小於影片尺寸 (預設為初始視窗尺寸) 時,影片結束。

此選項會停用 follow_mouseselect_region 選項。

video_size

設定影片幀大小。預設值為完整桌面或視窗。

grab_x
grab_y

設定抓取區域座標。它們表示為從 X11 視窗左上角的偏移量,並對應到裝置名稱中的 x_offsety_offset 參數。這兩個選項的預設值均為 0。

27 輸出裝置

輸出裝置是 FFmpeg 中已設定的元素,可以將多媒體資料寫入連接到您系統的輸出裝置。

當您設定 FFmpeg 建置時,所有支援的輸出裝置預設都會啟用。您可以使用設定選項 "–list-outdevs" 列出所有可用的輸出裝置。

您可以使用設定選項 "–disable-outdevs" 停用所有輸出裝置,並使用選項 "–enable-outdev=OUTDEV" 選擇性地啟用輸出裝置,或者您可以使用選項 "–disable-outdev=OUTDEV" 停用特定的輸出裝置。

ff* 工具程式的 "-devices" 選項將顯示已啟用的輸出裝置列表。

以下描述目前可用的輸出裝置。

27.1 alsa

ALSA (Advanced Linux Sound Architecture) 輸出裝置 (進階 Linux 音訊架構)。

27.1.1 範例

  • 在預設 ALSA 裝置上播放檔案
    ffmpeg -i INPUT -f alsa default
    
  • 在音效卡 1,音訊裝置 7 上播放檔案
    ffmpeg -i INPUT -f alsa hw:1,7
    

27.2 AudioToolbox

AudioToolbox 輸出裝置 (音訊工具箱)。

允許原生輸出到 OSX 上的 CoreAudio 裝置。

輸出檔案名稱可以為空 (或 -) 以指稱預設系統輸出裝置,或者是一個數字,該數字指稱使用 -list_devices true 顯示的裝置索引。

或者,可以使用 -audio_device_index <INDEX> 透過索引選擇音訊輸出裝置,覆寫在輸出檔案名稱中給定的任何裝置名稱或索引。

所有可用的裝置都可以使用 -list_devices true 列舉,列出所有裝置名稱、UID 以及對應的索引。

27.2.1 選項

AudioToolbox 支援以下選項

-audio_device_index <INDEX>

透過索引指定音訊裝置。覆寫輸出檔案名稱中指定的任何內容。

27.2.2 範例

  • 印出支援裝置的列表並輸出正弦波到預設裝置
    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
    
  • 輸出正弦波到索引為 2 的裝置,覆寫任何輸出檔案名稱
    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -
    

27.3 caca

CACA 輸出裝置 (彩色 ASCII 圖形字元藝術)。

此輸出裝置允許在 CACA 視窗中顯示影片串流。每個應用程式僅允許一個 CACA 視窗,因此您在一個應用程式中只能有一個此輸出裝置的實例。

若要啟用此輸出裝置,您需要使用 --enable-libcaca 設定 FFmpeg。libcaca 是一個圖形庫,它輸出文字而不是像素。

有關 libcaca 的更多資訊,請查看:http://caca.zoy.org/wiki/libcaca

27.3.1 選項

window_title

設定 CACA 視窗標題,如果未指定,則預設為為輸出裝置指定的檔案名稱。

window_size

設定 CACA 視窗大小,可以是 widthxheight 格式的字串或影片尺寸縮寫。如果未指定,則預設為輸入影片的大小。

driver

設定顯示驅動程式。

algorithm

設定抖色演算法。抖色是必要的,因為正在渲染的圖片通常比可用的調色盤顏色更多。接受的值會使用 -list_dither algorithms 列出。

antialias

設定反鋸齒方法。反鋸齒使渲染的圖像更平滑,並避免常見的階梯效應。接受的值會使用 -list_dither antialiases 列出。

charset

設定渲染文字時將使用的字元。接受的值會使用 -list_dither charsets 列出。

color

設定渲染文字時要使用的顏色。接受的值會使用 -list_dither colors 列出。

list_drivers

如果設定為 true,則印出可用驅動程式的列表並退出。

list_dither

列出與參數相關的可用的抖色選項。參數必須是 algorithmsantialiasescharsetscolors 之一。

27.3.2 範例

  • 以下命令顯示 ffmpeg 輸出為 CACA 視窗,強制其大小為 80x25
    ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
    
  • 顯示可用驅動程式的列表並退出
    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
    
  • 顯示可用抖色顏色的列表並退出
    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
    

27.4 decklink

decklink 輸出裝置為 Blackmagic DeckLink 裝置提供播放功能。

若要啟用此輸出裝置,您需要 Blackmagic DeckLink SDK (軟體開發套件),並且需要使用適當的 --extra-cflags--extra-ldflags 進行設定。在 Windows 上,您需要透過 widl 執行 IDL 檔案。

DeckLink 對其支援的格式要求嚴格。像素格式始終為 uyvy422,幀率、場序和影片大小必須使用 -list_formats 1 為您的裝置確定。音訊取樣率始終為 48 kHz。

27.4.1 選項

list_devices

如果設定為 true,則印出裝置列表並退出。預設為 false。此選項已過時,請使用 ffmpeg 的 -sinks 選項來列出可用的輸出裝置。

list_formats

如果設定為 true,則列印支援的格式列表並結束。預設為 false

preroll

影片預先捲動的時間量,以秒為單位。預設為 0.5

duplex_mode

設定 decklink 裝置雙工/設定檔模式。必須是 ‘unset’、‘half’、‘full’、‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half’。預設為 ‘unset’。

注意:DeckLink SDK 11.0 已將雙工屬性替換為設定檔屬性。對於 DeckLink Duo 2 和 DeckLink Quad 2,設定檔在任何 2 個使用相同連接器的子裝置之間共享。對於 DeckLink 8K Pro,設定檔在所有 4 個子裝置之間共享。因此 DeckLink 8K Pro 支援四個設定檔。

DeckLink 8K Pro 的有效設定檔模式(使用 DeckLink SDK >= 11.0):‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half

DeckLink Quad 2 和 DeckLink Duo 2 的有效設定檔模式:‘half’、‘full

timing_offset

在使用的輸出上設定同步鎖定計時像素偏移量。預設為 ‘unset’。

link

在使用的輸出上設定 SDI 影片連結配置。必須是 ‘unset’、‘single’ link SDI、‘dual’ link SDI 或 ‘quad’ link SDI。預設為 ‘unset’。

sqd

為四連結 SDI 輸出啟用方形分割四分割模式。必須是 ‘unset’、‘true’ 或 ‘false’。預設為 unset

level_a

在使用的輸出上啟用 SMPTE Level A 模式。必須是 ‘unset’、‘true’ 或 ‘false’。預設為 unset

vanc_queue_size

設定 VANC 資料的最大輸出緩衝區大小 (以位元組為單位)。如果緩衝達到此值,則傳出的 VANC 資料將會被丟棄。預設為 ‘1048576’。

27.4.2 範例

  • 列出輸出裝置
    ffmpeg -sinks decklink
    
  • 列出支援的格式
    ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
    
  • 播放影片片段
    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
    
  • 播放具有非標準幀率或影片大小的影片片段
    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
    

27.5 fbdev

Linux framebuffer 輸出裝置 (Linux 幀緩衝區)。

Linux framebuffer 是一個圖形硬體獨立的抽象層,用於在電腦螢幕上顯示圖形,通常在主控台上。它透過檔案裝置節點存取,通常是 /dev/fb0

如需更多詳細資訊,請閱讀 Linux 原始碼樹狀結構中包含的 Documentation/fb/framebuffer.txt 檔案。

27.5.1 選項

xoffset
yoffset

設定左上角的 x/y 座標。預設值為 0。

27.5.2 範例

在幀緩衝區裝置 /dev/fb0 上播放檔案。所需的像素格式取決於目前的幀緩衝區設定。

ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0

另請參閱 http://linux-fbdev.sourceforge.net/ 和 fbset(1)。

27.6 opengl

OpenGL 輸出裝置 (開放圖形庫)。已過時且將移除。

若要啟用此輸出裝置,您需要使用 --enable-opengl 設定 FFmpeg。

此輸出裝置允許渲染到 OpenGL 上下文。上下文可以由應用程式提供,或者預設會建立 SDL 視窗。

當裝置渲染到外部上下文時,應用程式必須為以下訊息實作處理常式:AV_DEV_TO_APP_CREATE_WINDOW_BUFFER - 在目前執行緒上建立 OpenGL 上下文。AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER - 將 OpenGL 上下文設為目前。AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER - 交換緩衝區。AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER - 銷毀 OpenGL 上下文。應用程式也需要透過傳送 AV_APP_TO_DEV_WINDOW_SIZE 訊息來告知裝置目前的解析度。

27.6.1 選項

background

設定背景顏色。預設為黑色。

no_window

當設定為非零值時,停用預設 SDL 視窗。當設定時,應用程式必須提供 OpenGL 上下文以及 window_size_cbwindow_swap_buffers_cb 回呼。

window_title

設定 SDL 視窗標題,如果未指定,則預設為為輸出裝置指定的檔案名稱。當設定 no_window 時會被忽略。

window_size

設定偏好的視窗大小,可以是 widthxheight 格式的字串或影片尺寸縮寫。如果未指定,則預設為輸入影片的大小,並根據長寬比縮小。主要在未設定 no_window 時使用。

27.6.2 範例

在 SDL 視窗上使用 OpenGL 渲染播放檔案

ffmpeg  -i INPUT -f opengl "window title"

27.7 oss

OSS (Open Sound System) 輸出裝置 (開放聲音系統)。

27.8 pulse

PulseAudio 輸出裝置 (脈衝音訊)。

要啟用此輸出裝置,您需要使用 --enable-libpulse 配置 FFmpeg。

有關 PulseAudio 的更多資訊,請參閱:http://www.pulseaudio.org

27.8.1 選項

server

連線到特定的 PulseAudio 伺服器,由 IP 位址指定。未提供時,使用預設伺服器。

name

指定 PulseAudio 在顯示活動用戶端時將使用的應用程式名稱,預設為 LIBAVFORMAT_IDENT 字串。

stream_name

指定 PulseAudio 在顯示作用中串流時將使用的串流名稱,預設情況下,它設定為指定的輸出名稱。

裝置

指定要使用的裝置。未提供時會使用預設裝置。輸出裝置列表可以使用命令 pactl list sinks 取得。

buffer_size
buffer_duration

控制 PulseAudio 緩衝區的大小和持續時間。較小的緩衝區提供更多控制,但需要更頻繁的更新。

buffer_size 指定以位元組為單位的大小,而 buffer_duration 指定以毫秒為單位的持續時間。

當同時提供這兩個選項時,將使用較高的值 (持續時間會使用串流參數重新計算為位元組)。如果它們設定為 0 (預設值),則裝置將使用預設 PulseAudio 持續時間值。預設情況下,PulseAudio 將緩衝區持續時間設定為約 2 秒。

prebuf

指定預先緩衝區大小 (以位元組為單位)。伺服器在緩衝區中至少有 prebuf 個位元組可用之前不會開始播放。預設情況下,此選項初始化為與 buffer_sizebuffer_duration (以較大者為準) 相同的值。

minreq

指定最小請求大小 (以位元組為單位)。伺服器不會從用戶端請求少於 minreq 個位元組,而是等待直到緩衝區有足夠空間一次請求更多位元組。建議不要設定此選項,這會將此選項初始化為伺服器認為合理的值。

27.8.2 範例

在預設伺服器上的預設裝置上播放檔案

ffmpeg  -i INPUT -f pulse "stream name"

27.9 sdl

SDL (Simple DirectMedia Layer) 輸出裝置 (簡易多媒體層)。已過時且將移除。

為了在 FFmpeg 中進行監控,可以使用管道和影片播放器,例如 ffplay

ffmpeg -i INPUT -f nut -c:v rawvideo - | ffplay -

"sdl2" 可以作為 "sdl" 的別名使用。

此輸出裝置允許在 SDL 視窗中顯示影片串流。每個應用程式僅允許一個 SDL 視窗,因此您在一個應用程式中只能有一個此輸出裝置的實例。

若要啟用此輸出裝置,在設定您的建置時,您的系統上需要安裝 libsdl。

有關 SDL 的更多資訊,請參閱:http://www.libsdl.org/

27.9.1 選項

window_borderless

關閉 SDL 視窗邊框。預設值為 0 (啟用視窗邊框)。

window_enable_quit

當提供非零值時,啟用退出動作 (使用視窗按鈕或鍵盤按鍵)。預設值為 1 (啟用退出動作)。

window_fullscreen

當提供非零值時,設定全螢幕模式。預設值為零。

window_size

設定 SDL 視窗大小,可以是 widthxheight 格式的字串或影片尺寸縮寫。如果未指定,則預設為輸入影片的大小,並根據長寬比縮小。

window_title

設定 SDL 視窗標題,如果未指定,則預設為為輸出裝置指定的檔案名稱。

window_x
window_y

設定視窗在螢幕上的位置。

27.9.2 互動式指令

裝置建立的視窗可以透過以下互動式命令控制。

q, ESC

立即退出裝置。

27.9.3 範例

以下命令顯示 ffmpeg 輸出為 SDL 視窗,強制其大小為 qcif 格式

ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"

27.10 sndio

sndio 音訊輸出裝置。

27.11 v4l2

Video4Linux2 輸出裝置。

27.12 xv

XV (XVideo) 輸出裝置 (X 影片)。

此輸出裝置允許在 X Window System 視窗中顯示影片串流。

27.12.1 選項

display_name

指定硬體顯示名稱,它決定要使用的顯示和通訊網域。

顯示名稱或 DISPLAY 環境變數可以是 hostname[:number[.screen_number]] 格式的字串。

hostname 指定實體連接顯示器的主機名稱。number 指定該主機上的顯示伺服器編號。screen_number 指定要在該伺服器上使用的螢幕。

如果未指定,則預設為 DISPLAY 環境變數的值。

例如,dual-headed:0.1 將指定名為 “dual-headed” 的機器上顯示器 0 的螢幕 1。

請查看 X11 規格,以獲取有關顯示名稱格式的更多詳細資訊。

window_id

當設定為非零值時,裝置不會建立新視窗,而是使用提供的 window_id 的現有視窗。預設情況下,此選項設定為零,裝置會建立自己的視窗。

window_size

設定建立的視窗大小,可以是 widthxheight 格式的字串或影片尺寸縮寫。如果未指定,則預設為輸入影片的大小。當設定 window_id 時會被忽略。

window_x
window_y

設定建立的視窗的 X 和 Y 視窗偏移量。它們的預設值均為 0。這些值可能會被視窗管理器忽略。當設定 window_id 時會被忽略。

window_title

設定視窗標題,如果未指定,則預設為為輸出裝置指定的檔案名稱。當設定 window_id 時會被忽略。

有關 XVideo 的更多資訊,請參閱:http://www.x.org/

27.12.2 範例

  • 同時使用 ffmpeg 解碼、顯示和編碼影片輸入
    ffmpeg -i INPUT OUTPUT -f xv display
    
  • 解碼輸入影片並將其顯示到多個 X11 視窗
    ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
    

28 重新取樣器選項

音訊重新取樣器支援以下具名選項。

選項可以透過在 FFmpeg 工具中指定 -option value,針對 aresample 濾鏡使用 option=value,在 SwrContext 選項中明確設定值,或使用 libavutil/opt.h API 以程式方式使用來設定。

uchl, used_chlayout

設定使用的輸入聲道佈局。預設為未設定。此選項僅用於特殊重新映射。

isr, in_sample_rate

設定輸入取樣率。預設值為 0。

osr, out_sample_rate

設定輸出取樣率。預設值為 0。

isf, in_sample_fmt

指定輸入取樣格式。預設設定為 none

osf, out_sample_fmt

指定輸出取樣格式。預設設定為 none

tsf, internal_sample_fmt

設定內部取樣格式。預設值為 none。若未明確設定,將會自動選擇此格式。

ichl, in_chlayout
ochl, out_chlayout

設定輸入/輸出聲道佈局。

請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的頻道佈局章節,以了解所需的語法。

clev, center_mix_level

設定中央聲道混合音量。此值以分貝表示,且必須在 [-32,32] 區間內。

slev, surround_mix_level

設定環繞聲道混合音量。此值以分貝表示,且必須在 [-32,32] 區間內。

lfe_mix_level

設定 LFE 聲道混合到非 LFE 聲道音量。當存在 LFE 輸入但沒有 LFE 輸出時使用。此值以分貝表示,且必須在 [-32,32] 區間內。

rmvol, rematrix_volume

設定重新矩陣化音量。預設值為 1.0。

rematrix_maxval

設定重新矩陣化的最大輸出值。這可用於防止削波或防止音量降低。值為 1.0 可防止削波。

flags, swr_flags

設定轉換器使用的旗標。預設值為 0。

它支援以下個別旗標

res

強制重新取樣,即使輸入和輸出取樣率相符,此旗標仍強制使用重新取樣。

dither_scale

設定抖動縮放比例。預設值為 1。

dither_method

設定抖動方法。預設值為 0。

支援的值

rectangular

選擇矩形抖動

triangular

選擇三角形抖動

triangular_hp

選擇帶有高通的三角形抖動

lipshitz

選擇 Lipshitz 雜訊塑形抖動。

shibata

選擇 Shibata 雜訊塑形抖動。

low_shibata

選擇低 Shibata 雜訊塑形抖動。

high_shibata

選擇高 Shibata 雜訊塑形抖動。

f_weighted

選擇 f 加權雜訊塑形抖動

modified_e_weighted

選擇修改的 e 加權雜訊塑形抖動

improved_e_weighted

選擇改良的 e 加權雜訊塑形抖動

resampler

設定重新取樣引擎。預設值為 swr。

支援的值

swr

選擇原生 SW 重新取樣器;濾鏡選項 precision 和 cheby 在此情況下不適用。

soxr

選擇 SoX 重新取樣器(若可用);補償和濾鏡選項 filter_size、phase_shift、exact_rational、filter_type 和 kaiser_beta 在此情況下不適用。

filter_size

僅適用於 swr,設定重新取樣濾鏡大小,預設值為 32。

phase_shift

僅適用於 swr,設定重新取樣相位偏移,預設值為 10,且必須在 [0,30] 區間內。

linear_interp

啟用時使用線性內插(預設)。如果希望在 exact_rational 失敗時優先考慮速度而非品質,請停用它。

exact_rational

僅適用於 swr,啟用時,嘗試根據輸入和輸出取樣率使用精確的 phase_count。但是,如果它大於 1 << phase_shift,則 phase_count 將會回退為 1 << phase_shift。預設為啟用。

cutoff

設定截止頻率(swr:-6dB 點;soxr:0dB 點)比率;必須是介於 0 和 1 之間的浮點值。swr 的預設值為 0.97,soxr 的預設值為 0.91(在取樣率為 44100 時,可保留整個高達 20kHz 的音訊頻帶)。

precision

僅適用於 soxr,重新取樣訊號將被計算的位元精確度。預設值 20(搭配適當的抖動,適用於 16 位元目標位元深度)提供 SoX 的「高品質」;值 28 提供 SoX 的「非常高品質」。

cheby

僅適用於 soxr,選擇通帶滾降 none (Chebyshev) 和更高精度的「非理性」比率近似值。預設值為 0。

async

僅適用於 swr,使用伸展、擠壓、填充和修剪將簡單的 1 參數音訊同步到時間戳記。設定為 1 將啟用填充和修剪,較大的值表示每秒數據可以伸展或擠壓的最大樣本數量。預設值為 0,因此不套用任何補償來使樣本與音訊時間戳記匹配。

first_pts

僅適用於 swr,假設第一個 pts 應為此值。時間單位為 1 / 取樣率。這允許在串流開始時進行填充/修剪。預設情況下,不會對第一個影格的預期 pts 做出任何假設,因此不會進行填充或修剪。例如,如果音訊串流在視訊串流之後開始,則可以將其設定為 0 以在開頭填充靜音,或者修剪由於編碼器延遲而導致的任何具有負 pts 的樣本。

min_comp

僅適用於 swr,設定時間戳記和音訊數據之間的最小差異(以秒為單位),以觸發數據的伸展/擠壓/填充或修剪,使其與時間戳記匹配。預設情況下,伸展/擠壓/填充和修剪已停用(min_comp = FLT_MAX)。

min_hard_comp

僅適用於 swr,設定時間戳記和音訊數據之間的最小差異(以秒為單位),以觸發新增/刪除樣本,使其與時間戳記匹配。此選項有效地是選擇硬補償(修剪/填充)和軟補償(擠壓/伸展)之間的閾值。請注意,預設情況下,所有補償都通過 min_comp 停用。預設值為 0.1。

comp_duration

僅適用於 swr,設定數據被伸展/擠壓以使其與時間戳記匹配的持續時間(以秒為單位)。必須為非負雙精度浮點值,預設值為 1.0。

max_soft_comp

僅適用於 swr,設定數據被伸展/擠壓以使其與時間戳記匹配的最大係數。必須為非負雙精度浮點值,預設值為 0。

matrix_encoding

選擇矩陣編碼立體聲。

它接受以下值

none

select none

dolby

選擇 Dolby

dplii

選擇 Dolby Pro Logic II

預設值為 none

filter_type

僅適用於 swr,選擇重新取樣濾鏡類型。這僅影響重新取樣操作。

它接受以下值

cubic

選擇立方

blackman_nuttall

選擇 Blackman Nuttall 窗函數 sinc

kaiser

選擇 Kaiser 窗函數 sinc

kaiser_beta

僅適用於 swr,設定 Kaiser 窗函數 beta 值。必須是 [2,16] 區間內的雙精度浮點值,預設值為 9。

output_sample_bits

僅適用於 swr,設定用於抖動的輸出取樣位元數。必須是 [0,64] 區間內的整數,預設值為 0,表示不使用。

29 縮放器選項

視訊縮放器支援以下具名選項。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,少數 API 專用例外情況如下所述。對於程式化使用,它們可以在 SwsContext 選項中或通過 libavutil/opt.h API 明確設定。

sws_flags

設定縮放器旗標。這也用於設定縮放演算法。應僅選擇單一演算法。預設值為 ‘bicubic’。

它接受以下值

fast_bilinear

選擇快速雙線性縮放演算法。

bilinear

選擇雙線性縮放演算法。

bicubic

選擇雙立方縮放演算法。

experimental

Select experimental scaling algorithm.

neighbor

選擇最近鄰重新縮放演算法。

area

選擇平均區域重新縮放演算法。

bicublin

選擇用於亮度分量的雙立方縮放演算法,用於色度分量的雙線性縮放演算法。

gauss

選擇高斯重新縮放演算法。

sinc

選擇 sinc 重新縮放演算法。

lanczos

選擇 Lanczos 重新縮放演算法。預設寬度 (alpha) 為 3,可以通過設定 param0 來更改。

spline

選擇自然雙立方 spline 重新縮放演算法。

print_info

啟用列印/偵錯日誌記錄。

accurate_rnd

啟用精確捨入。

full_chroma_int

啟用完整色度內插。

full_chroma_inp

選擇完整色度輸入。

bitexact

Enable bitexact output.

srcw (API only)

設定來源寬度。

srch (API only)

設定來源高度。

dstw (API only)

設定目標寬度。

dsth (API only)

設定目標高度。

src_format (API only)

設定來源像素格式(必須表示為整數)。

dst_format (API only)

設定目標像素格式(必須表示為整數)。

src_range (boolean)

如果值設定為 1,表示來源為完整範圍。預設值為 0,表示來源為有限範圍。

dst_range (boolean)

如果值設定為 1,為目標啟用完整範圍。預設值為 0,表示啟用有限範圍。

param0, param1

設定縮放演算法參數。指定的值是某些縮放演算法特有的,而其他演算法會忽略這些值。指定的值是浮點數值。

sws_dither

設定抖動演算法。接受以下值之一。預設值為 ‘auto’。

auto

automatic choice

none

no dithering

bayer

bayer dither

ed

error diffusion dither

a_dither

arithmetic dither, based using addition

x_dither

arithmetic dither, based using xor (more random/less apparent patterning that a_dither).

alphablend

設定當輸入具有 alpha 但輸出沒有時要使用的 alpha 混合。預設值為 ‘none’。

uniform_color

Blend onto a uniform background color

checkerboard

Blend onto a checkerboard

none

No blending

30 濾波簡介

FFmpeg 中的濾鏡功能是通過 libavfilter 函式庫啟用的。

在 libavfilter 中,一個濾鏡可以有多個輸入和多個輸出。為了說明可能實現的各種功能,我們考慮以下濾鏡圖。

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

此濾鏡圖將輸入串流拆分為兩個串流,然後將一個串流通過 crop 濾鏡和 vflip 濾鏡,然後通過將其疊加在頂部來與另一個串流合併。您可以使用以下命令來實現此目的

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

結果將是視訊的上半部分鏡像到輸出視訊的下半部分。

在同一線性鏈中的濾鏡以逗號分隔,而不同的線性濾鏡鏈則以分號分隔。在我們的範例中,crop,vflip 位於一個線性鏈中,splitoverlay 則分別位於另一個線性鏈中。線性鏈接合的點以方括號括起來的名稱標記。在範例中,split 濾鏡產生兩個輸出,它們與標籤 [main][tmp] 關聯。

發送到 split 的第二個輸出的串流,標記為 [tmp],通過 crop 濾鏡處理,該濾鏡裁剪掉視訊的下半部分,然後垂直翻轉。overlay 濾鏡輸入 split 濾鏡的第一個未更改的輸出(標記為 [main]),並在其下半部分疊加由 crop,vflip 濾鏡鏈產生的輸出。

某些濾鏡接受參數列表作為輸入:它們在濾鏡名稱和等號後指定,並以冒號彼此分隔。

存在所謂的 source filters(來源濾鏡),它們沒有音訊/視訊輸入,以及 sink filters(接收器濾鏡),它們沒有音訊/視訊輸出。

31 graph2dot

FFmpeg tools 目錄中包含的 graph2dot 程式可用於解析濾鏡圖描述,並以 dot 語言發出相應的文字表示形式。

調用命令

graph2dot -h

以查看如何使用 graph2dot

然後,您可以將 dot 描述傳遞給 dot 程式(來自 graphviz 程式套件),並獲得濾鏡圖的圖形表示。

例如,命令序列

echo GRAPH_DESCRIPTION | \
tools/graph2dot -o graph.tmp && \
dot -Tpng graph.tmp -o graph.png && \
display graph.png

可用於建立和顯示表示由 GRAPH_DESCRIPTION 字串描述的圖形的影像。請注意,此字串必須是完整的、自包含的圖形,並明確定義其輸入和輸出。例如,如果您的命令列形式為

ffmpeg -i infile -vf scale=640:360 outfile

您的 GRAPH_DESCRIPTION 字串將需要採用以下形式

nullsrc,scale=640:360,nullsink

您可能還需要設定 nullsrc 參數並新增 format 濾鏡,以便模擬特定的輸入檔案。

32 濾波器圖表描述

濾鏡圖是連接濾鏡的有向圖。它可以包含循環,並且濾鏡對之間可以有多個連結。每個連結在一側都有一個輸入 pad,將其連接到一個濾鏡,從該濾鏡獲取其輸入,而在另一側有一個輸出 pad,將其連接到一個接受其輸出的濾鏡。

濾鏡圖中的每個濾鏡都是應用程式中註冊的濾鏡類別的實例,該類別定義了濾鏡的功能以及輸入和輸出 pad 的數量。

沒有輸入 pad 的濾鏡稱為「來源」,沒有輸出 pad 的濾鏡稱為「接收器」。

32.1 濾波器圖表語法

濾鏡圖具有文字表示形式,可被 ffmpeg 中的 -filter/-vf/-af-filter_complex 選項,以及 ffplay 中的 -vf/-af 選項,以及 libavfilter/avfilter.h 中定義的 avfilter_graph_parse_ptr() 函數識別。

濾鏡鏈由一系列連接的濾鏡組成,每個濾鏡都連接到序列中的前一個濾鏡。濾鏡鏈由以「,」分隔的濾鏡描述列表表示。

濾鏡圖由一系列濾鏡鏈組成。濾鏡鏈序列由以「;」分隔的濾鏡鏈描述列表表示。

濾鏡由以下形式的字串表示:[in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]

filter_name 是描述的濾鏡所屬的濾鏡類別的名稱,並且必須是在程式中註冊的濾鏡類別之一的名稱,可選地後跟 "@id"。濾鏡類別的名稱可選地後跟字串 "=arguments"。

arguments 是一個字串,其中包含用於初始化濾鏡實例的參數。它可能具有以下兩種形式之一

  • 以 ‘:’ 分隔的 key=value 對列表。
  • 一個以 ’:’ 分隔的 value 列表。 在這種情況下,鍵會被假定為它們被宣告順序的選項名稱。 例如,fade 濾鏡宣告了三個選項,依序為 typestart_framenb_frames。 那麼參數列表 in:0:30 表示值 in 被分配給選項 type0start_frame,而 30nb_frames
  • 一個以 ’:’ 分隔的混合直接 value 和長 key=value 配對的列表。 直接 value 必須在 key=value 配對之前,並遵循前一點相同的順序約束。 後續的 key=value 配對可以以任何偏好的順序設定。

如果選項值本身是一個項目列表(例如,format 濾鏡接受像素格式列表),則列表中的項目通常以 ‘|’ 分隔。

可以使用字元 ‘'’ 作為起始和結束標記來引用參數列表,並使用字元 ‘\’ 來跳脫引號文字中的字元;否則,當遇到下一個特殊字元(屬於 ‘[]=;,’ 集合)時,參數字串會被視為終止。

ffmpeg CLI 工具中實現了一個特殊的語法,允許從檔案載入選項值。 這是通過在選項名稱前面加上斜線 ’/’ 來完成的,然後提供的數值會被解釋為從中載入實際值的路徑。 例如:

ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>

將從 /tmp/some_text 載入要繪製的文字。 希望實現類似功能的 API 使用者應該將 avfilter_graph_segment_*() 函數與自訂 IO 程式碼一起使用。

濾鏡的名稱和參數可以選擇性地在前面和後面加上連結標籤列表。 前面的標籤 in_link_1 ... in_link_N 與濾鏡輸入埠關聯,後面的標籤 out_link_1 ... out_link_M 與輸出埠關聯。

當在濾鏡圖中找到兩個具有相同名稱的連結標籤時,將會在對應的輸入和輸出埠之間建立連結。

如果輸出埠沒有標籤,則預設會連結到濾鏡鏈中下一個濾鏡的第一個未標籤輸入埠。 例如,在濾鏡鏈中

nullsrc, split[L1], [L2]overlay, nullsink

split 濾鏡實例有兩個輸出埠,而 overlay 濾鏡實例有兩個輸入埠。 split 的第一個輸出埠標記為 "L1",overlay 的第一個輸入埠標記為 "L2",而 split 的第二個輸出埠連結到 overlay 的第二個輸入埠,兩者都未標籤。

在濾鏡描述中,如果第一個濾鏡的輸入標籤未指定,則假定為 "in";如果最後一個濾鏡的輸出標籤未指定,則假定為 "out"。

在完整的濾鏡鏈中,所有未標籤的濾鏡輸入和輸出埠都必須連接。 如果所有濾鏡鏈的所有濾鏡輸入和輸出埠都已連接,則濾鏡圖被視為有效。

濾鏡圖規格中分隔符號之間的開頭和結尾空白字元(空格、Tab 或換行符號)會被忽略。 這表示可以使用空行和空格來表示濾鏡圖,以提高可讀性。

例如,濾鏡圖

testsrc,split[L1],hflip[L2];[L1][L2] hstack

可以表示為

testsrc,
split [L1], hflip [L2];

[L1][L2] hstack

Libavfilter 將在需要格式轉換的地方自動插入 scale 濾鏡。 可以通過在濾鏡圖描述前面加上 sws_flags=flags; 來為這些自動插入的縮放器指定 swscale 標誌。

以下是濾鏡圖語法的 BNF 描述

NAME             ::= sequence of alphanumeric characters and '_'
FILTER_NAME      ::= NAME["@"NAME]
LINKLABEL        ::= "[" NAME "]"
LINKLABELS       ::= LINKLABEL [LINKLABELS]
FILTER_ARGUMENTS ::= sequence of chars (possibly quoted)
FILTER           ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS]
FILTERCHAIN      ::= FILTER [,FILTERCHAIN]
FILTERGRAPH      ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]

32.2 關於濾波器圖表跳脫字元的注意事項

濾鏡圖描述組成包含多個層級的跳脫字元。 請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的 "引號和跳脫字元" 章節,以取得有關所採用跳脫字元程序的更多資訊。

第一層跳脫字元影響每個濾鏡選項值的內容,其中可能包含用於分隔數值的特殊字元 :,或其中一個跳脫字元 \'

第二層跳脫字元影響整個濾鏡描述,其中可能包含跳脫字元 \' 或濾鏡圖描述使用的特殊字元 [],;

最後,當您在 shell 命令列上指定濾鏡圖時,您需要為其中包含的 shell 特殊字元執行第三層跳脫字元。

例如,考慮以下字串要嵌入到 drawtext 濾鏡描述 text 值中

this is a 'string': may contain one, or more, special characters

此字串包含 ' 特殊跳脫字元和 : 特殊字元,因此需要以這種方式跳脫字元

text=this is a \'string\'\: may contain one, or more, special characters

當將濾鏡描述嵌入到濾鏡圖描述中時,需要第二層跳脫字元,以便跳脫所有濾鏡圖特殊字元。 因此,上面的範例變為

drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters

(請注意,除了 \' 跳脫特殊字元外,, 也需要跳脫字元)。

最後,當在 shell 命令中編寫濾鏡圖描述時,需要額外的跳脫字元層級,這取決於所採用 shell 的跳脫字元規則。 例如,假設 \ 是特殊的並且需要用另一個 \ 跳脫字元,則先前的字串最終將導致

-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"

為了避免在使用接受濾鏡規格作為輸入的命令列工具時出現繁瑣的跳脫字元,建議避免直接在 shell 中包含濾鏡或選項規格。

例如,在 drawtext 濾鏡 的情況下,您可能更喜歡使用 textfile 選項而不是 text 來指定要渲染的文字。

33 時間軸編輯

某些濾鏡支援通用的 enable 選項。 對於支援時間軸編輯的濾鏡,此選項可以設定為在將幀發送到濾鏡之前評估的表達式。 如果評估結果為非零,則將啟用濾鏡,否則幀將以不變的方式發送到濾鏡圖中的下一個濾鏡。

表達式接受以下值

t

以秒為單位表示的時間戳記,如果輸入時間戳記未知,則為 NAN

n

輸入幀的序號,從 0 開始

pos

輸入幀在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

w
h

如果是影片,則為輸入幀的寬度和高度

此外,這些濾鏡支援 enable 命令,可用於重新定義表達式。

與任何其他濾鏡選項一樣,enable 選項也遵循相同的規則。

例如,要從 10 秒到 3 分鐘啟用模糊濾鏡 (smartblur),以及從 3 秒開始啟用 curves 濾鏡

smartblur = enable='between(t,10,3*60)',
curves    = enable='gte(t,3)' : preset=cross_process

請參閱 ffmpeg -filters 以查看哪些濾鏡具有時間軸支援。

34 使用指令在執行時變更選項

某些選項可以在濾鏡操作期間使用命令進行更改。 這些選項在 ffmpeg -h filter=<濾鏡名稱> 的輸出上標記為 'T'。 命令的名稱是選項的名稱,參數是新值。

35 具有多個輸入的濾波器選項 (framesync)

某些具有多個輸入的濾鏡支援一組通用選項。 這些選項只能按名稱設定,而不能使用簡短表示法。

eof_action

當在輔助輸入上遇到 EOF 時要採取的動作;它接受以下值之一

repeat

重複最後一幀(預設值)。

endall

結束兩個串流。

pass

讓主輸入通過。

shortest

如果設定為 1,則強制輸出在最短輸入終止時終止。 預設值為 0。

repeatlast

如果設定為 1,則強制濾鏡擴展輔助串流的最後一幀,直到主串流結束。 值為 0 會停用此行為。 預設值為 1。

ts_sync_mode

根據輔助輸入時間戳記嚴格同步串流的方式;它接受以下值之一

預設

second

nearest

來自輔助輸入的幀,其時間戳記最接近(較低或相等)主要輸入幀。

36 音訊濾波器

來自輔助輸入的幀,其絕對時間戳記最接近主要輸入幀。

當您配置 FFmpeg 建置時,可以使用 --disable-filters 停用任何現有的濾鏡。 配置輸出將顯示您的建置中包含的音訊濾鏡。

36.1 aap

以下是目前可用的音訊濾鏡的描述。

使用第二個音訊串流將仿射投影演算法應用於第一個音訊串流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

以下是接受選項的描述。

order

設定濾鏡階數。

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

設定係數以初始化內部共變異數矩陣。

out_mode

設定濾鏡輸出樣本。 它接受以下值

i

d

傳遞第一個輸入。

傳遞第二個輸入。

o

n

傳遞期望值、第二個輸入和誤差訊號估計值之間的差異。

傳遞輸入值、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

36.2 acompressor

始終使用單精度浮點格式樣本格式。

始終使用雙精度浮點格式樣本格式。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

濾鏡接受以下選項

level_in

mode

threshold

ratio

attack

release

makeup

knee

channel

detection

mix

設定輸入增益。 預設值為 1。範圍介於 0.015625 和 64 之間。

設定壓縮器操作模式。 可以是 upwarddownward。 預設值為 downward

如果串流的訊號上升到此等級之上,它將影響增益衰減。 預設情況下為 0.125。 範圍介於 0.00097563 和 1 之間。

link

設定訊號衰減的比率。 1:2 表示如果等級上升到閾值之上 4dB,則衰減後將僅高於 2dB。 預設值為 2。範圍介於 1 和 20 之間。

訊號必須上升到閾值之上多少毫秒才會開始增益衰減。 預設值為 20。範圍介於 0.01 和 2000 之間。

訊號必須下降到閾值之下多少毫秒才會再次減少衰減。 預設值為 250。範圍介於 0.01 和 9000 之間。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

彎曲閾值周圍的尖銳轉折點,以更柔和地進入增益衰減。 預設值為 2.82843。範圍介於 1 和 8 之間。

36.2.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.3 acontrast

如果應該在 peak 的情況下採用精確訊號,還是在 rms 的情況下採用 RMS 訊號。 預設值為 rms,這通常更平滑。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

此濾鏡支援以上所有選項作為 命令

36.4 acopy

簡單的音訊動態範圍壓縮/擴展濾鏡。

36.5 acrossfade

contrast

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

copy

crossfade

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

將輸入音訊來源不變地複製到輸出。 這主要用於測試目的。

將交叉淡化從一個輸入音訊串流應用到另一個輸入音訊串流。 交叉淡化應用於第一個串流結束附近的指定持續時間。

nb_samples, ns

duration, d

overlap, o

curve1

curve2

指定交叉淡化效果必須持續的樣本數。 在交叉淡化效果結束時,第一個輸入音訊將完全靜音。 預設值為 44100。

36.5.1 範例

  • 指定交叉淡化效果的持續時間。 有關接受的語法,請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節。 預設情況下,持續時間由 nb_samples 決定。 如果設定,則使用此選項代替 nb_samples
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
    
  • 第一個串流結束是否應與第二個串流開始重疊。 預設為啟用。
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
    

36.6 acrossover

設定第一個串流交叉淡化過渡的曲線。

設定第二個串流交叉淡化過渡的曲線。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

有關可用曲線類型的描述,請參閱 afade 濾鏡描述。

crossfade

以下是接受選項的描述。

acrossfade

abandsplit

從一個輸入交叉淡化到另一個輸入

從一個輸入交叉淡化到另一個輸入,但不重疊

將音訊串流分割成多個頻帶。

此濾鏡將音訊串流分割成兩個或多個頻率範圍。 將所有串流加回將產生平坦的輸出。

asplit

bandjoin

bandpass

bandreject

bandsplit

bass

biquad

channelsplit

channelmap

compand

compensationdelay

compressor

loudnorm

鞭打器

afir

aformat

level

agate

aiir

allpass

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

amerge

36.6.1 範例

  • 將輸入音訊流分割成兩個頻段(低頻和高頻),分割頻率為 1500 Hz,每個頻段將在不同的串流中
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 與上述相同,但使用更高的濾波器階數
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 與上述相同,但也包含額外的中頻段(頻率介於 1500 和 8000 之間)
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
    

36.7 acrusher

降低音訊位元解析度。

此濾波器是具有增強功能的位元破壞器。位元破壞器用於聽覺上減少音訊訊號取樣時的位元數。這完全不會改變位元深度,它只是產生效果。位元深度降低的素材聽起來更刺耳且更「數位」。此濾波器甚至能夠捨入到連續值而不是離散位元深度。此外,它還具有 D/C 偏移,導致訊號的下半部分和上半部分產生不同的破壞效果。抗鋸齒設定能夠產生「更柔和」的破壞聲音。

此濾波器的另一個功能是對數模式。此設定從位元之間的線性距離切換到對數距離。結果是聲音更「自然」的破壞器,例如不會閘控低訊號。人耳具有對數感知,因此這種破壞方式更加令人愉悅。對數破壞也能够進行抗鋸齒處理。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入音量。

level_out

設定輸出音量。

bits

設定位元縮減。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

設定混合量。

level_in

可以是線性的:lin 或對數的:log

dc

設定直流偏移。

aa

設定抗鋸齒。

samples

設定取樣縮減。

lfo

啟用 LFO。預設為停用。

lforange

設定 LFO 範圍。

lforate

設定 LFO 速率。

36.7.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.8 acue

延遲音訊濾波直到給定的掛鐘時間戳記。請參閱 cue 濾波器。

36.9 adeclick

從輸入音訊中移除脈衝雜訊。

偵測為脈衝雜訊的取樣會被使用自迴歸模型插值的取樣取代。

window, w

設定視窗大小,以毫秒為單位。允許的範圍是從 10100。預設值為 55 毫秒。這設定了每次處理的視窗大小。

將交叉淡化從一個輸入音訊串流應用到另一個輸入音訊串流。 交叉淡化應用於第一個串流結束附近的指定持續時間。

設定視窗重疊,以視窗大小的百分比表示。允許的範圍是從 5095。預設值為 75 百分比。將此設定為非常高的值會增加脈衝雜訊的移除,但會使整個過程慢得多。

arorder, a

設定自迴歸階數,以視窗大小的百分比表示。允許的範圍是從 025。預設值為 2 百分比。此選項也控制使用相鄰良好取樣插值的取樣品質。

threshold, t

設定閾值。允許的範圍是從 1100。預設值為 2。這控制將被移除的脈衝雜訊的強度。值越低,將被偵測為脈衝雜訊的取樣越多。

burst, b

設定突發融合,以視窗大小的百分比表示。允許的範圍是 010。預設值為 2。如果任何兩個偵測為雜訊的取樣之間的間隔小於此值,則這兩個取樣之間的任何取樣也將被偵測為雜訊。

method, m

設定重疊方法。

它接受以下值

add, a

選擇重疊相加方法。即使未插值的取樣也會使用此方法略微更改。

save, s

選擇重疊儲存方法。未插值的取樣保持不變。

預設值為 a

36.10 adeclip

從輸入音訊中移除削波取樣。

偵測為削波的取樣會被使用自迴歸模型插值的取樣取代。

window, w

設定視窗大小,以毫秒為單位。允許的範圍是從 10100。預設值為 55 毫秒。這設定了每次處理的視窗大小。

將交叉淡化從一個輸入音訊串流應用到另一個輸入音訊串流。 交叉淡化應用於第一個串流結束附近的指定持續時間。

設定視窗重疊,以視窗大小的百分比表示。允許的範圍是從 5095。預設值為 75 百分比。

arorder, a

設定自迴歸階數,以視窗大小的百分比表示。允許的範圍是從 025。預設值為 8 百分比。此選項也控制使用相鄰良好取樣插值的取樣品質。

threshold, t

設定閾值。允許的範圍是從 1100。預設值為 10。值越高,削波偵測的靈敏度越低。

hsize, n

設定用於偵測削波的直方圖大小。允許的範圍是從 1009999。預設值為 1000。值越高,削波偵測的靈敏度越低。

method, m

設定重疊方法。

它接受以下值

add, a

選擇重疊相加方法。即使未插值的取樣也會使用此方法略微更改。

save, s

選擇重疊儲存方法。未插值的取樣保持不變。

預設值為 a

36.11 adecorrelate

將去相關性應用於輸入音訊流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

stages

設定濾波的去相關階段。允許的範圍是從 1 到 16。預設值為 6。

seed

設定用於設定跨聲道取樣延遲的隨機種子。

36.12 adelay

延遲一個或多個音訊聲道。

延遲聲道中的取樣會以靜音填充。

此濾波器接受以下選項

delays

設定每個聲道的延遲列表,以毫秒為單位,並以 ’|’ 分隔。未使用的延遲將被靜默忽略。如果給定的延遲數量小於聲道數量,則所有剩餘聲道將不會被延遲。如果您想要延遲精確的取樣數量,請在數字後附加 ’S’。如果您想要以秒為單位延遲,請在數字後附加 ’s’。

all

對所有剩餘聲道使用最後設定的延遲。預設為停用。如果啟用此選項,則會更改選項 delays 的解讀方式。

36.12.1 範例

  • 將第一個聲道延遲 1.5 秒,第三個聲道延遲 0.5 秒,並保持第二個聲道(以及可能存在的任何其他聲道)不變。
    adelay=1500|0|500
    
  • 將第二個聲道延遲 500 個取樣,第三個聲道延遲 700 個取樣,並保持第一個聲道(以及可能存在的任何其他聲道)不變。
    adelay=0|500S|700S
    
  • 將所有聲道延遲相同的取樣數量
    adelay=delays=64S:all=1
    

36.13 adenorm

通過添加極低電平的雜訊來補救音訊中的次常態數。

此濾波器應放置在任何可能產生次常態數的濾波器之前。

以下是接受參數的描述。

level

設定添加雜訊的電平,以 dB 為單位。預設值為 -351。允許的範圍是從 -451 到 -90。

type

設定添加雜訊的類型。

dc

添加直流訊號。

ac

添加交流訊號。

square

添加方波訊號。

pulse

添加脈衝訊號。

預設值為 dc

36.13.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.14 aderivative, aintegral

計算音訊流的導數/積分。

連續應用這兩個濾波器將產生原始音訊。

36.15 adrc

將頻譜動態範圍控制器濾波器應用於輸入音訊流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

transfer

設定傳輸表達式。

表達式可以包含以下常數

ch

當前聲道號碼

sn

當前取樣號碼

nb_channels

聲道數量

t

以秒為單位表示的時間戳記

sr

取樣率

p

當前頻率功率值,以 dB 為單位

f

當前頻率,以 Hz 為單位

預設值為 p

makeup

設定啟動時間,以毫秒為單位。預設值為 50 毫秒。允許的範圍是從 1 到 1000 毫秒。

channel

設定釋放時間,以毫秒為單位。預設值為 100 毫秒。允許的範圍是從 5 到 2000 毫秒。

channels

設定要濾波的聲道,預設情況下會濾波音訊流中的 all 聲道。

36.15.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.15.2 範例

  • 將頻譜壓縮應用於所有頻率,閾值為 -50 dB,比例為 1:6
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
    
  • 與上述類似,但比例為 1:2,並且僅濾波前置中央聲道
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
    
  • 將頻譜雜訊閘應用於所有頻率,閾值為 -85 dB,並具有短啟動時間和短釋放時間
    adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
    
  • 將頻譜擴展應用於所有頻率,閾值為 -10 dB,比例為 1:2
    adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
    
  • 對所有頻率應用限制器到最大 -60 dB,啟動時間為 2 毫秒,釋放時間為 10 毫秒
    adrc=transfer='min(p,-60)':attack=2:release=10
    

36.16 adynamicequalizer

將動態等化應用於輸入音訊流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

threshold

設定用於觸發等化的偵測閾值。閾值偵測使用偵測濾波器。預設值為 0。允許的範圍是從 0 到 100。

dfrequency

設定用於偵測濾波器(用於觸發等化)的偵測頻率,以 Hz 為單位。預設值為 1000 Hz。允許的範圍介於 2 和 1000000 Hz 之間。

dqfactor

設定用於偵測濾波器(用於觸發等化)的偵測共振因子。預設值為 1。允許的範圍是從 0.001 到 1000。

tfrequency

設定等化濾波器的目標頻率。預設值為 1000 Hz。允許的範圍介於 2 和 1000000 Hz 之間。

tqfactor

設定目標等化濾波器的目標共振因子。預設值為 1。允許的範圍是從 0.001 到 1000。

makeup

設定訊號從偵測到上升到偵測閾值之上以啟動等化所需的毫秒數。預設值為 20。允許的範圍介於 1 和 2000 之間。

channel

設定訊號從偵測到下降到偵測閾值之下以結束等化所需的毫秒數。預設值為 200。允許的範圍介於 1 和 2000 之間。

attack

設定等化增益提升的比率。預設值為 1。允許的範圍介於 0 和 30 之間。

mix

設定等化增益提升的補償偏移。預設值為 0。允許的範圍介於 0 和 100 之間。

range

設定允許的最大衰減/提升量。預設值為 50。允許的範圍是從 1 到 200。

level_in

設定濾波器操作模式,可以是以下之一

listen

僅輸出隔離的偵測訊號。

cutbelow

衰減低於偵測閾值的頻率。

cutabove

衰減高於偵測閾值的頻率。

boostbelow

提升低於偵測閾值的頻率。

boostabove

提升高於偵測閾值的頻率。

預設模式為 ‘cutbelow’。

dftype

設定偵測濾波器的類型,可以是以下之一

bandpass
lowpass
highpass
peak

預設類型為 ‘bandpass’。

tftype

設定目標濾波器的類型,可以是以下之一

bell
lowshelf
highshelf

預設類型為 ‘bell’。

auto

自動從偵測濾波器收集閾值。預設為 ‘disabled’。此選項適用於在輸入音訊流的特定時間範圍內偵測閾值,在這種情況下,選項值會在運行時更改。

可用的值為

disabled

停用使用自動收集的閾值。

off

停止選取閾值。

on

開始選取閾值。

adaptive

自適應地選取閾值,通過計算滑動視窗熵。

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

36.16.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.17 adynamicsmooth

將動態平滑應用於輸入音訊流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

sensitivity

設定對頻率波動的靈敏度量。預設值為 2。允許的範圍是從 0 到 1e+06。

basefreq

設定平滑的基礎頻率。預設值為 22050。允許的範圍是從 2 到 1e+06。

36.17.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.18 aecho

將回音應用於輸入音訊。

回音是反射的聲音,自然發生在山脈(有時是大型建築物)之間,當說話或喊叫時;數位回音效果模擬了這種行為,通常用於幫助填充單一樂器或人聲的聲音。原始訊號和反射訊號之間的時間差是 delay,反射訊號的響度是 decay。多個回音可以有不同的延遲和衰減。

以下是接受參數的描述。

in_gain

設定反射訊號的輸入增益。預設值為 0.6

out_gain

設定反射訊號的輸出增益。預設值為 0.3

delays

設定原始訊號和反射之間的時間間隔列表,以毫秒為單位,並以 ’|’ 分隔。每個 delay 的允許範圍是 (0 - 90000.0]。預設值為 1000

decays

設定反射訊號的響度列表,以 ’|’ 分隔。每個 decay 的允許範圍是 (0 - 1.0]。預設值為 0.5

36.18.1 範例

  • 使其聽起來像是實際演奏樂器數量的兩倍
    aecho=0.8:0.88:60:0.4
    
  • 如果延遲非常短,則聽起來像是(金屬)機器人在播放音樂
    aecho=0.8:0.88:6:0.4
    
  • 較長的延遲聽起來像是山區的露天音樂會
    aecho=0.8:0.9:1000:0.3
    
  • 與上述相同,但多了一座山
    aecho=0.8:0.9:1000|1800:0.3|0.25
    

36.19 aemphasis

音訊強調濾波器創建或還原直接取自 LP 或強調 CD 的素材,具有不同的濾波器曲線。例如,為了將音樂儲存在黑膠唱片上,必須首先通過濾波器改變訊號,以消除這種錄音介質的缺點。一旦播放素材,就必須應用反向濾波器來還原頻率響應的失真。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入增益。

level_out

設定輸出增益。

level_in

設定濾波器模式。對於還原素材,請使用 reproduction 模式,否則使用 production 模式。預設模式為 reproduction 模式。

type

設定濾波器類型。選擇介質。可以是以下之一

col

選擇 Columbia。

emi

選擇 EMI。

bsi

選擇 BSI (78RPM)。

riaa

選擇 RIAA。

cd

選擇 Compact Disc (CD)。

50fm

選擇 50µs (FM)。

75fm

選擇 75µs (FM)。

50kf

選擇 50µs (FM-KF)。

75kf

選擇 75µs (FM-KF)。

36.19.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.20 aeval

根據指定的表達式修改音訊訊號。

此濾波器接受一個或多個表達式(每個聲道一個),這些表達式會被評估並用於修改相應的音訊訊號。

它接受以下參數

exprs

為每個單獨的聲道設定以 ’|’ 分隔的表達式列表。如果輸入聲道數量大於表達式數量,則最後指定的表達式將用於剩餘的輸出聲道。

channel_layout, c

設定輸出聲道佈局。如果未指定,則聲道佈局由表達式數量指定。如果設定為 ‘same’,則預設情況下將使用相同的輸入聲道佈局。

exprs 中的每個表達式都可以包含以下常數和函數

ch

當前表達式的聲道號碼

n

從 0 開始的已評估取樣的編號

s

取樣率

t

以秒為單位表示的已評估取樣的時間

nb_in_channels
nb_out_channels

輸入和輸出聲道數量

val(CH)

聲道號碼為 CH 的輸入聲道的值

注意:此濾波器速度較慢。為了更快的處理速度,您應該使用專用濾波器。

36.20.1 範例

  • 半音量
    aeval=val(ch)/2:c=same
    
  • 反轉第二聲道的相位
    aeval=val(0)|-val(1)
    

36.21 aexciter

激勵器用於產生原始訊號中不存在的高音。這是通過創建訊號的諧波失真來完成的,這些諧波失真在範圍內受到限制並添加到原始訊號中。激勵器提升音訊訊號的上限,而不仅仅像等化器那樣簡單地提升更高的頻率,從而創造更「清脆」或「明亮」的聲音。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定訊號處理前的輸入電平。允許的範圍是從 0 到 64。預設值為 1。

level_out

設定訊號處理後的輸出電平。允許的範圍是從 0 到 64。預設值為 1。

amount

設定添加到原始訊號的諧波量。允許的範圍是從 0 到 64。預設值為 1。

drive

設定新創建諧波的量。允許的範圍是從 0.1 到 10。預設值為 8.5。

blend

設定新創建諧波的八度音程。允許的範圍是從 -10 到 10。預設值為 0。

freq

設定產生諧波的低頻限制,以 Hz 為單位。允許的範圍是從 2000 到 12000 Hz。預設值為 7500 Hz。

ceil

設定產生諧波的上限頻率。允許範圍為 9999 至 20000 Hz。若值低於 10000 Hz,則不套用限制。

listen

將原始訊號靜音,僅輸出添加的諧波。預設為停用。

36.21.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.22 afade

對輸入音訊套用淡入/淡出效果。

以下是接受參數的描述。

type, t

指定效果類型,可為淡入效果的 in 或淡出效果的 out。預設為 in

start_sample, ss

指定開始套用淡化效果的起始樣本編號。預設值為 0。

copy

指定淡化效果持續的樣本數。在淡入效果結束時,輸出音訊的音量將與輸入音訊相同;在淡出過渡結束時,輸出音訊將會靜音。預設值為 44100。

start_time, st

指定淡化效果的開始時間。預設值為 0。該值必須指定為持續時間;請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節 以了解可接受的語法。若已設定此選項,則會取代 start_sample

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

指定淡化效果的持續時間。請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節 以了解可接受的語法。在淡入效果結束時,輸出音訊的音量將與輸入音訊相同;在淡出過渡結束時,輸出音訊將會靜音。預設情況下,持續時間由 nb_samples 決定。若已設定此選項,則會取代 nb_samples

curve

設定淡化轉換的曲線。

它接受以下值

tri

選擇三角形,線性斜率 (預設)

qsin

選擇四分之一正弦波

hsin

選擇半個正弦波

esin

選擇指數正弦波

log

選擇對數

ipar

選擇反拋物線

qua

選擇二次方

cub

選擇立方

squ

選擇平方根

cbr

選擇立方根

par

選擇拋物線

exp

選擇指數

iqsin

選擇反向四分之一正弦波

ihsin

選擇反向半個正弦波

dese

選擇雙指數座椅

desi

選擇雙指數 S 型函數

losi

選擇邏輯 S 型函數

sinc

選擇正弦基數函數

isinc

選擇反向正弦基數函數

quat

選擇四次方

quatr

選擇四次方根

qsin2

選擇平方四分之一正弦波

hsin2

選擇平方半個正弦波

nofade

不套用淡化

silence

設定淡入的初始增益或淡出的最終增益。預設值為 0.0

unity

設定淡出的初始增益或淡入的最終增益。預設值為 1.0

36.22.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.22.2 範例

  • 音訊前 15 秒淡入
    afade=t=in:ss=0:d=15
    
  • 900 秒音訊的最後 25 秒淡出
    afade=t=out:st=875:d=25
    

36.23 afftdn

使用 FFT 對音訊樣本進行降噪。

以下是接受參數的描述。

noise_reduction, nr

設定降噪量,單位為 dB,允許範圍為 0.01 至 97。預設值為 12 dB。

noise_floor, nf

設定噪聲基底,單位為 dB,允許範圍為 -80 至 -20。預設值為 -50 dB。

noise_type, nt

設定噪聲類型。

它接受以下值

white, w

選擇白噪音。

vinyl, v

選擇黑膠唱片噪音。

shellac, s

選擇蟲膠唱片噪音。

custom, c

選擇自訂噪音,於 bn 選項中定義。

預設值為白噪音。

band_noise, bn

為 15 個頻帶中的每一個設定自訂頻帶噪聲輪廓。頻帶之間以 ' ' 或 '|' 分隔。

residual_floor, rf

設定殘餘基底,單位為 dB,允許範圍為 -80 至 -20。預設值為 -38 dB。

track_noise, tn

啟用噪聲基底追蹤。預設為停用。啟用後,噪聲基底會自動調整。

track_residual, tr

啟用殘餘追蹤。預設為停用。

output_mode, om

設定輸出模式。

它接受以下值

input, i

保持輸入不變。

output, o

傳遞濾除的噪音。

noise, n

僅傳遞噪音。

預設值為 output

adaptivity, ad

設定適應性因子,用於控制每個頻率區間增益調整的適應速度。值 0 啟用即時適應,而較高的值反應較慢。允許範圍為 01。預設值為 0.5

floor_offset, fo

設定噪聲基底偏移因子。此選項用於調整套用於測量噪聲基底的偏移量。僅在啟用噪聲基底追蹤時有效。允許範圍為 -2.02.0。預設值為 1.0

noise_link, nl

設定用於多聲道音訊的噪聲連結。

它接受以下值

none

使用未更改聲道的噪聲基底。

min

使用所有聲道測得的最小噪聲基底。

max

使用所有聲道測得的最大噪聲基底。

average

使用所有聲道測得的平均噪聲基底。

預設值為 min

band_multiplier, bm

設定頻帶乘數因子,用於控制頻帶在頻率區間中擴散的程度。允許範圍為 0.25。預設值為 1.25

sample_noise, sn

切換從輸入音訊擷取和測量噪聲輪廓。

它接受以下值

start, begin

開始取樣噪聲擷取。

stop, end

停止取樣噪聲擷取並測量新的噪聲頻帶輪廓。

預設值為 none

gain_smooth, gs

設定增益平滑空間半徑,用於平滑套用於每個頻率區間的增益。有助於減少隨機音樂噪聲偽影。值越高,增益平滑度越高。允許範圍為 050。預設值為 0

36.23.1 指令

此濾波器支援上述某些選項作為 指令

36.23.2 範例

  • 將白噪音降低 10dB,並使用先前測量的 -40dB 噪聲基底
    afftdn=nr=10:nf=-40
    
  • 將白噪音降低 10dB,同時將初始噪聲基底設定為 -80dB,並啟用噪聲基底自動追蹤,使噪聲基底在處理過程中逐漸變化
    afftdn=nr=10:nf=-80:tn=1
    
  • 使用 -40dB 的噪聲基底將噪音降低 20dB,並使用指令擷取輸入音訊前 0.4 秒的噪聲輪廓
    asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
    

36.24 afftfilt

對頻域中的樣本套用任意表達式。

real

為每個聲道設定頻域實部表達式,以 '|' 分隔。預設為 "re"。如果輸入聲道數大於表達式數,則最後指定的表達式將用於剩餘的輸出聲道。

imag

為每個聲道設定頻域虛部表達式,以 '|' 分隔。預設為 "im"。

realimag 中的每個表達式都可以包含以下常數和函數

sr

取樣率

b

目前頻率區間編號

nb

可用區間的數量

ch

當前表達式的聲道號碼

chs

聲道數量

pts

目前影格 pts

re

目前聲道頻率區間的實部

im

目前聲道頻率區間的虛部

real(b, ch)

傳回位置 (bin, channel) 處頻率區間實部的值

imag(b, ch)

傳回位置 (bin, channel) 處頻率區間虛部的值

win_size

設定視窗大小。允許範圍為 16 至 131072。預設值為 4096

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

設定視窗重疊。若設定為 1,則會選取所選視窗函數的建議重疊。預設值為 0.75

36.24.1 範例

  • 幾乎只留下音訊中的低頻率
    afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
    
  • 套用機器人化效果
    afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
    
  • 套用耳語效果
    afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
    
  • 套用相位偏移
    afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
    

36.25 afir

套用任意有限脈衝響應濾波器。

此濾波器設計用於套用長 FIR 濾波器,最長可達 60 秒。

它可以用作數位分頻濾波器、房間等化、串音消除、波場合成、聽覺化、雙聲道立體聲和空間化的組件。

此濾波器使用高於第一個串流的串流作為 FIR 係數。如果非第一個串流僅包含單聲道,則將用於第一個串流中的所有輸入聲道,否則非第一個串流中的聲道數必須與第一個串流中的聲道數相同。

它接受以下參數

dry

設定乾增益。這會設定輸入增益。

wet

設定濕增益。這會設定最終輸出增益。

length

設定脈衝響應濾波器長度。預設值為 1,表示處理整個 IR。

gtype

此選項已棄用,且無作用。

irnorm

設定在濾波前套用於 IR 係數的範數。允許範圍為 -12。IR 係數會使用此選項設定的計算向量範數進行正規化。對於負值,不計算範數,且 IR 係數完全不會被修改。預設值為 1

irlink

對於多聲道 IR,如果此選項設定為 true,則所有 IR 聲道將使用所有 IR 聲道係數的最大測量增益(由 irnorm 選項設定)進行正規化。停用時,每個 IR 聲道中的所有 IR 係數將獨立正規化。預設值為 true

irgain

設定在濾波前套用於 IR 係數的增益。允許範圍為 0 至 1。此增益在透過 irnorm 選項套用的任何增益之後套用。

irfmt

設定 IR 串流的格式。可以為 monoinput。預設值為 input

maxir

設定允許的最大脈衝響應濾波器持續時間,單位為秒。預設值為 30 秒。允許範圍為 0.1 至 60 秒。

response

此選項已棄用,且無作用。

channel

此選項已棄用,且無作用。

size

此選項已棄用,且無作用。

rate

此選項已棄用,且無作用。

minp

設定用於卷積的最小分割大小。預設值為 8192。允許範圍為 165536。較低的值會降低延遲,但會增加 CPU 使用率。

maxp

設定用於卷積的最大分割大小。預設值為 8192。允許範圍為 865536。較低的值可能會增加 CPU 使用率。

nbirs

設定在執行時可切換的輸入脈衝響應串流數量。允許範圍為 132。預設值為 1

ir

設定將用於卷積的 IR 串流,從 0 開始,應始終低於 nbirs 選項提供的值。預設值為 0。此選項可以在執行時透過 指令 更改。

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

預設值為 auto。

irload

設定何時載入 IR 串流。可以為 initaccess。第一個選項在初始化時載入並準備所有 IR,第二個選項在首次存取特定 IR 時載入。預設值為 init

36.25.1 範例

  • 使用單聲道 IR 檔案作為第二個輸入,將殘響套用於串流,使用 ffmpeg 完成指令
    ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
    
  • 針對輸入立體聲串流和左右聲道的兩個立體聲脈衝響應套用真正的立體聲處理,脈衝響應檔案為名為 l_ir.wav 和 r_ir.wav 的檔案,並設定 irnorm 選項值
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
    
  • 與上述範例類似,但明確設定了 irgain 為估計值,且停用了 irnorm
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
    

36.26 aformat

為輸入音訊設定輸出格式約束。框架將協商最合適的格式以最大程度地減少轉換。

它接受以下參數

sample_fmts, f

以 '|' 分隔的請求樣本格式列表。

sample_rates, r

以 '|' 分隔的請求樣本率列表。

channel_layouts, cl

以 '|' 分隔的請求聲道佈局列表。

請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的頻道佈局章節,以了解所需的語法。

如果省略參數,則允許所有值。

強制輸出為無符號 8 位元或有符號 16 位元立體聲

aformat=sample_fmts=u8|s16:channel_layouts=stereo

36.27 afreqshift

將頻率偏移套用於輸入音訊樣本。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

shift

指定頻率偏移。允許範圍為 -INT_MAX 至 INT_MAX。預設值為 0.0。

level

設定套用於最終輸出的輸出增益。允許範圍為 0.0 至 1.0。預設值為 1.0。

以下是接受選項的描述。

設定用於濾波的濾波器階數。允許範圍為 1 至 16。預設值為 8。

36.27.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.28 afwtdn

使用小波減少輸入樣本中的寬頻噪音。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

sigma

設定噪聲 sigma 值,允許範圍為 0 至 1。預設值為 0。此選項控制套用於輸入樣本的降噪強度。設定此選項最有效的方式是透過分貝,例如 -45dB。

levels

設定小波分解的級數。允許範圍為 1 至 12。預設值為 10。將此值設定得太低會使降噪效能非常差。

wavet

設定輸入影格分解的小波類型。它們按係數數量排序,從最低到最高。係數越多意味著濾波速度越慢,但整體品質越好。可用的小波類型為

sym2
sym4
rbior68
deb10
sym10
coif5
bl3
percent

設定完整降噪的百分比。允許範圍為 0 至 100%。預設值為 85%,即部分降噪。

profile

如果啟用,則第一個輸入影格將用作噪聲輪廓。如果第一個影格樣本包含非噪聲,則效能會非常差。

adaptive

如果啟用,則會分析輸入影格是否存在噪聲。如果檢測到高機率的噪聲,則輸入影格輪廓將用於處理後續影格,直到檢測到新的噪聲影格。

samples

設定單個影格的大小,以樣本數為單位。允許範圍為 512 至 65536。預設影格大小為 8192 個樣本。

softness

設定在閾值函數內部套用的柔度。允許範圍為 0 至 10。預設柔度為 1。

36.28.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.29 agate

閘門主要用於減少訊號的較低部分。這種訊號處理方式可減少有用訊號之間的干擾噪音。

閘控是透過檢測低於選定水平 threshold 的音量,並將其除以 ratio 設定的因子來完成的。噪聲基底的底部透過 range 設定。由於對訊號的精確操作會導致波形失真,因此可以在一段時間內調平衰減。這是透過設定 attackrelease 來完成的。

attack 決定訊號必須低於閾值多長時間才會發生任何衰減,而 release 設定訊號必須高於閾值多長時間才能再次減少衰減。短於所選啟動時間的訊號將保持不變。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定濾波前的輸入電平。預設值為 1。允許範圍為 0.015625 至 64。

level_in

設定操作模式。可以為 upwarddownward。預設值為 downward。如果設定為 upward 模式,則訊號的較高部分將被放大,向上擴展動態範圍。否則,在 downward 模式下,訊號的較低部分將被減少。

range

設定當訊號低於閾值時的增益衰減量。預設值為 0.06125。允許範圍為 0 至 1。將此值設定為 0 會停用衰減,然後濾波器的行為類似於擴展器。

threshold

如果訊號上升到此電平以上,則會釋放增益衰減。預設值為 0.125。允許範圍為 0 至 1。

attack

設定訊號衰減的比率。預設值為 2。允許範圍為 1 至 9000。

makeup

訊號必須上升到閾值以上才能停止增益衰減的毫秒數。預設值為 20 毫秒。允許範圍為 0.01 至 9000。

channel

訊號必須下降到閾值以下才能再次增加衰減的毫秒數。預設值為 250 毫秒。允許範圍為 0.01 至 9000。

mix

設定訊號處理後的放大音量。預設值為 1。允許範圍從 1 到 64。

設定壓縮器操作模式。 可以是 upwarddownward。 預設值為 downward

將臨界值附近的尖銳轉折變平滑,以更柔和地進入增益衰減。預設值為 2.828427125。允許範圍從 1 到 8。

訊號必須上升到閾值之上多少毫秒才會開始增益衰減。 預設值為 20。範圍介於 0.01 和 2000 之間。

選擇偵測時應採用精確訊號還是類似 RMS 的訊號。預設值為 rms。可選 peakrms

link

選擇所有聲道之間的平均音量或較大聲的聲道會影響衰減。預設值為 average。可選 averagemaximum

36.29.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.30 aiir

套用任意無限脈衝響應濾波器。

它接受以下參數

零點, z

設定 B/分子/零點/反射係數。

極點, p

設定 A/分母/極點/梯形係數。

增益, k

設定聲道增益。

原始訊號增益

設定輸入增益。

效果訊號增益

設定輸出增益。

格式, f

設定係數格式。

ll

格狀-梯形函數

sf

類比傳遞函數

tf

數位傳遞函數

zp

Z 平面零點/極點,笛卡爾座標 (預設)

pr

Z 平面零點/極點,極座標弧度

pd

Z 平面零點/極點,極座標度數

sp

S 平面零點/極點

處理方式, r

設定處理類型。

d

直接處理

s

串聯處理

p

並聯處理

精確度, e

設定濾波精確度。

dbl

雙精度浮點數 (預設)

flt

單精度浮點數

i32

32 位元整數

i16

16 位元整數

正規化, n

正規化濾波器係數,預設為啟用。啟用後,將直流的幅度響應正規化為 0dB。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

response

在額外的視訊串流中顯示 IR 頻率響應,幅度 (洋紅色)、相位 (綠色) 和群組延遲 (黃色)。預設為停用。

channel

設定要顯示頻率響應的 IR 聲道。預設為顯示第一個聲道。此選項僅在啟用 response 時使用。

size

設定視訊串流大小。此選項僅在啟用 response 時使用。

tfsf 格式的係數以空格分隔,並按升序排列。

zp 格式的係數以空格分隔,係數順序無關緊要。zp 格式的係數是帶有虛數單位 i 的複數。

可以為每個聲道提供不同的係數和增益,在這種情況下,使用 '|' 分隔係數或增益。最後提供的係數將用於所有剩餘聲道。

36.30.1 範例

  • 套用在 48000 Hz 採樣率下,頻率約為 5000Hz 的二階橢圓陷波器
    aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
    
  • 與上面相同,但採用 zp 格式
    aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
    
  • 使用類比傳遞函數格式,套用三階類比正規化巴特沃斯低通濾波器
    aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
    

36.31 alimiter

限制器可防止輸入訊號超過所需的臨界值。此限制器使用前瞻技術來防止訊號失真。這表示訊號處理後會有少量延遲。請記住,它產生的延遲是您設定的啟動時間。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入增益。預設值為 1。

level_out

設定輸出增益。預設值為 1。

限制

不讓高於此電平的訊號通過限制器。預設值為 1。

makeup

限制器將在毫秒為單位的這段時間內達到其衰減電平。預設值為 5 毫秒。

channel

在這段毫秒為單位的時間內,從限制返回到衰減 1.0。預設值為 50 毫秒。

ASC

當總是需要增益衰減時,ASC 會負責釋放到平均衰減電平,而不是在釋放時間內達到 0 的衰減。

asc_level

選擇 ASC 對釋放時間的影響程度,0 表示釋放時間幾乎沒有變化,而 1 產生較長的釋放時間。

level

自動電平輸出訊號。預設為啟用。如果啟用,這會將音訊正規化回 0dB。

延遲

補償使用以啟動參數設定的前瞻緩衝區所引入的延遲。當串流到達 EOF 時,也刷新前瞻緩衝區中的有效音訊資料。

根據選擇的設定,建議在使用此濾波器之前,使用 aresample 將輸入升採樣 2 倍或 4 倍。

36.32 allpass

套用一個二階全通濾波器,其中心頻率(以 Hz 為單位)為 frequency,濾波器寬度為 width。全通濾波器會改變音訊的頻率與相位關係,而不會改變其頻率與幅度關係。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定頻率,單位為 Hz。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

階數, o

設定濾波器階數,可以是 1 或 2。預設值為 2。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

36.32.1 指令

此濾波器支援以下命令

頻率, f

變更全通頻率。命令語法為:「frequency

寬度類型, t

變更全通 width_type。命令語法為:「width_type

寬度, w

變更全通寬度。命令語法為:「width

混合, m

變更全通混合。命令語法為:「mix

36.33 aloop

循環音訊樣本。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

loop

設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。

size

設定最大樣本數。預設值為 0。

start

設定循環的第一個樣本。預設值為 0。

time

設定循環開始時間,以秒為單位。僅當名為 start 的選項設定為 -1 時使用。

36.34 amerge

將兩個或多個音訊串流合併為單個多聲道串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入

設定輸入數量。預設值為 2。

如果輸入的聲道佈局是不相交的,因此是相容的,則將相應地設定輸出的聲道佈局,並在必要時重新排序聲道。如果輸入的聲道佈局不是不相交的,則輸出將具有第一個輸入的所有聲道,然後是第二個輸入的所有聲道,依此順序,並且輸出的聲道佈局將是與聲道總數相對應的預設值。

例如,如果第一個輸入是 2.1 (FL+FR+LF),第二個輸入是 FC+BL+BR,則輸出將是 5.1,聲道順序如下:a1、a2、b1、a3、b2、b3(a1 是第一個輸入的第一個聲道,b1 是第二個輸入的第一個聲道)。

另一方面,如果兩個輸入都是立體聲,則輸出聲道將採用預設順序:a1、a2、b1、b2,並且聲道佈局將任意設定為 4.0,這可能不是預期的值。

所有輸入都必須具有相同的採樣率和格式。

如果輸入的持續時間不同,則輸出將在最短的輸入結束時停止。

36.34.1 範例

  • 將兩個單聲道檔案合併為立體聲串流
    amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
    
  • 假設 input.mkv 中有 1 個視訊串流和 6 個音訊串流的多個合併
    ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
    

36.35 amix

將多個音訊輸入混合到單個輸出中。

請注意,此濾波器僅支援浮點樣本(amergepan 音訊濾波器支援多種格式)。如果 amix 輸入具有整數樣本,則會自動插入 aresample 以執行轉換為浮點樣本。

它接受以下參數

輸入

輸入數量。如果未指定,則預設為 2。

duration

如何判斷串流結束。

最長

最長輸入的持續時間。(預設)

shortest

最短輸入的持續時間。

第一個

第一個輸入的持續時間。

dropout_transition

輸入串流結束時,音量重新正規化的過渡時間,以秒為單位。預設值為 2 秒。

權重

將每個輸入音訊串流的權重指定為以空格分隔的數字序列。如果指定的權重少於輸入數量,則最後一個權重將分配給剩餘的輸入。每個輸入的預設權重為 1。

正規化

始終縮放輸入,而不是僅對樣本求和。如果禁用此選項,並且輸入在經過此濾波器濾波之前或之後未正規化,請注意嚴重的削波。預設為啟用。

36.35.1 範例

  • 這會將 3 個輸入音訊串流混合到單個輸出,其持續時間與第一個輸入相同,並且 dropout 過渡時間為 3 秒
    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    
  • 這會將一個人聲和一個音樂輸入音訊串流混合到單個輸出,其持續時間與最長輸入相同。音樂的權重將為人聲的四分之一,並且輸入未正規化
    ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
    

36.35.2 指令

此濾波器支援以下命令

權重
正規化

語法與同名的選項相同。

36.36 amultiply

將第一個音訊串流與第二個音訊串流相乘,並將結果儲存在輸出音訊串流中。乘法是透過將第一個串流中的每個樣本與第二個串流中相同位置的樣本相乘來完成的。

透過這種逐元素乘法,可以建立幅度淡入淡出和幅度調變。

36.37 anequalizer

用於每個聲道的高階參數多頻段等化器。

它接受以下參數

參數

此選項字串的格式為:「cchn f=cf w=w g=g t=f | ...」每個等化器頻段以 '|' 分隔。

聲道

設定要套用等化的聲道號碼。如果輸入沒有該聲道,則忽略該條目。

f

設定頻段的中心頻率。如果輸入沒有該頻率,則忽略該條目。

w

以赫茲為單位設定頻段寬度。

g

設定頻段增益,單位為 dB。

t

設定頻段的濾波器類型,可選,可以是

0

巴特沃斯,這是預設值。

1

切比雪夫類型 1。

2

切比雪夫類型 2。

曲線

啟用此選項後,等化器的頻率響應會顯示在視訊串流中。

size

設定視訊串流大小。僅在啟用 curves 選項時有用。

mgain

設定將顯示的最大增益。僅在啟用 curves 選項時有用。將其設定為合理的值,可以顯示從彼此太近的相鄰頻段派生的增益,這些頻段在同時啟用時會產生更高的增益。

fscale

設定用於在視訊輸出中繪製頻率響應的頻率比例。可以是線性或對數。預設為對數。

顏色

設定將在視訊串流中顯示的每個聲道曲線的顏色。這是以空格或 '|' 分隔的顏色名稱列表。無法辨識或遺失的顏色將替換為白色。

36.37.1 範例

  • 使用切比雪夫類型 1 濾波器,將前 2 個聲道的中心頻率 200Hz 和寬度 100 Hz 的增益降低 10
    anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
    

36.37.2 指令

此濾波器支援以下命令

變更

變更現有的濾波器參數。命令語法為:「fN|f=freq|w=width|g=gain

fN 是現有的濾波器編號,從 0 開始,如果沒有此濾波器,則傳回錯誤。freq 設定新的頻率參數。width 設定新的寬度參數,單位為赫茲。gain 設定新的增益參數,單位為 dB。

帶有 asendcmd 的完整濾波器調用可能如下所示:asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...

36.38 anlmdn

使用非局部均值演算法降低音訊樣本中的寬頻雜訊。

透過尋找具有相似上下文的其他樣本來調整每個樣本。此上下文相似性是透過比較大小為 p 的周圍色塊來定義的。在樣本周圍 r 的區域中搜尋色塊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

強度, s

設定去噪強度。允許範圍從 0.00001 到 10000。預設值為 0.00001。

色塊, p

設定色塊半徑持續時間。允許範圍從 1 到 100 毫秒。預設值為 2 毫秒。

研究範圍, r

設定研究範圍半徑持續時間。允許範圍從 2 到 300 毫秒。預設值為 6 毫秒。

output, o

設定輸出模式。

它接受以下值

設定濾鏡輸出樣本。 它接受以下值

保持輸入不變。

傳遞第二個輸入。

傳遞濾除的噪音。

n

僅傳遞噪音。

傳遞誤差訊號估計樣本。

平滑度, m

設定平滑因子。預設值為 11。允許範圍從 11000

36.38.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.39 anlmf, anlms

使用第二個音訊串流,將正規化最小均方 (NLMS) 或最小均方四次 (LMS Fourth) 演算法套用於第一個音訊串流。

此自適應濾波器用於模擬所需的濾波器,方法是找到與產生誤差訊號(所需訊號,即第二個輸入音訊串流和實際訊號,即第一個輸入音訊串流之間的差異)的最小均方值相關的濾波器係數。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

以下是接受選項的描述。

設定濾波器階數。

設定投影階數。

設定濾波器 mu。

eps

設定濾波器 eps。

洩漏

設定濾波器洩漏。

設定係數以初始化內部共變異數矩陣。

它接受以下值

設定濾鏡輸出樣本。 它接受以下值

i

d

傳遞第一個輸入。

傳遞第二個輸入。

o

n

傳遞期望值、第二個輸入和誤差訊號估計值之間的差異。

傳遞輸入值、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

36.39.1 範例

  • 此濾波器的許多用途之一是降低雜訊,輸入音訊會使用延遲固定量的相同樣本進行濾波,立體聲音訊的一個範例是
    asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
    

36.39.2 指令

此濾波器支援與選項相同的命令,但不包括 order 選項。

36.40 anull

將音訊來源不變地傳遞到輸出。

36.41 apad

在音訊串流的末尾填充靜音。

這可以與 ffmpeg -shortest 一起使用,以將音訊串流擴展到與視訊串流相同的長度。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

packet_size

設定靜音封包大小。預設值為 4096。

pad_len

設定要添加到末尾的靜音樣本數。達到該值後,串流將終止。此選項與 whole_len 互斥。

whole_len

設定輸出音訊串流中的最小樣本總數。如果該值大於輸入音訊長度,則會將靜音添加到末尾,直到達到該值。此選項與 pad_len 互斥。

pad_dur

指定要添加的靜音樣本的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節。僅在設定為非負值時使用。

whole_dur

指定輸出音訊串流中的最小總持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節。僅在設定為非負值時使用。如果該值大於輸入音訊長度,則會將靜音添加到末尾,直到達到該值。此選項與 pad_dur 互斥

如果未設定 pad_lenwhole_lenpad_durwhole_dur 選項,則濾波器將無限期地將靜音添加到輸入串流的末尾。

請注意,對於 ffmpeg 4.4 及更早版本,零 pad_durwhole_dur 也會導致濾波器無限期地添加靜音。

36.41.1 範例

  • 在輸入的末尾添加 1024 個靜音樣本
    apad=pad_len=1024
    
  • 確保音訊輸出將至少包含 10000 個樣本,如果需要,用靜音填充輸入
    apad=whole_len=10000
    
  • 使用 ffmpeg 用靜音填充音訊輸入,以便在使用 shortest 選項時,視訊串流始終是最短的,並且將轉換到輸出檔案中的末尾
    ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
    

36.42 aphaser

為輸入音訊新增相位效果。

相位器濾波器會在頻譜中建立一系列峰值和谷值。峰值和谷值的位置會被調變,使其隨時間變化,產生掃頻效果。

以下是接受參數的描述。

in_gain

設定輸入增益。預設值為 0.4。

out_gain

設定輸出增益。預設值為 0.74

延遲

設定延遲,單位為毫秒。預設值為 3.0。

衰減

設定衰減。預設值為 0.4。

speed

設定調變速度,單位為 Hz。預設值為 0.5。

type

設定調變類型。預設值為三角形。

它接受以下值

triangular, t
sinusoidal, s

36.43 aphaseshift

對輸入音訊樣本應用相位偏移。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

shift

指定相位偏移。允許範圍為 -1.0 到 1.0。預設值為 0.0。

level

設定套用於最終輸出的輸出增益。允許範圍為 0.0 至 1.0。預設值為 1.0。

以下是接受選項的描述。

設定用於濾波的濾波器階數。允許範圍為 1 至 16。預設值為 8。

36.43.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.44 apsnr

測量音訊峰值訊噪比。

此濾波器接收兩個音訊流作為輸入,並輸出第一個音訊流。結果以 dB 為單位,顯示於任一輸入結束時的每個聲道。

36.45 apsyclip

對輸入音訊流應用心理聲學削波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入增益。預設值為 1。範圍為 [0.015625 - 64]。

level_out

設定輸出增益。預設值為 1。範圍為 [0.015625 - 64]。

削波

設定削波起始值。預設值為 0dBFS 或 1。

差值

僅輸出差值樣本,有助於聽取引入的失真。預設為停用。

adaptive

設定應用的自適應失真強度。預設值為 0.5。允許範圍為 0 到 1。

迭代次數

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

level

自動調整輸出訊號電平。預設為停用。若啟用,則將音訊正規化回 0dBFS。

36.45.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.46 apulsator

音訊脈衝器介於自動聲像旋轉器和顫音之間。但它也可以產生有趣的立體聲效果。脈衝器根據具有不同波形和相位偏移的 LFO(低頻振盪器)來改變左右聲道的音量。此濾波器能夠定義左右聲道之間的偏移量。偏移量為 0 表示兩個 LFO 形狀彼此匹配。左右聲道被均等地改變 - 傳統的顫音。偏移量為 50% 表示右聲道的形狀在相位上完全偏移(或向後移動約一半頻率)- 脈衝器充當自動聲像旋轉器。在 1 時,兩個曲線再次匹配。介於其間的每個設定都在所有階段之間無間隙地移動相位偏移,並使用正弦波和三角波形產生一些「旁通」聲音。您將偏移量設定得越接近 1(從 0.5 開始),訊號從左揚聲器傳遞到右揚聲器的速度就越快。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入增益。預設值為 1。範圍為 [0.015625 - 64]。

level_out

設定輸出增益。預設值為 1。範圍為 [0.015625 - 64]。

level_in

設定 LFO 將使用的波形形狀。可以是以下之一:sine、triangle、square、sawup 或 sawdown。預設值為 sine。

amount

設定調變。定義原始訊號有多少受到 LFO 的影響。

offset_l

設定左聲道偏移量。預設值為 0。允許範圍為 [0 - 1]。

offset_r

設定右聲道偏移量。預設值為 0.5。允許範圍為 [0 - 1]。

width

設定脈衝寬度。預設值為 1。允許範圍為 [0 - 2]。

定時

設定可能的定時模式。可以是以下之一:bpm、ms 或 hz。預設值為 hz。

bpm

設定 bpm。預設值為 120。允許範圍為 [30 - 300]。僅在定時設定為 bpm 時使用。

ms

設定 ms。預設值為 500。允許範圍為 [10 - 2000]。僅在定時設定為 ms 時使用。

hz

設定頻率,單位為赫茲。預設值為 2。允許範圍為 [0.01 - 100]。僅在定時設定為 hz 時使用。

36.47 aresample

使用 libswresample 函式庫將輸入音訊重新取樣為指定的參數。若未指定任何參數,則濾波器將自動在其輸入和輸出之間轉換。

此濾波器也能够拉伸/擠壓音訊數據以使其與時間戳記匹配,或注入靜音/剪切掉音訊以使其與時間戳記匹配,或執行兩者的組合,或都不執行。

此濾波器接受語法 [sample_rate:]resampler_options,其中 sample_rate 表示採樣率,而 resampler_optionskey=value 對的列表,以 ":" 分隔。請參閱 (ffmpeg-resampler) ffmpeg-resampler(1) 手冊中的「重新取樣器選項」章節,以取得完整支援選項列表。

36.47.1 範例

  • 將輸入音訊重新取樣為 44100Hz
    aresample=44100
    
  • 拉伸/擠壓樣本以符合給定的時間戳記,每秒最多補償 1000 個樣本
    aresample=async=1000
    

36.48 areverse

反轉音訊片段。

警告:此濾波器需要記憶體來緩衝整個片段,因此建議修剪。

36.48.1 範例

  • 擷取片段的前 5 秒,並將其反轉。
    atrim=end=5,areverse
    

36.49 arls

使用第二個音訊流對第一個音訊流應用遞迴最小平方法演算法。

此自適應濾波器用於模擬所需的濾波器,方法是遞迴尋找與產生誤差訊號(所需訊號,第二個輸入音訊流和實際訊號,第一個輸入音訊流之間的差異)的最小加權線性最小平方成本函數相關的濾波器係數。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

以下是接受選項的描述。

order

lambda

設定遺忘因子。

設定濾鏡 mu。

delta

設定係數以初始化內部共變異數矩陣。

out_mode

設定濾鏡輸出樣本。 它接受以下值

i

d

傳遞第一個輸入。

傳遞第二個輸入。

o

n

傳遞期望值、第二個輸入和誤差訊號估計值之間的差異。

傳遞輸入值、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

precision

預設值為 o

auto

設定處理樣本時要使用的精度。

auto

float

double

根據其他濾鏡自動選擇內部樣本格式。

36.50 arnndn

使用遞迴神經網路減少語音中的雜訊。

此濾波器接受以下選項

model, m

設定要載入的訓練模型檔案。此選項始終為必填項。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

設定要將濾波後的樣本混合到最終輸出中的程度。允許範圍為 -1 到 1。預設值為 1。負值是特殊的,它們設定要在最終濾波器輸出中保留多少濾波後的雜訊。將此選項設定為 -1 以聽取從輸入訊號中實際移除的雜訊。

36.50.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.51 asdr

測量音訊訊號失真比。

此濾波器接收兩個音訊流作為輸入,並輸出第一個音訊流。結果以 dB 為單位,顯示於任一輸入結束時的每個聲道。

36.52 asetnsamples

設定每個輸出音訊幀的樣本數。

最後一個輸出封包可能包含不同數量的樣本,因為當輸入音訊發出結束訊號時,濾波器將刷新所有剩餘的樣本。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

nb_out_samples, n

設定每個輸出音訊幀的幀數。此數字表示每個聲道的樣本數。預設值為 1024。

pad, p

若設定為 1,則濾波器將用零填充最後一個音訊幀,以便最後一幀將包含與先前幀相同數量的樣本。預設值為 1。

例如,若要將每幀樣本數設定為 1234 並停用最後一幀的填充,請使用

asetnsamples=n=1234:p=0

36.53 asetrate

設定採樣率,而不更改 PCM 數據。這將導致速度和音調的變化。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sample_rate, r

設定輸出採樣率。預設值為 44100 Hz。

36.54 ashowinfo

顯示包含每個輸入音訊幀的各種資訊的行。輸入音訊未被修改。

顯示的行包含一系列 key:value 形式的鍵/值對。

以下值顯示在輸出中

n

輸入幀的(循序)編號,從 0 開始。

pts

輸入幀的呈現時間戳記,以時基單位表示;時基取決於濾波器輸入墊,通常為 1/sample_rate

pts_time

輸入幀的呈現時間戳記,以秒為單位。

fmt

樣本格式。

chlayout

聲道佈局。

rate

音訊幀的採樣率。

nb_samples

幀中的樣本數(每個聲道)。

checksum

音訊數據的 Adler-32 檢查總和(以十六進位列印)。對於平面音訊,數據被視為所有平面都已連接在一起。

plane_checksums

每個數據平面的 Adler-32 檢查總和列表。

36.55 asisdr

測量音訊縮放不變訊號失真比。

此濾波器接收兩個音訊流作為輸入,並輸出第一個音訊流。結果以 dB 為單位,顯示於任一輸入結束時的每個聲道。

36.56 asoftclip

應用音訊柔削波。

柔削波是一種失真效果類型,其中訊號的振幅沿著平滑曲線飽和,而不是硬削波的突兀形狀。

此濾波器接受以下選項

type

設定柔削波的類型。

它接受以下值

硬削波
tanh
atan
cubic
exp
alg
quintic
sin
erf
threshold

設定開始削波的閾值。預設值為 0dB 或 1。

輸出

設定應用於輸出的增益。預設值為 0dB 或 1。

param

設定控制 S 型函數的額外參數。

oversample

設定過採樣因子。

36.56.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.57 aspectralstats

顯示有關音訊聲道頻域統計資訊。統計資訊會針對每個音訊聲道和每個音訊幀計算並儲存為元數據。

它接受以下選項

win_size

設定視窗長度,單位為樣本。預設值為 2048。允許範圍為 32 到 65536。

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

設定視窗重疊。允許範圍為 01。預設值為 0.5

測量

選擇要測量的參數。元數據鍵可以用作標誌,預設值為 all,表示測量所有項目。none 停用所有測量。

以下是每個元數據鍵的列表

平均值
變異數
質心
擴散度
偏度
峰度
平坦度
波峰因子
通量
斜率
衰減
滾降

36.58 asr

自動語音辨識

此濾波器使用 PocketSphinx 進行語音辨識。若要啟用此濾波器的編譯,您需要使用 --enable-pocketsphinx 配置 FFmpeg。

它接受以下選項

rate

設定輸入音訊的採樣率。預設值為 16000。這需要與語音模型匹配,否則會得到較差的結果。

hmm

設定包含聲學模型檔案的詞典。

dict

設定發音詞典。

lm

設定語言模型檔案。

lmctl

設定語言模型集。

lmname

設定要使用的語言模型。

logfn

設定日誌訊息的輸出。

濾波器將辨識出的語音匯出為幀元數據 lavfi.asr.text

36.59 astats

顯示有關音訊聲道時域統計資訊。統計資訊會針對每個音訊聲道計算和顯示,並且在適用的情況下,也會提供總體數字。

它接受以下選項

length

短視窗長度,單位為秒,用於峰值和谷值 RMS 測量。預設值為 0.05(50 毫秒)。允許範圍為 [0 - 10]

metadata

設定元數據注入。所有元數據鍵都以 lavfi.astats.X 為前綴,其中 X 是從 1 開始的聲道編號或字串 Overall。預設為停用。

每個聲道的可用鍵為:Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough Zero_crossings Zero_crossings_rate

Overall 的可用鍵為:Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough

例如,完整的鍵看起來像 lavfi.astats.1.DC_offsetlavfi.astats.Overall.Peak_count

請閱讀以下內容以了解鍵的描述。

重置

設定在重置之前計算累積統計數據的幀數。預設為停用。

measure_perchannel

選擇每個聲道測量的參數。元數據鍵可以用作標誌,預設值為 all,表示測量所有項目。none 停用所有每個聲道的測量。

measure_overall

選擇整體測量的參數。元數據鍵可以用作標誌,預設值為 all,表示測量所有項目。none 停用所有整體測量。

以下是測量鍵的描述

none

無測量

all

所有測量

Bit_depth

音訊的整體位元深度,即每個樣本使用的位元數

Crest_factor

峰值與 RMS 電平的標準比率(注意:不是以 dB 為單位)

DC_offset

振幅偏離零點的平均位移

Dynamic_range

以 dB 為單位測量的音訊動態範圍

Entropy

在整個音訊中測量的熵,對於白雜訊,通常測得的熵值接近 1.0

Flat_factor

訊號在其峰值電平(即 Min_levelMax_level)處的平坦度(即具有相同值的連續樣本)

Max_difference

兩個連續樣本之間的最大差異

Max_level

最大樣本電平

Mean_difference

兩個連續樣本之間的平均差異,即兩個連續樣本之間每個差異的平均值

Min_difference

兩個連續樣本之間的最小差異

Min_level

最小樣本電平

Noise_floor

在短視窗內測量的最小局部峰值,單位為 dBFS

Noise_floor_count

訊號達到 Noise floor 的次數(不是樣本數)

Number_of_Infs

具有無限值的樣本數

Number_of_NaNs

具有 NaN(非數字)值的樣本數

Number_of_denormals

具有次常值的樣本數

Number_of_samples

樣本數

Peak_count

訊號達到 Min_levelMax_level 的次數(不是樣本數)

Abs_Peak_count

從訊號中取得的絕對樣本達到 Min_levelMax_level 的最大絕對值的次數

Peak_level

以 dBFS 為單位測量的標準峰值電平

RMS_difference

兩個連續樣本之間差異的均方根值

RMS_level

以 dBFS 為單位測量的標準 RMS 電平

RMS_peak
RMS_trough

在短視窗內測量的 RMS 電平的峰值和谷值,單位為 dBFS。

過零點

波形穿過零電平軸的點數

過零率

過零率和音訊樣本數

36.60 asubboost

增強超低音頻率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dry

設定原始訊號增益,保留多少原始訊號。允許範圍為 0 到 1。預設值為 1.0。

wet

設定處理訊號增益,保留多少濾波後的訊號。允許範圍為 0 到 1。預設值為 1.0。

增強

設定最大增強因子。允許範圍為 1 到 12。預設值為 2。

衰減

設定延遲線衰減增益值。允許範圍為 0 到 1。預設值為 0.0。

回饋

設定延遲線回饋增益值。允許範圍為 0 到 1。預設值為 0.9。

cutoff

設定截止頻率,單位為赫茲。允許範圍為 50 到 900。預設值為 100。

斜率

設定截止頻率的斜率量。允許範圍為 0.0001 到 1。預設值為 0.5。

延遲

設定延遲。允許範圍為 1 到 100。預設值為 20。

channels

設定要處理的聲道。預設值為所有可用聲道。

36.60.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.61 asubcut

切除超低音頻率。

此濾波器允許設定比高通濾波器更陡峭的滾降,因此能够更有效地衰減阻帶中的頻率內容。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cutoff

設定截止頻率,單位為赫茲。允許範圍為 2 到 200。預設值為 20。

以下是接受選項的描述。

設定濾波器階數。可用值為 3 到 20。預設值為 10。

level

agate

36.61.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.62 asupercut

切除超高頻率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cutoff

設定截止頻率,單位為赫茲。允許範圍為 20000 到 192000。預設值為 20000。

以下是接受選項的描述。

設定濾波器階數。可用值為 3 到 20。預設值為 10。

level

agate

36.62.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.63 asuperpass

應用高階 Butterworth 帶通濾波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

中心頻率

設定中心頻率,單位為赫茲。允許範圍為 2 到 999999。預設值為 1000。

以下是接受選項的描述。

階數

q因子

設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。

level

輸入增益

36.63.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.64 asuperstop

應用高階 Butterworth 帶阻濾波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

中心頻率

設定中心頻率,單位為赫茲。允許範圍為 2 到 999999。預設值為 1000。

以下是接受選項的描述。

階數

q因子

設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。

level

輸入增益

36.64.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.65 atempo

調整音訊速度。

此濾波器正好接受一個參數,即音訊速度。若未指定,則濾波器將假定正常速度為 1.0。速度必須在 [0.5, 100.0] 範圍內。

請注意,速度大於 2 將會跳過一些取樣,而不是將它們混合在一起。如果出於任何原因您擔心這個問題,始終可以串聯多個 atempo 實例以達到所需的最終速度。

36.65.1 範例

  • 將音訊速度減慢至 80%。
    atempo=0.8
    
  • 將音訊速度加快至 300%。
    atempo=3
    
  • 透過串聯兩個 atempo 實例將音訊速度加快至 300%。
    atempo=sqrt(3),atempo=sqrt(3)
    

36.65.2 指令

此濾波器支援以下命令

速度

變更濾波器速度比例因子。指令語法為:「tempo」。

36.66 atilt

將頻譜傾斜濾波器應用於音訊串流。

此濾波器在任何指定的頻率範圍內應用任何頻譜衰減斜率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

freq

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

斜率

設定傾斜的斜率方向。預設值為 0。允許範圍為 -1 到 1。

width

設定傾斜的寬度。預設值為 1000。允許範圍為 100 到 10000。

以下是接受選項的描述。

設定傾斜濾波器的階數。

level

設定輸入音量等級。允許範圍為 0 到 4。預設值為 1。

36.66.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.67 atrim

修剪輸入,使輸出包含輸入的一個連續子部分。

它接受以下參數

start

要保留的區段的開始時間戳記(以秒為單位)。也就是說,時間戳記為 start 的音訊取樣將會是輸出中的第一個取樣。

end

指定將被捨棄的第一個音訊取樣的時間,也就是說,緊接在時間戳記為 end 的取樣之前的音訊取樣,將會是輸出中的最後一個取樣。

start_pts

start 相同,不同之處在於此選項是以取樣數而非秒數設定開始時間戳記。

end_pts

end 相同,不同之處在於此選項是以取樣數而非秒數設定結束時間戳記。

duration

輸出的最大持續時間,以秒為單位。

start_sample

應該輸出的第一個取樣的編號。

end_sample

應該捨棄的第一個取樣的編號。

startendduration 以時間長度規格表示;請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間長度」章節

請注意,前兩組 start/end 選項和 duration 選項會查看影格時間戳記,而 _sample 選項僅計算通過濾波器的取樣數。因此,當時間戳記錯誤、不精確或未從零開始時,start/end_pts 和 start/end_sample 會產生不同的結果。另請注意,此濾波器不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 atrim 濾波器之後插入 asetpts 濾波器。

如果設定了多個 start 或 end 選項,此濾波器會盡力保留所有符合至少一個指定約束的取樣。若要僅保留同時符合所有約束的部分,請串聯多個 atrim 濾波器。

預設值會保留所有輸入。因此,可以僅設定 end 值,以保留指定時間之前的所有內容。

範例

  • 捨棄除輸入的第二分鐘之外的所有內容。
    ffmpeg -i INPUT -af atrim=60:120
    
  • 僅保留前 1000 個取樣。
    ffmpeg -i INPUT -af atrim=end_sample=1000
    

36.68 axcorrelate

計算兩個輸入音訊串流之間的正規化視窗化互相關。

結果取樣始終介於 -1 到 1 之間(包含 -1 和 1)。如果結果為 1,表示兩個輸入取樣在選定的區段中高度相關。結果為 0 表示它們完全不相關。如果結果為 -1,表示兩個輸入取樣異相,這表示它們會互相抵消。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size

設定計算互相關的區段大小。預設值為 256。允許範圍為 2 到 131072。

algo

設定互相關的演算法。可以是 slowfastbest。預設值為 best。快速演算法假設任何給定區段的平均值始終為零,因此所需的計算量要少得多。這通常不是真的,但對於典型的音訊串流是有效的。

36.68.1 範例

  • 計算立體聲音訊串流中聲道之間的相關性。
    ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
    

36.69 bandpass

應用一個二極 Butterworth 帶通濾波器,其中心頻率為 frequency,且 (3dB 點) 頻寬為 width。csg 選項選擇恆定裙邊增益(峰值增益 = Q),而不是預設值:恆定 0dB 峰值增益。濾波器以每八度音程 6dB(每十年 20dB)的速率衰減。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定濾波器的中心頻率。預設值為 3000

csg

若設定為 1,則為恆定裙邊增益。預設值為 0。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.69.1 指令

此濾波器支援以下命令

頻率, f

變更帶通頻率。指令語法為:「frequency」。

寬度類型, t

變更帶通 width_type。指令語法為:「width_type」。

寬度, w

變更帶通寬度。指令語法為:「width」。

混合, m

變更帶通混合。指令語法為:「mix」。

36.70 bandreject

應用一個二極 Butterworth 帶拒濾波器,其中心頻率為 frequency,且 (3dB 點) 頻寬為 width。濾波器以每八度音程 6dB(每十年 20dB)的速率衰減。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定濾波器的中心頻率。預設值為 3000

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.70.1 指令

此濾波器支援以下命令

頻率, f

變更帶拒頻率。指令語法為:「frequency」。

寬度類型, t

變更帶拒 width_type。指令語法為:「width_type」。

寬度, w

變更帶拒寬度。指令語法為:「width」。

混合, m

變更帶拒混合。指令語法為:「mix」。

36.71 bass, lowshelf

使用二極擱架式濾波器來增強或衰減音訊的低音(較低)頻率,該濾波器的響應類似於標準高傳真音響的音調控制。這也稱為擱架式均衡 (EQ)。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

gain, g

給定 0 Hz 的增益。其有用範圍約為 -20(用於大幅衰減)到 +20(用於大幅增強)。使用正增益時,請注意削波。

頻率, f

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或衰減的頻率範圍。預設值為 100 Hz。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

決定濾波器的擱架式過渡有多陡峭。

極點, p

設定極點數。預設值為 2。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.71.1 指令

此濾波器支援以下命令

頻率, f

變更低音頻率。指令語法為:「frequency」。

寬度類型, t

變更低音 width_type。指令語法為:「width_type」。

寬度, w

變更低音寬度。指令語法為:「width」。

gain, g

變更低音增益。指令語法為:「gain」。

混合, m

變更低音混合。指令語法為:「mix」。

36.72 biquad

應用具有給定係數的雙二階 IIR 濾波器。其中 b0b1b2a0a1a2 分別為分子和分母係數。channelsc 指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

36.72.1 指令

此濾波器支援以下命令

a0
a1
a2
b0
b1
b2

變更雙二階參數。指令語法為:「value」。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.73 bs2b

Bauer 立體聲轉雙耳變換,可改善使用耳機聆聽立體聲音訊錄音的效果。

若要啟用此濾波器的編譯,您需要使用 --enable-libbs2b 配置 FFmpeg。

它接受以下參數

profile

預定義的串音等級。

預設

預設等級 (fcut=700, feed=50)。

cmoy

Chu Moy 電路 (fcut=700, feed=60)。

jmeier

Jan Meier 電路 (fcut=650, feed=95)。

fcut

截止頻率(單位為 Hz)。

feed

饋送等級(單位為 Hz)。

36.74 channelmap

將輸入聲道重新對應到新的位置。

它接受以下參數

map

將聲道從輸入對應到輸出。引數是以「|」分隔的對應清單,每個對應的格式為 in_channel-out_channelin_channelin_channel 可以是輸入聲道的名稱(例如 FL 代表前置左聲道)或其在輸入聲道佈局中的索引。out_channel 是輸出聲道的名稱或其在輸出聲道佈局中的索引。如果未給定 out_channel,則隱含地為索引,從零開始,並且每個對應遞增一。不允許混合不同類型的對應,否則會導致剖析錯誤。

channel_layout

輸出串流的聲道佈局。如果未指定,則濾波器將根據 out_channel 名稱或對應數量來猜測。猜測的佈局不一定會包含對應順序中的聲道。

如果沒有對應存在,濾波器將隱含地將輸入聲道對應到輸出聲道,並保留索引。

36.74.1 範例

  • 例如,假設一個 5.1+downmix 輸入 MOV 檔案,
    ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
    

    將從輸入的 downmix 聲道建立標記為立體聲的輸出 WAV 檔案。

  • 若要修正以 AAC 原生聲道順序錯誤編碼的 5.1 WAV 檔案
    ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
    

36.75 channelsplit

將輸入音訊串流中的每個聲道分割成單獨的輸出串流。

它接受以下參數

channel_layout

輸入串流的聲道佈局。預設值為「stereo」。

channels

描述要提取為單獨輸出串流的聲道的聲道佈局,或「all」以將每個輸入聲道提取為單獨的串流。預設值為「all」。

選擇輸入中聲道佈局中不存在的聲道將會導致錯誤。

36.75.1 範例

  • 例如,假設一個立體聲輸入 MP3 檔案,
    ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
    

    將建立一個具有兩個音訊串流的輸出 Matroska 檔案,一個僅包含左聲道,另一個僅包含右聲道。

  • 將 5.1 WAV 檔案分割成每個聲道一個檔案。
    ffmpeg -i in.wav -filter_complex
    'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
    -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
    front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
    side_right.wav
    
  • 僅從 5.1 WAV 檔案中提取 LFE。
    ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
    -map '[LFE]' lfe.wav
    

36.76 chorus

為音訊新增合唱效果。

可以使單一人聲聽起來像合唱團,但也可以應用於樂器演奏。

合唱效果類似於具有短延遲的回音效果,但與回音的延遲是恆定的不同,合唱效果的延遲是使用正弦或三角調變來變化的。調變深度定義了調變延遲在延遲之前或之後播放的範圍。因此,延遲的聲音聽起來會較慢或較快,也就是說,延遲的聲音圍繞原始聲音進行調整,就像合唱團中有些歌聲略微走調一樣。

它接受以下參數

in_gain

設定輸入增益。預設值為 0.4。

out_gain

設定輸出增益。預設值為 0.4。

delays

設定延遲。典型的延遲約為 40 毫秒到 60 毫秒。

decays

設定衰減。

speeds

設定速度。

depths

設定深度。

36.76.1 範例

  • 單一延遲
    chorus=0.7:0.9:55:0.4:0.25:2
    
  • 兩個延遲
    chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
    
  • 具有三個延遲的更飽滿的合唱效果
    chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
    

36.77 compand

壓縮或擴展音訊的動態範圍。

它接受以下參數

attacks
decays

每個聲道的時間列表(以秒為單位),輸入訊號的瞬時電平在這些時間內取平均值,以確定其音量。attacks 指的是音量增加,而 decays 指的是音量減少。在大多數情況下,啟動時間(對音訊變大的反應)應短於衰減時間,因為人耳對突然的大音訊比突然的小音訊更敏感。典型的啟動值為 0.3 秒,典型的衰減值為 0.8 秒。如果指定的啟動和衰減次數少於聲道數,則最後設定的啟動/衰減將用於所有剩餘的聲道。

points

傳輸函數的點列表,以 dB 為單位指定,相對於最大可能的訊號振幅。每個關鍵點列表都必須使用以下語法定義:x0/y0|x1/y1|x2/y2|....x0/y0 x1/y1 x2/y2 ....

輸入值必須嚴格遞增,但傳輸函數不必單調遞增。假設點 0/0,但可以覆寫(通過 0/out-dBn)。傳輸函數的典型值為 -70/-70|-60/-20|1/0

soft-knee

設定所有接合點的曲線半徑,單位為 dB。預設值為 0.01。

gain

設定要應用於傳輸函數上所有點的額外增益,單位為 dB。這允許輕鬆調整整體增益。預設值為 0。

volume

設定濾波開始時每個聲道要假設的初始音量,單位為 dB。這允許使用者最初提供一個標稱電平,以便例如在壓縮開始運作之前,不會將非常大的增益應用於初始訊號電平。最初安靜的音訊的典型值為 -90 dB。預設值為 0。

延遲

設定延遲,單位為秒。輸入音訊會立即分析,但在饋送到音量調整器之前,音訊會被延遲。指定大約等於啟動/衰減時間的延遲,允許濾波器有效地以預測模式而非反應模式運作。預設值為 0。

36.77.1 範例

  • 使具有安靜和響亮段落的音樂適合在嘈雜環境中收聽
    compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
    

    另一個用於具有耳語和爆炸部分的音訊的範例

    compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
    
  • 當雜訊電平低於訊號電平時的雜訊閘
    compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
    
  • 這是另一個雜訊閘,這次用於當雜訊電平高於訊號電平時(在某些方面使其類似於靜噪)
    compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
    
  • 從 -6dB 開始的 2:1 壓縮
    compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
    
  • 從 -9dB 開始的 2:1 壓縮
    compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
    
  • 從 -12dB 開始的 2:1 壓縮
    compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
    
  • 從 -18dB 開始的 2:1 壓縮
    compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
    
  • 從 -15dB 開始的 3:1 壓縮
    compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
    
  • 壓縮器/閘
    compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
    
  • 擴展器
    compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
    
  • -6dB 硬限制器
    compand=attacks=0:points=-80/-80|-6/-6|20/-6
    
  • -12dB 硬限制器
    compand=attacks=0:points=-80/-80|-12/-12|20/-12
    
  • -35 dB 硬雜訊閘
    compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
    
  • 軟限制器
    compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
    

36.78 compensationdelay

補償延遲線是一種基於度量的延遲,用於補償麥克風或揚聲器位置的差異。

例如,您使用放置在不同位置的兩個麥克風錄製了吉他。由於聲波的前端在正常條件下具有固定的速度,因此麥克風的相位可能會有所不同,並且取決於它們的位置和相互位置。當這些麥克風同相(同步)時,可以實現最佳的聲音混合。請注意,麥克風之間約 30 公分的距離會使一個麥克風以與另一個麥克風反相的方式捕獲訊號。這會使最終的混合聲音聽起來不穩定。此濾波器通過為每個麥克風軌道新增不同的延遲並使其同步來幫助解決相位問題。

當您以一個軌道為基礎並將其他軌道逐個與其同步時,可以達到最佳效果。請記住,同步/延遲容差也取決於取樣率。較高的取樣率將提供更大的容差。

此濾波器接受以下參數

mm

設定毫米距離。這是用於微調的補償距離。預設值為 0。

cm

設定公分距離。這是用於收緊距離設定的補償距離。預設值為 0。

m

設定公尺距離。這是用於硬距離設定的補償距離。預設值為 0。

dry

設定乾訊號量。未處理(乾)訊號的量。預設值為 0。

wet

設定濕訊號量。已處理(濕)訊號的量。預設值為 1。

temp

設定溫度,單位為攝氏度。這是環境溫度。預設值為 20。

36.78.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.79 crossfeed

應用耳機串音濾波器。

串音是混合立體聲音訊錄音的左右聲道的過程。它主要用於減少低頻的極端立體聲分離。

目的是為聽眾產生更像揚聲器的聲音。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

strength

設定串音強度。預設值為 0.2。允許範圍為 0 到 1。這設定立體聲影像側邊部分的低擱架式濾波器的增益。預設值為 -6dB。當強度設定為 1 時,最大允許值為 -30dB。

range

設定音場寬度。預設值為 0.5。允許範圍為 0 到 1。這設定低擱架式濾波器的截止頻率。預設截止頻率接近 1550 Hz。當範圍設定為 1 時,截止頻率設定為 2100 Hz。

斜率

設定低擱架式濾波器的曲線斜率。預設值為 0.5。允許範圍為 0.01 到 1。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入增益。預設值為 0.9。

level_out

設定輸出增益。預設值為 1。

block_size

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.79.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.80 crystalizer

用於音訊雜訊銳化的簡單演算法。

此濾波器線性地增加每個音訊取樣之間的差異。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定濾鏡輸出樣本。 它接受以下值

設定效果強度(預設值:2.0)。必須在 -10.0 到 0(聲音不變)到 10.0(最大效果)的範圍內。若要反向濾波,請使用負值。

c

啟用削波。預設為啟用。

36.80.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.81 dcshift

對音訊套用直流偏移。

這可用於移除音訊中的直流偏移(可能由錄音鏈中的硬體問題引起)。直流偏移的效果是降低動態餘裕,進而降低音量。astats 濾波器可用於判斷訊號是否具有直流偏移。

shift

設定直流偏移量,允許範圍為 [-1, 1]。它表示音訊的偏移量。

limitergain(限制器增益)

選用。它應具有遠小於 1 的值(例如 0.05 或 0.02),用於防止削波。

36.82 deesser

對音訊樣本套用齒音消除。

設定濾鏡輸出樣本。 它接受以下值

設定觸發齒音消除的強度。允許範圍為 0 到 1。預設值為 0。

m

設定對聲音高音部分進行衰減的量。允許範圍為 0 到 1。預設值為 0.5。

f

齒音消除時要保留多少原始頻率內容。允許範圍為 0 到 1。預設值為 0.5。

s

設定輸出模式。

它接受以下值

設定濾鏡輸出樣本。 它接受以下值

保持輸入不變。

傳遞第二個輸入。

通過濾除的齒音。

傳遞輸入值、第一個輸入和誤差訊號估計值之間的差異。

僅通過齒音。

傳遞誤差訊號估計樣本。

36.83 dialoguenhance

增強立體聲音訊中的對話。

此濾波器接受立體聲輸入並產生環繞聲 (3.0) 聲道輸出。新產生的前置中央聲道具有增強的語音對話,這些對話原本在兩個立體聲聲道中都可用。此濾波器輸出的前置左聲道和前置右聲道與立體聲輸入中的相同。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

original(原始)

設定在前置中央聲道輸出中保留的原始中央聲道因子。允許範圍為 0 到 1。預設值為 1。

enhance

設定要放入前置中央聲道輸出的對話增強因子。允許範圍為 0 到 3。預設值為 1。

voice(語音)

設定語音偵測因子。允許範圍為 2 到 32。預設值為 2。

36.83.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.84 drmeter

測量音訊動態範圍。

DR 值為 14 或更高表示非常動態的素材。DR 值為 8 到 13 表示過渡素材。任何低於 8 的值都表示動態範圍非常差且經過高度壓縮。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

length

設定用於將音訊分割成等長片段的視窗長度(秒)。預設值為 3 秒。

36.85 dynaudnorm

動態音訊正規化器。

此濾波器對輸入音訊套用一定量的增益,以使其峰值幅度達到目標電平(例如 0 dBFS)。然而,與更「簡單」的正規化演算法相反,「動態音訊正規化器」*動態地*重新調整輸入音訊的增益因子。這允許對音訊的「安靜」部分套用額外增益,同時避免「響亮」部分的失真或削波。換句話說:動態音訊正規化器將「均勻化」安靜和響亮部分的音量,從而使每個部分的音量都達到相同的目標電平。但是請注意,動態音訊正規化器在實現此目標時,*不會*套用「動態範圍壓縮」。它將保留音訊檔案每個部分*內部* 100% 的動態範圍。

framelen, f(幀長度,f)

設定幀長度(毫秒)。範圍從 10 到 8000 毫秒。預設值為 500 毫秒。動態音訊正規化器以稱為幀的小塊處理輸入音訊。這是必要的,因為峰值幅度對於單個樣本值沒有意義。相反,我們需要確定連續樣本值的峰值幅度。雖然「標準」正規化器只會使用完整檔案的峰值幅度,但動態音訊正規化器會單獨確定每個幀的峰值幅度。幀的長度以毫秒為單位指定。預設情況下,動態音訊正規化器使用 500 毫秒的幀長度,這已被發現對於大多數檔案都能提供良好的效果。請注意,幀的確切長度(以樣本數為單位)將根據各個輸入音訊檔案的取樣率自動確定。

gausssize, g(高斯大小,g)

設定高斯濾波器視窗大小。範圍從 3 到 301,必須為奇數。預設值為 31。動態音訊正規化器最重要的參數可能是高斯平滑濾波器的 window size(視窗大小)。濾波器的視窗大小以幀為單位指定,並以目前幀為中心。為了簡單起見,這必須是一個奇數。因此,預設值 31 會考慮到目前幀,以及前 15 幀和後 15 幀。使用較大的視窗會產生更強的平滑效果,從而減少增益變化,即較慢的增益適應。相反,使用較小的視窗會產生較弱的平滑效果,從而增加增益變化,即更快的增益適應。換句話說,您增加此值越多,動態音訊正規化器的行為就越像「傳統」正規化濾波器。相反,您減少此值越多,動態音訊正規化器的行為就越像動態範圍壓縮器。

peak, p(峰值,p)

設定目標峰值。這指定了正規化音訊輸入的最高允許幅度電平。此濾波器將嘗試盡可能接近目標峰值幅度,但同時它也確保正規化訊號永遠不會超過峰值幅度。幀的最大局部增益因子直接由目標峰值幅度決定。預設值為 0.95,因此保留了 5%* 的動態餘裕。不建議超過此值。

maxgain, m(最大增益,m)

設定最大增益因子。範圍從 1.0 到 100.0。預設值為 10.0。動態音訊正規化器確定每個輸入幀的最大可能(局部)增益因子,即不會導致削波或失真的最大增益因子。最大增益因子由幀的最高幅度樣本決定。但是,動態音訊正規化器還將幀的最大增益因子限制在預定的(全域)最大增益因子內。這樣做的目的是避免在「靜音」或幾乎靜音的幀中出現過大的增益因子。預設情況下,最大增益因子為 10.0,對於大多數輸入,預設值應該足夠,通常不建議增加此值。但是,對於整體音量電平極低的輸入,可能需要允許更高的增益因子。但是請注意,動態音訊正規化器不會簡單地套用「硬」閾值(即,切斷高於閾值的值)。相反,將套用「S 型」閾值函數。這樣,增益因子將平滑地接近閾值,但永遠不會超過該值。

targetrms, r(目標 RMS,r)

設定目標 RMS。範圍從 0.0 到 1.0。預設值為 0.0 - 停用。預設情況下,動態音訊正規化器執行「峰值」正規化。這表示每個幀的最大局部增益因子僅由幀的最高幅度樣本定義。這樣,樣本可以盡可能地放大,而不會超過最大訊號電平,即不會削波。但是,選擇性地,動態音訊正規化器也可以考慮幀的均方根值,縮寫為 RMS。在電機工程中,RMS 通常用於確定時變訊號的功率。因此,人們認為 RMS 比僅查看訊號的峰值幅度更能近似「感知響度」。因此,通過將所有幀調整為恆定的 RMS 值,可以建立統一的「感知響度」。如果已指定目標 RMS 值,則幀的局部增益因子定義為將導致完全該 RMS 值的因子。但是請注意,最大局部增益因子仍然受到幀的最高幅度樣本的限制,以防止削波。

coupling, n(耦合,n)

啟用聲道耦合。預設為啟用。預設情況下,動態音訊正規化器將以相同的量放大所有聲道。這表示將相同的增益因子套用於所有聲道,即最大可能的增益因子由「最響亮」的聲道決定。但是,在某些錄音中,不同聲道的音量可能不均勻,例如,一個聲道可能比另一個聲道「安靜」。在這種情況下,可以使用此選項來停用聲道耦合。這樣,增益因子將針對每個聲道獨立確定,僅取決於各個聲道的最高幅度樣本。這允許協調不同聲道的音量。

correctdc, c(校正直流,c)

啟用直流偏壓校正。預設為停用。音訊訊號(在時域中)是樣本值序列。在動態音訊正規化器中,這些樣本值以 -1.0 到 1.0 的範圍表示,無論原始輸入格式如何。正常情況下,音訊訊號或「波形」應以零點為中心。這表示如果我們計算檔案中或單個幀中所有樣本的平均值,則結果應為 0.0 或至少非常接近該值。但是,如果平均值與 0.0 存在顯著偏差,無論是正方向還是負方向,這都稱為直流偏壓或直流偏移。由於直流偏壓顯然是不希望出現的,因此動態音訊正規化器提供了可選的直流偏壓校正。啟用直流偏壓校正後,動態音訊正規化器將確定每個輸入幀的平均值或「直流校正」偏移量,並從幀的所有樣本值中減去該值,以確保這些樣本再次以 0.0 為中心。此外,為了避免幀邊界處出現「間隙」,直流校正偏移值將在相鄰幀之間平滑插值。

altboundary, b(替代邊界,b)

啟用替代邊界模式。預設為停用。動態音訊正規化器會考慮每個幀周圍的特定鄰域。這包括前面的幀以及後續的幀。但是,對於位於音訊檔案的最開始和最末尾的「邊界」幀,並非所有相鄰幀都可用。特別是,對於音訊檔案中的前幾個幀,前面的幀是未知的。同樣,對於音訊檔案中的最後幾個幀,後續的幀是未知的。因此,出現了一個問題,即對於「邊界」區域中遺失的幀,應假定哪些增益因子。動態音訊正規化器實作了兩種模式來處理這種情況。預設邊界模式假定遺失幀的增益因子正好為 1.0,從而在輸入的開始和結束處分別產生平滑的「淡入」和「淡出」。

compress, s(壓縮,s)

設定壓縮因子。範圍從 0.0 到 30.0。預設值為 0.0。預設情況下,動態音訊正規化器不套用「傳統」壓縮。這表示訊號峰值不會被修剪,因此完整動態範圍將保留在每個局部鄰域內。但是,在某些情況下,可能希望將動態音訊正規化器的正規化演算法與更「傳統」的壓縮相結合。為此,動態音訊正規化器提供了可選的壓縮(閾值處理)功能。如果(且僅當)啟用壓縮功能時,所有輸入幀都將在實際正規化過程之前由軟拐點閾值處理函數處理。簡而言之,閾值處理函數將修剪所有幅度超過特定閾值的樣本。但是,動態音訊正規化器不會簡單地套用固定的閾值。相反,閾值將針對每個單獨的幀進行調整。一般來說,參數越小,壓縮越強,反之亦然。不建議使用低於 3.0 的值,因為可能會出現可聽見的失真。

threshold, t

設定目標閾值。這指定了將被正規化的音訊輸入的最低允許幅度電平。如果輸入幀音量高於此值,則幀將被正規化。否則,幀可能根本不會被正規化。預設值設定為 0,這表示所有輸入幀都將被正規化。如果不想放大數位雜訊,則此選項最有用。

channels, h(聲道,h)

指定要濾波的聲道,預設情況下,所有可用的聲道都會被濾波。

將交叉淡化從一個輸入音訊串流應用到另一個輸入音訊串流。 交叉淡化應用於第一個串流結束附近的指定持續時間。

指定幀的重疊量。如果設定為 0(預設值),則不進行幀重疊。使用 >0 和 <1 的值將進行較不保守的增益調整,就像 framelen 選項設定為較小的值時一樣,如果 framelen 選項值針對非零重疊進行補償,則與零重疊情況相比,增益調整將在時間上更平滑。

curve, v(曲線,v)

指定峰值映射曲線表達式,該表達式將在計算套用於幀的增益時使用。最大輸出幀增益仍將受到先前為此濾波器提及的其他選項的限制。

表達式可以包含以下常數

ch

當前聲道號碼

sn

當前取樣號碼

nb_channels

聲道數量

t

以秒為單位表示的時間戳記

sr

取樣率

p

current frame peak value(目前幀峰值)

36.85.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.86 earwax

使音訊更易於在耳機上收聽。

此濾波器為 44.1kHz 立體聲(即音訊 CD 格式)音訊添加「提示」,以便在耳機上收聽時,立體聲影像從您的頭部內部(耳機的標準)移動到聽眾的外部和前方(揚聲器的標準)。

從 SoX 移植。

36.87 equalizer

套用雙極峰值等化 (EQ) 濾波器。使用此濾波器,可以增加或減少選定頻率及其周圍的訊號電平,同時(與帶通和帶阻濾波器不同)所有其他頻率的訊號電平保持不變。

為了產生複雜的等化曲線,可以多次給出此濾波器,每次都使用不同的中心頻率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定濾波器的中心頻率(Hz)。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。

gain, g

設定所需的增益或衰減 (dB)。使用正增益時請注意削波。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.87.1 範例

  • 在 1000 Hz 衰減 10 dB,頻寬為 200 Hz
    equalizer=f=1000:t=h:width=200:g=-10
    
  • 在 1000 Hz 套用 2 dB 增益,Q 值為 1,並在 100 Hz 衰減 5 dB,Q 值為 2
    equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
    

36.87.2 指令

此濾波器支援以下命令

頻率, f

變更等化器頻率。指令語法為:「frequency」(頻率

寬度類型, t

變更等化器 width_type(寬度類型)。指令語法為:「width_type」(寬度類型

寬度, w

變更等化器寬度。指令語法為:「width」(寬度

gain, g

變更等化器增益。指令語法為:「gain」(增益

混合, m

變更等化器混音。指令語法為:「mix」(混音

36.88 extrastereo

線性增加左右聲道之間的差異,這為播放添加了某種「現場」效果。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

m

設定差異係數(預設值:2.5)。0.0 表示單聲道聲音(兩個聲道的平均值),1.0 表示聲音將保持不變,-1.0 表示左右聲道將被交換。

c

啟用削波。預設為啟用。

36.88.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.89 firequalizer

使用任意頻率響應套用 FIR 等化。

此濾波器接受以下選項

gain

設定增益曲線方程式(以 dB 為單位)。表達式可以包含變數

f

評估的頻率

sr

取樣率

ch

聲道編號,當停用多聲道評估時,設定為 0

chid(聲道 ID)

聲道 ID,請參閱 libavutil/channel_layout.h,當停用多聲道評估時,設定為第一個聲道 ID

chs

聲道數量

chlayout

channel_layout(聲道佈局),請參閱 libavutil/channel_layout.h

和函數

gain_interpolate(f)(增益插值(f))

在頻率 f 上基於 gain_entry 內插增益

cubic_interpolate(f)

與 gain_interpolate 相同,但更平滑

此選項也可用作命令。預設值為 gain_interpolate(f)

gain_entry

設定 gain_interpolate 函數的增益條目。運算式可以包含函數

entry(f, g)

在頻率 f 儲存增益條目,值為 g

此選項也可用作命令。

延遲

設定濾波器延遲時間,單位為秒。數值越高表示越精確。預設值為 0.01

accuracy

設定濾波器精確度,單位為 Hz。數值越低表示越精確。預設值為 5

wfunc

設定窗函數。可接受的值為

rectangular

矩形窗,當增益曲線已經平滑時很有用

hann

漢寧窗 (預設)

hamming

漢明窗

blackman

布萊克曼窗

nuttall3

3 項連續一階導數納塔爾窗

mnuttall3

最小 3 項不連續納塔爾窗

nuttall

4 項連續一階導數納塔爾窗

bnuttall

最小 4 項不連續納塔爾窗 (布萊克曼-納塔爾窗)

bharris

布萊克曼-哈里斯窗

tukey

涂 keys 窗

fixed

如果啟用,則使用固定數量的音訊樣本。這在以較大延遲進行濾波時可提高速度。預設為停用。

multi

在增益上啟用多聲道評估。預設為停用。

zero_phase

透過減去時間戳來補償延遲,啟用零相位模式。預設為停用。

scale

設定增益使用的縮放。可接受的值為

linlin

線性頻率,線性增益

linlog

線性頻率,對數 (以 dB 為單位) 增益 (預設)

loglin

對數 (以八度音階,20 Hz 為 0) 頻率,線性增益

loglog

對數頻率,對數增益

dumpfile

設定用於傾印 (dumping) 的檔案,適用於 gnuplot。

dumpscale

設定 dumpfile 的縮放。可接受的值與 scale 選項相同。預設值為 linlog。

fft2

啟用使用複數 FFT 的雙聲道迴旋積。這可以顯著提高速度。預設為停用。

min_phase

啟用最小相位脈衝響應。預設為停用。

36.89.1 範例

  • 在 1000 Hz 進行低通濾波
    firequalizer=gain='if(lt(f,1000), 0, -INF)'
    
  • 在 1000 Hz 進行低通濾波,使用 gain_entry
    firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
    
  • 自訂等化
    firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
    
  • 使用零相位和較高的延遲來補償延遲
    firequalizer=delay=0.1:fixed=on:zero_phase=on
    
  • 在左聲道上進行低通濾波,在右聲道上進行高通濾波
    firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
    :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
    

36.90 flanger

對音訊套用鑲邊 (flanging) 效果。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

延遲

設定基本延遲時間,單位為毫秒。範圍從 0 到 30。預設值為 0。

depth

設定額外的掃描延遲時間,單位為毫秒。範圍從 0 到 10。預設值為 2。

regen

設定百分比再生 (延遲訊號回饋)。範圍從 -95 到 95。預設值為 0。

width

設定與原始訊號混合的延遲訊號百分比。範圍從 0 到 100。預設值為 71。

speed

設定每秒掃描次數 (Hz)。範圍從 0.1 到 10。預設值為 0.5。

shape

設定掃描波形狀,可以是 triangularsinusoidal。預設值為 sinusoidal

phase

設定多聲道掃描波百分比偏移。範圍從 0 到 100。預設值為 25。

interp

設定延遲線內插,linearquadratic。預設值為 linear

36.91 haas

對音訊套用 Haas 效應。

請注意,這最適合應用於單聲道訊號。將此濾波器應用於單聲道訊號,可以提供一些方向感並擴展其立體聲影像。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入音量。預設值為 1,或 0dB

level_out

設定輸出音量。預設值為 1,或 0dB。

side_gain

設定應用於訊號側邊部分的增益。預設值為 1

middle_source

設定中間聲源的種類。可以是以下其中之一

left

選取左聲道。

right

選取右聲道。

mid

選取立體聲影像的中間部分訊號。

side

選取立體聲影像的側邊部分訊號。

middle_phase

變更中間相位。預設為停用。

left_delay

設定左聲道延遲。預設值為 2.05 毫秒。

left_balance

設定左聲道平衡。預設值為 -1

left_gain

設定左聲道增益。預設值為 1

left_phase

變更左相位。預設為停用。

right_delay

設定右聲道延遲。預設值為 2.12 毫秒。

right_balance

設定右聲道平衡。預設值為 1

right_gain

設定右聲道增益。預設值為 1

right_phase

變更右相位。預設為啟用。

36.92 hdcd

解碼高解析度相容數位 (HDCD) 資料。具有嵌入式 HDCD 碼的 16 位元 PCM 流會擴展為 20 位元 PCM 流。

此濾波器支援 HDCD 的峰值擴展和低電平增益調整功能,並偵測瞬態濾波器標誌。

ffmpeg -i HDCD16.flac -af hdcd OUT24.flac

當將濾波器與 wav 搭配使用時,請注意 wav 的預設編碼為 16 位元,因此產生的 20 位元流將被截斷回 16 位元。在濾波器之後使用類似 -acodec pcm_s24le 的指令以取得 24 位元 PCM 輸出。

ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

disable_autoconvert

停用濾波器圖中的任何自動格式轉換或重新取樣。

process_stereo

一起處理立體聲聲道。如果聲道之間的 target_gain 不符,則視為無效並使用最後一個有效的 target_gain。

cdt_ms

設定碼偵測計時器週期,單位為毫秒。

force_pe

即使未發出 PE 訊號,也始終擴展高於 -3dBFS 的峰值。

analyze_mode

將音訊替換為實音調,並調整振幅以表示解碼過程的某些特定方面。輸出檔案可以與原始檔案一起載入到音訊編輯器中,以協助分析。

analyze_mode=pe:force_pe=true 可用於查看高於 PE 電平的所有樣本。

模式為

0, off

已停用

1, lle

每個樣本的增益調整電平

2, pe

發生峰值擴展的樣本

3, cdt

碼偵測計時器處於活動狀態的樣本

4, tgm

聲道之間的目標增益不符的樣本

36.93 headphone

套用頭部相關傳輸函數 (HRTF) 以在使用者周圍建立虛擬揚聲器,以透過耳機進行雙耳聆聽。HRIR 透過額外的流提供,每個聲道都需要一個立體聲輸入流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

map

設定用於迴旋積的輸入流對應。參數是以 '|' 分隔的聲道名稱清單,依序作為濾波器的額外流輸入提供。這也指定了輸入流的數量。輸入流的數量必須不小於第一個流中的聲道數量加一。

gain

設定應用於音訊的增益。值以 dB 為單位。預設值為 0。

type

設定處理類型。可以是 timefreqtime 是在時域中處理音訊,速度較慢。freq 是在頻域中處理音訊,速度較快。預設值為 freq

lfe

設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。

size

設定每次處理的幀大小,以樣本數為單位。預設值為 1024。允許的範圍從 1024 到 96000。

hrir

設定 hrir 流的格式。預設值為 stereo。替代值為 multich。如果值設定為 stereo,則額外流的數量應大於或等於第一個輸入流中的輸入聲道數量。而且每個額外流都應具有立體聲聲道數量。如果值設定為 multich,則額外流的數量應恰好為一個。而且額外流的輸入聲道數量應等於或大於第一個輸入流的聲道數量的兩倍。

36.93.1 範例

  • 完整範例,使用 wav 檔案作為係數,並使用 amovie 濾波器進行 7.1 降混,每個 amovie 濾波器都使用具有 IR 係數的立體聲檔案作為輸入。這些檔案提供虛擬揚聲器每個位置的係數
    ffmpeg -i input.wav
    -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
    output.wav
    
  • 完整範例,使用 wav 檔案作為係數,並使用 amovie 濾波器進行 7.1 降混,但現在使用 multich hrir 格式。
    ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
    output.wav
    

36.94 highpass

套用具有 3dB 點頻率的高通濾波器。濾波器可以是單極或雙極 (預設)。濾波器滾降為每極每八度音程 6dB (每極每十倍頻程 20dB)。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定頻率,單位為 Hz。預設值為 3000。

極點, p

設定極點數。預設值為 2。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯響應。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.94.1 指令

此濾波器支援以下命令

頻率, f

變更高通頻率。命令的語法為:「frequency

寬度類型, t

變更高通 width_type。命令的語法為:「width_type

寬度, w

變更高通 width。命令的語法為:「width

混合, m

變更高通 mix。命令的語法為:「mix

36.95 join

將多個輸入流加入到一個多聲道流中。

它接受以下參數

輸入

輸入流的數量。預設為 2。

channel_layout

所需的輸出聲道佈局。預設為立體聲。

map

將聲道從輸入對應到輸出。參數是以 '|' 分隔的對應清單,每個對應都採用 input_idx.in_channel-out_channel 格式。input_idx 是輸入流的從 0 開始的索引。in_channel 可以是輸入聲道的名稱 (例如 FL 代表前置左聲道) 或其在指定輸入流中的索引。out_channel 是輸出聲道的名稱。

當未明確指定對應時,濾波器將嘗試猜測對應。它會先嘗試尋找未使用的相符輸入聲道,如果失敗,則選取第一個未使用的輸入聲道。

加入 3 個輸入 (具有正確設定的聲道佈局)

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT

從 6 個單聲道流建立 5.1 輸出

ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out

36.96 ladspa

載入 LADSPA (Linux 音訊開發人員簡易外掛程式 API) 外掛程式。

若要啟用此濾波器的編譯,您需要使用 --enable-ladspa 配置 FFmpeg。

file, f

指定要載入的 LADSPA 外掛程式庫的名稱。如果定義了環境變數 LADSPA_PATH,則會在 LADSPA_PATH 中以冒號分隔的清單指定的每個目錄中搜尋 LADSPA 外掛程式,否則會在標準 LADSPA 路徑中搜尋,標準 LADSPA 路徑依序為:HOME/.ladspa/lib//usr/local/lib/ladspa//usr/lib/ladspa/

plugin, p

指定程式庫內的外掛程式。有些程式庫僅包含一個外掛程式,但其他程式庫包含許多外掛程式。如果未設定此項,濾波器將列出指定程式庫內的所有可用外掛程式。

controls, c

設定 '|' 分隔的控制項清單,這些控制項是零個或多個浮點值,用於決定載入的外掛程式的行為 (例如延遲、閾值或增益)。控制項需要使用以下語法定義:c0=value0|c1=value1|c2=value2|...,其中 valuei 是在第 i 個控制項上設定的值。或者,它們也可以使用以下語法定義:value0|value1|value2|...,其中 valuei 是在第 i 個控制項上設定的值。如果 controls 設定為 help,則會列印所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設為 44100。僅當外掛程式沒有輸入時使用。

nb_samples, n

設定每個輸出幀每個聲道的樣本數,預設為 1024。僅當外掛程式沒有輸入時使用。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節 以取得接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾截斷。如果未指定,或表示的持續時間為負數,則音訊應無限期產生。僅當外掛程式沒有輸入時使用。

latency, l

啟用延遲補償,預設為停用。僅當外掛程式有輸入時使用。

36.96.1 範例

  • 列出 amp (LADSPA 範例外掛程式) 程式庫中的所有可用外掛程式
    ladspa=file=amp
    
  • 列出 VCF 程式庫中 vcf_notch 外掛程式的所有可用控制項及其有效範圍
    ladspa=f=vcf:p=vcf_notch:c=help
    
  • 使用 Computer Music Toolkit (CMT) 外掛程式程式庫模擬低品質音訊設備
    ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
    
  • 使用 TAP-plugins (Tom’s Audio Processing plugins) 為音訊新增殘響
    ladspa=file=tap_reverb:tap_reverb
    
  • 產生白噪音,振幅為 0.2
    ladspa=file=cmt:noise_source_white:c=c0=.2
    
  • 使用 C* Audio Plugin Suite (CAPS) 程式庫中的外掛程式 C* Click - Metronome 產生 20 bpm 的滴答聲
    ladspa=file=caps:Click:c=c1=20'
    
  • 套用 C* Eq10X2 - Stereo 10-band equaliser 效果
    ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
    
  • 使用 Steve Harris SWH Plugins 集合中的快速前瞻限制器將音量增加 20dB
    ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
    
  • 使用 Steve Harris SWH Plugins 集合中的 Multiband EQ 衰減低頻
    ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
    
  • 使用 C* Audio Plugin Suite (CAPS) 程式庫中的 Narrower 縮減立體聲影像
    ladspa=caps:Narrower
    
  • 另一個白噪音,現在使用 C* Audio Plugin Suite (CAPS) 程式庫
    ladspa=caps:White:.2
    
  • 一些碎形噪音,使用 C* Audio Plugin Suite (CAPS) 程式庫
    ladspa=caps:Fractal:c=c1=1
    
  • 使用 VLevel 外掛程式進行動態音量正規化
    ladspa=vlevel-ladspa:vlevel_mono
    

36.96.2 指令

此濾波器支援以下命令

cN

修改第 N 個控制項值。

如果指定的值無效,則會忽略它並保留先前的值。

36.97 loudnorm

EBU R128 響度正規化。包括動態和線性正規化模式。支援單次 (直播、檔案) 和雙次 (檔案) 模式。此演算法可以針對 IL、LRA 和最大真實峰值。在動態模式下,為了準確偵測真實峰值,音訊流將升取樣至 192 kHz。使用 -ar 選項或 aresample 濾波器明確設定輸出取樣率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

I, i

設定整合響度目標。範圍為 -70.0 - -5.0。預設值為 -24.0。

LRA, lra

設定響度範圍目標。範圍為 1.0 - 50.0。預設值為 7.0。

TP, tp

設定最大真實峰值。範圍為 -9.0 - +0.0。預設值為 -2.0。

measured_I, measured_i

輸入檔案的測量 IL。範圍為 -99.0 - +0.0。

measured_LRA, measured_lra

輸入檔案的測量 LRA。範圍為 0.0 - 99.0。

measured_TP, measured_tp

輸入檔案的測量真實峰值。範圍為 -99.0 - +99.0。

measured_thresh

輸入檔案的測量閾值。範圍為 -99.0 - +0.0。

offset

設定偏移增益。增益在真實峰值限制器之前套用。範圍為 -99.0 - +99.0。預設值為 +0.0。

linear

透過線性縮放來源音訊進行正規化。必須指定 measured_Imeasured_LRAmeasured_TPmeasured_thresh。目標 LRA 不應低於來源 LRA,並且整合響度的變更不應導致真實峰值超過目標 TP。如果未滿足任何這些條件,正規化模式將還原為 dynamic。選項為 truefalse。預設值為 true

dual_mono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在於立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,此選項將補償此效果。多聲道輸入檔案不受此選項影響。選項為 true 或 false。預設值為 false。

print_format

設定統計資訊的列印格式。選項為 summary、json 或 none。預設值為 none。

36.98 lowpass

套用 3dB 點頻率的低通濾波器。此濾波器可以是單極或雙極(預設)。濾波器滾降率為每極每八度音程 6dB(每極每十倍頻 20dB)。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定頻率,單位為 Hz。預設值為 500。

極點, p

設定極點數。預設值為 2。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯響應。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.98.1 範例

  • 僅對 LFE 聲道套用低通濾波,若 LFE 聲道不存在則不執行任何動作
    lowpass=c=LFE
    

36.98.2 指令

此濾波器支援以下命令

頻率, f

變更低通濾波頻率。指令語法為:「frequency

寬度類型, t

變更低通濾波 width_type。指令語法為:「width_type

寬度, w

變更低通濾波 width。指令語法為:「width

混合, m

變更低通濾波 mix。指令語法為:「mix

36.99 lv2

載入 LV2 (LADSPA Version 2) 外掛程式。

若要啟用此濾波器的編譯,您需要使用 --enable-lv2 配置 FFmpeg。

plugin, p

指定外掛程式 URI。您可能需要跳脫字元「:」。

controls, c

設定以「|」分隔的控制項清單,這些控制項是零或多個浮點數值,用於決定載入外掛程式的行為(例如延遲、臨界值或增益)。若 controls 設定為 help,則會印出所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設為 44100。僅當外掛程式沒有輸入時使用。

nb_samples, n

設定每個輸出幀每個聲道的樣本數,預設為 1024。僅當外掛程式沒有輸入時使用。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節 以取得接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾截斷。如果未指定,或表示的持續時間為負數,則音訊應無限期產生。僅當外掛程式沒有輸入時使用。

36.99.1 範例

  • 套用 Calf 的低音增強器外掛程式
    lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
    
  • 套用 Calf 的黑膠唱片外掛程式
    lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
    
  • 套用 ArtyFX 的位元破壞器外掛程式
    lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
    

36.99.2 指令

此濾波器支援外掛程式以指令形式輸出的所有選項。

36.100 mcompand

多頻段壓縮或擴展音訊的動態範圍。

輸入音訊使用四階 Linkwitz-Riley IIR 濾波器分成頻段。這類似於喇叭的分頻器,在沒有動態壓縮器作用時會產生平坦的頻率響應。

它接受以下參數

args

此選項的語法為:attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...。關於每個項目的說明,請參閱 compand 濾波器的文件。

36.101 pan

以特定增益位準混合聲道。此濾波器接受輸出聲道佈局,後接一組聲道定義。

此濾波器也設計為有效率地重新對應音訊串流的聲道。

此濾波器接受以下格式的參數:「l|outdef|outdef|...」

l

輸出聲道佈局或聲道數量

outdef

輸出聲道規格,格式為:「out_name=[gain*]in_name[(+-)[gain*]in_name...]」

out_name

要定義的輸出聲道,可以是聲道名稱(FL、FR 等)或聲道編號(c0、c1 等)

gain

聲道的乘法係數,1 表示音量不變

in_name

要使用的輸入聲道,詳細資訊請參閱 out_name;無法混合使用具名和編號的輸入聲道

若聲道規格中的「=」被「<」取代,則該規格的增益將會重新正規化,使總和為 1,從而避免削波雜訊。

36.101.1 混音範例

例如,如果您想將立體聲向下混合為單聲道,但左聲道的係數較大

pan=1c|c0=0.9*c0+0.1*c1

自訂的立體聲向下混合,可自動用於 3、4、5 和 7 聲道環繞音訊

pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR

請注意,ffmpeg 整合了預設的向下混合(和向上混合)系統,除非您有非常特殊的需求,否則應優先使用(請參閱「-ac」選項)。

36.101.2 重新對應範例

聲道重新對應生效的條件為,且僅在以下情況下生效

  • 增益係數為零或一,
  • 每個輸出聲道只有一個輸入,

若滿足所有這些條件,濾波器將通知使用者(「偵測到純聲道對應」),並使用最佳化且無損的方法進行重新對應。

例如,如果您有一個 5.1 聲道來源,並想要透過捨棄額外聲道來獲得立體聲音訊串流

pan="stereo| c0=FL | c1=FR"

在給定相同來源的情況下,您也可以交換前置左聲道和前置右聲道,並保持輸入聲道佈局

pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"

若輸入為立體聲音訊串流,您可以使用以下指令將前置左聲道靜音(並仍保持立體聲聲道佈局)

pan="stereo|c1=c1"

仍然以立體聲音訊串流輸入為例,您可以將右聲道複製到前置左聲道和右聲道

pan="stereo| c0=FR | c1=FR"

36.102 replaygain

ReplayGain 掃描器濾波器。此濾波器將音訊串流作為輸入,並輸出未經變更的音訊串流。在濾波結束時,它會顯示 track_gaintrack_peak

此濾波器接受以下輸出的唯讀選項

track_gain

串流結束時輸出的音軌增益,單位為 dB。

track_peak

串流結束時輸出的音軌峰值。

36.103 resample

轉換音訊樣本格式、取樣率和聲道佈局。不建議直接使用。

36.104 rubberband

使用 librubberband 套用時間伸張和音調偏移。

若要啟用此濾波器的編譯,您需要使用 --enable-librubberband 配置 FFmpeg。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

速度

設定速度比例因子。

pitch

設定音調比例因子。

transients

設定瞬態偵測器。可能的值包括

crisp
mixed
smooth
detector

設定偵測器。可能的值包括

compound
percussive
soft
phase

phase

設定相位。可能的值包括
laminar
independent

window

standard
設定處理視窗大小。可能的值包括
long
short

smoothing

off
on
設定平滑化。可能的值包括

formant

啟用音調偏移時的共振峰保留。可能的值包括
shifted
preserved

pitchq

設定音調品質。可能的值包括
speed
quality
channels

consistency

channels
設定聲道。可能的值包括

36.104.1 指令

此濾波器支援以下命令

速度

變更濾波器速度比例因子。指令語法為:「tempo」。

pitch

apart

36.105 sidechaincompress

together

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

濾鏡接受以下選項

level_in

mode

threshold

變更濾波器音調比例因子。指令語法為:「pitch

attack

此濾波器的作用類似於一般壓縮器,但能夠使用第二個輸入訊號壓縮偵測到的訊號。它需要兩個輸入串流,並返回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。然後,經過濾波的訊號可以在後續處理階段使用其他濾波器進行濾波。請參閱 panamerge 濾波器。

makeup

knee

channel

detection

mix

設定輸入增益。 預設值為 1。範圍介於 0.015625 和 64 之間。

設定壓縮器操作模式。 可以是 upwarddownward。 預設值為 downward

如果串流的訊號上升到此等級之上,它將影響增益衰減。 預設情況下為 0.125。 範圍介於 0.00097563 和 1 之間。

link

若第二個串流的訊號高於此位準,將會影響第一個串流的增益衰減。預設值為 0.125。範圍介於 0.00097563 和 1 之間。

訊號必須上升到閾值之上多少毫秒才會開始增益衰減。 預設值為 20。範圍介於 0.01 和 2000 之間。

設定訊號衰減的比率。1:2 表示若位準高於臨界值 4dB,則衰減後僅高於 2dB。預設值為 2。範圍介於 1 和 20 之間。

選擇側鏈串流的所有聲道之間的平均位準,或側鏈串流較大的(最大)聲道,會影響衰減。預設值為 average

應採用 峰值 的精確訊號,還是 rms 的 RMS 訊號。預設值為 rms,主要較為平滑。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

彎曲閾值周圍的尖銳轉折點,以更柔和地進入增益衰減。 預設值為 2.82843。範圍介於 1 和 8 之間。

36.105.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.105.2 範例

  • level_sc
    ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
    

36.106 sidechaingate

設定側鏈增益。預設值為 1。範圍介於 0.015625 和 64 之間。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定濾波前的輸入電平。預設值為 1。允許範圍為 0.015625 至 64。

level_in

設定操作模式。可以為 upwarddownward。預設值為 downward。如果設定為 upward 模式,則訊號的較高部分將被放大,向上擴展動態範圍。否則,在 downward 模式下,訊號的較低部分將被減少。

range

設定當訊號低於閾值時的增益衰減量。預設值為 0.06125。允許範圍為 0 至 1。將此值設定為 0 會停用衰減,然後濾波器的行為類似於擴展器。

threshold

如果訊號上升到此電平以上,則會釋放增益衰減。預設值為 0.125。允許範圍為 0 至 1。

attack

完整的 ffmpeg 範例,採用 2 個音訊輸入,第一個輸入根據第二個輸入的訊號進行壓縮,然後將壓縮後的訊號與第二個輸入合併

makeup

訊號必須上升到閾值以上才能停止增益衰減的毫秒數。預設值為 20 毫秒。允許範圍為 0.01 至 9000。

channel

訊號必須下降到閾值以下才能再次增加衰減的毫秒數。預設值為 250 毫秒。允許範圍為 0.01 至 9000。

mix

設定訊號處理後的放大音量。預設值為 1。允許範圍從 1 到 64。

設定壓縮器操作模式。 可以是 upwarddownward。 預設值為 downward

將臨界值附近的尖銳轉折變平滑,以更柔和地進入增益衰減。預設值為 2.828427125。允許範圍從 1 到 8。

訊號必須上升到閾值之上多少毫秒才會開始增益衰減。 預設值為 20。範圍介於 0.01 和 2000 之間。

側鏈閘門的作用類似於一般(寬頻)閘門,但能夠在將偵測到的訊號發送到增益衰減階段之前對其進行濾波。一般來說,閘門使用全頻段訊號來偵測高於臨界值的位準。例如:如果您從側鏈訊號中濾除所有低頻,則只有在高頻訊號不足時,閘門才會降低音軌的音量。透過這種技術,您可以減少自然鼓的共振,或消除嚴重失真吉他的悶音「隆隆聲」。它需要兩個輸入串流,並返回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。

link

設定訊號衰減的比率。預設值為 2。允許範圍為 1 到 9000。

選擇側鏈串流的所有聲道之間的平均位準,或側鏈串流較大的(最大)聲道,會影響衰減。預設值為 average

選擇是否應採用精確訊號進行偵測,還是類似於 RMS 的訊號。預設值為 rms。可以是 peak 或 rms。

36.106.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.107 silencedetect

選擇平均所有聲道之間的平均位準,還是較大的聲道影響衰減。預設值為 average。可以是 average 或 maximum。

設定側鏈增益。預設值為 1。範圍從 0.015625 到 64。

偵測音訊串流中的靜音。

當此濾波器偵測到輸入音訊音量小於或等於雜訊容忍值,且持續時間大於或等於最小偵測雜訊持續時間時,會記錄訊息。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

noise, n

印出的時間和持續時間以秒為單位表示。lavfi.silence_startlavfi.silence_start.X metadata 金鑰會在時間戳記等於或超過偵測持續時間的第一個影格上設定,其中包含靜音的第一個影格的時間戳記。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

lavfi.silence_durationlavfi.silence_duration.Xlavfi.silence_endlavfi.silence_end.X metadata 金鑰會在靜音之後的第一個影格上設定。若啟用 mono,且每個聲道個別評估,則會使用帶有 .X 後綴的金鑰,其中 X 對應於聲道編號。

設定雜訊容忍值。可以 dB(若指定值後附加「dB」)或振幅比率指定。預設值為 -60dB 或 0.001。

設定靜音持續時間直到通知(預設為 2 秒)。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節 以了解可接受的語法。

36.107.1 範例

  • mono, m
    silencedetect=n=-50dB:d=5
    
  • 個別處理每個聲道,而非合併處理。預設為停用。
    ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
    

36.108 silenceremove

偵測雜訊容忍值為 -50dB 的 5 秒靜音

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

使用 ffmpeg 的完整範例,以偵測 silence.mp3 中雜訊容忍值為 0.0001 的靜音

從音訊的開頭、中間或結尾移除靜音。

start_periods

此值用於指示是否應在音訊開頭修剪音訊。值為零表示不應從開頭修剪靜音。當指定非零值時,它會修剪音訊,直到找到非靜音為止。通常,當從音訊開頭修剪靜音時,start_periods 將為 1,但可以增加到更高的值,以修剪所有音訊,直到達到特定計數的非靜音週期。預設值為 0

start_duration

指定必須偵測到非靜音的時間長度,才會停止修剪音訊。透過增加持續時間,雜訊突發可以視為靜音並修剪掉。預設值為 0

start_threshold

這表示應將哪個樣本值視為靜音。對於數位音訊,值 0 可能就可以,但對於從類比錄製的音訊,您可能希望增加該值以考慮背景雜訊。可以 dB(若指定值後附加「dB」)或振幅比率指定。預設值為 0

start_silence

指定在修剪後將保留的開頭靜音最大持續時間。預設值為 0,等於修剪所有偵測為靜音的樣本。

start_mode

指定偵測多聲道音訊開頭靜音結束的模式。可以是 anyall。預設值為 any。使用 any,從任何聲道的任何樣本偵測到非靜音,都會觸發音訊串流開頭的靜音修剪結束。使用 all,只有當從每個聲道的每個樣本都偵測到非靜音時,才會觸發音訊串流開頭的靜音修剪結束,使用受限。

stop_periods

設定從音訊結尾修剪靜音的計數。當指定正值時,它會在找到指定的靜音週期後修剪音訊。若要從檔案中間移除靜音,請指定負值的 stop_periods。然後,此值會被視為正值,並用於指示效果應根據 stop_periods 指定的方式重新開始處理,使其適用於移除音訊中間的靜音週期。預設值為 0

stop_duration

指定必須存在的靜音持續時間,之後才不再複製音訊。透過指定較長的持續時間,可以將想要的靜音保留在音訊中。預設值為 0

stop_threshold

這與 start_threshold 相同,但用於從音訊結尾修剪靜音。可以 dB(若指定值後附加「dB」)或振幅比率指定。預設值為 0

stop_silence

指定在修剪後將保留的結尾靜音最大持續時間。預設值為 0,等於修剪所有偵測為靜音的樣本。

訊號必須上升到閾值之上多少毫秒才會開始增益衰減。 預設值為 20。範圍介於 0.01 和 2000 之間。

stop_mode

指定在多聲道音訊開始後,如何偵測靜音開始。可以是 anyall。預設值為 all。使用 any,從任何聲道的任何樣本偵測到靜音,都會觸發音訊串流開始後的靜音修剪開始,使用受限。使用 all,只有當從每個聲道的每個樣本都偵測到靜音時,才會觸發音訊串流開始後的靜音修剪開始。

設定如何偵測靜音。

avg

移動視窗中樣本絕對值的平均值。

rms

移動視窗中樣本絕對值的均方根值。

peak

移動視窗中樣本絕對值的最大值。

median

移動視窗中樣本絕對值的中位數。

ptp

移動視窗中樣本最大峰值與最小峰值差異的絕對值。

dev

independent

移動視窗中樣本值的標準差。

預設值為 rms

設定用於計算視窗大小(以樣本數表示)以偵測靜音的持續時間(以秒為單位)。使用 0 將有效停用任何視窗化,且僅對每個聲道使用單個樣本進行靜音偵測。在這種情況下,可能也需要將 start_silence 和/或 stop_silence 設定為非零值,同時也將 start_duration 和/或 stop_duration 設定為非零值。預設值為 0.02。允許範圍為 010

timestamp

設定每個音訊影格輸出時間戳記的處理模式。

write

完整時間戳記重寫,僅保留第一個輸出影格的開始時間。

copy

36.108.1 範例

  • 未捨棄的影格會保留與輸入音訊影格相同時間戳記。
    silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
    
  • 預設值為 write
    silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
    
  • 以下範例說明如何使用此濾波器啟動錄製,而錄製內容不包含通常在按下錄製按鈕和表演開始之間發生的延遲
    silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
    
  • 修剪從開始到結束遇到的所有靜音,其中音訊中有超過 1 秒的靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
    
  • 使用峰值偵測,從開始到結束修剪所有數位靜音樣本,其中音訊中有超過 0 個數位靜音樣本,且在串流中的相同位置偵測到所有聲道的數位靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
    
  • 修剪從開始到結束遇到的每 2 個靜音週期,其中每個靜音週期的音訊中靜音超過 1 秒
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
    

36.108.2 指令

與上述類似,但從每個修剪的週期中保留最多 0.5 秒的靜音

36.109 sofalizer

與上述類似,但從音訊開頭保留最多 1.5 秒的靜音

若要啟用此濾鏡的編譯,您需要使用 --enable-libmysofa 配置 FFmpeg。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sofa

設定用於渲染的 SOFA 檔案。

gain

設定應用於音訊的增益。值以 dB 為單位。預設值為 0。

rotation

設定虛擬揚聲器的旋轉角度,單位為度。預設值為 0。

elevation

設定虛擬揚聲器的高度角,單位為度。預設值為 0。

radius

設定揚聲器與使用近場 HRTF 的聆聽者之間的距離,單位為公尺。預設值為 1。

type

設定處理類型。可以是 timefreqtime 是在時域中處理音訊,速度較慢。freq 是在頻域中處理音訊,速度較快。預設值為 freq

speakers

設定虛擬揚聲器的自訂位置。此選項的語法為:<CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。每個虛擬揚聲器都以簡短的聲道名稱描述,後接方位角和高度角,單位為度。每個虛擬揚聲器的描述都以 ’|’ 分隔。例如,若要覆寫前左和前右聲道的位置,請使用:’speakers=FL 45 15|FR 345 15’。無法辨識的聲道名稱描述將被忽略。

lfegain

設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。

framesize

設定自訂幀大小,以樣本數為單位。預設值為 1024。允許範圍為 1024 到 96000。僅在選項 ‘type’ 設定為 freq 時使用。

正規化

是否應在匯入 SOFA 檔案時標準化所有 IR。預設為啟用。

interpolate

如果精確位置不符,是否應使用相鄰的 IR 來內插最近的 IR。預設為停用。

minphase

在載入 SOFA 檔案時對所有 IR 進行最小相位處理。預設為停用。

anglestep

設定鄰近搜尋角度步階。僅在啟用 interpolate 選項時使用。

radstep

設定鄰近搜尋半徑步階。僅在啟用 interpolate 選項時使用。

36.109.1 範例

  • 使用 ClubFritz6 sofa 檔案
    sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
    
  • 使用 ClubFritz12 sofa 檔案和更大的半徑以及小旋轉
    sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
    
  • 與上述類似,但具有前左、前右、後左和後右的自訂揚聲器位置,以及自訂增益
    "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
    

36.110 speechnorm

語音正規化器。

此濾鏡會根據閾值擴展或壓縮音訊樣本的每個半週期(局部樣本集,全部高於或全部低於零,且介於兩個最近的過零點之間),使音訊在以下選項控制的條件下達到目標峰值。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

peak, p(峰值,p)

設定擴展目標峰值。這指定正規化音訊輸入允許的最高絕對振幅位準。預設值為 0.95。允許範圍為 0.0 到 1.0。

expansion, e

設定最大擴展因子。允許範圍為 1.0 到 50.0。預設值為 2.0。此選項控制樣本半週期的最大局部擴展。最大擴展將是使局部峰值達到目標峰值但不超過它,且新峰值與先前峰值之間的比率不超過此選項值。

compression, c

設定最大壓縮因子。允許範圍為 1.0 到 50.0。預設值為 2.0。此選項控制樣本半週期的最大局部壓縮。僅當 threshold 選項設定為大於 0.0 的值時,才會使用此選項,在這種情況下,當局部峰值低於或等於 threshold 設定的值時,屬於該峰值半週期的所有樣本將按目前的壓縮因子壓縮。

threshold, t

設定閾值。預設值為 0.0。允許範圍為 0.0 到 1.0。此選項指定哪些樣本半週期將被壓縮,哪些將被擴展。任何局部峰值低於或等於此選項值的樣本半週期將按目前的壓縮因子壓縮;否則,如果大於閾值,它們將以擴展因子擴展,使其可以達到峰值目標值,但永遠不會超過它。

raise, r

設定每個樣本半週期的擴展提升量。預設值為 0.001。允許範圍為 0.0 到 1.0。這控制擴展因子在每個新半週期中提升的速度,直到達到 expansion 值。將此選項設定得太高可能會導致失真。

fall, f

設定每個樣本半週期的壓縮提升量。預設值為 0.001。允許範圍為 0.0 到 1.0。這控制壓縮因子在每個新半週期中提升的速度,直到達到 compression 值。

channels, h(聲道,h)

指定要濾波的聲道,預設情況下,所有可用的聲道都會被濾波。

invert, i

啟用反向濾波,預設為停用。這會反轉 threshold 選項的解釋。啟用後,任何局部峰值低於或等於 threshold 選項值的樣本半週期將被擴展,否則將被壓縮。

link, l

在計算應用於每個濾波聲道樣本的增益時,連結聲道,預設為停用。停用時,每個濾波聲道的增益計算是獨立的;否則,當啟用此選項時,將使用每個濾波聲道的所有可能增益中的最小值。

rms, m

設定擴展目標 RMS 值。這指定正規化音訊輸入允許的最高 RMS 位準。預設值為 0.0,因此停用。允許範圍為 0.0 到 1.0。

36.110.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.110.2 範例

  • 微弱且緩慢的放大
    speechnorm=e=3:r=0.00001:l=1
    
  • 中等且緩慢的放大
    speechnorm=e=6.25:r=0.00001:l=1
    
  • 強烈且快速的放大
    speechnorm=e=12.5:r=0.0001:l=1
    
  • 非常強烈且快速的放大
    speechnorm=e=25:r=0.0001:l=1
    
  • 極端且快速的放大
    speechnorm=e=50:r=0.0001:l=1
    

36.111 stereotools

此濾鏡具有一些方便的實用程式來管理立體聲訊號,用於將 M/S 立體聲錄音轉換為 L/R 訊號,同時可以控制參數或擴展主音軌的立體聲影像。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定濾波前兩個聲道的輸入位準。預設值為 1。允許範圍為 0.015625 到 64。

level_out

設定濾波後兩個聲道的輸出位準。預設值為 1。允許範圍為 0.015625 到 64。

balance_in

設定兩個聲道之間的輸入平衡。預設值為 0。允許範圍為 -1 到 1。

balance_out

設定兩個聲道之間的輸出平衡。預設值為 0。允許範圍為 -1 到 1。

softclip

啟用軟削波。產生類比失真,而不是刺耳的數位 0dB 削波。預設為停用。

mutel

靜音左聲道。預設為停用。

muter

靜音右聲道。預設為停用。

phasel

變更左聲道的相位。預設為停用。

phaser

變更右聲道的相位。預設為停用。

level_in

設定立體聲模式。可用值如下:

lr>lr

左/右到左/右,這是預設值。

lr>ms

左/右到中/側。

ms>lr

中/側到左/右。

lr>ll

左/右到左/左。

lr>rr

左/右到右/右。

lr>l+r

左/右到左 + 右。

lr>rl

左/右到右/左。

ms>ll

中/側到左/左。

ms>rr

中/側到右/右。

ms>rl

中/側到右/左。

lr>l-r

左/右到左 - 右。

slev

設定側訊號的位準。預設值為 1。允許範圍為 0.015625 到 64。

sbal

設定側訊號的平衡。預設值為 0。允許範圍為 -1 到 1。

mlev

設定中訊號的位準。預設值為 1。允許範圍為 0.015625 到 64。

mpan

設定中訊號的聲像。預設值為 0。允許範圍為 -1 到 1。

base

設定單聲道和反相聲道之間的立體聲基底。預設值為 0。允許範圍為 -1 到 1。

延遲

設定延遲,以毫秒為單位,表示將左聲道從右聲道延遲多少,反之亦然。預設值為 0。允許範圍為 -20 到 20。

sclevel

設定 S/C 位準。預設值為 1。允許範圍為 1 到 100。

phase

設定立體聲相位,單位為度。預設值為 0。允許範圍為 0 到 360。

bmode_in, bmode_out

為 balance_in/balance_out 選項設定平衡模式。

可以是下列其中之一:

balance

經典平衡模式。一次衰減一個聲道。增益最多提升到 1。

amplitude

與上述經典模式類似,但增益最多提升到 2。

power

等功率分佈,範圍從 -6dB 到 +6dB。

36.111.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

36.111.2 範例

  • 套用卡拉 OK 般的效果
    stereotools=mlev=0.015625
    
  • 將 M/S 訊號轉換為 L/R
    "stereotools=mode=ms>lr"
    

36.112 stereowiden

此濾鏡透過抑制兩個聲道共有的訊號,並將左聲道的訊號延遲到右聲道,反之亦然,從而增強立體聲效果,擴展立體聲影像。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

延遲

以毫秒為單位表示左訊號延遲到右訊號以及反之亦然的時間。預設值為 20 毫秒。

回饋

延遲訊號到右訊號以及反之亦然的增益量。產生左訊號在右輸出中以及反之亦然的延遲效果,從而產生擴展效果。預設值為 0.3。

crossfeed

將左聲道串音饋入右聲道,並反轉相位。這有助於抑制單聲道。如果值為 1,它將消除兩個聲道共有的所有訊號。預設值為 0.3。

drymix

設定原始聲道輸入訊號的位準。預設值為 0.8。

36.112.1 指令

此濾鏡支援上述所有選項,除了 delay 之外,皆可作為 commands 使用。

36.113 superequalizer

套用 18 頻段等化器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

1b

設定 65Hz 頻段增益。

2b

設定 92Hz 頻段增益。

3b

設定 131Hz 頻段增益。

4b

設定 185Hz 頻段增益。

5b

設定 262Hz 頻段增益。

6b

設定 370Hz 頻段增益。

7b

設定 523Hz 頻段增益。

8b

設定 740Hz 頻段增益。

9b

設定 1047Hz 頻段增益。

10b

設定 1480Hz 頻段增益。

11b

設定 2093Hz 頻段增益。

12b

設定 2960Hz 頻段增益。

13b

設定 4186Hz 頻段增益。

14b

設定 5920Hz 頻段增益。

15b

設定 8372Hz 頻段增益。

16b

設定 11840Hz 頻段增益。

17b

設定 16744Hz 頻段增益。

18b

設定 20000Hz 頻段增益。

36.114 surround

套用音訊環繞聲升混濾鏡。

此濾鏡允許從音訊串流產生多聲道輸出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

chl_out

設定輸出聲道佈局。預設情況下,這是 5.1

請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的頻道佈局章節,以了解所需的語法。

chl_in

設定輸入聲道佈局。預設情況下,這是 stereo

請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的頻道佈局章節,以了解所需的語法。

壓縮是通過檢測高於選定等級 threshold 的音量,並將其除以 ratio 設定的係數來完成的。 因此,如果您將閾值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。 由於對訊號的精確操作會導致波形失真,因此可以在時間內調整衰減程度。 這是通過設定「Attack」和「Release」來完成的。 attack 決定訊號必須上升到閾值之上多長時間才會發生任何衰減,而 release 設定訊號必須下降到閾值之下多長時間才能再次減少衰減。 短於選定啟動時間的訊號將保持不變。 訊號的整體衰減可以在之後使用 makeup 設定來彌補。 因此,將訊號的峰值壓縮約 6dB 並將 makeup 提升到此等級會導致訊號比來源響亮兩倍。 為了在壓縮中獲得更柔和的進入,knee 會在選定分貝範圍內的閾值處展平硬邊緣。

設定輸入音量位準。預設情況下,這是 1

level_out

設定輸出音量位準。預設情況下,這是 1

lfe

如果輸出聲道佈局具有 LFE 聲道,則啟用 LFE 聲道輸出。預設情況下,這是啟用的。

lfe_low

設定 LFE 低截止頻率。預設情況下,這是 128 Hz。

lfe_high

設定 LFE 高截止頻率。預設情況下,這是 256 Hz。

lfe_mode

設定 LFE 模式,可以是 addsub。預設值為 addadd 模式中,LFE 聲道從輸入音訊建立並新增至輸出。sub 模式中,LFE 聲道從輸入音訊建立並新增至輸出,但所有非 LFE 輸出聲道也會減去輸出 LFE 聲道。

smooth

設定時間平滑強度,用於在時域中轉換立體聲音效時逐漸變更因子。允許範圍為 0.01.0。對於 focus 選項值大於 0.0 時,可用於改善輸出品質。預設值為 0.0。只有此範圍內且沒有邊緣的值才有效。

angle(角度)

設定立體聲環繞轉換的角度,允許範圍為 0360。預設值為 90

focus

設定立體聲環繞轉換的焦點,允許範圍為 -11。預設值為 0

fc_in

設定前置中央輸入音量。預設情況下,這是 1

fc_out

設定前置中央輸出音量。預設情況下,這是 1

fl_in

設定前置左輸入音量。預設情況下,這是 1

fl_out

設定前置左輸出音量。預設情況下,這是 1

fr_in

設定前置右輸入音量。預設情況下,這是 1

fr_out

設定前置右輸出音量。預設情況下,這是 1

sl_in

設定側邊左輸入音量。預設情況下,這是 1

sl_out

設定側邊左輸出音量。預設情況下,這是 1

sr_in

設定側邊右輸入音量。預設情況下,這是 1

sr_out

設定側邊右輸出音量。預設情況下,這是 1

bl_in

設定後置左輸入音量。預設情況下,這是 1

bl_out

設定後置左輸出音量。預設情況下,這是 1

br_in

設定後置右輸入音量。預設情況下,這是 1

br_out

設定後置右輸出音量。預設情況下,這是 1

bc_in

設定後置中央輸入音量。預設情況下,這是 1

bc_out

設定後置中央輸出音量。預設情況下,這是 1

lfe_in

設定 LFE 輸入音量。預設情況下,這是 1

lfe_out

設定 LFE 輸出音量。預設情況下,這是 1

allx

設定所有聲道在 X 軸上立體聲影像的擴散使用量。允許範圍為 -115。預設情況下,此值為負 -1,因此未使用。

ally

設定所有聲道在 Y 軸上立體聲影像的擴散使用量。允許範圍為 -115。預設情況下,此值為負 -1,因此未使用。

fcx, flx, frx, blx, brx, slx, srx, bcx

設定每個聲道在 X 軸上立體聲影像的擴散使用量。允許範圍為 0.0615。預設情況下,此值為 0.5

fcy, fly, fry, bly, bry, sly, sry, bcy

設定每個聲道在 Y 軸上立體聲影像的擴散使用量。允許範圍為 0.0615。預設情況下,此值為 0.5

win_size

設定視窗大小。允許範圍為 102465536。預設大小為 4096

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

設定視窗重疊。若設定為 1,將會選取所選視窗函數的建議重疊。預設值為 0.5

36.115 tiltshelf

使用雙極 shelving 濾波器,以類似標準高傳真音調控制的方式,增強或衰減音訊的低頻,以及衰減或增強高頻。這也稱為 shelving 等化 (EQ)。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

gain, g

給定 0 Hz 的增益。其有用範圍約為 -20(用於大幅衰減)到 +20(用於大幅增強)。使用正增益時,請注意削波。

頻率, f

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或衰減的頻率範圍。預設值為 3000 Hz。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

決定濾波器的擱架式過渡有多陡峭。

極點, p

設定極點數。預設值為 2。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.115.1 指令

此濾波器支援一些選項,如指令

36.116 treble, highshelf

使用雙極 shelving 濾波器,以類似標準高傳真音調控制的方式,增強或衰減音訊的高音(高頻)。這也稱為 shelving 等化 (EQ)。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

gain, g

給出在約 22 kHz 和奈奎斯特頻率中較低者的增益。其有效範圍約為 -20(大幅衰減)到 +20(大幅增強)。使用正增益時請注意削波。

頻率, f

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或衰減的頻率範圍。預設值為 3000 Hz。

寬度類型, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

傳遞第二個輸入。

八度音程

s

斜率

k

kHz

寬度, w

決定濾波器的擱架式過渡有多陡峭。

極點, p

設定極點數。預設值為 2。

混合, m

輸出中要使用多少濾波後訊號。預設值為 1。範圍介於 0 到 1 之間。

聲道, c

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

正規化, n

正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。

轉換, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
精確度, r

設定濾波精確度。

auto

根據環繞濾波器選擇自動採樣格式。

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變為線性相位;否則,如果值不夠大,則只會產生難看的失真。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多取樣。

36.116.1 指令

此濾波器支援以下命令

頻率, f

變更高音頻率。指令語法為:「frequency

寬度類型, t

變更高音 width_type。指令語法為:「width_type

寬度, w

變更高音寬度。指令語法為:「width

gain, g

變更高音增益。指令語法為:「gain

混合, m

變更高音混合。指令語法為:「mix

36.117 tremolo

正弦波振幅調變。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

f

調變頻率,單位為赫茲。次諧波範圍(20 Hz 或更低)的調變頻率將產生顫音效果。此濾波器也可用作環狀調變器,方法是指定高於 20 Hz 的調變頻率。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

36.118 vibrato

正弦波相位調變。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

f

調變頻率,單位為赫茲。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

36.119 virtualbass

套用音訊虛擬低音濾波器。

此濾波器接受立體聲輸入,並產生具有 LFE (2.1) 聲道輸出的立體聲。新產生的 LFE 聲道具有增強的虛擬低音,最初從兩個立體聲聲道獲得。此濾波器輸出前置左聲道和前置右聲道,與立體聲輸入中的聲道相同,保持不變。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cutoff

設定虛擬低音截止頻率。預設值為 250 Hz。允許範圍為 100 至 500 Hz。

strength

設定虛擬低音強度。允許範圍為 0.5 至 3。預設值為 3。

36.120 volume

調整輸入音訊音量。

它接受以下參數

volume

設定音訊音量表達式。

輸出值將被削波至最大值。

輸出音訊音量由以下關係式給出

output_volume = volume * input_volume

volume 的預設值為「1.0」。

precision

此參數代表數學精度。

它決定了允許哪些輸入樣本格式,這會影響音量縮放的精度。

fixed

8 位元定點;這將輸入樣本格式限制為 U8、S16 和 S32。

auto

32 位元浮點;這將輸入樣本格式限制為 FLT。(預設值)

double

64 位元浮點;這將輸入樣本格式限制為 DBL。

replaygain

選擇在輸入影格中遇到 ReplayGain 邊數據時的行為。

drop

移除 ReplayGain 邊數據,忽略其內容(預設值)。

ignore

忽略 ReplayGain 邊數據,但將其保留在影格中。

track

如果存在,優先使用音軌增益。

album

如果存在,優先使用專輯增益。

replaygain_preamp

要套用於所選 replaygain 增益的預放大增益,單位為 dB。

replaygain_preamp 的預設值為 0.0。

replaygain_noclip

透過限制套用的增益來防止削波。

replaygain_noclip 的預設值為 1。

eval

設定何時評估音量表達式。

它接受以下值

once

僅在濾波器初始化期間或發送「volume」指令時評估表達式一次

frame

為每個傳入影格評估表達式

預設值為「once」。

音量表達式可以包含以下參數。

n

影格編號(從零開始)

nb_channels

聲道數量

nb_consumed_samples

濾波器消耗的樣本數

nb_samples

目前影格中的樣本數

pos

檔案中原始影格位置;已棄用,請勿使用

pts

影格 PTS

sample_rate

取樣率

startpts

串流開始時的 PTS

startt

串流開始時的時間

t

影格時間

tb

時間戳記時基

volume

上次設定的音量值

請注意,當 eval 設定為「once」時,只有 sample_ratetb 變數可用,所有其他變數將評估為 NAN。

36.120.1 指令

此濾波器支援以下命令

volume

修改音量表達式。該指令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

36.120.2 範例

  • 將輸入音訊音量減半
    volume=volume=0.5
    volume=volume=1/2
    volume=volume=-6.0206dB
    

    在以上所有範例中,volume 的命名鍵可以省略,例如在

    volume=0.5
    
  • 使用定點精度將輸入音訊功率增加 6 分貝
    volume=volume=6dB:precision=fixed
    
  • 在時間 10 後衰減音量,衰減週期為 5 秒
    volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
    

36.121 volumedetect

偵測輸入視訊的音量。

此濾波器沒有參數。它僅支援 16 位元帶正負號整數樣本,因此在需要時會轉換輸入。當輸入串流結束時,音量統計資訊將列印在日誌中。

特別是,它將顯示平均音量(均方根)、最大音量(以每個樣本為基礎),以及記錄音量值的直方圖的開頭(從最大值到累積樣本的 1/1000)。

所有音量均以相對於最大 PCM 值的分貝為單位。

36.121.1 範例

以下是輸出的摘錄

[Parsed_volumedetect_0  0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0  0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0  0xa23120] histogram_4db: 6
[Parsed_volumedetect_0  0xa23120] histogram_5db: 62
[Parsed_volumedetect_0  0xa23120] histogram_6db: 286
[Parsed_volumedetect_0  0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0  0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0  0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0  0xa23120] histogram_10db: 8409

這表示

  • 均方能量約為 -27 dB,或 10^-2.7。
  • 最大樣本位於 -4 dB,或更精確地說,介於 -4 dB 和 -5 dB 之間。
  • 在 -4 dB 時有 6 個樣本,在 -5 dB 時有 62 個樣本,在 -6 dB 時有 286 個樣本,依此類推。

換句話說,將音量提高 +4 dB 不會導致任何削波,將其提高 +5 dB 會導致 6 個樣本削波,依此類推。

37 音訊來源

以下是目前可用的音訊來源的描述。

37.1 abuffer

緩衝音訊影格,並使其可供濾波器鏈使用。

此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。

它接受以下參數

time_base

將用於提交影格的時間戳記的時基。它必須是浮點數或 numerator/denominator 形式。

sample_rate

傳入音訊緩衝區的取樣率。

sample_fmt

傳入音訊緩衝區的樣本格式。可以是樣本格式名稱或其在 libavutil/samplefmt.h 中 enum AVSampleFormat 的對應整數表示法

channel_layout

傳入音訊緩衝區的聲道佈局。可以是 libavutil/channel_layout.c 中 channel_layout_map 的聲道佈局名稱,或其在 libavutil/channel_layout.h 中 AV_CH_LAYOUT_* 巨集的對應整數表示法

channels

傳入音訊緩衝區的聲道數。如果同時指定了 channelschannel_layout,則它們必須一致。

37.1.1 範例

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

將指示來源接受 44100Hz 的平面 16 位元帶正負號立體聲。由於名稱為「s16p」的樣本格式對應於數字 6,而「stereo」聲道佈局對應於值 0x3,因此這等效於

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

37.2 aevalsrc

產生由表達式指定的音訊訊號。

此來源在輸入中接受一個或多個表達式(每個聲道一個),這些表達式經過評估並用於產生相應的音訊訊號。

此來源接受以下選項

exprs

為每個單獨的聲道設定以「|」分隔的表達式列表。如果未指定 channel_layout 選項,則選定的聲道佈局取決於提供的表達式數量。否則,最後指定的表達式將應用於其餘的輸出聲道。

channel_layout, c

設定聲道佈局。指定佈局中的聲道數必須等於指定的表達式數量。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源音訊的最小持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間持續時間」章節。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整影格的末尾被截斷。

如果未指定,或表達的持續時間為負值,則音訊應無限期產生。

nb_samples, n

設定每個輸出影格每個聲道的樣本數,預設為 1024。

sample_rate, s

指定取樣率,預設為 44100。

exprs 中的每個表達式都可以包含以下常數

n

從 0 開始的已評估取樣的編號

t

以秒為單位表示的評估樣本時間,從 0 開始

s

取樣率

37.2.1 範例

  • 產生靜音
    aevalsrc=0
    
  • 產生頻率為 440 Hz 的正弦訊號,將取樣率設定為 8000 Hz
    aevalsrc="sin(440*2*PI*t):s=8000"
    
  • 產生雙聲道訊號,明確指定聲道佈局(前置中央 + 後置中央)
    aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • 產生白雜訊
    aevalsrc="-2+random(0)"
    
  • 產生振幅調變訊號
    aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • 在 360 Hz 載波上產生 2.5 Hz 雙耳拍頻
    aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

37.3 afdelaysrc

產生分數延遲 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

delay, d

設定分數延遲。預設值為 0。

sample_rate, r

設定取樣率,預設為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

taps, t

設定輸出音訊串流中的濾波器係數數量。預設值為 0。

channel_layout, c

指定聲道佈局,可以是代表聲道佈局的字串。 channel_layout 的預設值為「stereo」。

37.4 afireqsrc

產生 FIR 等化器係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

preset, p

設定等化器預設。預設預設為 flat

可用的預設包括

custom
flat
acoustic
bass
beats
classic
clear
deep bass
dubstep
electronic
hard-style
hip-hop
jazz
metal
movie
pop
r&b
rock
vocal booster
gains, g

為每個頻段設定自訂增益。僅當預設選項設定為 custom 時使用。增益以空格分隔,每個增益均以 dBFS 為單位設定。預設值為 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

bands, b

設定自訂頻段,自訂等化器增益從這些頻段設定。這必須嚴格遞增排序。僅當預設選項設定為 custom 時使用。頻段以空格分隔,每個頻段代表頻率,單位為 Hz。預設值為 25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000

taps, t

設定輸出音訊串流中的濾波器係數數量。預設值為 4096

sample_rate, r

設定輸出音訊串流的取樣率,預設為 44100

nb_samples, n

設定每個輸出音訊串流影格中的樣本數。預設值為 1024

interp, i

設定 FIR 等化器係數的內插法。可以是 linearcubic

phase, h

設定 FIR 濾波器的相位類型。可以是 linearmin:最小相位。預設為最小相位濾波器。

37.5 afirsrc

使用頻率取樣法產生 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

taps, t

設定輸出音訊串流中的濾波器係數數量。預設值為 1025。

頻率, f

設定從中設定振幅和相位的頻率點。這必須是非遞減順序,且第一個元素必須為 0,而最後一個元素必須為 1。元素以空格分隔。

magnitude, m

frequency 設定的每個頻率點設定振幅值。值的數量必須與頻率點的數量相同。值以空格分隔。

phase, p

frequency 設定的每個頻率點設定相位值。值的數量必須與頻率點的數量相同。值以空格分隔。

sample_rate, r

設定取樣率,預設為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

win_func, w

設定窗函數。預設為 blackman。

37.6 anullsrc

空音訊來源,傳回未處理的音訊影格。它主要用作範本,並用於分析/偵錯工具中,或作為忽略輸入資料的濾波器的來源(例如 sox synth 濾波器)。

此來源接受以下選項

channel_layout, cl

指定聲道佈局,可以是整數或代表聲道佈局的字串。 channel_layout 的預設值為「stereo」。

檢查 libavutil/channel_layout.c 中的 channel_layout_map 定義,以了解字串和聲道佈局值之間的對應關係。

sample_rate, r

指定取樣率,預設為 44100。

nb_samples, n

設定每個請求影格的樣本數。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源音訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間持續時間」章節

如果未指定,或表達的持續時間為負值,則音訊應無限期產生。

37.6.1 範例

  • 將取樣率設定為 48000 Hz,並將聲道佈局設定為 AV_CH_LAYOUT_MONO。
    anullsrc=r=48000:cl=4
    
  • 使用更明顯的語法執行相同的操作
    anullsrc=r=48000:cl=mono
    

所有參數都需要明確定義。

37.7 flite

使用 libflite 函式庫合成語音發音。

若要啟用此濾波器的編譯,您需要使用 --enable-libflite 設定 FFmpeg。

請注意,2.0 之前的 flite 函式庫版本不是執行緒安全的。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

list_voices

如果設定為 1,則列出可用語音的名稱並立即退出。預設值為 0。

nb_samples, n

設定每個影格的最大樣本數。預設值為 512。

textfile

設定包含要說的文字的檔案名稱。

text

設定要說的文字。

voice, v

設定用於語音合成的語音。預設值為 kal。另請參閱 list_voices 選項。

37.7.1 範例

  • 從檔案 speech.txt 讀取,並使用標準 flite 語音合成文字
    flite=textfile=speech.txt
    
  • 讀取指定的文字,選擇 slt 語音
    flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • 將文字輸入到 ffmpeg
    ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • ffplay 使用 flitelavfi 裝置說出指定的文字
    ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

有關 libflite 的更多資訊,請查看:http://www.festvox.org/flite/

37.8 anoisesrc

產生雜訊音訊訊號。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sample_rate, r

指定取樣率。預設值為 48000 Hz。

amplitude, a

指定產生音訊串流的振幅 (0.0 - 1.0)。預設值為 1.0。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

指定產生音訊串流的持續時間。不指定此選項會產生無限長度的雜訊。

color, colour, c

指定雜訊的顏色。可用的雜訊顏色包括白色、粉紅色、棕色、藍色、紫色和天鵝絨色。預設顏色為白色。

seed, s

指定用於設定 PRNG 種子的值。

nb_samples, n

設定每個輸出影格的取樣數,預設值為 1024。

密度

設定絨毛雜訊產生器的密度 (0.0 - 1.0),預設值為 0.05。

37.8.1 範例

  • 產生 60 秒的粉紅雜訊,取樣率為 44.1 kHz,振幅為 0.5
    anoisesrc=d=60:c=pink:r=44100:a=0.5
    

37.9 hilbert

產生奇數抽頭希爾伯特轉換 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,將訊號相移 90 度。

這用於許多矩陣編碼方案和解析訊號產生。此過程通常寫為乘以 i(或 j),即虛數單位。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sample_rate, s

設定取樣率,預設為 44100。

taps, t

設定 FIR 濾波器的長度,預設值為 22051。

nb_samples, n

設定每個影格的取樣數。

win_func, w

設定產生 FIR 係數時要使用的視窗函數。

37.10 sinc

產生 sinc kaiser 視窗化低通、高通、帶通或帶拒 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sample_rate, r

設定取樣率,預設為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

高通

設定高通頻率。預設值為 0。

低通

設定低通頻率。預設值為 0。如果高通頻率低於低通頻率,且低通頻率高於 0,則濾波器將建立帶通濾波器係數,否則建立帶拒濾波器係數。

phase

設定濾波器相位響應。預設值為 50。允許範圍為 0 到 100。

貝塔

設定 Kaiser 視窗貝塔值。

衰減

設定阻帶衰減。預設值為 120dB,允許範圍為 40 到 180 dB。

捨入

啟用捨入,預設為停用。

高通抽頭數

設定高通濾波器的抽頭數。

低通抽頭數

設定低通濾波器的抽頭數。

37.11 sine

產生由振幅為 1/8 的正弦波組成的音訊訊號。

音訊訊號是位元精確的。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

頻率, f

設定載波頻率。預設值為 440 Hz。

嗶聲因子, b

啟用每秒發出週期性嗶聲,頻率為 beep_factor 乘以載波頻率。預設值為 0,表示停用嗶聲。

sample_rate, r

指定取樣率,預設值為 44100。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

指定產生的音訊串流的持續時間。

每影格取樣數

設定每個輸出影格的取樣數。

表達式可以包含以下常數

n

輸出音訊影格的(循序)編號,從 0 開始。

pts

輸出音訊影格的 PTS(展示時間戳記),以 TB 單位表示。

t

輸出音訊影格的 PTS,以秒為單位表示。

TB

輸出音訊影格的時間基底。

預設值為 1024

37.11.1 範例

  • 產生一個簡單的 440 Hz 正弦波
    sine
    
  • 產生一個 220 Hz 正弦波,每秒發出一個 880 Hz 的嗶聲,持續 5 秒
    sine=220:4:d=5
    sine=f=220:b=4:d=5
    sine=frequency=220:beep_factor=4:duration=5
    
  • 產生一個 1 kHz 正弦波,遵循 1602,1601,1602,1601,1602 NTSC 模式
    sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
    

38 音訊接收器

以下是目前可用的音訊接收器的描述。

38.1 abuffersink

緩衝音訊影格,並使其可用於濾波器鏈的末端。

此接收器主要用於程式化使用,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受指向 AVABufferSinkContext 結構的指標,該結構定義了傳入緩衝區的格式,作為不透明參數傳遞給 avfilter_init_filter 以進行初始化。

38.2 anullsink

空音訊接收器;對輸入音訊絕對不做任何處理。它主要用作範本,並用於分析/除錯工具。

39 視訊濾波器

當您配置 FFmpeg 建置時,您可以使用 --disable-filters 停用任何現有的濾波器。配置輸出將顯示建置中包含的視訊濾波器。

以下是目前可用的視訊濾波器的描述。

39.1 addroi

在視訊影格中標記感興趣區域。

影格資料會保持不變地傳遞,但元資料會附加到影格,指示感興趣區域,這些區域可能會影響稍後編碼的行為。可以透過多次套用濾波器來標記多個區域。

x

區域距離影格左邊緣的像素。

y

區域距離影格頂部邊緣的像素。

w

區域寬度,以像素為單位。

h

區域高度,以像素為單位。

參數 xywh 是表達式,可能包含以下變數

輸入影格寬度

輸入影格寬度。

輸入影格高度

輸入影格高度。

量化偏移

在區域內套用的量化偏移。

這必須是 -1 到 +1 範圍內的實數值。零值表示沒有品質變化。負值要求更好的品質(更少的量化),而正值要求更差的品質(更多的量化)。

範圍經過校準,因此極端值表示可能的最大偏移 - 如果影格的其餘部分以最差的可能品質編碼,則 -1 的偏移表示此區域應始終以最佳的可能品質編碼。然後,中間值以某種編解碼器相關的方式進行內插。

例如,在 10 位元 H.264 中,量化參數在 -12 到 51 之間變化。因此,典型的 qoffset 值 -1/10 表示此區域應以比影格其餘部分好約十分之一完整範圍的 QP 進行編碼。因此,如果影格的大部分要以約 30 的 QP 進行編碼,則此區域將獲得約 24 的 QP(偏移約 -1/10 * (51 - -12) = -6.3)。極端值 -1 表示此區域應以最佳的可能品質進行編碼,而不管影格其餘部分的處理方式如何 - 也就是說,應以 -12 的 QP 進行編碼。

清除

如果設定為 true,則在新增新區域之前,移除影格上標記的任何現有感興趣區域。

39.1.1 範例

  • 將影格的中心四分之一標記為感興趣。
    addroi=iw/4:ih/4:iw/2:ih/2:-1/10
    
  • 將影格左邊緣上 100 像素寬的區域標記為非常不感興趣(以比影格其餘部分低得多的品質進行編碼)。
    addroi=0:0:100:ih:+1/5
    

39.2 alphaextract

從輸入中提取 Alpha 分量作為灰階視訊。這在使用 alphamerge 濾波器時特別有用。

39.3 alphamerge

將主要輸入的 Alpha 分量新增或替換為第二個輸入的灰階值。這旨在與 alphaextract 一起使用,以允許傳輸或儲存具有 Alpha 的影格序列,而該格式不支援 Alpha 通道。

例如,若要從正常的 YUV 編碼視訊和使用 alphaextract 建立的單獨視訊重建完整影格,您可以使用

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]

39.4 amplify

放大目前像素與相同像素位置中相鄰影格的像素之間的差異。

此濾波器接受以下選項

radius

設定影格半徑。預設值為 2。允許範圍為 1 到 63。例如,半徑為 3 將指示濾波器計算 7 個影格的平均值。

因子

設定放大差異的因子。預設值為 2。允許範圍為 0 到 65535。

threshold

設定差異放大的閾值。任何大於或等於此值的差異都不會改變來源像素。預設值為 10。允許範圍為 0 到 65535。

tolerance

設定差異放大的容差。任何低於此值的差異都不會改變來源像素。預設值為 0。允許範圍為 0 到 65535。

設定變更來源像素的下限。預設值為 65535。允許範圍為 0 到 65535。此選項控制將減少來源像素值的最大可能值。

設定變更來源像素的上限。預設值為 65535。允許範圍為 0 到 65535。此選項控制將增加來源像素值的最大可能值。

平面

設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。

39.4.1 指令

此濾波器支援以下與同名選項對應的 命令

因子
threshold
tolerance
平面

39.5 ass

subtitles 濾波器相同,只是它不需要 libavcodec 和 libavformat 才能運作。另一方面,它僅限於 ASS(Advanced Substation Alpha)字幕檔案。

除了 subtitles 濾波器的通用選項外,此濾波器還接受以下選項

塑形

設定塑形引擎

可用的值為

auto

預設的 libass 塑形引擎,這是目前最佳的。

simple

快速、與字型無關的塑形器,只能進行替換

complex

較慢的塑形器,使用 OpenType 進行替換和定位

預設值為 auto

39.6 atadenoise

將自適應時間平均去噪器套用於視訊輸入。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

0a

設定第 1 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

0b

設定第 1 個平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

1a

設定第 2 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

1b

設定第 2 個平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

2a

設定第 3 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

2b

設定第 3 個平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

閾值 A 設計用於對輸入訊號中的突變做出反應,而閾值 B 設計用於對輸入訊號中的連續變化做出反應。

s

設定濾波器將用於平均的影格數。預設值為 9。必須是 [5, 129] 範圍內的奇數。

p

設定濾波器將用於平均的影格平面。預設值為全部。

a

設定濾波器將用於平均的演算法變體。預設值為 p 平行。或者可以設定為 s 串列。

平行可能比串列更快,而反之則不然。平行將在第一個變化大於閾值時提前中止,而串列將繼續處理影格的另一側,如果它們等於或低於閾值。

0s
1s
2s

設定第 1 個平面、第 2 個平面或第 3 個平面的 sigma 值。預設值為 32767。有效範圍為 0 到 32767。此選項控制大小定義的半徑中每個像素的權重。預設值表示每個像素具有相同的權重。將此選項設定為 0 會有效地停用濾波。

39.6.1 指令

此濾波器支援與選項相同的 命令,但選項 s 除外。該命令接受與相應選項相同的語法。

39.7 avgblur

套用平均模糊濾波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

水平尺寸

設定水平半徑尺寸。

平面

設定要篩選的平面。預設情況下,所有平面都會被篩選。

垂直尺寸

設定垂直半徑尺寸,如果為零,則與 sizeX 相同。預設值為 0

39.7.1 指令

此濾波器支援與選項相同的命令。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.8 backgroundkey

將靜態背景轉換為透明。

此濾波器接受以下選項

threshold

場景變更偵測的閾值。

相似度

與背景的相似度百分比。

blend

設定不相似像素的混合量。

39.8.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.9 bbox

計算輸入影格亮度平面中非黑色像素的邊界框。

此濾波器計算包含所有亮度值大於最小允許值的像素的邊界框。描述邊界框的參數會列印在濾波器日誌中。

此濾波器接受以下選項

最小亮度值

設定最小亮度值。預設值為 16

39.9.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.10 bilateral

套用雙邊濾波器,空間平滑同時保留邊緣。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

空間 Sigma 值

設定高斯函數的 sigma 值以計算空間權重。允許範圍為 0 到 512。預設值為 0.1。

範圍 Sigma 值

設定高斯函數的 sigma 值以計算範圍權重。允許範圍為 0 到 1。預設值為 0.1。

平面

設定要篩選的平面。預設值為僅第一個。

39.10.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.11 bilateral_cuda

CUDA 加速雙邊濾波器,一種保留邊緣的濾波器。由於使用了 GPU 加速,此濾波器在數學上是精確的。為了獲得最佳輸出品質,請使用一對一的色度子取樣,即 yuv444p 格式。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

空間 Sigma 值

設定高斯函數的 sigma 值以計算空間權重,也稱為 sigma 空間。允許範圍為 0.1 到 512。預設值為 0.1。

範圍 Sigma 值

設定高斯函數的 sigma 值以計算色彩範圍權重,也稱為 sigma 色彩。允許範圍為 0.1 到 512。預設值為 0.1。

window_size

設定雙邊函數的視窗大小,以確定要迴圈處理的鄰居數量。如果輸入的數字是偶數,則會自動加一。允許範圍為 1 到 255。預設值為 1。

39.11.1 範例

  • 在視訊上套用雙邊濾波器。
    ./ffmpeg -v verbose \
    -hwaccel cuda -hwaccel_output_format cuda -i input.mp4  \
    -init_hw_device cuda \
    -filter_complex \
    " \
    [0:v]scale_cuda=format=yuv444p[scaled_video];
    [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
    -an -sn -c:v h264_nvenc -cq 20 out.mp4
    

39.12 bitplanenoise

顯示和測量位元平面雜訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

位元平面

設定要分析的平面。預設值為 1

filter

從上面設定的 bitplane 中濾除雜訊像素。預設為停用。

39.13 blackdetect

偵測(幾乎)完全黑色的視訊間隔。可用於偵測章節過渡、廣告或無效錄製。

濾波器將其偵測分析輸出到日誌和影格元資料。如果找到至少指定最小持續時間的黑色片段,則會將包含開始和結束時間戳記以及持續時間的行以 info 層級列印到日誌。此外,每個影格都會列印一個 debug 層級的日誌行,顯示該影格偵測到的黑色量。

濾波器還將元資料附加到黑色片段的第一個影格,金鑰為 lavfi.black_start,並附加到黑色片段結束後的第一個影格,金鑰為 lavfi.black_end。值是影格的時間戳記。無論指定的最小持續時間如何,都會新增此元資料。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

最小黑色持續時間, d

設定偵測到的最小黑色持續時間,以秒為單位表示。它必須是非負浮點數。

預設值為 2.0。

圖片黑色比例閾值, 圖片閾值

設定將圖片視為「黑色」的閾值。表示比率的最小值

nb_black_pixels / nb_pixels

圖片被視為黑色的最小值。預設值為 0.98。

像素黑色閾值, 像素閾值

設定將像素視為「黑色」的閾值。

閾值根據以下方程式表示像素最大亮度值,像素會被視為「黑色」。提供的數值會根據以下方程式縮放

absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size

luma_range_sizeluma_minimum_value 取決於輸入視訊格式,範圍對於 YUV 全範圍格式為 [0-255],對於 YUV 非全範圍格式為 [16-235]。

預設值為 0.10。

以下範例將最大像素閾值設定為最小值,並且僅偵測 2 秒或更長時間的黑色間隔

blackdetect=d=2:pix_th=0.00

39.14 blackframe

偵測(幾乎)完全黑色的影格。可用於偵測章節過渡或廣告。輸出列包含偵測到的影格的影格編號、黑色百分比、檔案中的位置(如果已知)或 -1,以及時間戳記(以秒為單位)。

為了顯示輸出列,您需要將日誌層級至少設定為 AV_LOG_INFO 值。

此濾波器匯出影格元資料 lavfi.blackframe.pblack。該值表示圖片中低於閾值的像素百分比。

它接受以下參數

amount

必須低於閾值的像素百分比;預設值為 98

閾值, 閾值

像素值被視為黑色的閾值;預設值為 32

39.15 blend

將兩個視訊影格混合在一起。

blend 濾波器採用兩個輸入串流並輸出一個串流,第一個輸入是「頂層」,第二個輸入是「底層」。預設情況下,輸出會在最長輸入終止時終止。

tblend(時間混合)濾波器從單個串流中取得兩個連續的影格,並輸出透過將新影格混合在舊影格之上獲得的結果。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

設定特定像素分量的混合模式,或在 all_mode 的情況下設定所有像素分量的混合模式。預設值為 normal

分量模式的可用值為

addition
and
average
bleach
burn
darken
difference
divide
dodge
exclusion
extremity
freeze
geometric
glow
grainextract
grainmerge
hardlight
hardmix
hardoverlay
harmonic
heat
interpolate
lighten
linearlight
multiply
multiply128
negation
normal
or
overlay
phoenix
pinlight
reflect
screen
softdifference
softlight
stain
subtract
vividlight
xor
c0_opacity
c1_opacity
c2_opacity
c3_opacity
all_opacity

設定特定像素組件或所有像素組件(若為 all_opacity)的混合不透明度。僅與像素組件混合模式組合使用。

c0_expr
c1_expr
c2_expr
c3_expr
all_expr

設定特定像素組件或所有像素組件(若為 all_expr)的混合表達式。請注意,如果已設定相關的模式選項,則會被忽略。

表達式可以使用以下變數

N

已過濾影格的序號,從 0 開始。

X
Y

目前樣本的座標

W
H

目前過濾平面的寬度和高度

SW
SH

正在過濾的平面的寬度和高度縮放比例。它是目前平面尺寸與亮度平面尺寸的比率,例如對於 yuv420p 影格,亮度平面的值為 1,1,色度平面的值為 0.5,0.5

T

目前影格的時間,以秒為單位表示。

TOP, A

第一個視訊影格(頂層)目前位置的像素組件值。

BOTTOM, B

第二個視訊影格(底層)目前位置的像素組件值。

blend 濾鏡也支援 framesync 選項。

39.15.1 範例

  • 在前 10 秒內套用從底層到頂層的轉場
    blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • 套用從頂層到基層的線性水平轉場
    blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • 套用 1x1 棋盤格效果
    blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • 套用由左而右揭露效果
    blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • 套用由上而下揭露效果
    blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • 套用由右下往左上揭露效果
    blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • 對角分割視訊,並在每一側顯示頂層和底層
    blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • 顯示目前影格與前一個影格之間的差異
    tblend=all_mode=grainextract
    

39.15.2 指令

此濾鏡支援與選項相同的 commands

39.16 blockdetect

決定影格的區塊效應,但不改變輸入影格。

基於 Remco Muijs 和 Ihor Kirenko 的論文:「用於自適應視訊處理的無參考區塊偽影測量」。2005 年第 13 屆歐洲訊號處理會議。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

period_min
period_max

設定用於決定像素網格(週期)的最小值和最大值。預設值為 [3,24]。

平面

設定要篩選的平面。預設值為僅第一個。

39.16.1 範例

  • 決定第一個平面的區塊效應,並在 [8,32] 範圍內搜尋週期
    blockdetect=period_min=8:period_max=32:planes=1
    

39.17 blurdetect

決定影格的模糊度,但不改變輸入影格。

基於 Marziliano、Pina 等人的論文:「無參考感知模糊度量」。允許基於區塊的縮寫。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定 Canny 邊緣檢測演算法使用的低和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high

low 的預設值為 20/255high 的預設值為 50/255

radius

定義在邊緣像素周圍搜尋局部最大值的半徑。

block_pct

僅針對最重要的區塊(以百分比表示)決定模糊度。

block_width

針對寬度為 block_width 的區塊決定模糊度。如果設定為小於 1 的任何值,則不使用區塊,且整個影像將被視為一個整體進行處理,而與 block_height 無關。

block_height

針對高度為 block_height 的區塊決定模糊度。如果設定為小於 1 的任何值,則不使用區塊,且整個影像將被視為一個整體進行處理,而與 block_width 無關。

平面

設定要篩選的平面。預設值為僅第一個。

39.17.1 範例

  • 針對 80% 最重要的 32x32 區塊決定模糊度
    blurdetect=block_width=32:block_height=32:block_pct=80
    

39.18 bm3d

使用 Block-Matching 3D 演算法對影格進行降噪。

此濾鏡接受以下選項。

sigma

設定降噪強度。預設值為 1。允許範圍為 0 到 999.9。降噪演算法對 sigma 非常敏感,因此請根據來源調整。

block

設定局部區塊大小。這會在 2D 中設定尺寸。

bstep

設定處理區塊的滑動步長。預設值為 4。允許範圍為 1 到 64。較小的值允許處理更多參考區塊,但速度較慢。

group

設定第三維中相似區塊的最大數量。預設值為 1。當設定為 1 時,不進行區塊匹配。較大的值允許單個群組中有更多區塊。允許範圍為 1 到 256。

range

設定搜尋區塊匹配的半徑。預設值為 9。允許範圍為 1 到 INT32_MAX。

mstep

設定區塊匹配的兩個搜尋位置之間的步長。預設值為 1。允許範圍為 1 到 64。較小的值速度較慢。

thmse

設定區塊匹配的均方誤差閾值。有效範圍為 0 到 INT32_MAX。

hdthr

設定 3D 轉換域中硬閾值處理的閾值參數。較大的值會導致頻域中更強的硬閾值濾波。

estim

設定濾波估計模式。可以是 basicfinal。預設值為 basic

ref

如果啟用,濾鏡將使用第二個串流進行區塊匹配。estim 選項的值為 basic 時,預設為停用;如果 estim 的值為 final,則始終啟用。

平面

設定要過濾的平面。預設值為所有可用平面,但 Alpha 平面除外。

39.18.1 範例

  • 使用 bm3d 進行基本濾波
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
    
  • 與上述相同,但僅濾波亮度
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
    
  • 與上述相同,但使用兩種估計模式
    split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    
  • 與上述相同,但改為使用 nlmeans 濾鏡進行預先濾波
    split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    

39.19 boxblur

將方塊模糊演算法應用於輸入視訊。

它接受以下參數

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

設定用於模糊對應輸入平面的方塊半徑(以像素為單位)的表達式。

半徑值必須是非負數,且不得大於亮度平面和 Alpha 平面的表達式 min(w,h)/2 的值,以及色度平面的 min(cw,ch)/2

luma_radius 的預設值為 "2"。如果未指定,chroma_radiusalpha_radius 預設為 luma_radius 設定的對應值。

表達式可以包含以下常數

w
h

輸入寬度和高度(以像素為單位)。

cw
ch

輸入色度影像的寬度和高度(以像素為單位)。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

luma_power, lp
chroma_power, cp
alpha_power, ap

指定將方塊模糊濾鏡應用於對應平面的次數。

luma_power 的預設值為 2。如果未指定,chroma_poweralpha_power 預設為 luma_power 設定的對應值。

值為 0 將停用效果。

39.19.1 範例

  • 套用方塊模糊濾鏡,亮度、色度和 Alpha 半徑設定為 2
    boxblur=luma_radius=2:luma_power=1
    boxblur=2:1
    
  • 將亮度半徑設定為 2,Alpha 和色度半徑設定為 0
    boxblur=2:1:cr=0:ar=0
    
  • 將亮度和色度半徑設定為視訊尺寸的一部分
    boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
    

39.20 bwdif

對輸入視訊進行去交錯處理("bwdif" 代表 "Bob Weaver Deinterlacing Filter")。

基於 yadif 的運動自適應去交錯,使用 w3fdif 和立方插值演算法。它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

0, send_frame

為每個影格輸出一個影格。

1, send_field

為每個圖場輸出一個影格。

預設值為 send_field

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

0, tff

假設頂圖場優先。

1, bff

假設底圖場優先。

-1, auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

39.21 bwdif_cuda

使用 bwdif 演算法對輸入視訊進行去交錯處理,但以 CUDA 實作,使其可以作為具有 nvdec 和/或 nvenc 的 GPU 加速管線的一部分運作。

它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

0, send_frame

為每個影格輸出一個影格。

1, send_field

為每個圖場輸出一個影格。

預設值為 send_field

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

0, tff

假設頂圖場優先。

1, bff

假設底圖場優先。

-1, auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

39.22 ccrepack

重新封裝 CEA-708 封閉字幕側資料

此濾鏡修正了商業編碼器中看到的與上游格式錯誤的 CEA-708 酬載相關的各種問題,特別是元組數量不正確(目標 FPS 的 cc_count 錯誤)以及元組順序不正確(即 CEA-608 元組不在酬載中的第一個條目)。

39.23 cas

將對比度自適應銳化濾鏡應用於視訊串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

strength

設定銳化強度。預設值為 0。

平面

設定要過濾的平面。預設值為過濾除 Alpha 平面之外的所有平面。

39.23.1 指令

此濾鏡支援與選項相同的 commands

39.24 chromahold

移除除特定顏色之外的所有顏色的所有色彩資訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

color

不會被中性色度取代的顏色。

相似度

與上述顏色的相似度百分比。0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。0.0 使像素完全變為灰色,或完全不變為灰色。較高的值會導致更多保留的顏色。

yuv

表示傳遞的顏色已為 YUV 而非 RGB。

啟用此選項後,像「綠色」或「紅色」這樣的文字顏色不再有意義。這可用於以十六進位數字傳遞精確的 YUV 值。

39.24.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.25 chromakey

YUV 色彩空間顏色/色度去背。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

color

將被透明度取代的顏色。

相似度

與關鍵顏色的相似度百分比。

0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

yuv

表示傳遞的顏色已為 YUV 而非 RGB。

啟用此選項後,像「綠色」或「紅色」這樣的文字顏色不再有意義。這可用於以十六進位數字傳遞精確的 YUV 值。

39.25.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.25.2 範例

  • 使輸入影像中的每個綠色像素透明
    ffmpeg -i input.png -vf chromakey=green out.png
    
  • 將綠幕視訊疊加在靜態黑色背景之上。
    ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
    

39.26 chromakey_cuda

CUDA 加速 YUV 色彩空間顏色/色度去背。

此濾鏡的工作方式與普通 chromakey 濾鏡類似,但適用於 CUDA 影格。有關更多詳細資訊和參數,請參閱 chromakey

39.26.1 範例

  • 使輸入視訊中的所有綠色像素透明,並將其用作另一個視訊的疊加層
    ./ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4  \
        -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \
        -init_hw_device cuda \
        -filter_complex \
        " \
            [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \
            [1:v]scale_cuda=format=yuv420p[base]; \
            [base][overlay_video]overlay_cuda" \
        -an -sn -c:v h264_nvenc -cq 20 output.mp4
    
  • 處理兩個軟體來源,明確上傳影格
    ./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \
        -f lavfi -i color=size=800x600:color=white,format=yuv420p \
        -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \
        -filter_complex \
        " \
            [0]hwupload[under]; \
            [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \
            [under][over]overlay_cuda" \
        -c:v hevc_nvenc -cq 18 -preset slow output.mp4
    

39.27 chromanr

減少色度雜訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

thres

設定平均色度值的閾值。目前像素與相鄰像素的 Y、U 和 V 像素組件的絕對差值之和小於此閾值將用於平均。亮度組件保持不變並複製到輸出。預設值為 30。允許範圍為 1 到 200。

sizew

設定用於平均的矩形的水平半徑。允許範圍為 1 到 100。預設值為 5。

sizeh

設定用於平均的矩形的垂直半徑。允許範圍為 1 到 100。預設值為 5。

stepw

設定平均時的水平步長。預設值為 1。允許範圍為 1 到 50。主要用於加速濾波。

steph

設定平均時的垂直步長。預設值為 1。允許範圍為 1 到 50。主要用於加速濾波。

threy

設定平均色度值的 Y 閾值。對目前像素與相鄰像素的 Y 組件之間的最大允許差異進行更精細的控制。預設值為 200。允許範圍為 1 到 200。

threu

設定平均色度值的 U 閾值。對目前像素與相鄰像素的 U 組件之間的最大允許差異進行更精細的控制。預設值為 200。允許範圍為 1 到 200。

threv

設定平均色度值的 V 閾值。對目前像素與相鄰像素的 V 組件之間的最大允許差異進行更精細的控制。預設值為 200。允許範圍為 1 到 200。

distance

設定計算中使用的距離類型。

manhattan

絕對差。

euclidean

差的平方。

預設距離類型為曼哈頓距離。

39.27.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

39.28 chromashift

水平和/或垂直移動色度像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cbh

設定水平移動色度藍色的量。

cbv

設定垂直移動色度藍色的量。

crh

設定水平移動色度紅色的量。

crv

設定垂直移動色度紅色的量。

edge

設定邊緣模式,可以是 smear(預設)或 warp

39.28.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.29 ciescope

顯示 CIE 色彩圖,並將像素疊加在其上。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

system

設定色彩系統。

ntsc, 470m
ebu, 470bg
smpte
240m
apple
widergb
cie1931
rec709, hdtv
uhdtv, rec2020
dcip3
cie

設定 CIE 系統。

xyy
ucs
luv
gamuts

設定要繪製的色域。

請參閱 system 選項以取得可用值。

size, s

設定 ciescope 大小,預設設定為 512。

intensity, i

設定用於將輸入像素值對應到 CIE 圖的強度。

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

設定用於繪製超出活動色彩系統色域的舌形顏色的對比度。

corrgamma

校正範圍上顯示的 Gamma 值,預設為啟用。

showwhite

在 CIE 圖上顯示白點,預設為停用。

gamma

設定輸入 Gamma 值。僅適用於 XYZ 輸入色彩空間。

fill

使用 CIE 顏色填充。預設為啟用。

39.30 codecview

視覺化某些編解碼器匯出的資訊。

某些編解碼器可以通過使用側資料或其他方式通過影格匯出資訊。例如,某些基於 MPEG 的編解碼器通過編解碼器 flags2 選項中的 export_mvs 旗標匯出運動向量。

此濾波器接受以下選項

block

使用亮度平面顯示區塊分割結構。

mv

設定要視覺化的運動向量。

mv 的可用旗標為

pf

P 影格的前向預測 MV

bf

B 影格的前向預測 MV

bb

B 影格的反向預測 MV

qp

使用色度平面顯示量化參數。

mv_type, mvt

設定要視覺化的運動向量類型。除非由 frame_type 選項指定,否則包含來自所有影格的 MV。

mv_type 的可用旗標為

fp

前向預測 MV

bp

向後預測的 MV

frame_type, ft

設定影格類型以視覺化動態向量。

frame_type 的可用旗標為

if

畫面內編碼影格 (I-影格)

pf

預測影格 (P-影格)

bf

雙向預測影格 (B-影格)

39.30.1 範例

  • 使用 ffplay 視覺化所有影格的向前預測 MV
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
    
  • 使用 ffplay 視覺化 P 和 B 影格的多方向 MV
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
    

39.31 colorbalance

修改輸入影格的主要顏色(紅、綠和藍)強度。

此濾鏡允許調整輸入影格的陰影、中間調或亮部區域,以達到紅-青、綠-洋紅或藍-黃平衡。

正調整值會將平衡向主要顏色移動,負值則向互補色移動。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rs
gs
bs

調整紅色、綠色和藍色陰影(最暗像素)。

rm
gm
bm

調整紅色、綠色和藍色中間調(中等像素)。

rh
gh
bh

調整紅色、綠色和藍色亮部(最亮像素)。

選項的允許範圍為 [-1.0, 1.0]。預設值為 0

pl

更改色彩平衡時保留亮度。預設為停用。

39.31.1 範例

  • 為陰影添加紅色色偏
    colorbalance=rs=.3
    

39.31.2 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.32 colorcontrast

調整 RGB 成分之間的色彩對比度。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rc

設定紅-青對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

gm

設定綠-洋紅對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

by

設定藍-黃對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

rcw
gmw
byw

設定每個 rcgmby 選項值的權重。預設值為 0.0。允許範圍為 0.0 到 1.0。如果所有權重均為 0.0,則停用濾鏡。

pl

設定亮度保留量。預設值為 0.0。允許範圍為 0.0 到 1.0。

39.32.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.33 colorcorrect

選擇性地調整黑色和白色的色彩白平衡。此濾鏡在 YUV 色彩空間中運作。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rl

設定紅色陰影點。允許範圍為 -1.0 到 1.0。預設值為 0。

bl

設定藍色陰影點。允許範圍為 -1.0 到 1.0。預設值為 0。

rh

rh

bh

bh

saturation

設定飽和度量。允許範圍為 -3.0 到 3.0。預設值為 1。

analyze

若設定為 manual 以外的任何值,它將分析每個影格,並使用導出的參數來過濾輸出影格。

可能的值為

manual
average
minmax
median

預設值為 manual

39.33.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.34 colorchannelmixer

透過重新混合顏色通道來調整視訊輸入影格。

此濾鏡透過將與相同像素的其他通道相關聯的值相加來修改顏色通道。例如,如果要修改的值是紅色,則輸出值將為

red=red*rr + blue*rb + green*rg + alpha*ra

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rr
rg
rb
ra

調整輸入紅色、綠色、藍色和 Alpha 通道對輸出紅色通道的貢獻。 rr 的預設值為 1rgrbra 的預設值為 0

gr
gg
gb
ga

調整輸入紅色、綠色、藍色和 Alpha 通道對輸出綠色通道的貢獻。 gg 的預設值為 1grgbga 的預設值為 0

br
bg
bb
ba

調整輸入紅色、綠色、藍色和 Alpha 通道對輸出藍色通道的貢獻。 bb 的預設值為 1brbgba 的預設值為 0

ar
ag
ab
aa

調整輸入紅色、綠色、藍色和 Alpha 通道對輸出 Alpha 通道的貢獻。 aa 的預設值為 1aragab 的預設值為 0

選項的允許範圍為 [-2.0, 2.0]

pc

設定保留色彩模式。接受的值為

none

停用色彩保留,這是預設值。

lum

保留亮度。

max

保留 RGB 三元組的最大值。

avg

保留 RGB 三元組的平均值。

sum

保留 RGB 三元組的總和值。

nrm

保留 RGB 三元組的正規化值。

pwr

保留 RGB 三元組的功率值。

pa

設定更改顏色時的色彩保留量。允許範圍為 [0.0, 1.0]。預設值為 0.0,因此停用。

39.34.1 範例

  • 將來源轉換為灰階
    colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
    
  • 模擬棕褐色調
    colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
    

39.34.2 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.35 colorize

在視訊串流上覆蓋純色。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

hue

設定色彩色相。允許範圍為 0 到 360。預設值為 0。

saturation

設定色彩飽和度。允許範圍為 0 到 1。預設值為 0.5。

lightness

設定色彩明度。允許範圍為 0 到 1。預設值為 0.5。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

設定來源明度的混合。預設設定為 1.0。允許範圍為 0.0 到 1.0。

39.35.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.36 colorkey

RGB 色彩空間色彩去背。此濾鏡在 8 位元 RGB 格式影格上運作,方法是將每個像素的 Alpha 成分設定為 0,這些像素落在關鍵顏色的相似度半徑內。相似度半徑外的像素的 Alpha 值取決於 blend 選項的值。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

color

設定 Alpha 將設定為 0(完全透明)的顏色。請參閱 ffmpeg-utils 手冊中的「Color」章節。預設值為 black

相似度

設定從關鍵顏色開始的半徑,在此半徑內其他顏色也具有完全透明度。計算出的距離與關鍵顏色的 RGB 值與像素顏色之間 3D 空間中的單位分數距離有關。範圍為 0.01 到 1.0。 0.01 在精確關鍵顏色周圍的非常小半徑內匹配,而 1.0 匹配所有顏色。預設值為 0.01

blend

設定如何計算落在相似度半徑外的像素的 Alpha 值。 0.0 使像素完全透明或完全不透明。較高的值會產生半透明像素,像素顏色越接近關鍵顏色,透明度越高。範圍為 0.0 到 1.0。預設值為 0.0

39.36.1 範例

  • 使輸入影像中的每個綠色像素透明
    ffmpeg -i input.png -vf colorkey=green out.png
    
  • 在靜態背景影像之上覆蓋綠幕視訊。
    ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
    

39.36.2 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.37 colorhold

移除除特定顏色之外的所有 RGB 顏色的所有色彩資訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

color

不會被中性灰色取代的顏色。

相似度

與上述顏色的相似度百分比。0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。 0.0 使像素完全變成灰色。較高的值會產生更多保留的顏色。

39.37.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.38 colorlevels

使用色階調整視訊輸入影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rimin
gimin
bimin
aimin

調整紅色、綠色、藍色和 Alpha 輸入黑點。選項的允許範圍為 [-1.0, 1.0]。預設值為 0

rimax
gimax
bimax
aimax

調整紅色、綠色、藍色和 Alpha 輸入白點。選項的允許範圍為 [-1.0, 1.0]。預設值為 1

輸入色階用於淡化亮部(亮色調)、加深陰影(暗色調)、更改亮色調和暗色調的平衡。

romin
gomin
bomin
aomin

調整紅色、綠色、藍色和 Alpha 輸出黑點。選項的允許範圍為 [0, 1.0]。預設值為 0

romax
gomax
bomax
aomax

調整紅色、綠色、藍色和 Alpha 輸出白點。選項的允許範圍為 [0, 1.0]。預設值為 1

輸出色階允許手動選擇受限的輸出色階範圍。

preserve

設定保留色彩模式。接受的值為

none

停用色彩保留,這是預設值。

lum

保留亮度。

max

保留 RGB 三元組的最大值。

avg

保留 RGB 三元組的平均值。

sum

保留 RGB 三元組的總和值。

nrm

保留 RGB 三元組的正規化值。

pwr

保留 RGB 三元組的功率值。

39.38.1 範例

  • 使視訊輸出變暗
    colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
    
  • 增加對比度
    colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
    
  • 使視訊輸出變亮
    colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
    
  • 增加亮度
    colorlevels=romin=0.5:gomin=0.5:bomin=0.5
    

39.38.2 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.39 colormap

將自訂顏色對應套用至視訊串流。

此濾鏡需要三個輸入視訊串流。第一個串流是要過濾掉的視訊串流。第二個和第三個視訊串流指定來源顏色到目標顏色對應的顏色色塊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

patch_size

設定來源和目標視訊串流色塊大小(以像素為單位)。

nb_patches

設定來源和目標視訊串流中使用的最大色塊數量。預設值為額外視訊串流中可用的色塊數量。允許的最大色塊數量為 64

type

設定用於目標顏色的調整。可以是 relativeabsolute。預設值為 absolute

kernel

設定用於測量對應顏色之間顏色差異的核心。

接受的值為

euclidean
weuclidean

預設值為 euclidean

39.40 colormatrix

轉換色彩矩陣。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

src
dst

指定來源和目標色彩矩陣。必須指定兩個值。

接受的值為

bt709

BT.709

fcc

FCC

bt601

BT.601

bt470

BT.470

bt470bg

BT.470BG

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

例如,若要從 BT.601 轉換為 SMPTE-240M,請使用命令

colormatrix=bt601:smpte240m

39.41 colorspace

轉換色彩空間、傳輸特性或色彩原色。輸入視訊需要具有偶數大小。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

all

一次指定所有色彩屬性。

接受的值為

bt470m

BT.470M

bt470bg

BT.470BG

bt601-6-525

BT.601-6 525

bt601-6-625

BT.601-6 625

bt709

BT.709

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

space

指定輸出色彩空間。

接受的值為

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

ycgco

YCgCo

bt2020ncl

具有非恆定亮度的 BT.2020

trc

指定輸出傳輸特性。

接受的值為

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG

gamma22

2.2 的恆定 Gamma

gamma28

2.8 的恆定 Gamma

smpte170m

SMPTE-170M、BT.601-6 625 或 BT.601-6 525

smpte240m

SMPTE-240M

srgb

SRGB

iec61966-2-1

iec61966-2-1

iec61966-2-4

iec61966-2-4

xvycc

xvycc

bt2020-10

適用於 10 位元內容的 BT.2020

bt2020-12

適用於 12 位元內容的 BT.2020

primaries

指定輸出色彩原色。

接受的值為

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

film

film

smpte431

SMPTE-431

smpte432

SMPTE-432

bt2020

BT.2020

jedec-p22

JEDEC P22 螢光粉

range

指定輸出色彩範圍。

接受的值為

tv

電視 (受限) 範圍

mpeg

MPEG (受限) 範圍

pc

PC (完整) 範圍

jpeg

JPEG (完整) 範圍

格式

指定輸出色彩格式。

接受的值為

yuv420p

YUV 4:2:0 平面 8 位元

yuv420p10

YUV 4:2:0 平面 10 位元

yuv420p12

YUV 4:2:0 平面 12 位元

yuv422p

YUV 4:2:2 平面 8 位元

yuv422p10

YUV 4:2:2 平面 10 位元

yuv422p12

YUV 4:2:2 平面 12 位元

yuv444p

YUV 4:4:4 平面 8 位元

yuv444p10

YUV 4:4:4 平面 10 位元

yuv444p12

YUV 4:4:4 平面 12 位元

fast

執行快速轉換,這會跳過 Gamma/原色校正。這樣會大幅減少 CPU 使用量,但在數學上不正確。若要取得與 colormatrix 濾鏡產生的輸出相容的輸出,請使用 fast=1。

dither

指定遞色模式。

接受的值為

none

無遞色

fsb

Floyd-Steinberg 遞色

wpadapt

白點調整模式。

接受的值為

bradford

Bradford 白點調整

vonkries

von Kries 白點調整

identity

身分白點調整(即無白點調整)

iall

一次覆寫所有輸入屬性。接受的值與 all 相同。

ispace

覆寫輸入色彩空間。接受的值與 space 相同。

iprimaries

覆寫輸入色彩原色。接受的值與 primaries 相同。

itrc

覆寫輸入傳輸特性。接受的值與 trc 相同。

irange

覆寫輸入色彩範圍。接受的值與 range 相同。

此濾鏡會將傳輸特性、色彩空間和色彩原色轉換為使用者指定的值。如果未指定輸出值,則會根據 "all" 屬性將其設定為預設值。如果也未指定該屬性,則濾鏡將記錄錯誤。輸出色彩範圍和格式預設為與輸入色彩範圍和格式相同的值。輸入傳輸特性、色彩空間、色彩原色和色彩範圍應在輸入資料上設定。如果缺少任何這些項目,濾鏡將記錄錯誤,並且不會進行任何轉換。

例如,若要將輸入轉換為 SMPTE-240M,請使用命令

colorspace=smpte240m

39.42 colorspace_cuda

colorspace 濾鏡的 CUDA 加速實作。

與軟體 colorspace 濾鏡相比,它絕非功能完整,目前僅支援 jpeg/完整範圍和 mpeg/受限範圍之間的色彩範圍轉換。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

range

指定輸出色彩範圍。

接受的值為

tv

電視 (受限) 範圍

mpeg

MPEG (受限) 範圍

pc

PC (完整) 範圍

jpeg

JPEG (完整) 範圍

39.43 colortemperature

調整視訊中的色溫,以模擬環境色溫的變化。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

temperature

以克耳文為單位設定溫度。允許範圍為 1000 到 40000。預設值為 6500 K。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

設定與過濾後輸出的混合。允許範圍為 0 到 1。預設值為 1。

pl

設定亮度保留量。允許範圍為 0 到 1。預設值為 0。

39.43.1 指令

此濾鏡支援與選項相同的 commands

39.44 convolution

套用 3x3、5x5、7x7 或水平/垂直(最多 49 個元素)的卷積。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

0m
1m
2m
3m

設定每個平面的矩陣。在 square 模式下,矩陣是 9、25 或 49 個帶號整數的序列,在 row 模式下,矩陣是 1 到 49 個奇數個帶號整數的序列。

0rdiv
1rdiv
2rdiv
3rdiv

設定每個平面的計算值的乘數。如果未設定或為 0,則會是所有矩陣元素的總和的倒數 (1/總和)。

0bias
1bias
2bias
3bias

設定每個平面的偏移值。此值會加到乘法結果中。適用於讓整體影像更亮或更暗。預設值為 0.0。

0mode
1mode
2mode
3mode

設定每個平面的矩陣模式。可以是 squarerowcolumn。預設值為 square

39.44.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.44.2 範例

  • 套用銳化
    convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
    
  • 套用模糊
    convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
    
  • 套用邊緣強化
    convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
    
  • 套用邊緣偵測
    convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
    
  • 套用包含對角線的拉普拉斯邊緣偵測器
    convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
    
  • 套用浮雕
    convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
    

39.45 convolve

使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 迴旋積。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

平面

設定要處理的平面。

impulse

設定要處理的脈衝視訊影格,可以是 firstall。預設值為 all

convolve 濾鏡也支援 framesync 選項。

39.46 copy

將輸入視訊來源不變地複製到輸出。這主要用於測試目的。

39.47 coreimage

在 OSX 上使用 Apple 的 CoreImage API 在 GPU 上進行視訊濾鏡處理。

硬體加速是基於 OpenGL 環境。通常,這表示它是由視訊硬體處理的。但是,存在基於軟體的 OpenGL 實作,這表示無法保證硬體處理。這取決於各自的 OSX。

Apple 提供了許多濾鏡和影像產生器,它們帶有各種各樣的選項。濾鏡必須通過其名稱及其選項來引用。

coreimage 濾鏡接受以下選項

list_filters

列出所有可用的濾鏡和產生器,以及它們各自的選項,以及可能的最小值和最大值以及預設值。

list_filters=true
filter

通過它們各自的名稱和選項來指定所有濾鏡。使用 list_filters 來確定所有有效的濾鏡名稱和選項。數值選項由浮點值指定,並自動鉗制到它們各自的值範圍。向量和顏色選項必須由空格分隔的浮點值列表指定。必須完成字元跳脫。特殊選項名稱 default 可用於濾鏡的預設選項。

必須指定 default 或至少一個濾鏡選項。所有省略的選項都使用其預設值。濾鏡字串的語法如下

filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
output_rect

指定一個矩形,濾鏡鏈的輸出將複製到輸入影像中。它由空格分隔的浮點值列表給出

output_rect=x\ y\ width\ height

如果未給出,則輸出矩形等於輸入影像的尺寸。輸出矩形會自動在輸入影像的邊界處裁剪。負值對每個組件都有效。

output_rect=25\ 25\ 100\ 100

可以鏈接多個濾鏡以進行連續處理,而無需 GPU-HOST 傳輸,從而可以快速處理複雜的濾鏡鏈。目前,僅支援具有零個 (產生器) 或恰好一個 (濾鏡) 輸入影像和一個輸出影像的濾鏡。此外,過渡濾鏡尚無法按預期使用。

某些濾鏡會根據各自的濾鏡核心產生帶有額外填充的輸出影像。填充會自動移除,以確保濾鏡輸出與輸入影像具有相同的大小。

對於影像產生器,輸出影像的大小由濾鏡鏈的前一個輸出影像或整個濾鏡鏈的輸入影像決定。產生器不使用此影像的像素資訊來產生其輸出。但是,產生的輸出會混合到此影像上,從而導致部分或完全覆蓋輸出影像。

coreimagesrc 視訊來源可用於產生直接饋送到濾鏡鏈中的輸入影像。通過使用它,不需要通過另一個視訊來源或輸入視訊來提供輸入影像。

39.47.1 範例

  • 列出所有可用的濾鏡
    coreimage=list_filters=true
    
  • 使用具有預設選項的 CIBoxBlur 濾鏡來模糊影像
    coreimage=filter=CIBoxBlur@default
    
  • 使用具有預設值的 CISepiaTone 和中心點在 100x100 和半徑為 50 像素的 CIVignetteEffect 的濾鏡鏈
    coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
    
  • 使用 nullsrc 和 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 Apple 標準 bash shell 的完整且跳脫字元的命令列形式給出
    ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

39.48 corr

取得兩個輸入視訊之間的相關性。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入都具有相同數量的影格,這些影格會逐一比較。

獲得的每個組件、平均值、最小值和最大值相關性會通過日誌系統列印出來。

濾鏡將每個影格的計算相關性儲存在影格元數據中。

此濾鏡也支援 framesync 選項。

在下面的範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -

39.49 cover_rect

覆蓋矩形物件

它接受以下選項

cover

可選覆蓋影像的檔案路徑,需要為 yuv420 格式。

level_in

設定覆蓋模式。

它接受以下值

cover

用提供的影像覆蓋它

blur

通過內插周圍的像素來覆蓋它

預設值為 blur

39.49.1 範例

  • 使用 ffmpeg 通過給定視訊的提供的影像來覆蓋矩形物件
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    

39.50 crop

將輸入視訊裁剪為給定的尺寸。

它接受以下參數

w, out_w

輸出視訊的寬度。預設值為 iw。此表達式僅在濾鏡配置期間或發送 ‘w’ 或 ‘out_w’ 命令時評估一次。

h, out_h

輸出視訊的高度。預設值為 ih。此表達式僅在濾鏡配置期間或發送 ‘h’ 或 ‘out_h’ 命令時評估一次。

x

輸出視訊左邊緣在輸入視訊中的水平位置。預設值為 (in_w-out_w)/2。此表達式是逐影格評估的。

y

輸出視訊頂部邊緣在輸入視訊中的垂直位置。預設值為 (in_h-out_h)/2。此表達式是逐影格評估的。

keep_aspect

如果設定為 1,將通過更改輸出樣本縱橫比來強制輸出顯示縱橫比與輸入相同。預設值為 0。

exact

啟用精確裁剪。如果啟用,子採樣視訊將以指定的精確寬度/高度/x/y 裁剪,並且不會四捨五入到最接近的較小值。預設值為 0。

out_wout_hxy 參數是包含以下常數的表達式

x
y

xy 的計算值。它們是針對每個新影格評估的。

in_w
in_h

輸入寬度和高度。

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出 (裁剪) 寬度和高度。

ow
oh

這些與 out_wout_h 相同。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

n

輸入影格的編號,從 0 開始。

pos

輸入幀在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

t

以秒為單位的時間戳記。如果輸入時間戳記未知,則為 NAN。

out_w 的表達式可能取決於 out_h 的值,而 out_h 的表達式可能取決於 out_w,但它們不能取決於 xy,因為 xy 是在 out_wout_h 之後評估的。

xy 參數指定輸出 (非裁剪) 區域的左上角位置的表達式。它們是針對每個影格評估的。如果評估值無效,則將其近似為最接近的有效值。

x 的表達式可能取決於 y,而 y 的表達式可能取決於 x

39.50.1 範例

  • 裁剪大小為 100x100,位置為 (12,34) 的區域。
    crop=100:100:12:34
    

    使用命名選項,上面的範例變為

    crop=w=100:h=100:x=12:y=34
    
  • 裁剪大小為 100x100 的中心輸入區域
    crop=100:100
    
  • 裁剪大小為輸入視訊 2/3 的中心輸入區域
    crop=2/3*in_w:2/3*in_h
    
  • 裁剪輸入視訊中心正方形
    crop=out_w=in_h
    crop=in_h
    
  • 劃定矩形,其左上角放置在位置 100:100,右下角對應於輸入影像的右下角。
    crop=in_w-100:in_h-100:100:100
    
  • 從左右邊界裁剪 10 像素,從頂部和底部邊界裁剪 20 像素
    crop=in_w-2*10:in_h-2*20
    
  • 僅保留輸入影像的右下四分之一
    crop=in_w/2:in_h/2:in_w/2:in_h/2
    
  • 裁剪高度以獲得希臘和諧比例
    crop=in_w:1/PHI*in_w
    
  • 套用顫抖效果
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
    
  • 根據時間戳記套用不穩定的攝影機效果
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
    
  • 根據 y 的值設定 x
    crop=in_w/2:in_h/2:y:10+10*sin(n/10)
    

39.50.2 指令

此濾波器支援以下命令

w, out_w
h, out_h
x
y

設定輸出視訊的寬度/高度以及輸入視訊中的水平/垂直位置。此命令接受相應選項的相同語法。

如果指定的表達式無效,則會保持其目前值。

39.51 cropdetect

自動偵測裁剪大小。

它會計算必要的裁剪參數,並通過日誌系統列印建議的參數。偵測到的尺寸對應於輸入視訊的非黑色或視訊區域,具體取決於 mode

它接受以下參數

level_in

根據 mode,裁剪偵測基於周圍像素的純黑色值或運動向量和邊緣像素的組合。

black

偵測播放視訊周圍的黑色像素。為了精細控制,請使用選項 limit

mvedges

通過視訊內部的運動向量並掃描通常形成播放視訊邊界的邊緣像素來偵測播放視訊。

限制

設定更高的黑色值閾值,可以選擇從無 (0) 到全部 (對於 8 位元格式為 255) 指定。強度值大於設定值的值被視為非黑色。預設值為 24。您也可以指定介於 0.0 和 1.0 之間的值,該值將根據像素格式的位元深度進行縮放。

捨入

寬度/高度應可被整除的值。預設值為 16。偏移量會自動調整以使視訊居中。使用 2 僅獲得偶數尺寸 (4:2:2 視訊需要)。編碼到大多數視訊編碼解碼器時,16 是最佳的。

skip

設定要跳過的初始影格數。預設值為 2。範圍為 0 到 INT_MAX。

reset_count, reset

設定計數器,該計數器確定 cropdetect 在多少個影格後將重置先前偵測到的最大視訊區域,並重新開始偵測當前最佳裁剪區域。預設值為 0。

當頻道標誌扭曲視訊區域時,這可能很有用。0 表示「永不重置」,並返回播放期間遇到的最大區域。

mv_threshold

設定以像素單位表示的運動作為運動偵測的閾值。預設值為 8。

設定 Canny 邊緣檢測演算法使用的低和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high

low 的預設值為 5/255high 的預設值為 15/255

39.51.1 範例

  • 查找被黑色邊框包圍的視訊區域
    ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
    
  • 查找嵌入式視訊區域,預先產生運動向量
    ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
    
  • 查找嵌入式視訊區域,使用來自解碼器的運動向量
    ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
    

39.51.2 指令

此濾波器支援以下命令

限制

此命令接受相應選項的相同語法。如果指定的表達式無效,則將其保持為當前值。

39.52 cue

將視訊濾鏡處理延遲到給定的掛鐘時間戳記。濾鏡首先傳遞 preroll 量的影格,然後緩衝最多 buffer 量的影格並等待提示。到達提示後,它會轉發緩衝的影格以及隨後輸入的任何影格。

濾鏡可用於同步多個 ffmpeg 進程的輸出,以用於即時輸出設備,如 decklink。通過將延遲放在濾鏡鏈中並預緩衝影格,進程可以在達到目標掛鐘時間戳記後幾乎立即將數據傳遞到輸出。

無法保證完美的影格準確度,但結果對於某些用例來說已足夠好。

cue

以微秒為單位的 UNIX 時間戳記表示的提示時間戳記。預設值為 0。

preroll

以秒為單位表示的作為預先滾動傳遞的內容持續時間。預設值為 0。

buffer

以秒為單位表示的等待提示之前要緩衝的最大內容持續時間。預設值為 0。

39.53 curves

使用曲線套用色彩調整。

此濾鏡類似於 Adobe Photoshop 和 GIMP 曲線工具。每個組件 (紅色、綠色和藍色) 的值都由 N 個關鍵點定義,這些關鍵點使用平滑曲線相互連接。x 軸表示來自輸入影格的像素值,y 軸表示要為輸出影格設定的新像素值。

預設情況下,組件曲線由兩個點 (0;0)(1;1) 定義。這會建立一條直線,其中每個原始像素值都「調整」為其自身的值,這表示影像沒有變化。

濾鏡允許您重新定義這兩個點並添加更多點。將定義一條新曲線,以平滑地通過所有這些新坐標。新定義的點需要沿 x 軸嚴格遞增,並且它們的 xy 值必須在 [0;1] 區間內。曲線是通過使用自然或單調三次樣條內插形成的,具體取決於 interp 選項 (預設值:natural)。natural 樣條通常產生更平滑的曲線,而單調 (pchip) 樣條保證指定點之間的過渡是單調的。如果計算出的曲線恰好超出向量空間,則值將被相應地裁剪。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

preset

選擇可用的顏色預設之一。除了 rgb 參數外,還可以使用此選項;在這種情況下,後面的選項優先於預設值。可用的預設值為

none
color_negative
cross_process
darker
increase_contrast
lighter
linear_contrast
medium_contrast
negative
strong_contrast
vintage

預設值為 none

master, m

設定主關鍵點。這些點將定義第二次通過映射。它有時被稱為「亮度」或「值」映射。它可以與 rgball 一起使用,因為它的作用類似於後處理 LUT。

red, r

設定紅色組件的關鍵點。

green, g

設定綠色組件的關鍵點。

blue, b

設定藍色組件的關鍵點。

all

設定所有組件 (不包括 master) 的關鍵點。可以與其他關鍵點組件選項一起使用。在這種情況下,未設定的組件將回退到此 all 設定。

psfile

指定 Photoshop 曲線檔案 (.acv) 以從中導入設定。

plot

將曲線的 Gnuplot 腳本保存在指定檔案中。

interp

指定內插種類。可用的演算法為

natural

自然三次樣條,使用分段三次多項式,該多項式是兩次連續可微分的。

pchip

使用分段三次 Hermite 插值多項式 (PCHIP) 的單調三次樣條。

為避免某些濾鏡圖語法衝突,每個關鍵點列表都需要使用以下語法定義:x0/y0 x1/y1 x2/y2 ...

39.53.1 指令

此濾鏡支援與選項相同的 commands

39.53.2 範例

  • 稍微增加藍色的中間色階
    curves=blue='0/0 0.5/0.58 1/1'
    
  • 復古效果
    curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
    

    在此我們取得每個組件的以下座標

    紅色

    (0;0.11) (0.42;0.51) (1;0.95)

    綠色

    (0;0) (0.50;0.48) (1;1)

    藍色

    (0;0.22) (0.49;0.44) (1;0.80)

  • 先前的範例也可以使用相關的內建預設值來達成
    curves=preset=vintage
    
  • 或直接
    curves=vintage
    
  • 使用 Photoshop 預設值並重新定義綠色組件的點
    curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
    
  • 使用 ffmpeggnuplot 查看 cross_process 設定檔的曲線
    ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
    gnuplot -p /tmp/curves.plt
    

39.54 datascope

視訊資料分析濾鏡。

此濾鏡顯示部分視訊的十六進制像素值。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

設定輸出視訊大小。

x

設定從何處選取像素的 x 偏移量。

y

設定從何處選取像素的 y 偏移量。

level_in

設定示波器模式,可以是下列其中之一

mono

在黑色背景上以白色繪製十六進制像素值。

color

在黑色背景上以輸入視訊像素顏色繪製十六進制像素值。

color2

在從輸入視訊選取的彩色背景上繪製十六進制像素值,文字顏色以使其始終可見的方式選取。

axis

在視訊的左側和頂部繪製行和列號。

opacity

設定背景不透明度。

格式

設定顯示數字格式。可以是 hexdec。預設值為 hex

components

設定要顯示的像素組件。預設情況下,會顯示所有像素組件。

39.54.1 指令

此濾鏡支援與選項相同的 commands,但不包括 size 選項。

39.55 dblur

套用方向模糊濾鏡。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

angle(角度)

設定方向模糊的角度。預設值為 45

radius

設定方向模糊的半徑。預設值為 5

平面

設定要篩選的平面。預設情況下,所有平面都會被篩選。

39.55.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.56 dctdnoiz

使用 2D DCT(頻域濾波)對影格進行去雜訊處理。

此濾鏡並非設計用於即時處理。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sigma, s

設定雜訊 sigma 常數。

sigma 定義了 3 * sigma 的硬性閾值;低於此閾值的每個 DCT 係數(絕對值)都將被捨棄。

如果您需要更進階的濾波,請參閱 expr

預設值為 0

overlap

設定每個區塊的重疊像素數。由於濾鏡可能速度較慢,您可能會想要降低此值,但會犧牲濾鏡效果並冒著產生各種失真的風險。

如果重疊值不允許處理整個輸入寬度或高度,則會顯示警告,並且不會對應地對邊界進行去雜訊處理。

預設值為 blocksize-1,這是最佳的可能設定。

expr, e

設定係數因子表達式。

對於 DCT 區塊的每個係數,此表達式將被評估為係數的乘數值。

如果設定了此選項,則會忽略 sigma 選項。

係數的絕對值可以透過 c 變數存取。

n

使用位元數設定 blocksize1<<n 定義 blocksize,即處理區塊的寬度和高度。

預設值為 3 (8x8),可以提高到 4 以獲得 16x16 的 blocksize。請注意,變更此設定對處理速度有巨大的影響。此外,更大的區塊大小不一定意味著更好的去雜訊效果。

39.56.1 範例

套用 sigma 值為 4.5 的去雜訊

dctdnoiz=4.5

相同的操作可以使用表達式系統來達成

dctdnoiz=e='gte(c, 4.5*3)'

使用 16x16 的區塊大小進行劇烈的去雜訊處理

dctdnoiz=15:n=4

39.57 deband

從輸入視訊中移除條帶狀失真。其運作方式是將條帶狀像素替換為參考像素的平均值。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

1thr
2thr
3thr
4thr

設定每個平面的條帶狀失真偵測閾值。預設值為 0.02。有效範圍為 0.00003 至 0.5。如果目前像素與參考像素之間的差異小於閾值,則會將其視為條帶狀失真。

range, r

像素條帶狀失真偵測範圍。預設值為 16。如果為正數,則會使用範圍 0 至設定值之間的隨機數。如果為負數,則會使用確切的絕對值。範圍定義目前像素周圍的四個像素的正方形。

direction, d

設定方向,以弧度為單位,從該方向比較四個像素。如果為正數,則會選取從 0 到設定方向的隨機方向。如果為負數,則會選取絕對值的確切值。例如,方向 0、-PI 或 -2*PI 弧度將僅選取同一行上的像素,而 -PI/2 將僅選取同一列上的像素。

blur, b

如果啟用,則會將目前像素與所有四個周圍像素的平均值進行比較。預設為啟用。如果停用,則會將目前像素與所有四個周圍像素進行比較。只有當與周圍像素的所有四個差異都小於閾值時,像素才被視為條帶狀失真。

coupling, c

如果啟用,則僅當所有像素組件都出現條帶狀失真時,才會變更目前像素,例如,所有顏色組件都觸發了條帶狀失真偵測閾值。預設為停用。

39.57.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.58 deblock

從輸入視訊中移除區塊狀失真。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

filter

設定濾鏡類型,可以是 weakstrong。預設值為 strong。這控制套用的去區塊類型。

block

設定區塊大小,允許範圍為 4 到 512。預設值為 8

alpha
貝塔
gamma
設定濾鏡 mu。

設定區塊狀失真偵測閾值。允許範圍為 0 到 1。預設值為:alpha0.098,其餘為 0.05。使用較高的閾值會提供更強的去區塊強度。設定 alpha 控制區塊確切邊緣的閾值偵測。其餘選項控制邊緣附近的閾值偵測。每個選項都適用於下方/上方或左側/右側。將其中任何一個設定為 0 會停用去區塊。

平面

設定要濾波的平面。預設為濾波所有可用的平面。

39.58.1 範例

  • 使用弱濾鏡和 4 像素的區塊大小進行去區塊。
    deblock=filter=weak:block=4
    
  • 使用強濾鏡、4 像素的區塊大小和自訂閾值來去區塊更多邊緣。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
    
  • 與上述類似,但僅濾波第一個平面。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
    
  • 與上述類似,但僅濾波第二個和第三個平面。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
    

39.58.2 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.59 decimate

以規律的間隔捨棄重複的影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cycle

設定將捨棄其中一個影格的影格數。將此設定為 N 表示每批 N 個影格中將捨棄一個影格。預設值為 5

dupthresh

設定重複偵測的閾值。如果影格的差異度量小於或等於此值,則宣告為重複。預設值為 1.1

scthresh

設定場景變更閾值。預設值為 15

blockx
blocky

設定度量計算期間使用的 x 和 y 軸區塊的大小。較大的區塊可提供更好的雜訊抑制,但也使小動作的偵測效果變差。必須是 2 的冪次方。預設值為 32

ppsrc

將主要輸入標記為預先處理的輸入,並啟用乾淨的來源輸入串流。這允許使用各種濾鏡對輸入進行預先處理,以協助度量計算,同時保持影格選擇的無損性。當設定為 1 時,第一個串流用於預先處理的輸入,第二個串流是乾淨的來源,從該來源中選取保留的影格。預設值為 0

chroma

設定是否在度量計算中考慮色度。預設值為 1

mixed

設定輸入是否僅部分包含要縮減取樣的內容。預設值為 false。如果啟用,視訊輸出串流將採用可變影格率。

39.60 deconvolve

使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 反褶積。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

平面

設定要處理的平面。

impulse

設定要處理的脈衝視訊影格,可以是 firstall。預設值為 all

noise

在進行除法運算時設定雜訊。預設值為 0.0000001。當寬度和高度不同且不是 2 的冪次方,或者如果卷積之前的串流有雜訊時很有用。

deconvolve 濾鏡也支援 framesync 選項。

39.61 dedot

減少視訊中的交叉亮度(點爬行)和交叉色彩(彩虹)。

它接受以下選項

m

設定操作模式。可以是 dotcrawl(用於減少交叉亮度)和/或 rainbows(用於減少交叉色彩)的組合。

lt

設定空間亮度閾值。值越低,交叉亮度的減少量越大。

tl

設定時間亮度容差。值越高,交叉亮度的減少量越大。

tc

設定色度時間變化的容差。值越高,交叉色彩的減少量越大。

ct

設定時間色度閾值。值越低,交叉色彩的減少量越大。

39.62 deflate

將放氣效果套用於視訊。

此濾鏡會考量僅低於像素的值,並將像素替換為局部 (3x3) 平均值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更,預設值為 65535。如果為 0,則平面將保持不變。

39.62.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.63 deflicker

移除時間影格亮度變化。

它接受以下選項

size, s

設定移動平均濾鏡大小(以影格為單位)。預設值為 5。允許範圍為 2 - 129。

mode, m

設定平均模式以平滑時間亮度變化。

可用的值為

am

算術平均值

gm

幾何平均值

hm

調和平均值

qm

二次平均值

cm

三次平均值

pm

冪平均值

median

中位數

bypass

實際上不修改影格。當只想取得元資料時很有用。

39.64 dejudder

移除部分交錯電視電影內容產生的抖動。

例如,pullup 濾鏡可能會引入抖動。如果原始來源是部分電視電影內容,則 pullup,dejudder 的輸出將具有可變影格率。可能會變更容器的記錄影格率。除了該變更之外,此濾鏡不會影響恆定影格率視訊。

此濾鏡中可用的選項是

cycle

指定抖動重複的視窗長度。

接受大於 1 的任何整數。有用的值為

4

如果原始影片是從 24 fps 電視電影轉換為 30 fps(電影到 NTSC)。

5

如果原始影片是從 25 fps 電視電影轉換為 30 fps(PAL 到 NTSC)。

20

如果是兩者的混合。

預設值為 ‘4’。

39.65 delogo

透過簡單地內插周圍的像素來抑制電視台徽標。只需設定一個覆蓋徽標的矩形,並觀看它消失(有時甚至會出現更醜陋的東西 - 您的結果可能會有所不同)。

它接受以下參數

x
y

指定徽標的左上角座標。它們必須被指定。

w
h

指定要清除的徽標寬度和高度。它們必須被指定。

show

設定為 1 時,會在螢幕上繪製一個綠色矩形,以簡化尋找正確的 xywh 參數。預設值為 0。

矩形繪製在最外層的像素上,這些像素將(部分)被內插值取代。此矩形外部緊鄰的像素值將用於計算矩形內部的內插像素值。

39.65.1 範例

  • 設定一個矩形,覆蓋左上角座標為 0,0 且大小為 100x77 的區域
    delogo=x=0:y=0:w=100:h=77
    

39.66 derain

透過套用基於卷積神經網路的去雨方法,移除輸入影像/視訊中的雨點。支援的模型

訓練和模型產生腳本皆在儲存庫 https://github.com/XueweiMeng/derain_filter.git 中提供。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

filter_type

指定要使用的濾鏡。此選項接受下列值

derain

去雨濾鏡。若要執行去雨濾鏡,您需要使用去雨模型。

dehaze

去霧濾鏡。若要執行去霧濾鏡,您需要使用去霧模型。

預設值為 ‘derain’。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受下列值

tensorflow

TensorFlow 後端。若要啟用此後端,您需要安裝 TensorFlow for C 函式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 設定 FFmpeg

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow 只能載入其格式的檔案。

若要取得完整功能(例如非同步執行),請使用 dnn_processing 濾鏡。

39.67 deshake

嘗試修正水平和/或垂直偏移中的小幅變更。此濾鏡有助於移除手持相機、碰撞三腳架、在車輛上移動等造成的相機震動。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

x
y
w
h

指定一個矩形區域,以限制運動向量的搜尋範圍。如果需要,可以將運動向量的搜尋限制在影格的矩形區域內,該區域由其左上角、寬度和高度定義。這些參數的含義與 drawbox 濾鏡相同,drawbox 濾鏡可用於視覺化邊界框的位置。

當影格內主體的同時移動可能會與運動向量搜尋混淆相機運動時,這很有用。

如果 xywh 中的任何一個或全部設定為 -1,則會使用完整影格。這允許稍後設定選項,而無需為運動向量搜尋指定邊界框。

預設值 - 搜尋整個影格。

rx
ry

指定 x 和 y 方向的最大移動範圍,範圍為 0-64 像素。預設值為 16。

edge

指定如何產生像素以填滿影格邊緣的空白。可用值為

blank, 0

在空白位置填寫零

original, 1

空白位置的原始影像

clamp, 2

空白位置的擠出邊緣值

mirror, 3

空白位置的鏡像邊緣

預設值為 ‘mirror’。

blocksize(區塊大小)

指定用於運動搜尋的區塊大小。範圍為 4-128 像素,預設值為 8。

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

指定區塊的對比度閾值。僅會考量對比度高於指定值(最暗和最亮像素之間的差異)的區塊。範圍為 1-255,預設值為 125。

search

指定搜尋策略。可用值為

exhaustive, 0

設定詳盡搜尋

less, 1

設定較不詳盡的搜尋。

預設值為 ‘exhaustive’。

filename

如果設定,則運動搜尋的詳細日誌會寫入指定的檔案。

39.68 despill

移除前景色彩中不需要的污染,這是由綠幕或藍幕的反光色彩引起的。

此濾波器接受以下選項

type

設定要使用的去溢色類型。

設定處理後訊號將被放大多少量。 預設值為 1。範圍介於 1 和 64 之間。

設定將如何產生溢色圖。

expand

設定要去除剩餘溢色的程度。

紅色

控制溢色區域中紅色的量。

綠色

控制溢色區域中綠色的量。綠幕應為 -1。

藍色

控制溢色區域中藍色的量。藍幕應為 -1。

brightness

控制溢色區域的亮度,同時保留色彩。

alpha

修改從產生的溢色圖產生的 Alpha 值。

39.68.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.69 detelecine

套用電視電影操作的精確反向操作。它需要使用 pattern 選項指定的預定義模式,該模式必須與傳遞給電視電影濾鏡的模式相同。

此濾波器接受以下選項

first_field
top, t

頂場優先

bottom, b

底場優先。預設值為 top

pattern

表示您要套用的下拉模式的數字字串。預設值為 23

start_frame

表示相對於電影電視掃描器圖案的第一個影格位置的數字。這用於串流被剪切的情況。預設值為 0

39.70 dilation

對影片套用膨脹效果。

此濾鏡將像素替換為局部 (3x3) 最大值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更,預設值為 65535。如果為 0,則平面將保持不變。

座標

指定要參考的像素的旗標。預設值為 255,即使用所有八個像素。

旗標對應到像這樣的局部 3x3 座標

1 2 3 4 5 6 7 8

39.70.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.71 displace

依照第二和第三個輸入串流指示位移像素。

它接受三個輸入串流並輸出一個串流,第一個輸入是來源,第二個和第三個輸入是位移圖。

第二個輸入指定沿 x 軸位移像素的量,而第三個輸入指定沿 y 軸位移像素的量。如果其中一個位移圖串流終止,將使用該位移圖的最後一個影格。

請注意,一旦生成位移圖,就可以重複使用。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

edge

設定超出範圍像素的位移行為。

可用的值為

blank

遺失的像素會被黑色像素取代。

smear

相鄰像素將擴散以取代遺失的像素。

wrap

超出範圍的像素會被包裝,使其指向另一側的像素。

mirror

超出範圍的像素將被鏡像像素取代。

預設值為 ‘smear’。

39.71.1 範例

  • 對 hd720 影片尺寸的 rgb 輸入新增波紋效果
    ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
    
  • 對 hd720 影片尺寸的 rgb 輸入新增波浪效果
    ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
    

39.72 dnn_classify

使用基於邊界框的深度神經網路進行分類。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,將會新增 tensorflow 後端。

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。

輸入

設定 dnn 網路的輸入名稱。

輸出

設定 dnn 網路的輸出名稱。

信賴度

設定信賴度閾值(預設值:0.5)。

標籤

設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,尾隨空格和空行會被跳過。第一行是標籤 ID 0 的名稱,第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 會被視為名稱。

backend_configs

設定要傳遞到後端的組態

對於 tensorflow 後端,您可以使用 sess_config 選項設定其組態,請使用 tools/python/tf_sess_config.py 來取得您系統的組態。

39.73 dnn_detect

使用深度神經網路進行物件偵測。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,將會新增 tensorflow 後端。

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。

輸入

設定 dnn 網路的輸入名稱。

輸出

設定 dnn 網路的輸出名稱。

信賴度

設定信賴度閾值(預設值:0.5)。

標籤

設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,尾隨空格和空行會被跳過。第一行是標籤 ID 0 的名稱(通常是 'background'),第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 會被視為名稱。

backend_configs

設定要傳遞到後端的組態。若要使用非同步執行,請設定 async(預設值:已設定)。如果後端不支援非同步,則回退到同步執行。

39.74 dnn_processing

使用深度神經網路進行影像處理。它與另一個濾鏡一起運作,該濾鏡將影格的像素格式轉換為 dnn 網路所需格式。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受下列值

tensorflow

TensorFlow 後端。若要啟用此後端,您需要安裝 TensorFlow for C 函式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 設定 FFmpeg

openvino

OpenVINO 後端。若要啟用此後端,您需要建置並安裝 OpenVINO for C 程式庫 (請參閱 https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md),並使用 --enable-libopenvino 組態 FFmpeg(如果標頭檔和程式庫未安裝到系統路徑中,可能需要 –extra-cflags=-I... –extra-ldflags=-L...)

torch

Libtorch 後端。若要啟用此後端,您需要建置並安裝 Libtroch for C++ 程式庫。請下載 cxx11 ABI 版本 (請參閱 https://pytorch.dev.org.tw/get-started/locally),並使用 --enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/ 組態 FFmpeg

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 和 Libtorch 後端只能載入其格式的檔案。

輸入

設定 dnn 網路的輸入名稱。

輸出

設定 dnn 網路的輸出名稱。

backend_configs

設定要傳遞到後端的組態。若要使用非同步執行,請設定 async(預設值:已設定)。如果後端不支援非同步,則回退到同步執行。

對於 tensorflow 後端,您可以使用 sess_config 選項設定其組態,請使用 tools/python/tf_sess_config.py 來取得您系統的 TensorFlow 後端組態。

39.74.1 範例

  • 使用 can.pb 移除 rgb24 影格中的雨點(請參閱 derain 濾鏡)
    ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
    
  • 使用 srcnn.pb 處理 yuv420p 影格的 Y 通道(請參閱 sr 濾鏡)(支援平面 YUV 格式)
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
    
  • 使用 espcn.pb 處理 Y 通道(請參閱 sr 濾鏡),這會變更 yuv420p 格式的影格大小(支援平面 YUV 格式),請使用 tools/python/tf_sess_config.py 來取得您系統的 TensorFlow 後端組態。
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
    

39.75 drawbox

在輸入影像上繪製彩色框。

它接受以下參數

x
y

指定框左上角座標的表達式。預設值為 0。

寬度, w
高度,h

指定框的寬度和高度的表達式;如果為 0,則它們會被解釋為輸入寬度和高度。預設值為 0。

顏色,c

指定要寫入的框的顏色。如需此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節。如果使用特殊值 invert,則框邊緣顏色與具有反轉亮度的影片相同。

粗細,t

設定框邊緣粗細的表達式。值 fill 將建立一個填滿的框。預設值為 3

請參閱下方接受的常數列表。

取代

如果輸入具有 alpha 值,則適用。值為 1 時,繪製框的像素將覆寫影片的顏色和 alpha 像素。預設值為 0,這會將框合成到輸入上,保持影片的 alpha 值不變。

xywh 以及 t 的參數是包含以下常數的表達式

dar

輸入顯示長寬比,與 (w / h) * sar 相同。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

in_h、ih
in_w、iw

輸入寬度和高度。

sar

輸入樣本長寬比。

x
y

框的繪製位置的 x 和 y 偏移座標。

w
h

繪製框的寬度和高度。

box_source

如果您想使用側數據偵測邊界框中的框數據,則可以將框來源設定為 side_data_detection_bboxes。

如果設定了 box_source,則 xywidthheight 將被忽略,並且仍然使用側數據偵測邊界框中的框數據。因此,如果您不確定框來源,請不要使用此參數。

t

繪製框的粗細。

這些常數允許 xywht 表達式互相參考,因此您可以例如指定 y=x/darh=w/dar

39.75.1 範例

  • 在輸入影像的邊緣周圍繪製黑色框
    drawbox
    
  • 繪製紅色且不透明度為 50% 的框
    drawbox=10:20:200:60:red@0.5
    

    先前的範例可以指定為

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 以粉紅色填滿框
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 繪製 2 像素紅色 2.40:1 遮罩
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

39.75.2 指令

此濾波器支援與選項相同的命令。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.76 drawgraph

使用輸入影片元數據繪製圖表。

它接受以下參數

m1

設定第一個影格元數據金鑰,將從該金鑰取得元數據值以繪製圖表。

fg1

設定第一個前景顏色表達式。

m2

設定第二個影格元數據金鑰,將從該金鑰取得元數據值以繪製圖表。

fg2

設定第二個前景顏色表達式。

m3

設定第三個影格元數據金鑰,將從該金鑰取得元數據值以繪製圖表。

fg3

設定第三個前景顏色表達式。

m4

設定第四個影格元數據金鑰,將從該金鑰取得元數據值以繪製圖表。

fg4

設定第四個前景顏色表達式。

min

設定元數據值的最小值。

max

設定元數據值的最大值。

bg

設定圖表背景顏色。預設值為白色。

level_in

設定圖表模式。

模式的可用值為

bar
dot
line

預設值為 line

slide

設定滑動模式。

滑動的可用值為

frame

當到達右邊界時繪製新影格。

replace

以新列取代舊列。

scroll

從右向左捲動。

rscroll

從左向右捲動。

picture

繪製單張圖片。

預設值為 frame

size

設定圖表影片的大小。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "影片大小" 章節。預設值為 900x256

速率,r

設定輸出影格率。預設值為 25

前景顏色表達式可以使用以下變數

MIN

元數據值的最小值。

MAX

元數據值的最大值。

VAL

目前的元數據金鑰值。

顏色定義為 0xAABBGGRR。

使用來自 signalstats 濾鏡的元數據的範例

signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255

使用來自 ebur128 濾鏡的元數據的範例

ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5

39.77 drawgrid

在輸入影像上繪製網格。

它接受以下參數

x
y

指定網格交點的某些點的座標的表達式(旨在設定偏移)。兩者預設值都為 0。

寬度, w
高度,h

指定網格單元格的寬度和高度的表達式,如果為 0,則它們會被解釋為輸入寬度和高度,分別減去 thickness,因此影像會被框住。預設值為 0。

顏色,c

指定網格的顏色。如需此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節。如果使用特殊值 invert,則網格顏色與具有反轉亮度的影片相同。

粗細,t

設定網格線粗細的表達式。預設值為 1

請參閱下方接受的常數列表。

取代

如果輸入具有 alpha 值,則適用。值為 1 時,繪製網格的像素將覆寫影片的顏色和 alpha 像素。預設值為 0,這會將網格合成到輸入上,保持影片的 alpha 值不變。

xywh 以及 t 的參數是包含以下常數的表達式

dar

輸入顯示長寬比,與 (w / h) * sar 相同。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

in_h、ih
in_w、iw

輸入網格單元格寬度和高度。

sar

輸入樣本長寬比。

x
y

網格交點的某些點的 x 和 y 座標(旨在設定偏移)。

w
h

繪製單元格的寬度和高度。

t

繪製單元格的粗細。

這些常數允許 xywht 表達式互相參考,因此您可以例如指定 y=x/darh=w/dar

39.77.1 範例

  • 繪製單元格為 100x100 像素、粗細為 2 像素、顏色為紅色且不透明度為 50% 的網格
    drawgrid=width=100:height=100:thickness=2:color=red@0.5
    
  • 繪製白色 3x3 網格,不透明度為 50%
    drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
    

39.77.2 指令

此濾波器支援與選項相同的命令。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.78 drawtext

使用 libfreetype 程式庫,在影片頂部繪製文字字串或來自指定檔案的文字。

若要啟用此濾鏡的編譯,您需要使用 --enable-libfreetype--enable-libharfbuzz 組態 FFmpeg。若要啟用預設字型回退和 font 選項,您需要使用 --enable-libfontconfig 組態 FFmpeg。若要啟用 text_shaping 選項,您需要使用 --enable-libfribidi 組態 FFmpeg。

39.78.1 語法

它接受以下參數

box

用於使用背景顏色在文字周圍繪製框。值必須為 1(啟用)或 0(停用)。box 的預設值為 0。

boxborderw

設定要使用 boxcolor 在框周圍繪製的邊框寬度。值必須使用以下格式之一指定

  • boxborderw=10 將所有邊框的寬度設定為 10
  • boxborderw=10|20 將頂部和底部邊框的寬度設定為 10,將左側和右側邊框的寬度設定為 20
  • boxborderw=10|20|30 將頂部邊框的寬度設定為 10,將底部邊框的寬度設定為 30,將左側和右側邊框的寬度設定為 20
  • boxborderw=10|20|30|40 將邊框寬度設定為 10(頂部)、20(右側)、30(底部)、40(左側)

boxborderw 的預設值為 "0"。

boxcolor

用於在文字周圍繪製框的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節

boxcolor 的預設值為 "白色"。

line_spacing

設定行距(以像素為單位)。line_spacing 的預設值為 0。

text_align

設定文字相對於框邊界的垂直和水平對齊方式。該值是旗標的組合,一個用於垂直對齊(T=頂部、M=中間、B=底部),另一個用於水平對齊(L=左側、C=中心、R=右側)。請注意,只有在左側水平對齊時才支援 Tab 字元。

y_align

指定 y 值所參考的內容。可能的值為

  • text 第一行文字的最高字形的頂部放置在 y
  • baseline 第一行文字的基線放置在 y
  • font 第一行文字的基線放置在 y 加上字型指標中定義的上升高度(以像素為單位)處

為了向後相容,y_align 的預設值為 "text"。

borderw

設定要使用 bordercolor 在文字周圍繪製的邊框寬度。borderw 的預設值為 0。

bordercolor

設定用於在文字周圍繪製邊框的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節

bordercolor 的預設值為 "黑色"。

expansion

選取 text 的展開方式。可以是 nonestrftime(已棄用)或 normal(預設值)。請參閱下方的 文字展開 章節以取得詳細資訊。

basetime

設定計數的開始時間。值以微秒為單位。僅在已棄用的 strftime 展開模式中套用。若要在正常展開模式中模擬,請使用 pts 函數,並將開始時間(以秒為單位)作為第二個引數提供。

fix_bounds

如果為 true,則檢查並修正文字座標以避免裁剪。

fontcolor

用於繪製字型的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節

fontcolor 的預設值為 "黑色"。

fontcolor_expr

字串,其展開方式與 text 相同,以取得動態 fontcolor 值。預設情況下,此選項的值為空,且不會處理。設定此選項時,它會覆寫 fontcolor 選項。

font

用於繪製文字的字型系列。預設值為 Sans。

fontfile

用於繪製文字的字型檔案。必須包含路徑。如果停用 fontconfig 支援,則此參數為必要參數。

alpha

繪製文字時套用 Alpha 混合。值可以是介於 0.0 和 1.0 之間的數字。表達式也接受相同的變數 x、y。預設值為 1。請參閱 fontcolor_expr

fontsize

用於繪製文字的字型大小。fontsize 的預設值為 16。

text_shaping

如果設定為 1,則嘗試在繪製文字之前對文字進行塑形(例如,反轉從右至左文字的順序並加入阿拉伯字元)。否則,僅完全按照給定的方式繪製文字。預設值為 1(如果支援)。

ft_load_flags

用於載入字型的旗標。

這些旗標對應 libfreetype 支援的對應旗標,並且是以下值的組合

預設
no_scale
no_hinting
render
no_bitmap
vertical_layout
force_autohint
crop_bitmap
pedantic
ignore_global_advance_width
no_recurse
ignore_transform
monochrome
linear_design
no_autohint

預設值為「default」。

如需更多資訊,請查閱 FT_LOAD_* libfreetype 旗標的文件。

shadowcolor

用於繪製文字陰影的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中 "(ffmpeg-utils)「Color」章節

shadowcolor 的預設值為「black」。

boxw

設定繪製於文字周圍方框的寬度。boxw 的預設值會自動計算以符合文字寬度。

boxh

設定繪製於文字周圍方框的高度。boxh 的預設值會自動計算以符合文字高度。

shadowx
shadowy

文字陰影位置相對於文字位置的 x 和 y 偏移量。它們可以是正值或負值。兩者的預設值皆為「0」。

start_number

n/frame_num 變數的起始影格編號。預設值為「0」。

tabsize

用於呈現 Tab 的空格數大小。預設值為 4。

timecode

設定以 "hh:mm:ss[:;.]ff" 格式表示的初始時間碼。它可以與文字參數一起使用或不使用。timecode_rate 選項必須指定。

timecode_rate, rate, r

設定時間碼影格率 (僅限時間碼)。數值將四捨五入至最接近的整數。最小值為「1」。影格丟失時間碼 (Drop-frame timecode) 支援影格率 30 和 60。

tc24hmax

若設定為 1,時間碼選項的輸出將在 24 小時後環繞。預設值為 0 (停用)。

text

要繪製的文字字串。文字必須是 UTF-8 編碼字元的序列。若未使用 textfile 參數指定檔案,則此參數為必要參數。

textfile

包含要繪製文字的文字檔案。文字必須是 UTF-8 編碼字元的序列。

若未使用 text 參數指定文字字串,則此參數為必要參數。

若同時指定 texttextfile,則會拋出錯誤。

text_source

如果您想要使用側資料 (side data) 偵測邊界框 (detection bboxes) 中的文字資料,則應將文字來源設定為 side_data_detection_bboxes。

若已設定文字來源,則 texttextfile 將被忽略,且仍會使用側資料偵測邊界框中的文字資料。因此,如果您不確定文字來源,請不要使用此參數。

reload

textfile 將在指定的影格間隔重新載入。請務必以原子方式更新 textfile,否則可能會部分讀取,甚至失敗。範圍為 0 到 INT_MAX。預設值為 0。

x
y

指定文字將在視訊影格中繪製位置的偏移量表達式。它們是相對於輸出影像的左上邊界。

xy 的預設值皆為「0」。

請參閱下方接受的常數和函數列表。

xy 的參數是包含以下常數和函數的表達式

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

line_h, lh

每行文字的高度

main_h, h, H

輸入高度

main_w, w, W

輸入寬度

max_glyph_a, ascent

從基準線到用於放置字形輪廓點的最高/上方網格坐標的最大距離,適用於所有呈現的字形。由於網格方向 Y 軸向上,因此為正值。

max_glyph_d, descent

從基準線到用於放置字形輪廓點的最低網格坐標的最大距離,適用於所有呈現的字形。由於網格方向 Y 軸向上,因此為負值。

max_glyph_h

最大字形高度,即呈現文字中包含的所有字形的最大高度,相當於 ascent - descent

max_glyph_w

最大字形寬度,即呈現文字中包含的所有字形的最大寬度

font_a

字體度量中定義的 ascent 大小

font_d

字體度量中定義的 descent 大小

top_a

第一行文字字形的最大上伸部 (ascender)

bottom_d

最後一行文字字形的最大下延部 (descender)

n

輸入影格編號,從 0 開始

rand(min, max)

返回介於 minmax 之間的隨機數

sar

輸入樣本長寬比。

t

以秒為單位表示的時間戳記,如果輸入時間戳記未知,則為 NAN

text_h, th

呈現文字的高度

text_w, tw

呈現文字的寬度

x
y

繪製文字的 x 和 y 偏移坐標。

這些參數允許 xy 表達式互相參照,因此您可以例如指定 y=x/dar

pict_type

目前影格圖片類型的單一字元描述。

pkt_pos

目前封包在輸入檔案或串流中的位置 (以位元組為單位,從輸入開始計算)。值 -1 表示此資訊不可用。

duration

目前封包的持續時間,以秒為單位。

pkt_size(封包大小)

目前封包的大小 (以位元組為單位)。

39.78.2 文字展開

expansion 設定為 strftime,則濾鏡會識別提供的文字中 strftime C 函數接受的序列,並據此展開它們。請查看 strftime 的文件。此功能已被棄用,取而代之的是使用 gmtimelocaltime 展開函數的 normal 展開。

expansion 設定為 none,則文字會逐字印出。

expansion 設定為 normal (預設值),則會使用以下展開機制。

反斜線字元 ‘\’ 後面跟隨任何字元,總是會展開為第二個字元。

%{...} 形式的序列會被展開。大括號之間的文字是函數名稱,可能後面跟隨以 ':' 分隔的參數。如果參數包含特殊字元或分隔符號 (':' 或 '}'),則應進行跳脫字元處理 (escape)。

請注意,它們可能也必須在濾鏡引數字串中作為 text 選項的值進行跳脫字元處理,以及在濾鏡圖描述中作為濾鏡引數進行跳脫字元處理,甚至可能也需要在 Shell 中進行跳脫字元處理,這會導致最多四層的跳脫字元處理;使用帶有 textfile 選項的文字檔案可以避免這些問題。

以下函數可用

expr, e

表達式評估結果。

它必須接受一個引數,指定要評估的表達式,該表達式接受與 xy 值相同的常數和函數。請注意,並非所有常數都應使用,例如在評估表達式時,文字大小是未知的,因此常數 text_wtext_h 將具有未定義的值。

expr_int_format, eif

評估表達式的值並以格式化的整數輸出。

第一個引數是要評估的表達式,與 expr 函數相同。第二個引數指定輸出格式。允許的值為 ‘x’、‘X’、‘d’ 和 ‘u’。它們的處理方式與 printf 函數完全相同。第三個參數是可選的,用於設定輸出所佔的位置數。它可以用於從左側添加零填充。

gmtime

濾鏡運行的時間,以 UTC 表示。它可以接受一個引數:strftime C 函數格式字串。格式字串已擴展以支援變數 %[1-6]N,該變數會印出秒的分數,並可選擇指定位數。

localtime

濾鏡運行的時間,以當地時區表示。它可以接受一個引數:strftime C 函數格式字串。格式字串已擴展以支援變數 %[1-6]N,該變數會印出秒的分數,並可選擇指定位數。

metadata

影格元數據。接受一個或兩個引數。

第一個引數是必要引數,用於指定元數據鍵。

第二個引數是可選引數,用於指定預設值,當找不到或元數據鍵為空時使用。

可用的元數據可以通過檢查執行 ffprobe -show_frames 印出的每個影格區段中以 TAG 開頭的條目來識別。

在導向 drawtext 濾鏡的濾鏡中產生的字串元數據也可用。

n, frame_num

影格編號,從 0 開始。

pict_type

目前圖片類型的單一字元描述。

pts

目前影格的時間戳記。它最多可以接受三個引數。

第一個引數是時間戳記的格式;預設為 flt,表示以秒為單位的十進制數字,精確到微秒;hms 代表格式化的 [-]HH:MM:SS.mmm 時間戳記,精確到毫秒。gmtime 代表格式化為 UTC 時間的影格時間戳記;localtime 代表格式化為當地時區時間的影格時間戳記。

第二個引數是添加到時間戳記的偏移量。

若格式設定為 hms,則可以提供第三個引數 24HH,以 24 小時格式 (00-23) 呈現格式化時間戳記的小時部分。

若格式設定為 localtimegmtime,則可以提供第三個引數:strftime C 函數格式字串。預設情況下,將使用 YYYY-MM-DD HH:MM:SS 格式。

39.78.3 指令

此濾鏡支援通過命令變更參數

reinit

變更現有的濾鏡參數。

引數的語法與濾鏡調用相同,例如:

fontsize=56:fontcolor=green:text='Hello World'

使用 sendcmd 的完整濾鏡調用如下所示

sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'

如果整個引數無法解析或應用為有效值,則濾鏡將繼續使用其現有參數。

以下選項也支援作為 命令

  • x
  • y
  • alpha
  • fontsize
  • fontcolor
  • boxcolor
  • bordercolor
  • shadowcolor
  • box
  • boxw
  • boxh
  • boxborderw
  • line_spacing
  • text_align
  • shadowx
  • shadowy
  • borderw

39.78.4 範例

  • 使用預設的可選參數值,以 FreeSerif 字體繪製「Test Text」。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
    
  • 以 FreeSerif 字體,大小 24,在位置 x=100 和 y=50 (從螢幕左上角算起) 繪製「Test Text」,文字為黃色,周圍有紅色方框。文字和方框的透明度均為 20%。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
              x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
    

    請注意,如果參數列表中未使用空格,則雙引號不是必要的。

  • 在視訊影格的中心顯示文字
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
    
  • 在隨機位置顯示文字,每 30 秒切換到新位置
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
    
  • 在視訊影格的最後一行顯示從右向左滑動的文字行。檔案 LONG_LINE 假設包含單行且沒有換行符號。
    drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
    
  • 在影格底部外顯示檔案 CREDITS 的內容並向上滾動。
    drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
    
  • 在輸入視訊的中心繪製單個綠色字母「g」。字形基準線放置在螢幕高度的一半處。
    drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
    
  • 每 3 秒顯示文字 1 秒
    drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
    
  • 使用 fontconfig 設定字體。請注意,冒號需要跳脫字元處理。
    drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
    
  • 繪製「Test Text」,字體大小取決於視訊高度。
    drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
    
  • 印出即時編碼的日期 (請參閱 strftime C 函數的文件)
    drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}'
    
  • 顯示文字淡入和淡出 (出現/消失)
    #!/bin/sh
    DS=1.0 # display start
    DE=10.0 # display end
    FID=1.5 # fade in duration
    FOD=5 # fade out duration
    ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"
    
  • 水平對齊多個單獨的文字。請注意,max_glyph_afontsize 值包含在 y 偏移量中。
    drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
    drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
    
  • 如果存在,則將特殊的 lavf.image2dec.source_basename 元數據繪製到每個影格上。否則,繪製字串「NA」。請注意,image2 解多工器必須具有選項 -export_path_metadata 1,特殊元數據欄位才能用於濾鏡。
    drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
    

有關 libfreetype 的更多資訊,請查看:http://www.freetype.org/

有關 fontconfig 的更多資訊,請查看:http://freedesktop.org/software/fontconfig/fontconfig-user.html

有關 libfribidi 的更多資訊,請查看:http://fribidi.org/

有關 libharfbuzz 的更多資訊,請查看:https://github.com/harfbuzz/harfbuzz

39.79 edgedetect

偵測並繪製邊緣。此濾鏡使用 Canny 邊緣偵測演算法。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定 Canny 邊緣檢測演算法使用的低和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high

low 的預設值為 20/255high 的預設值為 50/255

level_in

定義繪圖模式。

wires

在黑色背景上繪製白色/灰色線條。

colormix

混合顏色以創建繪畫/卡通效果。

canny

在所有選定的平面上應用 Canny 邊緣偵測器。

預設值為 wires

平面

選擇要過濾的平面。預設情況下,所有可用的平面都會被過濾。

39.79.1 範例

  • 使用自訂遲滯閾值 (hysteresis thresholding) 值的標準邊緣偵測
    edgedetect=low=0.1:high=0.4
    
  • 無閾值繪畫效果
    edgedetect=mode=colormix:high=0
    

39.80 elbg

使用 ELBG (增強型 LBG) 演算法應用色調分離效果。

對於每個輸入影像,濾鏡將根據碼書長度 (即不同輸出顏色的數量) 計算從輸入到輸出的最佳映射。

此濾鏡接受以下選項。

codebook_length, l

設定碼書長度。該值必須為正整數,表示不同輸出顏色的數量。預設值為 256。

nb_steps, n

設定用於計算最佳映射的最大迭代次數。值越高,結果越好,計算時間也越長。預設值為 1。

seed, s

設定隨機種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡最大努力使用良好的隨機種子。

pal8

設定 pal8 輸出像素格式。此選項不適用於碼書長度大於 256 的情況。預設為停用。

use_alpha

在量化計算中包含 alpha 值。允許創建具有多個 alpha 平滑混合的調色盤輸出影像 (例如 PNG8)。

39.81 entropy

測量視訊影格顏色通道直方圖中的灰階熵。

它接受以下參數

level_in

可以是 normaldiff。預設值為 normal

diff 模式測量直方圖增量值的熵,即相鄰直方圖值之間的絕對差異。

39.82 epx

應用 EPX 放大濾鏡,該濾鏡專為像素藝術而設計。

它接受以下選項

n

設定縮放維度:2 代表 2xEPX3 代表 3xEPX。預設值為 3

39.83 eq

設定亮度、對比度、飽和度和近似伽瑪調整。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

設定對比度表達式。數值必須為介於 -1000.01000.0 之間的浮點數值。預設值為 "1"。

brightness

設定亮度表達式。數值必須為介於 -1.01.0 之間的浮點數值。預設值為 "0"。

saturation

設定飽和度表達式。數值必須為介於 0.03.0 之間的浮點數。預設值為 "1"。

gamma

設定伽瑪表達式。數值必須為介於 0.110.0 之間的浮點數。預設值為 "1"。

gamma_r

設定紅色伽瑪表達式。數值必須為介於 0.110.0 之間的浮點數。預設值為 "1"。

gamma_g

設定綠色伽瑪表達式。數值必須為介於 0.110.0 之間的浮點數。預設值為 "1"。

gamma_b

設定藍色伽瑪表達式。數值必須為介於 0.110.0 之間的浮點數。預設值為 "1"。

gamma_weight

設定伽瑪權重表達式。它可以用於減少高伽瑪值對圖像亮區的影響,例如防止它們過度放大變成純白色。數值必須為介於 0.01.0 之間的浮點數。0.0 的值會完全降低伽瑪校正,而 1.0 則保持其完整強度。預設值為 "1"。

eval

設定何時評估亮度、對比度、飽和度和伽瑪表達式。

它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個輸入幀評估表達式

預設值為 ‘init’。

表達式接受以下參數

n

輸入幀的幀計數,從 0 開始

pos

輸入檔案中對應封包的位元組位置,如果未指定則為 NAN;已棄用,請勿使用

r

輸入影片的幀率,如果輸入幀率未知則為 NAN

t

以秒為單位表示的時間戳記,如果輸入時間戳記未知,則為 NAN

39.83.1 指令

濾鏡支援以下命令

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

設定對比度表達式。

brightness

設定亮度表達式。

saturation

設定飽和度表達式。

gamma

設定伽瑪表達式。

gamma_r

設定 gamma_r 表達式。

gamma_g

設定 gamma_g 表達式。

gamma_b

設定 gamma_b 表達式。

gamma_weight

設定 gamma_weight 表達式。

命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.84 erosion

將侵蝕效果應用於影片。

此濾鏡將像素替換為局部 (3x3) 最小值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更,預設值為 65535。如果為 0,則平面將保持不變。

座標

指定要參考的像素的旗標。預設值為 255,即使用所有八個像素。

旗標對應到像這樣的局部 3x3 座標

1 2 3 4 5 6 7 8

39.84.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.85 estdif

將輸入影片解交錯 ("estdif" 代表 "邊緣斜率追蹤解交錯濾鏡")。

僅空間濾鏡,使用邊緣斜率追蹤演算法來內插遺失的線條。它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

frame

為每個影格輸出一個影格。

field

為每個圖場輸出一個影格。

預設值為 field

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

tff

假設頂圖場優先。

bff

假設底圖場優先。

auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

all

對所有影格進行去交錯處理。

interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

rslope

指定邊緣斜率追蹤的搜尋半徑。預設值為 1。允許範圍為 1 到 15。

redge

指定最佳邊緣匹配的搜尋半徑。預設值為 2。允許範圍為 0 到 15。

ecost

指定邊緣匹配的邊緣成本。預設值為 2。允許範圍為 0 到 50。

mcost

指定邊緣匹配的中間成本。預設值為 1。允許範圍為 0 到 50。

dcost

指定邊緣匹配的距離成本。預設值為 1。允許範圍為 0 到 50。

interp

指定使用的內插法。預設為 4 點內插法。它接受以下其中一個值

2p

兩點內插法。

4p

四點內插法。

6p

六點內插法。

39.85.1 指令

此濾鏡支援與選項相同的 commands

39.86 exposure

調整影片串流的曝光。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

exposure

設定曝光校正值,單位為 EV。允許範圍為 -3.0 到 3.0 EV。預設值為 0 EV。

black

設定黑階校正。允許範圍為 -1.0 到 1.0。預設值為 0。

39.86.1 指令

此濾鏡支援與選項相同的 commands

39.87 extractplanes

從輸入影片串流中提取色彩通道分量到獨立的灰階影片串流。

此濾波器接受以下選項

平面

設定要提取的平面。

可用的平面值為

y
u
v
a
r
g
b

選擇輸入中不可用的平面將導致錯誤。這表示您不能同時選擇 rgb 平面和 yuv 平面。

39.87.1 範例

  • 從輸入影片幀中提取亮度 (luma)、u 和 v 色彩通道分量到 3 個灰階輸出
    ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
    

39.88 fade

將淡入/淡出效果應用於輸入影片。

它接受以下參數

type, t

效果類型可以是 "in" 代表淡入,或 "out" 代表淡出效果。預設為 in

start_frame, s

指定開始應用淡化效果的幀編號。預設值為 0。

nb_frames, n

淡化效果持續的幀數。在淡入效果結束時,輸出影片將具有與輸入影片相同的強度。在淡出轉場結束時,輸出影片將填充選定的 color。預設值為 25。

alpha

如果設定為 1,則僅淡化 alpha 通道(如果輸入中存在)。預設值為 0。

start_time, st

指定開始應用淡化效果的幀時間戳記(以秒為單位)。如果同時指定了 start_frame 和 start_time,則淡化將從後者開始。預設值為 0。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

淡化效果必須持續的秒數。在淡入效果結束時,輸出影片將具有與輸入影片相同的強度;在淡出轉場結束時,輸出影片將填充選定的 color。如果同時指定了 duration 和 nb_frames,則使用 duration。預設值為 0(預設使用 nb_frames)。

顏色,c

指定淡化的顏色。預設為 "black"。

39.88.1 範例

  • 淡入影片的前 30 幀
    fade=in:0:30
    

    上述命令等效於

    fade=t=in:s=0:n=30
    
  • 淡出 200 幀影片的最後 45 幀
    fade=out:155:45
    fade=type=out:start_frame=155:nb_frames=45
    
  • 淡入 1000 幀影片的前 25 幀,並淡出最後 25 幀
    fade=in:0:25, fade=out:975:25
    
  • 使前 5 幀為黃色,然後從第 5-24 幀淡入
    fade=in:5:20:color=yellow
    
  • 在影片的前 25 幀上淡入 alpha
    fade=in:0:25:alpha=1
    
  • 使前 5.5 秒為黑色,然後淡入 0.5 秒
    fade=t=in:st=5.5:d=0.5
    

39.89 feedback

應用回饋影片濾鏡。

此濾鏡將裁剪後的輸入幀傳遞到第二個輸出。從那裡,它可以與其他影片濾鏡一起過濾。在濾鏡從第二個輸入接收幀後,該幀會與來自第一個輸入的原始幀組合在一起,並傳遞到第一個輸出。

典型的用法是僅過濾幀的一部分。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

x
y

設定左上角裁剪位置。

w
h

設定裁剪尺寸。

39.89.1 範例

  • 僅使用 gblur 濾鏡模糊影片幀左上角 100x100 的矩形部分。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
    
  • 使用 drawbox 濾鏡在影片幀左上角 100x100 的部分繪製黑色方塊。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
    
  • 使用 pixelize 濾鏡像素化影片幀 100x100 的矩形部分。
    [in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
    

39.90 fftdnoiz

使用 3D FFT(頻域濾波)對幀進行降噪。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sigma

設定雜訊 sigma 常數。這設定降噪強度。預設值為 1。允許範圍為 0 到 30。在高 sigma 值和低重疊率下使用可能會產生區塊效應。

amount

設定降噪量。預設情況下,所有檢測到的雜訊都會減少。預設值為 1。允許範圍為 0 到 1。

block

設定區塊大小(以像素為單位),預設為 32,範圍為 8 到 256。

overlap

設定區塊重疊率。預設為 0.5。允許範圍為 0.2 到 0.8。

method

設定降噪方法。預設為 wiener,也可以是 hard

prev

設定用於降噪的先前幀數。預設設定為 0。

next

設定用於降噪的後續幀數。預設設定為 0。

平面

設定要過濾的平面,預設情況下,除了 alpha 之外,所有可用的平面都會被過濾。

39.91 fftfilt

將任意表達式應用於頻域中的樣本

dc_Y

調整影像亮度平面的 dc 值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

dc_U

調整影像第一個色度平面的 dc 值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

dc_V

調整影像第二個色度平面的 dc 值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

weight_Y

設定亮度平面的頻域權重表達式。

weight_U

設定第一個色度平面的頻域權重表達式。

weight_V

設定第二個色度平面的頻域權重表達式。

eval

設定何時評估表達式。

它接受以下值

init

僅在濾鏡初始化期間評估表達式一次。

frame

為每個輸入幀評估表達式。

預設值為 ‘init’。

濾鏡接受以下變數

X
Y

當前樣本的座標。

W
H

影像的寬度和高度。

N

輸入幀的編號,從 0 開始。

WS
HS

用於水平和垂直處理的 FFT 陣列大小。

39.91.1 範例

  • 高通
    fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
    
  • 低通
    fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
    
  • 銳化
    fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
    
  • 模糊
    fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
    

39.92 field

使用步幅運算從交錯影像中提取單個場,以避免浪費 CPU 時間。輸出幀標記為非交錯。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

type

指定要提取頂場(如果值為 0top)還是底場(如果值為 1bottom)。

39.93 fieldhint

透過從提示檔案提供的數字周圍幀複製頂場和底場來建立新幀。

hint

設定包含提示的檔案:絕對/相對幀編號。

剪輯片段中的每個幀必須有一行。每行必須包含兩個以逗號分隔的數字,可選擇後跟 -+。檔案每行提供的數字不能超出 [N-1, N+1] 範圍(其中 N 是 absolute 模式的當前幀編號)或 [-1, 1] 範圍(對於 relative 模式)。第一個數字表示從哪個幀擷取頂場,第二個數字表示從哪個幀擷取底場。

如果可選地後跟 +,則輸出幀將標記為交錯;否則,如果後跟 -,則輸出幀將標記為漸進式;否則,它將標記為與輸入幀相同。如果可選地後跟 t,則輸出幀將僅使用頂場;或者在 b 的情況下,它將僅使用底場。如果行以 #; 開頭,則會跳過該行。

level_in

可以是項目 absoluterelativepattern。預設為 absolutepattern 模式與 relative 模式相同,不同之處在於,如果檔案的最後一個條目之後還有更多幀要處理,則會尋找回到開頭。

relative 模式的 hint 檔案前幾行的範例

0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -

39.94 fieldmatch

用於反向電視電影的場景匹配濾鏡。它旨在從電視電影串流中重建漸進式幀。此濾鏡不會丟棄重複的幀,因此為了實現完整的反向電視電影,fieldmatch 需要後跟一個抽取濾鏡,例如濾鏡圖中的 decimate

場景匹配和抽取的分離主要是因為可以在兩者之間插入一個解交錯濾鏡回退。如果來源混合了電視電影和真實交錯內容,fieldmatch 將無法為交錯部分匹配場景。但是這些剩餘的梳狀幀將被標記為交錯,因此可以在抽取之前由後續濾鏡(例如 yadif)進行解交錯。

除了各種配置選項之外,fieldmatch 還可以採用可選的第二個串流,透過 ppsrc 選項啟用。如果啟用,幀重建將基於來自此第二個串流的場景和幀。這允許預先處理第一個輸入,以幫助濾鏡的各種演算法,同時保持輸出無損(假設場景已正確匹配)。通常,場景感知降噪器或亮度/對比度調整可能會有所幫助。

請注意,此濾鏡使用與 TIVTC/TFM (AviSynth 專案) 和 VIVTC/VFM (VapourSynth 專案) 相同的演算法。後者是 TFM 的輕量級克隆,fieldmatch 基於此克隆。雖然語義和用法非常接近,但某些行為和選項名稱可能會有所不同。

decimate 濾鏡目前僅適用於恆定幀率輸入。如果您的輸入混合了電視電影 (30fps) 和漸進式內容(幀率較低,例如 24fps),請使用以下濾鏡鏈來產生必要的 cfr 串流:dejudder,fps=30000/1001,fieldmatch,decimate

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

以下是接受選項的描述。

指定輸入串流的假定場序。可用值為

auto

自動偵測奇偶性(使用 FFmpeg 的內部奇偶性值)。

bff

假定底場優先。

tff

假定頂場優先。

請注意,有時建議不要信任串流宣告的奇偶性。

預設值為 auto

level_in

設定要使用的匹配模式或策略。pc 模式是最安全的,因為它不會冒著在可能的情況下因重複幀而產生抖動的風險,但是如果存在不良編輯或混合場景,則在可能實際存在良好匹配的情況下,最終將輸出梳狀幀。另一方面,pcn_ub 模式在產生抖動方面風險最高,但如果存在良好幀,則幾乎總是能找到。其他值都介於 pcpcn_ub 之間,在冒著抖動風險和產生重複幀與在具有不良編輯、孤立場景、混合場景等的部分中尋找良好匹配之間。

關於 p/c/n/u/b 的更多詳細資訊,請參閱 p/c/n/u/b 意義 章節。

可用的值為

pc

雙向匹配 (p/c)

pc_n

雙向匹配,如果仍然是梳狀,則嘗試第三個匹配 (p/c + n)

pc_u

雙向匹配,如果仍然是梳狀,則嘗試第三個匹配(相同順序)(p/c + u)

pc_n_ub

雙向匹配,如果仍然是梳狀,則嘗試第三個匹配,如果仍然是梳狀,則嘗試第四個/第五個匹配 (p/c + n + u/b)

pcn

三向匹配 (p/c/n)

pcn_ub

三向匹配,如果所有 3 個原始匹配都被檢測為梳狀,則嘗試第四個/第五個匹配 (p/c/n + u/b)

結尾的括號表示在假設 order=tff(且 fieldautotop)的情況下,該模式將使用的匹配項。

就速度而言,pc 模式是最快的,而 pcn_ub 模式是最慢的。

預設值為 pc_n

ppsrc

將主輸入串流標記為預先處理的輸入,並啟用輔助輸入串流作為乾淨的來源以從中選取場景。請參閱濾鏡簡介以了解更多詳細資訊。它類似於 VFM/TFM 中的 clip2 功能。

預設值為 0(停用)。

field

設定要從哪個場景開始匹配。建議將此值設定為與 order 相同的值,除非您在使用該設定時遇到匹配失敗。在某些情況下,變更用於匹配的場景可能會對匹配效能產生重大影響。可用值為

auto

自動(與 order 相同的值)。

bottom

從底場匹配。

top

從頂場匹配。

預設值為 auto

mchroma

設定是否在比對時包含彩度資訊。在大多數情況下,建議保持啟用此設定。只有在您的影片片段有嚴重的彩度問題,例如嚴重的彩虹紋或其他失真時,才應將此設定設為 0。將此設定設為 0 也可以加快速度,但會犧牲一些準確性。

預設值為 1

y0
y1

這些定義了一個排除頻帶,將 y0y1 之間的掃描線排除在場景比對決策之外。排除頻帶可用於忽略字幕、標誌或其他可能干擾比對的內容。y0 設定起始掃描線,而 y1 設定結束線;介於 y0y1 之間的所有線條(包括 y0y1)都將被忽略。將 y0y1 設定為相同的值將停用此功能。y0y1 預設值為 0

scthresh

設定場景變換偵測的閾值,以亮度平面的最大變化的百分比表示。良好的數值範圍為 [8.0, 14.0]。場景變換偵測僅在 combmatch=sc 的情況下相關。scthresh 的範圍為 [0.0, 100.0]

預設值為 12.0

combmatch

combatch 不是 none 時,fieldmatch 將在決定使用哪個比對作為最終比對時,將梳狀 (combed) 分數納入考量。可用值為

none

不根據梳狀分數進行最終比對。

sc

僅在偵測到場景變換時才使用梳狀分數。

full

始終使用梳狀分數。

預設值為 sc

combdbg

強制 fieldmatch 計算某些比對的梳狀指標並列印出來。此設定在 TFM/VFM 術語中稱為 micout。可用值為

none

不強制計算。

pcn

強制 p/c/n 計算。

pcnub

強制 p/c/n/u/b 計算。

預設值為 none

cthresh

這是用於梳狀畫面偵測的區域梳狀閾值。這基本上控制了梳狀紋理必須多麼「強烈」或「明顯」才能被偵測到。較大的值表示梳狀紋理必須更明顯,而較小的值表示梳狀紋理可以較不明顯或微弱,但仍然可以被偵測到。有效設定範圍從 -1(每個像素都將被偵測為梳狀)到 255(沒有像素會被偵測為梳狀)。這基本上是一個像素差異值。良好的範圍是 [8, 12]

預設值為 9

chroma

設定在梳狀畫面決策中是否考慮彩度。只有在您的來源有彩度問題(彩虹紋等)導致啟用彩度時梳狀畫面偵測出現問題,才停用此設定。實際上,使用 chroma=0 通常更可靠,除非來源中只有彩度梳狀紋理的情況。

預設值為 0

blockx
blocky

分別設定用於梳狀畫面偵測的視窗的 x 軸和 y 軸大小。這與在 blockyblockx 大小的區塊中,需要偵測到多少 combpel 像素才能將畫面宣告為梳狀畫面有關。有關更多資訊,請參閱 combpel 參數描述。可能的值是任何 2 的冪,從 4 開始,一直到 512。

預設值為 16

combpel

在畫面上任何 blockyblockx 大小的區塊內,被偵測為梳狀的像素數量,以將該畫面偵測為梳狀畫面。雖然 cthresh 控制梳狀紋理必須多麼「明顯」,但此設定控制在畫面上任何局部區域(由 blockxblocky 設定定義的視窗)中必須有多少梳狀紋理。最小值為 0,最大值為 blocky x blockx(在這種情況下,永遠不會偵測到梳狀畫面)。此設定在 TFM/VFM 術語中稱為 MI

預設值為 80

39.94.1 p/c/n/u/b 意義

39.94.1.1 p/c/n

我們假設以下循序掃描電視電影訊號流 (telecined stream)

Top fields:     1 2 2 3 4
Bottom fields:  1 2 3 4 4

數字對應於場景相關的漸進式畫面。在這裡,前兩個畫面是漸進式的,第三個和第四個是梳狀的,依此類推。

fieldmatch 配置為從底部場景進行比對 (field=bottom) 時,輸入訊號流會轉換成這樣

Input stream:
                T     1 2 2 3 4
                B     1 2 3 4 4   <-- matching reference

Matches:              c c n n c

Output stream:
                T     1 2 3 4 4
                B     1 2 3 4 4

由於場景比對的結果,我們可以看見某些畫面被複製了。為了執行完整的反向電視電影處理 (inverse telecine),您需要在此操作之後依賴抽取 (decimation) 濾鏡。例如,請參閱 decimate 濾鏡。

現在從頂部場景進行比對 (field=top) 的相同操作看起來像這樣

Input stream:
                T     1 2 2 3 4   <-- matching reference
                B     1 2 3 4 4

Matches:              c c p p c

Output stream:
                T     1 2 2 3 4
                B     1 2 2 3 4

在這些範例中,我們可以看見 pcn 的含義;基本上,它們指的是相反同位 (parity) 的畫面和場景

  • p 比對前一個畫面中相反同位的場景
  • c 比對目前畫面中相反同位的場景
  • n 比對下一個畫面中相反同位的場景

39.94.1.2 u/b

ub 比對在某種意義上來說比較特殊,因為它們從相反的同位旗標進行比對。在以下範例中,我們假設目前正在比對第二個畫面(頂部:2,底部:2)。根據比對結果,一個 'x' 被放置在每個比對到的場景的上方和下方。

使用底部比對 (field=bottom)

Match:           c         p           n          b          u

                 x       x               x        x          x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x         x           x        x              x

Output frames:
                 2          1          2          2          2
                 2          2          2          1          3

使用頂部比對 (field=top)

Match:           c         p           n          b          u

                 x         x           x        x              x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x       x               x        x          x

Output frames:
                 2          2          2          1          2
                 2          1          3          2          2

39.94.2 範例

頂部場景優先電視電影訊號流的簡單 IVTC (反向電視電影處理)

fieldmatch=order=tff:combmatch=none, decimate

進階 IVTC,對於仍然是梳狀畫面的情況,則回退到 yadif

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

39.95 fieldorder

轉換輸入視訊的場景順序。

它接受以下參數

以下是接受選項的描述。

輸出場景順序。有效值為 tff(頂部場景優先)或 bff(底部場景優先)。

預設值為 ‘tff’。

轉換是通過將圖片內容向上或向下移動一行,並用適當的圖片內容填充剩餘行來完成的。此方法與大多數廣播場景順序轉換器一致。

如果輸入視訊未標記為交錯式 (interlaced),或者已經標記為所需的輸出場景順序,則此濾鏡不會更改輸入視訊。

當轉換為或從 PAL DV 素材(底部場景優先)時,它非常有用。

例如

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

39.96 fillborders

填充輸入視訊的邊框,而不更改視訊串流尺寸。有時視訊的四個邊緣可能會有雜訊,您可能不想裁剪視訊輸入以保持尺寸為某個數字的倍數。

此濾波器接受以下選項

left (左)

從左邊框填充的像素數。

right (右)

從右邊框填充的像素數。

top (上)

從頂部邊框填充的像素數。

bottom (下)

從底部邊框填充的像素數。

level_in

設定填充模式。

它接受以下值

smear

使用最外層的像素填充像素

mirror

使用鏡像 (半樣本對稱) 填充像素

fixed

使用常數值填充像素

reflect

使用反射 (全樣本對稱) 填充像素

wrap

使用環繞 (wrapping) 填充像素

fade’ (淡化)

將像素淡化為常數值

margins’ (邊距)

使用邊框附近像素的加權平均值填充頂部和底部的像素

預設值為 smear (塗抹)。

color

設定固定或淡化模式下像素的顏色。預設值為 black (黑色)。

39.96.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.97 find_rect

在輸入視訊中尋找矩形物件。

要搜尋的物件必須指定為灰階 8 位元影像,並使用 object 選項指定。

對於每個可能的比對,都會計算一個分數。如果分數達到指定的閾值,則物件被視為已找到。

如果輸入視訊包含物件的多個實例,則濾鏡只會找到其中一個。

當找到物件時,會在比對的畫格中設定以下中繼資料條目

lavfi.rect.w

物件的寬度

lavfi.rect.h

物件的高度

lavfi.rect.x

物件的 x 位置

lavfi.rect.y

物件的 y 位置

lavfi.rect.score

找到物件的比對分數

它接受以下選項

object

物件影像的檔案路徑,需要為灰階 8 位元。

threshold

偵測閾值,表示為 0-1 範圍內的十進制數字。

閾值 0.01 表示僅精確比對,閾值 0.99 表示幾乎所有內容都比對。

預設值為 0.5。

mipmaps (多層次貼圖)

多層次貼圖的數量,預設值為 3。

xmin, ymin, xmax, ymax

指定要搜尋的矩形區域。

discard (捨棄)

捨棄未偵測到物件的畫格。預設為停用。

39.97.1 範例

  • 使用 ffmpeg 通過給定視訊的提供的影像來覆蓋矩形物件
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    
  • 使用 ffprobe 尋找每個畫格中物件的位置,並將其寫入日誌檔
    ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \
      -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \
      -of csv -o find_rect.csv
    

39.98 floodfill

使用另一個值填充具有相同像素組件值的區域。

它接受以下選項

x

設定像素 x 座標。

y

設定像素 y 座標。

s0

設定來源 #0 組件值。

s1

設定來源 #1 組件值。

s2

設定來源 #2 組件值。

s3

設定來源 #3 組件值。

d0

設定目的地 #0 組件值。

d1

設定目的地 #1 組件值。

d2

設定目的地 #2 組件值。

d3

設定目的地 #3 組件值。

39.99 format

將輸入視訊轉換為指定的像素格式之一。Libavfilter 將嘗試選擇一個適合作為下一個濾鏡輸入的格式。

它接受以下參數

pix_fmts

以 ‘|’ 分隔的像素格式名稱列表,例如 "pix_fmts=yuv420p|monow|rgb24"。

color_spaces

以 ‘|’ 分隔的色彩空間名稱列表,例如 "color_spaces=bt709|bt470bg|bt2020nc"。

color_ranges

以 ‘|’ 分隔的色彩範圍名稱列表,例如 "color_spaces=tv|pc"。

39.99.1 範例

  • 將輸入視訊轉換為 yuv420p 格式
    format=pix_fmts=yuv420p
    

    將輸入視訊轉換為列表中的任何格式

    format=pix_fmts=yuv420p|yuv444p|yuv410p
    

39.100 fps

通過複製或丟棄畫格,將視訊轉換為指定的恆定幀率。

它接受以下參數

fps (幀率)

所需的輸出幀率。它接受包含以下常數的表達式

source_fps’ (來源幀率)

輸入的幀率

ntsc

NTSC 幀率,為 30000/1001

pal

PAL 幀率,為 25.0

film

Film (電影) 幀率,為 24.0

ntsc_film’ (NTSC 電影)

NTSC 電影幀率,為 24000/1001

預設值為 25

start_time

假設第一個 PTS (展示時間戳記) 應為給定的值 (以秒為單位)。這允許在串流開始時進行填充/修剪。預設情況下,不會對第一個畫面的預期 PTS 做出假設,因此不會進行填充或修剪。例如,如果視訊串流在音訊串流之後開始,則可以將其設定為 0,以使用第一個畫面的重複影格填充開頭,或修剪任何具有負 PTS 的畫格。

捨入

時間戳記 (PTS) 四捨五入方法。

可能的值為

zero (零)

朝向 0 四捨五入

inf (無限大)

遠離 0 四捨五入

down (向下)

朝向負無限大四捨五入

up (向上)

朝向正無限大四捨五入

near (最近)

四捨五入到最近的值

預設值為 near (最近)。

eof_action

讀取最後一個畫格時執行的動作。

可能的值為

捨入

使用與其他畫格相同的時間戳記四捨五入方法。

pass

如果尚未達到輸入持續時間,則傳遞最後一個畫格。

預設值為 round (四捨五入)。

或者,選項可以指定為扁平字串:fps[:start_time[:round]]。

另請參閱 setpts 濾鏡。

39.100.1 範例

  • 將 fps 設定為 25 的典型用法
    fps=fps=25
    
  • 使用縮寫和四捨五入方法 (round to nearest),將 fps 設定為 24
    fps=fps=film:round=near
    

39.101 framepack

將兩個不同的視訊串流打包成一個立體視訊,並在支援的編解碼器上設定正確的中繼資料。兩個視圖應具有相同的大小和幀率,並且處理將在較短的視訊結束時停止。請注意,您可以使用 scalefps 濾鏡方便地調整視圖屬性。

它接受以下參數

格式

所需的打包格式。支援的值為

sbs (並排)

視圖彼此相鄰(預設)。

tab (上下)

視圖在彼此之上。

lines (線)

視圖按行打包。

columns (列)

視圖按列打包。

frameseq (畫格序列)

視圖在時間上交錯。

一些範例

# Convert left and right views into a frame-sequential video
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT

# Convert views into a side-by-side video with the same output resolution as the input
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT

39.102 framerate

通過從來源畫格插值新的視訊輸出畫格來更改幀率。

此濾鏡並非設計為與交錯式媒體正確運作。如果您希望更改交錯式媒體的幀率,則需要在此濾鏡之前進行反交錯,並在此濾鏡之後重新交錯。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

fps (幀率)

指定每秒輸出畫格數。此選項也可以單獨指定為一個值。預設值為 50

interp_start (插值開始)

指定一個範圍的開始位置,在此範圍內,輸出畫格將創建為兩個畫格的線性插值。範圍為 [0-255],預設值為 15

interp_end (插值結束)

指定一個範圍的結束位置,在此範圍內,輸出畫格將創建為兩個畫格的線性插值。範圍為 [0-255],預設值為 240

scene

指定場景變換被偵測到的級別,值介於 0 和 100 之間,以指示新場景;較低的值反映當前畫格引入新場景的可能性較低,而較高的值表示當前畫格更可能是新場景。預設值為 8.2

flags

指定影響濾鏡過程的旗標。

flags 的可用值為

scene_change_detect, scd (場景變換偵測)

使用選項 scene 的值啟用場景變換偵測。預設情況下啟用此旗標。

39.103 framestep

每 N 個畫格選擇一個畫格。

此濾鏡接受以下選項

step (步進)

step 個畫格選擇一個畫格。允許值為大於 0 的正整數。預設值為 1

39.104 freezedetect

偵測靜止視訊。

當偵測到輸入視訊在指定的持續時間內內容沒有顯著變化時,此濾鏡會記錄訊息並設定畫格中繼資料。視訊靜止偵測計算視訊畫格所有組件的平均絕對差值,並將其與雜訊基底 (noise floor) 進行比較。

列印的時間和持續時間以秒為單位表示。lavfi.freezedetect.freeze_start 中繼資料鍵設定在時間戳記等於或超過偵測持續時間的第一個畫格上,它包含靜止開始的第一個畫格的時間戳記。lavfi.freezedetect.freeze_durationlavfi.freezedetect.freeze_end 中繼資料鍵設定在靜止之後的第一個畫格上。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

noise, n

設定雜訊容忍度。可以以 dB(如果在指定值後附加 "dB" 的情況下)或作為 0 到 1 之間的差異比率指定。預設值為 -60dB 或 0.001。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定靜止持續時間直到通知(預設為 2 秒)。

39.105 freezeframes

凍結視訊畫格。

此濾鏡使用來自第二個輸入的畫格凍結視訊畫格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

第一個

設定開始凍結的第一個畫格編號。

last (最後)

設定結束凍結的最後一個畫格編號。

取代

設定將用於代替替換畫格的第二個輸入的畫格編號。

39.106 frei0r

將 frei0r 效果應用於輸入視訊。

要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 --enable-frei0r 配置 FFmpeg。

它接受以下參數

filter_name (濾鏡名稱)

要載入的 frei0r 效果的名稱。如果定義了環境變數 FREI0R_PATH,則會在 FREI0R_PATH 中以冒號分隔的列表指定的每個目錄中搜尋 frei0r 效果。否則,將依以下順序搜尋標準 frei0r 路徑:HOME/.frei0r-1/lib//usr/local/lib/frei0r-1//usr/lib/frei0r-1/

filter_params

要傳遞給 frei0r 效果的以 '|' 分隔的參數列表。

frei0r 效果參數可以是布林值(其值為 "y" 或 "n")、倍精度浮點數、顏色(指定為 R/G/B,其中 RGB 是介於 0.0 和 1.0 之間(包含端點)的浮點數)或 (ffmpeg-utils) 手冊的 "Color" 章節中指定的顏色描述、位置(指定為 X/Y,其中 XY 是浮點數)和/或字串。

參數的數量和類型取決於載入的效果。如果未指定效果參數,則會設定預設值。

39.106.1 範例

  • 套用 distort0r 效果,設定前兩個倍精度浮點數參數
    frei0r=filter_name=distort0r:filter_params=0.5|0.01
    
  • 套用 colordistance 效果,以顏色作為第一個參數
    frei0r=colordistance:0.2/0.3/0.4
    frei0r=colordistance:violet
    frei0r=colordistance:0x112233
    
  • 套用 perspective 效果,指定左上角和右上角的影像位置
    frei0r=perspective:0.2/0.2|0.8/0.2
    

如需更多資訊,請參閱 http://frei0r.dyne.org

39.106.2 指令

此濾鏡支援將 filter_params 選項作為指令

39.107 fspp

套用快速且簡單的後處理。它是 spp 的更快版本。

它將 (I)DCT 分割為水平/垂直通道。與簡單的後處理濾鏡不同,其中一個通道是針對每個區塊執行一次,而不是針對每個像素。這可以實現更高的速度。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定音調品質。可能的值包括

設定品質。此選項定義平均的級別數。它接受範圍在 4-5 之間的整數。預設值為 4

qp

強制使用恆定的量化參數。它接受範圍在 0-63 之間的整數。如果未設定,濾鏡將使用來自視訊串流的 QP(如果可用)。

strength

設定濾鏡強度。它接受範圍在 -15 到 32 之間的整數。較低的值表示更多細節,但也會產生更多雜訊,而較高的值會使影像更平滑,但也更模糊。預設值為 0 − PSNR 最佳。

use_bframe_qp

如果設定為 1,則啟用從 B 幀使用 QP。使用此選項可能會導致閃爍,因為 B 幀通常具有較大的 QP。預設值為 0(未啟用)。

39.108 fsync

將視訊幀與來自檔案的外部映射同步。

對於映射檔案中給出的每個輸入 PTS,它會丟棄或建立盡可能多的幀,以重新建立映射檔案中給出的輸出幀序列。

此濾鏡可用於重新建立由 fps 濾鏡進行幀率轉換的輸出幀,使用 ffmpeg 選項 -stats_mux_pre 記錄到映射檔案中,並對相應的幀進行進一步處理,例如品質比較。

映射檔案的每一行都必須包含每個輸入幀的三個項目,輸入 PTS(十進制)、輸出 PTS(十進制)和輸出 TIMEBASE(十進制/十進制),以空格分隔。此檔案格式對應於 -stats_mux_pre_fmt="{ptsi} {pts} {tb}" 的輸出。

濾鏡假設映射檔案是按遞增的輸入 PTS 排序的。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

file, f

要使用的映射檔案的檔名。

範例

# Convert a video to 25 fps and record a MAP_FILE file with the default format of this filter
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT

# Sort MAP_FILE by increasing input PTS
sort -n MAP_FILE

# Use INPUT, OUTPUT and the MAP_FILE from above to compare the corresponding frames in INPUT and OUTPUT via SSIM
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -

39.109 gblur

套用高斯模糊濾鏡。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

steps

設定高斯近似的步數。預設值為 1

平面

設定要篩選的平面。預設情況下,所有平面都會被篩選。

sigmaV

設定垂直 sigma,如果為負數,則與 sigma 相同。預設值為 -1

39.109.1 指令

此濾波器支援與選項相同的命令。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.110 geq

將通用方程式套用到每個像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

lum_expr, lum

設定亮度表達式。

cb_expr, cb

設定色度藍色表達式。

cr_expr, cr

設定色度紅色表達式。

alpha_expr, a

設定 Alpha 表達式。

red_expr, r

設定紅色表達式。

green_expr, g

設定綠色表達式。

blue_expr, b

設定藍色表達式。

色彩空間會根據指定的選項選擇。如果指定了 lum_exprcb_exprcr_expr 選項之一,則濾鏡將自動選擇 YCbCr 色彩空間。如果指定了 red_exprgreen_exprblue_expr 選項之一,它將選擇 RGB 色彩空間。

如果未定義色度表達式之一,則會回退到另一個。如果未指定 Alpha 表達式,它將評估為不透明值。如果未指定任何色度表達式,它們將評估為亮度表達式。

表達式可以使用以下變數和函數

N

已過濾影格的序號,從 0 開始。

X
Y

當前樣本的座標。

W
H

影像的寬度和高度。

SW
SH

寬度和高度比例取決於目前過濾的平面。它是相應的亮度平面像素數與目前平面像素數之間的比率。例如,對於 YUV4:2:0,亮度平面的值為 1,1,色度平面的值為 0.5,0.5

T

目前影格的時間,以秒為單位表示。

p(x, y)

傳回目前平面位置 (x,y) 處的像素值。

lum(x, y)

傳回亮度平面位置 (x,y) 處的像素值。

cb(x, y)

傳回藍色差色度平面位置 (x,y) 處的像素值。如果沒有此平面,則傳回 0。

cr(x, y)

傳回紅色差色度平面位置 (x,y) 處的像素值。如果沒有此平面,則傳回 0。

r(x, y)
g(x, y)
b(x, y)

傳回紅色/綠色/藍色分量位置 (x,y) 處的像素值。如果沒有此分量,則傳回 0。

alpha(x, y)

傳回 Alpha 平面位置 (x,y) 處的像素值。如果沒有此平面,則傳回 0。

psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)

從 (0,0) 到 (x,y) 的矩形中樣本值的總和,這允許取得矩形內樣本的總和。請參閱沒有 sum 後綴的函數。

interpolation

設定插值方法之一

nearest, n
bilinear, b

預設值為雙線性。

對於函數,如果 xy 超出區域,則值將自動裁剪到較近的邊緣。

請注意,此濾鏡可以使用多個執行緒,在這種情況下,每個切片都將具有自己的表達式狀態。如果您只想使用單一表達式狀態,因為您的表達式取決於先前的狀態,那麼您應該將濾鏡執行緒的數量限制為 1。

39.110.1 範例

  • 水平翻轉影像
    geq=p(W-X\,Y)
    
  • 產生二維正弦波,角度為 PI/3,波長為 100 像素
    geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
    
  • 產生奇特的神秘移動光
    nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
    
  • 產生快速浮雕效果
    format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
    
  • 根據像素位置修改 RGB 分量
    geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
    
  • 建立與輸入大小相同的放射狀漸層(另請參閱 vignette 濾鏡)
    geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
    

39.111 gradfun

修正有時因截斷為 8 位元色彩深度而引入到近乎平坦區域的色帶雜訊。插值應該在色帶所在位置的漸層,並對其進行抖動處理。

它僅設計用於播放。請勿在有損壓縮之前使用它,因為壓縮往往會丟失抖動並帶回色帶。

它接受以下參數

strength

濾鏡將更改任何一個像素的最大量。這也是偵測近乎平坦區域的閾值。可接受的值範圍為 .51 到 64;預設值為 1.2。超出範圍的值將被裁剪到有效範圍。

radius

要擬合漸層的鄰域。較大的半徑會產生更平滑的漸層,但也阻止濾鏡修改詳細區域附近的像素。可接受的值為 8-32;預設值為 16。超出範圍的值將被裁剪到有效範圍。

或者,選項可以指定為平面字串:strength[:radius]

39.111.1 範例

  • 套用強度為 3.5 和半徑為 8 的濾鏡
    gradfun=3.5:8
    
  • 指定半徑,省略強度(將回退到預設值)
    gradfun=radius=8
    

39.112 graphmonitor

顯示各種濾鏡圖統計資訊。

使用此濾鏡,可以除錯完整的濾鏡圖。特別是連結中填滿佇列幀的問題。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

設定視訊輸出大小。預設值為 hd720

opacity, o

設定視訊不透明度。預設值為 0.9。允許的範圍為 01

mode, m

設定輸出模式標誌。

標誌的可用值為

full

無任何過濾。預設值。

compact

僅顯示具有佇列幀的濾鏡。

nozero

僅顯示具有非零統計資訊的濾鏡。

noeof

僅顯示具有非 eof 狀態的濾鏡。

nodisabled

僅顯示時間軸中已啟用的濾鏡。

flags, f

設定標誌,以啟用在視訊中顯示哪些統計資訊。

標誌的可用值為

none

所有標誌都關閉。

all

所有標誌都開啟。

queue

顯示每個連結中佇列的幀數。

frame_count_in

顯示從濾鏡取得的幀數。

frame_count_out

顯示從濾鏡輸出的幀數。

frame_count_delta

顯示上述兩個值之間的幀數差。

pts

顯示目前過濾的幀 pts。

pts_delta

顯示目前幀和前一幀之間的 pts 差。

time

顯示目前過濾的幀時間。

time_delta

顯示目前幀和前一幀之間的時間差。

timebase

顯示濾鏡連結的時間基底。

format

顯示用於濾鏡連結的格式。

size

顯示視訊大小或濾鏡連結使用的音訊通道數。

rate

顯示視訊幀率或濾鏡連結使用的音訊取樣率。

eof

顯示連結輸出狀態。

sample_count_in

顯示從濾鏡取得的樣本數。

sample_count_out

顯示從濾鏡輸出的樣本數。

sample_count_delta

顯示上述兩個值之間的樣本數差。

disabled

顯示時間軸濾鏡狀態。

速率,r

設定輸出串流的視訊速率上限,預設值為 25。這保證輸出視訊幀率不會高於此值。

39.113 grayworld

一種色彩恆定性濾鏡,可根據灰階世界假設應用色彩校正

請參閱:https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

該演算法使用線性光,因此輸入資料應預先線性化(並可能正確標記)。

ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT

39.114 greyedge

一種色彩恆定性變體濾鏡,它透過灰邊演算法估計場景照明,並相應地校正場景色彩。

請參閱:https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

difford

要應用於場景的微分階數。必須在 [0,2] 範圍內選擇,預設值為 1。

minknorm

用於計算 Minkowski 距離的 Minkowski 參數。必須在 [0,20] 範圍內選擇,預設值為 1。設定為 0 以取得最大值而不是計算 Minkowski 距離。

sigma

要應用於場景的高斯模糊的標準差。必須在 [0,1024.0] 範圍內選擇,預設值 = 1。如果 difford 大於 0,則 floor( sigma * break_off_sigma(3) ) 不能等於 0。

39.114.1 範例

  • 灰邊
    greyedge=difford=1:minknorm=5:sigma=2
    
  • 最大邊緣
    greyedge=difford=1:minknorm=0:sigma=2
    

39.115 guided

套用導引濾鏡以進行邊緣保留平滑、去霧等。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

radius

設定以像素為單位的方框半徑。允許的範圍為 1 到 20。預設值為 3。

eps

設定正規化參數(帶平方)。允許的範圍為 0 到 1。預設值為 0.01。

level_in

設定濾鏡模式。可以是 basicfast。預設值為 basic

sub

設定 fast 模式的子取樣率。範圍為 2 到 64。預設值為 4。basic 模式下不發生子取樣。

guidance

設定導引模式。可以是 offon。預設值為 off。如果為 off,則需要單一輸入。如果為 on,則需要兩個相同解析度和像素格式的輸入。第二個輸入用作導引。

平面

設定要篩選的平面。預設值為僅第一個。

39.115.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.115.2 範例

  • 使用導引濾鏡進行邊緣保留平滑
    ffmpeg -i in.png -vf guided out.png
    
  • 使用導引濾鏡進行去霧、結構轉換濾鏡、細節增強。有關導引影像的產生,請參閱論文 "Guided Image Filtering"。請參閱:http://kaiminghe.com/publications/pami12guidedfilter.pdf
    ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
    

39.116 haldclut

將 Hald CLUT 套用到視訊串流。

第一個輸入是要處理的視訊串流,第二個輸入是 Hald CLUT。Hald CLUT 輸入可以是簡單的圖片或完整的視訊串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

clut

設定將從第二個輸入串流處理哪個 CLUT 視訊幀,可以是 firstall。預設值為 all

shortest

當最短的輸入終止時強制終止。預設值為 0

repeatlast

在串流結束後繼續套用最後一個 CLUT。值 0 會在達到 CLUT 的最後一幀後停用濾鏡。預設值為 1

haldclut 也具有與 lut3d 相同的插值選項(兩個濾鏡共享相同的內部結構)。

此濾鏡也支援 framesync 選項。

有關 Hald CLUT 的更多資訊,請參閱 Eskil Steenberg 的網站(Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html

39.116.1 指令

此濾鏡支援將 interp 選項作為指令

39.116.2 工作流程範例

39.116.2.1 Hald CLUT 視訊串流

產生使用各種效果修改的識別 Hald CLUT 串流

ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut

注意:請確保您使用無損編解碼器。

然後將其與 haldclut 一起使用,以將其套用於某些隨機串流

ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv

Hald CLUT 將套用於前 10 秒(clut.nut 的持續時間),然後該 CLUT 串流的最新圖片將套用於 mandelbrot 串流的剩餘幀。

39.116.2.2 具有預覽的 Hald CLUT

Hald CLUT 應該是 Level*Level*LevelLevel*Level*Level 像素的正方形影像。對於給定的 Hald CLUT,FFmpeg 將選擇從圖片左上角開始的最大可能正方形。剩餘的填充像素(底部或右側)將被忽略。此區域可用於新增 Hald CLUT 的預覽。

通常,haldclut 濾鏡將支援以下產生的 Hald CLUT

ffmpeg -f lavfi -i haldclutsrc=8 -vf "
   pad=iw+320 [padded_clut];
   smptebars=s=320x256, split [a][b];
   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
   [main][b] overlay=W-320" -frames:v 1 clut.png

它包含原始影像和 CLUT 效果的預覽:SMPTE 彩條顯示在右上角,下方是經過色彩變更處理的相同彩條。

然後,可以使用以下方式視覺化此 Hald CLUT 的效果

ffplay input.mkv -vf "movie=clut.png, [in] haldclut"

39.117 hflip

水平翻轉輸入影片。

例如,要使用 ffmpeg 水平翻轉輸入影片

ffmpeg -i in.avi -vf "hflip" out.avi

39.118 histeq

此濾鏡在逐幀的基礎上應用全域色彩直方圖等化。

它可以用於校正像素強度範圍壓縮的影片。此濾鏡重新分配像素強度,以均衡它們在強度範圍內的分布。它可以被視為「自動調整對比度濾鏡」。此濾鏡僅適用於校正劣化或拍攝不良的原始影片。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

strength

決定要應用的等化量。隨著強度降低,像素強度的分布會越來越接近輸入幀的分布。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.200。

強度

設定可以產生的最大強度,並適當地縮放輸出值。強度應根據需要設定,然後可以在需要時限制強度,以避免過曝(washing-out)。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.210。

消除色帶

設定消除色帶等級。如果啟用,濾鏡將隨機少量改變輸出像素的亮度,以避免直方圖出現色帶。可能的值為 noneweakstrong。預設值為 none

39.119 histogram

計算並繪製輸入影片的色彩分布直方圖。

計算出的直方圖是影像中色彩成分分布的表示。

標準直方圖顯示影像中色彩成分的分布。顯示每個色彩成分的顏色圖表。根據輸入格式,顯示目前幀中 Y、U、V、A 或 R、G、B 成分的分布。在每個圖表下方,會顯示色彩成分比例尺。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

層級高度

設定層級高度。預設值為 200。允許範圍為 [50, 2048]。

比例尺高度

設定色彩比例尺高度。預設值為 12。允許範圍為 [0, 40]。

顯示模式

設定顯示模式。它接受以下值

stack

每個色彩成分的圖表彼此堆疊放置。

parade

每個色彩成分的圖表並排放置。

overlay

呈現與 parade 相同的資訊,但代表色彩成分的圖表直接彼此疊加。

預設值為 stack

層級模式

設定模式。可以是 linear(線性)或 logarithmic(對數)。預設值為 linear

components

設定要顯示哪些色彩成分。預設值為 7

前景不透明度

設定前景不透明度。預設值為 0.7

背景不透明度

設定背景不透明度。預設值為 0.5

色彩模式

設定色彩模式。它接受以下值

whiteonblack
blackonwhite
whiteongray
blackongray
coloronblack
coloronwhite
colorongray
blackoncolor
whiteoncolor
grayoncolor

預設值為 whiteonblack

39.119.1 範例

  • 計算並繪製直方圖
    ffplay -i input -vf histogram
    

39.120 hqdn3d

這是一個高精度/高品質的 3D 降噪濾鏡。它旨在減少影像雜訊,產生平滑的影像,並使靜態影像真正靜止。它應該能提高壓縮率。

它接受以下可選參數

亮度空間

一個非負浮點數,指定空間亮度強度。預設值為 4.0。

色度空間

一個非負浮點數,指定空間色度強度。預設值為 3.0*luma_spatial/4.0。

亮度時間

一個浮點數,指定亮度時間強度。預設值為 6.0*luma_spatial/4.0。

色度時間

一個浮點數,指定色度時間強度。預設值為 luma_tmp*chroma_spatial/luma_spatial

39.120.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.121 hwdownload

將硬體幀下載到系統記憶體。

輸入必須是硬體幀,輸出必須是非硬體格式。並非所有格式都將在輸出端受到支援 - 可能需要在圖形中緊隨其後插入額外的 format 濾鏡,以獲得支援的輸出格式。

39.122 hwmap

將硬體幀映射到系統記憶體或另一個裝置。

此濾鏡有幾種不同的操作模式;使用哪種模式取決於輸入和輸出格式

  • 硬體幀輸入,普通幀輸出

    將輸入幀映射到系統記憶體並將它們傳遞到輸出。如果稍後需要原始硬體幀(例如,在將其他內容覆蓋在其部分之上之後),則可以在下一個模式中再次使用 hwmap 濾鏡來檢索它。

  • 普通幀輸入,硬體幀輸出

    如果輸入實際上是軟體映射的硬體幀,則取消映射它 - 也就是說,返回原始硬體幀。

    否則,必須提供一個裝置。在該裝置上為輸出建立新的硬體表面,然後將它們映射回輸入端的軟體格式,並將這些幀提供給前面的濾鏡。這將像 hwupload 濾鏡一樣運作,但當輸入已經是相容格式時,可能會避免額外的複製。

  • 硬體幀輸入和輸出

    必須為輸出提供一個裝置,可以直接提供或使用 derive_device 選項。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體上下文(例如,參考相同的顯示卡)。

    如果輸入幀最初是在輸出裝置上建立的,則取消映射以檢索原始幀。

    否則,將幀映射到輸出裝置 - 在輸出端建立與輸入端幀對應的新硬體幀。

接受以下其他參數

level_in

設定幀映射模式。以下選項的組合

讀取

映射的幀應該是可讀取的。

timestamp

寫入

覆寫

映射將始終覆寫整個幀。

在某些情況下,這可能會提高效能,因為不需要載入幀的原始內容。

直接

映射不得涉及任何複製。

在某些情況下,如果直接映射不可能或會產生意外的屬性,則會建立到幀副本的間接映射。設定此標誌可確保映射是直接的,如果不可能,則會失敗。

如果未指定,則預設為 read+write

derive_device 類型

與其使用初始化時提供的裝置,不如從輸入幀所在的裝置衍生一個新的 類型 裝置。

反向

在硬體到硬體的映射中,反向映射 - 在接收器中建立幀並將它們映射回來源。在某些情況下,當需要單向映射但所使用的裝置僅支援相反方向時,這可能是必要的。

此選項很危險 - 如果對該濾鏡的輸出有任何額外限制,它可能會以未定義的方式破壞前面的濾鏡。請勿在未完全理解其使用含義的情況下使用它。

39.123 hwupload

將系統記憶體幀上傳到硬體表面。

要上傳到的裝置必須在初始化濾鏡時提供。如果使用 ffmpeg,請使用 -filter_hw_device 選項或 derive_device 選項選擇適當的裝置。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體上下文(例如,參考相同的顯示卡)。

接受以下其他參數

derive_device 類型

與其使用初始化時提供的裝置,不如從輸入幀所在的裝置衍生一個新的 類型 裝置。

39.124 hwupload_cuda

將系統記憶體幀上傳到 CUDA 裝置。

它接受以下可選參數

裝置

要使用的 CUDA 裝置的編號

39.125 hqx

應用專為像素藝術設計的高品質放大濾鏡。此濾鏡最初由 Maxim Stepin 創建。

它接受以下選項

n

設定縮放維度:hq2x2hq3x3hq4x4。預設值為 3

39.126 hstack

水平堆疊輸入影片。

所有串流必須具有相同的像素格式和相同的高度。

請注意,此濾鏡比使用 overlaypad 濾鏡創建相同的輸出更快。

此濾波器接受以下選項

輸入

設定輸入串流的數量。預設值為 2。

shortest

如果設定為 1,則強制輸出在最短輸入終止時終止。 預設值為 0。

39.127 hsvhold

將特定的 HSV 範圍轉換為灰度值。

此濾鏡測量選項中設定的 HSV 顏色與影片串流中測量的顏色之間的色差。根據選項,輸出顏色可以更改為灰色或不更改。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

hue

設定將在色差計算中使用的色相值。允許範圍為 -360 到 360。預設值為 0。

飽和度

設定將在色差計算中使用的飽和度值。允許範圍為 -1 到 1。預設值為 0。

值 (明度)

設定將在色差計算中使用的值(明度)。允許範圍為 -1 到 1。預設值為 0。

相似度

設定與關鍵色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。

0.00001 僅匹配精確的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許範圍為 0 到 1。預設值為 0。

0.0 使像素完全變為灰色,或完全不變為灰色。

較高的值會產生更多灰色像素,像素顏色越接近關鍵色,灰色像素就越明顯。

39.128 hsvkey

將特定的 HSV 範圍轉換為透明度。

此濾鏡測量選項中設定的 HSV 顏色與影片串流中測量的顏色之間的色差。根據選項,可以通過添加 Alpha 通道將輸出顏色更改為透明。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

hue

設定將在色差計算中使用的色相值。允許範圍為 -360 到 360。預設值為 0。

飽和度

設定將在色差計算中使用的飽和度值。允許範圍為 -1 到 1。預設值為 0。

值 (明度)

設定將在色差計算中使用的值(明度)。允許範圍為 -1 到 1。預設值為 0。

相似度

設定與關鍵色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。

0.00001 僅匹配精確的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許範圍為 0 到 1。預設值為 0。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

39.129 hue

修改輸入的色相和/或飽和度。

它接受以下參數

h

以度為單位指定色相角。它接受表達式,預設值為 "0"。

s

在 [-10,10] 範圍內指定飽和度。它接受表達式,預設值為 "1"。

H

以弧度為單位指定色相角。它接受表達式,預設值為 "0"。

b

在 [-10,10] 範圍內指定亮度。它接受表達式,預設值為 "0"。

hH 是互斥的,不能同時指定。

bhHs 選項值是包含以下常數的表達式

n

輸入幀的幀計數,從 0 開始

pts

輸入幀的呈現時間戳記,以時間基底單位表示

r

輸入影片的幀率,如果輸入幀率未知則為 NAN

t

以秒為單位表示的時間戳記,如果輸入時間戳記未知,則為 NAN

tb

輸入影片的時間基底

39.129.1 範例

  • 將色相設定為 90 度,飽和度設定為 1.0
    hue=h=90:s=1
    
  • 相同的命令,但以弧度表示色相
    hue=H=PI/2:s=1
    
  • 旋轉色相並使飽和度在一秒鐘內在 0 和 2 之間擺動
    hue="H=2*PI*t: s=sin(2*PI*t)+1"
    
  • 應用從 0 開始的 3 秒飽和度淡入效果
    hue="s=min(t/3\,1)"
    

    通用淡入表達式可以寫成

    hue="s=min(0\, max((t-START)/DURATION\, 1))"
    
  • 應用從 5 秒開始的 3 秒飽和度淡出效果
    hue="s=max(0\, min(1\, (8-t)/3))"
    

    通用淡出表達式可以寫成

    hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
    

39.129.2 指令

此濾波器支援以下命令

b
s
h
H

修改輸入影片的色相和/或飽和度及/或亮度。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.130 huesaturation

將色相-飽和度-強度調整應用於輸入影片串流。

此濾鏡在 RGB 色彩空間中運作。

此濾波器接受以下選項

hue

設定要應用的色相偏移度數。預設值為 0。允許範圍為 -180 到 180。

saturation

設定飽和度偏移。預設值為 0。允許範圍為 -1 到 1。

強度

設定強度偏移。預設值為 0。允許範圍為 -1 到 1。

顏色

設定將要調整哪些原色和互補色。此選項通過提供一個或多個值來設定。這可以一次選擇多種顏色。預設情況下,選擇所有顏色。

r

調整紅色。

y

調整黃色。

g

調整綠色。

c

調整青色。

b

調整藍色。

m

調整洋紅色。

a

調整所有顏色。

strength

設定濾鏡強度。允許範圍為 0 到 100。預設值為 1。

rw, gw, bw

設定每個 RGB 成分的權重。允許範圍為 0 到 1。預設值設定為 0.333、0.334、0.333。這些選項用於飽和度和亮度處理。

lightness

設定保留亮度,預設情況下禁用。調整色相可能會改變原始 RGB 三元組的亮度,啟用此選項後,亮度將保持相同的值。

39.131 hysteresis

通過連接組件將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。

此濾波器接受以下選項

平面

設定哪些平面將作為位圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

threshold

設定濾鏡中使用的閾值。如果像素成分值高於此值,則用於連接組件的濾鏡演算法將被啟動。預設值為 0。

hysteresis 濾鏡也支援 framesync 選項。

39.132 iccdetect

從嵌入的 ICC 配置文件(如果存在)檢測色彩空間,並相應地更新幀的標籤。

此濾波器接受以下選項

強制

如果為 true,則幀的現有色彩空間標籤將始終被從 ICC 配置文件檢測到的值覆蓋。否則,它們僅在包含 unknown 時才被分配。預設情況下啟用。

39.133 iccgen

生成 ICC 配置文件並將其附加到幀。

此濾波器接受以下選項

color_primaries
color_trc (色彩傳輸曲線)

配置將為其生成 ICC 配置文件的色彩空間。預設值 auto 從輸入幀的元數據推斷值,並根據需要預設為 BT.709/sRGB。

有關可能值的列表,請參閱 setparams 濾鏡,但請注意 unknown 不是此濾鏡的有效值。

強制

如果為 true,即使會覆寫已存在的 ICC 配置文件,也會生成 ICC 配置文件。預設情況下禁用。

39.134 identity

獲取兩個輸入影片之間的識別分數。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入都具有相同數量的影格,這些影格會逐一比較。

獲得的每個組件、平均值、最小值和最大值的識別分數將通過日誌系統輸出。

濾鏡將每個幀的計算出的識別分數儲存在幀元數據中。

此濾鏡也支援 framesync 選項。

在下面的範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -

39.135 idet

檢測影片交錯類型。

此濾鏡嘗試檢測輸入幀是否為交錯、漸進式、頂場優先或底場優先。它還將嘗試檢測相鄰幀之間重複的場(電視電影的跡象)。

單幀檢測在分類每個幀時僅考慮緊鄰的幀。多幀檢測包含先前幀的分類歷史記錄。

濾鏡將記錄這些元數據值

single.current_frame (單幀.當前幀)

使用單幀檢測檢測到的當前幀類型。選項之一:“tff”(頂場優先)、“bff”(底場優先)、“progressive”(漸進式)或 “undetermined”(未確定)

single.tff (單幀.tff)

使用單幀檢測檢測為頂場優先的幀的累積數量。

multiple.tff (多幀.tff)

使用多幀檢測檢測為頂場優先的幀的累積數量。

single.bff (單幀.bff)

使用單幀檢測檢測為底場優先的幀的累積數量。

multiple.current_frame (多幀.當前幀)

使用多幀檢測檢測到的當前幀類型。選項之一:“tff”(頂場優先)、“bff”(底場優先)、“progressive”(漸進式)或 “undetermined”(未確定)

multiple.bff (多幀.bff)

使用多幀檢測檢測為底場優先的幀的累積數量。

single.progressive (單幀.漸進式)

使用單幀檢測檢測為漸進式的幀的累積數量。

multiple.progressive (多幀.漸進式)

使用多幀檢測檢測為漸進式的幀的累積數量。

single.undetermined (單幀.未確定)

使用單幀檢測無法分類的幀的累積數量。

multiple.undetermined (多幀.未確定)

使用多幀檢測無法分類的幀的累積數量。

repeated.current_frame (重複.當前幀)

當前幀中的哪個場是從上一個幀重複的。選項之一:“neither”(皆非)、“top”(頂場)或 “bottom”(底場)。

repeated.neither (重複.皆非)

沒有重複場的幀的累積數量。

repeated.top (重複.頂場)

頂場從前一幀的頂場重複的幀的累積數量。

repeated.bottom (重複.底場)

底場從前一幀的底場重複的幀的累積數量。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

intl_thres (交錯閾值)

設定交錯閾值。

prog_thres

設定漸進式閾值。

rep_thres

重複欄位偵測的閾值。

half_life

幀數,在此幀數之後,給定幀對統計的貢獻將減半(即,它對其分類的貢獻僅為 0.5)。預設值 0 表示所有已看到的幀都被賦予完整的權重 1.0,永遠有效。

analyze_interlaced_flag

當此值不為 0 時,idet 將使用指定的幀數來判斷交錯旗標是否準確,它不會計算未確定的幀。如果發現旗標準確,則將直接使用,無需進一步計算;如果發現旗標不準確,則將清除旗標,無需進一步計算。這允許將 idet 濾鏡作為一種低計算量的方法來清理交錯旗標

39.135.1 範例

以詳細模式檢查影片中前 360 幀的欄位順序

ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -

idet 濾鏡會將分析元數據添加到每個幀,然後將其丟棄。最後,濾鏡還將列印包含統計資訊的最終報告。

39.136 il

反交錯或交錯欄位。

此濾鏡允許使用者處理交錯影像欄位,而無需對其進行反交錯處理。反交錯將輸入幀分割為 2 個欄位(稱為半圖片)。奇數行移動到輸出影像的上半部分,偶數行移動到下半部分。您可以獨立處理(濾鏡)它們,然後重新交錯它們。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

luma_mode, l
chroma_mode, c
alpha_mode, a

luma_modechroma_modealpha_mode 的可用值為

none

不執行任何操作。

deinterleave, d

反交錯欄位,將一個欄位放置在另一個欄位之上。

interleave, i

交錯欄位。反轉反交錯的效果。

預設值為 none

luma_swap, ls
chroma_swap, cs
alpha_swap, as

交換亮度/色度/Alpha 欄位。交換偶數行和奇數行。預設值為 0

39.136.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.137 inflate

對影片套用膨脹效果。

此濾鏡透過僅考慮高於像素的值,將像素替換為局部 (3x3) 平均值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更,預設值為 65535。如果為 0,則平面將保持不變。

39.137.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.138 interlace

來自漸進式內容的簡單交錯濾鏡。此濾鏡將奇數幀的上(或下)行與偶數幀的下(或上)行交錯,使幀率減半並保留影像高度。

   Original        Original             New Frame
   Frame 'j'      Frame 'j+1'             (tff)
  ==========      ===========       ==================
    Line 0  -------------------->    Frame 'j' Line 0
    Line 1          Line 1  ---->   Frame 'j+1' Line 1
    Line 2 --------------------->    Frame 'j' Line 2
    Line 3          Line 3  ---->   Frame 'j+1' Line 3
     ...             ...                   ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on

它接受以下可選參數

scan

這決定了交錯幀是取自漸進式幀的偶數行 (tff - 預設值) 還是奇數行 (bff)。

lowpass

垂直低通濾鏡,以避免推特式交錯並減少摩爾紋。

0, off

停用垂直低通濾鏡

1, linear

啟用線性濾鏡 (預設值)

2, complex

啟用複雜濾鏡。這將稍微減少推特和摩爾紋,但更好地保留細節和主觀清晰度印象。

39.139 kerndeint

透過套用 Donald Graft 的自適應核心反交錯技術來反交錯輸入影片。處理影片的交錯部分以產生漸進式幀。

以下為接受參數的描述。

thresh

設定閾值,該閾值會影響濾鏡在判斷是否必須處理像素行時的容差。它必須是 [0,255] 範圍內的整數,預設值為 10。值 0 將導致對每個像素套用處理。

map

如果設定為 1,則將超出閾值的像素塗成白色。預設值為 0。

以下是接受選項的描述。

設定欄位順序。如果設定為 1,則交換欄位;如果設定為 0,則保持欄位不變。預設值為 0。

sharp

如果設定為 1,則啟用額外的銳化。預設值為 0。

twoway

如果設定為 1,則啟用雙向銳化。預設值為 0。

39.139.1 範例

  • 套用預設值
    kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
    
  • 啟用額外銳化
    kerndeint=sharp=1
    
  • 將已處理的像素塗成白色
    kerndeint=map=1
    

39.140 kirsch

對輸入影片串流套用 Kirsch 算子。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

scale

設定將與濾鏡結果相乘的值。

設定濾鏡 mu。

設定將添加到濾鏡結果的值。

39.140.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.141 lagfun

緩慢更新較暗的像素。

此濾鏡使短暫的閃光看起來更長。此濾鏡接受以下選項

衰減

設定衰減係數。預設值為 0.95。允許的範圍為 0 到 1。

平面

設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。

39.141.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.142 lenscorrection

校正徑向鏡頭失真

此濾鏡可用於校正徑向失真,這種失真可能是由於使用廣角鏡頭而產生的,從而重新校正影像。要找到正確的參數,可以使用例如 opencv 一部分提供的工具,或簡單地進行試錯。要使用 opencv,請使用 opencv 來源中的校準範例 (在 samples/cpp 下),並從結果矩陣中提取 k1 和 k2 係數。

請注意,實際上相同的濾鏡在 KDE 專案的開源工具 Krita 和 Digikam 中也可用。

暗角 濾鏡相比,後者也可用於補償鏡頭誤差,此濾鏡校正影像的失真,而 暗角 校正亮度分佈,因此在某些情況下您可能希望同時使用這兩個濾鏡,儘管您必須注意順序,即是否應在鏡頭校正之前或之後套用暗角。

39.142.1 選項

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

cx

影像焦點的相對 x 座標,從而是失真的中心。此值的範圍為 [0,1],並以影像寬度的分數表示。預設值為 0.5。

cy

影像焦點的相對 y 座標,從而是失真的中心。此值的範圍為 [0,1],並以影像高度的分數表示。預設值為 0.5。

k1

二次校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

k2

雙二次校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

設定濾鏡輸出樣本。 它接受以下值

設定插值類型。可以是 nearestbilinear。預設值為 nearest

fc

指定未映射像素的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。預設顏色為 black@0

產生校正的公式為

r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)

其中 r_0 是影像對角線的一半,而 r_srcr_tgt 分別是源影像和目標影像中與焦點的距離。

39.142.2 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.143 lensfun

透過 lensfun 函式庫套用鏡頭校正 (http://lensfun.sourceforge.net/)。

lensfun 濾鏡需要相機製造商、相機型號和鏡頭型號才能套用鏡頭校正。濾鏡將載入 lensfun 資料庫並查詢它,以在資料庫中找到對應的相機和鏡頭條目。只要可以使用給定的選項找到這些條目,濾鏡就可以對幀執行校正。請注意,不完整的字串將導致濾鏡選擇與給定選項最匹配的項目,並且濾鏡將輸出選定的相機和鏡頭型號(以 "info" 級別記錄)。您必須提供製造商、相機型號和鏡頭型號,因為它們是必需的。

要取得可用製造商和型號的清單,請省略 makemodel 選項中的一個或兩個。濾鏡將以 INFO 級別將完整清單發送到日誌。第一列是製造商,第二列是型號。要取得可用鏡頭的清單,請為製造商和型號設定任何值,並省略 lens_model 選項。濾鏡將以 INFO 級別將鏡頭的完整清單發送到日誌。ffmpeg 工具將在列印清單後退出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

make

相機的製造商(例如 "Canon")。此選項為必填項。

model

相機的型號(例如 "Canon EOS 100D")。此選項為必填項。

lens_model

鏡頭的型號(例如 "Canon EF-S 18-55mm f/3.5-5.6 IS STM")。此選項為必填項。

db_path

鏡頭資料庫資料夾的完整路徑。如果未設定,濾鏡將嘗試從建置函式庫時的安裝路徑載入資料庫。預設值為未設定。

level_in

要套用的校正類型。以下值是有效的選項

vignetting

啟用修正鏡頭暗角。

geometry

啟用修正鏡頭幾何失真。這是預設值。

subpixel

啟用修正色差。

vig_geo

啟用修正鏡頭暗角和鏡頭幾何失真。

vig_subpixel

啟用修正鏡頭暗角和色差。

distortion

啟用修正鏡頭幾何失真和色差。

all

啟用所有可能的校正。

focal_length

影像/影片的焦距(變焦;預期影片為常數)。例如,18–55mm 鏡頭的焦距範圍為 [18–55],因此在使用該鏡頭時應選擇該範圍內的值。預設值為 18。

aperture

影像/影片的光圈(預期影片為常數)。請注意,光圈僅用於暗角校正。預設值為 3.5。

focus_distance

影像/影片的對焦距離(預期影片為常數)。請注意,對焦距離僅用於暗角,並且僅稍微影響暗角校正過程。如果未知,請將其保留為預設值 (即 1000)。

scale

轉換後套用的縮放係數。校正後,影片不再一定是矩形的。此參數控制結果影像的可見程度。值 0 表示將自動選擇一個值,以便輸出影像中幾乎沒有或沒有未映射區域。1.0 表示不執行額外縮放。較低的值可能會使更多校正後的影像可見,而較高的值可能會避免輸出中出現未映射區域。

target_geometry

輸出影像/影片的目標幾何形狀。以下值是有效的選項

rectilinear (預設)
fisheye
panoramic
equirectangular
fisheye_orthographic
fisheye_stereographic
fisheye_equisolid
fisheye_thoby
反向

套用影像校正的反向操作(不是校正失真,而是套用失真)。

interpolation

校正失真時使用的插值類型。以下值是有效的選項

nearest
linear (預設)
lanczos

39.143.1 範例

  • 套用鏡頭校正,製造商為 "Canon",相機型號為 "Canon EOS 100D",鏡頭型號為 "Canon EF-S 18-55mm f/3.5-5.6 IS STM",焦距為 "18",光圈為 "8.0"。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
    
  • 套用與之前相同的校正,但僅適用於影片的前 5 秒。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
    

39.144 lcevc

基於 liblcevc_dec 的低複雜度增強影片編解碼器濾鏡 (https://github.com/v-novaltd/LCEVCdec)。

39.145 libplacebo

基於 libplacebo 的彈性 GPU 加速處理濾鏡 (https://code.videolan.org/videolan/libplacebo)。

39.145.1 選項

此濾鏡的選項分為以下幾個部分

39.145.1.1 輸出模式

這些選項控制整體輸出模式。預設情況下,libplacebo 將嘗試盡可能保留來源色彩和大小,但它將套用來源幀中存在的任何嵌入式膠片顆粒、杜比視界元數據或變形 SAR。

輸入

設定輸入數量。這可以與 idx 變數一起使用,以允許在輸出幀內放置/混合多個輸入。這實際上啟用了類似於 hstackoverlay 等的功能。

w
h

設定輸出影片尺寸表達式。預設值為 iwih

允許與 scale 濾鏡相同的表達式。

crop_x
crop_y

設定輸入裁剪 x/y 表達式,預設值為 (iw-cw)/2(ih-ch)/2

crop_w
crop_h

設定輸入裁剪寬度/高度表達式,預設值為 iwih

pos_x
pos_y

設定輸出放置 x/y 表達式,預設值為 (ow-pw)/2(oh-ph)/2

pos_w
pos_h

設定輸出放置寬度/高度表達式,預設值為 owoh

fps (幀率)

設定輸出幀率。這可以是分數,例如 60000/1001。如果設定為特殊字串 none(預設值),則輸入時間戳記將改為未修改地傳遞到輸出。否則,將根據需要內插輸入影片幀,以將影片重新縮放到指定的目標幀率,方式由 frame_mixer 選項決定。

格式

設定輸出格式覆寫。如果未設定(預設值),幀將以與各自輸入幀相同的格式輸出。否則,將執行格式轉換。

force_original_aspect_ratio
force_divisible_by

與相同的 scale 濾鏡選項的工作方式相同。

normalize_sar

如果啟用,輸出幀將始終具有 1:1 的像素縱橫比。這將根據需要引入額外的填充/裁剪。如果停用(預設值),任何縱橫比不匹配(包括來自例如變形影片來源的不匹配)都將轉發到輸出像素縱橫比。

pad_crop_ratio

指定當輸入縱橫比與輸出縱橫比不符且 normalize_sar 生效時,填充和裁剪之間的比例(介於 0.01.0 之間)。預設值 0.0 始終用黑色邊框填充內容,而值 1.0 始終裁剪掉部分內容。中間值是可能的,從而導致兩種方法的混合。

fillcolor

設定用於填充輸出區域的顏色,該輸出區域未被輸出影像覆蓋,例如由於 normalize_sar 造成的。有關此選項的常規語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。預設為 black

corner_rounding

以圓角渲染幀。該值以 0.01.0 範圍內的浮點數給出,表示圓角的相對程度,從完全正方形到完全圓形。換句話說,它給出了半徑除以較小邊長的一半。預設值為 0.0

extra_opts

傳遞額外的 libplacebo 內部配置選項。這些可以指定為以 ':' 分隔的 key=value 對的清單。以下範例顯示如何配置自訂濾鏡核心 ("EWA LanczosSharp") 並使用它將輸入影像解析度加倍

-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
colorspace
color_primaries
color_trc (色彩傳輸曲線)
range

配置將在其中傳遞輸出幀的色彩空間。預設值 auto 以與輸入幀相同的格式輸出幀,從而不會發生任何更改。對於任何其他值,將執行轉換。

請參閱 setparams 濾鏡以取得可能值的清單。

apply_filmgrain

如果來源幀中存在膠片顆粒(例如 AV1 或 H.274),則套用膠片顆粒並從輸出中去除。預設情況下啟用。

apply_dolbyvision

套用來源影格中 Dolby Vision RPU 元資料(如果存在),並從輸出中移除。預設為啟用。請注意,Dolby Vision 永遠會輸出 BT.2020+PQ,覆寫通常的輸入影格元資料。這些也會被選為各自影格輸出選項的 auto 值。

除了為 scale 濾鏡記錄的表達式常數外,crop_wcrop_hcrop_xcrop_ypos_wpos_hpos_xpos_y 選項也可以包含以下常數

in_idx, idx

目前活動輸入串流的(從 0 開始的)數字索引。

crop_w, cw
crop_h, ch

crop_wcrop_h 的計算值。

pos_w, pw
pos_h, ph

pos_wpos_h 的計算值。

in_t, t

輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。

out_t, ot

輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。

n

輸入影格編號,從 0 開始。

39.145.1.2 縮放

本節中的選項控制 libplacebo 如何執行升頻和(必要時)降頻。請注意,libplacebo 永遠會在內部以 4:4:4 內容運作,因此任何次採樣色度格式(例如 yuv420p)都必然會在渲染過程中進行升頻和降頻。這表示即使來源和目標解析度相同,縮放也可能生效。

upscaler
downscaler

設定用於升頻和降頻的濾鏡核心。預設值分別為 spline36mitchell。如需可能值的完整列表,請將 help 傳遞給這些選項。最重要的值如下

none

強制使用內建 GPU 紋理採樣(通常為雙線性)。速度極快但品質差,尤其是在降頻時。

bilinear

雙線性內插。通常可以在 GPU 上免費完成,除非這樣做會導致鋸齒。速度快且品質低。

nearest

最近鄰內插。銳利但鋸齒嚴重。

oversample

演算法在視覺上看起來與最近鄰內插相似,但嘗試保留像素長寬比。適用於像素藝術,因為它可以最大程度地減少藝術外觀的失真。

lanczos

標準 sinc-sinc 內插核心。

spline36

lanczos 的三次樣條近似。效能上沒有差異,但振鈴效應稍小。

ewa_lanczos

lanczos 的橢圓加權平均版本,基於 jinc-sinc 核心。這也通常被稱為「Jinc 縮放」。速度慢但品質非常高。

gaussian

高斯核心。具有某些理想的數學特性,但主觀上非常模糊。

mitchell

Mitchell 和 Netravali 建議參數的三次 BC 樣條。振鈴效應非常小。

frame_mixer

控制用於時間性混合影格的核心。預設值為 none,這會停用影格混合。如需可能值的完整列表,請將 help 傳遞給此選項。最重要的值如下

none

停用影格混合,產生等同於「最近鄰」語義的結果。

oversample

過度採樣輸入視訊以建立「平滑動作」類型效果:如果輸出影格恰好落在兩個視訊影格之間的過渡處,則會根據相對重疊進行混合。只要希望保留原始主觀外觀,就建議使用此選項。

mitchell_clamp

更大的濾鏡核心,可以平滑地內插多個影格,其設計目的是盡可能消除振鈴和其他失真。只要希望獲得最大的視覺平滑度,就建議使用此選項。

linear

影格之間的線性混合/淡入淡出。特別適用於建構投影片放映等。

lut_entries

設定縮放器 LUT 的大小,範圍從 1256。預設值 0 將選擇 libplacebo 的內部預設值,通常為 64

antiringing

啟用抗振鈴(適用於非 EWA 濾鏡)。值(介於 0.01.0 之間)設定抗振鈴演算法的強度。如果設定得太高,可能會增加鋸齒。預設為停用。

sigmoid

在升頻期間啟用 S 型壓縮。稍微減少振鈴。預設為啟用。

39.145.1.3 去色帶

Libplacebo 隨附內建去色帶濾鏡,可有效對抗許多常見的色帶和區塊效應來源。只要希望獲得品質,強烈建議開啟此功能。

deband

啟用(快速)去色帶演算法。預設為停用。

deband_iterations

去色帶演算法的去色帶迭代次數。每次迭代都以逐漸增加的半徑(和減小的閾值)執行。建議值範圍為 14。預設為 1

deband_threshold

去色帶濾鏡強度。數值越高,去色帶效果越強。預設為 4.0

deband_radius

去色帶濾鏡半徑。較高的半徑更適合緩慢的漸層,而較低的半徑更適合陡峭的漸層。預設為 16.0

deband_grain

要新增的額外輸出雜訊量。有助於隱藏瑕疵。預設為 6.0

39.145.1.4 色彩調整

一組主觀色彩控制項。不是很嚴謹,因此確切效果會因輸入原色和色彩空間而異。

brightness

亮度提升,介於 -1.01.0 之間。預設為 0.0

在輸出中使用多少壓縮訊號。 預設值為 1。範圍介於 0 和 1 之間。

對比度增益,介於 0.016.0 之間。預設為 1.0

saturation

飽和度增益,介於 0.016.0 之間。預設為 1.0

hue

色相偏移(以弧度為單位),介於 -3.143.14 之間。預設為 0.0。這會旋轉 UV 子向量,預設為 RGB 輸入的 BT.709 係數。

gamma

伽瑪調整,介於 0.016.0 之間。預設為 1.0

cones

用於色盲模擬的錐狀細胞模型。接受 lms 的任意組合。以下是一些範例

m

Deuteranomaly / deuteranopia(影響 3%-4% 的人口)

l

Protanomaly / protanopia(影響 1%-2% 的人口)

l+m

Monochromacy(非常罕見)

l+m+s

Achromatopsy(完全喪失日間視覺,極其罕見)

cone-strength

cones 指定的錐狀細胞的增益係數,介於 0.010.0 之間。值 1.0 會導致色彩視覺沒有變化。值 0.0(預設值)模擬完全喪失這些錐狀細胞。高於 1.0 的值會誇大錐狀細胞之間的差異,這可能有助於補償色彩視覺的降低。

39.145.1.5 峰值偵測

為了協助處理僅具有靜態 HDR10 元資料(或完全沒有標記)的來源,libplacebo 使用其自己的內部影格分析計算著色器來分析來源影格,並即時調整色調映射函式。如果這太慢,或者如果需要完全可重現的完美影格結果,建議關閉此功能。

peak_detect

啟用 HDR 峰值偵測。忽略靜態 MaxCLL/MaxFALL 值,而傾向於從輸入進行動態偵測。請注意,偵測到的值不會寫回輸出影格,它們僅引導內部色調映射過程。預設為啟用。

smoothing_period

峰值偵測平滑週期,介於 0.01000.0 之間。值越高,峰值偵測對輸入變化的反應越不靈敏。預設為 100.0

minimum_peak

偵測到的峰值下限(相對於 SDR 白色),介於 0.0100.0 之間。預設為 1.0

scene_threshold_low
scene_threshold_high

場景變更偵測的下限和上限閾值。以對數刻度表示,介於 0.0100.0 之間。預設值分別為 5.510.0。將任一值設定為負值會停用此功能。

percentile

要用作色調映射來源峰值的影格亮度直方圖的百分位數。預設為 99.995,一個相當保守的值。將其設定為 100.0 會停用影格直方圖測量,而是使用真實峰值亮度進行色調映射。

39.145.1.6 色調映射

本節中的選項控制 libplacebo 在處理寬色域或 HDR 內容之間的不匹配時,如何執行色調映射和色域映射。一般而言,libplacebo 依賴準確的來源標記和母帶製作顯示色域資訊來產生最佳結果。

gamut_mode

如何處理可能由於比色色域映射而發生的超出色域的色彩。

clip

不執行任何操作,只需將超出範圍的色彩裁剪到 RGB 體積。品質低但速度極快。

perceptual

以感知方式將色彩柔性裁剪到色域體積。這是預設值。

relative

相對比色硬裁剪。與 perceptual 類似,但沒有柔性轉折。

saturation

飽和度映射,將原色直接映射到 RGB 空間中的原色。除了需要明亮、飽和顯示器的人工電腦圖形外,不建議使用。

absolute

絕對比色硬裁剪。不執行白點調整。

desaturate

將超出色域的色彩硬性去飽和化為白色,同時保留亮度。傾向於扭曲明亮物體的視覺外觀。

darken

線性降低內容亮度以保留飽和細節,然後裁剪剩餘的超出色域的色彩。

warn

醒目提示超出色域的像素(透過反轉/標記它們)。

linear

線性降低整個影像的色度,使其適合目標色彩體積。在沒有適當母帶製作元資料的情況下在 BT.2020 來源上使用此功能時要小心,因為這樣做會導致過度去飽和。

tonemapping

要使用的色調映射演算法。可用值為

auto

根據內部啟發式方法的自動選擇。這是預設值。

clip

不執行色調映射,僅裁剪超出範圍的色彩。保留範圍內色彩的完美色彩準確度,但完全破壞超出範圍的資訊。不執行任何黑點適應。不可設定。

st2094-40

來自 SMPTE ST 2094-40 附件 B 的 EETF,它應用來自 HDR10+ 動態元資料的貝茲曲線,根據貝茲曲線執行色調映射。使用的 OOTF 會根據目標顯示器和實際顯示器峰值亮度之間的比例進行調整。

st2094-10

來自 SMPTE ST 2094-10 附件 B.2 的 EETF,它除了最大值/最小值外,還考慮了輸入訊號平均亮度。可設定的對比度參數會影響線性輸出段的斜率,預設為 1.0,表示不增加/減少對比度。請注意,這目前不包括附件 B.3 中定義的主觀增益/偏移/伽瑪控制項。

bt.2390

來自 ITU-R 報告 BT.2390 的 EETF,這是一種具有線性段的 Hermite 樣條滾降。膝點偏移量是可設定的。請注意,此參數預設為 1.0,而不是 ITU-R 規範中的值 0.5

bt.2446a

來自 ITU-R 報告 BT.2446 的 EETF,方法 A。專為良好母帶製作的 HDR 來源設計。可用於正向和反向色調映射。不可設定。

spline

由兩個多項式組成的簡單樣條,由單個樞軸點連接。參數給出樞軸點(在 PQ 空間中),預設為 0.30。可用於正向和反向色調映射。

reinhard

簡單的非線性、全域色調映射演算法。參數指定顯示器峰值處的局部對比度係數。基本上,參數 0.5 表示參考白色將約為裁剪時亮度的一半。預設為 0.5,這會產生此函數的最簡單公式。

mobius

reinhard 色調映射演算法的泛化,以支援黑色附近的額外線性斜率。色調映射參數指示線性部分和非線性部分之間的權衡。基本上,對於給定的參數 x,每個小於 x 的色彩值都將線性映射,而較高的值將進行非線性色調映射。接近 1.0 的值使此曲線的行為類似於 clip,而接近 0.0 的值使此曲線的行為類似於 reinhard。預設值為 0.3,這在比色準確度和保留超出色域的細節之間取得了良好的平衡。

hable

John Hable 開發的用於 Uncharted 2 中的分段式電影色調映射演算法,其靈感來自柯達使用的類似色調映射演算法。因其在具有 HDR 渲染的視訊遊戲中的使用而廣受歡迎。可以很好地保留暗部和亮部細節,但缺點是會顯著改變平均亮度。這有點類似於參數為 0.24reinhard

gamma

將伽瑪(冪)函數擬合為來源和目標色彩空間之間的轉換,有效地產生感知硬轉折,連接兩個大致線性的部分。這可以相當準確地保留所有比例的細節,但可能會導致影像外觀柔和或暗淡。該參數用作截止點,預設為 0.5

linear

在 PQ 空間中將輸入範圍線性拉伸到輸出範圍。這將準確地保留所有細節,但會導致平均亮度顯著不同。除了常規色調映射外,還可用於反向色調映射。該參數可用作額外的線性增益係數(預設為 1.0)。

tonemapping_param

對於可調整的色調映射函數,此參數可用於微調曲線行為。請參閱 tonemapping 的文件。預設值 0.0 會被曲線的首選預設設定取代。

inverse_tonemapping

如果啟用,此濾鏡也會嘗試拉伸 SDR 訊號以填充 HDR 輸出色彩體積。預設為停用。

tonemapping_lut_size

色調映射 LUT 的大小,介於 21024 之間。預設為 256。請注意,當與 peak_detect 結合使用時,此數字會平方。

contrast_recovery

對比度恢復強度。如果設定為高於 0.0 的值,則來源影像將分為高頻和低頻分量,並且一部分高頻影像會新增回色調映射輸出。對於某些 HDR 來源,可能會導致過度振鈴失真,但可以提高色調映射後影像中剩餘的主觀銳度和細節。預設為 0.30

contrast_smoothness

對比度恢復低通濾波器核心大小。預設為 3.5。增加或減少此值會大幅影響視覺外觀。當 contrast_recovery 停用時,無任何作用。

39.145.1.7 抖色

預設情況下,libplacebo 會在必要時進行抖動,這包括渲染到任何低於 16 位元精度的整數格式。建議始終保持啟用狀態,因為不這樣做可能會導致輸出中出現可見的色帶,即使啟用了 debanding 濾鏡也是如此。如果需要最大效能,請使用 ordered_fixed 而不是停用抖動。

dithering

要使用的抖動方法。接受以下值

none

完全停用抖動。可能會導致可見的色帶。

blue

使用偽藍色雜訊進行抖動。這是預設值。

ordered

可調整的有序抖動模式。

ordered_fixed

速度更快的有序抖動,固定大小為 6。無紋理。

white

使用白色雜訊進行抖動。無紋理。

dither_lut_size

抖動 LUT 大小,以 18 之間的 log base2 表示。預設為 6,對應於 64x64 的 LUT 大小。

dither_temporal

啟用時間性抖動。預設為停用。

39.145.1.8 自訂著色器

libplacebo 支援許多基於 mpv .hook GLSL 語法的自訂著色器。此處可以找到此類著色器的集合:https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders

mpv 著色器格式的完整描述超出本節範圍,但此處可以找到摘要:https://mpv.io/manual/master/#options-glsl-shader

custom_shader_path

指定要在運行時載入的自訂著色器檔案路徑。

custom_shader_bin

將完整的自訂著色器指定為原始字串。

39.145.1.9 偵錯 / 效能

本節中的所有選項預設為關閉。當嘗試以犧牲品質為代價來榨取最大效能時,它們可能會有所幫助。

skip_aa

在縮小比例時停用反鋸齒。

polar_cutoff

截斷低於此絕對幅值的極座標 (EWA) 縮放器核心,範圍介於 0.01.0 之間。

disable_linear

停用線性光縮放。

disable_builtin

停用內建 GPU 取樣(強制使用 LUT)。

disable_fbos

強制停用 FBO,導致幾乎所有功能喪失,但提供最大可能的速度。

39.145.2 指令

此濾鏡支援幾乎所有上述選項作為命令

39.145.3 範例

  • 將輸入色調映射到標準色域 BT.709 輸出
    libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
    
  • 重新縮放輸入以適應標準 1080p,並使用高品質縮放
    libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
    
  • 將低 FPS / VFR 輸入內插到平滑的恆定 60 fps 輸出
    libplacebo=fps=60:frame_mixer=mitchell_clamp
    
  • 將輸入轉換為標準 sRGB JPEG
    libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
    
  • 使用更高品質的去色帶設定
    libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
    
  • 在安裝 Mesa 的系統上(以及停用最耗效能的選項時),於 CPU 上運行此濾鏡
    ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
    
  • 抑制解碼器中基於 CPU 的 AV1/H.274 膠片顆粒應用,而傾向於使用此濾鏡進行處理。請注意,只有在影格已在 GPU 上,或者您將 libplacebo 用於其他目的時,這才是一種優勢,因為否則 VRAM 往返行程將超過任何預期的加速。
    ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
    
  • 與 VAAPI hwdec 互通,以避免通過 RAM 往返
    ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
    

39.146 libvmaf

計算參考/失真輸入視訊對的 VMAF(視訊多方法評估融合)分數。

第一個輸入是失真視訊,第二個輸入是參考視訊。

獲得的 VMAF 分數將通過日誌系統印出。

它需要 Netflix 的 vmaf 函式庫 (libvmaf) 作為先決條件。安裝函式庫後,可以使用以下命令啟用它:./configure --enable-libvmaf

此濾鏡具有以下選項

model

以 ‘|‘ 分隔的 vmaf 模型列表。每個模型都可以配置許多參數。預設值:"version=vmaf_v0.6.1"

feature

以 ‘|‘ 分隔的功能列表。每個功能都可以配置許多參數。

log_path

設定用於儲存日誌檔案的檔案路徑。

log_fmt

設定日誌檔案的格式 (xml、json、csv 或 sub)。

pool

設定用於計算 vmaf 的池化方法。選項為 minharmonic_meanmean(預設值)。

n_threads

設定初始化 libvmaf 時要使用的執行緒數量。預設值:0,無執行緒。

n_subsample

設定要使用的影格子取樣間隔。

此濾鏡也支援 framesync 選項。

39.146.1 範例

  • 在以下範例中,失真視訊 distorted.mpg 與參考檔案 reference.mpg 進行比較。
  • 基本用法
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
    
  • 具有多個模型的範例
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
    
  • 具有多個額外功能的範例
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
    
  • 具有選項和不同容器的範例
    ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
    

39.147 libvmaf_cuda

這是 libvmaf 濾鏡的 CUDA 變體。它僅接受 CUDA 影格。

它需要 Netflix 的 vmaf 函式庫 (libvmaf) 作為先決條件。安裝函式庫後,可以使用以下命令啟用它:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf

39.147.1 範例

  • 基本用法,展示使用 scale_cuda 的 CUVID 硬體解碼和 CUDA 縮放
    ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \
        -filter_complex "
            [0:v]scale_cuda=format=yuv420p[dis]; \
            [1:v]scale_cuda=format=yuv420p[ref]; \
            [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json
        " \
        -f null -
    

39.148 limitdiff

使用第二個和可選的第三個視訊串流套用有限差異濾鏡。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

threshold

設定在允許視訊串流之間存在某些差異時要使用的閾值。任何絕對差異值低於或等於此閾值時,都將從第一個視訊串流中選取像素組件。

elasticity

設定處理視訊串流時軟閾值的彈性。此值乘以第一個值會設定第二個閾值。任何絕對差異值大於或等於第二個閾值時,都將從第二個視訊串流中選取像素組件。對於介於這兩個閾值之間的值,將使用第一個和第二個視訊串流之間的線性內插。

reference

啟用參考(第三個)視訊串流處理。預設情況下為停用。如果設定,此視訊串流將用於計算與第一個視訊串流的絕對差異。

平面

指定將要處理哪些平面。預設為所有可用的平面。

39.148.1 指令

此濾鏡支援幾乎所有上述選項作為命令,但選項 ‘reference’ 除外。

39.149 limiter

將像素組件值限制為指定的範圍 [min, max]。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

min

下限。預設為輸入允許的最低值。

max

上限。預設為輸入允許的最高值。

平面

指定將要處理哪些平面。預設為所有可用的平面。

39.149.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.150 loop

循環播放視訊影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

loop

設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。

size

設定最大尺寸,以影格數為單位。預設值為 0。

start

設定循環的起始影格。預設值為 0。

time

設定循環開始時間,以秒為單位。僅當名為 start 的選項設定為 -1 時使用。

39.150.1 範例

  • 無限循環播放單個起始影格
    loop=loop=-1:size=1:start=0
    
  • 循環播放單個起始影格 10 次
    loop=loop=10:size=1:start=0
    
  • 循環播放前 10 個影格 5 次
    loop=loop=5:size=10:start=0
    

39.151 lut1d

將 1D LUT 套用到輸入視訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

file

設定 1D LUT 檔案名稱。

目前支援的格式

cube

Iridas

csp

cineSpace

interp

選取內插模式。

可用的值為

nearest

使用來自最近定義點的值。

linear

使用線性內插來內插值。

cosine

使用餘弦內插來內插值。

cubic

使用三次內插來內插值。

spline

使用樣條內插來內插值。

39.151.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.152 lut3d

將 3D LUT 套用到輸入視訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

file

設定 3D LUT 檔案名稱。

目前支援的格式

3dl

AfterEffects

cube

Iridas

dat

DaVinci

m3d

Pandora

csp

cineSpace

interp

選取內插模式。

可用的值為

nearest

使用來自最近定義點的值。

trilinear

使用定義立方體的 8 個點來內插值。

tetrahedral

使用四面體來內插值。

pyramid

使用金字塔來內插值。

prism

使用稜鏡來內插值。

39.152.1 指令

此濾鏡支援將 interp 選項作為指令

39.153 lumakey

將某些亮度值轉換為透明度。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

threshold

設定將用作透明度基礎的亮度。預設值為 0

tolerance

設定要遮罩掉的亮度值範圍。預設值為 0.01

softness

設定柔和度範圍。預設值為 0。使用此選項來控制從零到完全透明的逐漸過渡。

39.153.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.154 lut, lutrgb, lutyuv

計算一個查找表,用於將每個像素組件輸入值綁定到輸出值,並將其套用到輸入視訊。

lutyuv 將查找表套用到 YUV 輸入視訊,lutrgb 則套用到 RGB 輸入視訊。

這些濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 alpha 組件

r

r

g

g

b

b

a

a

y

y

u

u

v

設定 V/Cr 組件表達式

它們中的每一個都指定用於計算對應像素組件值的查找表的表達式。

與每個 c* 選項關聯的確切組件取決於輸入格式。

lut 濾鏡需要 YUV 或 RGB 像素格式輸入,lutrgb 需要 RGB 像素格式輸入,而 lutyuv 需要 YUV。

表達式可以包含以下常數和函式

w
h

輸入寬度和高度。

值 (明度)

像素組件的輸入值。

clipval

輸入值,裁剪到 minval-maxval 範圍。

maxval

像素組件的最大值。

minval

像素組件的最小值。

negval

像素組件值的負值,裁剪到 minval-maxval 範圍;它對應於表達式 "maxval-clipval+minval"。

clip(val)

val 中計算的值,裁剪到 minval-maxval 範圍。

gammaval(gamma)

像素組件值的計算伽瑪校正值,裁剪到 minval-maxval 範圍。它對應於表達式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"

所有表達式預設為 "clipval"。

39.154.1 指令

此濾鏡支援與選項相同的 commands

39.154.2 範例

  • 負片輸入視訊
    lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
    lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
    

    以上與以下內容相同

    lutrgb="r=negval:g=negval:b=negval"
    lutyuv="y=negval:u=negval:v=negval"
    
  • 負片亮度
    lutyuv=y=negval
    
  • 移除色度組件,將視訊轉換為灰階影像
    lutyuv="u=128:v=128"
    
  • 套用亮度燃燒效果
    lutyuv="y=2*val"
    
  • 移除綠色和藍色組件
    lutrgb="g=0:b=0"
    
  • 在輸入上設定恆定的 alpha 通道值
    format=rgba,lutrgb=a="maxval-minval/2"
    
  • 將亮度伽瑪校正 0.5 倍
    lutyuv=y=gammaval(0.5)
    
  • 捨棄亮度的最低有效位元
    lutyuv=y='bitand(val, 128+64+32)'
    
  • 類似 Technicolor 的效果
    lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
    

39.155 lut2, tlut2

lut2 濾鏡採用兩個輸入串流並輸出一個串流。

tlut2 (time lut2) 濾鏡從單個串流中取得兩個連續的影格。

此濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 alpha 組件

d

設定輸出位元深度,僅適用於 lut2 濾鏡。預設值為 0,表示位元深度會自動從第一個輸入格式中選取。

lut2 濾鏡也支援 framesync 選項。

它們中的每一個都指定用於計算對應像素組件值的查找表的表達式。

與每個 c* 選項關聯的確切組件取決於輸入格式。

表達式可以包含以下常數

w
h

輸入寬度和高度。

x

像素組件的第一個輸入值。

y

像素組件的第二個輸入值。

bdx

第一個輸入視訊位元深度。

bdy

第二個輸入視訊位元深度。

所有表達式預設為 "x"。

39.155.1 指令

此濾鏡支援幾乎所有上述選項作為命令,但選項 d 除外。

39.155.2 範例

  • 突顯兩個 RGB 視訊串流之間的差異
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
    
  • 突顯兩個 YUV 視訊串流之間的差異
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
    
  • 顯示兩個視訊串流之間的最大差異
    lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
    

39.156 maskedclamp

使用第二個輸入和第三個輸入串流來鉗制第一個輸入串流。

傳回第一個串流的值,該值介於第二個輸入串流 - undershoot 和第三個輸入串流 + overshoot 之間。

此濾波器接受以下選項

undershoot

預設值為 0

overshoot

預設值為 0

平面

設定哪些平面將作為位圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

39.156.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.157 maskedmax

使用第二個輸入串流與第一個輸入串流之間的絕對差異,以及第三個輸入串流與第一個輸入串流之間的絕對差異,將第二個和第三個輸入串流合併到輸出串流中。如果第二個絕對差異大於第一個,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。

此濾波器接受以下選項

平面

設定哪些平面將作為位圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

39.157.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.158 maskedmerge

使用第三個輸入串流中的每個像素權重,將第一個輸入串流與第二個輸入串流合併。

第三個串流像素組件中的值 0 表示第一個串流的像素組件保持不變地傳回,而最大值(例如,8 位元視訊為 255)表示第二個串流的像素組件保持不變地傳回。中間值定義兩個輸入串流的像素組件之間的合併量。

此濾波器接受以下選項

平面

設定哪些平面將作為位圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

39.158.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.159 maskedmin

使用第二個輸入串流與第一個輸入串流之間的絕對差異,以及第三個輸入串流與第一個輸入串流之間的絕對差異,將第二個和第三個輸入串流合併到輸出串流中。如果第二個絕對差異小於第一個,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。

此濾波器接受以下選項

平面

設定哪些平面將作為位圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

39.159.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.160 maskedthreshold

通過比較兩個視訊串流的絕對差異與固定閾值來選取像素。

如果第一個和第二個視訊串流的像素組件之間的絕對差異等於或低於使用者提供的閾值,則選取第一個視訊串流的像素組件,否則選取第二個視訊串流的像素組件。

此濾波器接受以下選項

threshold

設定從兩個輸入視訊串流的絕對差異中選取像素時使用的閾值。

平面

設定將要作為點陣圖處理的平面,未處理的平面將從第二個串流複製。預設值為 0xf,將處理所有平面。

level_in

設定濾鏡操作模式。可以是 absdiff。預設值為 abs

39.160.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.161 maskfun

從輸入視訊建立遮罩。

例如,在 tblend 濾鏡之後建立運動遮罩非常有用。

此濾波器接受以下選項

設定低閾值。任何像素組件低於或等於此值時,都將設定為 0。

設定高閾值。任何像素組件高於此值時,都將設定為目前像素格式允許的最大值。

平面

設定要濾鏡的平面,預設情況下會濾鏡所有可用的平面。

fill

使用此值填滿所有影格像素。

sum

設定影格的最大平均像素值。如果所有像素組件的總和高於此平均值,則輸出影格將完全填滿由 fill 選項設定的值。當與 tblend 濾鏡結合使用時,通常對於場景變換很有用。

39.161.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.162 mcdeint

套用運動補償去交錯。

它需要每個影格一個場作為輸入,因此必須與 yadif=1/3 或同等項目一起使用。

此濾波器接受以下選項

level_in

設定去交錯模式。

它接受以下值之一

fast
medium
slow

使用迭代運動估計

extra_slow

類似 ‘slow’,但使用多個參考影格。

預設值為 ‘fast’。

parity

設定為輸入視訊假設的圖片場奇偶性。它必須是以下值之一

0, tff

假設頂場優先

1, bff

假設底場優先

預設值為 ‘bff’。

qp

設定內部編碼器使用的每個區塊量化參數 (QP)。

較高的值應產生更平滑的運動向量場,但個別向量的最佳化程度較低。預設值為 1。

39.163 median

從半徑定義的特定矩形中選取中位數像素。

此濾波器接受以下選項

radius

設定水平半徑大小。預設值為 1。允許的範圍是從 1 到 127 的整數。

平面

設定要處理哪些平面。預設值為 15,即所有可用的平面。

radiusV

設定垂直半徑大小。預設值為 0。允許的範圍是從 0 到 127 的整數。如果為 0,則將從水平 radius 選項中選取值。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

39.163.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.164 mergeplanes

從多個視訊串流合併顏色通道組件。

此濾鏡最多接受 4 個輸入串流,並將選定的輸入平面合併到輸出視訊。

此濾波器接受以下選項

mapping

設定輸入到輸出平面的映射。預設值為 0

映射指定為點陣圖。它應以十六進位數字形式指定,格式為 0xAa[Bb[Cc[Dd]]]。’Aa’ 描述輸出串流的第一個平面的映射。’A’ 設定要使用的輸入串流編號(從 0 到 3),’a’ 設定要使用的對應輸入的平面編號(從 0 到 3)。其餘映射類似,’Bb’ 描述輸出串流第二個平面的映射,’Cc’ 描述輸出串流第三個平面的映射,’Dd’ 描述輸出串流第四個平面的映射。

格式

設定輸出像素格式。預設值為 yuva444p

map0s
map1s
map2s
map3s

設定輸出第 N 個平面的輸入到輸出串流映射。預設值為 0

map0p
map1p
map2p
map3p

設定輸出第 N 個平面的輸入到輸出平面映射。預設值為 0

39.164.1 範例

  • 將三個相同寬度和高度的灰階視訊串流合併為單個視訊串流
    [a0][a1][a2]mergeplanes=0x001020:yuv444p
    
  • 將第一個 yuv444p 串流和第二個灰階視訊串流合併為 yuva444p 視訊串流
    [a0][a1]mergeplanes=0x00010210:yuva444p
    
  • 交換 yuva444p 串流中的 Y 和 A 平面
    format=yuva444p,mergeplanes=0x03010200:yuva444p
    
  • 交換 yuv420p 串流中的 U 和 V 平面
    format=yuv420p,mergeplanes=0x000201:yuv420p
    
  • 將 rgb24 剪輯片段轉換為 yuv444p
    format=rgb24,mergeplanes=0x000102:yuv444p
    

39.165 mestimate

使用區塊比對演算法估算並匯出運動向量。運動向量儲存在影格邊數據中,供其他濾鏡使用。

此濾波器接受以下選項

method

指定運動估算方法。接受下列其中一個值

esa

窮舉搜尋演算法。

tss

三步搜尋演算法。

tdls

二維對數搜尋演算法。

ntss

新三步搜尋演算法。

fss

四步搜尋演算法。

ds

菱形搜尋演算法。

hexbs

六邊形基礎搜尋演算法。

epzs

增強型預測區域搜尋演算法。

umh

不均勻多六邊形搜尋演算法。

預設值為 ‘esa’。

mb_size

巨集區塊大小。預設 16

search_param

搜尋參數。預設 7

39.166 midequalizer

使用兩個視訊串流套用 Midway 影像等化效果。

Midway 影像等化調整一對影像使其具有相同的直方圖,同時盡可能維持其動態範圍。這對於例如匹配一對立體相機的曝光非常有用。

此濾鏡有兩個輸入和一個輸出,它們必須具有相同的像素格式,但可以有不同的大小。濾鏡的輸出是第一個輸入,並使用兩個輸入的中間直方圖進行調整。

此濾鏡接受以下選項

平面

設定要處理哪些平面。預設值為 15,即所有可用的平面。

39.167 minterpolate

使用運動插值將視訊轉換為指定的影格率。

此濾波器接受以下選項

fps (幀率)

指定輸出影格率。這可以是合理的,例如 60000/1001。如果 fps 低於來源 fps,則會丟棄影格。預設 60

mi_mode

運動插值模式。接受下列值

dup

複製前一個或下一個影格以內插新的影格。

blend

混合來源影格。插值影格是前一個和下一個影格的平均值。

mci

運動補償插值。當選擇此模式時,以下選項有效

mc_mode

運動補償模式。接受下列值

obmc

重疊區塊運動補償。

aobmc

自適應重疊區塊運動補償。視窗權重係數根據相鄰運動向量的可靠性自適應地控制,以減少過度平滑。

預設模式為 ‘obmc’。

me_mode

運動估算模式。接受下列值

bidir

雙向運動估算。運動向量針對每個來源影格在向前和向後方向上估算。

bilat

雙邊運動估算。運動向量直接針對插值影格估算。

預設模式為 ‘bilat’。

me

用於運動估算的演算法。接受下列值

esa

窮舉搜尋演算法。

tss

三步搜尋演算法。

tdls

二維對數搜尋演算法。

ntss

新三步搜尋演算法。

fss

四步搜尋演算法。

ds

菱形搜尋演算法。

hexbs

六邊形基礎搜尋演算法。

epzs

增強型預測區域搜尋演算法。

umh

不均勻多六邊形搜尋演算法。

預設演算法為 ‘epzs’。

mb_size

巨集區塊大小。預設 16

search_param

運動估算搜尋參數。預設 32

vsbmc

啟用可變大小區塊運動補償。運動估算在物件邊界處應用較小的區塊大小,以使其較不模糊。預設值為 0 (停用)。

scd

場景變換偵測方法。場景變換導致運動向量朝隨機方向。場景變換偵測將插值影格替換為重複的影格。對於其他模式可能不需要。接受下列值

none

停用場景變換偵測。

fdiff

影格差異。比較對應的像素值,如果滿足 scd_threshold,則偵測到場景變換。

預設方法為 ‘fdiff’。

scd_threshold

場景變換偵測閾值。預設值為 10

39.168 mix

將多個視訊輸入串流混合成一個視訊串流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

輸入

輸入數量。如果未指定,則預設為 2。

權重

將每個視訊輸入串流的權重指定為序列。每個權重以空格分隔。如果權重數量小於 frames 數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果已設定,它將與每個權重與像素值乘積的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放至權重總和。

平面

設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。

duration

指定如何確定串流結束。

longest

最長輸入的持續時間。(預設)

shortest

最短輸入的持續時間。

first

第一個輸入的持續時間。

39.168.1 指令

此濾波器支援以下命令

權重
scale
平面

語法與同名的選項相同。

39.169 monochrome

使用自訂色彩濾鏡將視訊轉換為灰階。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

cb

設定色度藍點。允許範圍為 -1 到 1。預設值為 0。

cr

設定色度紅點。允許範圍為 -1 到 1。預設值為 0。

size

f

設定色彩濾鏡大小。允許範圍為 .1 到 10。預設值為 1。

39.169.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.170 morpho

h

設定高光強度。允許範圍為 0 到 1。預設值為 0。

此濾鏡允許應用主要形態學灰階轉換,腐蝕和膨脹,結構可以從第二個輸入串流中任意設定。

level_in

erosiondilation 濾鏡中的簡單實作和較慢效能不同,當速度至關重要時,應改用 morpho 濾鏡。

接受選項的描述如下,
type
設定要應用的形態學轉換,可以是
erode
dilate
open
close

gradient

平面

tophat

blackhat

預設值為 erode

planes

39.170.1 指令

此濾鏡支援與選項相同的 commands

39.171 mpdecimate

設定要濾鏡的平面,預設情況下,除了 alpha 平面之外的所有平面都會被濾鏡。

structure

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

max

設定將從第二個輸入串流處理哪個結構視訊影格,可以是 firstall。預設值為 all

預設值為 0。

morpho 濾鏡也支援 framesync 選項。

為了降低影格率,丟棄與前一個影格差異不大的影格。

預設值為 0。

此濾鏡的主要用途是用於極低位元率編碼(例如,透過撥接數據機串流),但在理論上,它可以用於修復錯誤地進行反向電視電影處理的電影。
max_drop
設定可以丟棄的最大連續影格數(如果為正數),或丟棄影格之間的最小間隔(如果為負數)。如果值為 0,則丟棄影格,而忽略先前依序丟棄的影格數。

max_keep

keep

設定在開始丟棄相似影格之前要忽略的最大連續相似影格數。如果值為 0,則丟棄影格,而忽略先前依序相似的影格數。

thresholds

39.172 msad

hi

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入都具有相同數量的影格,這些影格會逐一比較。

lo

frac

此濾鏡也支援 framesync 選項。

在下面的範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -

39.173 multiply

設定丟棄閾值。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

scale

hilo 的值適用於 8x8 像素區塊,並表示實際的像素值差異,因此閾值 64 對應於每個像素 1 個單位的差異,或相同的值以不同方式分佈在區塊上。

offset

如果沒有 8x8 區塊的差異超過 hi 的閾值,並且如果沒有超過 frac 個區塊(1 表示整個影像)的差異超過 lo 的閾值,則影格是丟棄的候選者。

平面

hi 的預設值為 64*12,lo 的預設值為 64*5,frac 的預設值為 0.33。

39.173.1 指令

此濾鏡支援與選項相同的 commands

39.174 negate

取得兩個輸入視訊之間的 MSAD(平均絕對差總和)。

它接受以下選項

components

獲得的每個組件、平均值、最小值和最大值 MSAD 都會透過記錄系統印出。

濾鏡將每個影格的計算 MSAD 儲存在影格元數據中。

y
u
v
a
r
g
b
將第一個視訊串流的像素值與第二個視訊串流的像素值相乘。

scale1

39.174.1 指令

此濾鏡支援與選項相同的 commands

39.175 nlmeans

scale0

設定應用於第二個視訊串流的縮放比例。預設值為 1。允許範圍為 0 到 9。

offset

此濾鏡接受以下選項。

s

設定應用於第二個視訊串流的偏移量。預設值為 0.5。允許範圍為 -1 到 1。

p

planes

pc

指定將要處理的輸入視訊串流中的平面。預設情況下,所有平面都會被處理。

負片(反轉)輸入視訊。

r

components

rc

設定要負片的組件。

負片(反轉)輸入視訊。

39.176 nnedi

可用的組件值為

此濾波器接受以下選項

權重

negate_alpha

deint

值為 1 時,如果存在 alpha 組件,則會負片 alpha 組件。預設值為 0。

field

使用非局部均值演算法對影格進行去噪。

可以是下列其中之一:

每個像素都會透過尋找具有相似上下文的其他像素來調整。此上下文相似性是透過比較其大小為 pxp 的周圍色塊來定義的。在像素周圍 rxr 的區域中搜尋色塊。

請注意,研究區域定義了色塊的中心,這表示某些色塊將由研究區域外部的像素組成。

a

strength

t

設定去噪強度。預設值為 1.0。必須在 [1.0, 30.0] 範圍內。

b

p

tf

設定色塊大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。

bf

pc

平面

p 相同,但適用於色度平面。

預設值為 0,表示自動。

r

可以是下列其中之一:

設定研究大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。
rc
r 相同,但適用於色度平面。
使用神經網路邊緣導向插值對視訊進行反交錯處理。
weights
強制選項,沒有二進位檔案濾鏡無法運作。目前檔案可以在這裡找到:https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
deinterlace
設定要反交錯處理哪些影格,預設情況下為 all。可以是 allinterlaced

mode

設定操作模式。
af
使用影格標誌,兩個場。
pf
使用影格標誌,單個場。
tf

僅使用頂場。

bf

僅使用底場。

tff

使用兩個場,頂場優先。

bff

使用兩個場,底場優先。

planes

設定要處理哪些平面,預設情況下,濾鏡會處理所有影格。

可以是下列其中之一:

none
nsize
設定每個像素周圍局部鄰域的大小,由預測器神經網路使用。
s8x6
s16x6

s32x6

39.176.1 指令

s48x6

39.177 noformat

s8x4

它接受以下參數

pix_fmts

s16x4

39.177.1 範例

  • s32x4
    noformat=pix_fmts=yuv420p,vflip
    
  • nns
    noformat=yuv420p|yuv444p|yuv410p
    

39.178 noise

設定預測器神經網路中的神經元數量。可以是以下其中之一

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

n16
n32
n64
n128
n256

qual

控制混合在一起以計算最終輸出值的不同神經網路預測的數量。可以是 fast、預設或 slow
etype
設定要在預測器中使用的權重集。可以是以下其中之一
a, abs
訓練權重以最小化絕對誤差

s, mse

訓練權重以最小化平方誤差
pscrn
控制是否使用預篩選器神經網路來決定哪些像素應由預測器神經網路處理,哪些像素可以由簡單的三次內插處理。預篩選器經過訓練,可以知道三次內插對於像素是否足夠,或者是否應由預測器 nn 預測。預篩選器 nn 的計算複雜度遠低於預測器 nn。由於大多數像素都可以透過三次內插處理,因此使用預篩選器通常會導致更快的處理速度。預篩選器非常準確,因此使用它與不使用它之間的差異幾乎總是難以察覺。
ps_type
original

new

a

new2

p

new3

t

預設值為 new

u

此濾鏡支援與選項相同的 commands,但排除 weights 選項。

39.178.1 範例

forbidden_formats

noise=alls=20:allf=t+u

39.179 normalize

強制 libavfilter 不要使用任何指定的像素格式作為下一個濾鏡的輸入。

pix_fmts

以 ’|’ 分隔的像素格式名稱列表,例如 pix_fmts=yuv420p|monow|rgb24"。

範例

強制 libavfilter 對於 vflip 濾鏡的輸入使用與 yuv420p 不同的格式

pix_fmts=yuv420p
將輸入視訊轉換為列表中未包含的任何格式

noise

short

在視訊輸入影格上新增雜訊。

all_seed

c0_seed

strength

c1_seed

39.179.1 指令

c2_seed

如果指定的表達式無效,則會保持其目前值。

39.179.2 範例

c3_seed

normalize=blackpt=black:whitept=white:smoothing=0

all_seed 的情況下,設定特定像素組件或所有像素組件的雜訊種子。預設值為 123457

normalize=blackpt=black:whitept=white:smoothing=50

all_strength, alls

normalize=blackpt=black:whitept=white:smoothing=50:independence=0

c0_strength, c0s

normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5

c1_strength, c1s

normalize=blackpt=red:whitept=cyan

39.180 null

c2_strength, c2s

39.181 ocr

c3_strength, c3s

all_strength 的情況下,設定特定像素組件或所有像素組件的雜訊強度。預設值為 0。允許範圍為 [0, 100]。

它接受以下選項

all_flags, allf

c0_flags, c0f

language

c1_flags, c1f

c2_flags, c2f

c3_flags, c3f

如果為 all_flags,則設定像素組件標誌或設定所有組件的標誌。組件標誌的可用值為

temporal

averaged temporal noise

39.182 ocv

平均時間雜訊(更平滑)

pattern

它接受以下參數

filter_name (濾鏡名稱)

mix random noise with a (semi)regular pattern

filter_params

將隨機雜訊與(半)規則模式混合

請參閱 libopencv 官方文件以取得更精確的資訊:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html

支援數種 libopencv 濾鏡;請參閱以下子章節。

39.182.1 膨脹

使用特定的結構元素來膨脹影像。這對應於 libopencv 函數 cvDilate

它接受以下參數:struct_el|nb_iterations

struct_el 代表結構元素,其語法為:colsxrows+anchor_xxanchor_y/shape

colsrows 代表結構元素的欄數和列數,anchor_xanchor_y 代表錨點,而 shape 代表結構元素的形狀。shape 必須是 "rect"、"cross"、"ellipse" 或 "custom"。

如果 shape 的值為 "custom",則必須後接 "filename" 形式的字串。名稱為 filename 的檔案應代表二元影像,每個可列印字元對應一個亮像素。當使用自訂 shape 時,colsrows 會被忽略,而是採用讀取檔案的欄數和列數。

struct_el 的預設值為 "3x3+0x0/rect"。

nb_iterations 指定轉換應用於影像的次數,預設值為 1。

一些範例

# Use the default values
ocv=dilate

# Dilate using a structuring element with a 5x5 cross, iterating two times
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2

# Read the shape from the file diamond.shape, iterating two times.
# The file diamond.shape may contain a pattern of characters like this
#   *
#  ***
# *****
#  ***
#   *
# The specified columns and rows are ignored
# but the anchor point coordinates are not
ocv=dilate:0x0+2x2/custom=diamond.shape|2

39.182.2 侵蝕

使用特定的結構元素來侵蝕影像。這對應於 libopencv 函數 cvErode

它接受以下參數:struct_el:nb_iterations,其語法和語意與 dilate 濾鏡相同。

39.182.3 平滑

平滑化輸入影片。

此濾鏡接受以下參數:type|param1|param2|param3|param4

type 是要套用的平滑濾鏡類型,且必須是以下值之一:"blur"、"blur_no_scale"、"median"、"gaussian" 或 "bilateral"。預設值為 "gaussian"。

param1param2param3param4 的意義取決於平滑類型。param1param2 接受正整數值或 0。param3param4 接受浮點數值。

param1 的預設值為 3。其他參數的預設值為 0。

這些參數對應於指派給 libopencv 函數 cvSmooth 的參數。

39.183 oscilloscope

2D 影片示波器。

適用於測量空間脈衝、步階響應、色度延遲等。

它接受以下參數

x

設定示波器中心 x 位置。

y

設定示波器中心 y 位置。

s

設定示波器大小,相對於影格對角線。

t

設定示波器傾斜/旋轉。

傳遞第二個輸入。

設定追蹤不透明度。

tx

設定追蹤中心 x 位置。

ty

設定追蹤中心 y 位置。

tw

設定追蹤寬度,相對於影格寬度。

th

設定追蹤高度,相對於影格高度。

c

設定要追蹤的組件。預設情況下,它會追蹤前三個組件。

g

繪製追蹤網格。預設為啟用。

st

繪製一些統計資訊。預設為啟用。

sc

繪製示波器。預設為啟用。

39.183.1 指令

此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.183.2 範例

  • 檢查影片影格的第一列完整內容。
    oscilloscope=x=0.5:y=0:s=1
    
  • 檢查影片影格的最後一列完整內容。
    oscilloscope=x=0.5:y=1:s=1
    
  • 檢查高度為 1080 的影片影格的第 5 行完整內容。
    oscilloscope=x=0.5:y=5/1080:s=1
    
  • 檢查影片影格的最後一欄完整內容。
    oscilloscope=x=1:y=0.5:s=1:t=1
    

39.184 overlay

將一個影片疊加在另一個影片之上。

它接受兩個輸入並產生一個輸出。第一個輸入是 "主要" 影片,第二個輸入疊加在其上。

它接受以下參數

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

x
y

設定疊加影片在主要影片上的 x 和 y 座標的表達式。兩個表達式的預設值均為 "0"。如果表達式無效,則會將其設定為極大的值 (表示疊加將不會顯示在輸出可見區域內)。

eof_action

請參閱 framesync

eval

設定何時評估 xy 的表達式。

它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個輸入幀評估表達式

預設值為 ‘frame’。

shortest

請參閱 framesync

格式

設定輸出影片的格式。

它接受以下值

yuv420

強制 YUV 4:2:0 8 位元平面輸出

yuv420p10

強制 YUV 4:2:0 10 位元平面輸出

yuv422

強制 YUV 4:2:2 8 位元平面輸出

yuv422p10

強制 YUV 4:2:2 10 位元平面輸出

yuv444

強制 YUV 4:4:4 8 位元平面輸出

yuv444p10

強制 YUV 4:4:4 10 位元平面輸出

rgb

強制 RGB 8 位元封裝輸出

gbrp

強制 RGB 8 位元平面輸出

auto

自動選取格式

預設值為 ‘yuv420’。

repeatlast

請參閱 framesync

alpha

設定疊加影片的 alpha 格式,可以是 straightpremultiplied。預設值為 straight

xy 表達式可以包含以下參數。

main_w, W
main_h, H

主要輸入的寬度和高度。

overlay_w, w
overlay_h, h

疊加輸入的寬度和高度。

x
y

xy 的計算值。它們是針對每個新影格評估的。

hsub
vsub

輸出格式的水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

n

輸入影格編號,從 0 開始

pos

輸入幀在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

t

時間戳記,以秒為單位表示。如果輸入時間戳記未知,則為 NAN。

此濾鏡也支援 framesync 選項。

請注意,nt 變數僅在每個影格執行評估時可用,並且當 eval 設定為 ‘init’ 時,將評估為 NAN。

請注意,影格是依時間戳記順序從每個輸入影片中取得的,因此,如果它們的初始時間戳記不同,最好將兩個輸入都傳遞到 setpts=PTS-STARTPTS 濾鏡,使其從相同的零時間戳記開始,如 movie 濾鏡的範例所示。

您可以鏈結更多疊加,但您應測試此方法的效率。

39.184.1 指令

此濾波器支援以下命令

x
y

修改疊加輸入的 x 和 y 座標。此命令接受對應選項的相同語法。

如果指定的表達式無效,則會保持其目前值。

39.184.2 範例

  • 在主要影片右下角 10 像素處繪製疊加
    overlay=main_w-overlay_w-10:main_h-overlay_h-10
    

    使用具名選項,上述範例變成

    overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
    
  • 使用 ffmpeg 工具和 -filter_complex 選項,在輸入的左下角插入透明 PNG 標誌
    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • 使用 ffmpeg 工具插入 2 個不同的透明 PNG 標誌 (第二個標誌在右下角)
    ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
    
  • 在主要影片頂部新增透明顏色圖層;WxH 必須指定疊加濾鏡的主要輸入大小
    color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
    
  • 並排播放原始影片和已濾鏡版本 (此處使用 deshake 濾鏡),使用 ffplay 工具
    ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
    

    上述命令與以下命令相同

    ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
    
  • 製作從螢幕左側滑動到右側頂部的滑動疊加,從時間 2 開始
    overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
    
  • 並排放置兩個輸入影片以組成輸出
    ffmpeg -i left.avi -i right.avi -filter_complex "
    nullsrc=size=200x100 [background];
    [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
    [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
    [background][left]       overlay=shortest=1       [background+left];
    [background+left][right] overlay=shortest=1:x=100 [left+right]
    "
    
  • 透過將 delogo 濾鏡應用於某個區段,遮罩影片的 10-20 秒
    ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
    -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
    masked.avi
    
  • 串聯多個疊加
    nullsrc=s=200x200 [bg];
    testsrc=s=100x100, split=4 [in0][in1][in2][in3];
    [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
    [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
    [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
    [in3] null,       [mid2] overlay=100:100 [out0]
    

39.185 overlay_cuda

將一個影片疊加在另一個影片之上。

這是 overlay 濾鏡的 CUDA 變體。它僅接受 CUDA 影格。底層輸入像素格式必須相符。

它接受兩個輸入並產生一個輸出。第一個輸入是 "主要" 影片,第二個輸入疊加在其上。

它接受以下參數

x
y

設定疊加影片在主要影片上的 x 和 y 座標的表達式。

它們可以包含以下參數

main_w, W
main_h, H

主要輸入的寬度和高度。

overlay_w, w
overlay_h, h

疊加輸入的寬度和高度。

x
y

xy 的計算值。它們是針對每個新影格評估的。

n

主要輸入影格的序數索引,從 0 開始。

pos

主要輸入影格在檔案中的位元組偏移位置,如果未知則為 NAN。已棄用,請勿使用。

t

主要輸入影格的時間戳記,以秒為單位表示,如果未知則為 NAN。

兩個表達式的預設值均為 "0"。

eval

設定何時評估 xy 的表達式。

它接受以下值

init

在濾鏡初始化期間或處理命令時評估表達式一次。

frame

針對每個傳入的影格評估表達式

預設值為 frame

eof_action

請參閱 framesync

shortest

請參閱 framesync

repeatlast

請參閱 framesync

此濾鏡也支援 framesync 選項。

39.186 owdenoise

套用過完備小波去噪器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

depth

設定深度。

較大的深度值將更多地對低頻組件進行去噪,但會減慢濾鏡速度。

必須是 8-16 範圍內的整數,預設值為 8

luma_strength, ls

設定亮度強度。

必須是 0-1000 範圍內的雙精度值,預設值為 1.0

chroma_strength, cs

設定色度強度。

必須是 0-1000 範圍內的雙精度值,預設值為 1.0

39.187 pad

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標。

它接受以下參數

寬度, w
高度,h

指定包含填充的新增輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出會使用對應的輸入大小。

width 表達式可以參考由 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考由 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

color 的預設值為 "black"。

eval

指定何時評估 widthheightxy 表達式。

它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次。

frame

為每個輸入幀評估表達式。

預設值為 ‘init’。

aspect

填充至長寬比,而非解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入影片寬度和高度。

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度 (填充區域的大小),由 widthheight 表達式指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,由 xy 表達式指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

39.187.1 範例

  • 使用顏色 "violet" 將填充新增至輸入影片。輸出影片大小為 640x480,輸入影片的左上角放置在欄 0、列 40
    pad=640:480:0:40:violet
    

    上述範例等同於以下命令

    pad=width=640:height=480:x=0:y=40:color=violet
    
  • 填充輸入以取得尺寸增加 3/2 的輸出,並將輸入影片放置在填充區域的中心
    pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
    
  • 填充輸入以取得大小等於輸入寬度和高度之間最大值的正方形輸出,並將輸入影片放置在填充區域的中心
    pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
    
  • 填充輸入以取得 16:9 的最終寬高比
    pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 對於變形影片,為了正確設定輸出顯示長寬比,有必要在表達式中使用 sar,根據關係
    (ih * X / ih) * sar = output_dar
    X = output_dar / sar
    

    因此,先前的範例需要修改為

    pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 將輸出大小加倍,並將輸入影片放置在輸出填充區域的右下角
    pad="2*iw:2*ih:ow-iw:oh-ih"
    

39.188 palettegen

為整個影片串流產生一個調色盤。

它接受以下選項

max_colors

設定要在調色盤中量化的最大顏色數。注意:調色盤仍將包含 256 種顏色;未使用的調色盤項目將為黑色。

reserve_transparent

建立最多 255 種顏色的調色盤,並保留最後一種顏色用於透明度。保留透明顏色對於 GIF 優化很有用。如果未設定,則調色盤中的最大顏色數將為 256。對於獨立影像,您可能想要停用此選項。預設為設定。

transparency_color

設定將用作透明度背景的顏色。

stats_mode

設定統計模式。

它接受以下值

full

full

計算完整影格直方圖。

diff

僅針對與前一個影格不同的部分計算直方圖。如果背景是靜態的,這可能與更重視輸入的移動部分有關。

single

為每個影格計算新的直方圖。

預設值為 full

39.188.1 範例

  • 濾鏡還會匯出影格元數據 lavfi.color_quant_ratio (nb_color_in / nb_color_out),您可以使用它來評估調色盤的顏色量化程度。此資訊在 info 記錄層級也可見。
    ffmpeg -i input.mkv -vf palettegen palette.png
    

39.189 paletteuse

使用 ffmpeg 產生給定影片的代表性調色盤

使用調色盤來降採樣輸入影片串流。

它接受以下選項

dither

此濾鏡接受兩個輸入:一個影片串流和一個調色盤。調色盤必須是 256 像素的影像。

bayer

選取抖動模式。可用的演算法為

bayer

有序 8x8 bayer 抖動 (確定性)

heckbert

Paul Heckbert 在 1982 年定義的抖動 (簡單錯誤擴散)。注意:此抖動有時被認為是 "錯誤的",僅作為參考包含在內。

floyd_steinberg

Floyd 和 Steingberg 抖動 (錯誤擴散)

sierra2

Frankie Sierra 抖動 v2 (錯誤擴散)

sierra2_4a

Frankie Sierra 抖動 v2 "Lite" (錯誤擴散)

sierra3

Frankie Sierra 抖動 v3 (錯誤擴散)

burkes

Burkes 抖動 (錯誤擴散)

none

atkinson

Apple Computer 的 Bill Atkinson 抖動 (錯誤擴散)

none

停用抖動。

預設值為 sierra2_4a

bayer_scale

當選取 bayer 抖動時,此選項定義模式的比例 (交叉影線模式的可見程度)。較低的值表示更可見的模式以減少條帶,而較高的值表示較不明顯的模式,但會以更多條帶為代價。

此選項必須是 [0,5] 範圍內的整數值。預設值為 2

diff_mode

如果設定,定義要處理的區域

new

為每個輸出影格採用新的調色盤。

alpha_threshold

設定透明度的 Alpha 臨界值。Alpha 值高於此臨界值將被視為完全不透明,而低於此臨界值的值將被視為完全透明。

此選項必須是 [0,255] 範圍內的整數值。預設值為 128

39.189.1 範例

  • 使用調色盤(例如使用 palettegen 產生)以 ffmpeg 編碼 GIF
    ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

39.190 perspective

修正未垂直於螢幕錄製的影片的視角。

以下是接受參數的描述。

x0
y0
x1
y1
x2
y2
x3
y3

設定左上角、右上角、左下角和右下角的座標表達式。預設值為 0:0:W:0:0:H:W:H,視角將保持不變。如果 sense 選項設定為 source,則指定的點將傳送到目標的角落。如果 sense 選項設定為 destination,則來源的角落將傳送到指定的座標。

表達式可以使用以下變數

W
H

影片影格的寬度和高度。

in

輸入影格計數。

on

輸出影格計數。

interpolation

設定視角校正的插值方式。

它接受以下值

linear
cubic

預設值為 ‘linear’。

sense

設定座標選項的解讀方式。

它接受以下值

0, source

將來源中由給定座標指定的點傳送到目標的角落。

1, destination

將來源的角落傳送到目標中由給定座標指定的點。

預設值為 ‘source’。

eval

設定何時評估座標 x0,y0,...x3,y3 的表達式。

它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個輸入幀評估表達式

預設值為 ‘init’。

39.191 phase

將交錯視訊延遲一個場時間,以便場序變更。

預期用途是修正 PAL 電影,這些電影的場序與膠卷到視訊轉換的場序相反。

以下是接受參數的描述。

level_in

設定相位模式。

它接受以下值

t

擷取場序為頂場優先,傳輸為底場優先。濾鏡將延遲底場。

b

擷取場序為底場優先,傳輸為頂場優先。濾鏡將延遲頂場。

p

以相同的場序擷取和傳輸。此模式僅為了說明其他選項而存在,但如果您實際選擇它,濾鏡將忠實地不做任何事。

a

擷取場序由場標誌自動決定,傳輸相反。濾鏡會根據影格的場標誌,在 ‘t’ 和 ‘b’ 模式之間選擇。如果沒有可用的場資訊,則此模式的工作方式與 ‘u’ 相同。

u

擷取未知或變動的場序,傳輸相反。濾鏡會根據影像分析在 ‘t’ 和 ‘b’ 之間選擇,並選擇產生最佳場匹配的替代方案。

T

擷取頂場優先,傳輸未知或變動。濾鏡使用影像分析在 ‘t’ 和 ‘p’ 之間選擇。

B

擷取底場優先,傳輸未知或變動。濾鏡使用影像分析在 ‘b’ 和 ‘p’ 之間選擇。

A

擷取由場標誌決定,傳輸未知或變動。濾鏡使用場標誌和影像分析在 ‘t’、‘b’ 和 ‘p’ 之間選擇。如果沒有可用的場資訊,則此模式的工作方式與 ‘U’ 相同。這是預設模式。

U

擷取和傳輸皆未知或變動。濾鏡僅使用影像分析在 ‘t’、‘b’ 和 ‘p’ 之間選擇。

39.191.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.192 photosensitivity

減少影片中各種閃爍,以幫助癲癇症患者。

它接受以下選項

frames, f

設定過濾時要使用的影格數。預設值為 30。

threshold, t

設定偵測臨界值因子。預設值為 1。值越低越嚴格。

skip

設定取樣影格時要跳過的像素數。預設值為 1。允許範圍為 1 到 1024。

bypass

保持影格不變。預設為停用。

39.193 pixdesctest

像素格式描述符測試濾鏡,主要用於內部測試。輸出影片應與輸入影片相同。

例如

format=monow, pixdesctest

可用於測試單色白色像素格式描述符定義。

39.194 pixelize

將像素化效果應用於視訊串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

寬度, w
高度,h

設定將用於像素化的區塊尺寸。預設值為 16

mode, m

設定使用的像素化模式。

可能的值為

avg
min
max

預設值為 avg

planes, p

設定要過濾的平面。預設為過濾所有平面。

39.194.1 指令

此濾鏡支援所有選項作為 commands

39.195 pixscope

顯示色彩通道的範例值。主要用於檢查色彩和色階。最低支援解析度為 640x480。

濾鏡接受以下選項

x

設定示波器 X 位置,X 軸上的相對偏移量。

y

設定示波器 Y 位置,Y 軸上的相對偏移量。

w

設定示波器寬度。

h

設定示波器高度。

傳遞第二個輸入。

設定視窗不透明度。此視窗也包含有關像素區域的統計資訊。

wx

設定視窗 X 位置,X 軸上的相對偏移量。

wy

設定視窗 Y 位置,Y 軸上的相對偏移量。

39.195.1 指令

此濾鏡支援與選項相同的 commands

39.196 pp

使用 libpostproc 啟用指定的後處理子濾鏡鏈。此函式庫應使用 GPL 建置 (--enable-gpl) 自動選取。子濾鏡必須以 ‘/’ 分隔,並且可以透過在前面加上 ‘-’ 來停用。每個子濾鏡和一些選項都有一個短名稱和一個長名稱,可以互換使用,即 dr/dering 是相同的。

濾鏡接受以下選項

subfilters

設定後處理子濾鏡字串。

所有子濾鏡都共用通用選項來決定它們的範圍

a/autoq

遵守此子濾鏡的品質命令。

c/chrom

也執行色度過濾 (預設)。

y/nochrom

僅執行亮度過濾 (無色度)。

n/noluma

僅執行色度過濾 (無亮度)。

這些選項可以附加在子濾鏡名稱之後,以 ‘|’ 分隔。

可用的子濾鏡有

hb/hdeblock[|difference[|flatness]]

水平解塊濾鏡

difference

差異因子,值越高表示解塊越多 (預設值:32)。

平坦度

平坦度臨界值,值越低表示解塊越多 (預設值:39)。

vb/vdeblock[|difference[|flatness]]

垂直解塊濾鏡

difference

差異因子,值越高表示解塊越多 (預設值:32)。

平坦度

平坦度臨界值,值越低表示解塊越多 (預設值:39)。

ha/hadeblock[|difference[|flatness]]

精確水平解塊濾鏡

difference

差異因子,值越高表示解塊越多 (預設值:32)。

平坦度

平坦度臨界值,值越低表示解塊越多 (預設值:39)。

va/vadeblock[|difference[|flatness]]

精確垂直解塊濾鏡

difference

差異因子,值越高表示解塊越多 (預設值:32)。

平坦度

平坦度臨界值,值越低表示解塊越多 (預設值:39)。

水平和垂直解塊濾鏡共用差異和平坦度值,因此您無法設定不同的水平和垂直臨界值。

h1/x1hdeblock

實驗性水平解塊濾鏡

v1/x1vdeblock

實驗性垂直解塊濾鏡

dr/dering

去環狀雜訊濾鏡

tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], 時間雜訊抑制器
threshold1

值越大 -> 過濾越強

threshold2

值越大 -> 過濾越強

threshold3

值越大 -> 過濾越強

al/autolevels[:f/fullyrange], 自動亮度/對比度校正
f/fullyrange

將亮度拉伸到 0-255

lb/linblenddeint

線性混合去交錯濾鏡,透過使用 (1 2 1) 濾鏡過濾所有線條來去交錯給定的區塊。

li/linipoldeint

線性插值去交錯濾鏡,透過線性內插每隔一行來去交錯給定的區塊。

ci/cubicipoldeint

三次插值去交錯濾鏡,透過三次內插每隔一行來去交錯給定的區塊。

md/mediandeint

中值去交錯濾鏡,透過將中值濾鏡應用於每隔一行來去交錯給定的區塊。

fd/ffmpegdeint

FFmpeg 去交錯濾鏡,透過使用 (-1 4 2 4 -1) 濾鏡過濾每隔一行來去交錯給定的區塊。

l5/lowpass5

垂直應用 FIR 低通去交錯濾鏡,透過使用 (-1 2 6 2 -1) 濾鏡過濾所有線條來去交錯給定的區塊。

fq/forceQuant[|quantizer]

使用您指定的常數量化器覆寫來自輸入的量化器表。

quantizer

要使用的量化器

de/default

預設 pp 濾鏡組合 (hb|a,vb|a,dr|a)

fa/fast

快速 pp 濾鏡組合 (h1|a,v1|a,dr|a)

ac

高品質 pp 濾鏡組合 (ha|a|128|7,va|a,dr|a)

39.196.1 範例

  • 應用水平和垂直解塊、去環狀雜訊和自動亮度/對比度
    pp=hb/vb/dr/al
    
  • 應用預設濾鏡,但不包含亮度/對比度校正
    pp=de/-al
    
  • 應用預設濾鏡和時間降噪器
    pp=default/tmpnoise|1|2|3
    
  • 僅對亮度應用解塊,並根據可用的 CPU 時間自動開啟或關閉垂直解塊
    pp=hb|y/vb|a
    

39.197 pp7

應用後處理濾鏡 7。它是 spp 濾鏡的變體,類似於 spp = 6,具有 7 點 DCT,其中在 IDCT 後僅使用中心樣本。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

qp

強制使用常數量化參數。它接受範圍 0 到 63 的整數。如果未設定,濾鏡將使用來自視訊串流的 QP (如果可用)。

level_in

設定臨界值模式。可用的模式為

hard

設定硬臨界值。

soft

設定軟臨界值 (去環狀雜訊效果更好,但可能更模糊)。

medium

設定中等臨界值 (效果良好,預設值)。

39.198 premultiply

使用第二個串流的第一個平面作為 Alpha,對輸入視訊串流應用 Alpha 預乘效果。

兩個串流必須具有相同的尺寸和相同的像素格式。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 Alpha 平面。

39.199 prewitt

對輸入視訊串流應用 Prewitt 運算子。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

scale

設定將與濾鏡結果相乘的值。

設定濾鏡 mu。

設定將添加到濾鏡結果的值。

39.199.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.200 pseudocolor

使用假色變更影片中的影格顏色。

此濾波器接受以下選項

c0

設定像素第一分量表達式

c1

設定像素第二分量表達式

c2

設定像素第三分量表達式

c3

設定像素第四分量表達式,對應於 Alpha 分量

index, i

設定要用作變更色彩基礎的分量

preset, p

挑選內建 LUT 之一。預設設定為無。

可用的 LUT

magma
inferno
plasma
viridis
turbo
cividis
range1
range2
shadows
highlights
solar
nominal
preferred
total
spectral
cool
heat
fiery
blues
green
helix
opacity

設定輸出色彩的不透明度。允許範圍為 0 到 1。預設值設定為 1。

每個表達式選項都指定用於計算對應像素分量值的查找表的表達式。

表達式可以包含以下常數和函式

w
h

輸入寬度和高度。

值 (明度)

像素組件的輸入值。

ymin, umin, vmin, amin

允許的最小分量值。

ymax, umax, vmax, amax

允許的最大分量值。

所有表達式預設為 "val"。

39.200.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.200.2 範例

  • 將過高的亮度值變更為漸層
    pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
    

39.201 psnr

取得兩個輸入影片之間的平均、最大和最小 PSNR (峰值訊噪比)。

此濾鏡接收兩個輸入影片,第一個輸入被視為「主要」來源,並以不變的方式傳遞到輸出。第二個輸入用作計算 PSNR 的「參考」影片。

為了使此濾鏡正常工作,兩個視訊輸入必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

取得的平均 PSNR 會透過記錄系統列印出來。

濾鏡會儲存每個影格的累積 MSE (均方誤差),並且在處理結束時,它會在所有影格之間平均分配,並應用以下公式來取得 PSNR

PSNR = 10*log10(MAX^2/MSE)

其中 MAX 是影像每個分量最大值的平均值。

以下為接受參數的描述。

stats_file, f

如果指定,濾鏡將使用指定的檔案來儲存每個個別影格的 PSNR。當檔案名稱等於 "-" 時,資料會傳送到標準輸出。

stats_version

指定要使用的統計資料檔案格式版本。每個格式的詳細資訊寫在下面。預設值為 1。

stats_add_max

決定是否將最大值輸出到統計資料日誌。預設值為 0。需要 stats_version >= 2。如果設定此選項且 stats_version < 2,濾鏡將傳回錯誤。

此濾鏡也支援 framesync 選項。

如果選取 stats_file,則列印的檔案包含每個比較的影格對的 key:value 形式的鍵/值對序列。

如果指定大於 1 的 stats_version,則在每個影格對統計資料列表之前會加上一個標頭行,其中包含遵循影格格式的鍵值對,以及以下參數

psnr_log_version

日誌檔案格式的版本。將與 stats_version 匹配。

fields

包含在日誌中的每個影格對參數的逗號分隔列表。

以下是每個顯示的每個影格對參數的描述

n

輸入影格的序號,從 1 開始

mse_avg

比較影格的逐像素平均差異的均方誤差,在所有影像分量上取平均值。

mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a

比較影格的逐像素平均差異的均方誤差,用於由後綴指定的分量。

psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a

比較影格的峰值訊噪比,用於由後綴指定的分量。

max_avg, max_y, max_u, max_v

每個通道允許的最大值,以及所有通道的平均值。

39.201.1 範例

  • 例如
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] psnr="stats_file=stats.log" [out]
    

    在此範例中,正在處理的輸入檔案與參考檔案 ref_movie.mpg 進行比較。每個個別影格的 PSNR 儲存在 stats.log 中。

  • 另一個具有不同容器的範例
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
    

39.202 pullup

下拉反轉 (反向電影電視) 濾鏡,能夠處理混合的硬式電影電視、24000/1001 fps 漸進式和 30000/1001 fps 漸進式內容。

pullup 濾鏡旨在利用未來的上下文來做出決策。此濾鏡是無狀態的,因為它不會鎖定要遵循的模式,而是向前查看後續場,以識別匹配項並重建漸進式影格。

為了產生幀率均勻的內容,請在 pullup 濾鏡之後插入 fps 濾鏡,如果輸入幀率為 29.97fps,請使用 fps=24000/1001,如果輸入幀率為 30fps,請使用 fps=24,而對於(罕見的)電視電影 25fps 輸入,也請使用 fps=24

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

jl
jr
jt
jb

這些選項分別設定要忽略影像左側、右側、頂部和底部的「雜訊」量。左側和右側的單位為 8 像素,而頂部和底部的單位為 2 行。預設值為每側 8 像素。

sb

設定嚴格中斷。將此選項設定為 1 會減少濾鏡產生偶爾不匹配幀的可能性,但也可能導致在高動態序列期間丟棄過多的幀。相反地,將其設定為 -1 會使濾鏡更容易匹配場景。這可能有助於處理場景之間有輕微模糊的影片,但也可能導致輸出中出現交錯幀。預設值為 0

mp

設定要使用的度量平面。它接受以下值

l

使用亮度平面。

u

使用色度藍色平面。

v

使用色度紅色平面。

可以設定此選項以使用色度平面而不是預設的亮度平面來進行濾鏡的計算。這可能會提高非常乾淨的來源素材的準確性,但更可能降低準確性,尤其是在存在色度雜訊(彩虹效應)或任何灰階影片的情況下。設定 mp 為色度平面的主要目的是減少 CPU 負載,並使 pullup 在慢速機器上即時可用。

為了獲得最佳效果(在輸出檔案中沒有重複幀),有必要更改輸出幀率。例如,要反向電視電影 NTSC 輸入

ffmpeg -i input -vf pullup -r 24000/1001 ...

39.203 qp

更改影片量化參數 (QP)。

此濾波器接受以下選項

qp

設定量化參數的表達式。

該表達式透過 eval API 評估,並且可以包含以下常數

known

如果索引不是 129,則為 1,否則為 0。

qp

從 -129 到 128 的循序索引。

39.203.1 範例

  • 類似以下的方程式
    qp=2+2*sin(PI*qp)
    

39.204 qrencode

使用 libqrencode 函式庫(請參閱 https://fukuchi.org/works/qrencode/)產生 QR 碼,並將其覆蓋在目前幀的頂部。

若要啟用此濾鏡的編譯,您需要使用 --enable-libqrencode 配置 FFmpeg。

QR 碼是從提供的文字或文字模式產生的。對應的 QR 碼會根據指定的選項進行縮放並覆蓋到影片輸出中。

如果未指定文字,則不會覆蓋 QR 碼。

此濾波器接受以下選項

qrcode_width, q
padded_qrcode_width, Q

指定用於呈現的 QR 碼寬度的表達式,包括含填充和不含填充。 qrcode_width 表達式可以參考由 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。

這些表達式會針對每個新幀進行評估。

有關詳細資訊,請參閱 qrencode 表達式 章節。

x
y

指定用於定位含填充 QR 碼左上角的表達式。 x 表達式可以參考由 y 表達式設定的值,反之亦然。

預設情況下,xy 都設定為 0,表示 QR 碼放置在輸入的左上角。

這些表達式會針對每個新幀進行評估。

有關詳細資訊,請參閱 qrencode 表達式 章節。

case_sensitive, cs

指示 libqrencode 使用區分大小寫的編碼。預設情況下已啟用。可以停用此功能以減小 QR 編碼大小。

level, l

指定 QR 編碼錯誤校正級別。使用較高的校正級別,編碼大小會增加,但代碼對於損壞的抵抗力會更強。較低的級別為 L

它接受以下值

L
M
Q
H
expansion

選擇如何展開輸入文字。可以是 nonenormal(預設)。有關詳細資訊,請參閱下面的 qrencode 文字展開 章節。

text
textfile

定義要呈現的文字。如果未指定任何文字,則不會編碼 QR 碼(僅為空的彩色幀)。

如果啟用展開,則文字會被視為文字範本,使用 qrencode 展開機制。有關詳細資訊,請參閱下面的 qrencode 文字展開 章節。

background_color, bc
foreground_color, fc

設定 QR 碼和背景顏色。 foreground_color 的預設值為「black」,background_color 的預設值為「white」。

有關顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節

39.204.1 qrencode 表達式

選項設定的表達式包含以下常數和函式。

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

duration

目前幀的持續時間,以秒為單位

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

main_h, H

輸入高度

main_w, W

輸入寬度

n

輸入影格編號,從 0 開始

pict_type

表示圖片類型的數字

qr_w, w

編碼的 QR 碼的寬度

rendered_qr_w, q
rendered_padded_qr_w, Q

呈現的 QR 碼的寬度,包括不含填充和含填充。

這些參數允許 qQ 表達式互相參考,因此您可以例如指定 q=3/4*Q

rand(min, max)

返回介於 minmax 之間的隨機數

sar

輸入樣本縱橫比

t

以秒為單位表示的時間戳記,如果輸入時間戳記未知,則為 NAN

x
y

繪製文字的 x 和 y 偏移坐標。

這些參數允許 xy 表達式互相參照,因此您可以例如指定 y=x/dar

39.204.2 qrencode 文字擴展

expansion 設定為 none,則文字會逐字印出。

expansion 設定為 normal (預設值),則會使用以下展開機制。

反斜線字元 ‘\’ 後面跟隨任何字元,總是會展開為第二個字元。

%{...} 形式的序列會被展開。大括號之間的文字是函數名稱,可能後面跟隨以 ':' 分隔的參數。如果參數包含特殊字元或分隔符號 (':' 或 '}'),則應進行跳脫字元處理 (escape)。

請注意,它們可能也必須在濾鏡引數字串中作為 text 選項的值進行跳脫字元處理,以及在濾鏡圖描述中作為濾鏡引數進行跳脫字元處理,甚至可能也需要在 Shell 中進行跳脫字元處理,這會導致最多四層的跳脫字元處理;使用帶有 textfile 選項的文字檔案可以避免這些問題。

以下函數可用

n, frame_num

傳回幀號

pts

傳回目前幀的呈現時間戳記。

它可以接受最多兩個引數。

第一個引數是時間戳記的格式;預設為 flt,表示以秒為單位的十進制數字,精確到微秒;hms 代表格式化的 [-]HH:MM:SS.mmm 時間戳記,精確到毫秒。 gmtime 代表格式化為 UTC 時間的幀的時間戳記;localtime 代表格式化為當地時區時間的幀的時間戳記。如果格式設定為 hms24hh,則時間將以 24 小時格式 (00-23) 格式化。

第二個引數是添加到時間戳記的偏移量。

若格式設定為 localtimegmtime,則可以提供第三個引數:strftime C 函數格式字串。預設情況下,將使用 YYYY-MM-DD HH:MM:SS 格式。

expr, e

評估表達式的值並以雙精度浮點數輸出。

它必須採用一個引數,指定要評估的表達式,並接受 qrencode_expressions 中定義的常數和函式。

expr_formatted, ef

評估表達式的值並以格式化的字串輸出。

第一個引數是要評估的表達式,與 expr 函數相同。第二個引數指定輸出格式。允許的值為 ‘x’、‘X’、‘d’ 和 ‘u’。它們的處理方式與 printf 函數完全相同。第三個參數是可選的,用於設定輸出所佔的位置數。它可以用於從左側添加零填充。

gmtime

濾鏡運行的時間,以 UTC 表示。它可以接受一個引數:strftime C 函數格式字串。格式字串已擴展以支援變數 %[1-6]N,該變數會印出秒的分數,並可選擇指定位數。

localtime

濾鏡運行的時間,以當地時區表示。它可以接受一個引數:strftime C 函數格式字串。格式字串已擴展以支援變數 %[1-6]N,該變數會印出秒的分數,並可選擇指定位數。

metadata

影格元數據。接受一個或兩個引數。

第一個引數是必要引數,用於指定元數據鍵。

第二個引數是可選引數,用於指定預設值,當找不到或元數據鍵為空時使用。

可用的元數據可以通過檢查執行 ffprobe -show_frames 印出的每個影格區段中以 TAG 開頭的條目來識別。

在通往 qrencode 濾鏡的濾鏡中產生的字串元數據也可用。

rand(min, max)

返回介於 minmax 之間的隨機數

39.204.3 範例

  • 產生一個使用預設大小編碼指定文字的 QR 碼,並以預設大小覆蓋在輸入影片的左上角
    qrencode=text=www.ffmpeg.org
    
  • 與下方相同,但選擇藍色和粉紅色
    qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
    
  • 將 QR 碼放置在輸入影片的右下角
    qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
    
  • 產生一個寬度為 200 像素且帶填充的 QR 碼,使含填充的寬度為 QR 碼寬度的 4/3
    qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 產生一個含填充寬度為 200 像素且帶填充的 QR 碼,使 QR 碼寬度為含填充寬度的 3/4
    qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 使 QR 碼成為輸入影片寬度的一部分
    qrencode=text=www.ffmpeg.org:q=W/5
    
  • 產生一個編碼幀號的 QR 碼
    qrencode=text=%{n}
    
  • 產生一個編碼 GMT 時間戳記的 QR 碼
    qrencode=text=%{gmtime}
    
  • 產生一個編碼為浮點數的時間戳記的 QR 碼
    qrencode=text=%{pts}
    

39.205 quirc

使用 libquirc 函式庫(請參閱 https://github.com/dlbeer/quirc/)識別並解碼 QR 碼,並將識別出的 QR 碼位置和有效負載列印為元數據。

若要啟用此濾鏡的編譯,您需要使用 --enable-libquirc 配置 FFmpeg。

對於在輸入影片中找到的每個 QR 碼,都會新增一些元數據條目,前綴為 lavfi.quirc.N,其中 N 是與 QR 碼關聯的索引,從 0 開始。

每個元數據值的描述如下

lavfi.quirc.count

找到的 QR 碼數量,如果未找到任何 QR 碼,則不會設定此值

lavfi.quirc.N.corner.M.x
lavfi.quirc.N.coreer.M.y

包含 QR 碼的正方形的四個角的 x/y 位置,其中 M 是角的索引,從 0 開始

lavfi.quirc.N.payload

QR 碼的有效負載

39.206 random

將影片幀從幀的內部快取刷新到隨機順序。不會丟棄任何幀。靈感來自 frei0r nervous 濾鏡。

frames

設定內部快取的幀大小,範圍從 2512。預設值為 30

seed

設定亂數產生器的種子,必須是介於 0UINT32_MAX 之間的整數。如果未指定,或明確設定為小於 0,則濾鏡將盡力使用良好的亂數種子。

39.207 readeia608

從影片幀的頂部行讀取隱藏式字幕 (EIA-608) 資訊。

此濾鏡為 lavfi.readeia608.X.cclavfi.readeia608.X.line 新增幀元數據,其中 X 是具有 EIA-608 資料的已識別行的編號(從 0 開始)。每個元數據值的描述如下

lavfi.readeia608.X.cc

儲存為 EIA-608 資料的兩個位元組(以十六進制列印)。

lavfi.readeia608.X.line

識別並讀取 EIA-608 資料的行號。

此濾波器接受以下選項

scan_min

設定開始掃描 EIA-608 資料的行。預設值為 0

scan_max

設定結束掃描 EIA-608 資料的行。預設值為 29

spw

設定為同步碼偵測保留的寬度比率。預設值為 0.27。允許範圍為 [0.1 - 0.7]

chp

啟用檢查同位元。如果發生同位元錯誤,濾鏡將為該字元輸出 0x00。預設值為 false。

低通

在進一步處理之前,對行進行低通濾波。預設為啟用。

39.207.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.207.2 範例

  • 輸出一個 csv 檔案,其中包含呈現時間和已識別的 EIA-608 字幕資料的前兩行。
    ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
    

39.208 readvitc

從影片幀的頂部行讀取垂直間隔時間碼 (VITC) 資訊。

如果偵測到有效時間碼,則濾鏡會新增幀元數據鍵 lavfi.readvitc.tc_str,其中包含時間碼值。進一步的元數據鍵 lavfi.readvitc.found 設定為 0/1,具體取決於是否找到時間碼資料。

此濾波器接受以下選項

scan_max

設定掃描 VITC 資料的最大行數。如果值設定為 -1,則會掃描整個影片幀。預設值為 45

thr_b

設定黑色的亮度閾值。接受範圍為 [0.0,1.0] 的浮點數,預設值為 0.2。該值必須小於或等於 thr_w

thr_w

設定白色的亮度閾值。接受範圍為 [0.0,1.0] 的浮點數,預設值為 0.6。該值必須大於或等於 thr_b

39.208.1 範例

  • 偵測並在影片幀上繪製 VITC 資料;如果未偵測到有效的 VITC,則繪製 --:--:--:-- 作為佔位符
    ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
    

39.209 remap

使用第二個:Xmap 和第三個:Ymap 輸入影片串流重新映射像素。

位置 (X, Y) 的目標像素將從來源 (x, y) 位置選取,其中 x = Xmap(X, Y) 且 y = Ymap(X, Y)。如果映射值超出範圍,則目標像素將使用零值像素。

Xmap 和 Ymap 輸入影片串流必須具有相同的尺寸。輸出影片串流將具有 Xmap/Ymap 影片串流尺寸。 Xmap 和 Ymap 輸入影片串流為 16 位元深度,單通道。

格式

指定此濾鏡輸出的像素格式。可以是 colorgray。預設值為 color

fill

指定未映射像素的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節。預設顏色為 black

39.210 removegrain

removegrain 濾鏡是適用於漸進式影片的空間降噪器。

m0

設定第一個平面的模式。

m1

m1

m2

m2

m3

m3

模式範圍為 0 到 24。每個模式的描述如下

0

保持輸入平面不變。預設值。

1

使用 8 個相鄰像素的最小值和最大值來裁剪像素。

2

使用 8 個相鄰像素的第二小值和第二大值來裁剪像素。

3

使用 8 個相鄰像素的第三小值和第三大值來裁剪像素。

4

使用 8 個相鄰像素的第四小值和第四大值來裁剪像素。這相當於中值濾鏡。

5

線條敏感裁剪,提供最小的變化。

6

線條敏感裁剪,中等。

7

線條敏感裁剪,中等。

8

線條敏感裁剪,中等。

9

在相鄰像素最接近的線上進行線條敏感裁剪。

10

用最接近的相鄰像素替換目標像素。

11

[1 2 1] 水平和垂直核心模糊。

12

與模式 11 相同。

13

Bob 模式,從相鄰像素最接近的線內插頂場。

14

Bob 模式,從相鄰像素最接近的線內插底場。

15

Bob 模式,內插頂場。與 13 相同,但使用更複雜的內插公式。

16

Bob 模式,內插底場。與 14 相同,但使用更複雜的內插公式。

17

分別使用每對相對相鄰像素的最大值和最小值來裁剪像素的最小值和最大值。

18

線條敏感裁剪,使用與目前像素距離最小的相對相鄰像素。

19

用其 8 個相鄰像素的平均值替換像素。

20

對 9 個像素進行平均 ([1 1 1] 水平和垂直模糊)。

21

使用相對相鄰像素的平均值裁剪像素。

22

與模式 21 相同,但更簡單且更快。

23

小的邊緣和光暈消除,但據說沒用。

24

與 23 類似。

39.211 removelogo

抑制電視台標誌,使用影像檔案來確定哪些像素構成標誌。它的工作原理是用相鄰像素填充構成標誌的像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

filename, f

設定濾鏡點陣圖檔案,它可以是 libavformat 支援的任何影像格式。影像檔案的寬度和高度必須與正在處理的影片串流的寬度和高度相符。

提供的點陣圖影像中值為零的像素不被視為標誌的一部分,非零像素被視為標誌的一部分。如果您對標誌使用白色 (255),對其餘部分使用黑色 (0),則會很安全。為了製作濾鏡點陣圖,建議擷取帶有可見標誌的黑色幀的螢幕截圖,然後使用閾值濾鏡,然後使用侵蝕濾鏡一到兩次。

如果需要,可以手動修復小污點。請記住,如果未覆蓋標誌像素,濾鏡品質將會大大降低。將過多的像素標記為標誌的一部分不會造成太大損害,但會增加覆蓋影像所需的模糊量,並會破壞比必要更多的資訊,並且額外的像素會降低大型標誌的速度。

39.212 repeatfields

此濾鏡使用來自影片 ES 標頭的 repeat_field 旗標,並根據其值硬性重複場景。

39.213 reverse

反轉影片片段。

警告:此濾波器需要記憶體來緩衝整個片段,因此建議修剪。

39.213.1 範例

  • 擷取片段的前 5 秒,並將其反轉。
    trim=end=5,reverse
    

39.214 rgbashift

水平和/或垂直移動 R/G/B/A 像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

rh

rh

rv

設定紅色垂直移動量。

gh

gh

gv

設定綠色垂直移動量。

bh

bh

bv

設定藍色垂直位移量。

ah

設定 Alpha 水平位移量。

av

設定 Alpha 垂直位移量。

edge

設定邊緣模式,可以是 smear(預設)或 warp

39.214.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.215 roberts

將 Roberts Cross 運算子應用於輸入視訊串流。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

scale

設定將與濾鏡結果相乘的值。

設定濾鏡 mu。

設定將添加到濾鏡結果的值。

39.215.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.216 rotate

以弧度表示的任意角度旋轉視訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

以下為選用參數的說明。

angle, a

設定一個表示角度的表達式,輸入視訊將依此角度順時針旋轉,以弧度為單位。負值將導致逆時針旋轉。預設值為 "0"。

此表達式會針對每個影格進行評估。

out_w, ow

設定輸出寬度表達式,預設值為 "iw"。此表達式在配置期間僅評估一次。

out_h, oh

設定輸出高度表達式,預設值為 "ih"。此表達式在配置期間僅評估一次。

bilinear

若設定為 1,則啟用雙線性插值,值為 0 則停用。預設值為 1。

fillcolor, c

設定用於填充未被旋轉影像覆蓋的輸出區域的顏色。關於此選項的一般語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊 中的 "Color" 章節。如果選擇特殊值 "none",則不會印出背景(例如,如果背景永遠不會顯示,則很有用)。

預設值為 "black"。

角度和輸出大小的表達式可以包含以下常數和函式

n

輸入影格的序號,從 0 開始。在第一個影格被過濾之前,它始終為 NAN。

t

輸入影格的時間(秒),在配置濾鏡時設定為 0。在第一個影格被過濾之前,它始終為 NAN。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

in_w、iw
in_h、ih

輸入視訊的寬度和高度

out_w, ow
out_h, oh

輸出寬度和高度,即由 `width` 和 `height` 表達式指定的填充區域大小

rotw(a)
roth(a)

完全包含以 `a` 弧度旋轉的輸入視訊所需的最小寬度/高度。

這些僅在計算 `out_w` 和 `out_h` 表達式時可用。

39.216.1 範例

  • 以 PI/6 弧度順時針旋轉輸入
    rotate=PI/6
    
  • 以 PI/6 弧度逆時針旋轉輸入
    rotate=-PI/6
    
  • 以 45 度順時針旋轉輸入
    rotate=45*PI/180
    
  • 應用週期為 T 的恆定旋轉,從 PI/3 角度開始
    rotate=PI/3+2*PI*t/T
    
  • 使輸入視訊旋轉以 T 秒為週期和 A 弧度為振幅振盪
    rotate=A*sin(2*PI/T*t)
    
  • 旋轉視訊,選擇輸出尺寸,使整個旋轉的輸入視訊始終完全包含在輸出中
    rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
    
  • 旋轉視訊,縮減輸出尺寸,使永遠不會顯示背景
    rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
    

39.216.2 指令

濾鏡支援以下命令

a, angle

設定角度表達式。此命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.217 sab

應用形狀自適應模糊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

luma_radius, lr

設定亮度模糊濾鏡強度,必須是 0.1-4.0 範圍內的值,預設值為 1.0。較大的值將導致影像更模糊,且處理速度較慢。

luma_pre_filter_radius, lpfr

設定亮度預濾鏡半徑,必須是 0.1-2.0 範圍內的值,預設值為 1.0。

luma_strength, ls

設定亮度像素之間的最大差異值,使其仍被考慮,必須是 0.1-100.0 範圍內的值,預設值為 1.0。

chroma_radius, cr

設定色度模糊濾鏡強度,必須是 -0.9-4.0 範圍內的值。較大的值將導致影像更模糊,且處理速度較慢。

chroma_pre_filter_radius, cpfr

設定色度預濾鏡半徑,必須是 -0.9-2.0 範圍內的值。

chroma_strength, cs

設定色度像素之間的最大差異值,使其仍被考慮,必須是 -0.9-100.0 範圍內的值。

每個色度選項值,如果未明確指定,則設定為對應的亮度選項值。

39.218 scale

使用 libswscale 函式庫縮放(調整大小)輸入視訊。

縮放濾鏡透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。

如果輸入影像格式與下一個濾鏡要求的格式不同,縮放濾鏡會將輸入轉換為要求的格式。

39.218.1 選項

此濾鏡接受以下選項,libswscale 縮放器支援的任何選項,以及任何 framesync 選項。

有關縮放器選項的完整列表,請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊

寬度, w
高度,h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

如果 `width` 或 `w` 值為 0,則輸出會使用輸入寬度。如果 `height` 或 `h` 值為 0,則輸出會使用輸入高度。

如果只有一個值為 -n (n >= 1),縮放濾鏡將使用一個值來維持輸入影像的縱橫比,該值從另一個指定的尺寸計算而來。之後,它會確保計算出的尺寸可被 n 整除,並在必要時調整該值。

如果兩個值都為 -n (n >= 1),則行為將與先前詳細描述的兩個值都設定為 0 相同。

有關尺寸表達式中可接受的常數列表,請參閱下文。

eval

指定何時評估 `width` 和 `height` 表達式。它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次。

frame

為每個輸入幀評估表達式。

預設值為 ‘init’。

interl

設定交錯模式。它接受以下值

1

強制進行交錯感知縮放。

0

不應用交錯縮放。

-1

根據來源影格是否標記為交錯來選擇交錯感知縮放。

預設值為 ‘0’。

flags

設定 libswscale 縮放標誌。有關值的完整列表,請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊。如果未明確指定,濾鏡會應用預設標誌。

param0, param1

為需要它們的縮放演算法設定 libswscale 輸入參數。有關完整的文件,請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊。如果未明確指定,濾鏡會應用空參數。

intent

設定在不同色彩空間之間轉換時要使用的 ICC 渲染意圖。它接受以下值

perceptual

使用感知引導的色調和色域映射曲線。所用映射的確切細節可能隨時變更,不應將其視為穩定。建議在典型觀看設定中最終觀看影像/視訊內容時使用此意圖。

relative_colorimetric

使用色度剪裁曲線靜態剪裁超出色域的顏色,該曲線嘗試找到色度上最不相似的色域內顏色。此意圖執行白點適應和黑點適應。這是預設值。無論何處,忠實的色彩重現極為重要,即使以剪裁為代價,都建議使用此意圖。

absolute_colorimetric

硬性剪裁超出色域的顏色,不嘗試進行白點或黑點重現。此意圖將在輸出顯示器上以 1:1 的比例重現色域內顏色,如同它們在參考顯示器上顯示一樣,假設輸出顯示器已適當校準。

saturation

執行飽和度映射 - 也就是說,以非線性方式將輸入色彩容積直接拉伸到輸出色彩容積上,以盡可能保留原始訊號外觀。建議將此意圖用於訊號內容評估,因為它不會導致任何剪裁。它大致相當於不執行任何色彩映射,儘管它仍然考慮到母帶顯示器原色和編碼 TRC 的任何差異。

size, s

設定視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊 中的 "Video size" 章節。

in_color_matrix
out_color_matrix

設定輸入/輸出 YCbCr 色彩空間類型。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。

如果未指定,色彩空間類型取決於像素格式。

可能的值

auto

自動選擇。

bt709

符合國際電信聯盟 (ITU) BT.709 建議的格式。

fcc

設定符合美國聯邦通信委員會 (FCC) 聯邦法規彙編 (CFR) 第 47 篇 (2003) 73.682 (a) 條的色彩空間。

bt601
bt470
smpte170m

設定符合以下規範的色彩空間

  • ITU 無線電通信部門 (ITU-R) BT.601 建議
  • ITU-R Rec. BT.470-6 (1998) 系統 B、B1 和 G
  • 電影與電視工程師協會 (SMPTE) ST 170:2004
smpte240m

設定符合 SMPTE ST 240:1999 的色彩空間。

bt2020

設定符合 ITU-R BT.2020 非恆定亮度系統的色彩空間。

in_range
out_range

設定輸入/輸出 YCbCr 樣本範圍。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。如果未指定,範圍取決於像素格式。可能的值

auto/unknown

自動選擇。

jpeg/full/pc

設定完整範圍(在 8 位元亮度的情況下為 0-255)。

mpeg/limited/tv

設定 "MPEG" 範圍(在 8 位元亮度的情況下為 16-235)。

in_chroma_loc
out_chroma_loc

設定輸入/輸出色度樣本位置。如果未指定,預設會使用中心位置的色度。可能的值

auto, unknown
left
center
topleft
top
bottomleft
bottom
in_primaries
out_primaries

設定輸入/輸出 RGB 原色。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值

auto

自動選擇。這是預設值。

bt709
bt470m
bt470bg
smpte170m
smpte240m
film
bt2020
smpte428
smpte431
smpte432
jedec-p22
ebu3213
in_transfer
out_transfer

設定輸入/輸出傳輸響應曲線 (TRC)。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值

auto

自動選擇。這是預設值。

bt709
bt470m
gamma22
bt470bg
gamma28
smpte170m
smpte240m
linear
iec61966-2-1
srgb
iec61966-2-4
xvycc
bt1361e
bt2020-10
bt2020-12
smpte2084
smpte428
arib-std-b67
force_original_aspect_ratio

如果需要保持原始縱橫比,則啟用減少或增加輸出視訊寬度或高度。可能的值

disable

依照指定縮放視訊並停用此功能。

decrease

如果需要,輸出視訊尺寸將自動減少。

increase

如果需要,輸出視訊尺寸將自動增加。

此選項的一個有用實例是,當您知道特定裝置允許的最大解析度時,您可以使用此選項將輸出視訊限制為該解析度,同時保持縱橫比。例如,裝置 A 允許 1280x720 播放,而您的視訊為 1920x800。使用此選項(設定為 decrease)並在命令列中指定 1280x720 會使輸出變為 1280x533。

請注意,這與為 `w` 或 `h` 指定 -1 不同,您仍然需要指定輸出解析度才能使此選項生效。

force_divisible_by

確保當與 `force_original_aspect_ratio` 一起使用時,輸出尺寸(寬度和高度)都可被給定的整數整除。這與在 `w` 和 `h` 選項中使用 ` -n` 類似。

此選項會遵守為 `force_original_aspect_ratio` 設定的值,相應地增加或減少解析度。視訊的縱橫比可能會略微修改。

如果您需要使用 `force_original_aspect_ratio` 使視訊符合或超出定義的解析度,但編碼器對寬度或高度的可整除性也有限制,則此選項可能很方便。

`w` 和 `h` 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 `out_w` 和 `out_h` 相同

a

與 `iw` / `ih` 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 `(iw / ih) * sar` 計算得出。

hsub
vsub

水平和垂直輸入色度子樣本值。例如,對於像素格式 "yuv422p",`hsub` 為 2,`vsub` 為 1。

ohsub
ovsub

水平和垂直輸出色度子樣本值。例如,對於像素格式 "yuv422p",`hsub` 為 2,`vsub` 為 1。

n

輸入影格的(序號),從 0 開始。僅在 `eval=frame` 時可用。

t

輸入影格的顯示時間戳記,以秒為單位表示。僅在 `eval=frame` 時可用。

pos

輸入串流中影格的位置(位元組偏移),如果此資訊不可用和/或無意義(例如,在合成視訊的情況下),則為 NaN。僅在 `eval=frame` 時可用。已棄用,請勿使用。

ref_w, rw
ref_h, rh
ref_a
ref_dar, rdar
ref_n
ref_t
ref_pos

與上述等效,但適用於第二個參考輸入。如果存在任何這些變數,則此濾鏡接受兩個輸入。

39.218.2 範例

  • 將輸入視訊縮放至 200x100 的尺寸
    scale=w=200:h=100
    

    這等同於

    scale=200:100
    

    scale=200x100
    
  • 為輸出尺寸指定尺寸縮寫
    scale=qcif
    

    也可以寫成

    scale=size=qcif
    
  • 將輸入縮放為 2 倍
    scale=w=2*iw:h=2*ih
    
  • 以上與以下內容相同
    scale=2*in_w:2*in_h
    
  • 將輸入縮放為 2 倍,並強制進行交錯縮放
    scale=2*iw:2*ih:interl=1
    
  • 將輸入縮放為一半大小
    scale=w=iw/2:h=ih/2
    
  • 增加寬度,並將高度設定為相同大小
    scale=3/2*iw:ow
    
  • 尋求希臘和諧
    scale=iw:1/PHI*iw
    scale=ih*PHI:ih
    
  • 增加高度,並將寬度設定為高度的 3/2
    scale=w=3/2*oh:h=3/5*ih
    
  • 增加尺寸,使尺寸成為色度子樣本值的倍數
    scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
    
  • 將寬度增加到最大 500 像素,同時保持與輸入相同的縱橫比
    scale=w='min(500\, iw*3/2):h=-1'
    
  • 透過組合 scale 和 setsar 使像素變為正方形
    scale='trunc(ih*dar):ih',setsar=1/1
    
  • 透過組合 scale 和 setsar 使像素變為正方形,並確保結果解析度為偶數(某些編碼器要求)
    scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
    
  • 縮放字幕串流 (sub) 以在覆疊之前使其尺寸與主要視訊 (main) 相符。 ("scale2ref")
    '[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
    
  • 將標誌縮放到視訊高度的 1/10,同時保留其顯示縱橫比。
    [logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
    

39.218.3 指令

此濾波器支援以下命令

寬度, w
高度,h

設定輸出視訊尺寸表達式。此命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

39.219 scale_cuda

使用加速的 CUDA 核心縮放(調整大小)和轉換(像素格式)輸入視訊。設定輸出寬度和高度的方式與 scale 濾鏡相同。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

w
h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

允許與 scale 濾鏡相同的表達式。

interp_algo

設定用於縮放的演算法

nearest

最近鄰

如果輸入參數與所需的輸出相符,則預設使用。

bilinear

雙線性

bicubic

雙立方

這是預設值。

lanczos

Lanczos

格式

控制輸出像素格式。預設情況下,或如果未指定,則使用輸入像素格式。

此濾鏡不支援在 YUV 和 RGB 像素格式之間進行轉換。

passthrough

如果設定為 0,則會處理每個影格,即使不需要轉換也是如此。此模式可用於將濾鏡用作下游影格消費者的緩衝區,該消費者會耗盡有限的解碼器影格池。

如果設定為 1,則如果影格符合所需的輸出參數,則會按原樣傳遞。這是預設行為。

param

演算法特定參數。

影響雙立方演算法的曲線。

force_original_aspect_ratio
force_divisible_by

與相同的 scale 濾鏡選項的工作方式相同。

39.219.1 範例

  • 將輸入縮放至 720p,保持縱橫比並確保輸出為 yuv420p。
    scale_cuda=-2:720:format=yuv420p
    
  • 使用最近鄰演算法升頻至 4K。
    scale_cuda=4096:2160:interp_algo=nearest
    
  • 不執行任何轉換或縮放,而是將所有輸入影格複製到新分配的影格中。這可用於處理濾鏡和編碼鏈,否則會耗盡解碼器的影格池。
    scale_cuda=passthrough=0
    

39.220 scale_npp

使用 NVIDIA Performance Primitives (libnpp) 對 CUDA 視訊影格執行縮放和/或像素格式轉換。設定輸出寬度和高度的方式與 `scale` 濾鏡相同。

接受以下其他選項

格式

輸出 CUDA 影格的像素格式。如果設定為字串 "same"(預設值),則會保留輸入格式。請注意,硬體影格尚不支援自動格式協商和轉換

interp_algo

用於調整大小的插值演算法。以下之一

nn

最近鄰。

linear
cubic
cubic2p_bspline

2 參數立方 (B=1, C=0)

cubic2p_catmullrom

2 參數立方 (B=0, C=1/2)

cubic2p_b05c03

2 參數立方 (B=1/2, C=3/10)

super

超取樣

lanczos
force_original_aspect_ratio

如果需要保持原始縱橫比,則啟用減少或增加輸出視訊寬度或高度。可能的值

disable

依照指定縮放視訊並停用此功能。

decrease

如果需要,輸出視訊尺寸將自動減少。

increase

如果需要,輸出視訊尺寸將自動增加。

此選項的一個有用實例是,當您知道特定裝置允許的最大解析度時,您可以使用此選項將輸出視訊限制為該解析度,同時保持縱橫比。例如,裝置 A 允許 1280x720 播放,而您的視訊為 1920x800。使用此選項(設定為 decrease)並在命令列中指定 1280x720 會使輸出變為 1280x533。

請注意,這與為 `w` 或 `h` 指定 -1 不同,您仍然需要指定輸出解析度才能使此選項生效。

force_divisible_by

確保當與 `force_original_aspect_ratio` 一起使用時,輸出尺寸(寬度和高度)都可被給定的整數整除。這與在 `w` 和 `h` 選項中使用 ` -n` 類似。

此選項會遵守為 `force_original_aspect_ratio` 設定的值,相應地增加或減少解析度。視訊的縱橫比可能會略微修改。

如果您需要使用 `force_original_aspect_ratio` 使視訊符合或超出定義的解析度,但編碼器對寬度或高度的可整除性也有限制,則此選項可能很方便。

eval

指定何時評估 `width` 和 `height` 表達式。它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次。

frame

為每個輸入幀評估表達式。

`w` 和 `h` 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 `out_w` 和 `out_h` 相同

a

與 `iw` / `ih` 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 `(iw / ih) * sar` 計算得出。

n

輸入影格的(序號),從 0 開始。僅在 `eval=frame` 時可用。

t

輸入影格的顯示時間戳記,以秒為單位表示。僅在 `eval=frame` 時可用。

pos

輸入串流中影格的位置(位元組偏移),如果此資訊不可用和/或無意義(例如,在合成視訊的情況下),則為 NaN。僅在 `eval=frame` 時可用。已棄用,請勿使用。

39.221 scale2ref_npp

使用 NVIDIA Performance Primitives (libnpp) 根據參考視訊縮放(調整大小)輸入視訊。

有關可用選項,請參閱 scale_npp 濾鏡,scale2ref_npp 支援相同的選項,但使用參考視訊而不是主要輸入作為基礎。scale2ref_npp 也支援以下用於 `w` 和 `h` 選項的其他常數

main_w
main_h

主要輸入視訊的寬度和高度

main_a

與 `main_w` / `main_h` 相同

main_sar

主要輸入視訊的樣本縱橫比

main_dar, mdar

主要輸入視訊的顯示縱橫比。從 `(main_w / main_h) * main_sar` 計算得出。

main_n

主輸入影格的(循序)編號,從 0 開始。僅在 eval=frame 時可用。

main_t

主輸入影格的呈現時間戳記,以秒數表示。僅在 eval=frame 時可用。

main_pos

主輸入串流中影格的位置(位元組偏移量),如果此資訊不可用和/或無意義(例如在合成視訊的情況下),則為 NaN。僅在 eval=frame 時可用。

39.221.1 範例

  • 縮放字幕串流 (b) 以符合主視訊 (a) 的大小,然後再疊加
    'scale2ref_npp[b][a];[a][b]overlay_cuda'
    
  • 將標誌縮放到視訊高度的 1/10,同時保留其顯示縱橫比。
    [logo-in][video-in]scale2ref_npp=w=oh*mdar:h=ih/10[logo-out][video-out]
    

39.222 scale_vt

使用 VTPixelTransferSession 縮放並轉換色彩參數。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

w
h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

color_matrix

設定輸出色彩空間矩陣。

color_primaries

設定輸出色彩原色。

color_transfer

設定輸出轉換特性。

39.223 scharr

將 Scharr 運算子應用於輸入視訊串流。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

scale

設定將與濾鏡結果相乘的值。

設定濾鏡 mu。

設定將添加到濾鏡結果的值。

39.223.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.224 scroll

以恆定速度水平和/或垂直捲動輸入視訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

horizontal, h

設定水平捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變捲動方向。

vertical, v

設定垂直捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變捲動方向。

hpos

設定初始水平捲動位置。預設值為 0。允許範圍為 0 到 1。

vpos

設定初始垂直捲動位置。預設值為 0。允許範圍為 0 到 1。

39.224.1 指令

此濾鏡支援以下指令

horizontal, h

設定水平捲動速度。

vertical, v

設定垂直捲動速度。

39.225 scdet

偵測視訊場景變換。

此濾鏡設定影格元數據,其中包含影格之間的 mafd 和場景分數,並將影格轉發到下一個濾鏡,以便它們可以使用這些元數據來偵測場景變換或其他情況。

此外,當此濾鏡偵測到超過 threshold 的場景變換時,會記錄訊息並設定影格元數據。

lavfi.scd.mafd 元數據鍵會針對每個影格設定 mafd。

lavfi.scd.score 元數據鍵會針對每個影格設定場景變換分數,以偵測場景變換。

lavfi.scd.time 元數據鍵會設定偵測到超過 threshold 的場景變換的目前已濾波影格時間。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

threshold, t

設定場景變換偵測閾值,以最大變化的百分比表示。良好的值在 [8.0, 14.0] 範圍內。threshold 的範圍為 [0., 100.]

預設值為 10.

sc_pass, s

設定標誌以將場景變換影格傳遞到下一個濾鏡。預設值為 0。如果您只想取得場景變換影格的快照,則可以啟用它。

39.226 selectivecolor

將青色、洋紅色、黃色和黑色 (CMYK) 調整到特定顏色範圍(例如「紅色」、「黃色」、「綠色」、「青色」...)。調整範圍由顏色的「純度」(即,它已飽和的程度)定義。

此濾鏡類似於 Adobe Photoshop 的「選取顏色」工具。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

correction_method

選取色彩校正方法。

可用的值為

absolute

指定的調整會「依原樣」套用(新增/從原始像素元件值中減去)。

relative

指定的調整是相對於原始元件值。

預設值為 absolute

reds

紅色像素的調整(紅色元件為最大值的像素)

yellows

黃色像素的調整(藍色元件為最小值的像素)

greens

綠色像素的調整(綠色元件為最大值的像素)

cyans

青色像素的調整(紅色元件為最小值的像素)

blues

藍色像素的調整(藍色元件為最大值的像素)

magentas

洋紅色像素的調整(綠色元件為最小值的像素)

whites

白色像素的調整(所有元件都大於 128 的像素)

neutrals

除了純黑色和純白色之外的所有像素的調整

blacks

黑色像素的調整(所有元件都小於 128 的像素)

psfile

指定 Photoshop 選取顏色檔案 (.asv) 以從中匯入設定。

所有調整設定(redsyellows、...)最多接受 4 個以空格分隔的浮點調整值,範圍為 [-1,1],分別調整其範圍內像素的青色、洋紅色、黃色和黑色的量。

39.226.1 範例

  • 在每個綠色區域中將青色增加 50%,黃色減少 33%,並在藍色區域中將洋紅色增加 27%
    selectivecolor=greens=.5 0 -.33 0:blues=0 .27
    
  • 使用 Photoshop 選取顏色預設
    selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
    

39.227 separatefields

separatefields 濾鏡採用基於影格的視訊輸入,並將每個影格分割成其組件場,產生一個新的半高剪輯,其影格率和影格計數是原來的兩倍。

此濾鏡使用影格中的場域主導資訊來決定在輸出中將每對場域中的哪一個場域放在前面。如果它弄錯了,請在 separatefields 濾鏡之前使用 setfield 濾鏡。

39.228 setdar, setsar

setdar 濾鏡設定濾鏡輸出視訊的顯示縱橫比。

這是透過根據以下方程式變更指定的樣本(又稱像素)縱橫比來完成的

DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR

請記住,setdar 濾鏡不會修改視訊影格的像素尺寸。此外,此濾鏡設定的顯示縱橫比可能會被濾鏡鏈中後續的濾鏡變更,例如,在縮放的情況下,或者如果套用了另一個「setdar」或「setsar」濾鏡。

setsar 濾鏡設定濾鏡輸出視訊的樣本(又稱像素)縱橫比。

請注意,由於應用此濾鏡,輸出顯示縱橫比將根據以上方程式變更。

請記住,setsar 濾鏡設定的樣本縱橫比可能會被濾鏡鏈中後續的濾鏡變更,例如,如果套用了另一個「setsar」或「setdar」濾鏡。

它接受以下參數

r, ratio, dar (setdar 僅適用), sar (setsar 僅適用)

設定濾鏡使用的縱橫比。

參數可以是浮點數字串或運算式。如果未指定參數,則假定值為「0」,表示使用相同的輸入值。

max

設定用於表示分子和分母的最大整數值,當將表示的縱橫比簡化為有理數時。預設值為 100

參數 sar 是一個包含以下常數的運算式

w, h

輸入寬度和高度。

a

w / h 相同。

sar

輸入樣本長寬比。

dar

輸入顯示縱橫比。它與 (w / h) * sar 相同。

hsub, vsub

水平和垂直色度子樣本值。例如,對於像素格式「yuv422p」,hsub 為 2,vsub 為 1。

39.228.1 範例

  • 若要將顯示縱橫比變更為 16:9,請指定以下其中一項
    setdar=dar=1.77777
    setdar=dar=16/9
    
  • 若要將樣本縱橫比變更為 10:11,請指定
    setsar=sar=10/11
    
  • 若要設定 16:9 的顯示縱橫比,並在縱橫比簡化中指定最大整數值為 1000,請使用以下指令
    setdar=ratio=16/9:max=1000
    

39.229 setfield

強制輸出視訊影格的場域。

setfield 濾鏡標記輸出影格的交錯類型場域。它不會變更輸入影格,而只會設定對應的屬性,這會影響後續濾鏡(例如 fieldorderyadif)如何處理影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

level_in

可用的值為

auto

保持相同的場域屬性。

bff

將影格標記為底場優先。

tff

將影格標記為頂場優先。

prog

將影格標記為漸進式。

39.230 setparams

強制輸出視訊影格的影格參數。

setparams 濾鏡標記輸出影格的交錯和色彩範圍。它不會變更輸入影格,而只會設定對應的屬性,這會影響濾鏡/編碼器如何處理影格。

field_mode

可用的值為

auto

保持相同的場域屬性(預設)。

bff

將影格標記為底場優先。

tff

將影格標記為頂場優先。

prog

將影格標記為漸進式。

range

可用的值為

auto

保持相同的色彩範圍屬性(預設)。

unspecified, unknown

將影格標記為未指定的色彩範圍。

limited, tv, mpeg

將影格標記為有限範圍。

full, pc, jpeg

將影格標記為完整範圍。

color_primaries

設定色彩原色。可用值為

auto

保持相同的色彩原色屬性(預設值)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
film
bt2020
smpte428
smpte431
smpte432
jedec-p22
color_trc (色彩傳輸曲線)

設定色彩轉換。可用值為

auto

保持相同的色彩 trc 屬性(預設)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
linear
log100
log316
iec61966-2-4
bt1361e
iec61966-2-1
bt2020-10
bt2020-12
smpte2084
smpte428
arib-std-b67
colorspace

設定色彩空間。可用值為

auto

保持相同的色彩空間屬性(預設值)。

gbr
bt709
unknown
fcc
bt470bg
smpte170m
smpte240m
ycgco
bt2020nc
bt2020c
smpte2085
chroma-derived-nc
chroma-derived-c
ictcp
chroma_location

設定色度樣本位置。可用值為

auto

保持相同的色度位置(預設)。

unspecified, unknown
left
center
topleft
top
bottomleft
bottom

39.231 sharpen_npp

使用 NVIDIA Performance Primitives (libnpp) 執行影像銳化,並具有邊界控制。

接受以下其他選項

border_type

要用於影格邊界的取樣類型。以下之一

replicate

複製像素值。

39.232 shear

將剪切變換應用於輸入視訊。

此濾鏡支援以下選項

shx

X 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

shy

Y 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

fillcolor, c

設定用於填充未被變換視訊覆蓋的輸出區域的顏色。有關此選項的通用語法,請查看 ffmpeg-utils 手冊中的「顏色」章節。如果選取特殊值「none」,則不會列印背景(例如,如果永遠不會顯示背景,則很有用)。

預設值為 "black"。

interp

設定插值類型。可以是 bilinearnearest。預設值為 bilinear

39.232.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.233 showinfo

顯示包含每個輸入視訊影格各種資訊的行。輸入視訊未經修改。

此濾鏡支援以下選項

checksum

計算每個平面的校驗和。預設為啟用。

udu_sei_as_ascii

盡可能嘗試以 ascii 字元列印使用者資料未註冊 SEI,否則以十六進位格式列印。

顯示的行包含一系列 key:value 形式的鍵/值對。

以下值顯示在輸出中

n

輸入幀的(循序)編號,從 0 開始。

pts

輸入影格的呈現時間戳記,以時間基底單位的數量表示。時間基底單位取決於濾鏡輸入墊。

pts_time

輸入影格的呈現時間戳記,以秒數表示。

fmt

像素格式名稱。

sar

輸入影格的樣本縱橫比,以 num/den 的形式表示。

s

輸入影格的大小。有關此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊大小」章節

設定濾鏡輸出樣本。 它接受以下值

交錯模式的類型(「P」表示「漸進式」,「T」表示頂場優先,「B」表示底場優先)。

iskey

如果影格是關鍵影格,則為 1,否則為 0。

type

輸入影格的圖片類型(「I」表示 I 影格,「P」表示 P 影格,「B」表示 B 影格,或「?」表示未知類型)。另請參閱 libavutil/avutil.h 中定義的 AVPictureType 列舉和 av_get_picture_type_char 函數的文件。

checksum

輸入影格所有平面的 Adler-32 校驗和(以十六進位列印)。

plane_checksum

輸入影格每個平面的 Adler-32 校驗和(以十六進位列印),以「[c0 c1 c2 c3]」的形式表示。

平均值

輸入影格每個平面中像素的平均值,以「[mean0 mean1 mean2 mean3]」的形式表示。

stdev

輸入影格每個平面中像素值的標準差,以「[stdev0 stdev1 stdev2 stdev3]」的形式表示。

39.234 showpalette

顯示每個影格的 256 色調色盤。此濾鏡僅與 pal8 像素格式影格相關。

它接受以下選項

s

設定用於表示一個調色盤顏色條目的方框大小。預設值為 30(表示 30x30 像素方框)。

39.235 shuffleframes

重新排序和/或複製和/或捨棄視訊影格。

它接受以下參數

mapping

設定輸入影格的目的地索引。這是以空格或「|」分隔的索引清單,將輸入影格對應到輸出影格。索引的數量也設定了每個索引可能具有的最大值。「-1」索引具有特殊含義,即捨棄影格。

第一個影格的索引為 0。預設值是保持輸入不變。

39.235.1 範例

  • 交換輸入的每三個影格中的第二個和第三個影格
    ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
    
  • 交換輸入的每十個影格中的第十個和第一個影格
    ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
    

39.236 shufflepixels

重新排序視訊影格中的像素。

此濾波器接受以下選項

direction, d

設定洗牌方向。可以是向前或反向方向。預設方向為向前。

mode, m

設定洗牌模式。可以是水平、垂直或區塊模式。

寬度, w
高度,h

設定洗牌 block_size。在水平洗牌模式下,僅使用大小的寬度部分,而在垂直洗牌模式下,僅使用大小的高度部分。

seed, s

設定用於洗牌像素的隨機種子。主要用於設定能夠反轉濾波過程以取得原始輸入。例如,若要反轉向前洗牌,您需要使用相同的參數和完全相同的種子,並將方向設定為反向。

39.237 shuffleplanes

重新排序和/或複製視訊平面。

它接受以下參數

map0

要用作第一個輸出平面的輸入平面的索引。

map1

要用作第二個輸出平面的輸入平面的索引。

map2

要用作第三個輸出平面的輸入平面的索引。

map3

要用作第四個輸出平面的輸入平面的索引。

第一個平面的索引為 0。預設值是保持輸入不變。

39.237.1 範例

  • 交換輸入的第二個和第三個平面
    ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
    

39.238 signalstats

評估各種視覺指標,以協助判斷與類比視訊媒體數位化相關的問題。

預設情況下,濾鏡將記錄這些元數據值

YMIN

顯示輸入影格中包含的最小 Y 值。以 [0-255] 範圍表示。

YLOW

顯示輸入影格中 10% 百分位數的 Y 值。以 [0-255] 範圍表示。

YAVG

顯示輸入影格中的平均 Y 值。以 [0-255] 範圍表示。

YHIGH

顯示輸入影格中 90% 百分位數的 Y 值。以 [0-255] 範圍表示。

YMAX

顯示輸入影格中包含的最大 Y 值。以 [0-255] 範圍表示。

UMIN

顯示輸入影格中包含的最小 U 值。以 [0-255] 範圍表示。

ULOW

顯示輸入影格中 10% 百分位數的 U 值。以 [0-255] 範圍表示。

UAVG

顯示輸入影格中的平均 U 值。以 [0-255] 範圍表示。

UHIGH

顯示輸入影格中 90% 百分位數的 U 值。以 [0-255] 範圍表示。

UMAX

顯示輸入影格中包含的最大 U 值。以 [0-255] 範圍表示。

VMIN

顯示輸入影格中包含的最小 V 值。以 [0-255] 範圍表示。

VLOW

顯示輸入影格中 10% 百分位數的 V 值。以 [0-255] 範圍表示。

VAVG

顯示輸入影格中的平均 V 值。以 [0-255] 範圍表示。

VHIGH

顯示輸入影格中 90% 百分位數的 V 值。範圍為 [0-255]。

VMAX

顯示輸入影格中包含的最大 V 值。範圍為 [0-255]。

SATMIN

顯示輸入影格中包含的最小飽和度值。範圍為 [0-~181.02]。

SATLOW

顯示輸入影格中 10% 百分位數的飽和度值。範圍為 [0-~181.02]。

SATAVG

顯示輸入影格中的平均飽和度值。範圍為 [0-~181.02]。

SATHIGH

顯示輸入影格中 90% 百分位數的飽和度值。範圍為 [0-~181.02]。

SATMAX

顯示輸入影格中包含的最大飽和度值。範圍為 [0-~181.02]。

HUEMED

顯示輸入影格中色相的中位數值。範圍為 [0-360]。

HUEAVG

顯示輸入影格中色相的平均值。範圍為 [0-360]。

YDIF

顯示目前影格中 Y 平面的所有值與前一個輸入影格中對應值之間的樣本值差異平均值。範圍為 [0-255]。

UDIF

顯示目前影格中 U 平面的所有值與前一個輸入影格中對應值之間的樣本值差異平均值。範圍為 [0-255]。

VDIF

顯示目前影格中 V 平面的所有值與前一個輸入影格中對應值之間的樣本值差異平均值。範圍為 [0-255]。

YBITDEPTH

顯示目前影格中 Y 平面的位元深度。範圍為 [0-16]。

UBITDEPTH

顯示目前影格中 U 平面的位元深度。範圍為 [0-16]。

VBITDEPTH

顯示目前影格中 V 平面的位元深度。範圍為 [0-16]。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

stat
out

stat 指定影像分析的額外形式。out 輸出以指定像素類型高亮顯示的影片。

這兩個選項都接受以下值

tout

識別時間離群值像素。時間離群值是指與同一場景的相鄰像素不同的像素。時間離群值的範例包括影片丟失、磁頭堵塞或磁帶追蹤問題的結果。

vrep

識別垂直線重複。垂直線重複包括影格內相似的像素行。在原生數位影片中,垂直線重複很常見,但在從類比來源數位化的影片中,這種模式並不常見。當它發生在從類比來源數位化產生的影片中時,可能表示來自訊號遺失補償器的隱藏。

brng

識別超出合法廣播範圍的像素。

顏色,c

設定 out 選項的高亮顏色。預設顏色為黃色。

39.238.1 範例

  • 輸出各種影片指標的數據
    ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
    
  • 輸出關於每個影格 Y 平面的最小值和最大值的特定數據
    ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
    
  • 播放影片,同時以紅色高亮顯示超出廣播範圍的像素。
    ffplay example.mov -vf signalstats="out=brng:color=red"
    
  • 播放影片,並在影格上繪製 signalstats 元數據。
    ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
    

    命令中使用的 signalstat_drawtext.txt 的內容為

    time %{pts:hms}
    Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
    U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
    V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
    saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
    
    

39.239 signature

計算 MPEG-7 影片簽章。此濾鏡可以處理多個輸入。在這種情況下,還可以計算輸入之間的匹配度。此濾鏡始終會傳遞第一個輸入。每個串流的簽章可以寫入檔案中。

它接受以下選項

detectmode

啟用或停用匹配程序。

可用的值為

off

停用匹配計算(預設)。

full

計算整個影片的匹配度,並輸出整個影片是否匹配或僅部分匹配。

fast

僅計算到找到匹配項或影片結束。在某些情況下應該更快。

nb_inputs

設定輸入數量。選項值必須為非負整數。預設值為 1。

filename

設定寫入輸出的路徑。如果有多個輸入,則路徑必須是原型,即必須包含 %d 或 %0nd(其中 n 為正整數),它將被輸入編號取代。如果未指定檔名,則不會寫入任何輸出。這是預設值。

格式

選擇輸出格式。

可用的值為

binary

使用指定的二進位表示法(預設)。

xml

使用指定的 xml 表示法。

th_d

設定偵測一個詞是否相似的閾值。選項值必須為大於零的整數。預設值為 9000。

th_dc

設定偵測所有詞是否相似的閾值。選項值必須為大於零的整數。預設值為 60000。

th_xh

設定偵測影格是否相似的閾值。選項值必須為大於零的整數。預設值為 116。

th_di

設定將序列識別為匹配序列的最小影格長度。選項值必須為非負整數值。預設值為 0。

th_it

設定匹配影格必須具有的所有影格的最小關係。選項值必須為介於 0 和 1 之間的雙精度值。預設值為 0.5。

39.239.1 範例

  • 計算輸入影片的簽章並將其儲存在 signature.bin 中
    ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
    
  • 偵測兩個影片是否匹配,並以 XML 格式將簽章儲存在 signature0.xml 和 signature1.xml 中
    ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
    

39.240 siti

計算影片的空間資訊 (SI) 和時間資訊 (TI) 分數,如 ITU-T Rec. P.910 (11/21) 中定義:多媒體應用主觀影片品質評估方法。可於 https://www.itu.int/rec/T-REC-P.910-202111-S/en 取得 PDF 檔案。請注意,這是對已取代建議的舊版實作。有關最新版本,請參閱 ITU-T Rec. P.910 (07/22):https://www.itu.int/rec/T-REC-P.910-202207-I/en

它接受以下選項

print_summary

若設定為 1,摘要統計資訊將列印到主控台。預設值為 0。

39.240.1 範例

  • 計算 SI/TI 指標並列印摘要
    ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
    

39.241 smartblur

模糊輸入影片,但不影響輪廓。

它接受以下選項

luma_radius, lr

設定亮度半徑。選項值必須為範圍 [0.1,5.0] 內的浮點數,指定用於模糊影像的高斯濾波器的變異數(值越大速度越慢)。預設值為 1.0。

luma_strength, ls

設定亮度強度。選項值必須為範圍 [-1.0,1.0] 內的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 1.0。

luma_threshold, lt

設定用作係數以決定是否應模糊像素的亮度閾值。選項值必須為範圍 [-30,30] 內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 0。

chroma_radius, cr

設定色度半徑。選項值必須為範圍 [0.1,5.0] 內的浮點數,指定用於模糊影像的高斯濾波器的變異數(值越大速度越慢)。預設值為 luma_radius

chroma_strength, cs

設定色度強度。選項值必須為範圍 [-1.0,1.0] 內的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

chroma_threshold, ct

設定用作係數以決定是否應模糊像素的色度閾值。選項值必須為範圍 [-30,30] 內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

alpha_radius, ar

設定 Alpha 半徑。選項值必須為範圍 [0.1,5.0] 內的浮點數,指定用於模糊影像的高斯濾波器的變異數(值越大速度越慢)。預設值為 luma_radius

alpha_strength, as

設定 Alpha 強度。選項值必須為範圍 [-1.0,1.0] 內的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

alpha_threshold, at

設定用作係數以決定是否應模糊像素的 Alpha 閾值。選項值必須為範圍 [-30,30] 內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

如果未明確設定色度或 Alpha 選項,則會設定對應的亮度值。

39.242 sobel

將 Sobel 運算子應用於輸入影片串流。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

scale

設定將與濾鏡結果相乘的值。

設定濾鏡 mu。

設定將添加到濾鏡結果的值。

39.242.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.243 spp

套用簡單的後處理濾鏡,該濾鏡在多個(或在 quality 等級 6 的情況下為所有)位移處壓縮和解壓縮影像,並平均結果。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定音調品質。可能的值包括

設定品質。此選項定義平均的等級數量。它接受範圍 0-6 內的整數。如果設定為 0,則濾鏡將不起作用。值為 6 表示更高品質。對於該值的每次遞增,速度會降低約 2 倍。預設值為 3

qp

強制使用恆定量化參數。如果未設定,濾鏡將使用影片串流中的 QP(如果可用)。

level_in

設定臨界值模式。可用的模式為

hard

設定硬閾值(預設)。

soft

設定軟臨界值 (去環狀雜訊效果更好,但可能更模糊)。

use_bframe_qp

如果設定為 1,則啟用從 B 幀使用 QP。使用此選項可能會導致閃爍,因為 B 幀通常具有較大的 QP。預設值為 0(未啟用)。

39.243.1 指令

此濾波器支援以下命令

quality, level

設定品質等級。值 max 可用於設定最大等級,目前為 6

39.244 sr

透過應用基於卷積神經網路的超解析度方法之一來縮放輸入。

訓練腳本以及用於模型檔案 (.pb) 儲存的腳本可在 https://github.com/XueweiMeng/sr/tree/sr_dnn_native 找到。原始儲存庫位於 https://github.com/HighVoltageRocknRoll/sr.git

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受下列值

tensorflow

TensorFlow 後端。若要啟用此後端,您需要安裝 TensorFlow for C 函式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 設定 FFmpeg

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 後端只能載入其格式的檔案。

scale_factor

設定 SRCNN 模型的縮放比例因子。允許的值為 234。預設值為 2。縮放比例因子對於 SRCNN 模型是必要的,因為它接受使用雙三次升採樣和適當縮放比例因子升採樣的輸入。

若要取得完整功能(例如非同步執行),請使用 dnn_processing 濾鏡。

39.245 ssim

取得兩個輸入影片之間的 SSIM(結構相似性指標)。

此濾鏡接收兩個輸入影片,第一個輸入被視為「主要」來源,並以未更改的方式傳遞到輸出。第二個輸入用作計算 SSIM 的「參考」影片。

為了使此濾鏡正常工作,兩個視訊輸入必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

濾鏡儲存每個影格的計算 SSIM。

以下為接受參數的描述。

stats_file, f

如果指定,濾鏡將使用指定的檔案名稱來儲存每個個別影格的 SSIM。當檔名等於 "-" 時,資料會傳送到標準輸出。

如果選取 stats_file,則列印的檔案包含每個比較的影格對的 key:value 形式的鍵/值對序列。

以下是每個顯示參數的描述

n

輸入影格的序號,從 1 開始

Y, U, V, R, G, B

以字尾指定的組件的比較影格 SSIM。

All

整個影格的比較影格 SSIM。

dB

與上述相同,但以 dB 表示。

此濾鏡也支援 framesync 選項。

39.245.1 範例

  • 例如
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] ssim="stats_file=stats.log" [out]
    

    在此範例中,正在處理的輸入檔案會與參考檔案 ref_movie.mpg 進行比較。每個個別影格的 SSIM 儲存在 stats.log 中。

  • 另一個同時使用 psnr 和 ssim 的範例
    ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
    
  • 另一個具有不同容器的範例
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
    

39.246 stereo3d

在不同的立體影像格式之間轉換。

濾鏡接受以下選項

in

設定輸入的立體影像格式。

輸入影像格式的可用值為

sbsl

並排平行(左眼在左,右眼在右)

sbsr

並排交叉眼(右眼在左,左眼在右)

sbs2l

並排平行,半寬解析度(左眼在左,右眼在右)

sbs2r

並排交叉眼,半寬解析度(右眼在左,左眼在右)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,半高解析度(左眼在上,右眼在下)

ab2r
tb2r

上下,半高解析度(右眼在上,左眼在下)

al

交替影格(左眼優先,右眼第二)

ar

交替影格(右眼優先,左眼第二)

irl

交錯列(左眼具有頂列,右眼從下一列開始)

irr

交錯列(右眼具有頂列,左眼從下一列開始)

icl

交錯欄,左眼優先

icr

交錯欄,右眼優先

預設值為 ‘sbsl’。

out

設定輸出的立體影像格式。

sbsl

並排平行(左眼在左,右眼在右)

sbsr

並排交叉眼(右眼在左,左眼在右)

sbs2l

並排平行,半寬解析度(左眼在左,右眼在右)

sbs2r

並排交叉眼,半寬解析度(右眼在左,左眼在右)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,半高解析度(左眼在上,右眼在下)

ab2r
tb2r

上下,半高解析度(右眼在上,左眼在下)

al

交替影格(左眼優先,右眼第二)

ar

交替影格(右眼優先,左眼第二)

irl

交錯列(左眼具有頂列,右眼從下一列開始)

irr

交錯列(右眼具有頂列,左眼從下一列開始)

arbg

浮雕紅/藍灰階(左眼紅色濾鏡,右眼藍色濾鏡)

argg

浮雕紅/綠灰度 (左眼紅色濾鏡,右眼綠色濾鏡)

arcg

浮雕紅/青灰度 (左眼紅色濾鏡,右眼青色濾鏡)

arch

浮雕紅/青半彩色 (左眼紅色濾鏡,右眼青色濾鏡)

arcc

浮雕紅/青彩色 (左眼紅色濾鏡,右眼青色濾鏡)

arcd

浮雕紅/青彩色,使用杜博伊斯最小平方法投影優化 (左眼紅色濾鏡,右眼青色濾鏡)

agmg

浮雕綠/洋紅灰度 (左眼綠色濾鏡,右眼洋紅色濾鏡)

agmh

浮雕綠/洋紅半彩色 (左眼綠色濾鏡,右眼洋紅色濾鏡)

agmc

浮雕綠/洋紅彩色 (左眼綠色濾鏡,右眼洋紅色濾鏡)

agmd

浮雕綠/洋紅彩色,使用杜博伊斯最小平方法投影優化 (左眼綠色濾鏡,右眼洋紅色濾鏡)

aybg

浮雕黃/藍灰度 (左眼黃色濾鏡,右眼藍色濾鏡)

aybh

浮雕黃/藍半彩色 (左眼黃色濾鏡,右眼藍色濾鏡)

aybc

浮雕黃/藍彩色 (左眼黃色濾鏡,右眼藍色濾鏡)

aybd

浮雕黃/藍彩色,使用杜博伊斯最小平方法投影優化 (左眼黃色濾鏡,右眼藍色濾鏡)

ml

單聲道輸出 (僅左眼)

mr

單聲道輸出 (僅右眼)

chl

棋盤格,左眼優先

chr

棋盤格,右眼優先

icl

交錯欄,左眼優先

icr

交錯欄,右眼優先

hdmi

HDMI 幀封裝

預設值為 ‘arcd’。

39.246.1 範例

  • 將輸入視訊從並排平行轉換為浮雕黃/藍杜博伊斯
    stereo3d=sbsl:aybd
    
  • 將輸入視訊從上下 (左眼在上,右眼在下) 轉換為並排交叉眼。
    stereo3d=abl:sbsr
    

39.247 streamselect, astreamselect

選擇視訊或音訊串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入

設定輸入數量。預設值為 2。

map

設定輸入索引以重新對應到輸出。

39.247.1 指令

streamselectastreamselect 濾鏡支援以下命令

map

設定輸入索引以重新對應到輸出。

39.247.2 範例

  • 選擇前 5 秒的第 1 個串流,以及剩餘時間的第 2 個串流
    sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
    
  • 與上述相同,但用於音訊
    asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
    

39.248 subtitles

使用 libass 函式庫在輸入視訊上方繪製字幕。

若要啟用此濾鏡的編譯,您需要使用 --enable-libass 設定 FFmpeg。此濾鏡也需要使用 libavcodec 和 libavformat 進行建置,才能將傳遞的字幕檔案轉換為 ASS (Advanced Substation Alpha) 字幕格式。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

filename, f

設定要讀取的字幕檔案名稱。必須指定。

original_size

指定原始視訊的大小,即 ASS 檔案所撰寫的視訊。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」章節。由於 ASS 長寬比算術中的設計缺陷,如果長寬比已變更,則必須這樣做才能正確縮放字型。

fontsdir

設定包含濾鏡可使用字型的目錄路徑。這些字型將與字型提供者使用的任何字型一起使用。

alpha

處理 Alpha 通道,預設情況下 Alpha 通道保持不變。

charenc

設定字幕輸入字元編碼。僅限 subtitles 濾鏡。僅在非 UTF-8 時有用。

stream_index, si

設定字幕串流索引。僅限 subtitles 濾鏡。

force_style

覆寫字幕的預設樣式或腳本資訊參數。它接受包含 ASS 樣式格式 KEY=VALUE 配對的字串,以「,」分隔。

wrap_unicode

根據 Unicode 行分隔演算法換行。可用性至少需要 libass 版本 0.17.0 (或 LIBASS_VERSION 0x01600010), libass 必須已使用 libunibreak 建置。

預設情況下啟用此選項,原生 ASS 除外。

如果未指定第一個鍵,則假定第一個值指定 filename

例如,若要在輸入視訊上方渲染檔案 sub.srt,請使用命令

subtitles=sub.srt

這等效於

subtitles=filename=sub.srt

若要從檔案 video.mkv 渲染預設字幕串流,請使用

subtitles=video.mkv

若要從該檔案渲染第二個字幕串流,請使用

subtitles=video.mkv:si=1

若要使來自 sub.srt 的字幕串流以 80% 透明藍色 DejaVu Serif 顯示,請使用

subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'

39.249 super2xsai

將輸入放大 2 倍,並使用 Super2xSaI (Scale and Interpolate) 像素藝術縮放演算法進行平滑處理。

適用於放大像素藝術影像,而不會降低銳利度。

39.250 swaprect

交換視訊中的兩個矩形物件。

此濾波器接受以下選項

w

設定物件寬度。

h

設定物件高度。

x1

設定第 1 個矩形的 x 座標。

y1

設定第 1 個矩形的 y 座標。

x2

設定第 2 個矩形的 x 座標。

y2

設定第 2 個矩形的 y 座標。

所有運算式都會針對每個影格評估一次。

所有選項都是包含以下常數的運算式

w
h

輸入寬度和高度。

a

w / h 相同

sar

輸入樣本縱橫比

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

n

輸入影格的編號,從 0 開始。

t

以秒為單位的時間戳記。如果輸入時間戳記未知,則為 NAN。

pos

輸入幀在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

39.250.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.251 swapuv

交換 U 和 V 平面。

39.252 tblend

混合連續的視訊影格。

請參閱 blend

39.253 telecine

將電視電影處理應用於視訊。

此濾波器接受以下選項

first_field
top, t

頂場優先

bottom, b

底場優先。預設值為 top

pattern

表示您要套用的下拉模式的數字字串。預設值為 23

Some typical patterns:

NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444

PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334

39.254 thistogram

計算並繪製輸入視訊跨時間的色彩分佈直方圖。

與僅顯示特定時間單個輸入影格直方圖的 histogram 視訊濾鏡不同,此濾鏡還顯示由 width 選項定義的影格數量的過去直方圖。

計算出的直方圖是影像中色彩成分分布的表示。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

寬度, w

設定單個顏色分量輸出的寬度。預設值為 0。值為 0 表示寬度將從輸入視訊中選取。這也會設定要保留的已傳遞直方圖的數量。允許範圍為 [0, 8192]。

display_mode, d

設定顯示模式。它接受以下值

stack

每個色彩成分的圖表彼此堆疊放置。

parade

每個色彩成分的圖表並排放置。

overlay

呈現與 parade 相同的資訊,但代表色彩成分的圖表直接彼此疊加。

預設值為 stack

levels_mode, m

設定模式。可以是 linear(線性)或 logarithmic(對數)。預設值為 linear

components, c

設定要顯示哪些色彩成分。預設值為 7

bgopacity, b

設定背景不透明度。預設值為 0.9

envelope, e

顯示包絡線。預設為停用。

ecolor, ec

設定包絡線顏色。預設值為 gold

slide

設定滑動模式。

滑動的可用值為

frame

當到達右邊界時繪製新影格。

replace

以新列取代舊列。

scroll

從右向左捲動。

rscroll

從左向右捲動。

picture

繪製單張圖片。

預設值為 replace

39.255 threshold

將閾值效果應用於視訊串流。

此濾鏡需要四個視訊串流才能執行閾值處理。第一個串流是我們正在篩選的串流。第二個串流保存閾值,第三個串流保存最小值,最後,第四個串流保存最大值。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

例如,如果第一個串流像素的分量值小於來自第二個閾值串流的像素分量閾值,則將選取第三個串流值,否則將選取第四個串流像素分量值。

使用顏色來源濾鏡,可以執行各種閾值處理類型

39.255.1 指令

此濾鏡支援 commands 中的所有選項。

39.255.2 範例

  • 二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
    
  • 反向二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
    
  • 截斷二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
    
  • 閾值歸零,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
    
  • 反向閾值歸零,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
    

39.256 thumbnail

在給定的一系列連續影格中選取最具代表性的影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

n

設定要分析的影格批次大小;在一組 n 個影格中,濾鏡將選取其中一個影格,然後處理下一個批次的 n 個影格,直到結束。預設值為 100

log

設定要顯示所選影格統計資訊的記錄層級。預設值為 info

由於濾鏡會追蹤整個影格序列,因此較大的 n 值將導致更高的記憶體使用量,因此不建議使用較高的值。

39.256.1 範例

  • 每 50 個影格擷取一張圖片
    thumbnail=50
    
  • 使用 ffmpeg 建立縮圖的完整範例
    ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

39.257 tile

將多個連續影格平鋪在一起。

untile 濾鏡可以執行相反的操作。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

layout

COLUMNSxROWS 格式設定網格大小。範圍最多為 UINT_MAX 個儲存格。預設值為 6x5

nb_frames

設定在給定區域中要渲染的最大影格數。它必須小於或等於 wxh。預設值為 0,表示將使用所有區域。

margin

設定外邊框邊距 (以像素為單位)。範圍為 0 到 1024。預設值為 0

padding

設定內邊框厚度 (即影格之間的像素數)。如需更進階的邊距選項 (例如邊緣具有不同的值),請參閱 pad 視訊濾鏡。範圍為 0 到 1024。預設值為 0

color

指定未使用區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節color 的預設值為「黑色」。

overlap

設定在將多個連續影格平鋪在一起時要重疊的影格數。該值必須介於 0nb_frames - 1 之間。預設值為 0

init_padding

設定在顯示第一個輸出影格之前最初要為空的影格數。這控制何時會獲得第一個輸出影格。該值必須介於 0nb_frames - 1 之間。預設值為 0

39.257.1 範例

  • 產生電影中所有關鍵影格 (-skip_frame nokey) 的 8x8 PNG 平鋪圖
    ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
    

    -vsync 0 是必要的,以防止 ffmpeg 複製每個輸出影格以適應原始偵測到的影格速率。

  • 3x2 影格的區域中顯示 5 張圖片,它們之間有 7 像素的間距,以及 2 像素的初始邊距,使用混合的平面和具名選項
    tile=3x2:nb_frames=5:padding=7:margin=2
    

39.258 tiltandshift

應用傾斜偏移效果。

當您反轉時間和空間時會發生什麼?

通常,視訊由多個影格組成,這些影格代表不同的時間瞬間,並顯示在影格捕獲的空間中演進的場景。此濾鏡是該概念的對立面,靈感來自傾斜偏移攝影。

經過濾的影格包含組成序列的整個事件時間軸,這是透過將每個影格的像素切片放入單個影格中來實現的。但是,由於沒有無限寬度的影格,因此這是以輸入影格的寬度完成的,並且透過為每個後續影格移開一列來重新組合視訊。為了將空間對應到時間,濾鏡也會傾斜每個輸入影格,以便保留運動。這是透過從每個輸入影格逐步選取不同的列來完成的。

最終結果是一種反向視差,因此遠處的物體比前面的物體移動得更快。此視訊效果的理想條件是當運動非常少且背景靜態,或者當運動很多且景深非常寬時 (例如移動的火車上的廣闊全景)。

此濾波器接受以下參數

tilt

在偏移時傾斜視訊 (預設值)。取消設定時,視訊將滑動靜態影像,該影像由每個影格的第一列組成。

start

在篩選開始時要執行的操作 (請參閱下文)。

end

在篩選結束時要執行的操作 (請參閱下文)。

hold

在篩選開始之前應通過多少列。

pad

在篩選結束之前應插入多少列。

通常,濾鏡會從第一個影格開始偏移和傾斜,並在收到最後一個影格時停止。但是,在篩選開始之前,可能會保留正常視訊,以便效果慢慢地移入到位。同樣地,最後一個視訊影格可能會在結尾重建。或者,可以僅以黑色開始和結束。

none

篩選立即開始,並在收到最後一個影格時結束。

frame

第一個影格或最後一個影格在處理期間保持完整。

black

在篩選開始或結束時填充黑色。

39.259 tinterlace

執行各種時間場交錯類型。

影格從 1 開始計數,因此第一個輸入影格被視為奇數。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

level_in

指定交錯的模式。此選項也可以單獨指定為一個值。請參閱下文以取得此選項的值清單。

可用的值為

merge, 0

將奇數影格移動到上半場,偶數影格移動到下半場,以半影格速率產生雙倍高度的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
drop_even, 1

僅輸出奇數影格,偶數影格被捨棄,以半影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
11111                           33333
11111                           33333
11111                           33333
drop_odd, 2

僅輸出偶數影格,奇數影格被捨棄,以半影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
                22222                           44444
                22222                           44444
                22222                           44444
                22222                           44444
pad, 3

將每個影格擴展到完整高度,但用黑色填充交替線條,以相同的輸入影格速率產生雙倍高度的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
interleave_top, 4

將奇數影格的上半場與偶數影格的下半場交錯,以半影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
interleave_bottom, 5

將奇數影格的下半場與偶數影格的上半場交錯,以半影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444

Output:
22222                           44444
11111                           33333
22222                           44444
11111                           33333
interlacex2, 6

以不變的高度將影格速率加倍。插入的每個影格都包含來自先前輸入影格的第二個時間場和來自下一個輸入影格的第一個時間場。此模式依賴 top_field_first 旗標。適用於沒有場同步的交錯視訊顯示器。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
 11111           22222           33333           44444
11111           22222           33333           44444
 11111           22222           33333           44444

Output:
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
mergex2, 7

將奇數影格移動到上半場,偶數影格移動到下半場,以相同的影格速率產生雙倍高度的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444

數值已棄用,但為了向後相容性而接受。

預設模式為 merge

flags

指定影響濾鏡過程的旗標。

flags 的可用值為

low_pass_filter, vlpf

在濾鏡中啟用線性垂直低通濾波。從包含高頻垂直細節的漸進式來源建立交錯目的地時,需要垂直低通濾波。濾波將減少交錯「顫動」和摩爾紋圖案。

complex_filter, cvlpf

啟用複雜垂直低通濾波。這將稍微減少交錯「顫動」和摩爾紋圖案,但更好地保留細節和主觀銳利度印象。

bypass_il

繞過已交錯的影格,僅調整影格速率。

垂直低通濾波和繞過已交錯的影格只能針對 mode interleave_topinterleave_bottom 啟用。

39.260 tmedian

從多個連續輸入視訊影格中選取中位數像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

radius

設定中位數濾鏡的半徑。預設值為 1。允許範圍為 1 到 127。

平面

設定要濾波的平面。預設值為 15,表示處理所有平面。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

39.260.1 指令

此濾鏡支援 commands 中的所有上述選項,但不包括選項 radius

39.261 tmidequalizer

應用時間中途視訊均衡效果。

中途視訊均衡調整一系列視訊影格以具有相同的直方圖,同時盡可能保持其動態。它對於例如匹配視訊影格序列的曝光很有用。

此濾鏡接受以下選項

radius

設定濾波半徑。預設值為 5。允許範圍為 1 到 127。

sigma

設定濾波 sigma。預設值為 0.5。這控制濾波強度。將此選項設定為 0 實際上不會執行任何操作。

平面

設定要處理哪些平面。預設值為 15,即所有可用的平面。

39.262 tmix

混合連續的視訊影格。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

frames

要混合的連續影格數量。如果未指定,預設值為 3。

權重

指定每個輸入視訊影格的權重。每個權重以空格分隔。如果權重數量小於 frames 數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果已設定,它將與每個權重與像素值乘積的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放至權重總和。

平面

設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。

39.262.1 範例

  • 平均 7 個連續影格
    tmix=frames=7:weights="1 1 1 1 1 1 1"
    
  • 套用簡單的時間卷積
    tmix=frames=3:weights="-1 3 -1"
    
  • 與上述類似,但僅顯示時間差異
    tmix=frames=3:weights="-1 2 -1":scale=1
    

39.262.2 指令

此濾波器支援以下命令

權重
scale
平面

語法與同名的選項相同。

39.263 tonemap

色調映射來自不同動態範圍的色彩。

此濾鏡預期單精度浮點資料,因為它需要對超出範圍的值進行操作(並且可以輸出)。需要另一個濾鏡,例如 zscale,將結果影格轉換為可用的格式。

已實作的色調映射演算法僅適用於線性光,因此輸入資料應事先線性化(並可能正確標記)。

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

39.263.1 選項

此濾鏡接受以下選項。

tonemap

設定要使用的色調映射演算法。

可能的值為

none

不套用任何色調映射,僅對過亮的像素進行去飽和處理。

削波

硬性剪切任何超出範圍的值。將其用於範圍內值的完美色彩準確度,同時扭曲超出範圍的值。

linear

將整個參考色域拉伸到顯示器的線性倍數。

gamma

在色調曲線之間擬合對數轉換。

reinhard

使用非線性對比度以簡單的曲線保留整體影像亮度,這會導致細節扁平化並降低色彩準確度。

hable

reinhard 更好地保留暗部和亮部細節,但會稍微使所有內容變暗。當細節保留比色彩和亮度準確度更重要時,請使用它。

mobius

平滑地映射超出範圍的值,同時盡可能保留範圍內素材的對比度和色彩。當色彩準確度比細節保留更重要時,請使用它。

預設值為 none。

param

調整色調映射演算法。

這會影響以下演算法

none

已忽略。

linear

指定拉伸時使用的縮放比例因子。預設值為 1.0。

gamma

指定函數的指數。預設值為 1.8。

削波

指定一個額外的線性係數,在剪切之前乘以訊號。預設值為 1.0。

reinhard

指定顯示器峰值時的局部對比度係數。預設值為 0.5,這表示色域內的值大約是剪切時亮度的一半。

hable

已忽略。

mobius

指定從線性轉換到 Mobius 轉換的轉換點。低於此點的每個值都保證以 1:1 映射。值越高,結果將越準確,但會犧牲亮部細節。預設值為 0.3,由於初始斜率陡峭,仍然相當準確地保留了範圍內的色彩。

desat

對超過此亮度等級的高光套用去飽和處理。參數越高,保留的色彩資訊越多。此設定有助於防止超高光出現不自然的過曝色彩,方法是(平滑地)變成白色。這使影像感覺更自然,但會降低關於超出範圍色彩的資訊。

預設值 2.0 有點保守,主要只適用於天空或陽光直射的表面。設定為 0.0 會停用此選項。

僅當輸入影格具有支援的色彩標籤時,此選項才有效。

rms

使用此值覆寫訊號/標稱/參考峰值。當顯示器元資料中的嵌入式峰值資訊不可靠或從較低範圍色調映射到較高範圍時很有用。

39.264 tpad

暫時填充視訊影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

start

指定輸入視訊串流之前的延遲影格數。預設值為 0。

stop

指定輸入視訊串流之後的填充影格數。設定為 -1 以無限期填充。預設值為 0。

start_silence

設定新增到串流開頭的影格種類。可以是 addclone。使用 add 會新增純色影格。使用 clone 影格是第一個影格的複製項。預設值為 add

stop_silence

設定新增到串流結尾的影格種類。可以是 addclone。使用 add 會新增純色影格。使用 clone 影格是最後一個影格的複製項。預設值為 add

start_duration, stop_duration

指定開始/停止延遲的持續時間。請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節 以了解可接受的語法。這些選項會覆寫 startstop。預設值為 0。

color

指定填充區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

color 的預設值為 "black"。

39.265 transpose

轉置輸入視訊中的行和列,並可選擇翻轉它。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

0, 4, cclock_flip

逆時針旋轉 90 度並垂直翻轉(預設),即

L.R     L.l
. . ->  . .
l.r     R.r
1, 5, clock

順時針旋轉 90 度,即

L.R     l.L
. . ->  . .
l.r     r.R
2, 6, cclock

逆時針旋轉 90 度,即

L.R     R.r
. . ->  . .
l.r     L.l
3, 7, clock_flip

順時針旋轉 90 度並垂直翻轉,即

L.R     r.R
. . ->  . .
l.r     l.L

對於介於 4-7 之間的值,只有當輸入視訊幾何形狀為直向而非橫向時,才會執行轉置。這些值已棄用,應改用 passthrough 選項。

數值已棄用,應改用符號常數。

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

預設值為 none

例如,要順時針旋轉 90 度並保留直向版面配置

transpose=dir=1:passthrough=portrait

上面的命令也可以指定為

transpose=1:portrait

39.266 transpose_npp

轉置輸入視訊中的行和列,並可選擇翻轉它。如需更深入的範例,請參閱 transpose 視訊濾鏡,它在很大程度上共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

39.267 trim

修剪輸入,使輸出包含輸入的一個連續子部分。

它接受以下參數

start

指定要保留區段的開始時間,即時間戳記為 start 的影格將是輸出中的第一個影格。

end

指定將被捨棄的第一個影格的時間,即緊接在時間戳記為 end 的影格之前的影格將是輸出中的最後一個影格。

start_pts

這與 start 相同,不同之處在於此選項以時基單位而非秒為單位設定開始時間戳記。

end_pts

這與 end 相同,不同之處在於此選項以時基單位而非秒為單位設定結束時間戳記。

duration

輸出的最大持續時間,以秒為單位。

start_frame

應傳遞到輸出的第一個影格的編號。

end_frame

應捨棄的第一個影格的編號。

startendduration 表示為時間持續時間規格;請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節 以了解可接受的語法。

請注意,前兩組開始/結束選項和 duration 選項會查看影格時間戳記,而 _frame 變體僅計算通過濾鏡的影格。另請注意,此濾鏡不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 trim 濾鏡之後插入 setpts 濾鏡。

如果設定了多個開始或結束選項,此濾鏡會盡力貪婪地保留至少符合一個指定約束的所有影格。若要僅保留一次符合所有約束的部分,請鏈結多個 trim 濾鏡。

預設值會保留所有輸入。因此,可以僅設定 end 值,以保留指定時間之前的所有內容。

範例

  • 捨棄除輸入的第二分鐘之外的所有內容。
    ffmpeg -i INPUT -vf trim=60:120
    
  • 僅保留前一秒
    ffmpeg -i INPUT -vf trim=duration=1
    

39.268 unpremultiply

使用第二個串流的第一個平面作為 Alpha,對輸入視訊串流套用 Alpha 預乘效果。

兩個串流必須具有相同的尺寸和相同的像素格式。

此濾波器接受以下選項

平面

設定將要處理的平面,未處理的平面將被複製。預設值為 0xf,將處理所有平面。

如果格式具有 1 或 2 個組件,則亮度為位元 0。如果格式具有 3 或 4 個組件:對於 RGB 格式,位元 0 為綠色,位元 1 為藍色,位元 2 為紅色;對於 YUV 格式,位元 0 為亮度,位元 1 為色度-U,位元 2 為色度-V。如果存在,Alpha 通道始終是最後一位。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 Alpha 平面。

39.269 unsharp

銳化或模糊輸入視訊。

它接受以下參數

luma_msize_x, lx

設定亮度矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

luma_msize_y, ly

設定亮度矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

luma_amount, la

設定亮度效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 1.0。

chroma_msize_x, cx

設定色度矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

chroma_msize_y, cy

設定色度矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

chroma_amount, ca

設定色度效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 0.0。

alpha_msize_x, ax

設定 Alpha 矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

alpha_msize_y, ay

設定 Alpha 矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

alpha_amount, aa

設定 Alpha 效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 0.0。

所有參數都是選用的,預設值相當於字串 '5:5:1.0:5:5:0.0'。

39.269.1 範例

  • 套用強烈的亮度銳化效果
    unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • 對亮度和色度參數套用強烈的模糊
    unsharp=7:7:-2:7:7:-2
    

39.270 untile

將由平鋪影像組成的視訊分解為個別影像。

輸出視訊的影格率是輸入視訊的影格率乘以平鋪數量。

此濾鏡執行與 tile 相反的操作。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

layout

設定網格大小(即行數和列數)。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節

39.270.1 範例

  • 從靜態影像檔案產生 1 秒視訊,該檔案由 25 個垂直堆疊的影格組成,就像類比膠片捲軸
    ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
    

39.271 uspp

套用超慢/簡單後處理濾鏡,該濾鏡在多個(或在 quality 等級 8 的情況下 - 所有)位移處壓縮和解壓縮影像,並對結果進行平均。

這與 spp 行為的不同之處在於,uspp 實際上使用 libavcodec Snow 編碼和解碼每個案例,而 spp 使用簡化的僅內部 8x8 DCT,類似於 MJPEG。

此濾鏡在 5.0 到 6.0 之間的 ffmpeg 版本中不可用。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定音調品質。可能的值包括

設定品質。此選項定義平均的等級數。它接受範圍 0-8 中的整數。如果設定為 0,濾鏡將不起作用。值 8 表示更高品質。對於該值的每次遞增,速度會下降約 2 倍。預設值為 3

qp

強制使用恆定量化參數。如果未設定,濾鏡將使用影片串流中的 QP(如果可用)。

codec

使用指定的編解碼器而不是 snow。

39.272 v360

在各種格式之間轉換 360 視訊。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入
輸出

設定輸入/輸出視訊的格式。

可用格式

e
equirect

等距柱狀投影。

c3x2
c6x1
c1x6

具有 3x2/6x1/1x6 版面配置的立方體貼圖。

格式特定選項

in_pad
out_pad

設定輸入/輸出立方體貼圖的填充比例。值為小數。

範例值

0

無填充。

0.01

1% 的面是填充。例如,使用 1920x1280 解析度,面大小將為 640x640,填充將為每側 3 像素。(640 * 0.01 = 6 像素)

預設值為 0。最大值為 0.1

fin_pad
fout_pad

設定輸入/輸出立方體貼圖的固定填充。值以像素為單位。

預設值為 0。如果大於零,則會覆寫其他填充選項。

in_forder
out_forder

設定輸入/輸出立方體貼圖的面順序。為每個位置選擇一個方向。

方向的指定

r

right (右)

l

left (左)

u

up (向上)

d

down (向下)

f

forward

b

back

預設值為 rludfb

in_frot
out_frot

設定輸入/輸出立方體貼圖的面旋轉。為每個位置選擇一個角度。

角度的指定

0

0 度順時針

1

90 度順時針

2

180 度順時針

3

270 度順時針

預設值為 000000

eac

等角立方體貼圖。

flat
gnomonic
rectilinear

常規視訊。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

dfisheye

雙魚眼。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

barrel
fb
barrelsplit

Facebook 的 360 格式。

sg

立體投影格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

mercator

麥卡托格式。

ball

球體格式,在背面產生顯著的失真。

hammer

漢默-艾托夫地圖投影格式。

sinusoidal

正弦曲線地圖投影格式。

fisheye

魚眼投影。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

pannini

帕尼尼投影。

格式特定選項

h_fov

設定輸出帕尼尼參數。

ih_fov

設定輸入帕尼尼參數。

cylindrical

圓柱投影。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

perspective

透視投影。(僅輸出)

格式特定選項

v_fov

設定透視參數。

tetrahedron

四面體投影。

tsp

截斷正方錐體投影。

he
hequirect

半等距柱狀投影。

equisolid

等立體角格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

og

正交格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角視野。值以度為單位。

如果設定了對角視野,它將覆寫水平和垂直視野。

octahedron

八面體投影。

cylindricalea

圓柱等面積投影。

interp

設定內插法。
注意:更複雜的內插法需要更多記憶體才能執行。

可用方法

near
nearest

最近鄰。

line
linear

雙線性內插法。

lagrange9

Lagrange9 內插法。

cube
cubic

雙立方內插法。

lanc
lanczos

Lanczos 內插法。

sp16
spline16

Spline16 內插法。

gauss
gaussian

高斯內插法。

mitchell

Mitchell 內插法。

預設值為 line

w
h

設定輸出視訊解析度。

預設解析度取決於格式。

in_stereo
out_stereo

設定輸入/輸出立體格式。

2d

2D 單聲道

sbs

並排

tb

上下

輸入和輸出格式的預設值為 2d

yaw
pitch
roll

設定輸出視訊的旋轉。值以度為單位。

rorder

設定輸出視訊的旋轉順序。為每個位置選擇一個項目。

y, Y

yaw

p, P

pitch

r, R

roll

預設值為 ypr

h_flip
v_flip
d_flip

水平翻轉輸出視訊(左右交換)/垂直翻轉(上下交換)/深度翻轉(前後交換)。布林值。

ih_flip
iv_flip

設定輸入視訊是否水平/垂直翻轉。布林值。

in_trans

設定輸入視訊是否轉置。布林值,預設為停用。

out_trans

設定輸出視訊是否需要轉置。布林值,預設為停用。

h_offset
v_offset

設定輸出水平/垂直軸外偏移。預設值為 0。允許範圍為 -1 到 1。

alpha_mask

在 Alpha 平面中為所有未映射的像素建立遮罩,將它們標記為完全透明。布林值,預設為停用。

reset_rot

重設輸出視訊的旋轉。布林值,預設為停用。

39.272.1 範例

  • 使用雙立方插值將等距柱狀投影視訊轉換為 3x2 佈局和 1% 邊距的立方體貼圖
    ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
    
  • 提取等角立方體貼圖的後視圖
    ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
    
  • 將並排立體格式中已轉置和水平翻轉的等角立方體貼圖轉換為上下立體格式的等距柱狀投影
    v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
    

39.272.2 指令

此濾鏡支援上述選項的子集作為指令

39.273 vaguedenoiser

套用基於小波的降噪器。

它使用 Cohen-Daubechies-Feauveau 9/7 將來自視訊輸入的每個影格轉換到小波域。然後,它對獲得的係數應用一些濾波。之後進行逆小波轉換。由於小波特性,它應該能提供平滑的效果,並減少雜訊,而不會模糊圖片特徵。

此濾波器接受以下選項

threshold

濾波強度。數值越高,視訊濾波程度越高。在視訊看起來過度濾波之前,硬閾值處理可以使用比軟閾值處理更高的閾值。預設值為 2。

method

濾鏡將使用的濾波方法。

它接受以下值

hard

所有低於閾值的值都將歸零。

soft

所有低於閾值的值都將歸零。所有高於閾值的值都將減少閾值量。

garrote

縮放或使係數無效 - 介於(更)軟閾值處理和(更少)硬閾值處理之間。

預設為 garrote。

nsteps

小波將分解圖片的次數。圖片分解不能超過特定點(通常,對於 640x480 影格為 8 - 因為 2^9 = 512 > 480)。有效值是介於 1 和 32 之間的整數。預設值為 6。

percent

部分或完全降噪(有限的係數縮減),從 0 到 100。預設值為 85。

平面

要處理的平面的列表。預設情況下,處理所有平面。

type

濾鏡將使用的閾值類型。

它接受以下值

universal

所有分解都使用相同的閾值。

bayes

使用的閾值也取決於每個分解係數。

預設為 universal。

39.274 varblur

透過使用第二個視訊串流設定模糊半徑來套用可變模糊濾鏡。第二個串流必須具有相同的尺寸。

此濾波器接受以下選項

min_r

設定允許的最小半徑。允許範圍為 0 到 254。預設值為 0。

max_r

設定允許的最大半徑。允許範圍為 1 到 255。預設值為 8。

平面

設定要處理的平面。預設情況下,使用所有平面。

varblur 濾鏡也支援 framesync 選項。

39.274.1 指令

此濾鏡支援所有上述選項作為指令

39.275 vectorscope

在二維圖形(稱為向量示波器)中顯示 2 個色彩分量值。

此濾波器接受以下選項

mode, m

設定向量示波器模式。

它接受以下值

gray
tint

灰階值顯示在圖形上,亮度越高表示在圖形上的位置具有相同分量色彩值的像素越多。這是預設模式。

color

灰階值顯示在圖形上。視訊影格中不存在的周圍像素值以由選項 xy 設定的 2 個色彩分量的漸層繪製。第三個色彩分量是靜態的。

color2

視訊影格中存在的實際色彩分量值顯示在圖形上。

color3

與 color2 類似,但圖形上相同值 xy 的頻率越高,另一個色彩分量的值就越高,預設值 xy 時,該分量為亮度。

color4

視訊影格中存在的實際色彩顯示在圖形上。如果兩種不同的色彩映射到圖形上的相同位置,則選擇在圖形中不存在的分量值較高的色彩。

color5

灰階值顯示在圖形上。與 color 類似,但第三個色彩分量從徑向漸層中選取。

x

設定哪個色彩分量將在 X 軸上表示。預設值為 1

y

設定哪個色彩分量將在 Y 軸上表示。預設值為 2

intensity, i

設定強度,由模式:gray、color、color3 和 color5 使用,以增加色彩分量的亮度,該色彩分量表示圖形中 (X, Y) 位置的頻率。

envelope, e
none

無封包,這是預設值。

instant

即時封包,即使是最暗的單個像素也會被清楚地突出顯示。

peak

隨時間保留圖形中顯示的最大值和最小值。這樣,您仍然可以發現超出範圍的值,而無需不斷查看向量示波器。

peak+instant

峰值和即時封包組合在一起。

graticule, g

設定要繪製的刻度類型。

none
green
color
invert
opacity, o

設定刻度不透明度。

flags, f

設定刻度標誌。

white

繪製白點的刻度。

black

繪製黑點的刻度。

name

繪製色彩點簡短名稱。

bgopacity, b

設定背景不透明度。

lthreshold, l

設定未在 X 或 Y 軸上表示的色彩分量的低閾值。低於此值的值將被忽略。預設值為 0。請注意,此值與一個像素分量可以擁有的實際最大可能值相乘。因此,對於 8 位元輸入,低閾值為 0.1,實際閾值為 0.1 * 255 = 25。

hthreshold, h

設定未在 X 或 Y 軸上表示的色彩分量的高閾值。高於此值的值將被忽略。預設值為 1。請注意,此值與一個像素分量可以擁有的實際最大可能值相乘。因此,對於 8 位元輸入,高閾值為 0.9,實際閾值為 0.9 * 255 = 230。

colorspace, c

設定繪製刻度時要使用的色彩空間類型。

auto
601
709

預設為 auto。

tint0, t0
tint1, t1

設定灰階/色調向量示波器模式的色調。預設情況下,兩個選項均為零。這表示沒有色調,輸出將保持灰階。

39.276 vidstabdetect

分析視訊穩定/去震。執行第 1/2 階段,請參閱 vidstabtransform 以了解第 2 階段。

此濾鏡產生一個檔案,其中包含有關後續影格的相對平移和旋轉變換資訊,然後由 vidstabtransform 濾鏡使用。

若要啟用此濾鏡的編譯,您需要使用 --enable-libvidstab 配置 FFmpeg。

此濾波器接受以下選項

result

設定用於寫入變換資訊的檔案路徑。預設值為 transforms.trf

shakiness

設定視訊的晃動程度以及相機的速度。它接受 1-10 範圍內的整數,值為 1 表示輕微晃動,值為 10 表示強烈晃動。預設值為 5。

accuracy

精確度

設定偵測過程的精確度。它必須是 1-15 範圍內的值。值為 1 表示低精確度,值為 15 表示高精確度。預設值為 15。

stepsize

設定搜尋過程的步長。以 1 像素解析度掃描最小值周圍的區域。預設值為 6。

mincontrast

設定最小對比度。低於此值時,將捨棄局部測量欄位。必須是 0-1 範圍內的浮點值。預設值為 0.3。

tripod

設定腳架模式的參考影格編號。

如果啟用,則將影格的運動與已篩選串流中的參考影格進行比較,由指定的編號識別。目的是補償或多或少靜態場景中的所有運動,並保持相機視圖絕對靜止。

show

如果設定為 0,則停用。影格從 1 開始計數。

show

在結果影格中顯示欄位和變換。它接受 0-2 範圍內的整數。預設值為 0,這會停用任何視覺化。

fileformat

要寫入的變換資料檔案的格式。可接受的值為

binary

ascii

39.276.1 範例

  • 人類可讀的純文字
    vidstabdetect
    
  • binary
    vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
    
  • 二進位格式,比 ascii 大約小 40%。(預設)
    vidstabdetect=show=1
    
  • 使用預設值
    ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
    

39.277 vidstabtransform

分析強烈晃動的影片,並將結果放入檔案 mytransforms.trf

視覺化結果視訊中內部變換的結果

若要啟用此濾鏡的編譯,您需要使用 --enable-libvidstab 配置 FFmpeg。

39.277.1 選項

輸入

使用 ffmpeg 分析中等晃動的視訊

short

視訊穩定/去震:第 2/2 階段,請參閱 vidstabdetect 以了解第 1 階段。

讀取包含每個影格的變換資訊的檔案並套用/補償它們。與 vidstabdetect 濾鏡一起使用,這可用於去震視訊。另請參閱 http://public.hronopik.de/vid.stab。務必也使用 unsharp 濾鏡,請參閱下文。

transforms

設定用於讀取變換的檔案路徑。預設值為 transforms.trf

smoothing

gauss

設定用於低通濾波相機運動的影格數(值 * 2 + 1)。預設值為 10。

avg

例如,數值 10 表示使用 21 個影格(過去 10 個和未來 10 個)來平滑視訊中的運動。較大的值會產生更平滑的視訊,但會限制相機的加速度(平移/傾斜運動)。0 是一種特殊情況,其中模擬靜態相機。

optalgo

設定相機路徑最佳化演算法。

可接受的值為

gaussian

相機運動的高斯核心低通濾波器(預設)

average

可用的值為

變換的平均

maxshift

black

設定平移影格的最大像素數。預設值為 -1,表示無限制。

maxangle

設定旋轉影格的最大角度(弧度)(度 * PI/180)。預設值為 -1,表示無限制。

crop

指定如何處理可能因運動補償而可見的邊框。

keep

保留先前影格的影像資訊(預設)

black

將邊框填滿黑色

smoothing

0

已停用

1

invert

2

如果設定為 1,則反轉變換。預設值為 0。

relative

如果設定為 1,則將變換視為相對於先前影格,如果設定為 0,則視為絕對變換。預設值為 0。

zoom

設定要縮放的百分比。正值將產生放大效果,負值將產生縮小效果。預設值為 0(無縮放)。

optzoom

可用的值為

設定最佳縮放以避免邊框。

static

linear

確定最佳靜態縮放值(只有非常強烈的運動才會導致可見邊框)(預設)

bilinear

adaptive

bicubic

確定最佳自適應縮放值(不會看到邊框),請參閱 zoomspeed

設定最小對比度。低於此值時,將捨棄局部測量欄位。必須是 0-1 範圍內的浮點值。預設值為 0.3。

請注意,此處給定的值會加到在 zoom 處給定的值。

zoomspeed

debug

設定每個影格最大縮放百分比(當 optzoom 設定為 2 時啟用)。範圍為 0 到 5,預設值為 0.25。

39.277.2 範例

  • interpol
    ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
    

    指定內插類型。

  • no
    vidstabtransform=zoom=5:input="mytransforms.trf"
    
  • 無內插
    vidstabtransform=smoothing=30
    

39.278 vflip

linear

僅限水平線性

ffmpeg -i in.avi -vf "vflip" out.avi

39.279 vfrdet

bilinear

雙向線性(預設)

cubic

39.280 vibrance

雙向立方(慢)

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

強度

virtripod

如果設定為 1,則啟用虛擬腳架模式,這相當於 relative=0:smoothing=0。預設值為 0。

另請使用 vidstabdetecttripod 選項。

verbose

如果設定為 1,則增加記錄詳細程度。偵測到的整體運動也會寫入暫存檔 global_motions.trf。預設值為 0。

使用 ffmpeg 進行具有預設值的典型穩定

請注意,始終建議使用 unsharp 濾鏡。

稍微放大並從給定檔案載入變換資料

更進一步平滑視訊

vflip

垂直翻轉輸入視訊。

例如,使用 ffmpeg 垂直翻轉視訊

vfrdet

偵測可變影格率視訊。

此濾鏡嘗試偵測輸入是可變影格率還是恆定影格率。

39.280.1 指令

選擇輸入串流的所有通道之間的 average 等級或輸入串流的較大聲(maximum)通道是否影響衰減。 預設值為 average

39.281 vif

最後,它將輸出偵測為具有可變 delta pts 的影格數,以及具有恆定 delta pts 的影格數。如果存在具有可變 delta 的影格,則它還將顯示遇到的最小、最大和平均 delta。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入都具有相同數量的影格,這些影格會逐一比較。

薩特

增強或改變飽和度。

此濾鏡也支援 framesync 選項。

在下面的範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -

39.282 vignette

強度

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

angle, a

設定增強強度(如果為正值)或改變強度(如果為負值)。預設值為 0。允許範圍為 -2 到 2。

rbal

設定紅色平衡。預設值為 1。允許範圍為 -10 到 10。

x0
y0

設定中心座標表達式。預設值分別為 "w/2""h/2"

level_in

設定前進/後退模式。

可用的模式如下

forward’(前進)

離中心點越遠,影像越暗。

backward’(後退)

離中心點越遠,影像越亮。這可以用於反轉暈影效果,雖然目前還沒有自動偵測來提取鏡頭角度和其他設定(尚未)。它也可以用於創建燃燒效果。

預設值為 ‘forward’(前進)。

eval

設定表達式(anglex0y0)的評估模式。

它接受以下值

init

僅在濾鏡初始化期間評估表達式一次。

frame

為每個傳入幀評估表達式。這比 ‘init’(初始化)模式慢很多,因為它需要重新計算所有縮放器,但它允許進階的動態表達式。

預設值為 ‘init’。

dither

設定遞色以減少圓形條帶效應。預設值為 1(啟用)。

aspect

設定暈影的長寬比。此設定允許調整暈影的形狀。將此值設定為輸入的 SAR 將使暈影的形狀依照影片的尺寸呈現矩形。

預設值為 1/1

39.282.1 表達式

alphax0y0 表達式可以包含以下參數。

w
h

輸入寬度和高度

n

輸入影格編號,從 0 開始

pts

已過濾視訊幀的 PTS(演示時間戳),以 TB 單位表示,若未定義則為 NAN

r

輸入影片的幀率,如果輸入幀率未知則為 NAN

t

已過濾視訊幀的 PTS(演示時間戳),以秒為單位表示,若未定義則為 NAN

tb

輸入影片的時間基底

39.282.2 範例

  • 套用簡單的強烈暈影效果
    vignette=PI/4
    
  • 製作閃爍的暈影
    vignette='PI/4+random(1)*PI/50':eval=frame
    

39.283 vmafmotion

取得影片的平均 VMAF 運動分數。它是 VMAF 的組件指標之一。

取得的平均運動分數會透過記錄系統印出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

stats_file(統計檔案)

若有指定,濾鏡將使用指定的檔案來儲存每個幀相對於前一幀的運動分數。當檔名等於 "-" 時,資料會傳送到標準輸出。

範例

ffmpeg -i ref.mpg -vf vmafmotion -f null -

39.284 vstack

垂直堆疊輸入影片。

所有串流都必須具有相同的像素格式和相同的寬度。

請注意,此濾鏡比使用 overlaypad 濾鏡創建相同的輸出更快。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入

設定輸入串流的數量。預設值為 2。

shortest

如果設定為 1,則強制輸出在最短輸入終止時終止。 預設值為 0。

39.285 w3fdif

對輸入影片進行反交錯處理("w3fdif" 代表 "Weston 3 Field Deinterlacing Filter",Weston 三場反交錯濾鏡)。

此濾鏡基於 Martin Weston 為 BBC R&D 描述的流程,並根據 Jim Easterbrook 為 BBC R&D 編寫的反交錯演算法實作,Weston 三場反交錯濾鏡使用 BBC R&D 計算的濾鏡係數。

此濾鏡使用幀中的場域主導資訊來決定在輸出中首先放置每對場域中的哪一個。如果判斷錯誤,請在 w3fdif 濾鏡之前使用 setfield 濾鏡。

有兩組濾鏡係數,分別稱為 "simple"(簡單)和 "complex"(複雜)。可以透過傳遞可選參數來設定要使用哪一組濾鏡係數

filter

設定交錯濾鏡係數。接受下列其中一個值

simple

簡單濾鏡係數集。

complex

更複雜的濾鏡係數集。

預設值為 ‘complex’(複雜)。

level_in

要採用的交錯模式。它接受以下值之一

frame

為每個影格輸出一個影格。

field

為每個圖場輸出一個影格。

預設值為 field

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

tff

假設頂圖場優先。

bff

假設底圖場優先。

auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

all

對所有幀進行反交錯處理。

interlaced’(交錯)

僅對標記為交錯的影格進行去交錯處理。

預設值為 ‘all’(全部)。

39.285.1 指令

此濾鏡支援與選項相同的 commands

39.286 waveform

視訊波形監視器。

波形監視器繪製色彩分量強度。預設情況下僅限亮度。波形的每一列對應於來源視訊中的一列像素。

它接受以下選項

mode, m

可以是 row(列)或 column(行)。預設值為 column(行)。在列模式下,左側的圖形代表色彩分量值 0,右側代表值 = 255。在行模式下,頂部代表色彩分量值 = 0,底部代表值 = 255。

intensity, i

設定強度。較小的值有助於找出有多少相同亮度的值分佈在輸入列/行中。預設值為 0.04。允許範圍為 [0, 1]。

mirror(鏡像), r

設定鏡像模式。0 表示不鏡像,1 表示鏡像。在鏡像模式下,較高的值將在 row(列)模式下表示在左側,在 column(行)模式下表示在頂部。預設值為 1(鏡像)。

display(顯示), d

設定顯示模式。它接受以下值

overlay

呈現與 parade 相同的資訊,但代表色彩成分的圖表直接彼此疊加。

此顯示模式使您可以更輕鬆地發現色彩分量重疊區域中的相對差異或相似之處,這些色彩分量應為相同,例如中性白色、灰色或黑色。

stack

row(列)模式下並排顯示色彩分量的個別圖形,或在 column(行)模式下上下顯示。

parade

column(行)模式下並排顯示色彩分量的個別圖形,或在 row(列)模式下上下顯示。

使用此顯示模式可以輕鬆發現影像高光和陰影中的色偏,方法是比較每個波形的頂部和底部圖形的輪廓。由於白色、灰色和黑色的特徵是紅、綠和藍色的量完全相等,因此圖片的中性區域應顯示三個寬度/高度大致相等的波形。如果不是,則可以透過調整三個波形的位準來輕鬆進行校正。

預設值為 stack

components, c

設定要顯示哪些色彩分量。預設值為 1,這表示如果輸入為 RGB 色彩空間,則僅亮度或紅色色彩分量。如果設定為例如 7,它將顯示所有 3 個(如果有的話)可用的色彩分量。

envelope, e
none

無封包,這是預設值。

instant

即時包絡線,即使使用小的 step(步階)值,圖形中呈現的最小值和最大值也將很容易看到。

peak

在時間軸上保持圖形中呈現的最小值和最大值。這樣,您仍然可以發現超出範圍的值,而無需 постоянно 查看波形。

peak+instant

峰值和即時封包組合在一起。

filter(濾鏡), f
lowpass

不進行濾波,這是預設值。

flat

亮度和彩度組合在一起。

aflat

與上述類似,但顯示藍色和紅色色度之間的差異。

xflat

與上述類似,但使用不同的顏色。

yflat

與上述類似,但再次使用不同的顏色。

chroma

僅顯示彩度。

color

在波形上顯示實際顏色值。

acolor

與上述類似,但亮度顯示彩度值的頻率。

graticule, g

設定要顯示哪個刻度。

none

不顯示刻度。

green

顯示綠色刻度,顯示合法的廣播範圍。

orange’(橘色)

顯示橘色刻度,顯示合法的廣播範圍。

invert

顯示反轉刻度,顯示合法的廣播範圍。

opacity, o

設定刻度不透明度。

flags(旗標), fl

設定刻度標誌。

numbers’(數字)

在線條上方繪製數字。預設為啟用。

dots’(點)

繪製點而不是線條。

scale(比例), s

設定用於顯示刻度的比例。

digital’(數位)
millivolts’(毫伏特)
ire

預設值為數位。

bgopacity, b

設定背景不透明度。

tint0, t0
tint1, t1

設定輸出的色調。僅在低通濾鏡且顯示器不是覆蓋且輸入像素格式不是 RGB 時使用。

fitmode(適應模式), fm

設定視訊輸出幀的樣本長寬比。可用於配置波形,使其在一個方向上不會過度拉伸。

none

設定樣本長寬比為 1/1。

size

設定樣本長寬比以符合視訊的輸入大小

預設值為 ‘none’(無)。

輸入

設定濾鏡要從中選取的輸入格式。可以是 ‘all’(全部),用於從所有可用格式中選取,或是 ‘first’(第一個),用於選取第一個可用的格式。預設值為 ‘first’(第一個)。

39.287 weave, doubleweave

weave(編織)採用基於場域的視訊輸入,並將每兩個連續的場域接合到單個幀中,產生一個新的雙倍高度剪輯,其幀率和幀數減半。

doubleweave(雙重編織)的工作方式與 weave(編織)相同,但不減半幀率和幀數。

它接受以下選項

first_field

設定第一個場域。可用的值為

top, t

將幀設定為頂場優先。

bottom, b

將幀設定為底場優先。

39.287.1 範例

  • 使用 select(選取)和 separatefields(分離場域)濾鏡交錯視訊
    separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
    

39.288 xbr

套用 xBR 高品質放大濾鏡,該濾鏡專為像素藝術設計。它遵循一組邊緣偵測規則,請參閱 https://forums.libretro.com/t/xbr-algorithm-tutorial/123

它接受以下選項

n

設定縮放維度:2 代表 2xBR3 代表 3xBR4 代表 4xBR。預設值為 3

39.289 xcorrelate

在第一個和第二個輸入視訊串流之間套用正規化交叉相關。

第二個輸入視訊串流的尺寸必須小於第一個輸入視訊串流。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

平面

設定要處理的平面。

secondary(次要)

設定將從第二個輸入視訊串流處理哪些次要視訊幀,可以是 first(第一個)或 all(全部)。預設值為 all(全部)。

xcorrelate(交叉相關)濾鏡也支援 framesync(幀同步)選項。

39.290 xfade

從一個輸入視訊串流到另一個輸入視訊串流套用交叉淡化。交叉淡化會套用指定的持續時間。

兩個輸入都必須是恆定幀率,並且具有相同的解析度、像素格式、幀率和時間基底。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

transition(轉場)

設定可用的轉場效果之一

custom
fade’ (淡化)
wipeleft’(向左擦拭)
wiperight’(向右擦拭)
wipeup’(向上擦拭)
wipedown’(向下擦拭)
slideleft’(向左滑動)
slideright’(向右滑動)
slideup’(向上滑動)
slidedown’(向下滑動)
circlecrop’(圓形裁剪)
rectcrop’(矩形裁剪)
distance’(距離)
fadeblack’(淡入黑色)
fadewhite’(淡入白色)
radial’(放射狀)
smoothleft’(向左平滑)
smoothright’(向右平滑)
smoothup’(向上平滑)
smoothdown’(向下平滑)
circleopen’(圓形開啟)
circleclose’(圓形關閉)
vertopen’(垂直開啟)
vertclose’(垂直關閉)
horzopen’(水平開啟)
horzclose’(水平關閉)
dissolve’(溶解)
pixelize’(像素化)
diagtl’(對角線左上)
diagtr’(對角線右上)
diagbl’(對角線左下)
diagbr’(對角線右下)
hlslice’(水平左切片)
hrslice’(水平右切片)
vuslice’(垂直上切片)
vdslice’(垂直下切片)
hblur’(水平模糊)
fadegrays’(淡入灰色)
wipetl’(擦拭左上)
wipetr’(擦拭右上)
wipebl’(擦拭左下)
wipebr’(擦拭右下)
squeezeh’(水平擠壓)
squeezev’(垂直擠壓)
zoomin’(放大)
fadefast’(快速淡化)
fadeslow’(慢速淡化)
hlwind’(水平左風)
hrwind’(水平右風)
vuwind’(垂直上風)
vdwind’(垂直下風)
coverleft’(向左覆蓋)
coverright’(向右覆蓋)
coverup’(向上覆蓋)
coverdown’(向下覆蓋)
revealleft’(向左揭示)
revealright’(向右揭示)
revealup’(向上揭示)
revealdown’(向下揭示)

預設轉場效果為淡化。

duration

設定交叉淡化持續時間,以秒為單位。範圍為 0 到 60 秒。預設持續時間為 1 秒。

offset

設定交叉淡化開始時間,相對於第一個輸入串流,以秒為單位。預設偏移為 0。

expr(表達式)

設定自訂轉場效果的表達式。

表達式可以使用以下變數和函數

X
Y

當前樣本的座標。

W
H

影像的寬度和高度。

P

轉場效果的進度。

PLANE(平面)

目前處理的平面。

A

傳回目前位置和平面上第一個輸入的值。

B

傳回目前位置和平面上第二個輸入的值。

a0(x, y)
a1(x, y)
a2(x, y)
a3(x, y)

傳回第一個輸入的第一/第二/第三/第四個分量在位置 (x,y) 的像素值。

b0(x, y)
b1(x, y)
b2(x, y)
b3(x, y)

傳回第二個輸入的第一/第二/第三/第四個分量在位置 (x,y) 的像素值。

39.290.1 範例

  • 從一個輸入視訊交叉淡化到另一個輸入視訊,轉場效果為淡化,轉場持續時間為 2 秒,從偏移 5 秒開始
    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
    

39.291 xmedian

從多個輸入視訊中選取中間像素。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入

設定輸入數量。預設值為 3。允許範圍為 3 到 255。如果輸入數量為偶數,則結果將是兩個中間值之間的平均值。

平面

設定要濾波的平面。預設值為 15,表示處理所有平面。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

39.291.1 指令

此濾鏡支援以上所有選項作為 commands(命令),排除選項 inputs(輸入)。

39.292 xpsnr

取得兩個輸入視訊之間的平均(跨所有輸入幀)和最小(跨所有色彩平面平均值)eXtended Perceptually weighted peak Signal-to-Noise Ratio (XPSNR,延伸感知加權峰值訊號雜訊比)。

XPSNR 是一種低複雜度的心理視覺動機失真測量演算法,用於評估兩個視訊串流或影像之間的差異。這對於客觀量化視訊和影像編解碼器引起的失真特別有用,作為形式主觀測試的替代方案。對數 XPSNR 輸出值與傳統 psnr(峰值訊號雜訊比)評估的值範圍相似,但更能反映人類對視覺編碼品質的印象。有關 XPSNR 測量的更多詳細資訊,它基本上代表了 PSNR 測量的區塊加權變體,可以在以下免費提供的論文中找到

  • C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. www.ecodis.de/xpsnr.htm
  • C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en

當發布使用 XPSNR 評估結果時,例如,使用此 FFmpeg 濾鏡,強烈建議參考上述論文作為文檔方式。此濾鏡需要兩個輸入視訊。第一個輸入被視為(通常未失真)參考來源,並未經更改地傳遞到輸出,而第二個輸入是(失真)測試訊號。除了位元深度外,這兩個視訊輸入必須具有相同的像素格式。此外,為了獲得最佳效能,兩個比較的輸入視訊都應採用 YCbCr 色彩格式。

上述取得的整體 XPSNR 值會透過記錄系統印出。在具有多個色彩平面的輸入情況下,我們建議報告最小 XPSNR 平均值。

接受以下參數,其行為方式與 psnr(峰值訊號雜訊比)濾鏡的參數類似

stats_file, f

若有指定,濾鏡將使用指定的檔案來儲存每個個別幀和色彩平面的 XPSNR 值。當檔名等於 "-" 時,資料會傳送到標準輸出。

此濾鏡也支援 framesync 選項。

39.292.1 範例

  • 兩個 1080p HD 視訊 ref_source.yuv 和 test_video.yuv 的 XPSNR 分析,兩者皆為每秒 24 幀,色彩格式為 4:2:0,位元深度為 8,並輸出名為 "xpsnr.log" 的日誌檔
    ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate
    24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
    
  • 兩個 2160p UHD 視訊的 XPSNR 分析,ref_source.yuv 位元深度為 8,test_video.yuv 位元深度為 10,兩者皆為每秒 60 幀,色彩格式為 4:2:0,無日誌檔輸出
    ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate
    60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
    

39.293 xstack

將視訊輸入堆疊到自訂版面配置中。

所有串流都必須具有相同的像素格式。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

輸入

設定輸入串流的數量。預設值為 2。

layout

指定輸入的版面配置。此選項需要使用者明確設定所需的版面配置組態。這會設定每個視訊輸入在輸出中的位置。每個輸入以 '|' 分隔。第一個數字表示列,第二個數字表示行。數字從 0 開始,並以 '_' 分隔。或者,可以使用 wX 和 hX,其中 X 是要從中取得寬度或高度的視訊輸入。多個值可以用 '+' 分隔時使用。在這種情況下,值會加總在一起。

請注意,如果輸入大小不同,則可能會出現間隙,因為並非所有輸出視訊幀都會被填滿。同樣地,如果視訊的位置沒有為相鄰視訊的完整幀留下足夠的空間,則視訊可能會彼此重疊。

對於 2 個輸入,會設定預設版面配置 0_0|w0_0(相當於 grid=2x1)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定 gridlayout。同時指定兩者將導致錯誤。

網格

指定輸入的固定尺寸網格。此選項用於建立固定尺寸的輸入串流網格。以 COLUMNSxROWS 格式設定網格尺寸。必須有 ROWS * COLUMNS 個輸入串流,並且它們將排列成具有 ROWS 列和 COLUMNS 行的網格。使用此選項時,同一列中的每個輸入串流必須具有相同的高度,並且所有列必須具有相同的寬度。

如果設定了 grid,則 inputs 選項將被忽略,並隱式設定為 ROWS * COLUMNS

對於 2 個輸入,預設網格設定為 2x1(相當於 layout=0_0|w0_0)。在所有其他情況下,使用者必須設定佈局或網格。gridlayout 只能設定其中一個。同時指定兩者將導致錯誤。

shortest

如果設定為 1,則強制輸出在最短輸入終止時終止。 預設值為 0。

fill

如果設定為有效的顏色,所有未使用的像素將會填充該顏色。預設情況下,填充設定為無,因此它被禁用。

39.293.1 範例

  • 將 4 個輸入顯示為 2x2 網格。

    佈局

    input1(0, 0)  | input3(w0, 0)
    input2(0, h0) | input4(w0, h0)
    
    xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

  • 將 4 個輸入顯示為 1x4 網格。

    佈局

    input1(0, 0)
    input2(0, h0)
    input3(0, h0+h1)
    input4(0, h0+h1+h2)
    
    xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
    

    請注意,如果輸入寬度不同,則會出現未使用的空間。

  • 將 9 個輸入顯示為 3x3 網格。

    佈局

    input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
    input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
    input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
    
    xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

  • 將 16 個輸入顯示為 4x4 網格。

    佈局

    input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
    input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
    input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
    input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
    
    xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
    w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

39.294 yadif

對輸入視訊進行反交錯處理(“yadif”表示“yet another deinterlacing filter”,又一個反交錯濾鏡)。

它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

0, send_frame

為每個影格輸出一個影格。

1, send_field

為每個圖場輸出一個影格。

2, send_frame_nospatial

類似於 send_frame,但它會跳過空間交錯檢查。

3, send_field_nospatial

類似於 send_field,但它會跳過空間交錯檢查。

預設值為 send_frame

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

0, tff

假設頂圖場優先。

1, bff

假設底圖場優先。

-1, auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

39.295 yadif_cuda

使用 yadif 演算法對輸入視訊進行反交錯處理,但以 CUDA 實作,使其可以作為 GPU 加速管線的一部分與 nvdec 和/或 nvenc 一起工作。

它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

0, send_frame

為每個影格輸出一個影格。

1, send_field

為每個圖場輸出一個影格。

2, send_frame_nospatial

類似於 send_frame,但它會跳過空間交錯檢查。

3, send_field_nospatial

類似於 send_field,但它會跳過空間交錯檢查。

預設值為 send_frame

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

0, tff

假設頂圖場優先。

1, bff

假設底圖場優先。

-1, auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

39.296 yaepblur

套用模糊濾鏡,同時保留邊緣(“yaepblur”表示“yet another edge preserving blur filter”,又一個邊緣保留模糊濾鏡)。該演算法在“J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980.” 中進行了描述。

它接受以下參數

半徑, r

設定視窗半徑。預設值為 3。

planes, p

設定要過濾的平面。預設值僅為第一個平面。

sigma, s

設定模糊強度。預設值為 128。

39.296.1 指令

此濾鏡支援與選項相同的 commands

39.297 zoompan

套用縮放和Pan效果。

此濾波器接受以下選項

縮放, z

設定縮放表達式。範圍為 1-10。預設值為 1。

x
y

設定 x 和 y 表達式。預設值為 0。

d

設定持續時間表達式,以幀數為單位。這設定單個輸入圖像的效果持續多少幀數。預設值為 90。

s

設定輸出圖像尺寸,預設值為 'hd720'。

fps (幀率)

設定輸出幀率,預設值為 '25'。

每個表達式可以包含以下常數

in_w、iw

輸入寬度。

in_h、ih

輸入高度。

out_w, ow

輸出寬度。

out_h, oh

輸出高度。

in

輸入影格計數。

on

輸出影格計數。

輸入時間, it

輸入時間戳記,以秒為單位表示。如果輸入時間戳記未知,則為 NAN。

輸出時間, 時間, ot

輸出時間戳記,以秒為單位表示。

x
y

從目前輸入幀的 'x' 和 'y' 表達式計算出的最後 'x' 和 'y' 位置。

px
py

前一個輸入幀的最後輸出幀的 'x' 和 'y',或者當還沒有這樣的幀時(第一個輸入幀)為 0。

keep

從目前輸入幀的 'z' 表達式計算出的最後縮放。

pzoom

前一個輸入幀的最後輸出幀的最後計算出的縮放。

duration

目前輸入幀的輸出幀數。從每個輸入幀的 'd' 表達式計算得出。

pduration

為前一個輸入幀建立的輸出幀數

a

有理數:輸入寬度 / 輸入高度

sar

像素外觀比例

dar

顯示外觀比例

39.297.1 範例

  • 放大高達 1.5 倍,並同時 Pan 到圖片中心附近的某個點
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
    
  • 放大高達 1.5 倍,並始終 Pan 到圖片中心
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 與上述相同,但不暫停
    zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 僅在輸入視訊的第一秒內將圖片中心放大 2 倍
    zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    

39.298 zscale

使用 z.lib 函式庫縮放(調整大小)輸入視訊:https://github.com/sekrit-twc/zimg。要啟用此濾鏡的編譯,您需要使用 --enable-libzimg 配置 FFmpeg。

zscale 濾鏡透過更改輸出像素外觀比例,強制輸出顯示外觀比例與輸入相同。

如果輸入圖像格式與下一個濾鏡請求的格式不同,zscale 濾鏡會將輸入轉換為請求的格式。

39.298.1 選項

此濾鏡接受以下選項。

寬度, w
高度,h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

如果 `width` 或 `w` 值為 0,則輸出會使用輸入寬度。如果 `height` 或 `h` 值為 0,則輸出會使用輸入高度。

如果只有一個值是 -n,其中 n >= 1,則 zscale 濾鏡將使用一個值來維持輸入圖像的外觀比例,該值是根據另一個指定的尺寸計算得出的。之後,它將確保計算出的尺寸可被 n 整除,並在必要時調整該值。

如果兩個值都為 -n (n >= 1),則行為將與先前詳細描述的兩個值都設定為 0 相同。

有關尺寸表達式中可接受的常數列表,請參閱下文。

size, s

設定視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊 中的 "Video size" 章節。

抖動, d

設定抖動類型。

可能的值為

none
有序
隨機
誤差擴散

預設值為 none。

filter(濾鏡), f

設定調整大小濾鏡類型。

可能的值為

bilinear
bicubic
spline16
spline36
lanczos

預設值為雙線性。

range, r

設定色彩範圍。

可能的值為

輸入
有限
full

預設值與輸入相同。

原色, p

設定色彩原色。

可能的值為

輸入
709
未指定
170m
240m
2020

預設值與輸入相同。

轉換, t

設定轉換特性。

可能的值為

輸入
709
未指定
601
linear
2020_10
2020_12
smpte2084
iec61966-2-1
arib-std-b67

預設值與輸入相同。

矩陣, m

設定色彩空間矩陣。

可能的值為

輸入
709
未指定
470bg
170m
2020_ncl
2020_cl

預設值與輸入相同。

輸入範圍, rin

設定輸入色彩範圍。

可能的值為

輸入
有限
full

預設值與輸入相同。

輸入原色, pin

設定輸入色彩原色。

可能的值為

輸入
709
未指定
170m
240m
2020

預設值與輸入相同。

輸入轉換, tin

設定輸入轉換特性。

可能的值為

輸入
709
未指定
601
linear
2020_10
2020_12

預設值與輸入相同。

輸入矩陣, min

設定輸入色彩空間矩陣。

可能的值為

輸入
709
未指定
470bg
170m
2020_ncl
2020_cl
色度位置, c

設定輸出色度位置。

可能的值為

輸入
left (左)
中心
左上
top (上)
左下
bottom (下)
輸入色度位置, cin

設定輸入色度位置。

可能的值為

輸入
left (左)
中心
左上
top (上)
左下
bottom (下)
npl

設定標稱峰值亮度。

param_a

縮放濾鏡的參數 A。雙立方濾鏡的參數 "b",以及 lanczos 濾鏡的濾鏡抽頭數。

param_b

縮放濾鏡的參數 B。雙立方濾鏡的參數 "c"。

`w` 和 `h` 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 `out_w` 和 `out_h` 相同

a

與 `iw` / `ih` 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 `(iw / ih) * sar` 計算得出。

hsub
vsub

水平和垂直輸入色度子樣本值。例如,對於像素格式 "yuv422p",`hsub` 為 2,`vsub` 為 1。

ohsub
ovsub

水平和垂直輸出色度子樣本值。例如,對於像素格式 "yuv422p",`hsub` 為 2,`vsub` 為 1。

39.298.2 指令

此濾波器支援以下命令

寬度, w
高度,h

設定輸出視訊尺寸表達式。此命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

40 OpenCL 視訊濾鏡

以下是目前可用的 OpenCL 視訊濾鏡的描述。

要啟用這些濾鏡的編譯,您需要使用 --enable-opencl 配置 FFmpeg。

執行 OpenCL 濾鏡需要您初始化硬體裝置,並將該裝置傳遞給任何濾鏡圖中的所有濾鏡。

-init_hw_device opencl[=名稱][:裝置[,金鑰=值...]]

初始化一個名為 名稱opencl 類型的新硬體裝置,使用給定的裝置參數。

-filter_hw_device name

將名為 名稱 的硬體裝置傳遞給任何濾鏡圖中的所有濾鏡。

有關更詳細的資訊,請參閱 https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 選擇第二個平台上的第一個裝置,並使用預設參數在其上執行 avgblur_opencl 濾鏡的範例。
    -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
    

由於 OpenCL 濾鏡無法存取一般記憶體中的幀數據,因此所有幀數據都需要上傳 (hwupload) 到連接到適當裝置的硬體表面,然後下載 (hwdownload) 回到一般記憶體。請注意,hwupload 將上傳到具有與軟體幀相同佈局的表面,因此可能需要在之前立即添加 format 濾鏡,以使輸入進入正確的格式,並且 hwdownload 不支援輸出上的所有格式 - 可能需要在圖表中緊隨其後插入一個額外的 format 濾鏡,以使輸出成為支援的格式。

40.1 avgblur_opencl

套用平均模糊濾波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

水平尺寸

設定水平半徑尺寸。範圍為 [1, 1024],預設值為 1

平面

設定要過濾的平面。預設值為 0xf,表示處理所有平面。

垂直尺寸

設定垂直半徑尺寸。範圍為 [1, 1024],預設值為 0。如果為零,將使用 sizeX 值。

40.1.1 範例

  • 套用平均模糊濾鏡,水平和垂直尺寸為 3,將輸出的每個像素設定為輸入中以其為中心的 7x7 區域的平均值。對於圖像邊緣上的像素,該區域不會超出圖像邊界,因此計算中不會使用超出範圍的座標。
    -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
    

40.2 boxblur_opencl

將方塊模糊演算法應用於輸入視訊。

它接受以下參數

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

設定用於模糊對應輸入平面的方塊半徑(以像素為單位)的表達式。

半徑值必須是非負數,且不得大於亮度平面和 Alpha 平面的表達式 min(w,h)/2 的值,以及色度平面的 min(cw,ch)/2

luma_radius 的預設值為 "2"。如果未指定,chroma_radiusalpha_radius 預設為 luma_radius 設定的對應值。

表達式可以包含以下常數

w
h

輸入寬度和高度(以像素為單位)。

cw
ch

輸入色度影像的寬度和高度(以像素為單位)。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

luma_power, lp
chroma_power, cp
alpha_power, ap

指定將方塊模糊濾鏡應用於對應平面的次數。

luma_power 的預設值為 2。如果未指定,chroma_poweralpha_power 預設為 luma_power 設定的對應值。

值為 0 將停用效果。

40.2.1 範例

套用盒狀模糊濾鏡,將輸出的每個像素設定為每個平面的盒狀半徑 luma_radiuschroma_radiusalpha_radius 的平均值。濾鏡將對應的平面套用 luma_powerchroma_poweralpha_power 次。對於圖像邊緣上的像素,半徑不會超出圖像邊界,因此計算中不會使用超出範圍的座標。

  • 套用盒狀模糊濾鏡,亮度、色度和 alpha 半徑設定為 2,亮度、色度和 alpha 強度設定為 3。濾鏡將對圖像的每個平面執行 3 次,盒狀半徑設定為 2。
    -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
    -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
    
  • 套用盒狀模糊濾鏡,亮度半徑設定為 2,luma_power 設定為 1,色度半徑設定為 4,chroma_power 設定為 5,alpha 半徑設定為 3,alpha_power 設定為 7。

    對於亮度平面,將執行一次 2x2 盒狀半徑。

    對於色度平面,將執行 5 次 4x4 盒狀半徑。

    對於 alpha 平面,將執行 7 次 3x3 盒狀半徑。

    -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
    

40.3 colorkey_opencl

RGB 色彩空間色彩鍵控。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

color

將被透明度取代的顏色。

相似度

與關鍵顏色的相似度百分比。

0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

40.3.1 範例

  • 使輸入中每個半綠色像素都變成透明,並帶有一些輕微的混合
    -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
    

40.4 convolution_opencl

套用 3x3、5x5、7x7 矩陣的卷積。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

0m
1m
2m
3m

設定每個平面的矩陣。矩陣是 9、25 或 49 個帶符號數字的序列。每個平面的預設值為 0 0 0 0 1 0 0 0 0

0rdiv
1rdiv
2rdiv
3rdiv

設定每個平面計算值的乘數。如果未設定或為 0,則它將是所有矩陣元素的總和。選項值必須是等於或大於 0.0 的浮點數。預設值為 1.0

0bias
1bias
2bias
3bias

設定每個平面的偏差。此值會加到乘法的結果中。適用於使整個圖像更亮或更暗。選項值必須是等於或大於 0.0 的浮點數。預設值為 0.0

40.4.1 範例

  • 套用銳化
    -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
    
  • 套用模糊
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
    
  • 套用邊緣強化
    -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
    
  • 套用邊緣偵測
    -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
    
  • 套用包含對角線的拉普拉斯邊緣偵測器
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
    
  • 套用浮雕
    -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
    

40.5 erosion_opencl

將侵蝕效果應用於影片。

此濾鏡將像素替換為局部 (3x3) 最小值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大更改。範圍為 [0, 65535],預設值為 65535。如果為 0,則平面將保持不變。

座標

標記指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

標記到以 x 為中心的局部 3x3 座標區域

1 2 3

4 x 5

6 7 8

40.5.1 範例

  • 套用侵蝕濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域中像素 1、2、3、6、7、8 之間的局部最小值。如果輸入像素與局部最小值之間的差異大於相應平面的閾值,則輸出像素將設定為輸入像素 - 相應平面的閾值。
    -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

40.6 deshake_opencl

基於特徵點的視訊穩定濾鏡。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

設定最小對比度。低於此值時,將捨棄局部測量欄位。必須是 0-1 範圍內的浮點值。預設值為 0.3。

透過防止原始幀的任何相機移動來模擬三腳架。預設值為 0

debug

是否應顯示額外的偵錯資訊,包括在處理後的輸出和控制台中。

請注意,為了查看控制台偵錯輸出,您還需要將 -v verbose 傳遞給 ffmpeg。

僅 RGB 輸入支援在輸出視訊中查看匹配點。

預設值為 0

自適應裁切

是否在邊界進行少量裁切,以減少鏡像像素的數量。

預設值為 1

精細化特徵

是否應在亞像素級別精細化特徵點。

可以關閉此選項以稍微提高效能,但會犧牲精確度。

預設值為 1

平滑強度

應用於從 0.01.0 的相機路徑的平滑強度。

1.0 是最大平滑強度,而小於該值的值會導致較少的平滑。

0.0 使濾鏡能夠在每個幀的基礎上自適應選擇平滑強度。

預設值為 0.0

平滑視窗乘數

控制平滑視窗的大小(用於確定運動資訊的緩衝幀數)。

平滑視窗的大小透過將視訊的幀率乘以這個數字來確定。

可接受的值範圍為 0.110.0

較大的值會增加可用於確定如何平滑相機路徑的運動數據量,從而可能提高平滑度,但也增加了延遲和記憶體使用量。

預設值為 2.0

40.6.1 範例

  • 使用固定的中等平滑強度穩定視訊
    -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
    
  • 使用偵錯(在控制台和渲染的視訊中)穩定視訊
    -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
    

40.7 dilation_opencl

對影片套用膨脹效果。

此濾鏡將像素替換為局部 (3x3) 最大值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大更改。範圍為 [0, 65535],預設值為 65535。如果為 0,則平面將保持不變。

座標

標記指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

標記到以 x 為中心的局部 3x3 座標區域

1 2 3

4 x 5

6 7 8

40.7.1 範例

  • 套用膨脹濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域中像素 1、2、3、6、7、8 之間的局部最大值。如果輸入像素與局部最大值之間的差異大於相應平面的閾值,則輸出像素將設定為輸入像素 + 相應平面的閾值。
    -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

40.8 nlmeans_opencl

透過 OpenCL 的非局部均值去噪濾鏡,此濾鏡接受與 nlmeans 相同的選項。

40.9 overlay_opencl

將一個影片疊加在另一個影片之上。

它需要兩個輸入並有一個輸出。第一個輸入是“主”視訊,第二個輸入疊加在其上。此濾鏡要求所有輸入都具有相同的記憶體佈局。因此,可能需要格式轉換。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

x

設定疊加視訊在主視訊上的 x 座標。預設值為 0

y

設定疊加視訊在主視訊上的 y 座標。預設值為 0

40.9.1 範例

  • 將圖像 LOGO 疊加在輸入視訊的左上角。兩個輸入都是 yuv420p 格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    
  • 輸入對於顏色通道具有相同的記憶體佈局,疊加層具有額外的 alpha 平面,例如 INPUT 是 yuv420p,而 LOGO 是 yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    

40.10 pad_opencl

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標。

它接受以下選項

寬度, w
高度,h

指定包含填充的新增輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出會使用對應的輸入大小。

width 表達式可以參考由 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考由 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

aspect

填充到外觀比例而不是解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入影片寬度和高度。

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度 (填充區域的大小),由 widthheight 表達式指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,由 xy 表達式指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

40.11 prewitt_opencl

將 Prewitt 算子 (https://en.wikipedia.org/wiki/Prewitt_operator) 應用於輸入視訊串流。

此濾波器接受以下選項

平面

設定要過濾的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾鏡結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

設定濾鏡 mu。

設定將添加到濾鏡結果的值。範圍為 [-65535, 65535],預設值為 0.0

40.11.1 範例

  • 套用 Prewitt 算子,比例設定為 2,delta 設定為 10。
    -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

40.12 program_opencl

使用 OpenCL 程式過濾視訊。

source

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

輸入

濾鏡的輸入數量。預設值為 1。

size, s

輸出幀的大小。預設值與第一個輸入相同。

program_opencl 濾鏡也支援 framesync 選項。

程式原始碼檔案必須包含具有指定名稱的核心函數,該函數將為輸出的每個平面執行一次。在平面上的每次執行都會排入佇列,作為單獨的 2D 全域 NDRange,每個像素一個工作項目。因此,每個工作項目的全域 ID 偏移量是目標影像中像素的座標。

核心函數需要接受以下引數

  • 目標影像,__write_only image2d_t

    此影像將成為輸出;核心函數應寫入所有內容。

  • 影格索引,unsigned int

    這是一個從零開始計數的計數器,每個影格遞增一。

  • 來源影像,__read_only image2d_t

    這些是每個輸入上最新的影像。核心函數可以從中讀取以產生輸出,但不能寫入。

範例程式

  • 將輸入複製到輸出(輸出必須與輸入大小相同)。
    __kernel void copy(__write_only image2d_t destination,
                       unsigned int index,
                       __read_only  image2d_t source)
    {
        const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
    
        int2 location = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = read_imagef(source, sampler, location);
    
        write_imagef(destination, location, value);
    }
    
  • 套用簡單的轉換,將輸入旋轉一個隨索引計數器增加的量。像素值由取樣器線性內插,並且輸出不需要與輸入具有相同的尺寸。
    __kernel void rotate_image(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float angle = (float)index / 100.0f;
    
        float2 dst_dim = convert_float2(get_image_dim(dst));
        float2 src_dim = convert_float2(get_image_dim(src));
    
        float2 dst_cen = dst_dim / 2.0f;
        float2 src_cen = src_dim / 2.0f;
    
        int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
    
        float2 dst_pos = convert_float2(dst_loc) - dst_cen;
        float2 src_pos = {
            cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
            sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
        };
        src_pos = src_pos * src_dim / dst_dim;
    
        float2 src_loc = src_pos + src_cen;
    
        if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
            src_loc.x > src_dim.x || src_loc.y > src_dim.y)
            write_imagef(dst, dst_loc, 0.5f);
        else
            write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
    }
    
  • 將兩個輸入混合在一起,每個輸入的使用量隨索引計數器而變化。
    __kernel void blend_images(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
    
        int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
        int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
        int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
    
        float4 val1 = read_imagef(src1, sampler, src1_loc);
        float4 val2 = read_imagef(src2, sampler, src2_loc);
    
        write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
    }
    

40.13 remap_opencl

使用第二個:Xmap 和第三個:Ymap 輸入影片串流重新映射像素。

位置 (X, Y) 的目標像素將從來源 (x, y) 位置選取,其中 x = Xmap(X, Y) 且 y = Ymap(X, Y)。如果映射值超出範圍,則目標像素將使用零值像素。

Xmap 和 Ymap 輸入視訊串流必須具有相同的尺寸。輸出視訊串流將具有 Xmap/Ymap 視訊串流尺寸。Xmap 和 Ymap 輸入視訊串流為 32 位元浮點像素格式,單通道。

interp

指定用於重新映射像素的內插法。允許的值為 nearlinear。預設值為 linear

fill

指定未映射像素的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節。預設顏色為 black

40.14 roberts_opencl

將 Roberts cross 運算子 (https://en.wikipedia.org/wiki/Roberts_cross) 套用到輸入視訊串流。

此濾波器接受以下選項

平面

設定要過濾的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾鏡結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

設定濾鏡 mu。

設定將添加到濾鏡結果的值。範圍為 [-65535, 65535],預設值為 0.0

40.14.1 範例

  • 套用 Roberts cross 運算子,比例設定為 2,delta 設定為 10
    -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

40.15 sobel_opencl

將 Sobel 運算子 (https://en.wikipedia.org/wiki/Sobel_operator) 套用到輸入視訊串流。

此濾波器接受以下選項

平面

設定要過濾的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾鏡結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

設定濾鏡 mu。

設定將添加到濾鏡結果的值。範圍為 [-65535, 65535],預設值為 0.0

40.15.1 範例

  • 套用 sobel 運算子,比例設定為 2,delta 設定為 10
    -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

40.16 tonemap_opencl

執行 HDR(PQ/HLG) 到 SDR 轉換,並進行色調映射。

它接受以下參數

tonemap

指定要使用的色調映射運算子。與 tonemap 中的 tonemap 選項相同。

param

調整色調映射演算法。與 tonemap 中的 param 選項相同。

desat

對超過此亮度等級的高光套用去飽和處理。參數越高,保留的色彩資訊越多。此設定有助於防止超高光出現不自然的過曝色彩,方法是(平滑地)變成白色。這使影像感覺更自然,但會降低關於超出範圍色彩的資訊。

預設值為 0.5,此處的演算法與目前 CPU 版本的 tonemap 略有不同。設定為 0.0 會停用此選項。

threshold

色調映射演算法參數針對每個場景進行微調。並使用閾值來偵測場景是否已更改。如果目前影格平均亮度與目前執行平均值之間的距離超過閾值,我們將重新計算場景平均亮度和峰值亮度。預設值為 0.2。

格式

指定輸出像素格式。

目前支援的格式為

p010
nv12
range, r

設定輸出色彩範圍。

可能的值為

tv/mpeg
pc/jpeg

預設值與輸入相同。

原色, p

設定輸出色彩原色。

可能的值為

bt709
bt2020

預設值與輸入相同。

轉換, t

設定輸出轉換特性。

可能的值為

bt709
bt2020

預設值為 bt709。

矩陣, m

設定輸出色彩空間矩陣。

可能的值為

bt709
bt2020

預設值與輸入相同。

40.16.1 範例

  • 使用線性運算子將 HDR(PQ/HLG) 視訊轉換為 bt2020-transfer-characteristic p010 格式。
    -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
    

40.17 unsharp_opencl

銳化或模糊輸入視訊。

它接受以下參數

luma_msize_x, lx

設定亮度矩陣水平大小。範圍是 [1, 23],預設值為 5

luma_msize_y, ly

設定亮度矩陣垂直大小。範圍是 [1, 23],預設值為 5

luma_amount, la

設定亮度效果強度。範圍是 [-10, 10],預設值為 1.0

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

chroma_msize_x, cx

設定色度矩陣水平大小。範圍是 [1, 23],預設值為 5

chroma_msize_y, cy

設定色度矩陣垂直大小。範圍是 [1, 23],預設值為 5

chroma_amount, ca

設定色度效果強度。範圍是 [-10, 10],預設值為 0.0

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

所有參數都是選用的,預設值相當於字串 '5:5:1.0:5:5:0.0'。

40.17.1 範例

  • 套用強烈的亮度銳化效果
    -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
    
  • 對亮度和色度參數套用強烈的模糊
    -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
    

40.18 xfade_opencl

透過使用 OpenCL 的自訂轉場效果,淡化兩個視訊。

它接受以下選項

transition(轉場)

設定其中一種可能的轉場效果。

custom

選擇自訂轉場效果,實際的轉場描述將從 source 和 kernel 選項中選取。

fade
wipeleft
wiperight
wipeup
wipedown
slideleft
slideright
slideup
slidedown

預設轉場為 fade。

source

用於自訂轉場的 OpenCL 程式原始碼檔案。

kernel

設定要用於來自程式原始碼檔案的自訂轉場的核心名稱。

duration

設定視訊轉場的持續時間。

offset

設定相對於第一個視訊的轉場開始時間。

程式原始碼檔案必須包含具有指定名稱的核心函數,該函數將為輸出的每個平面執行一次。在平面上的每次執行都會排入佇列,作為單獨的 2D 全域 NDRange,每個像素一個工作項目。因此,每個工作項目的全域 ID 偏移量是目標影像中像素的座標。

核心函數需要接受以下引數

  • 目標影像,__write_only image2d_t

    此影像將成為輸出;核心函數應寫入所有內容。

  • 第一個來源影像,__read_only image2d_t。第二個來源影像,__read_only image2d_t

    這些是每個輸入上最新的影像。核心函數可以從中讀取以產生輸出,但不能寫入。

  • 轉場進度,float。此值始終介於 0 和 1 之間(包含 0 和 1)。

範例程式

  • 套用點狀幕簾轉場效果
    __kernel void blend_images(__write_only image2d_t dst,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2,
                               float progress)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
        int2  p = (int2)(get_global_id(0), get_global_id(1));
        float2 rp = (float2)(get_global_id(0), get_global_id(1));
        float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
        rp = rp / dim;
    
        float2 dots = (float2)(20.0, 20.0);
        float2 center = (float2)(0,0);
        float2 unused;
    
        float4 val1 = read_imagef(src1, sampler, p);
        float4 val2 = read_imagef(src2, sampler, p);
        bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
    
        write_imagef(dst, p, next ? val1 : val2);
    }
    

41 VAAPI 視訊濾鏡

VAAPI 視訊濾鏡通常與 VAAPI 解碼器和 VAAPI 編碼器一起使用。以下是 VAAPI 視訊濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-vaapi 配置 FFmpeg。

若要使用 vaapi 濾鏡,您需要正確設定 vaapi 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/VAAPI

41.1 overlay_vaapi

將一個視訊覆蓋在另一個視訊的頂部。

它接受兩個輸入並產生一個輸出。第一個輸入是 "主要" 影片,第二個輸入疊加在其上。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

x
y

設定疊加影片在主要影片上的 x 和 y 座標的表達式。

兩個表達式的預設值均為 "0"。

w
h

設定主要視訊上覆蓋視訊的寬度和高度的表達式。

預設值為 'w' 的 'overlay_iw' 和 'h' 的 'overlay_ih*w/overlay_iw'。

表達式可以包含以下參數

main_w, W
main_h, H

主要輸入的寬度和高度。

overlay_iw
overlay_ih

疊加輸入的寬度和高度。

overlay_w, w
overlay_h, h

覆蓋輸出的寬度和高度。

overlay_x, x
overlay_y, y

主要視訊內覆蓋圖層的位置

alpha

設定覆蓋視訊的透明度。允許的範圍是 0.0 到 1.0。值越高表示透明度越低。預設值為 1.0

eof_action

請參閱 framesync

shortest

請參閱 framesync

repeatlast

請參閱 framesync

此濾鏡也支援 framesync 選項。

41.1.1 範例

  • 在輸入視訊的左上角覆蓋一個影像 LOGO。此濾鏡的兩個輸入都是 yuv420p 格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
    
  • 從輸入視訊的左上角偏移 (200, 100) 的位置覆蓋一個影像 LOGO。輸入具有相同的色彩通道記憶體佈局,覆蓋具有額外的 alpha 平面,例如輸入為 yuv420p,而 LOGO 為 yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
    

41.2 tonemap_vaapi

執行 HDR 到 SDR 或 HDR 到 HDR 色調映射。目前僅接受 HDR10 作為輸入。

它接受以下參數

格式

指定輸出像素格式。

HDR 到 SDR 色調映射的預設值為 nv12,HDR 到 HDR 色調映射的預設值為 p010。

原色, p

設定輸出色彩原色。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

轉換, t

設定輸出轉換特性。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

矩陣, m

設定輸出色彩空間矩陣。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

display

設定輸出母帶顯示器色彩容積。它由一個以 '|' 分隔的兩個值列表給出,兩個值之間以空格分隔。它設定顯示器原色 x 和 y(依 G、B、R 順序)、然後是白點 x 和 y,以及標稱最小和最大顯示器亮度。

當設定此選項時,將執行 HDR 到 HDR 色調映射。

light

設定輸出內容光線等級資訊。它接受 2 個以空格分隔的值,第一個輸入是最大光線等級,第二個輸入是最大平均光線等級。

它在 HDR 到 SDR 色調映射中被忽略,在 HDR 到 HDR 色調映射中是可選的。

41.2.1 範例

  • 將 HDR(HDR10) 視訊轉換為 bt2020-transfer-characteristic p010 格式
    tonemap_vaapi=format=p010:t=bt2020-10
    
  • 將 HDR 視訊轉換為 HDR 視訊
    tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
    

41.3 hstack_vaapi

水平堆疊輸入影片。

這是 hstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的高度,此濾鏡將縮小/放大每個輸入串流,同時保持原始長寬比。

它接受以下選項

輸入

請參閱 hstack

shortest

請參閱 hstack

height

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

41.4 vstack_vaapi

垂直堆疊輸入影片。

這是 vstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的寬度,此濾鏡將縮小/放大每個輸入串流,同時保持原始長寬比。

它接受以下選項

輸入

請參閱 vstack

shortest

請參閱 vstack

width

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

41.5 xstack_vaapi

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的大小,此濾鏡將縮小/放大每個輸入串流到給定的輸出大小,或第一個輸入串流的大小。

它接受以下選項

輸入

請參閱 xstack

shortest

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
網格

請參閱 xstack

grid_tile_size

當設定 grid 時,設定每個輸入串流的輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。如需此選項的語法,請查看 (ffmpeg-utils) "視訊大小" 區段,位於 ffmpeg-utils 手冊中

fill

請參閱 xstack

41.6 pad_vaapi

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標。

它接受以下選項

寬度, w
高度,h

指定包含填充的新增輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出會使用對應的輸入大小。

width 表達式可以參考由 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考由 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

aspect

填充到外觀比例而不是解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入影片寬度和高度。

輸入影格寬度
輸入影格高度

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度 (填充區域的大小),由 widthheight 表達式指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,由 xy 表達式指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

41.7 drawbox_vaapi

在輸入影像上繪製彩色框。

它接受以下參數

x
y

指定框左上角座標的表達式。預設值為 0。

寬度, w
高度,h

指定框的寬度和高度的表達式;如果為 0,則它們會被解釋為輸入寬度和高度。預設值為 0。

顏色,c

指定要寫入的框的顏色。如需此選項的一般語法,請查看 (ffmpeg-utils) "顏色" 區段,位於 ffmpeg-utils 手冊中

粗細,t

設定框邊緣粗細的表達式。值 fill 將建立一個填滿的框。預設值為 3

請參閱下方接受的常數列表。

取代

值為 1 時,繪製框的像素將覆寫視訊的顏色和 alpha 像素。預設值為 0,這會將框合成到輸入視訊上。

xywh 以及 t 的參數是包含以下常數的表達式

in_h、ih
in_w、iw

輸入寬度和高度。

x
y

框的繪製位置的 x 和 y 偏移座標。

w
h

繪製框的寬度和高度。

t

繪製框的粗細。

41.7.1 範例

  • 在輸入影像的邊緣周圍繪製黑色框
    drawbox
    
  • 繪製紅色且不透明度為 50% 的框
    drawbox=10:20:200:60:red@0.5
    

    先前的範例可以指定為

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 以粉紅色填滿框
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 繪製 2 像素紅色 2.40:1 遮罩
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

42 Vulkan 視訊濾鏡

以下是目前可用的 Vulkan 視訊濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-vulkan--enable-libglslang--enable-libshaderc 配置 FFmpeg。

執行 Vulkan 濾鏡需要您初始化硬體裝置,並將該裝置傳遞給任何濾鏡圖中的所有濾鏡。

-init_hw_device vulkan[=name][:device[,key=value...]]

初始化類型為 vulkan 的新硬體裝置,名為 name,使用給定的裝置參數和 key=value 中的選項。支援以下選項

debug

如果設定為 1,則開啟驗證層。

linear_images

分配線性影像。不適用於解碼。

disable_multiplane

停用多平面影像。不適用於解碼。

-filter_hw_device name

將名為 名稱 的硬體裝置傳遞給任何濾鏡圖中的所有濾鏡。

有關更詳細的資訊,請參閱 https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 選擇第一個裝置並在其上使用預設參數執行 nlmeans_vulkan 濾鏡的範例。
    -init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
    

由於 Vulkan 濾鏡無法存取一般記憶體中的影格資料,因此所有影格資料都需要上傳 (hwupload) 到連接到適當裝置的硬體表面,然後下載 (hwdownload) 回到一般記憶體。請注意,hwupload 將上傳到佈局與軟體影格相同的影格,因此可能需要在前面立即新增一個 format 濾鏡,以使輸入進入正確的格式,並且 hwdownload 不支援輸出上的所有格式 - 通常需要在圖中緊隨其後插入一個額外的 format 濾鏡,以使輸出進入支援的格式。

42.1 avgblur_vulkan

套用平均模糊濾鏡,在 GPU 上使用 Vulkan 實作。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

水平尺寸

設定水平半徑大小。範圍是 [1, 32],預設值為 3

垂直尺寸

設定垂直半徑大小。範圍是 [1, 32],預設值為 3

平面

設定要過濾的平面。預設值為 0xf,表示處理所有平面。

42.2 blend_vulkan

將兩個 Vulkan 影格混合在一起。

blend 濾波器採用兩個輸入串流並輸出一個串流,第一個輸入是「頂層」,第二個輸入是「底層」。預設情況下,輸出會在最長輸入終止時終止。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。 仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

設定特定像素分量的混合模式,或在 all_mode 的情況下設定所有像素分量的混合模式。預設值為 normal

分量模式的可用值為

normal
multiply

42.3 bwdif_vulkan

使用 bwdif 的反交錯器,"Bob Weaver 反交錯濾鏡" 演算法,在 GPU 上使用 Vulkan 實作。

它接受以下參數

level_in

要採用的交錯模式。它接受以下值之一

0, send_frame

為每個影格輸出一個影格。

1, send_field

為每個圖場輸出一個影格。

預設值為 send_field

parity

輸入交錯視訊假設的圖片圖場奇偶性。它接受以下值之一

0, tff

假設頂圖場優先。

1, bff

假設底圖場優先。

-1, auto

啟用自動偵測圖場奇偶性。

預設值為 auto。如果交錯方式未知或解碼器未匯出此資訊,則將假設頂圖場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下值之一

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

42.4 chromaber_vulkan

套用模擬色差的效果。最適用於 RGB 輸入,但也為 YCbCr 輸入提供類似的效果。

dist_x

水平位移乘數。每個色度像素的位置將從影像中心開始乘以這個量。預設值為 0

dist_y

類似地,這設定垂直位移乘數。預設值為 0

42.5 color_vulkan

視訊來源,用於建立純色的 Vulkan 影格。適用於基準測試或覆蓋。

它接受以下參數

color

要使用的顏色。可以是名稱或十六進位值。預設值為 black

size

輸出影格的大小。預設值為 1920x1080

rate

輸出的影格率。預設值為每秒 60 個影格。

duration

視訊持續時間。預設值為 -0.000001

sar

視訊訊號長寬比。預設值為 1/1

格式

輸出 Vulkan 影格的像素格式。預設值為 yuv444p

out_range

設定輸出 YCbCr 取樣範圍。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。如果未指定,範圍取決於像素格式。可能的值

auto/unknown

自動選擇。

jpeg/full/pc

設定完整範圍(在 8 位元亮度的情況下為 0-255)。

mpeg/limited/tv

設定 "MPEG" 範圍(在 8 位元亮度的情況下為 16-235)。

42.6 vflip_vulkan

垂直翻轉影像。

42.7 hflip_vulkan

水平翻轉影像。

42.8 flip_vulkan

沿垂直和水平軸翻轉影像。

42.9 gblur_vulkan

在 Vulkan 影格上套用高斯模糊濾鏡。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

sigmaV

設定垂直 sigma,如果為負數,則與 sigma 相同。預設值為 -1

平面

設定要篩選的平面。預設情況下,所有平面都會被篩選。

size

設定沿水平軸的核心大小。預設值為 19

sizeV

設定沿垂直軸的核心大小。預設值為 0,這會設定為使用與 size 相同的值。

42.10 nlmeans_vulkan

使用非局部均值演算法對影格進行去噪,在 GPU 上使用 Vulkan 實作。比 nlmeansnlmeans_opencl 支援更多像素格式,包括 alpha 通道支援。

此濾鏡接受以下選項。

s

設定所有組件的去噪強度。預設值為 1.0。必須在 [1.0, 100.0] 範圍內。

p

設定所有平面的修補程式大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。

r

components

t

設定並行度。預設值為 36。必須是 [1, 168] 範圍內的數字。較大的值可能會加速處理,但會增加更多 VRAM 的成本。較低的值會使其變慢,從而減少 VRAM 使用量。僅在具有原子浮點運算的 GPU(RDNA3+、Ampere+)上支援。

s0
s1
s2
s3

設定特定組件的去噪強度。預設值為 1,等於 s。必須是 [1, 100] 範圍內的奇數。

p0
p1
p2
p3

設定特定組件的修補程式大小。預設值為 7,等於 p。必須是 [0, 99] 範圍內的奇數。

42.11 overlay_vulkan

將一個影片疊加在另一個影片之上。

它接受兩個輸入並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在其上。此濾鏡要求所有輸入使用相同的像素格式。因此,可能需要格式轉換。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

x

設定疊加視訊在主視訊上的 x 座標。預設值為 0

y

設定疊加視訊在主視訊上的 y 座標。預設值為 0

42.12 transpose_vt

轉置輸入視訊中的行和列,並可選擇翻轉它。如需更深入的範例,請參閱 transpose 視訊濾鏡,它在很大程度上共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

hflip

水平翻轉輸入影片。

vflip

linear

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

42.13 transpose_vulkan

轉置輸入視訊中的行和列,並可選擇翻轉它。如需更深入的範例,請參閱 transpose 視訊濾鏡,它在很大程度上共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

43 QSV 視訊濾鏡

以下是目前可用的 QSV 視訊濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-libmfx--enable-libvpl 配置 FFmpeg。

若要使用 QSV 濾鏡,您需要正確設定 QSV 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/QuickSync

43.1 hstack_qsv

水平堆疊輸入影片。

這是 hstack 濾鏡的 QSV 變體,每個輸入流可以有不同的高度,此濾鏡將縮小/放大每個輸入流,同時保持原始的長寬比。

它接受以下選項

輸入

請參閱 hstack

shortest

請參閱 hstack

height

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

43.2 vstack_qsv

垂直堆疊輸入影片。

這是 vstack 濾鏡的 QSV 變體,每個輸入流可以有不同的寬度,此濾鏡將縮小/放大每個輸入流,同時保持原始的長寬比。

它接受以下選項

輸入

請參閱 vstack

shortest

請參閱 vstack

width

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

43.3 xstack_qsv

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 QSV 變體。

它接受以下選項

輸入

請參閱 xstack

shortest

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
網格

請參閱 xstack

grid_tile_size

當設定 grid 時,設定每個輸入串流的輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。如需此選項的語法,請查看 (ffmpeg-utils) "視訊大小" 區段,位於 ffmpeg-utils 手冊中

fill

請參閱 xstack

44 視訊來源

以下是目前可用的視訊來源的描述。

44.1 buffer

緩衝視訊影格,並使其可用於濾鏡鏈。

此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。

它接受以下參數

video_size

指定緩衝視訊影格的大小(寬度和高度)。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節

width

輸入視訊寬度。

height

輸入視訊高度。

pix_fmt(像素格式)

表示緩衝視訊影格的像素格式的字串。它可以是與像素格式相對應的數字,或是像素格式名稱。

time_base

指定緩衝影格的時間戳所假定的時基。

frame_rate

指定視訊流預期的影格率。

colorspace

表示緩衝視訊影格的色彩空間的字串。它可以是與色彩空間相對應的數字,或是色彩空間名稱。

range

表示緩衝視訊影格的色彩範圍的字串。它可以是與色彩範圍相對應的數字,或是色彩範圍名稱。

pixel_aspect(像素長寬比), sar(樣本長寬比)

輸入視訊的樣本(像素)長寬比。

hw_frames_ctx(硬體影格上下文)

當使用硬體像素格式時,這應該是對描述輸入影格的 AVHWFramesContext 的參考。

例如

buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1

將指示來源接受大小為 320x240 且格式為 "yuv410p" 的視訊影格,假設時間戳時基為 1/24,像素為方形像素(1:1 樣本長寬比)。由於名稱為 "yuv410p" 的像素格式對應於數字 6(查看 libavutil/pixfmt.h 中的 enum AVPixelFormat 定義),此範例對應於

buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1

或者,選項可以指定為扁平字串,但此語法已被棄用

width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den

44.2 cellauto

建立由基本細胞自動機產生的圖案。

細胞自動機的初始狀態可以透過 filenamepattern 選項定義。如果未指定此類選項,則會隨機建立初始狀態。

在每個新影格中,視訊中的新列都會填滿細胞自動機下一個世代的結果。當整個影格填滿時的行為由 scroll 選項定義。

此來源接受以下選項

filename, f

從指定檔案讀取初始細胞自動機狀態,即起始列。在檔案中,每個非空白字元都被視為活細胞,換行符號將終止列,並且檔案中的後續字元將被忽略。

pattern(圖案), p

從指定的字串讀取初始細胞自動機狀態,即起始列。

字串中的每個非空白字元都被視為活細胞,換行符號將終止列,並且字串中的後續字元將被忽略。

速率,r

設定視訊速率,即每秒產生的影格數。預設值為 25。

random_fill_ratio(隨機填充比例), ratio(比例)

設定初始細胞自動機列的隨機填充比例。它是一個介於 0 到 1 之間的浮點數值,預設值為 1/PHI。

當指定檔案或圖案時,此選項將被忽略。

random_seed(隨機種子), seed(種子)

設定隨機填充初始列的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,濾鏡將盡力使用良好的隨機種子。

rule(規則)

設定細胞自動機規則,它是一個介於 0 到 255 之間的數字。預設值為 110。

size, s

設定輸出視訊的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節

如果指定了 filenamepattern,則大小預設設定為指定初始狀態列的寬度,高度設定為 width * PHI。

如果設定了 size,它必須包含指定圖案字串的寬度,並且指定的圖案將在較大的列中居中。

如果未指定檔案名或圖案字串,則大小值預設為 "320x518"(用於隨機產生的初始狀態)。

scroll(捲動)

如果設定為 1,當輸出中的所有列都已填滿時,向上捲動輸出。如果設定為 0,則新的產生列將在底列填滿後立即覆寫頂列。預設值為 1。

start_full(開始填滿), full(填滿)

如果設定為 1,在輸出第一個影格之前,完全填滿輸出的產生列。這是預設行為,要停用請將值設定為 0。

stitch(縫合)

如果設定為 1,將左右列邊緣縫合在一起。這是預設行為,要停用請將值設定為 0。

44.2.1 範例

  • pattern 讀取初始狀態,並指定大小為 200x400 的輸出。
    cellauto=f=pattern:s=200x400
    
  • 產生寬度為 200 個單元的隨機初始列,填充比例為 2/3
    cellauto=ratio=2/3:s=200x200
    
  • 建立由規則 18 產生的圖案,從寬度為 100 的初始列上居中的單個活細胞開始
    cellauto=p=@:s=100x400:full=0:rule=18
    
  • 指定更精細的初始圖案
    cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
    

44.3 coreimagesrc

在 OSX 上使用 Apple 的 CoreImage API 在 GPU 上產生的視訊來源。

此視訊來源是 coreimage 視訊濾鏡的特殊版本。在套用的濾鏡鏈的開頭使用核心影像產生器來產生內容。

coreimagesrc 視訊來源接受以下選項

list_generators(列出產生器)

列出所有可用的產生器以及它們各自的所有選項,以及可能的最小值和最大值以及預設值。

list_generators=true
size, s

指定來源視訊的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節。預設值為 320x240

速率,r

以每秒產生的影格數指定來源視訊的影格率。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。預設值為 "25"。

sar

設定來源視訊的樣本長寬比。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) 手冊中的時間持續時間章節

如果未指定,或表示的持續時間為負數,則視訊應永久產生。

此外,coreimage 視訊濾鏡的所有選項都被接受。完整的濾鏡鏈可用於進一步處理產生的輸入,而無需 CPU-HOST 傳輸。有關詳細資訊,請參閱 coreimage 文件和範例。

44.3.1 範例

  • 使用 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 Apple 標準 bash shell 的完整且跳脫字元的命令列形式給出
    ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

    此範例等效於 coreimage 的 QRCode 範例,無需 nullsrc 視訊來源。

44.4 ddagrab

透過桌面重複 API 捕捉 Windows 桌面。

此濾鏡專門傳回 D3D11 硬體影格,用於 GPU 上的編碼或處理。因此,任何形式的軟體處理都需要明確的 hwdownload

它接受以下選項

output_idx(輸出索引)

要捕捉的 DXGI 輸出索引。

通常對應於 Windows 給螢幕的索引減一,因此從 0 開始。

預設為輸出 0。

draw_mouse

是否繪製滑鼠游標。

預設為 true。

僅影響硬體游標。如果遊戲或應用程式渲染自己的游標,它將始終被捕捉。

framerate

將捕捉桌面的最大影格率 - 連續影格之間的時間間隔不會小於影格率的倒數。當 dup_frames 為 true(預設值)且桌面未經常更新時,濾鏡將重複前一個影格。請注意,沒有背景緩衝正在進行,因此當濾鏡未被頻繁輪詢時,實際的影格間間隔可能會顯著更大。

預設為 30 FPS。

video_size

指定捕捉視訊的大小。

預設為螢幕的完整大小。

如果小於螢幕大小,則從底部/右側裁剪。

offset_x

捕捉視訊的水平偏移。

offset_y

捕捉視訊的垂直偏移。

output_fmt(輸出格式)

所需的濾鏡輸出格式。預設為 8 位元 BGRA。

它接受以下值

auto

將所有支援的輸出格式傳遞給 DDA,並傳回 DDA 決定使用的格式。

8bit
bgra

8 位元格式始終有效,DDA 將在必要時轉換為它們。

10bit’(10 位元)
x2bgr10

如果請求 10 位元格式但不可用,濾鏡初始化將失敗。

dup_frames(重複影格)

當此選項設定為 true(預設值)時,當桌面未更新時,濾鏡將重複影格,以維持近似恆定的目標影格率。當此選項設定為 false 時,濾鏡將等待桌面更新(在這種情況下,影格間間隔可能會顯著變化)。

44.4.1 範例

捕捉主螢幕並使用 nvenc 編碼

ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4

您也可以跳過 lavfi 裝置並直接使用濾鏡。也示範了下載影格並使用 libx264 編碼。在這種情況下,需要明確的輸出格式規範

ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4

如果您只想捕捉桌面的一部分,可以透過指定較小的大小及其在螢幕中的偏移量來實現

ddagrab=video_size=800x600:offset_x=100:offset_y=100

44.5 gradients

產生多個漸層。

size, s

設定影格大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節。預設值為 "640x480"。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

c0, c1, c2, c3, c4, c5, c6, c7

設定 8 種顏色。顏色的預設值是隨機選擇一個。

x0, y0, y0, y1

設定漸層線的來源和目的地點。如果為負數或超出範圍,則會隨機選擇。

nb_colors(顏色數量), n

設定一次使用的顏色數量。允許的範圍是從 2 到 8。預設值為 2。

seed

設定用於選擇漸層線點的種子。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) 手冊中的時間持續時間章節

如果未指定,或表示的持續時間為負數,則視訊應永久產生。

speed

設定漸層旋轉的速度。

type, t

設定漸層的類型。可用值為

linear
radial’(放射狀)
circular’(圓形)
spiral’(螺旋形)
square’(方形)

預設類型為 linear(線性)。

44.5.1 指令

此來源支援上述某些選項作為 commands(命令)

44.6 mandelbrot

產生 Mandelbrot 集碎形,並逐漸朝向使用 start_xstart_y 指定的點縮放。

此來源接受以下選項

end_pts

設定終端 pts 值。預設值為 400。

end_scale(結束縮放比例)

設定終端縮放比例值。必須是浮點數值。預設值為 0.3。

inner(內部)

設定內部著色模式,即用於繪製 Mandelbrot 碎形內部區域的演算法。

它應採用以下值之一

black

設定黑色模式。

convergence(收斂)

顯示直到收斂的時間。

mincol(最小顏色)

根據最接近迭代原點的點設定顏色。

period

period(週期)

設定週期模式。

預設值為 mincol(最小顏色)。

bailout(逃逸值)

設定逃逸值。預設值為 10.0。

maxiter(最大迭代次數)

設定渲染演算法執行的最大迭代次數。預設值為 7189。

outer(外部)

設定外部著色模式。它應採用以下值之一

iteration_count(迭代計數)

設定迭代計數模式。

normalized_iteration_count(標準化迭代計數)

設定標準化迭代計數模式。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

設定影格大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節。預設值為 "640x480"。

預設值為 normalized_iteration_count(標準化迭代計數)。

start_scale(開始縮放比例)

設定初始縮放比例值。預設值為 3.0。

start_x(開始 x 位置)

設定初始 x 位置。必須是介於 -100 和 100 之間的浮點數值。預設值為 -0.743643887037158704752191506114774。

start_y(開始 y 位置)

44.7 mptestsrc

設定初始 y 位置。必須是介於 -100 和 100 之間的浮點數值。預設值為 -0.131825904205311970493132056385139。

產生各種測試圖案,如 MPlayer 測試濾鏡所產生。

此來源接受以下選項

速率,r

以每秒產生的影格數指定來源視訊的影格率。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。預設值為 "25"。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) 手冊中的時間持續時間章節

如果未指定,或表示的持續時間為負數,則視訊應永久產生。

產生視訊的大小是固定的,為 256x256。此來源特別適用於測試編碼功能。

test(測試), t

設定要執行的測試的編號或名稱。支援的測試有
dc_luma(直流亮度)
dc_chroma(直流色度)
freq_luma(頻率亮度)
freq_chroma(頻率色度)
amp_luma(振幅亮度)
amp_chroma(振幅色度)
mv
cbp
ring1(環狀1)
all
ring2(環狀2)

max_frames(最大影格數), m

設定每個測試產生的最大影格數,預設值為 30。

一些範例

mptestsrc=t=dc_luma

預設值為 "all"(全部),它將循環遍歷所有測試的列表。

44.8 frei0r_src

將產生 "dc_luma" 測試圖案。

提供 frei0r 來源。

要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 --enable-frei0r 配置 FFmpeg。

size

此來源接受以下參數

framerate

要產生視訊的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節

filter_name (濾鏡名稱)

要載入的 frei0r 來源名稱。關於 frei0r 以及如何設定參數的更多資訊,請參閱視訊濾鏡文件中的 frei0r 章節。

filter_params

要傳遞給 frei0r 來源的參數列表,以 '|' 分隔。

例如,要產生一個尺寸為 200x200,幀率為 10 的 frei0r partik0l 來源,並覆蓋在 overlay 濾鏡的主要輸入上

frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

44.9 life

產生生命模式。

此來源基於約翰·康威生命遊戲的推廣。

來源輸入代表生命網格,每個像素代表一個細胞,細胞可能處於兩種可能的狀態之一:存活或死亡。每個細胞都與其八個鄰居互動,這些鄰居是水平、垂直或對角相鄰的細胞。

在每次互動中,網格都會根據採用的規則演化,該規則指定了鄰居存活細胞的數量,這些數量將使一個細胞保持存活或誕生。rule 選項允許指定要採用的規則。

此來源接受以下選項

filename, f

設定要從中讀取初始網格狀態的檔案。在檔案中,每個非空白字元都被視為存活細胞,換行符號用於分隔每行的結尾。

如果未指定此選項,則初始網格會隨機產生。

速率,r

設定視訊速率,即每秒產生的影格數。預設值為 25。

random_fill_ratio(隨機填充比例), ratio(比例)

設定初始隨機網格的隨機填充率。它是一個介於 0 到 1 之間的浮點數值,預設值為 1/PHI。當指定檔案時,此選項會被忽略。

random_seed(隨機種子), seed(種子)

設定用於填充初始隨機網格的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,濾鏡將盡力使用良好的隨機種子。

rule(規則)

設定生命規則。

規則可以使用 "SNS/BNB" 類型的代碼指定,其中 NSNB 是 0-8 範圍內的數字序列,NS 指定使存活細胞保持存活的鄰居存活細胞數量,而 NB 指定使死亡細胞變為存活(即「誕生」)的鄰居存活細胞數量。"s" 和 "b" 可以分別代替 "S" 和 "B" 使用。

或者,規則可以使用 18 位元整數指定。高 9 位元用於編碼細胞在鄰居存活細胞的每個數量下,如果它是存活的,則其下一個細胞狀態,低位元指定「誕生」新細胞的規則。較高位元編碼較高數量的鄰居細胞。例如,數字 6153 = (12<<9)+9 指定存活規則為 12,誕生規則為 9,這對應於 "S23/B03"。

預設值為 "S23/B3",這是原始康威生命遊戲的規則,如果細胞有 2 或 3 個鄰居存活細胞,則會保持存活,如果死亡細胞周圍有三個存活細胞,則會誕生新細胞。

size, s

設定輸出視訊的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節

如果指定了 filename,則尺寸預設設定為與輸入檔案相同的大小。如果設定了 size,則它必須包含在輸入檔案中指定的大小,並且在該檔案中定義的初始網格會置中於較大的結果區域中。

如果未指定檔案名稱,則尺寸值預設為 "320x240"(用於隨機產生的初始網格)。

stitch(縫合)

如果設定為 1,則將網格的左右邊緣縫合在一起,頂部和底部邊緣也縫合在一起。預設值為 1。

mold

設定細胞腐爛速度。如果設定,死亡細胞將以 mold 的步進從 death_color 變為 mold_colormold 的值可以從 0 到 255。

life_color

設定存活(或新生)細胞的顏色。

death_color

設定死亡細胞的顏色。如果設定了 mold,這是用於表示死亡細胞的第一種顏色。

mold_color

設定腐爛顏色,用於完全死亡和腐爛的細胞。

關於這 3 個顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

44.9.1 範例

  • pattern 讀取網格,並將其置中於尺寸為 300x300 像素的網格上
    life=f=pattern:s=300x300
    
  • 產生尺寸為 200x200,填充率為 2/3 的隨機網格
    life=ratio=2/3:s=200x200
    
  • 指定自訂規則以演化隨機產生的網格
    life=rule=S14/B34
    
  • 使用 ffplay 的慢速死亡效果(腐爛)完整範例
    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
    

44.10 perlin

產生柏林雜訊。

柏林雜訊是一種在空間中具有局部連續性的雜訊。這可以用於產生在空間和時間上都具有連續性的模式,例如模擬煙霧、液體或地形。

如果透過 octaves 選項指定了多個八度音階,則柏林雜訊會產生為組件的總和,每個組件的頻率加倍。在這種情況下,persistence 選項指定相對於前一個組件的振幅比率。更多八度音階組件使能夠在產生的雜訊中指定更多高頻細節(例如,由於生成地形中的巨石引起的小尺寸變化)。

44.10.1 選項

size, s

指定緩衝視訊幀的大小(寬度和高度)。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Video size" 章節。預設值為 320x240

速率,r

指定視訊串流預期的幀率,以每秒幀數表示。預設值為 25

octaves

指定構成雜訊的組件總數,每個組件的頻率加倍。預設值為 1

persistence

設定用於計算下一個八度音階組件相對於前一個組件振幅的比率。預設值為 1

xscale
yscale

定義用於乘以 x、y 座標的縮放因子。這對於定義沿 x 或 y 軸拉伸的模式效果很有用。預設值為 1

tscale

定義用於乘以時間座標的縮放因子。這對於更改時間變化速度很有用。預設值為 1

random_mode

設定用於計算初始模式的隨機模式。

支援的值為

隨機

計算並使用隨機種子。

ken

使用 Ken Perlin 在原始文章中定義的預定義初始模式,這對於將輸出與其他來源進行比較很有用。

seed

使用 random_seed 選項指定的值。

預設值為 random

random_seed(隨機種子), seed(種子)

random_mode 設定為 random_seed 時,使用此值計算初始模式。預設值為 0

44.10.2 範例

  • 產生單一組件
    perlin
    
  • 使用具有 7 個組件的柏林雜訊,每個組件對總振幅的貢獻減半
    perlin=octaves=7:persistence=0.5
    
  • 將柏林雜訊與 lutyuv 鏈接以產生黑白效果
    perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
    
  • 沿 y 軸拉伸雜訊,並將灰階轉換為僅紅色訊號
    perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
    

44.11 qrencodesrc

使用 libqrencode 程式庫產生 QR 碼(請參閱 https://fukuchi.org/works/qrencode/)。

要啟用此來源的編譯,您需要使用 --enable-libqrencode 配置 FFmpeg。

QR 碼是從提供的文字或文字模式產生的。相應的 QR 碼會根據指定的輸出尺寸選項進行縮放並放置在視訊輸出中。

如果未指定文字,則不會產生 QR 碼,而是返回空白的彩色輸出。

此來源接受以下選項

qrcode_width, q
padded_qrcode_width, Q

指定用於呈現的 QR 碼寬度的表達式,包括含填充和不含填充。 qrcode_width 表達式可以參考由 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。

這些表達式僅在初始化來源時評估一次。有關詳細資訊,請參閱 qrencode 表達式 章節。

請注意,來源缺少一些常數(例如 xt 或 ¸n),因為它們僅在為每個幀評估表達式而不是在初始化時才有意義。

速率,r

以每秒產生的影格數指定來源視訊的影格率。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。預設值為 "25"。

case_sensitive, cs

指示 libqrencode 使用區分大小寫的編碼。預設情況下已啟用。可以停用此功能以減小 QR 編碼大小。

level, l

指定 QR 編碼錯誤校正級別。使用較高的校正級別,編碼大小會增加,但代碼對於損壞的抵抗力會更強。較低的級別為 L

它接受以下值

L
M
Q
H
expansion

選擇如何擴展輸入文字。可以是 nonenormal(預設)。有關詳細資訊,請參閱 qrencode 文字擴展 章節。

text
textfile

定義要呈現的文字。如果未指定任何文字,則不會編碼 QR 碼(僅為空的彩色幀)。

如果啟用了擴展,則文字將被視為文字模板,使用 qrencode 擴展機制。有關詳細資訊,請參閱 qrencode 文字擴展 章節。

background_color, bc
foreground_color, fc

設定 QR 碼和背景顏色。 foreground_color 的預設值為「black」,background_color 的預設值為「white」。

有關顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節

44.11.1 範例

  • 產生一個編碼指定文字的 QR 碼,使用預設尺寸
    qrencodesrc=text=www.ffmpeg.org
    
  • 與下方相同,但選擇藍色和粉紅色
    qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
    
  • 產生一個寬度為 200 像素且帶填充的 QR 碼,使含填充的寬度為 QR 碼寬度的 4/3
    qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 產生一個含填充寬度為 200 像素且帶填充的 QR 碼,使 QR 碼寬度為含填充寬度的 3/4
    qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 產生一個編碼幀號的 QR 碼
    qrencodesrc=text=%{n}
    
  • 產生一個編碼 GMT 時間戳記的 QR 碼
    qrencodesrc=text=%{gmtime}
    
  • 產生一個編碼為浮點數的時間戳記的 QR 碼
    qrencodesrc=text=%{pts}
    

44.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

allrgb 來源傳回尺寸為 4096x4096 的所有 rgb 顏色的幀。

allyuv 來源傳回尺寸為 4096x4096 的所有 yuv 顏色的幀。

color 來源提供均勻著色的輸入。

colorchart 來源提供色彩檢查圖表。

colorspectrum 來源提供色彩頻譜輸入。

haldclutsrc 來源提供身分 Hald CLUT。另請參閱 haldclut 濾鏡。

nullsrc 來源傳回未處理的視訊幀。它主要用於分析/除錯工具中,或作為忽略輸入資料的濾鏡的來源。

pal75bars 來源產生色彩條模式,基於 EBU PAL 建議,使用 75% 色彩級別。

pal100bars 來源產生色彩條模式,基於 EBU PAL 建議,使用 100% 色彩級別。

rgbtestsrc 來源產生 RGB 測試模式,可用於偵測 RGB 與 BGR 問題。您應該看到從上到下的紅色、綠色和藍色條紋。

smptebars 來源產生色彩條模式,基於 SMPTE 工程指南 EG 1-1990。

smptehdbars 來源產生色彩條模式,基於 SMPTE RP 219-2002。

testsrc 來源產生測試視訊模式,顯示色彩模式、滾動漸層和時間戳記。這主要用於測試目的。

testsrc2 來源與 testsrc 相似,但支援更多像素格式,而不僅僅是 rgb24。這允許將其用作其他測試的輸入,而無需格式轉換。

yuvtestsrc 來源產生 YUV 測試模式。您應該看到從上到下的 y、cb 和 cr 條紋。

來源接受以下參數

level

指定 Hald CLUT 的級別,僅在 haldclutsrc 來源中可用。級別為 N 會產生一個 N*N*N x N*N*N 像素的圖片,用作 3D 查找表的單位矩陣。每個組件都以 1/(N*N) 比例編碼。

顏色,c

指定來源的顏色,僅在 color 來源中可用。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

size, s

指定來源視訊的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節。預設值為 320x240

此選項不適用於 allrgballyuvhaldclutsrc 濾鏡。

速率,r

以每秒產生的影格數指定來源視訊的影格率。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。預設值為 "25"。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) 手冊中的時間持續時間章節

如果未指定,或表示的持續時間為負數,則視訊應永久產生。

由於幀率用作時間基底,因此包括最後一幀在內的所有幀都將具有完整的持續時間。如果指定的持續時間不是幀持續時間的倍數,則會向上捨入。

sar

設定來源視訊的樣本長寬比。

alpha

指定背景的 alpha(不透明度),僅在 testsrc2 來源中可用。值必須介於 0(完全透明)和 255(完全不透明,預設值)之間。

decimals, n

設定時間戳記中顯示的小數位數,僅在 testsrc 來源中可用。

顯示的時間戳記值將對應於原始時間戳記值乘以指定值的 10 的冪。預設值為 0。

type

設定色彩頻譜的類型,僅在 colorspectrum 來源中可用。可以是以下之一

black
white
all
patch_size

設定單個色塊的色塊大小,僅在 colorchart 來源中可用。預設值為 64x64

preset

設定 colorchecker 顏色預設,僅在 colorchart 來源中可用。

可用的值為

reference
skintones

預設值為 reference

44.12.1 範例

  • 產生持續時間為 5.3 秒的視訊,尺寸為 176x144,幀率為每秒 10 幀
    testsrc=duration=5.3:size=qcif:rate=10
    
  • 以下圖形描述將產生一個不透明度為 0.2 的紅色來源,尺寸為 "qcif",幀率為每秒 10 幀
    color=c=red@0.2:s=qcif:r=10
    
  • 如果要忽略輸入內容,可以使用 nullsrc。以下命令透過使用 geq 濾鏡在亮度平面中產生雜訊
    nullsrc=s=256x256, geq=random(1)*255:128:128
    

44.12.2 指令

color 來源支援以下命令

c, color

設定建立影像的顏色。接受與對應 color 選項相同的語法。

44.13 openclsrc

使用 OpenCL 程式產生視訊。

source

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

size, s

要產生的幀的大小。這必須設定。

格式

用於產生幀的像素格式。這必須設定。

速率,r

每秒產生的幀數。預設值為 '25'。

有關程式載入如何運作的詳細資訊,請參閱 program_opencl 濾鏡。

範例程式

  • 透過從輸出影像中像素的位置設定像素值來產生色彩漸變。(請注意,這適用於所有像素格式,但產生的輸出將不相同。)
    __kernel void ramp(__write_only image2d_t dst,
                       unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 val;
        val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
    
        write_imagef(dst, loc, val);
    }
    
  • 產生 Sierpinski 地毯模式,每幀平移一個像素。
    __kernel void sierpinski_carpet(__write_only image2d_t dst,
                                    unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = 0.0f;
        int x = loc.x + index;
        int y = loc.y + index;
        while (x > 0 || y > 0) {
            if (x % 3 == 1 && y % 3 == 1) {
                value = 1.0f;
                break;
            }
            x /= 3;
            y /= 3;
        }
    
        write_imagef(dst, loc, value);
    }
    

44.14 sierpinski

產生 Sierpinski 地毯/三角形碎形,並隨機平移。

此來源接受以下選項

size, s

設定影格大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊大小" 章節。預設值為 "640x480"。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

seed

設定用於隨機平移的種子。

jump

設定單次平移目標的最大跳躍。允許範圍為 1 到 10000。

type

設定碎形類型,可以是預設的 carpettriangle

44.15 zoneplate

產生 zoneplate 測試視訊模式。

此來源接受以下選項

size, s

設定幀大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Video size" 章節。預設值為 "320x240"。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) 手冊中的時間持續時間章節

如果未指定,或表示的持續時間為負數,則視訊應永久產生。

sar

設定來源視訊的樣本長寬比。

precision

設定正弦計算查找表的精度(以位元為單位)。預設值為 10。允許範圍為 4 到 16。

xo

設定輸出訊號的水平軸偏移量。預設值為 0。

yo

設定輸出訊號的垂直軸偏移量。預設值為 0。

to

設定輸出訊號的時間軸偏移量。預設值為 0。

k0

設定 0 階常數,添加到訊號相位。預設值為 0。

kx

設定 1 階常數,水平軸的相位因子乘數。預設值為 0。

ky

設定 1 階常數,垂直軸的相位因子乘數。預設值為 0。

kt

設定 1 階常數,時間軸的相位因子乘數。預設值為 0。

kxt, kyt, kxy

設定空間軸和時間軸組合的相位因子乘數。預設值為 0。

kx2

設定 2 階常數,水平軸的相位因子乘數。預設值為 0。

ky2

設定 2 階常數,垂直軸的相位因子乘數。預設值為 0。

kt2

設定 2 階常數,時間軸的相位因子乘數。預設值為 0。

ku

設定添加到最終相位以產生訊號的色度藍色分量的常數。預設值為 0。

kv

設定添加到最終相位以產生訊號的色度紅色分量的常數。預設值為 0。

44.15.1 指令

此來源支援上述某些選項作為 commands(命令)

44.15.2 範例

  • 產生水平色彩正弦掃描
    zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
    
  • 產生垂直色彩正弦掃描
    zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
    
  • 產生環形 zone-plate
    zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
    

45 視訊接收器

以下是目前可用的視訊接收器的說明。

45.1 buffersink

緩衝視訊幀,並使其可用於濾鏡圖的末端。

此接收器主要用於程式化使用,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受指向 AVBufferSinkContext 結構的指標,該結構定義了要作為不透明參數傳遞給 avfilter_init_filter 以進行初始化的傳入緩衝區格式。

45.2 nullsink

Null 視訊接收器:對輸入視訊完全不做任何處理。它主要作為範本,並用於分析/除錯工具中。

46 多媒體濾鏡

以下是目前可用的多媒體濾鏡說明。

46.1 a3dscope

將輸入音訊轉換為 3d 範圍視訊輸出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 hd720

fov

設定攝影機視野。預設值為 90 度。允許範圍為 40 到 150 度。

roll

設定攝影機橫滾角。

pitch

設定攝影機俯仰角。

yaw

設定攝影機偏航角。

xzoom

設定攝影機在 X 軸上的縮放。

yzoom

設定攝影機在 Y 軸上的縮放。

zzoom

設定攝影機在 Z 軸上的縮放。

xpos

設定攝影機在 X 軸上的位置。

ypos

設定攝影機在 Y 軸上的位置。

zpos

設定攝影機在 Z 軸上的位置。

length

設定顯示音訊波形的長度,以影格數為單位。

46.1.1 指令

濾鏡支援上述某些選項作為指令

46.2 abitscope

將輸入音訊轉換為視訊輸出,顯示音訊位元示波器。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 1024x256

顏色

指定以空格或「|」分隔的顏色列表,這些顏色將用於繪製聲道。無法辨識或遺失的顏色將被白色取代。

mode, m

設定輸出模式。可以是 barstrace。預設值為 bars

46.3 adrawgraph

使用輸入音訊元數據繪製圖表。

請參閱 drawgraph

46.4 agraphmonitor

請參閱 graphmonitor

46.5 ahistogram

將輸入音訊轉換為視訊輸出,顯示音量直方圖。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

dmode

指定如何計算直方圖。

它接受以下值

僅針對與前一個影格不同的部分計算直方圖。如果背景是靜態的,這可能與更重視輸入的移動部分有關。

為所有聲道使用單一直方圖。

separate

為每個聲道使用個別的直方圖。

預設值為 single

速率,r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 hd720

scale

設定顯示比例。

它接受以下值

log

logarithmic

sqrt

平方根

cbrt

立方根

lin

linear

rlog

反向對數

預設值為 log

ascale

設定振幅比例。

它接受以下值

log

logarithmic

lin

linear

預設值為 log

acount

設定直方圖中累積多少影格。預設值為 1。設定為 -1 會累積所有影格。

rheight

設定直方圖佔視窗高度的比例。

slide

設定聲譜圖滑動。

它接受以下值

replace

用新的列取代舊的列。

scroll

從上到下捲動。

預設值為 replace

hmode

設定直方圖模式。

它接受以下值

abs

使用樣本的絕對值。

sign

使用未修改的樣本值。

預設值為 abs

46.6 aphasemeter

測量輸入音訊的相位,並將其作為元數據 lavfi.aphasemeter.phase 匯出,表示目前音訊影格的平均相位。預設情況下也會產生視訊輸出並啟用。音訊會作為第一個輸出傳遞。

如果音訊具有不同的聲道佈局,則會被重新矩陣化為立體聲。相位值範圍為 [-1, 1],其中 -1 表示左右聲道完全異相,而 1 表示聲道同相。

此濾鏡接受以下選項,所有選項都與其視訊輸出相關

速率,r

設定輸出影格率。預設值為 25

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 800x400

rc
gc
bc

指定紅色、綠色、藍色對比度。預設值分別為 271。允許範圍為 [0, 255]

mpc

設定將用於繪製中位數相位的顏色。如果顏色為 none(預設值),則不會繪製中位數相位值。

video

啟用視訊輸出。預設為啟用。

46.6.1 相位偵測

此濾鏡還會偵測立體聲串流中的異相和單聲道序列。當序列持續時間長於或等於設定的最小值時,它會記錄序列的開始、結束和持續時間。

此濾鏡接受以下用於偵測的選項

phasing

啟用單聲道和異相偵測。預設為停用。

tolerance, t

設定單聲道偵測的相位容差,以振幅比率表示。預設值為 0。允許範圍為 [0, 1]

angle, a

設定異相偵測的角度閾值,以度為單位。預設值為 170。允許範圍為 [90, 180]

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定單聲道或異相持續時間,直到通知,以秒為單位表示。預設值為 2

46.6.2 範例

  • 使用 ffmpeg 偵測 1 秒單聲道且相位容差為 0.001 的完整範例
    ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
    

46.7 avectorscope

將輸入音訊轉換為視訊輸出,表示音訊向量示波器。

此濾鏡用於測量立體聲音訊串流聲道之間的差異。由相同的左右聲道訊號組成的單聲道訊號會產生一條筆直的垂直線。任何立體聲分離都會顯示為偏離此線,產生李薩如圖形。如果出現筆直(或偏離)但水平的線條,則表示左右聲道異相。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

mode, m

設定向量示波器模式。

可用的值為

lissajous

李薩如圖形旋轉 45 度。

lissajous_xy

與上述相同,但不旋轉。

polar

形狀類似半圓形。

預設值為 ‘lissajous’。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 400x400

速率,r

設定輸出影格率。預設值為 25

rc
gc
bc
ac

指定紅色、綠色、藍色和 Alpha 對比度。預設值分別為 4016080255。允許範圍為 [0, 255]

rf
gf
bf
af

指定紅色、綠色、藍色和 Alpha 衰減。預設值分別為 151055。允許範圍為 [0, 255]

keep

設定縮放係數。預設值為 1。允許範圍為 [0, 10]。低於 1 的值將自動調整縮放係數至最大可能值。

draw

設定向量示波器繪圖模式。

可用的值為

dot

為每個樣本繪製點。

line

在前一個和目前的樣本之間繪製線條。

aaline

在前一個和目前的樣本之間繪製反鋸齒線條。

預設值為 ‘dot’。

scale

指定音訊樣本的振幅比例。

可用的值為

lin

線性。

sqrt

平方根。

cbrt

立方根。

log

對數。

swap

將左聲道軸與右聲道軸交換。

mirror

鏡像軸。

none

無鏡像。

x

僅鏡像 x 軸。

y

僅鏡像 y 軸。

xy

鏡像兩個軸。

46.7.1 範例

  • 使用 ffplay 的完整範例
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
    

46.7.2 指令

除了 sizerate 選項外,此濾鏡支援上述所有選項作為指令。

46.8 bench, abench

基準測試濾鏡圖的一部分。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

action

啟動或停止計時器。

可用的值為

start

取得目前時間,將其設定為影格元數據(使用金鑰 lavfi.bench.start_time),並將影格轉發到下一個濾鏡。

stop

取得目前時間並從輸入影格元數據中擷取 lavfi.bench.start_time 元數據以取得時間差。然後會印出時間差、平均時間、最大時間和最小時間(分別為 tavgmaxmin)。時間戳記以秒為單位表示。

46.8.1 範例

  • 基準測試 selectivecolor 濾鏡
    bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
    

46.9 concat

串連音訊和視訊串流,將它們一個接一個地連接在一起。

此濾鏡適用於同步視訊和音訊串流的片段。所有片段必須具有相同數量的每種類型串流,這也將是輸出的串流數量。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

n

設定片段數量。預設值為 2。

v

設定輸出視訊串流的數量,這也是每個片段中視訊串流的數量。預設值為 1。

a

設定輸出音訊串流的數量,這也是每個片段中音訊串流的數量。預設值為 0。

unsafe

啟用不安全模式:如果片段格式不同,則不失敗。

此濾鏡具有 v+a 個輸出:首先是 v 個視訊輸出,然後是 a 個音訊輸出。

nx(v+a) 個輸入:首先是第一個片段的輸入,順序與輸出相同,然後是第二個片段的輸入,依此類推。

相關串流的持續時間並不總是完全相同,原因有很多,包括編解碼器影格大小或草率的製作。因此,應一次串連相關的同步串流(例如,視訊及其音軌)。concat 濾鏡將使用每個片段(最後一個片段除外)中最長串流的持續時間,並在必要時以靜音填充較短的音訊串流。

為了使此濾鏡正常運作,所有片段都必須從時間戳記 0 開始。

所有對應的串流在所有片段中都必須具有相同的參數;濾鏡系統會自動為視訊串流選擇通用的像素格式,並為音訊串流選擇通用的樣本格式、採樣率和聲道佈局,但其他設定(例如解析度)必須由使用者明確轉換。

不同的影格率是可以接受的,但會導致輸出時的可變影格率;請務必設定輸出檔案以處理它。

46.9.1 範例

  • 串連開場、劇集和結尾,全部為雙語版本(串流 0 中的視訊,串流 1 和 2 中的音訊)
    ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
      '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
       concat=n=3:v=1:a=2 [v] [a1] [a2]' \
      -map '[v]' -map '[a1]' -map '[a2]' output.mkv
    
  • 串連兩個部分,分別處理音訊和視訊,使用 (a)movie 來源,並調整解析度
    movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
    movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
    [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
    

    請注意,如果音訊和視訊串流在第一個檔案中的持續時間不完全相同,則會在接合處發生不同步。

46.9.2 指令

此濾波器支援以下命令

next

關閉目前的片段並步進到下一個片段

46.10 ebur128

EBU R128 掃描器濾鏡。此濾鏡會取得音訊串流並分析其響度級別。預設情況下,它會以 10Hz 的頻率記錄訊息,其中包含瞬時響度(以 M 識別)、短期響度(S)、綜合響度(I)和響度範圍(LRA)。

此濾鏡只能分析樣本格式為雙精度浮點的串流。如有需要,輸入串流將轉換為此規格。使用者可能需要在此濾鏡之後插入 aformat 和/或 aresample 濾鏡以取得原始參數。

此濾鏡還具有視訊輸出(請參閱 video 選項),其中包含即時圖表以觀察響度演變。圖形包含上述記錄的訊息,因此如果設定此選項,則不再印出訊息,除非設定詳細記錄。主要的圖形區域包含短期響度(3 秒分析),右側的儀表用於瞬時響度(400 毫秒),但可以選擇設定為改為顯示短期響度(請參閱 gauge)。

綠色區域標記目標響度(預設為 -23LUFS,除非透過 target 修改)周圍 +/- 1LU 的目標範圍。

有關響度建議 EBU R128 的更多資訊,請參閱 http://tech.ebu.ch/loudness

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

video

啟用視訊輸出。無論是否設定此選項,音訊串流都會保持不變地傳遞。如果啟用,視訊串流將是第一個輸出串流。預設值為 0

size

設定視訊尺寸。此選項僅適用於視訊。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設和最小解析度為 640x480

meter

設定 EBU 刻度儀表。預設值為 9。常用值為 918,分別用於 EBU 刻度儀表 +9 和 EBU 刻度儀表 +18。允許此範圍內的任何其他整數值。

metadata

設定元數據注入。如果設定為 1,音訊輸入將被分割成 100 毫秒的輸出影格,每個影格都包含元數據中的各種響度資訊。所有元數據金鑰都以 lavfi.r128. 為前綴。

預設值為 0

framelog

強制影格記錄級別。

可用的值為

quiet

停用記錄

info

資訊記錄級別

verbose

詳細記錄級別

預設情況下,記錄級別設定為 info。如果設定了 videometadata 選項,則會切換為 verbose

rms

設定峰值模式。

可累積可用模式(該選項為 flag 類型)。可能的值為

none

停用任何峰值模式(預設)。

sample

啟用樣本峰值模式。

簡單的峰值模式,尋找較高的樣本值。它會記錄樣本峰值的訊息(以 SPK 識別)。

true

啟用真峰值模式。

如果啟用,則會在輸入串流的過採樣版本上完成峰值查找,以獲得更好的峰值精度。它會記錄真峰值的訊息(以 TPK 識別)和每影格真峰值(以 FTPK 識別)。此模式需要使用 libswresample 建置。

dualmono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在在立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,則此選項將補償此效果。多聲道輸入檔案不受此選項影響。

panlaw

設定要用於測量雙單聲道檔案的特定聲像定律。此參數是可選的,預設值為 -3.01dB。

target

設定特定目標級別(以 LUFS 為單位),用作視覺化中的相對零點。此參數是可選的,預設值為 EBU R128 規定的 -23LUFS。但是,線上發布的內容可能偏好 -16LUFS 的級別(例如,用於 Podcast 或視訊平台)。

gauge

設定儀表板顯示的值。有效值為 momentaryshortterm。預設會使用瞬間值,但在某些情況下,觀察短期值可能會更有用(例如,現場混音)。

scale

設定響度的顯示刻度。有效參數為相對於目標的 absolute(以 LUFS 為單位)或 relative(LU)。這僅影響視訊輸出,而不影響摘要或連續日誌輸出。

整合

測得的整合響度的唯讀匯出值,單位為 LUFS。

range

測得的響度範圍的唯讀匯出值,單位為 LU。

lra_low

測得的 LRA low 的唯讀匯出值,單位為 LUFS。

lra_high

測得的 LRA high 的唯讀匯出值,單位為 LUFS。

sample_peak

測得的樣本峰值的唯讀匯出值,單位為 dBFS。

true_peak

測得的真實峰值的唯讀匯出值,單位為 dBFS。

46.10.1 範例

  • 使用 ffplay 的即時圖表,帶有 EBU 刻度表 +18
    ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
    
  • 使用 ffmpeg 執行分析
    ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
    

46.11 interleave, ainterleave

暫時交錯來自多個輸入的影格。

interleave 適用於視訊輸入,ainterleave 適用於音訊。

這些濾鏡從多個輸入讀取影格,並將最舊的佇列影格傳送到輸出。

輸入串流必須具有明確定義、單調遞增的影格時間戳記值。

為了將一個影格提交到輸出,這些濾鏡需要為每個輸入排隊至少一個影格,因此如果一個輸入尚未終止且不會接收到輸入影格,則它們無法運作。

例如,考慮一個輸入是 select 濾鏡的情況,它總是丟棄輸入影格。interleave 濾鏡將繼續從該輸入讀取,但它永遠無法將新影格發送到輸出,直到輸入發送串流結束訊號。

此外,根據輸入同步,如果一個輸入接收的影格多於其他輸入,且佇列已滿,則濾鏡將丟棄影格。

這些濾鏡接受以下選項

nb_inputs, n

設定不同輸入的數量,預設為 2。

duration

如何判斷串流結束。

最長

最長輸入的持續時間。(預設)

shortest

最短輸入的持續時間。

第一個

第一個輸入的持續時間。

46.11.1 範例

  • 使用 ffmpeg 交錯屬於不同串流的影格
    ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
    
  • 新增閃爍模糊效果
    select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
    

46.12 latency, alatency

測量濾鏡延遲。

報告先前濾鏡的濾鏡延遲,音訊濾鏡的延遲以音訊樣本數表示,視訊濾鏡的延遲以視訊影格數表示。

在輸入串流結束時,濾鏡將報告濾鏡圖中先前執行濾鏡的最小和最大測量延遲。

46.13 metadata, ametadata

操作影格元數據。

此濾波器接受以下選項

level_in

設定濾鏡的操作模式。

可以是下列其中之一:

select

如果同時設定了 valuekey,則選擇具有此類元數據的影格。如果僅設定了 key,則選擇每個在元數據中具有此鍵的影格。

add

新增元數據 keyvalue。如果鍵已存在,則不執行任何操作。

modify

修改已存在的鍵的值。

delete

如果設定了 value,則僅刪除具有此值的鍵。否則,刪除鍵。如果未設定 key,則刪除影格中的所有元數據值。

print

如果找到元數據,則列印鍵及其值。如果未設定 key,則列印影格中所有可用的元數據值。

key(金鑰)

設定用於所有模式的鍵。除了 printdelete 之外的所有模式都必須設定。

value

設定將使用的元數據值。此選項對於 modifyadd 模式是強制性的。

function

在比較元數據值和 value 時要使用哪個函式。

可以是以下其中之一

same_str

值被解釋為字串,如果元數據值與 value 相同,則傳回 true。

starts_with

值被解釋為字串,如果元數據值以 value 選項字串開頭,則傳回 true。

less

值被解釋為浮點數,如果元數據值小於 value,則傳回 true。

equal

值被解釋為浮點數,如果 value 等於元數據值,則傳回 true。

greater

值被解釋為浮點數,如果元數據值大於 value,則傳回 true。

expr

值被解釋為浮點數,如果選項 expr 中的表達式評估為 true,則傳回 true。

ends_with

值被解釋為字串,如果元數據值以 value 選項字串結尾,則傳回 true。

expr(表達式)

設定當 function 設定為 expr 時使用的表達式。表達式透過 eval API 評估,並且可以包含以下常數

VALUE1, FRAMEVAL

來自元數據鍵的 value 的浮點數表示。

VALUE2, USERVAL

使用者在 value 選項中提供的 value 的浮點數表示。

file

如果在 print 模式中指定,則輸出會寫入到指定的檔案。可以使用任何可寫入的 URL 而不是純檔案名稱。檔案名稱「-」是標準輸出的簡寫。如果未設定 file 選項,則輸出會以 AV_LOG_INFO 日誌等級寫入日誌。

直接

當輸出寫入到使用 file 設定的 URL 時,減少列印模式中的緩衝。

46.13.1 範例

  • 列印鍵為 lavfi.signalstats.YDIF 且值介於 0 和 1 之間的影格的所有元數據值。
    signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
    
  • 將 silencedetect 輸出列印到檔案 metadata.txt
    silencedetect,ametadata=mode=print:file=metadata.txt
    
  • 將所有元數據導向到檔案描述符為 4 的管道。
    metadata=mode=print:file='pipe\:4'
    

46.14 perms, aperms

設定輸出影格的讀/寫權限。

這些濾鏡主要針對開發人員,用於測試濾鏡圖中後續濾鏡的直接路徑。

濾鏡接受以下選項

level_in

選擇權限模式。

它接受以下值

none

不執行任何操作。這是預設值。

ro

將所有輸出影格設定為唯讀。

rw

將所有輸出影格設定為直接可寫入。

toggle

如果影格可寫入,則使其成為唯讀;如果影格唯讀,則使其成為可寫入。

random

隨機設定每個輸出影格為唯讀或可寫入。

seed

設定 random 模式的種子,必須是介於 0UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

注意:如果在權限濾鏡和後續濾鏡之間自動插入濾鏡,則後續濾鏡可能無法如預期地接收到權限。在 perms/aperms 濾鏡之前插入 formataformat 濾鏡可以避免此問題。

46.15 realtime, arealtime

減慢濾鏡速度以大致符合即時。

這些濾鏡將暫停濾鏡一段可變的時間,以使輸出速率與輸入時間戳記相符。它們類似於 ffmpegre 選項。

它們接受以下選項

限制

暫停的時間限制。任何超過此限制的暫停都將被視為時間戳記不連續並重置計時器。預設值為 2 秒。

speed

處理速度因子。該值必須是 > 0 的浮點數。大於 1.0 的值將導致快於即時處理,較小的值將減慢處理速度。limit 會自動相應調整。預設值為 1.0。

無法實現比沒有這些濾鏡時更快的處理速度。

46.15.1 指令

這兩個濾鏡都支援以上所有選項作為 commands

46.16 segment, asegment

將單個輸入串流分割成多個串流。

此濾鏡的功能與 concat 濾鏡相反。

segment 適用於視訊影格,asegment 適用於音訊樣本。

此濾波器接受以下選項

timestamps

輸出片段的時間戳記以「|」分隔。第一個片段將從輸入串流的開頭開始執行。最後一個片段將執行到輸入串流的結尾。

frames, samples

用於分割片段的精確影格/樣本計數。

在所有情況下,在每個片段前加上「+」將使其相對於前一個片段。

46.16.1 範例

  • 將輸入音訊串流分割成三個輸出音訊串流,從輸入音訊串流的開頭開始,並將其儲存在第一個輸出音訊串流中,然後在第 60 秒繼續,並將其儲存在第二個輸出音訊串流中,最後在輸入音訊串流的第 150 秒之後儲存在第三個輸出音訊串流中
    asegment=timestamps="60|150"
    

46.17 select, aselect

選擇要傳遞到輸出的影格。

此濾波器接受以下選項

expr, e

設定表達式,該表達式會針對每個輸入影格進行評估。

如果表達式評估為零,則丟棄該影格。

如果評估結果為負數或 NaN,則影格會被發送到第一個輸出;否則,它會被發送到索引為 ceil(val)-1 的輸出,假設輸入索引從 0 開始。

例如,值 1.2 對應於索引為 ceil(1.2)-1 = 2-1 = 1 的輸出,即第二個輸出。

outputs, n

設定輸出數量。要將選定影格發送到哪個輸出取決於評估結果。預設值為 1。

表達式可以包含以下常數

n

已濾鏡影格的(循序)編號,從 0 開始。

selected_n

選定影格的(循序)編號,從 0 開始。

prev_selected_n

最後選定影格的循序編號。如果未定義,則為 NAN。

TB

輸入時間戳記的時基。

pts

已濾鏡影格的 PTS(呈現時間戳記),以 TB 單位表示。如果未定義,則為 NAN。

t

已濾鏡影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

prev_pts

先前已濾鏡影格的 PTS。如果未定義,則為 NAN。

prev_selected_pts

最後先前已濾鏡影格的 PTS。如果未定義,則為 NAN。

prev_selected_t

最後先前選定影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

start_pts

串流中第一個不是 NAN 的 PTS。如果未找到,則保持為 NAN。

start_t

串流中第一個不是 NAN 的 PTS,以秒為單位表示。如果未找到,則保持為 NAN。

pict_type (僅限視訊)

已濾鏡影格的類型。它可以採用以下值之一

I
P
B
S
SI
SP
BI
interlace_type (僅限視訊)

影格交錯類型。它可以採用以下值之一

PROGRESSIVE

影格是漸進式(非交錯)。

TOPFIRST

影格是頂場優先。

BOTTOMFIRST

影格是底場優先。

consumed_sample_n (僅限音訊)

當前影格之前選定的樣本數

samples_n (僅限音訊)

當前影格中的樣本數

sample_rate (僅限音訊)

輸入取樣率

key(金鑰)

如果已濾鏡影格是關鍵影格,則為 1,否則為 0。

pos

已濾鏡影格在檔案中的位置,如果資訊不可用(例如,對於合成視訊),則為 -1;已棄用,請勿使用

scene (僅限視訊)

介於 0 和 1 之間的值,用於指示新場景;較低的值反映當前影格引入新場景的機率較低,而較高的值表示當前影格更可能是新場景(請參閱以下範例)

concatdec_select

concat 解多工器可以透過設定入點和出點來僅選擇 concat 輸入檔案的一部分,但輸出封包可能不會完全包含在選定的間隔內。透過使用此變數,可以跳過 concat 解多工器產生的未完全包含在選定間隔內的影格。

這透過將影格 pts 與 lavf.concat.start_timelavf.concat.duration 封包元數據值進行比較來實現,這些值也存在於解碼後的影格中。

如果影格 pts 至少為 start_time,且持續時間元數據遺失或影格 pts 小於 start_time + duration,則 concatdec_select 變數為 -1,否則為 0,如果 start_time 元數據遺失,則為 NaN。

這基本上意味著,如果輸入影格的 pts 在 concat 解多工器設定的間隔內,則會選取該影格。

iw (僅限視訊)

表示輸入視訊影格的寬度。

ih (僅限視訊)

表示輸入視訊影格的高度。

view (僅限視訊)

多視圖視訊的視圖 ID。

select 表達式的預設值為「1」。

46.17.1 範例

  • 選取輸入中的所有影格
    select
    

    上述範例與以下相同

    select=1
    
  • 跳過所有影格
    select=0
    
  • 僅選取 I 影格
    select='eq(pict_type\,I)'
    
  • 每 100 個影格選取一個影格
    select='not(mod(n\,100))'
    
  • 僅選取包含在 10-20 時間間隔內的影格
    select=between(t\,10\,20)
    
  • 僅選取包含在 10-20 時間間隔內的 I 影格
    select=between(t\,10\,20)*eq(pict_type\,I)
    
  • 選取最小距離為 10 秒的影格
    select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
    
  • 使用 aselect 僅選取樣本數 > 100 的音訊影格
    aselect='gt(samples_n\,100)'
    
  • 建立第一個場景的馬賽克
    ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
    

    scene 與介於 0.3 和 0.5 之間的值進行比較通常是明智的選擇。

  • 將偶數和奇數影格發送到不同的輸出,並將它們組合起來
    select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
    
  • 從使用入點和出點但來源檔案並非僅限內部影格的 ffconcat 檔案中選取有用的影格。
    ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
    

46.18 sendcmd, asendcmd

將命令發送到濾鏡圖中的濾鏡。

這些濾鏡讀取要發送到濾鏡圖中其他濾鏡的命令。

sendcmd 必須插入在兩個視訊濾鏡之間,asendcmd 必須插入在兩個音訊濾鏡之間,但除此之外,它們的作用方式相同。

指令的規格可以使用 commands 選項在篩選器引數中提供,或者在 filename 選項指定的文件中提供。

這些濾鏡接受以下選項

commands, c

設定要讀取並傳送到其他篩選器的指令。

filename, f

設定要讀取並傳送到其他篩選器的指令的檔案名稱。

46.18.1 指令語法

指令描述包含一系列時間間隔規格,其中包含當與該間隔相關的特定事件發生時要執行的指令列表。發生的事件通常是當前影格時間進入或離開給定的時間間隔。

間隔由以下語法指定

START[-END] COMMANDS;

時間間隔由 STARTEND 時間指定。END 是可選的,預設為最大時間。

如果當前影格時間包含在間隔 [START, END) 內,則認為它在指定的間隔內,也就是說,當時間大於或等於 START 且小於 END 時。

COMMANDS 包含一個或多個指令規格的序列,以逗號 "," 分隔,與該間隔相關。指令規格的語法由下式給出

[FLAGS] TARGET COMMAND ARG

FLAGS 是可選的,指定與時間間隔相關的事件類型,這些事件啟用發送指定的指令,並且必須是由 "+" 或 "|" 分隔並用 "[" 和 "]" 括起來的非空識別符標誌序列。

以下標誌被識別

enter

當前影格時間戳記進入指定的間隔時,會發送指令。換句話說,當前一個影格時間戳記不在給定間隔內,而當前影格時間戳記在給定間隔內時,會發送指令。

leave

當前影格時間戳記離開指定的間隔時,會發送指令。換句話說,當前一個影格時間戳記在給定間隔內,而當前影格時間戳記不在給定間隔內時,會發送指令。

expr(表達式)

指令 ARG 被解釋為表達式,表達式的結果會作為 ARG 傳遞。

表達式通過 eval API 評估,可以包含以下常數

POS

影格在檔案中的原始位置,如果當前影格未定義,則為未定義。已棄用,請勿使用。

PTS

輸入中的簡報時間戳記。

N

影片或音訊的輸入影格計數,從 0 開始。

T

當前影格的時間,以秒為單位。

TS

當前指令間隔的開始時間,以秒為單位。

TE

當前指令間隔的結束時間,以秒為單位。

TI

當前指令間隔的內插時間,TI = (T - TS) / (TE - TS)。

W

影片影格寬度。

H

影片影格高度。

如果未指定 FLAGS,則假定預設值為 [enter]

TARGET 指定指令的目標,通常是篩選器類別的名稱或特定的篩選器實例名稱。

COMMAND 指定目標篩選器的指令名稱。

ARG 是可選的,指定給定 COMMAND 的可選引數列表。

在一個間隔規格和另一個間隔規格之間,會忽略空白字元或以 # 開頭直到行尾的字元序列,並且可以用於註解。

以下是指令規格語法的簡化 BNF 描述

COMMAND_FLAG  ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND       ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS      ::= COMMAND [,COMMANDS]
INTERVAL      ::= START[-END] COMMANDS
INTERVALS     ::= INTERVAL[;INTERVALS]

46.18.2 範例

  • 在第 4 秒指定音訊速度變更
    asendcmd=c='4.0 atempo tempo 1.5',atempo
    
  • 目標為特定的篩選器實例
    asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
    
  • 在檔案中指定 drawtext 和 hue 指令的列表。
    # show text in the interval 5-10
    5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
             [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
    
    # desaturate the image in the interval 15-20
    15.0-20.0 [enter] hue s 0,
              [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
              [leave] hue s 1,
              [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
    
    # apply an exponential saturation fade-out effect, starting from time 25
    25 [enter] hue s exp(25-t)
    

    允許讀取和處理儲存在 test.cmd 檔案中的上述指令列表的濾鏡圖,可以使用以下方式指定

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
    

46.19 setpts, asetpts

變更輸入影格的 PTS(演示時間戳記)。

setpts 適用於影片影格,asetpts 適用於音訊影格。

此濾波器接受以下選項

expr(表達式)

針對每個影格評估以建構其時間戳記的表達式。

表達式通過 eval API 評估,可以包含以下常數

FRAME_RATE, FR

影格率,僅針對恆定影格率影片定義

PTS

輸入中的演示時間戳記

N

影片的輸入影格計數或已消耗樣本的數量,不包括音訊的當前影格,從 0 開始。

NB_CONSUMED_SAMPLES

已消耗樣本的數量,不包括當前影格(僅限音訊)

NB_SAMPLES, S

當前影格中的樣本數(僅限音訊)

SAMPLE_RATE, SR

音訊取樣率。

STARTPTS

第一個影格的 PTS。

STARTT

第一個影格的時間,以秒為單位

INTERLACED

指示當前影格是否為交錯式。

T

當前影格的時間,以秒為單位

POS

影格在檔案中的原始位置,如果當前影格未定義,則為未定義;已棄用,請勿使用

PREV_INPTS

前一個輸入 PTS。

PREV_INT

先前的輸入時間,以秒為單位

PREV_OUTPTS

前一個輸出 PTS。

PREV_OUTT

先前的輸出時間,以秒為單位

RTCTIME

微秒為單位的即時時鐘 (RTC) 時間。此功能已棄用,請改用 time(0)。

RTCSTART

電影開始時的即時時鐘 (RTC) 時間,以微秒為單位。

TB

輸入時間戳記的時基。

T_CHANGE

套用指令後的第一個影格的時間,或如果沒有指令,則為第一個影格的時間。

46.19.1 範例

  • 從零開始計數 PTS
    setpts=PTS-STARTPTS
    
  • 套用快動作效果
    setpts=0.5*PTS
    
  • 套用慢動作效果
    setpts=2.0*PTS
    
  • 設定每秒 25 個影格的固定速率
    setpts=N/(25*TB)
    
  • 套用 +/-100 TB 單位的隨機抖動效果
    setpts=PTS+randomi(0, -100\,100)
    
  • 設定固定速率 25 fps,帶有一些抖動
    setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
    
  • 將 10 秒的偏移量套用到輸入 PTS
    setpts=PTS+10/TB
    
  • 從「即時來源」產生時間戳記,並重新定位到目前的時間基底
    setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
    
  • 通過計數樣本產生時間戳記
    asetpts=N/SR/TB
    

46.19.2 指令

這兩個篩選器都支援以上所有選項作為 指令

46.20 setrange

強制輸出影片影格的色彩範圍。

setrange 篩選器標記輸出影格的色彩範圍屬性。它不會變更輸入影格,而僅設定對應的屬性,這會影響後續篩選器如何處理影格。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

range

可用的值為

auto

保持相同的色彩範圍屬性。

unspecified, unknown

將色彩範圍設定為未指定。

limited, tv, mpeg

將色彩範圍設定為受限。

full, pc, jpeg

將色彩範圍設定為完整。

46.21 settb, asettb

設定用於輸出影格時間戳記的時間基底。它主要用於測試時間基底配置。

它接受以下參數

expr, tb

評估為輸出時間基底的表達式。

tb 的值是表示有理數的算術表達式。表達式可以包含常數 "AVTB"(預設時間基底)、"intb"(輸入時間基底)和 "sr"(取樣率,僅限音訊)。預設值為 "intb"。

46.21.1 範例

  • 將時間基底設定為 1/25
    settb=expr=1/25
    
  • 將時間基底設定為 1/10
    settb=expr=0.1
    
  • 將時間基底設定為 1001/1000
    settb=1+0.001
    
  • 將時間基底設定為 2*intb
    settb=2*intb
    
  • 設定預設時間基底值
    settb=AVTB
    

46.22 showcqt

使用 Brown-Puckette 恆定 Q 轉換演算法將輸入音訊轉換為代表頻譜對數的影片輸出,並使用直接頻域係數計算(但轉換本身並非真正的恆定 Q,而是 Q 因子實際上是可變/鉗位的),並使用音樂音調音階,從 E0 到 D#10。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的影片大小。它必須是偶數。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為 1920x1080

fps, rate, r

設定輸出影格率。預設值為 25

bar_h

設定長條圖高度。它必須是偶數。預設值為 -1,會自動計算長條圖高度。

axis_h

設定軸高度。它必須是偶數。預設值為 -1,會自動計算軸高度。

sono_h

設定聲譜圖高度。它必須是偶數。預設值為 -1,會自動計算聲譜圖高度。

fullhd

設定 fullhd 解析度。此選項已棄用,請改用 sizes。預設值為 1

sono_v, volume

指定聲譜圖音量表達式。它可以包含變數

bar_v

bar_v 評估的表達式

frequency, freq, f

評估的頻率

timeclamp, tc

timeclamp 選項的值

和函數

a_weighting(f)

等響度 A 加權

b_weighting(f)

等響度 B 加權

c_weighting(f)

等響度 C 加權。

預設值為 16

bar_v, volume2

指定長條圖音量表達式。它可以包含變數

sono_v

sono_v 評估的表達式

frequency, freq, f

評估的頻率

timeclamp, tc

timeclamp 選項的值

和函數

a_weighting(f)

等響度 A 加權

b_weighting(f)

等響度 B 加權

c_weighting(f)

等響度 C 加權。

預設值為 sono_v

sono_g, gamma

指定聲譜圖伽瑪值。較低的伽瑪值使頻譜對比更強,較高的伽瑪值使頻譜具有更大的範圍。預設值為 3。可接受的範圍是 [1, 7]

bar_g, gamma2

指定長條圖伽瑪值。預設值為 1。可接受的範圍是 [1, 7]

bar_t

指定長條圖透明度級別。較低的值使長條圖更清晰。預設值為 1。可接受的範圍是 [0, 1]

timeclamp, tc

指定轉換時間鉗位。在低頻率下,時域準確度和頻域準確度之間需要權衡。如果時間鉗位較低,則時域中的事件會更準確地表示(例如快速低音鼓),否則頻域中的事件會更準確地表示(例如低音吉他)。可接受的範圍是 [0.002, 1]。預設值為 0.17

makeup

以秒為單位設定起音時間。預設值為 0(停用)。否則,它會通過在時域中套用非對稱視窗化來限制未來的樣本,這在需要低延遲時很有用。可接受的範圍是 [0, 1]

basefreq

指定轉換基準頻率。預設值為 20.01523126408007475,這是低於 E0 50 音分的頻率。可接受的範圍是 [10, 100000]

endfreq

指定轉換結束頻率。預設值為 20495.59681441799654,這是高於 D#10 50 音分的頻率。可接受的範圍是 [10, 100000]

coeffclamp

此選項已棄用並被忽略。

tlength

指定時域中的轉換長度。使用此選項可控制每個頻率樣本的時域和頻域之間的準確性權衡。它可以包含變數

frequency, freq, f

評估的頻率

timeclamp, tc

timeclamp 選項的值。

預設值為 384*tc/(384+tc*f)

count

指定每個影片影格的轉換計數。預設值為 6。可接受的範圍是 [1, 30]

fcount

指定每個像素的轉換計數。預設值為 0,這會使其自動計算。可接受的範圍是 [0, 10]

fontfile

指定用於 freetype 的字型檔案,以繪製軸。如果未指定,則使用嵌入式字型。請注意,使用字型檔案或嵌入式字型進行繪製,尚未實現自訂 basefreqendfreq,請改用 axisfile 選項。

font

指定 fontconfig 模式。此選項的優先順序低於 fontfilepattern 中的 : 可以替換為 |,以避免不必要的跳脫字元。

fontcolor

指定字型顏色表達式。這是應傳回整數值 0xRRGGBB 的算術表達式。它可以包含變數

frequency, freq, f

評估的頻率

timeclamp, tc

timeclamp 選項的值

和函數

midi(f)

頻率 f 的 midi 數字,一些 midi 數字:E0(16)、C1(24)、C2(36)、A4(69)

r(x), g(x), b(x)

強度 x 的紅色、綠色和藍色值。

預設值為 st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1))

axisfile

指定影像檔案以繪製軸。此選項會覆寫 fontfilefontcolor 選項。

axis, text

啟用/停用繪製文字到軸。如果設定為 0,則會停用繪製到軸,並忽略 fontfileaxisfile 選項。預設值為 1

csp

設定色彩空間。接受的值為

unspecified

未指定(預設)

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

bt2020ncl

具有非恆定亮度的 BT.2020

cscheme

設定頻譜圖配色方案。這是浮點數值列表,格式為 left_r|left_g|left_b|right_r|right_g|right_b。預設值為 1|0.5|0|0|0.5|1

46.22.1 範例

  • 在顯示頻譜時播放音訊
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
    
  • 與上述相同,但影格率為 30 fps
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
    
  • 以 1280x720 播放
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
    
  • 停用聲譜圖顯示
    sono_h=0
    
  • A1 及其諧波:A1、A2、(接近)E3、A3
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt [out0]'
    
  • 與上述相同,但在頻域中具有更高的準確度
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
    
  • 自訂音量
    bar_v=10:sono_v=bar_v*a_weighting(f)
    
  • 自訂伽瑪值,現在頻譜與振幅呈線性關係。
    bar_g=2:sono_g=2
    
  • 自訂 tlength 方程式
    tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
    
  • 自訂字型顏色和字型檔案,C 音符為綠色,其他音符為藍色
    fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
    
  • 使用 fontconfig 的自訂字型
    font='Courier New,Monospace,mono|bold'
    
  • 使用影像檔案的自訂軸的自訂頻率範圍
    axisfile=myaxis.png:basefreq=40:endfreq=10000
    

46.23 showcwt

使用連續小波轉換和 Morlet 小波將輸入音訊轉換為代表頻譜的影片輸出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的影片大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為 640x512

速率,r

設定輸出影格率。預設值為 25

scale

設定使用的頻率比例。允許的值為

linear
log
bark
mel
erbs
sqrt
cbrt
qdrt
fm

預設值為 linear

iscale

設定使用的強度比例。允許的值為

linear
log
sqrt
cbrt
qdrt

預設值為 log

min

設定輸出中將使用的最小頻率。預設值為 20 Hz。

max

設定輸出中將使用的最大頻率。預設值為 20000 Hz。實際頻率上限取決於輸入音訊的取樣率,並且當設定為大於奈奎斯特頻率的值時,將強制執行此值。

imin

設定輸出中將使用的最小強度。

imax

設定輸出中將使用的最大強度。

logb

將計算出的幅度值映射到像素值時,設定亮度強度的對數基底。允許的範圍是從 01。預設值為 0.0001

deviation

設定頻率偏差。小於 1 的值更注重頻率,而大於 1 的值更注重時間。允許的範圍是從 010。預設值為 1

pps

設定每秒每列的像素輸出數。允許的範圍是從 11024。預設值為 64

level_in

設定輸出視覺模式。允許的值為

magnitude

顯示幅度。

phase

phase

magphase

顯示幅度和相位組合。幅度映射到亮度,相位映射到顏色。

channel

colorchan

stereo

colorediff

預設值為 magnitude

slide

設定輸出滑動方法。允許的值為

取代
scroll(捲動)
frame
slide

設定輸出滑動方法的方向方法。允許的值為

lr

從左到右的方向。

rl

rl

ud

du

none

scroll

replace

bar

rotation

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

46.24 showfreqs

將輸入音訊轉換為代表音訊功率譜的視訊輸出。Y 軸為音訊振幅,X 軸為頻率。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定視訊尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊尺寸」章節(ffmpeg-utils)。預設值為 1024x512

速率,r

設定視訊速率。預設值為 25

level_in

設定顯示模式。此設定決定每個頻率區間的呈現方式。

它接受以下值

line
bar
dot

預設值為 bar

ascale

設定振幅比例。

它接受以下值

lin

線性尺度。

sqrt

平方根尺度。

cbrt

立方根尺度。

log

對數尺度。

預設值為 log

fscale

設定頻率尺度。

它接受以下值

lin

線性尺度。

log

對數尺度。

rlog

反向對數尺度。

預設值為 lin

win_size

設定視窗大小。允許範圍為 16 到 65536。

預設值為 2048

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hanning

overlap

設定視窗重疊率。範圍為 [0, 1]。預設值為 1,表示將選取所選視窗函數的最佳重疊率。

平均

設定時間平均。設定為 0 將顯示當前最大峰值。預設值為 1,表示停用時間平均。

顏色

指定以空格或「|」分隔的顏色列表,這些顏色將用於繪製聲道頻率。無法辨識或遺失的顏色將替換為白色。

cmode

設定聲道顯示模式。

它接受以下值

combined
separate

預設值為 combined

minamp

設定 log 振幅縮放器中使用的最小振幅。

data

設定資料顯示模式。

它接受以下值

magnitude
phase
delay

預設值為 magnitude

channels

設定處理音訊時要使用的聲道。預設情況下,將處理所有聲道。

46.25 showspatial

將立體聲輸入音訊轉換為視訊輸出,以表示兩個聲道之間的空間關係。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊尺寸」章節(ffmpeg-utils)。預設值為 512x512

win_size

設定視窗大小。允許範圍為 102465536。預設大小為 4096

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

速率,r

設定輸出影格率。

46.26 showspectrum

將輸入音訊轉換為視訊輸出,以表示音訊頻譜。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的影片大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為 640x512

slide

指定頻譜應如何沿著視窗滑動。

它接受以下值

replace

樣本到達右側時,從左側重新開始

scroll

樣本從右向左滾動

fullframe

僅當樣本到達右側時才產生影格

rscroll

樣本從左向右滾動

lreplace

樣本到達左側時,從右側重新開始

預設值為 replace

level_in

指定顯示模式。

它接受以下值

combined

所有聲道都顯示在同一行中

separate

所有聲道都顯示在不同的行中

預設值為「combined」。

color

指定顯示色彩模式。

它接受以下值

channel

每個聲道都以不同的顏色顯示

intensity

每個聲道都使用相同的配色方案顯示

rainbow

每個聲道都使用彩虹配色方案顯示

moreland

每個聲道都使用 moreland 配色方案顯示

nebulae

每個聲道都使用 nebulae 配色方案顯示

fire

每個聲道都使用 fire 配色方案顯示

fiery

每個聲道都使用 fiery 配色方案顯示

fruit

每個聲道都使用 fruit 配色方案顯示

cool

每個聲道都使用 cool 配色方案顯示

magma

每個聲道都使用 magma 配色方案顯示

green

每個聲道都使用 green 配色方案顯示

viridis

每個聲道都使用 viridis 配色方案顯示

plasma

每個聲道都使用 plasma 配色方案顯示

cividis

每個聲道都使用 cividis 配色方案顯示

terrain

每個聲道都使用 terrain 配色方案顯示

預設值為「channel」。

scale

指定用於計算強度色彩值的尺度。

它接受以下值

lin

linear

sqrt

平方根,預設值

cbrt

立方根

log

logarithmic

4thrt

4 次方根

5thrt

5 次方根

預設值為「sqrt」。

fscale

指定頻率尺度。

它接受以下值

lin

linear

log

logarithmic

預設值為「lin」。

saturation

設定顯示顏色的飽和度修飾符。負值提供替代配色方案。0 表示完全沒有飽和度。飽和度必須在 [-10.0, 10.0] 範圍內。預設值為 1

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

orientation

設定時間與頻率軸的方向。可以是 verticalhorizontal。預設值為 vertical

overlap

設定重疊視窗的比率。預設值為 0。當值為 1 時,重疊率會設定為目前使用的特定視窗函數的建議大小。

gain

設定用於計算強度色彩值的尺度增益。預設值為 1

data

設定要顯示的資料。可以是 magnitude(預設值)、phase 或解包裹相位:uphase

rotation

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

start

設定開始頻率,從此頻率開始顯示頻譜圖。預設值為 0

stop

設定停止頻率,頻譜圖顯示到此頻率。預設值為 0

fps (幀率)

設定影格率上限。預設值為 auto,無限制。

legend

繪製時間軸和頻率軸以及圖例。預設為停用。

drange

設定用於計算強度色彩值的動態範圍。預設值為 120 dBFS。允許範圍為 10 到 200。

限制

設定輸入音訊樣本音量的上限,單位為 dBFS。預設值為 0 dBFS。允許範圍為 -100 到 100。

opacity

設定在使用具有 alpha 元件的像素格式輸出時的不透明度強度。

用法與 showwaves 濾鏡非常相似;請參閱該章節中的範例。

46.26.1 範例

  • 具有對數色彩縮放的大視窗
    showspectrum=s=1280x480:scale=log
    
  • 使用 ffplay 的彩色和滑動頻譜的完整聲道範例
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
    

46.27 showspectrumpic

將輸入音訊轉換為單個視訊影格,以表示音訊頻譜。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊尺寸」章節(ffmpeg-utils)。預設值為 4096x2048

level_in

指定顯示模式。

它接受以下值

combined

所有聲道都顯示在同一行中

separate

所有聲道都顯示在不同的行中

預設值為「combined」。

color

指定顯示色彩模式。

它接受以下值

channel

每個聲道都以不同的顏色顯示

intensity

每個聲道都使用相同的配色方案顯示

rainbow

每個聲道都使用彩虹配色方案顯示

moreland

每個聲道都使用 moreland 配色方案顯示

nebulae

每個聲道都使用 nebulae 配色方案顯示

fire

每個聲道都使用 fire 配色方案顯示

fiery

每個聲道都使用 fiery 配色方案顯示

fruit

每個聲道都使用 fruit 配色方案顯示

cool

每個聲道都使用 cool 配色方案顯示

magma

每個聲道都使用 magma 配色方案顯示

green

每個聲道都使用 green 配色方案顯示

viridis

每個聲道都使用 viridis 配色方案顯示

plasma

每個聲道都使用 plasma 配色方案顯示

cividis

每個聲道都使用 cividis 配色方案顯示

terrain

每個聲道都使用 terrain 配色方案顯示

預設值為「intensity」。

scale

指定用於計算強度色彩值的尺度。

它接受以下值

lin

linear

sqrt

平方根,預設值

cbrt

立方根

log

logarithmic

4thrt

4 次方根

5thrt

5 次方根

預設值為「log」。

fscale

指定頻率尺度。

它接受以下值

lin

linear

log

logarithmic

預設值為「lin」。

saturation

設定顯示顏色的飽和度修飾符。負值提供替代配色方案。0 表示完全沒有飽和度。飽和度必須在 [-10.0, 10.0] 範圍內。預設值為 1

win_func

設定視窗函數。

它接受以下值

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

orientation

設定時間與頻率軸的方向。可以是 verticalhorizontal。預設值為 vertical

gain

設定用於計算強度色彩值的尺度增益。預設值為 1

legend

繪製時間軸和頻率軸以及圖例。預設為啟用。

rotation

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

start

設定開始頻率,從此頻率開始顯示頻譜圖。預設值為 0

stop

設定停止頻率,頻譜圖顯示到此頻率。預設值為 0

drange

設定用於計算強度色彩值的動態範圍。預設值為 120 dBFS。允許範圍為 10 到 200。

限制

設定輸入音訊樣本音量的上限,單位為 dBFS。預設值為 0 dBFS。允許範圍為 -100 到 100。

opacity

設定在使用具有 alpha 元件的像素格式輸出時的不透明度強度。

46.27.1 範例

  • 使用 ffmpeg 在 1024x1024 圖片中擷取整個音軌的音訊頻譜圖
    ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
    

46.28 showvolume

將輸入音訊音量轉換為視訊輸出。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

速率,r

設定視訊速率。

b

設定邊框寬度,允許範圍為 [0, 5]。預設值為 1。

w

設定聲道寬度,允許範圍為 [80, 8192]。預設值為 400。

h

設定聲道高度,允許範圍為 [1, 900]。預設值為 20。

f

設定淡化,允許範圍為 [0, 1]。預設值為 0.95。

c

設定音量顏色表達式。

表達式可以使用以下變數

VOLUME

聲道目前的 dB 最大音量。

PEAK

目前的峰值。

CHANNEL

目前的聲道號碼,從 0 開始。

t

如果設定,則顯示聲道名稱。預設為啟用。

v

如果設定,則顯示音量值。預設為啟用。

傳遞第二個輸入。

設定方向,可以是水平:h 或垂直:v,預設值為 h

s

設定步進大小,允許範圍為 [0, 5]。預設值為 0,表示停用步進。

p

設定背景不透明度,允許範圍為 [0, 1]。預設值為 0。

m

設定測量模式,可以是峰值:p 或均方根值:r,預設值為 p

ds

設定顯示尺度,可以是線性:lin 或對數:log,預設值為 lin

dm

以秒為單位。如果設定為 > 0,則顯示前幾秒鐘最大音量值的線條。預設為停用:0.

dmc

最大值線條的顏色。當 dm 選項設定為 > 0 時使用。預設值為:orange

46.29 showwaves

將輸入音訊轉換為視訊輸出,以表示樣本波形。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊尺寸」章節(ffmpeg-utils)。預設值為 600x240

level_in

設定顯示模式。

可用的值為

point

為每個樣本繪製一個點。

line

為每個樣本繪製一條垂直線。

p2p

為每個樣本繪製一個點,並在它們之間繪製一條線。

cline

為每個樣本繪製一條置中的垂直線。

預設值為 point

n

設定在同一列印出的樣本數量。較大的值會降低影格率。必須為正整數。只有在未明確指定 rate 值時,才能設定此選項。

速率,r

設定(近似)輸出影格率。這通過設定選項 n 來完成。預設值為「25」。

split_channels

設定是否應分別繪製聲道或重疊繪製。預設值為 0。

顏色

設定以「|」分隔的顏色,這些顏色將用於繪製每個聲道。

scale

設定振幅比例。

可用的值為

lin

線性。

log

對數。

sqrt

平方根。

cbrt

立方根。

預設為線性。

draw

設定繪製模式。這對於設定較高的 n 值非常有用。

可用的值為

scale

縮放每個繪製樣本的像素值。

full

直接繪製每個樣本。

預設值為 scale

46.29.1 範例

  • 同時輸出輸入檔案音訊和對應的視訊表示
    amovie=a.mp3,asplit[out0],showwaves[out1]
    
  • 建立合成訊號並使用 showwaves 顯示,強制影格率為每秒 30 個影格
    aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
    

46.30 showwavespic

將輸入音訊轉換為單個視訊影格,以表示樣本波形。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

size, s

指定輸出的視訊尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「視訊尺寸」章節(ffmpeg-utils)。預設值為 600x240

split_channels

設定是否應分別繪製聲道或重疊繪製。預設值為 0。

顏色

設定以「|」分隔的顏色,這些顏色將用於繪製每個聲道。

scale

設定振幅比例。

可用的值為

lin

線性。

log

對數。

sqrt

平方根。

cbrt

立方根。

預設為線性。

draw

設定繪製模式。

可用的值為

scale

縮放每個繪製樣本的像素值。

full

直接繪製每個樣本。

預設值為 scale

filter

設定濾鏡模式。

可用的值為

average

對每個繪製樣本使用平均樣本值。

peak

對每個繪製樣本使用峰值樣本值。

預設值為 average

46.30.1 範例

  • 使用 ffmpeg 在 1024x800 圖片中擷取整個音軌的波形聲道分割表示
    ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
    

46.31 sidedata, asidedata

刪除影格邊數據,或根據影格邊數據選取影格。

此濾波器接受以下選項

level_in

設定濾鏡的操作模式。

可以是下列其中之一:

select

選取每個具有 type 邊數據的影格。

delete

刪除 type 的邊數據。如果未設定 type,則刪除影格中的所有邊數據。

type

設定所有模式使用的邊數據類型。必須為 select 模式設定。關於影格邊數據類型列表,請參閱 libavutil/frame.h 中的 AVFrameSideDataType 列舉。例如,若要選擇 AV_FRAME_DATA_PANSCAN 邊數據,您必須指定 PANSCAN

46.32 spectrumsynth

從 2 個輸入視訊頻譜合成音訊,第一個輸入串流表示隨時間變化的振幅,第二個輸入串流表示隨時間變化的相位。濾鏡會將視訊中顯示的頻域轉換回音訊輸出中呈現的時域。

此濾鏡主要用於反轉處理過的 showspectrum 濾鏡輸出,但也可用於從其他頻譜圖合成聲音。但在這種情況下,如果相位數據不可用,則結果會很差,因為在這種情況下需要重新建立相位數據,通常只是從隨機雜訊中重新建立。為了獲得最佳結果,請對振幅視訊使用僅灰階輸出(showspectrum 濾鏡中的 channel 色彩模式)和 log 尺度,對相位視訊使用 lin 尺度。若要產生相位,對於第二個視訊,請使用 data 選項。輸入視訊通常應使用 fullframe 滑動模式,因為這樣可以節省解碼視訊所需的資源。

壓縮器主要用於降低訊號的動態範圍。 尤其是現代音樂大多以高比率壓縮,以提高整體響度。 這樣做是為了獲得聽眾的最大關注度,使聲音「更飽滿」,並為音軌帶來更多「力量」。 如果訊號壓縮過多,之後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞音軌)。 正確的壓縮是獲得專業聲音的關鍵,也是混音和母帶後期製作的高超藝術。 由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

sample_rate

指定輸出音訊的取樣率,從中產生頻譜的音訊取樣率可能不同。

channels

設定輸入視訊頻譜中表示的聲道數量。

scale

設定產生振幅輸入頻譜時使用的尺度。可以是 linlog。預設值為 log

slide

設定產生輸入頻譜時使用的滑動模式。可以是 replacescrollfullframerscroll。預設值為 fullframe

win_func

設定用於重新合成的視窗函數。

overlap

設定視窗重疊率。範圍為 [0, 1]。預設值為 1,表示將選取所選視窗函數的最佳重疊率。

orientation

設定輸入視訊的方向。可以是 verticalhorizontal。預設值為 vertical

46.32.1 範例

  • 首先從音訊建立振幅和相位視訊,假設音訊為取樣率 44100 的立體聲,然後使用 spectrumsynth 將視訊重新合成回音訊
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
    ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
    

46.33 split, asplit

將輸入分割成多個相同的輸出。

asplit 適用於音訊輸入,split 適用於視訊。

此濾鏡接受單個參數,該參數指定輸出數量。如果未指定,則預設為 2。

46.33.1 範例

  • 從同一個輸入建立兩個不同的輸出
    [in] split [out0][out1]
    
  • 若要建立 3 個或更多輸出,您需要指定輸出數量,例如在
    [in] asplit=3 [out0][out1][out2]
    
  • 從同一個輸入建立兩個不同的輸出,一個裁剪,另一個填充
    [in] split [splitout1][splitout2];
    [splitout1] crop=100:100:0:0    [cropout];
    [splitout2] pad=200:200:100:100 [padout];
    
  • 使用 ffmpeg 建立輸入音訊的 5 個副本
    ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
    

46.34 zmq, azmq

接收透過 libzmq 用戶端傳送的命令,並將其轉發到濾鏡圖中的濾鏡。

zmqazmq 作為直通濾鏡工作。zmq 必須插入兩個視訊濾鏡之間,azmq 必須插入兩個音訊濾鏡之間。兩者都能夠將訊息傳送到任何濾鏡類型。

若要啟用這些濾鏡,您需要安裝 libzmq 程式庫和標頭,並使用 --enable-libzmq 配置 FFmpeg。

關於 libzmq 的更多資訊,請參閱:http://www.zeromq.org/

zmqazmq 濾鏡作為 libzmq 伺服器工作,該伺服器接收透過 bind_address(或縮寫「b」)選項定義的網路介面傳送的訊息。此選項的預設值為 tcp://127.0.0.1:5555。您可能需要根據您的需求更改此值,但不要忘記逸出任何「:」符號(請參閱 濾鏡圖逸出)。

接收到的訊息必須採用以下格式

TARGET COMMAND [ARG]

TARGET 指定命令的目標,通常是濾鏡類別的名稱或特定濾鏡實例名稱。預設濾鏡實例名稱使用模式「Parsed_<filter_name>_<index>」,但您可以使用「filter_name@id」語法覆寫此模式(請參閱 濾鏡圖語法)。

COMMAND 指定目標篩選器的指令名稱。

ARG 是可選的,並指定給定 COMMAND 的可選參數列表。

接收到訊息後,會處理該訊息,並將對應的命令注入到濾鏡圖中。根據結果,濾鏡會向用戶端傳送回覆,並採用以下格式

ERROR_CODE ERROR_REASON
MESSAGE

MESSAGE 是可選的。

46.34.1 範例

查看 tools/zmqsend 以取得 zmq 用戶端的範例,該用戶端可用於傳送由這些濾鏡處理的命令。

考慮由 ffplay 產生的以下濾鏡圖。在此範例中,最後一個 overlay 濾鏡具有實例名稱。所有其他濾鏡都將具有預設實例名稱。

ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red  [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l]   overlay     [bg+l];
[bg+l][r] overlay@my=x=100 "

若要更改視訊左側的顏色,可以使用以下命令

echo Parsed_color_0 c yellow | tools/zmqsend

若要更改右側

echo Parsed_color_1 c pink | tools/zmqsend

若要更改右側的位置

echo overlay@my x 150 | tools/zmqsend

47 多媒體來源

以下是目前可用的多媒體來源的描述。

47.1 amovie

這與 movie 來源相同,只是它預設選取音訊串流。

47.2 avsynctest

產生音訊/視訊同步測試。

產生的串流會週期性地顯示閃爍的影片幀並在音訊中發出嗶聲。這對於檢查 A/V 同步問題非常有用。

它接受以下選項

size, s

設定輸出影片尺寸。預設值為 hd720

影格率, fr

設定輸出影片影格率。預設值為 30

取樣率, sr

設定輸出音訊取樣率。預設值為 44100

amplitude, a

設定輸出音訊嗶聲振幅。預設值為 0.7

週期, p

設定輸出音訊嗶聲週期,單位為秒。預設值為 3

延遲, dl

設定輸出影片閃爍延遲,單位為影格數。預設值為 0

循環, c

啟用影片延遲循環,預設為停用。

設定對比度。 預設值為 33。允許範圍介於 0 和 100 之間。

設定串流輸出持續時間。預設持續時間為無限。

fg, bg, ag

設定前景/背景/額外顏色。

47.2.1 指令

此來源支援上述某些選項作為 commands(命令)

47.3 movie

從影片容器讀取音訊和/或影片串流。

它接受以下參數

filename

要讀取的資源名稱(不一定是檔案;也可能是一個裝置或透過某些協定存取的串流)。

格式名稱, f

指定要讀取的影片所採用的格式,可以是容器名稱或輸入裝置。如果未指定,則會從 movie_name 推測格式或透過探測來判斷。

搜尋點, sp

指定搜尋點,單位為秒。影格將從此搜尋點開始輸出。此參數使用 av_strtod 進行評估,因此數值可以加上 IS 後綴。預設值為 "0"。

串流, s

指定要讀取的串流。可以指定多個串流,以 "+" 分隔。來源將會有多個輸出,順序相同。語法在 ffmpeg 手冊中的「串流指定器」章節中說明。兩個特殊名稱 "dv" 和 "da" 分別指定預設(最適合的)影片和音訊串流。預設值為 "dv",如果篩選器被稱為 "amovie",則預設值為 "da"。

stream_index, si

指定要讀取的影片串流索引。如果值為 -1,將自動選擇最合適的影片串流。預設值為 "-1"。已棄用。如果篩選器被稱為 "amovie",它將選擇音訊而不是影片。

loop

指定依序讀取串流的次數。如果值為 0,串流將無限循環。預設值為 "1"。

請注意,當影片循環播放時,來源時間戳記不會更改,因此它會產生非單調遞增的時間戳記。

不連續性

指定影格之間的時間差,超過此時間差的點將被視為時間戳記不連續點,並透過調整後續時間戳記來移除。

解碼執行緒

指定用於解碼的執行緒數量

格式選項

指定已開啟檔案的格式選項。格式選項可以指定為以 ':' 分隔的 key=value 鍵值對列表。以下範例示範如何新增 protocol_whitelist 和 protocol_blacklist 選項

ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"

它允許在篩選器圖的主要輸入之上疊加第二個影片,如下圖所示

input -----------> deltapts0 --> overlay --> output
                                    ^
                                    |
movie --> scale--> deltapts1 -------+

47.3.1 範例

  • 從 AVI 檔案 in.avi 的開頭跳過 3.2 秒,並將其疊加在標記為 "in" 的輸入之上
    movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 從 video4linux2 裝置讀取,並將其疊加在標記為 "in" 的輸入之上
    movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 從 dvd.vob 讀取第一個影片串流和 ID 為 0x81 的音訊串流;影片連接到名為 "video" 的墊,音訊連接到名為 "audio" 的墊
    movie=dvd.vob:s=v:0+#0x81 [video] [audio]
    

47.3.2 指令

movie 和 amovie 皆支援以下命令

seek

使用 "av_seek_frame" 執行搜尋。語法為:seek stream_index|timestamp|flags

  • stream_index:如果 stream_index 為 -1,則會選取預設串流,並且 timestamp 會自動從 AV_TIME_BASE 單位轉換為串流特定的 time_base。
  • timestamp:以 AVStream.time_base 單位表示的時間戳記,如果未指定串流,則以 AV_TIME_BASE 單位表示。
  • flags:選取方向和搜尋模式的旗標。
get_duration

以 AV_TIME_BASE 單位取得影片持續時間。

48 外部函式庫

FFmpeg 可以連結許多外部函式庫,以新增對更多格式的支援。預設情況下未使用任何函式庫,其使用必須透過傳遞適當的旗標給 ./configure 來明確請求。

48.1 開放媒體聯盟 (AOM)

FFmpeg 可以使用 AOM 函式庫進行 AV1 解碼和編碼。

前往 http://aomedia.org/ 並按照說明安裝函式庫。然後傳遞 --enable-libaom 給 configure 以啟用它。

48.2 AMD AMF/VCE

FFmpeg 可以使用 AMD Advanced Media Framework 函式庫,在具有 Video Coding Engine (VCE) 的硬體上加速 H.264 和 HEVC(僅限 Windows)編碼。

若要啟用支援,您必須從 https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git 取得 AMF framework 標頭檔(1.4.9+ 版本)。

在系統 include 路徑中建立一個 AMF/ 目錄。將 AMF/amf/public/include/ 的內容複製到該目錄中。然後使用 --enable-amf 配置 FFmpeg。

amf 編碼器的初始化按此順序發生:1) 嘗試透過 dx11(僅限 Windows)初始化 2) 嘗試透過 dx9(僅限 Windows)初始化 3) 嘗試透過 vulkan 初始化

若要在 Linux 上使用 h.264(AMD VCE) 編碼器,需要 amdgru-pro 版本 19.20+ 和 amf-amdgpu-pro 套件(amdgru-pro 包含,但不會自動安裝)。

可以使用官方 AMD 驅動程式封存中的 amdgpu-pro-install 指令碼來安裝此驅動程式。

48.3 AviSynth

FFmpeg 可以讀取 AviSynth 指令碼作為輸入。若要啟用支援,請在安裝 AviSynth+ 提供的標頭後,傳遞 --enable-avisynth 給 configure。AviSynth+ 可以設定為僅安裝標頭,方法是將 -DHEADERS_ONLY:bool=on 傳遞給正常的 CMake 基礎建置系統,或使用提供的 GNUmakefile

對於 Windows,支援的 AviSynth 變體是 AviSynth 2.6 RC1 或更高版本(適用於 32 位元組建)和 AviSynth+ r1718 或更高版本(適用於 32 位元和 64 位元組建)。

對於 Linux、macOS 和 BSD,唯一支援的 AviSynth 變體是 AviSynth+,從 3.5 版開始。

在 2016 年,AviSynth+ 新增了對使用 GCC 建置的支援。但是,由於 Windows 呼叫慣例的特殊性,AviSynth+ 的 32 位元 GCC 組建與 FFmpeg 的典型 32 位元組建不相容。

預設情況下,FFmpeg 假設與 AviSynth+ 的 32 位元 MSVC 組建相容,因為這是最廣泛使用和根深蒂固的組建配置。使用者可以覆寫此設定,並透過在配置 FFmpeg 時將 -DAVSC_WIN32_GCC32 傳遞給 --extra-cflags 來啟用對 AviSynth+ 的 32 位元 GCC 組建的支援。

FFmpeg 的 64 位元組建不受影響,並且可以使用 AviSynth+ 的 MSVC 或 GCC 組建,而無需任何特殊旗標。

AviSynth(+) 是動態載入的。發行商可以使用 --enable-avisynth 建置 FFmpeg,而二進位檔將正常運作,無論最終使用者是否安裝了 AviSynth。如果/當最終使用者想要使用 AviSynth 指令碼時,他們可以安裝 AviSynth(+),而 FFmpeg 將能夠找到並使用它來開啟指令碼。

48.4 Chromaprint

FFmpeg 可以使用 Chromaprint 函式庫來產生音訊指紋。傳遞 --enable-chromaprint 給 configure 以啟用它。請參閱 https://acoustid.org/chromaprint

48.5 codec2

FFmpeg 可以使用 codec2 函式庫進行 codec2 解碼和編碼。目前沒有原生解碼器,因此必須使用 libcodec2 進行解碼。

前往 http://freedv.org/,下載 "Codec 2 source archive"。使用 CMake 建置和安裝。Debian 使用者可以改為安裝 libcodec2-dev 套件。安裝 libcodec2 後,您可以傳遞 --enable-libcodec2 給 configure 以啟用它。

使用 codec2 最簡單的方法是使用 .c2 檔案,因為它們包含解碼所需的模式資訊。若要編碼此類檔案,請使用 .c2 副檔名,並為 libcodec2 編碼器提供 -mode 選項:ffmpeg -i input.wav -mode 700C output.c2。播放就像 ffplay output.c2 一樣簡單。如需支援模式的列表,請執行 ffmpeg -h encoder=libcodec2。也支援原始 codec2 檔案。為了理解它們,需要將使用的模式指定為格式選項:ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav

48.6 dav1d

FFmpeg 可以使用 dav1d 函式庫進行 AV1 影片解碼。

前往 https://code.videolan.org/videolan/dav1d 並按照說明安裝函式庫。然後傳遞 --enable-libdav1d 給 configure 以啟用它。

48.7 davs2

FFmpeg 可以使用 davs2 函式庫進行 AVS2-P2/IEEE1857.4 影片解碼。

前往 https://github.com/pkuvcl/davs2 並按照說明安裝函式庫。然後傳遞 --enable-libdavs2 給 configure 以啟用它。

libdavs2 採用 GNU Public License Version 2 或更高版本(詳細資訊請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。

48.8 uavs3d

FFmpeg 可以使用 uavs3d 函式庫進行 AVS3-P2/IEEE1857.10 影片解碼。

前往 https://github.com/uavs3/uavs3d 並按照說明安裝函式庫。然後傳遞 --enable-libuavs3d 給 configure 以啟用它。

48.9 Game Music Emu

FFmpeg 可以使用 Game Music Emu 函式庫從支援的電玩遊戲音樂檔案格式讀取音訊。傳遞 --enable-libgme 給 configure 以啟用它。請參閱 https://bitbucket.org/mpyne/game-music-emu/overview

48.10 Intel QuickSync Video

FFmpeg 可以使用 Intel QuickSync Video (QSV) 來加速多種編碼解碼器的解碼和編碼。若要使用 QSV,FFmpeg 必須連結到 libmfx 分派器,它會載入實際的解碼函式庫。

分派器是開放原始碼,可以從 https://github.com/lu-zero/mfx_dispatch.git 下載。FFmpeg 需要使用 --enable-libmfx 選項進行配置,並且 pkg-config 需要能夠找到分派器的 .pc 檔案。

48.11 Kvazaar

FFmpeg 可以使用 Kvazaar 函式庫進行 HEVC 編碼。

前往 https://github.com/ultravideo/kvazaar 並按照說明安裝函式庫。然後傳遞 --enable-libkvazaar 給 configure 以啟用它。

48.12 LAME

FFmpeg 可以使用 LAME 函式庫進行 MP3 編碼。

前往 http://lame.sourceforge.net/ 並按照說明安裝函式庫。然後傳遞 --enable-libmp3lame 給 configure 以啟用它。

48.13 LCEVCdec

FFmpeg 可以使用 liblcevc_dec 函式庫在支援的位元串流上進行 LCEVC 增強層解碼。

前往 https://github.com/v-novaltd/LCEVCdec 並按照說明安裝函式庫。然後傳遞 --enable-liblcevc-dec 給 configure 以啟用它。

LCEVCdec 採用 BSD-3-Clause-Clear License 授權。

48.14 libilbc

iLBC 是一種窄頻語音編碼解碼器,Google 已將其作為 WebRTC 專案的一部分免費提供。libilbc 是 iLBC 編碼解碼器的封裝友善副本。FFmpeg 可以使用 libilbc 函式庫進行 iLBC 解碼和編碼。

前往 https://github.com/TimothyGu/libilbc 並按照說明安裝函式庫。然後傳遞 --enable-libilbc 給 configure 以啟用它。

48.15 libjxl

JPEG XL 是一種影像格式,旨在完全取代舊版 JPEG,並長期使用。請參閱 https://jpegxl.info/ 以取得更多資訊,並參閱 https://github.com/libjxl/libjxl 以取得函式庫來源。您可以傳遞 --enable-libjxl 給 configure 以啟用 libjxl 包裝器。

48.16 libvpx

FFmpeg 可以使用 libvpx 函式庫進行 VP8/VP9 解碼和編碼。

前往 http://www.webmproject.org/ 並按照說明安裝函式庫。然後傳遞 --enable-libvpx 給 configure 以啟用它。

48.17 ModPlug

FFmpeg 可以使用此函式庫(源自 Modplug-XMMS)從 MOD 類型的音樂檔案讀取。請參閱 https://github.com/Konstanty/libmodplug。傳遞 --enable-libmodplug 給 configure 以啟用它。

48.18 OpenCORE、VisualOn 和 Fraunhofer 函式庫

從 Google Android 來源衍生出來的 OpenCore、VisualOn 和 Fraunhofer 函式庫為許多音訊編碼解碼器提供編碼器。

OpenCORE 和 VisualOn 函式庫採用 Apache License 2.0 授權(詳細資訊請參閱 http://www.apache.org/licenses/LICENSE-2.0),這與 LGPL version 2.1 和 GPL version 2 不相容。您必須將 FFmpeg 的授權升級到 LGPL version 3(或者,如果您已啟用 GPL 元件,則為 GPL version 3),方法是傳遞 --enable-version3 給 configure 才能使用它。

Fraunhofer AAC 函式庫的授權與 GPL 不相容。因此,對於 GPL 組建,您必須傳遞 --enable-nonfree 給 configure 才能使用它。據我們所知,它與 LGPL 相容。

48.18.1 OpenCORE AMR

FFmpeg 可以使用 OpenCORE 函式庫進行 AMR-NB 解碼/編碼和 AMR-WB 解碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照說明安裝函式庫。然後傳遞 --enable-libopencore-amrnb 和/或 --enable-libopencore-amrwb 給 configure 以啟用它們。

48.18.2 VisualOn AMR-WB 編碼器函式庫

FFmpeg 可以使用 VisualOn AMR-WBenc 函式庫進行 AMR-WB 編碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照說明安裝函式庫。然後傳遞 --enable-libvo-amrwbenc 給 configure 以啟用它。

48.18.3 Fraunhofer AAC 函式庫

FFmpeg 可以使用 Fraunhofer AAC 函式庫進行 AAC 解碼和編碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照說明安裝函式庫。然後傳遞 --enable-libfdk-aac 給 configure 以啟用它。

48.18.4 LC3 函式庫

FFmpeg 可以使用 Google LC3 函式庫進行 LC3 解碼和編碼。

前往 https://github.com/google/liblc3/ 並按照說明安裝函式庫。然後傳遞 --enable-liblc3 給 configure 以啟用它。

48.19 OpenH264

FFmpeg 可以使用 OpenH264 函式庫進行 H.264 解碼和編碼。

前往 http://www.openh264.org/ 並按照說明安裝函式庫。然後傳遞 --enable-libopenh264 給 configure 以啟用它。

對於解碼,此函式庫比 libavcodec 中的內建解碼器更受限制;目前,此函式庫缺少對 B 影格和一些其他 main/high profile 功能的支援。(目前僅支援 constrained baseline profile 和 CABAC。)使用它主要用於測試以及利用 Cisco 的專利組合授權 (http://www.openh264.org/BINARY_LICENSE.txt)。

48.20 OpenJPEG

FFmpeg 可以使用 OpenJPEG 函式庫來解碼/編碼 J2K 影片。前往 http://www.openjpeg.org/ 以取得函式庫並按照安裝說明進行操作。若要在 FFmpeg 中啟用 OpenJPEG,請將 --enable-libopenjpeg 傳遞給 ./configure

48.21 rav1e

FFmpeg 可以透過其 C 綁定使用 rav1e (Rust AV1 編碼器) 來編碼影片。請前往 https://github.com/xiph/rav1e/ 並依照指示建置 C 程式庫。若要在 FFmpeg 中啟用 rav1e,請傳遞 --enable-librav1e./configure

48.22 SVT-AV1

FFmpeg 可以使用 Scalable Video Technology for AV1 程式庫進行 AV1 編碼。

請前往 https://gitlab.com/AOMediaCodec/SVT-AV1/ 並依照指示安裝程式庫。然後傳遞 --enable-libsvtav1 給 configure 以啟用它。

48.23 TwoLAME

FFmpeg 可以使用 TwoLAME 程式庫進行 MP2 編碼。

請前往 http://www.twolame.org/ 並依照指示安裝程式庫。然後傳遞 --enable-libtwolame 給 configure 以啟用它。

48.24 VapourSynth

FFmpeg 可以讀取 VapourSynth 腳本作為輸入。若要啟用支援,請傳遞 --enable-vapoursynth 給 configure。Vapoursynth 會透過 pkg-config 偵測。支援 42 或更新版本。請參閱 http://www.vapoursynth.com/

由於安全考量,Vapoursynth 腳本將不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,請在輸入 -i yourscript.vpy 之前新增 -f vapoursynth

48.25 x264

FFmpeg 可以使用 x264 程式庫進行 H.264 編碼。

請前往 http://www.videolan.org/developers/x264.html 並依照指示安裝程式庫。然後傳遞 --enable-libx264 給 configure 以啟用它。

x264 採用 GNU Public License Version 2 或更新版本授權 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級至 GPL 才能使用它。

48.26 x265

FFmpeg 可以使用 x265 程式庫進行 HEVC 編碼。

請前往 http://x265.org/developers.html 並依照指示安裝程式庫。然後傳遞 --enable-libx265 給 configure 以啟用它。

x265 採用 GNU Public License Version 2 或更新版本授權 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級至 GPL 才能使用它。

48.27 xavs

FFmpeg 可以使用 xavs 程式庫進行 AVS 編碼。

請前往 http://xavs.sf.net/ 並依照指示安裝程式庫。然後傳遞 --enable-libxavs 給 configure 以啟用它。

48.28 xavs2

FFmpeg 可以使用 xavs2 程式庫進行 AVS2-P2/IEEE1857.4 視訊編碼。

請前往 https://github.com/pkuvcl/xavs2 並依照指示安裝程式庫。然後傳遞 --enable-libxavs2 給 configure 以啟用它。

libxavs2 採用 GNU Public License Version 2 或更新版本授權 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級至 GPL 才能使用它。

48.29 eXtra-fast Essential Video Encoder (XEVE)

FFmpeg 可以使用 XEVE 程式庫進行 EVC 視訊編碼。

請前往 https://github.com/mpeg5/xeve 並依照指示安裝 XEVE 程式庫。然後傳遞 --enable-libxeve 給 configure 以啟用它。

48.30 eXtra-fast Essential Video Decoder (XEVD)

FFmpeg 可以使用 XEVD 程式庫進行 EVC 視訊解碼。

請前往 https://github.com/mpeg5/xevd 並依照指示安裝 XEVD 程式庫。然後傳遞 --enable-libxevd 給 configure 以啟用它。

48.31 ZVBI

ZVBI 是一個 VBI 解碼程式庫,FFmpeg 可以使用它來解碼 DVB 圖文電視頁面和 DVB 圖文電視字幕。

請前往 http://sourceforge.net/projects/zapping/ 並依照指示安裝程式庫。然後傳遞 --enable-libzvbi 給 configure 以啟用它。

49 支援的檔案格式、編解碼器或功能

您可以使用 -formats-codecs 選項來取得詳盡的清單。

49.1 檔案格式

FFmpeg 透過 libavformat 程式庫支援以下檔案格式

名稱編碼解碼註解
3dostrX
4xmX4X Technologies 格式,用於某些遊戲。
8088flex TMVX
AAXXAudible Enhanced Audio 格式,用於有聲書。
AAXAudible Format 2、3 和 4,用於有聲書。
ACT VoiceX包含 G.729 音訊
Adobe FilmstripXX
Audio IFF (AIFF)XX
American Laser Games MMX多媒體格式,用於《Mad Dog McCree》等遊戲。
3GPP AMRXX
Amazing Studio Packed Animation FileX多媒體格式,用於遊戲《Heart Of Darkness》。
Apple HTTP Live StreamingX
Artworx Data FormatX
Interplay ACMX純音訊格式,用於某些 Interplay 遊戲。
ADPX音訊格式,用於 Nintendo Gamecube。
AFCX音訊格式,用於 Nintendo Gamecube。
ADS/SS2X音訊格式,用於 PS2。
APNGXX
ASFXXAdvanced / Active Streaming Format (進階/主動串流格式)。
ASTXX音訊格式,用於 Nintendo Wii。
AVIXX
AviSynthX
AVRX音訊格式,用於 Mac。
AVSX多媒體格式,Creature Shock 遊戲使用。
Beam Software SIFFX音訊和視訊格式,Beam Software 的某些遊戲使用。
Bethesda Softworks VIDXBethesda Softworks 的某些遊戲使用。
Binary text (二進位文字)X
BinkX多媒體格式,許多遊戲使用。
Bink AudioX純音訊多媒體格式,某些遊戲使用。
Bitmap Brothers JVXZ 和 Z95 遊戲中使用。
BRPXArgonaut Games 格式。
Brute Force & IgnoranceX遊戲《Flash Traffic: City of Angels》中使用。
BFSTMX音訊格式,用於 Nintendo WiiU (基於 BRSTM)。
BRSTMX音訊格式,用於 Nintendo Wii。
BW64XBroadcast Wave 64bit (廣播波形 64 位元)。
BWFXX
codec2 (raw)XX必須提供 -mode 格式選項才能正確解碼。
codec2 (.c2 files)XX包含版本和模式資訊的標頭,簡化播放。
CRI ADXXX純音訊格式,用於家用電玩遊戲機。
CRI AIXX
CRI HCAX純音訊格式,用於家用電玩遊戲機。
Discworld II BMVX
Interplay C93XInterplay 的遊戲《Cyberia》中使用。
Delphine Software International CINX多媒體格式,Delphine Software 遊戲使用。
Digital Speech Standard (DSS) (數位語音標準 (DSS))X
CD+GX視訊格式,CD+G 卡拉 OK 光碟使用
Phantom CineX
Commodore CDXLXAmiga CD 視訊格式
Core Audio FormatXXApple Core Audio Format
CRC testing format (CRC 測試格式)X
Creative VoiceXX為 Sound Blaster Pro 建立。
CRYO APCX音訊格式,CRYO Interactive Entertainment 的某些遊戲使用。
D-Cinema audio (D-Cinema 音訊)XX
Deluxe Paint AnimationX
DCSTRX
DFAX此格式用於 Chronomaster 遊戲
DirectDraw SurfaceX
DSD Stream File (DSF) (DSD 串流檔案 (DSF))X
DV video (DV 視訊)XX
DXAX此格式用於非 Windows 版本的 Feeble Files 遊戲,以及為了搭配 ScummVM 使用而重新封裝的不同遊戲過場動畫。
Electronic Arts cdataX
Electronic Arts MultimediaX各種 EA 遊戲中使用;檔案副檔名如 WVE 和 UV2。
Ensoniq Paris Audio FileX
FFM (FFserver live feed) (FFM (FFserver 即時饋送))XX
Flash (SWF)XX
Flash 9 (AVM2)XX僅解碼嵌入式音訊。
FLI/FLC/FLX animation (FLI/FLC/FLX 動畫)X.fli/.flc 檔案
Flash Video (FLV) (Flash 視訊 (FLV))XXMacromedia Flash 視訊檔案
framecrc testing format (framecrc 測試格式)X
FunCom ISSX音訊格式,FunCom 的各種遊戲中使用,例如《The Longest Journey》。
G.723.1XX
G.726X左對齊和右對齊皆可。
G.729 BITXX
G.729 raw (G.729 原始)X
GENHX各種遊戲的音訊格式。
GIF Animation (GIF 動畫)XX
GXFXXGeneral eXchange Format SMPTE 360M (通用交換格式 SMPTE 360M),Thomson Grass Valley 播出伺服器使用。
HNMX僅支援版本 4,Cryo Interactive 的某些遊戲中使用
iCEDraw FileX
ICOXXMicrosoft Windows ICO
id Quake II CIN video (id Quake II CIN 視訊)X
id RoQXXQuake III、Jedi Knight 2 和其他電腦遊戲中使用。
IEC61937 encapsulation (IEC61937 封裝)XX
IFFXInterchange File Format (交換檔案格式)
IFVX某些舊型閉路電視 DVR 使用的格式。
iLBCXX
Interplay MVEX各種 Interplay 電腦遊戲中使用的格式。
Iterated Systems ClearVideoXI-frames only (僅 I 影格)
IV8XIndigoVision 8000 視訊伺服器產生的格式。
IVF (On2)XXlibvpx 使用的格式
Internet Video Recording (網際網路視訊錄製)X
IRCAMXX
LAFXLimitless Audio Format (無限音訊格式)
LATMXX
LMLM4XLinux Media Labs MPEG-4 PCI 板使用
LOASX包含 LATM 多工 AAC 音訊
LRCXX
LVFX
LXFXVR 原生串流格式,Leitch/Harris 的視訊伺服器使用。
Magic Lantern Video (MLV) (Magic Lantern 視訊 (MLV))X
MatroskaXX
Matroska audio (Matroska 音訊)X
FFmpeg metadata (FFmpeg 中繼資料)XX文字格式的中繼資料。
MAXIS XAX《Sim City 3000》中使用;檔案副檔名 .xa。
MCAXCapcom 的某些遊戲中使用;檔案副檔名 .mca。
MD StudioX
Metal Gear Solid: The Twin Snakes (潛龍諜影:雙蛇魔影)X
Megalux FrameXMegalux Ultimate Paint 使用
MobiClip MODSX
MobiClip MOFLEXX
Mobotix .mxgX
Monkey’s AudioX
Motion Pixels MVIX
MOV/QuickTime/MP4XX支援 3GP、3GP2、PSP、iPod 變體
MP2XX
MP3XX
MPEG-1 System (MPEG-1 系統)XX多工音訊和視訊,支援 VCD 格式
MPEG-PS (program stream) (MPEG-PS (程式串流))XX也稱為 VOB 檔案,支援 SVCD 和 DVD 格式
MPEG-TS (transport stream) (MPEG-TS (傳輸串流))XX也稱為 DVB 傳輸串流
MPEG-4XXMPEG-4 是 QuickTime 的變體。
MSFX音訊格式,用於 PS3。
Mirillis FIC video (Mirillis FIC 視訊)X無游標渲染。
MIDI Sample Dump Standard (MIDI 樣本傾印標準)X
MIME multipart JPEGX
MSN TCP webcam (MSN TCP 網路攝影機)XMSN Messenger 網路攝影機串流使用。
MTVX
MusepackX
Musepack SV8X
Material eXchange Format (MXF) (素材交換格式 (MXF))XXSMPTE 377M,D-Cinema、廣播產業使用。
Material eXchange Format (MXF), D-10 Mapping (素材交換格式 (MXF),D-10 對應)XXSMPTE 386M,D-10/IMX 對應。
NC camera feed (NC 攝影機饋送)XNC (AVIP NC4600) 攝影機串流
NIST SPeech HEader REsourcesX
Computerized Speech Lab NSPX
NTT TwinVQ (VQF)XNippon Telegraph and Telephone Corporation TwinVQ (日本電信電話公司 TwinVQ)。
Nullsoft Streaming VideoX
NuppelVideoX
NUTXXNUT Open Container Format (NUT 開放容器格式)
OggXX
Playstation Portable PMPX
Portable Voice Format (可攜式語音格式)X
RK Audio (RKA)X
TechnoTrend PVAXTechnoTrend DVB PCI 板使用。
QCPX
raw ADTS (AAC) (原始 ADTS (AAC))XX
raw AC-3 (原始 AC-3)XX
raw AMR-NB (原始 AMR-NB)X
raw AMR-WB (原始 AMR-WB)X
raw APAC (原始 APAC)X
raw aptX (原始 aptX)XX
raw aptX HD (原始 aptX HD)XX
raw Bonk (原始 Bonk)X
raw Chinese AVS video (原始中國 AVS 視訊)XX
raw DFPWM (原始 DFPWM)XX
raw Dirac (原始 Dirac)XX
raw DNxHD (原始 DNxHD)XX
raw DTS (原始 DTS)XX
raw DTS-HD (原始 DTS-HD)X
raw E-AC-3 (原始 E-AC-3)XX
raw EVC (原始 EVC)XX
raw FLAC (原始 FLAC)XX
raw GSM (原始 GSM)X
raw H.261 (原始 H.261)XX
raw H.263 (原始 H.263)XX
raw H.264 (原始 H.264)XX
raw HEVC (原始 HEVC)XX
raw Ingenient MJPEG (原始 Ingenient MJPEG)X
raw MJPEG (原始 MJPEG)XX
raw MLP (原始 MLP)X
raw MPEG (原始 MPEG)X
raw MPEG-1 (原始 MPEG-1)X
raw MPEG-2 (原始 MPEG-2)X
raw MPEG-4 (原始 MPEG-4)XX
raw NULL (原始 NULL)X
raw video (原始視訊)XX
raw id RoQ (原始 id RoQ)X
raw OBU (原始 OBU)XX
raw OSQ (原始 OSQ)X
raw SBC (原始 SBC)XX
raw Shorten (原始 Shorten)X
raw TAK (原始 TAK)X
raw TrueHD (原始 TrueHD)XX
raw VC-1 (原始 VC-1)XX
raw PCM A-law (原始 PCM A-law)XX
raw PCM mu-law (原始 PCM mu-law)XX
raw PCM Archimedes VIDC (原始 PCM Archimedes VIDC)XX
raw PCM signed 8 bit (原始 PCM 帶正負號 8 位元)XX
raw PCM signed 16 bit big-endian (原始 PCM 帶正負號 16 位元大端)XX
raw PCM signed 16 bit little-endian (原始 PCM 帶正負號 16 位元小端)XX
raw PCM signed 24 bit big-endian (原始 PCM 帶正負號 24 位元大端)XX
raw PCM signed 24 bit little-endian (原始 PCM 帶正負號 24 位元小端)XX
raw PCM signed 32 bit big-endian (原始 PCM 帶正負號 32 位元大端)XX
raw PCM signed 32 bit little-endian (原始 PCM 帶正負號 32 位元小端)XX
raw PCM signed 64 bit big-endian (原始 PCM 帶正負號 64 位元大端)XX
raw PCM signed 64 bit little-endian (原始 PCM 帶正負號 64 位元小端)XX
raw PCM unsigned 8 bit (原始 PCM 無正負號 8 位元)XX
raw PCM unsigned 16 bit big-endian (原始 PCM 無正負號 16 位元大端)XX
raw PCM unsigned 16 bit little-endian (原始 PCM 無正負號 16 位元小端)XX
raw PCM unsigned 24 bit big-endian (原始 PCM 無正負號 24 位元大端)XX
raw PCM unsigned 24 bit little-endian (原始 PCM 無正負號 24 位元小端)XX
raw PCM unsigned 32 bit big-endian (原始 PCM 無正負號 32 位元大端)XX
raw PCM unsigned 32 bit little-endian (原始 PCM 無正負號 32 位元小端)XX
raw PCM 16.8 floating point little-endian (原始 PCM 16.8 浮點小端)X
raw PCM 24.0 floating point little-endian (原始 PCM 24.0 浮點小端)X
raw PCM floating-point 32 bit big-endian (原始 PCM 浮點 32 位元大端)XX
raw PCM floating-point 32 bit little-endian (原始 PCM 浮點 32 位元小端)XX
raw PCM floating-point 64 bit big-endian (原始 PCM 浮點 64 位元大端)XX
raw PCM floating-point 64 bit little-endian (原始 PCM 浮點 64 位元小端)XX
RDTX
REDCODE R3DXRED Digital 相機使用的檔案格式,包含 JPEG 2000 影格和 PCM 音訊。
RealMediaXX
RedirectorX
RedSparkX
Renderware TeXture DictionaryX
Resolume DXVXX僅支援 DXT1 (Normal Quality, No Alpha) 紋理格式的編碼。
RF64X
RL2X音訊和視訊格式,Entertainment Software Partners 的某些遊戲使用。
RPL/ARMovieX
Lego Mindstorms RSOXX
RSDX
RTMPXX輸出是透過將串流發佈到 RTMP 伺服器來執行
RTPXX
RTSPXX
Sample Dump eXchange (樣本傾印交換)X
SAPXX
SBGX
SDNSX
SDPX
SERX
Digital Pictures SGAX
Sega FILM/CPKXX許多 Sega Saturn 家用主機遊戲中使用。
Silicon Graphics MovieX
Sierra SOLXSierra Online 遊戲中使用的 .sol 檔案。
Sierra VMDXSierra CD-ROM 遊戲中使用。
SmackerX多媒體格式,許多遊戲使用。
SMJPEGXX某些 Loki 遊戲移植版中使用。
SMPTE 337M encapsulation (SMPTE 337M 封裝)X
SmushX多媒體格式,LucasArts 的某些遊戲使用。
Sony OpenMG (OMA)XX音訊格式,Sony Sonic Stage 和 Sony Vegas 使用。
Sony PlayStation STRX
Sony Wave64 (W64)XX
SoX native format (SoX 原生格式)XX
SUN AU format (SUN AU 格式)XX
SUP raw PGS subtitles (SUP 原始 PGS 字幕)XX
SVAGX音訊格式,Konami PS2 遊戲中使用。
TDSCX
Text files (文字檔案)X
THPXNintendo GameCube 上使用。
Tiertex Limited SEQXTiertex .seq 檔案,DOS CD-ROM 版本的遊戲《Flashback》中使用。
True AudioXX
VAGX音訊格式,許多 Sony PS2 遊戲中使用。
VC-1 test bitstream (VC-1 測試位元串流)XX
Vidvox HapXX
VivoX
VPKX音訊格式,Sony PS 遊戲中使用。
Marble WADYX
WAVXX
Waveform Archiver (波形封存器)X
WavPackXX
WebMXX
Windows Televison (WTV) (Windows 電視 (WTV))XX
Wing Commander III movie (Wing Commander III 電影)X多媒體格式,Origin 的電腦遊戲《Wing Commander III》中使用。
Westwood Studios audio (Westwood Studios 音訊)XX多媒體格式,Westwood Studios 遊戲中使用。
Westwood Studios VQAX多媒體格式,Westwood Studios 遊戲中使用。
Wideband Single-bit Data (WSD) (寬頻單一位元資料 (WSD))X
WVEX
Konami XMDX
XMVXMicrosoft 視訊容器,Xbox 遊戲中使用。
XVAGX音訊格式,用於 PS3。
xWMAXMicrosoft 音訊容器,XAudio 2 使用。
eXtended BINary text (XBIN) (延伸二進位文字 (XBIN))X
YUV4MPEG pipe (YUV4MPEG 管道)XX
Psygnosis YOPX

X 表示該欄位中的功能 (編碼/解碼) 受到支援。

49.2 影像格式

FFmpeg 可以讀取和寫入視訊序列中每個影格的影像。以下是支援的影像格式

名稱編碼解碼註解
.Y.U.VXX每個組件一個原始檔案
Alias PIXXXAlias/Wavefront PIX 影像格式
animated GIF (動畫 GIF)XX
APNGXXAnimated Portable Network Graphics (動畫可攜式網路圖形)
BMPXXMicrosoft BMP 影像
BRender PIXXArgonaut BRender 3D 引擎影像格式。
CRIXCintel RAW
DPXXXDigital Picture Exchange (數位圖像交換)
EXRXOpenEXR
FITSXXFlexible Image Transport System (彈性影像傳輸系統)
HDRXXRadiance HDR RGBE 影像格式
IMGXGEM Raster 影像
JPEGXX不支援漸進式 JPEG。
JPEG 2000XX
JPEG-LSXX
LJPEGXLossless JPEG (無損 JPEG)
Media 100X
MSPXMicrosoft Paint 影像
PAMXXPAM 是具有 Alpha 支援的 PNM 擴展。
PBMXXPortable BitMap image (可攜式點陣圖影像)
PCDXPhotoCD
PCXXXPC Paintbrush
PFMXXPortable FloatMap image (可攜式浮點圖影像)
PGMXXPortable GrayMap image (可攜式灰度圖影像)
PGMYUVXXPGM,YUV 4:2:0 中的 U 和 V 組件
PGXXPGX 檔案解碼器
PHMXXPortable HalfFloatMap image (可攜式半浮點圖影像)
PICXPictor/PC Paint
PNGXXPortable Network Graphics image (可攜式網路圖形影像)
PPMXX可攜式像素圖影像
PSDXPhotoshop
PTXXV.Flash PTX 格式
QOIXX尚可的影像格式
SGIXXSGI RGB 影像格式
Sun RasterfileXXSun RAS 影像格式
TIFFXX尚不支援 YUV、JPEG 及部分擴展。
Truevision TargaXXTarga (.TGA) 影像格式
VBNXXVizrt 二進制影像格式
WBMPXX無線應用協定點陣圖影像格式
WebPEXWebP 影像格式,編碼透過外部函式庫 libwebp 支援
XBMXXX 位元圖影像格式
XFaceXXX-Face 影像格式
XPMXX 像素圖影像格式
XWDXXX Window Dump 影像格式

X 表示該欄位中的功能 (編碼/解碼) 受到支援。

E 表示透過外部函式庫提供支援。

49.3 視訊編解碼器

名稱編碼解碼註解
4X 電影X用於特定的電腦遊戲。
8088flex TMVX
A64 多彩X建立適用於在 Commodore 64 上播放的視訊(多彩模式)。
Amazing Studio PAF 視訊X
American Laser Games MMX用於像 Mad Dog McCree 等遊戲。
Amuse Graphics 電影X
AMV 視訊XX用於中國 MP3 播放器。
ANSI/ASCII artX
Apple Intermediate CodecX
Apple MJPEG-BX
Apple PixletX
Apple ProResXXfourcc: apch,apcn,apcs,apco,ap4h,ap4x
Apple QuickDrawXfourcc: qdrw
Argonaut 視訊X用於一些 Argonaut 遊戲。
Asus v1XXfourcc: ASV1
Asus v2XXfourcc: ASV2
ATI VCR1Xfourcc: VCR1
ATI VCR2Xfourcc: VCR2
Auravision AuraX
Auravision Aura 2X
Autodesk Animator Flic 視訊X
Autodesk RLEXfourcc: AASC
AV1EE透過外部函式庫 libaom、libdav1d、librav1e 及 libsvtav1 支援
Avid 1:1 10 位元 RGB PackerXXfourcc: AVrp
AVS (音訊視訊標準) 視訊XCreature Shock 遊戲使用的視訊編碼。
AVS2-P2/IEEE1857.4EE透過外部函式庫 libxavs2 及 libdavs2 支援
AVS3-P2/IEEE1857.10E透過外部函式庫 libuavs3d 支援
AYUVXXMicrosoft 未壓縮封裝 4:4:4:4
Beam Software VBX
Bethesda VID 視訊XBethesda Softworks 的某些遊戲使用。
Bink 視訊X
BitJazz SheerVideoX
Bitmap Brothers JV 視訊X
y41p Brooktree 未壓縮 4:1:1 12 位元XX
Brooktree ProSumer 視訊Xfourcc: BT20
Brute Force & IgnoranceX遊戲《Flash Traffic: City of Angels》中使用。
C93 視訊XCyberia 遊戲中使用的編碼器。
CamStudioXfourcc: CSCD
CD+GXCD+G 卡拉 OK 光碟的視訊編碼器
CDXLXAmiga CD 視訊編碼器
Chinese AVS 視訊EXAVS1-P2,JiZhun 設定檔,透過外部函式庫 libxavs 編碼
Delphine Software International CIN 視訊XDelphine Software International 遊戲中使用的編碼器。
Discworld II BMV 視訊X
CineForm HDXX
Canopus HQX
Canopus HQAX
Canopus HQXX
Canopus 無損編碼器X
CDToonsX各種 Broderbund 遊戲中使用的編碼器。
CinepakX
Cirrus Logic AccuPakXXfourcc: CLJR
CPiA 視訊格式X
Creative YUV (CYUV)X
DFAXChronomaster 遊戲中使用的編碼器。
DiracEX透過原生 vc2 (Dirac Pro) 編碼器支援
Deluxe Paint AnimationX
DNxHDXX又名 SMPTE VC3
Duck TrueMotion 1.0Xfourcc: DUCK
Duck TrueMotion 2.0Xfourcc: TM20
Duck TrueMotion 2.0 RTXfourcc: TR20
DV (數位視訊)XX
Dxtory 擷取格式X
Feeble Files/ScummVM DXAX最初在 Feeble Files 遊戲中使用的編碼器。
Electronic Arts CMV 視訊X用於 NHL 95 遊戲。
Electronic Arts Madcow 視訊X
Electronic Arts TGV 視訊X
Electronic Arts TGQ 視訊X
Electronic Arts TQI 視訊X
Escape 124X
Escape 130X
EVC / MPEG-5 Part 1EE編碼和解碼透過外部函式庫 libxeve 及 libxevd 支援
FFmpeg 視訊編碼器 #1XX無損編碼器 (fourcc: FFV1)
Flash Screen Video v1XXfourcc: FSV1
Flash Screen Video v2XX
Flash Video (FLV) (Flash 視訊 (FLV))XXFlash 中使用的 Sorenson H.263
FM 螢幕擷取編碼器X
Forward UncompressedX
FrapsX
Go2MeetingXfourcc: G2M2, G2M3
Go2WebinarXfourcc: G2M4
Gremlin 數位視訊X
H.261XX
H.263 / H.263-1996XX
H.263+ / H.263-1998 / H.263 version 2XX
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10EX編碼透過外部函式庫 libx264 和 OpenH264 支援
HEVCXX編碼透過外部函式庫 libx265 和 libkvazaar 支援
HNM version 4X
HuffYUVXX
HuffYUV FFmpeg 變體XX
IBM UltimotionXfourcc: ULTI
id Cinematic 視訊X用於 Quake II。
id RoQ 視訊XX用於 Quake III、Jedi Knight 2 及其他電腦遊戲。
IFF ILBMXIFF 交錯點陣圖
IFF ByteRun1XIFF 執行長度編碼點陣圖
Infinity IMM4X
Intel H.263X
Intel Indeo 2X
Intel Indeo 3X
Intel Indeo 4X
Intel Indeo 5X
Interplay C93XInterplay 的遊戲《Cyberia》中使用。
Interplay MVE 視訊X用於 Interplay .MVE 檔案。
J2KXX
Karl Morton’s 視訊編碼器XWorms 遊戲中使用的編碼器。
Kega Game Video (KGV1)XKega 模擬器螢幕擷取編碼器。
LagarithX
LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2E解碼透過外部函式庫 liblcevc-dec 支援
LCL (無損編碼器函式庫) MSZHX
LCL (無損編碼器函式庫) ZLIBEE
LEAD MCMPX
LOCOX
LucasArts SANM/SmushX用於 LucasArts 遊戲/SMUSH 動畫。
無損 MJPEGXX
MagicYUV 視訊XX
Mandsoft 螢幕擷取編碼器X
Microsoft ATC ScreenX也稱為 Microsoft Screen 3。
Microsoft Expression Encoder ScreenX也稱為 Microsoft Titanium Screen 2。
Microsoft RLEXX
Microsoft Screen 1X也稱為 Windows Media Video V7 Screen。
Microsoft Screen 2X也稱為 Windows Media Video V9 Screen。
Microsoft Video 1X
MimicX用於 MSN Messenger 網路攝影機串流。
Miro VideoXLXfourcc: VIXL
MJPEG (Motion JPEG)XX
Mobotix MxPEG 視訊X
Motion Pixels 視訊X
MPEG-1 視訊XX
MPEG-2 視訊XX
MPEG-4 part 2XXlibxvidcore 可替代用於編碼。
MPEG-4 part 2 Microsoft 變體版本 1X
MPEG-4 part 2 Microsoft 變體版本 2XX
MPEG-4 part 2 Microsoft 變體版本 3XX
Newtek SpeedHQXX
Nintendo Gamecube THP 視訊X
NotchLCX
NuppelVideo/RTjpegXNuppelVideo 檔案中使用的視訊編碼。
On2 VP3X仍在實驗中
On2 VP4Xfourcc: VP40
On2 VP5Xfourcc: VP50
On2 VP6Xfourcc: VP60,VP61,VP62
On2 VP7Xfourcc: VP70,VP71
VP8EXfourcc: VP80,編碼透過外部函式庫 libvpx 支援
VP9EX編碼透過外部函式庫 libvpx 支援
Pinnacle TARGA CineWave YUV16Xfourcc: Y216
Q-team QPEGXfourccs: QPEG, Q1.0, Q1.1
QuickTime 8BPS 視訊X
QuickTime Animation (RLE) 視訊XXfourcc: ’rle ’
QuickTime Graphics (SMC)XXfourcc: ’smc ’
QuickTime 視訊 (RPZA)XXfourcc: rpza
R10K AJA Kona 10 位元 RGB 編碼器XX
R210 Quicktime 未壓縮 RGB 10 位元XX
Raw VideoXX
RealVideo 1.0XX
RealVideo 2.0XX
RealVideo 3.0X仍遠非理想
RealVideo 4.0X
RealVideo 6.0X
Renderware TXD (材質字典)XRenderware 引擎使用的材質字典。
RivaTuner 視訊Xfourcc: ’RTV1’
RL2 視訊XEntertainment Software Partners 的一些遊戲中使用
ScreenPressorX
ScreenpressoX
Screen Recorder Gold CodecX
Sierra VMD 視訊X用於 Sierra VMD 檔案。
Silicon Graphics Motion Video Compressor 1 (MVC1)X
Silicon Graphics Motion Video Compressor 2 (MVC2)X
Silicon Graphics RLE 8 位元視訊X
Smacker 視訊XSmacker 中使用的視訊編碼。
SMPTE VC-1X
SnowXX實驗性小波編碼器 (fourcc: SNOW)
Sony PlayStation MDEC (Motion DECoder)X
Sorenson Vector Quantizer 1XXfourcc: SVQ1
Sorenson Vector Quantizer 3Xfourcc: SVQ3
Sunplus JPEG (SP5X)Xfourcc: SP5X
TechSmith 螢幕擷取編碼器Xfourcc: TSCC
TechSmith 螢幕擷取編碼器 2Xfourcc: TSC2
TheoraEX編碼透過外部函式庫 libtheora 支援
Tiertex Limited SEQ 視訊XDOS CD-ROM FlashBack 遊戲中使用的編碼器。
Ut VideoXX
v210 QuickTime 未壓縮 4:2:2 10 位元XX
v308 QuickTime 未壓縮 4:4:4XX
v408 QuickTime 未壓縮 4:4:4:4XX
v410 QuickTime 未壓縮 4:4:4 10 位元XX
VBLE 無損編碼器X
vMix 視訊Xfourcc: ’VMX1’
VMware 螢幕編碼器 / VMware 視訊XVMware 擷取的視訊中使用的編碼器。
Westwood Studios VQA (向量量化動畫) 視訊X
Windows Media ImageX
Windows Media Video 7XX
Windows Media Video 8XX
Windows Media Video 9X尚未完全運作
Wing Commander III / XanX用於 Wing Commander III .MVE 檔案。
Wing Commander IV / XanX用於 Wing Commander IV。
Winnov WNV1X
WMV7XX
YAMAHA SMAFXX
Psygnosis YOP 視訊X
yuv4XXlibquicktime 未壓縮封裝 4:2:0
ZeroCodec 無損視訊X
ZLIBXXLCL 的一部分,編碼器實驗性
Zip Motion Blocks 視訊XX編碼器僅在 PAL8 中運作。

X 表示該欄位中的功能 (編碼/解碼) 受到支援。

E 表示透過外部函式庫提供支援。

49.4 音訊編解碼器

名稱編碼解碼註解
8SVX 指數X
8SVX 費波納契X
AACEXX編碼透過內部編碼器和外部函式庫 libfdk-aac 支援
AAC+EIX編碼透過外部函式庫 libfdk-aac 支援
AC-3IXIX
ACELP.KELVINX
ADPCM 4X 電影X
ADPCM Yamaha AICAX
ADPCM AmuseGraphics 電影X
ADPCM Argonaut GamesXX
ADPCM CDROM XAX
ADPCM Creative TechnologyX16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2
ADPCM Electronic ArtsX用於各種 EA 遊戲標題。
ADPCM Electronic Arts Maxis CDROM XSX用於 Sim City 3000。
ADPCM Electronic Arts R1X
ADPCM Electronic Arts R2X
ADPCM Electronic Arts R3X
ADPCM Electronic Arts XASX
ADPCM G.722XX
ADPCM G.726XX
ADPCM IMA Acorn ReplayX
ADPCM IMA AMVXX用於 AMV 檔案
ADPCM IMA Cunning DevelopmentsX
ADPCM IMA Electronic Arts EACSX
ADPCM IMA Electronic Arts SEADX
ADPCM IMA FuncomX
ADPCM IMA High Voltage Software ALPXX
ADPCM IMA Mobiclip MOFLEXX
ADPCM IMA QuickTimeXX
ADPCM IMA Simon & Schuster InteractiveXX
ADPCM IMA Ubisoft APMXX
ADPCM IMA Loki SDL MJPEGX
ADPCM IMA WAVXX
ADPCM IMA WestwoodX
ADPCM ISS IMAX用於 FunCom 遊戲。
ADPCM IMA DialogicX
ADPCM IMA Duck DK3X用於一些 Sega Saturn 家用主機遊戲。
ADPCM IMA Duck DK4X用於一些 Sega Saturn 家用主機遊戲。
ADPCM IMA RadicalX
ADPCM IMA XboxX
ADPCM MicrosoftXX
ADPCM MS IMAXX
ADPCM Nintendo Gamecube AFCX
ADPCM Nintendo Gamecube DTKX
ADPCM Nintendo THPX
ADPCM PlaystationX
ADPCM QT IMAXX
ADPCM SEGA CRI ADXXX用於 Sega Dreamcast 遊戲。
ADPCM Shockwave FlashXX
ADPCM Sound Blaster Pro 2-bitX
ADPCM Sound Blaster Pro 2.6-bitX
ADPCM Sound Blaster Pro 4-bitX
ADPCM VIMAX用於 LucasArts SMUSH 動畫。
ADPCM Konami XMDX
ADPCM Westwood Studios IMAXX用於 Westwood Studios 遊戲,如終極動員令。
ADPCM YamahaXX
ADPCM ZorkX
AMR-NBEX編碼透過外部函式庫 libopencore-amrnb 支援
AMR-WBEX編碼透過外部函式庫 libvo-amrwbenc 支援
Amazing Studio PAF 音訊X
Apple lossless 音訊XXQuickTime fourcc ’alac’
aptXXX用於 Bluetooth A2DP
aptX HDXX用於 Bluetooth A2DP
ATRAC1X
ATRAC3X
ATRAC3+X
ATRAC9X
Bink AudioX用於許多遊戲的 Bink 和 Smacker 檔案中。
Bonk 音訊X
CELTE解碼透過外部函式庫 libcelt 支援
codec2EE編/解碼透過外部函式庫 libcodec2 支援
CRI HCAX
Delphine Software International CIN 音訊XDelphine Software International 遊戲中使用的編碼器。
DFPWMXX
數位語音標準 - 標準播放模式 (DSS SP)X
Discworld II BMV 音訊X
COOKX支援除 5.1 以外的所有版本。
DCA (DTS Coherent Acoustics)XX支援的擴展名:XCh、XXCH、X96、XBR、XLL、LBR(部分)
Dolby EX
DPCM Cuberoot-Delta-ExactX用於少數遊戲。
DPCM GremlinX
DPCM id RoQXXQuake III、Jedi Knight 2 和其他電腦遊戲中使用。
DPCM Marble WADYX
DPCM InterplayX用於各種 Interplay 電腦遊戲。
DPCM Squareroot-Delta-ExactX用於各種遊戲。
DPCM Sierra OnlineX用於 Sierra Online 遊戲音訊檔案。
DPCM SolX
DPCM XanX用於 Origin’s Wing Commander IV AVI 檔案。
DPCM Xilam DERFX
DSD(直接串流數位),最低有效位元優先X
DSD(直接串流數位),最高有效位元優先X
DSD(直接串流數位),最低有效位元優先,平面X
DSD(直接串流數位),最高有效位元優先,平面X
DSP Group TrueSpeechX
DST(直接串流傳輸)X
DV 音訊X
Enhanced AC-3XX
EVRC(增強型可變速率編碼器)X
FLAC(Free Lossless Audio Codec,自由無損音訊編碼器)XIX
FTR VoiceX
G.723.1XX
G.729X
GSMEX編碼透過外部函式庫 libgsm 支援
GSM Microsoft 變體EX編碼透過外部函式庫 libgsm 支援
IAC(Indeo 音訊編碼器)X
iLBC(網際網路低位元速率編碼器)EEX編碼和解碼透過外部函式庫 libilbc 支援
IMC(Intel 音樂編碼器)X
Interplay ACMX
LC3EE透過外部函式庫 liblc3 支援
MACE(Macintosh 音訊壓縮/擴展)6:1X
Marian’s A-pac 音訊X
MI-SC4 (Micronas SC-4 音訊)X
MLP(Meridian 無損封裝)XX用於 DVD-Audio 光碟。
Monkey’s AudioX
MP1 (MPEG 音訊層 1)IX
MP2 (MPEG 音訊層 2)IXIX編碼也透過外部函式庫 TwoLAME 支援
MP3 (MPEG 音訊層 3)EIX編碼透過外部函式庫 LAME 支援,也支援 ADU MP3 和 MP3onMP4
MPEG-4 音訊無損編碼 (ALS)X
MobiClip FastAudioX
Musepack SV7X
Musepack SV8X
Nellymoser AsaoXX
On2 AVC (視訊編碼音訊)X
OpusEX編碼透過外部函式庫 libopus 支援
OSQ(原始音質)X
PCM A-lawXX
PCM mu-lawXX
PCM Archimedes VIDCXX
PCM 帶正負號 8 位元平面XX
PCM 帶正負號 16 位元大端序平面XX
PCM 帶正負號 16 位元小端序平面XX
PCM 帶正負號 24 位元小端序平面XX
PCM 帶正負號 32 位元小端序平面XX
PCM 32 位元浮點大端序XX
PCM 32 位元浮點小端序XX
PCM 64 位元浮點大端序XX
PCM 64 位元浮點小端序XX
PCM D-Cinema 音訊帶正負號 24 位元XX
PCM 帶符號 8 位元XX
PCM 帶符號 16 位元大端序XX
PCM 帶符號 16 位元小端序XX
PCM 帶符號 24 位元大端序XX
PCM 帶符號 24 位元小端序XX
PCM 帶符號 32 位元大端序XX
PCM 帶符號 32 位元小端序XX
MPEG-TS 中的 PCM 帶正負號 16/20/24 位元大端序X
PCM 無符號 8 位元XX
PCM 無符號 16 位元大端序XX
PCM 無符號 16 位元小端序XX
PCM 無符號 24 位元大端序XX
PCM 無符號 24 位元小端序XX
PCM 無符號 32 位元大端序XX
PCM 無符號 32 位元小端序XX
PCM SGAX
QCELP / PureVoiceX
QDesign Music Codec 1X
QDesign Music Codec 2X仍有一些失真。
RealAudio 1.0 (14.4K)XXReal 14400 位元/秒 編碼器
RealAudio 2.0 (28.8K)XReal 28800 位元/秒 編碼器
RealAudio 3.0 (dnet)IXXReal 低位元速率 AC-3 編碼器
RealAudio LosslessX
RealAudio SIPR / ACELP.NETX
RK Audio (RKA)X
SBC(低複雜度子頻帶編碼器)XX用於 Bluetooth A2DP
ShortenX
Sierra VMD 音訊X用於 Sierra VMD 檔案。
Smacker 音訊X
SMPTE 302M AES3 音訊XX
SonicXX實驗性編碼器
Sonic losslessXX實驗性編碼器
SpeexEEX透過外部函式庫 libspeex 支援
TAK(Tom’s lossless Audio Kompressor,Tom 無損音訊壓縮器)X
True Audio (TTA)XX
TrueHDXX用於 HD-DVD 和 Blu-Ray 光碟。
TwinVQ (VQF 風格)X
VIMAX用於 LucasArts SMUSH 動畫。
ViewQuest VQCX
VorbisEX存在原生但非常原始的編碼器。
Voxware MetaSoundX
Waveform Archiver (波形封存器)X
WavPackXX
Westwood Audio (SND1)X
Windows Media Audio 1XX
Windows Media Audio 2XX
Windows Media Audio LosslessX
Windows Media Audio ProX
Windows Media Audio VoiceX
Xbox Media Audio 1X
Xbox Media Audio 2X

X 表示該欄位中的功能 (編碼/解碼) 受到支援。

E 表示透過外部函式庫提供支援。

I 表示也提供純整數版本 (確保在沒有硬體浮點支援的系統上實現高效能)。

49.5 字幕格式

名稱混流解多工編碼解碼
3GPP 定時文字XX
AQTitleXX
DVBXXXX
DVB 圖文電視XE
DVDXXXX
JACOsubXXX
MicroDVDXXX
MPL2XX
MPsub (MPlayer)XX
PGSX
PJS (Phoenix)XX
RealTextXX
SAMIXX
Spruce 格式 (STL)XX
SSA/ASSXXXX
SubRip (SRT)XXXX
SubViewer v1XX
SubViewerXX
TED Talks 字幕XX
TTMLXX
VobSub (IDX+SUB)XX
VPlayerXX
WebVTTXXXX
XSUBXX

X 表示支援此功能。

E 表示透過外部函式庫提供支援。

49.6 網路協定

名稱支援
AMQPE
fileX
FTPX
GopherX
GophersX
HLSX
HTTPX
HTTPSX
IcecastX
MMSHX
MMSTX
pipeX
Pro-MPEG FECX
RTMPX
RTMPEX
RTMPSX
RTMPTX
RTMPTEX
RTMPTSX
RTPX
SAMBAE
SCTPX
SFTPE
TCPX
TLSX
UDPX
ZMQE

X 表示支援此協定。

E 表示透過外部函式庫提供支援。

49.7 輸入/輸出裝置

名稱輸入輸出
ALSAXX
BKTRX
cacaX
DV1394X
Lavfi 虛擬裝置X
Linux framebufferXX
JACKX
LIBCDIOX
LIBDC1394X
OpenALX
OpenGLX
OSSXX
PulseAudioXX
SDLX
Video4Linux2XX
VfW 擷取X
X11 抓取X
Win32 抓取X

X 表示支援輸入/輸出。

49.8 時間碼

編碼/格式讀取寫入
AVIXX
DVXX
GXFXX
MOVXX
MPEG1/2XX
MXFXX

50 參見

ffmpeg ffplay, ffprobe, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters

51 作者

FFmpeg 開發人員。

關於作者的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如在 FFmpeg 原始碼目錄中輸入命令 git log,或瀏覽線上儲存庫 https://git.ffmpeg.org/ffmpeg

特定組件的維護者列在原始碼樹狀結構中的 MAINTAINERS 檔案中。

本文件於 2025 年 1 月 21 日 使用 makeinfo 產生。

telepoint.bg 提供託管服務