我正在尝试将.net项目转换为.net核心(IoT核心)。除了我的“system.media”块外,其他所有东西都在工作,因为.net核心根本没有system.media附带。我的选择显然是使用NAudio。但是,我不知道如何使NAudio从流中播放音频。

这是我正在尝试使用NAudio转换的当前代码。有什么建议么?

public void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
SoundPlayer player = new SoundPlayer(args.EventData);
player.PlaySync();
args.EventData.Dispose();
}

我尝试使用此代码,但没有成功。
        using (Stream ms = new MemoryStream())
    {
        using (Stream stream = WebRequest.Create(url)
            .GetResponse().GetResponseStream())
        {
            byte[] buffer = new byte[32768];
            int read;
            while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
        }

        ms.Position = 0;
        using (WaveStream blockAlignedStream =
            new BlockAlignReductionStream(
                WaveFormatConversionStream.CreatePcmStream(
                    new Mp3FileReader(ms))))
        {
            using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
            {
                waveOut.Init(blockAlignedStream);
                waveOut.Play();
                while (waveOut.PlaybackState == PlaybackState.Playing )
                {
                    System.Threading.Thread.Sleep(100);
                }
            }
        }
    }

最佳答案

您是否尝试过使用AudioGraph APIs?这些是在IoT核心版上播放音频的好方法。我已经在Raspberry Pi上成功使用了它。

关于c# - NAudio从流?播放音频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49713232/

10-14 05:11