FFmpeg 重采样器文档

网站翻译由林建有提供支持

1 描述

FFmpeg 重采样器提供了一个到 libswresample 库音频重采样工具的高级接口。特别是,它允许进行音频重采样、音频通道布局重新混合以及转换音频格式和打包布局。

2 重采样器选项

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

可以通过指定 -选项 在 FFmpeg 工具中设置选项,选项=用于 aresample 滤镜的明确定值,SwrContext选项 或使用libavutil/opt.hAPI 的编程方式使用。

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,选择无通带滚降 (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

选择布莱克曼努特尔窗正弦函数

kaiser

选择凯瑟窗正弦函数

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),例如通过键入以下命令git log在 FFmpeg 源目录中,或浏览在线代码仓库于https://git.ffmpeg.org/ffmpeg.

特定组件的维护者在源代码树中的文件MAINTAINERS中列出。

此文档由makeinfo.

托管由以下机构提供telepoint.bg