目录
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 提供托管。