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