FFmpeg 重新採樣器文件

目錄

1 描述

FFmpeg 重新採樣器為 libswresample 函式庫音訊重新採樣工具提供高階介面。特別是,它允許執行音訊重新採樣、音訊聲道佈局重新矩陣化,以及轉換音訊格式和封裝佈局。

2 重新採樣器選項

音訊重新採樣器支援以下具名選項。

選項可以透過在 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

選擇無

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,表示未使用。

3 參見

ffmpeg, ffplay, ffprobe, libswresample

4 作者

FFmpeg 開發者。

有關作者身份的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如,在 FFmpeg 原始碼目錄中輸入命令 git log,或瀏覽線上儲存庫:https://git.ffmpeg.org/ffmpeg

特定組件的維護者列在原始碼樹狀結構中的 MAINTAINERS 檔案中。

本文件於 2025 年 1 月 21 日 使用 makeinfo 產生。

託管服務由 telepoint.bg 提供。