【问题标题】:How can I play byte array of audio raw data using NAudio?如何使用 NAudio 播放音频原始数据的字节数组?
【发布时间】:2015-05-01 18:53:23
【问题描述】:
byte[] bytes = new byte[1024];

假设bytes 是一个填充了音频原始数据的数组。

如何使用WaveOut 对象播放这个字节数组?

_waveOut.Init(bytes); // <- Error: cannot resolve method.
_waveOut.Play();

【问题讨论】:

    标签: c# .net audio naudio


    【解决方案1】:

    我想通了,这里是解决方案:

    byte[] bytes = new byte[1024];
    
    IWaveProvider provider = new RawSourceWaveStream(
                             new MemoryStream(bytes), new WaveFormat());
    
    _waveOut.Init(provider);
    _waveOut.Play();
    

    【讨论】:

    • 当我播放音频时,音高比平时高
    【解决方案2】:

    接受的答案假设字节流是 44,1kHz,16 位,立体声。如果你有其他东西,你必须提供 WaveFormat 中的编码

    byte[] bytes = new byte[1024];
    
    IWaveProvider provider = new RawSourceWaveStream(
                             new MemoryStream(bytes), new WaveFormat(48000, 16, 1));
    
    _waveOut.Init(provider);
    _waveOut.Play();
    

    如果您的原始数据实际上是一个 wav 文件,则您已经在标头中有编码并且可以使用此方法

    byte[] bytes = new byte[1024];
    
    WaveFileReader reader = new WaveFileReader(new MemoryStream(bytes));
    
    _waveOut.Init(reader);
    _waveOut.Play();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      相关资源
      最近更新 更多