一、描述
FFmpeg重采样器为libswresample库音频重采样实用程序提供了一个高级接口。 特别地,它允许执行音频重采样,音频通道布局再匹配,以及转换音频格式和打包布局。
二、重采样器选项
音频重采样器支持以下命名选项。
可以通过在FFmpeg工具中指定-option值来设置选项,通过在SwrContext选项中显式设置值或使用libavutil / opt.h API进行编程使用,可以通过在issample过滤器中使用option = value来设置选项。
ich,in_channel_count
设置输入通道的数量。 默认值为0.如果设置相应的通道布局in_channel_layout,则不设置此值。
och,out_channel_count
设置输出通道的数量。 默认值为0.如果设置相应的通道布局out_channel_layout,则不设置此值。
uch,used_channel_count
设置使用的输入通道数。 默认值为0.此选项仅用于特殊重新映射。
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。 如果没有明确设置,这将自动选择。
icl,in_channel_layout
ocl,out_channel_layout
设置输入/输出通道布局。
有关所需语法,请参阅ffmpeg-utils(1)手册中的(ffmpeg-utils)通道布局部分。
clev,center_mix_level
设置中心组合级别。 它是以deciBel表示的值,必须在[-32,32]的间隔。
slev,surround_mix_level
设置环绕声混合音量。 它是以deciBel表示的值,必须在[-32,32]的间隔。
lfe_mix_level
将LFE组合设置为非LFE级别。 当有LFE输入但没有LFE输出时使用。 它是以deciBel表示的值,必须在[-32,32]的间隔。
rmvol,rematrix_volume
设置rematrix体积。 默认值为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”
选择低柴田噪声整形抖动。
“high_shibata”
选择高柴田噪声整形抖动。
“f_weighted”
选择f加权噪声整形抖动
“modified_e_weighted”
选择修改电子加权噪声整形抖动
“improved_e_weighted”
选择改进的电子加权噪声整形抖动
重采样
设置重采样引擎 默认值为swr。
支持的值:
“SWR”
选择本地SW Resampler; 在这种情况下,过滤器选项精度和偏差不适用。
“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之间的浮点值。默认值为0.97,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 /采样率。这允许在流开始时进行填充/修整。默认情况下,没有对第一帧的预期位置进行假设,因此不进行任何填充或修整。例如,如果音频流在视频流之后启动,或者由于编码器延迟而修剪任何具有负值的样本,则可以将其设置为0以静音开始。
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’
选择杜比
“DPLII”
选择杜比定向逻辑II
默认值为none。
FILTER_TYPE
仅对于swr,请选择重新采样过滤器类型。 这只会影响重采样操作。
它接受以下值:
‘cubic’
选择立方体
“blackman_nuttall”
选择Blackman Nuttall窗口sinc
‘kaiser’
选择Kaiser windowed sinc
kaiser_beta
仅对于swr,设置Kaiser窗口beta值。 间隔[2,16]中必须是双浮点数,默认值为9。
output_sample_bits
仅对于swr,设置用于抖动的已使用输出采样位数。 必须是间隔[0,64]中的整数,默认值为0,这意味着它不被使用。