如何在 NAudio 中将字节数组转换为 WaveStream?
How to convert a byte array into WaveStream in NAudio?
我想将字节数组(从 mp3 文件读取)转换为 WaveStream,然后创建 WaveChannel32 以在 NAudio 中播放音频。我可以将字节数组读取到 Stream,然后读取到 Mp3FileReader,但它不允许我更改音量。所以我必须改用WaveChannel32。
您可以将 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);
}
}
}
}
我建议只使用 AudioFileReader
class,因为它可以为您提供音量,并在后台使用 Mp3FileReader
播放 MP3。
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();
我想将字节数组(从 mp3 文件读取)转换为 WaveStream,然后创建 WaveChannel32 以在 NAudio 中播放音频。我可以将字节数组读取到 Stream,然后读取到 Mp3FileReader,但它不允许我更改音量。所以我必须改用WaveChannel32。
您可以将 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);
}
}
}
}
我建议只使用 AudioFileReader
class,因为它可以为您提供音量,并在后台使用 Mp3FileReader
播放 MP3。
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();