FFmpeg 重采样器文档

目录

1 描述

FFmpeg 重采样器为 libswresample 库音频重采样实用程序提供了一个高级接口。 特别是,它允许执行音频重采样、音频通道布局重矩阵化,以及转换音频格式和打包布局。

2 重采样器选项

音频重采样器支持以下命名选项。

可以通过在 FFmpeg 工具中指定 -选项 ,对于 aresample 滤波器,指定 选项=,在 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

选择杜比定向逻辑 II (Dolby Pro Logic II)

默认值是 none

filter_type

仅对 swr 有效,选择重采样滤波器类型。这仅影响重采样操作。

它接受以下值

cubic

选择立方插值 (cubic)

blackman_nuttall

选择布莱克曼-纳托尔窗函数 (Blackman Nuttall windowed sinc)

kaiser

选择凯撒窗函数 (Kaiser windowed sinc)

kaiser_beta

仅对 swr 有效,设置凯撒窗函数的 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 提供托管。