2009-07-10 70 views
9

我一直在搜索,我仍然無法得到它。有些人說:你走了,就用它。其他人聲稱它有一定的限制,不允許你在Flash中以你想要的方式使用p2p。Flash10 + p2p真的有用嗎?

因此,這裏有一個簡單的問題:是否可以實現Flash10應用程序,它使用一些現有的torrent文件將視頻/音頻直接傳輸到用戶的瀏覽器中?

如果否 - 爲什麼?有沒有可能的解決方法,這個'不'? 如果是 - 實施有什麼困難,爲什麼沒有人真的做到了?

回答

12

答案几乎不是......好吧,說實話,這是不對的。
@drudru指出了正確的閃存p2p技術,即層雲。

Flash p2p基於RTMFP,它基於UDP構建。實際上,flash確實綁定了一個端口,但這是來自內部。沒有API可以手動執行。

RTMFP基本上允許兩件事情:

  1. UDP流(不可靠的,但快)視頻和音頻。從閃光燈側,您只能發佈您的相機和麥克風流。從服務器,幾乎任何東西。
  2. 遠程調用p2p連接的另一端點。這可以用來傳輸數據。該通信是安全的,即包裝順序和完整性由Flash播放器維持。

p2p基於NAT穿通。 Stratus本身就是介紹服務器。此外,出於安全目的,p2p連接還意味着,兩個客戶端都必須有一個空閒的TCP(如果我沒有記錯的話)連接到服務器。我想,當然會傳輸一些數據,但不是有效載荷。

但是,torrent協議與此非常不同。因此,這不是一種選擇。您可以在RTMFP之上構建等效協議,反向工程stratus服務(或者等到它開源)。這當然也可以被非Flash客戶端使用。但是,再次,您將無法將傳輸的數據視爲視頻,因爲您將得到的內容作爲您撥打NetStream的客戶端的參數,可能是ByteArray。並且您不能播放ByteArray s。您可以編寫非Flash客戶端,將視頻作爲流發佈,但這與我想要的遠沒有什麼關係。

如果你真的想做這樣的事情,你需要Java。您可以對Java小程序進行簽名,並且如果用戶接受證書,則他們幾乎不受限制地訪問,例如,你可以綁定端口。由於Java可以做UDP,所以你可以有一個Java applet,它可以進行洪流(可能只是使用Vuze代碼庫),如果你真的想在閃存中顯示它(反過來需要flv),那麼你可以模仿一個本地的「 Flash Media Server「並在localhost:someport上發佈視頻。但是真的,這個閃光點對我來說似乎非常複雜和無用。不妨嘗試用Java進行回放,希望可以選擇在本地進行。

+0

謝謝,幾乎完整的答案。 – snitko 2009-07-10 18:21:29

0

嗯...這是一個有趣的提議,只保留下載的文件在Flash的內存中。我認爲這當然是可能的,但可能很慢,你會被限制在幾百兆。

編輯:這是不可能的,因爲你不能使用Flash只聽端口,瀏覽器沒有這種類型的能力。

+0

據我所知,Flash10已經允許將文件存儲在磁盤上。 – snitko 2009-07-10 17:31:29

2

Flash不允許您偵聽傳入連接的套接字。這將使 與現有的種子合作變得非常困難。鑑於圍繞此問題的安全問題 ,我沒有看到它發生。

但是,Adobe已經啓動了他們自己的稱爲Stratus的P2P系統。 你可以在這裏閱讀關於http://labs.adobe.com/technologies/stratus/

2

所有這些信息都過時了。