如何在C#中播放MP3流

3

我希望在我的C#应用程序中播放一个MP3流。我有一个服务器应用程序,它捕获波形音频并将其转换为MP3,然后将其写入网络流中。客户端随后读取此流以播放MP3。我尝试使用下面的代码示例使用NAudio,但会导致异常:

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);
                    }
                }
            }

1
你看到了什么异常?出现在哪一行代码? - BrokenGlass
基本上,这段代码是在循环中运行的,当套接字接收到新数据包后,经过几次迭代后,会出现一个消息框,显示“WaveOut设备在WaveOut.finalize()时未关闭”的异常。 - Ehtsham
2个回答

1

我在我的博客上发布了一篇文章,解释了如何使用NAudio播放MP3流。基本上,您需要一个线程下载MP3帧,对其进行解压缩并将其存储在BufferedWaveProvider中。然后另一个线程使用BufferedWaveProvider作为输入进行回放。


您好。希望您能看到这条消息。我尝试了您上面的示例,但发现需要完全下载文件后才开始播放。NAudio是否支持实时播放? - Ali Tor

1

http://www.un4seen.com/

bass.dll .NET api

我知道这不是你代码的答案,但它是一个很好的音乐库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接