2011-05-12 33 views
0

我正在做的是創建一個簡單的Java音頻流媒體服務器。爲了簡單起見,它只是靜態的MP3文件,但我相信理論的轉移。客戶端可以是本地的或通過互聯網,並且可以是可以被編程爲與服務器通信的任何設備或計算機。用Java創建音頻流 - 從哪裏開始?

我從來沒有任何編程相關的流媒體/網絡或服務器/客戶端之前,所以我認爲這將是一個有益的鍛鍊,學到新的東西。

事情我認爲有需要考慮:

  • 認證客戶端 - 這將如何做,如何將服務器知道用戶是目標用戶。

  • 會有某種形式的客戶端上的緩衝。當客戶端正在從緩衝區中讀取時,可能會在緩存的緩衝區文件上產生文件鎖定,因此我無法簡單地將文件的新分段追加到最後。

  • 如何將MP3文件的錢你真的需要玩什麼呢?它是線性的,所以第一個x KB包含音樂聲音的前y秒的所有信息。

  • 我將文件流式傳輸到哪個區段?

  • 是否有可能知道你是通過流MP3文件多遠?這將如何處理?

  • 什麼協議,我實際上用於流?我假設某種HTTP請求在這裏最好?可以通過80以外的端口執行HTTP請求,不是嗎?

  • 的Java是否有可靠的傳輸協議,內置的還是你必須進入基本事實和處理髮送數據包來回確認...等...

  • 是否有可能加密流量?對於文件沒有被讀取的足夠安全性,但不是那麼多,諸如移動設備之類的低功率設備不能足夠快速地解密以便流暢播放。

我相信還有很多事情需要考慮,但那些是我能想到的其他問題。

我在上述所有假設有不是一個真正的問題,它更自言自語,所以我想爲什麼的問題是:我從哪裏開始?有沒有有趣的內容?有沒有人對上述有任何想法?

只是重申一下,我在看「重新發明輪子」在這裏,我想了解這類的東西,我就跟着去了,所以我可以傳遞知識到其他的東西。

回答

0

什麼協議,我實際使用 流?我假設某種HTTP 請求在這裏最好?這是 可能做一個HTTP請求通過一個 端口以外的80是不是?

是的,你可以去了另一個端口超過80(使用符號http://streamserver.com:8080/path/to/music.mp3

確實的Java有內置的協議 可靠傳輸或你有 進入基本事實及處理 與發送數據包背部和確認來回 ...等...

它,如果你正在使用HTTP

是否可以加密流量?由於 文件沒有被讀取,但沒有太多 足夠的安全性,低功耗設備,如 手機不能足夠快地解密它 流暢播放。

標準SSL加密連接的速度非常快,併爲您的

+0

出於興趣足夠安全,這將是我的選擇,如果我沒有使用HTTP?我假設我可以使用某種套接字傳輸?這樣做的缺點是什麼?感謝您的答覆。 – Cheetah 2011-05-12 15:47:07

+0

如果你不想使用http,那麼將需要一個tcp連接,然後你必須制定你自己的協議(客戶端必須告訴服務器哪個文件開始流式傳輸,EoF需要明確處理) – 2011-05-12 16:04:29

+0

聽起來(從學習的角度來看)更有趣。那意味着我將不得不做我自己的緩衝,緩存和碎片 - 對吧?這是你指的那種東西:http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html – Cheetah 2011-05-12 16:48:43