Я хочу преобразовать массив байтов (чтение из mp3-файла) в WaveStream, а затем создать WaveChannel32 для воспроизведения аудио в NAudio. Я могу читать массив байтов в Stream, а затем в Mp3FileReader, но он не позволяет мне изменять громкость. Поэтому я должен использовать WaveChannel32.Как преобразовать массив байтов в WaveStream в NAudio?
ответ
Вы можете передать 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
класс, как и обеспечивает объем для вас и использует Mp3FileReader
под капотом для MP3-файлов.
У меня есть вопрос к вам. как я могу создать mp3-файл из массива байтов? я преобразовал файл в байты, используя ReadAllBytes (файл); в C#. пожалуйста помоги. –
и, пожалуйста, дайте мне знать, если вы можете помочь мне в изменении каналов mono/stereo при преобразовании типа файла из .wav в .mp3 .... Я использую LAME. –
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();
Существует аналогичный пост http://stackoverflow.com/questions/184683/play-audio-from-a-stream-using-c-sharp, не уверенный, может ли он решить вашу проблему. –