如何使用 NAudio 从 mp3 中获取音频样本数据

Posted

技术标签:

【中文标题】如何使用 NAudio 从 mp3 中获取音频样本数据【英文标题】:How to Get Audio sample data from mp3 using NAudio 【发布时间】:2014-02-18 23:28:39 【问题描述】:

我有一个 mp3 文件到一大组音频样本中。 我希望音频样本是浮动的。

NAudio.Wave.WaveStream pcm=NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(OFD.FileName));

到目前为止,我得到了 pcm 流并且可以很好地播放它,但我不知道如何从流中读取原始数据。

【问题讨论】:

你喜欢哪种raw data? MP3 帧? 【参考方案1】:

使用AudioFileReader。这实现了ISampleProvider,因此Read 方法允许您直接读取样本的浮点数组。

或者在您的Mp3FileReader 之后使用ToSampleProvider 方法。你不需要使用WaveFormatConversionStream,因为Mp3FileReader(和AudioFileReader)已经解压了MP3帧。

【讨论】:

感谢 Mark 这如我所愿。有什么地方可以让我获得更多关于 NAudio 的文档吗?我使用的实际代码是 NAudio.Wave.AudioFileReader afRdr = new AudioFileReader(OFD.FileName);浮动[] flBuffer = 新浮动[2000]; int bytesRead = afRdr.Read(flBuffer, 0, 2000); 查看 CodePlex 站点的文档选项卡。它链接到我博客上的许多文章。如果您是订阅者,我最近还开设了一门 Pluralsight 课程。我希望能写更多的文档,但是 NAudio 只是一个业余项目,所以有时进展会很慢。 我现在有数据但是我如何确定浮动缓冲区的长度以及当有两个通道时呢 @MarkHeath 请告诉我我们如何确定要读取的缓冲区大小?

以上是关于如何使用 NAudio 从 mp3 中获取音频样本数据的主要内容,如果未能解决你的问题,请参考以下文章

mp3 到样本数组 NAudio

使用 NAudio 直接从转换后的 MP3 文件中读取样本

如何从音频文件中获取样本的浮点数组

如何使用内存流、NAudio 和 LameMP3 将音频 aiff 转换为 MP3

如何使用 NAudio 将任何音频格式转换为 mp3

如何使用 C# NAudio 操作字节?