2011-06-13 84 views
0

我有一個應用程序,播放一些與NAudio的MP3文件,我花了幾天試圖通過網絡發送這種聲音到另一臺電腦,但我失去了什麼是更好的方式來做到這一點。 我需要使用哪些類來訪問緩衝區以及如何重新構建要在遠程播放的字節數組?什麼是最好的,發送mp3Frames,或者可以更好地發送原始或pcm數據?NAudio網絡流

我真的失去了,任何幫助,將不勝感激。 謝謝

回答

1

我會建議通過網絡傳輸MP3,而不是PCM,因爲PCM文件比MP3大很多。

最新的NAudio source code包括一個演示(在NAudioDemo項目中)播放互聯網MP3收音機,它將告訴你如何接收MP3幀,解壓縮它們,並將它們放入BufferedWaveProvider進行播放。我寫了an article關於這如何在我的博客上工作。

NAudioDemo還包括網絡對等音頻聊天演示,使用UDP套接字發送音頻,儘管MP3不用於壓縮。

+0

謝謝,我認爲它現在正在工作,但我仍然有問題。 – Thir 2011-06-14 16:55:07

+0

謝謝,我認爲它現在正在工作,但我仍然有問題。我逐幀閱讀MP3幀併發送rawData,但緩衝區快速增長(它在一個循環內),我得到緩衝區滿了異常。我試圖改變緩衝區大小,但顯然這不是解決方案。每次bufferedWaveProvider讀取一個塊時,我都嘗試讀取下一幀,但在這種情況下,緩衝區中沒有足夠的數據來播放該文件。 (太慢了)。你能幫助我嗎?謝謝。 – Thir 2011-06-14 17:03:11

+0

快速而簡單的解決方案 - 只需在您的bufferedWaveProvider存在太多內容時執行Thread.Sleep,然後等待其停止。更好的解決方案,將MP3Frames放入隊列中。然後另一個線程監視bufferedWaveProvider,當它變得低時,從隊列中彈出一個MP3幀,解壓縮並將其粘貼到bufferedWaveProvider中。 – 2011-06-14 18:16:26