【问题标题】:How to convert a byte array into WaveStream in NAudio?如何在 NAudio 中将字节数组转换为 WaveStream?
【发布时间】:2016-09-29 03:31:17
【问题描述】:

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

【问题讨论】:

标签: c# naudio wave


【解决方案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】:

我建议只使用 AudioFileReader 类,因为它为您提供音量,并在 MP3 的引擎盖下使用 Mp3FileReader

【讨论】:

  • 我有一个问题要问你。如何从字节数组创建 mp3 文件?我已经使用 ReadAllBytes(file) 将文件转换为字节;在 C# 中。请帮忙。
  • 请让我知道您是否可以在将文件类型从 .wav 转换为 .mp3 时帮助我更改通道单声道/立体声......我正在使用 LAME。
【解决方案3】:
 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多