首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFT NAudio动态重采样

MFT NAudio动态重采样
EN

Stack Overflow用户
提问于 2015-05-26 15:02:34
回答 1查看 722关注 0票数 0

我想重采样一个音频文件使用NAudio和MFT在飞.

例如,我有以下音频文件:

文件名: MyAudioFile.mp3

持续时间:10秒

当这个文件被播放时,我只想以所需的格式重采样到WAV上的特定位置。

因此,如果"MyAudioFile.mp3“的长度为10秒,而”当前播放位置“为2.5秒,我想以48 KHz的采样速率将只重采样这部分数据为WAV格式。

当音频进一步发展,再次,只有“当前播放位置”必须重放。

我尝试了以下代码:

代码语言:javascript
复制
    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);

重采样正常进行;但是它会重新分配整个音频文件,这需要时间。

我所看到的只是重拾音频的“当前播放位置”,并丢弃任何其他位置信息。

谢谢!如果您能提供一些样品,非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 21:35:50

要动态重采样,只需将读取器直接传递到MediaFoundationResampler。现在您将拥有一个ISampleProvider,因此您将无法使用WaveChannel32,但实际上,这是一个过时的类,您应该能够使用来自NAudio的其他ISampleProvider类执行所需的任何操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30462256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档