使用 NAudio 播放 IMA ADPCM 音频
Play IMA ADPCM Audio with NAudio
我有一个没有 header 的文件,其中存储了 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();
}
}
我该如何解决?
谢谢!
您通常不能直接播放压缩格式。将 RawSourceWaveStream
传递到 WaveFormatConversionStream.CreatePcmStream
以进入 PCM。如果您的 PC 上有可用的正确编解码器并且您已正确指定源 WaveFormat
,那应该可以工作
我有一个没有 header 的文件,其中存储了 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();
}
}
我该如何解决?
谢谢!
您通常不能直接播放压缩格式。将 RawSourceWaveStream
传递到 WaveFormatConversionStream.CreatePcmStream
以进入 PCM。如果您的 PC 上有可用的正确编解码器并且您已正确指定源 WaveFormat