2011-05-10 127 views
5

我正在構建一個通過麥克風收集語音爲wav文件的應用程序。這些錄音需要流式傳輸到服務器並保存(作爲wav文件,我知道它們很大,但它們必須是wav)。我還需要將音頻(可以是mp3)從服務器傳輸到Web應用程序以供用戶播放。我不知道如何實現這一點,但我想使用Java EE應用程序,因爲我熟悉Java並且比Flex更容易維護(我們在工作中遇到舊的Flex代碼時遇到問題)。我的擔憂是:用Java流媒體音頻

  1. 如何緩衝傳輸,以便用戶可以無間斷地聽到整個文件?傳輸整個文件然後播放也不錯,但知道如何做到這一點很好。
  2. 如何驗證傳輸到服務器?我可以發送數據包並驗證/重發每個數據包嗎?
  3. 是否有現有的API(請!),還是我必須手動寫這個?
+0

目前尚不清楚,從你的問題,有多少成分都參與了整個應用程序:,同樣取決於你的架構 -

  • 阿帕奇百科全書文件上傳可能是有用的。您寫道:「我還需要將音頻從服務器傳輸到Web應用程序以供用戶播放」。這意味着有一個Web應用程序*和*一個服務器,而這兩者是完全不同的。如果這是正確的,那麼提供關於當前存在的信息會很有用。 – Isaac 2012-09-30 14:23:18

  • 回答

    1

    正如我評論你的問題,目前還不清楚你是否已經決定拓撲中存在哪些組件。尤其是,您是否已經有一個負責存儲這些音頻文件的服務器進程尚不清楚。因此,我必須在我的答案中作出一些假設。隨時發表評論,我會盡我所能進行調整。

    1. 的唯一方法確保音頻文件(最終用戶),而網絡引起的中斷髮揮是讓最終用戶(或在最終用戶側運行的應用程序,如某些JavaScript代碼)在完整下載音頻流後播放。除非你這樣做,否則你只能減少休息的風險;你無法消除它。即使是最複雜的緩衝算法也無法應對99.99%的網絡中斷來緩衝整個流。由於我不確定您是否擁有客戶端應用程序,因此我不能建議客戶端如何下載整個文件,而不是「隨時」播放它。在最簡單的情況下,您可能已足夠使用Content-Disposition標題:http://en.wikipedia.org/wiki/MIME#Content-Disposition

    2. 此問題的答案也取決於您如何構建解決方案。不過,一般來說,只要你使用標準流API(比如Java IO),我就不用擔心驗證內容是否有錯誤。網絡堆棧中已經提供了較低的糾錯(例如,您的操作系統的網絡驅動程序)。 http://commons.apache.org/fileupload/