FFmpeg
文档目录组件手册

音频重采样器

说明

FFmpeg 重采样器(resampler)为 libswresample 库的音频重采样工具提供了高层接口。它主要用于:音频重采样(改变采样率)、音频声道布局重矩阵(rematrixing,即下混/上混声道)、以及转换音频采样格式与打包布局。

在命令行中通过 aresample 滤镜使用(例如 -af aresample=async=1),ffmpegffplay 等工具也会在你需要转换采样率、采样格式或声道布局时自动调用它。

重采样器选项

音频重采样器支持以下命名选项。可以用 -选项 值 的方式在 FFmpeg 工具中设置,或在 aresample 滤镜中以 选项=值 的形式设置;编程使用时可在 SwrContext 中显式赋值,或通过 libavutil/opt.h API 设置。

全部选项见官方手册:ffmpeg-resampler,下表为完整列表。

选项(别名)说明默认值
uchl, used_chlayout设置所用输入声道布局,仅用于特殊重映射未设置
isr, in_sample_rate输入采样率(Hz)0
osr, out_sample_rate输出采样率(Hz)0
isf, in_sample_fmt输入采样格式none
osf, out_sample_fmt输出采样格式none
tsf, internal_sample_fmt内部采样格式,未显式设置时自动选择none
ichl, in_chlayout / ochl, out_chlayout输入/输出声道布局,语法见 ffmpeg-utils 手册的声道布局一节
clev, center_mix_level中置声道混合电平,单位分贝(dB),取值区间 [-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转换器标志。res:即使输入输出采样率相同也强制重采样0
dither_scale抖振(dither)缩放1
dither_method抖振方法,见下表0
resampler重采样引擎:swr 为原生重采样器(此时 precisioncheby 不适用);soxr 为 SoX 重采样器(可用时;此时补偿及 filter_sizephase_shiftexact_rationalfilter_typekaiser_beta 不适用)swr
filter_size仅 swr:重采样滤波器长度32
phase_shift仅 swr:相位偏移位数,取值区间 [0, 30]10
linear_interp启用时使用线性插值(默认启用);关闭则在 exact_rational 失败时优先保速度而非质量启用
exact_rational仅 swr:尝试按输入/输出采样率计算精确 phase_count,超过 1 << phase_shift 时回退。启用
cutoff截止频率比(swr 为 6dB 点;soxr 为 0dB 点),0 到 1 之间的浮点数swr 为 0.97,soxr 为 0.91
precision仅 soxr:重采样信号的计算精度(位)。20 对应 SoX 的 High Quality,28 对应 Very High Quality20
cheby仅 soxr:选择无通带滚降(Chebyshev)并为“无理数”比率使用更高精度近似0
async仅 swr:单参数音频时间戳同步(拉伸/挤压/填充/裁切)。设为 1 启用填充与裁切;更大值表示每秒最多可拉伸或挤压的样本数0(不补偿)
first_pts仅 swr:假定起始 PTS 为该值,单位 1/采样率,可在流开头做填充或裁切。例如设 0 可在音频晚于视频开始时用静音填充不假定
min_comp仅 swr:触发拉伸/挤压/填充或裁切的时间戳与音频数据最小差值(秒)FLT_MAX(默认禁用补偿)
min_hard_comp仅 swr:在硬补偿(裁切/填充)与软补偿(挤压/拉伸)之间选择的阈值(秒)。注意所有补偿默认经 min_comp 禁用0.1
comp_duration仅 swr:为匹配时间戳而拉伸/挤压数据的时长(秒),非负浮点数1.0
max_soft_comp仅 swr:拉伸/挤压数据最大倍数,非负浮点数0
matrix_encoding选择矩阵立体声编码:nonedolby(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 表示不使用0

dither_method 取值

含义
rectangular矩形抖振
triangular三角形抖振
triangular_hp带高通的三角形抖振
lipshitzLipshitz 噪声整形抖振
shibataShibata 噪声整形抖振
low_shibata低 Shibata 噪声整形抖振
high_shibata高 Shibata 噪声整形抖振
f_weightedf 加权噪声整形抖振
modified_e_weighted修正 e 加权噪声整形抖振
improved_e_weighted改进 e 加权噪声整形抖振

参见

ffmpeg、ffplay、ffprobe、libswresample;音频相关通用选项与表达式见 ffmpeg-utils 手册

作者

FFmpeg 开发者。作者详情见项目 Git 历史(https://git.ffmpeg.org/ffmpeg),可在源码目录执行 git log,或在线浏览该仓库。各组件维护者列在源码树的 MAINTAINERS 文件中。