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