如何在NAudio中将字节数组转换为WaveStream?

时间:2016-05-31 08:12:11

标签: c# naudio wave

我想将一个字节数组(从mp3文件中读取)转换为WaveStream,然后创建一个WaveChannel32来播放NAudio中的音频。我可以将字节数组读取到Stream,然后读取到Mp3FileReader,但它不允许我更改音量。所以我必须使用WaveChannel32。

3 个答案:

答案 0 :(得分:2)

我建议您只使用AudioFileReader课程,因为它为您提供了音量,并为MP3提供了Mp3FileReader

答案 1 :(得分:1)

您可以将Mp3FileReader传递给WaveChannel32,这样您就可以平移和更改音量。

var mp3Bytes = File.ReadAllBytes("d:/Music/RICHARD JOSEPH - Gods17.mp3");
using (var mp3Stream = new MemoryStream(mp3Bytes))
{
    using (var mp3FileReader = new Mp3FileReader(mp3Stream))
    {
        using (var wave32 = new WaveChannel32(mp3FileReader, 0.1f, 1f))
        {
            using (var ds = new DirectSoundOut())
            {
                ds.Init(wave32);
                ds.Play();
                Thread.Sleep(30000);
            }
        }
    }
}

答案 2 :(得分:-1)

 var ms = new MemoryStream(soundArray.ToArray());
            IWaveProvider provider = new RawSourceWaveStream(ms, new WaveFormat());
            var waveOut = new NAudio.Wave.WaveOut();
            waveOut.DeviceNumber = GetDeviceNumber();
            waveOut.Init(provider);
            waveOut.Play();