2011-03-01 107 views
3

我想在我的C#应用​​程序中播放MP3流。我有一个服务器应用程序捕获波形音频并将其转换为MP3,然后将其写入网络流。客户端然后读取这个流来播放MP3。我试图与n音讯下面的代码示例,但它会导致异常:如何在C#中播放MP3流#

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 2011-03-01 20:56:24

+0

基本上这个代码是在循环中,并且在套接字在几次传输后接收新数据包时运行“WaveOut设备未在WaveOut.finalize()关闭”消息箱中出现异常。 – Ehtsham 2011-03-02 10:18:12

回答

1

我在博客上发布了一篇文章,解释了how to play back an MP3 stream using NAudio。基本上你有一个线程下载MP3帧,解压缩并将它们存储在BufferedWaveProvider。然后另一个线程使用BufferedWaveProvider作为输入进行回放。

+0

嗨,先生。我希望你会看到这一点。我尝试了上面的例子,但意识到它需要完全下载文件,并在此之后开始播放。 NAudio是否支持实时播放? – 2016-09-17 13:28:31

+0

不,它不。您可以在下载时播放它 – 2016-09-17 13:30:47