【发布时间】:2015-05-30 05:35:50
【问题描述】:
我想即时使用 NAudio 和 MFT 重新采样音频文件。
例如,我有以下音频文件:
文件名:MyAudioFile.mp3
持续时间:10 秒
播放此文件时,我只想以所需格式重新采样该特定位置为 WAV。
所以,如果“MyAudioFile.mp3”的长度为 10 秒,而“当前播放位置”为 2.5 秒,我想仅重新采样该部分以 48 KHz 的采样率将数据转换为 WAV 格式。
当音频进一步进行时,再次,只有“当前播放位置”必须重新采样。
我尝试了以下代码:
WaveStream reader = new MediaFoundationReaderRT([path of
"MyAudioFile.mp3"]);
MemoryStream outMemStream = new MemoryStream(); //Decode to memory
stream
using (reader)
using (var resampler = new MediaFoundationResampler(reader,
resampler.WaveFormat))
{
WaveFileWriter.CreateWaveFile(outMemStream, resampler);
rsws = new RawSourceWaveStream(outMemStream, resampler.WaveFormat);
}
WaveChannel32 waveformInputStream = new WaveChannel32(rsws);
重采样正确进行;但是它会重新采样整个音频文件,这需要时间。
我正在查看的只是重新采样音频的“当前播放位置”,并丢弃任何其他位置信息。
谢谢!如果您能提供一些样品,不胜感激。
【问题讨论】:
标签: naudio ms-media-foundation resampling