我必须使用纯 C# 解决方案来重新采样音频,这可以产生与 FFmpeg 的音频采样完全相同的结果。
FFmpeg首先构建某种多相滤波器组,然后将其用于采样过程(抱歉措辞含糊,但我对这个主题不太熟悉)。根据这个简短的文档,初始化可以这样定制:
AVResampleContext* av_resample_init(
int out_rate,
int in_rate,
int filter_length,
int log2_phase_count,
int linear,
double cutoff
)
参数是:
- out_rate : 输出采样率
- in_rate : 输入采样率
- filter_length : 滤波器组中每个 FIR 滤波器相对于截止频率的长度
- log2_phase_count:多相滤波器组中条目数的 log2
- 线性:如果为 1,则使用的 FIR 滤波器将在 2 个最接近的滤波器之间进行线性插值,如果为 0,则将使用最接近的滤波器
- cutoff:截止频率,1.0对应输出采样率的一半
我需要使用可在相同深度进行配置的 C# 库。我一直在尝试使用NAudio(更具体地说,它的WaveFormatConversionStream
类),但是在那里,我只能设置输入和输出采样率,所以我没有得到预期的结果。
那么,是否有一个 C# 库可以使用与 FFmpeg 相同的设置重新采样?还是具有几乎所有这些设置或类似设置的?注意:我需要一个 C# 解决方案,而不是包装器!