使用 NAudio 播放 IMA ADPCM 音频

Posted

技术标签:

【中文标题】使用 NAudio 播放 IMA ADPCM 音频【英文标题】:Play IMA ADPCM Audio with NAudio 【发布时间】:2021-01-04 19:15:56 【问题描述】:

我有一个没有标题的文件,其中存储了 IMA ADPCM 原始数据,我想使用 NAudio 播放它。 在 Audacity 中,使用此配置没有问题:

Encoding: VOX ADPCM 
Byte order: No Endianness
Channels: 1 Channel (Mono)
Start offset: 0 bytes
Amount to import: 100%
Sample rate: 22050Hz

这是我正在使用的代码,但我总是收到 System.DivideByZeroException 错误。

internal void PlayIMAAudio(WaveOut AudioPlayer, byte[] IMAData, int Frequency, int Bits, int Channels)

    if (AudioPlayer.PlaybackState == PlaybackState.Stopped)
    
        MemoryStream Audiosample = new MemoryStream(IMAData);
        ImaAdpcmWaveFormat FileFormat = new ImaAdpcmWaveFormat(Frequency, Channels, Bits);
        RawSourceWaveStream provider = new RawSourceWaveStream(AudioSample, FileFormat);
        AudioPlayer.Init(provider);
        AudioPlayer.Play();
    

我该如何解决?

谢谢!

【问题讨论】:

【参考方案1】:

您通常不能直接播放压缩格式。将RawSourceWaveStream 传递到WaveFormatConversionStream.CreatePcmStream 以访问PCM。如果您的 PC 上有正确的编解码器并且您正确指定了源 WaveFormat,那应该可以工作

【讨论】:

以上是关于使用 NAudio 播放 IMA ADPCM 音频的主要内容,如果未能解决你的问题,请参考以下文章

如何将wav音频文件格式为pcm转化为ima adpcm格式

iOS 播放系统音效

iOS 播放系统音效

使用 NAudio 1.7+ 播放音频文件

来自流的NAudio?播放音频

Objective-C - 将流数据传递到音频队列