- From: Kang-Hao (Kenny) Lu <kennyluck@w3.org>
- Date: Sat, 16 Jul 2011 13:35:57 +0800
- To: 中文HTML5同樂會ML <public-html-ig-zh@w3.org>
- CC: 周裕波 <itchina110@gmail.com>
之前裕波在問我 HTML5 有沒有涉及流媒體的部份,其實 WHATWG 的 HTML5 裡面有 點對點傳輸(PeerConnection)已經很久了,剛好幾天前 Mozilla 與 Cisco 合作 推出了一份新的 API,在這裡稍微整理一下各種進展。請參考: http://www.w3.org/html/ig/zh/wiki/WebRTC 有規範等等的連結。 目前有兩份 API 的提案,基本上差距比起之前提到 Google 跟 Mozilla 的兩個 Audio API 的差距[1]比起來可以說不是很大,幾項比較大的差異包括: * 當從遠端(PeerConnection)或是從自己的攝影機(getUserMedia)取得一個 stream 之後,用 <video> 顯示的方式。 Google 版: video.src = window.URL.getObjectURL(stream); Mozilla/Cisco 版: video.stream = stream; 我個人是支持 Moziila/Cisco 版的,因為比較好懂而且老實說 window.URL 看起 來真的不太順眼。另一方的講法是這重複了 File API 的模式 (window.URL.getObjectURL)不需要新屬性或是定義同時有 src 跟 stream 情形 處理方式的必要。 另外,Mozilla/Cisco 版的 stream 屬性還可以用來取得 <video> 、<audio> 跟 <canvas>(!)的串流,<canvas> + PeerConnection 就可以做沒有伺服器端的多 人遊戲了,十分令人興奮。請參考 Mozilla/Cisco 版規範例子「Simulcast Video」的程式碼。 Google 版的規範好像沒有從元素讀出 stream 的方法(有錯請更正),我想可能 是該編輯(Hixie)希望先把最基本的使用案例—視訊會議—搞穩定,那份規範也比 Moziila/Cisco 版的詳細很多。 * 多人 PeerConnection 的連線方式 Moziila/Cisco 的 PeerConnection 的 API 是用類似 Socket 的 open() listen() accept() 模式,可以 accept() 很多使用者一次廣播。Google 版的則 是一個 PeerConnection 就是一對一,也就是要建立一對多連線就需要建立多個 PeerConnection,Hixie 的解釋是 WebRTC 協定用的 ICE 不支援一對多,另外就 是他的設計裡面哪邊是開啟連線方,哪邊是接受連線方是自動判定的。(但是目前 還看不懂,徵求對 ICE、TURN、STUN、SDP 這些東西熟的朋友們解惑一下~~) * 其他還有像是一些小差異像是語法不同 Google: new PeerConection("audio, video") 跟 Mozilla/Cisco: new PeerConnection({audio: {}, video: {}}) 等等,完整把的請參考[2]的討論。 這裡有幾件事情是中文興趣小組可以做的: * 確定一下翻譯 「Web Real-Time Communication」翻成「Web/互聯網實時通訊」可以嗎? 台灣這邊好像不太常聽到「實時」這個字眼,不過翻成「即時」好像是「即時通 (Instant Messenger)」的 instant 不太對。 * 大家可以一起來翻譯在 IETF 的 WebRTC 使用案例文檔 這份文件提到了一些使用 WebRTC 的協定跟 API 的情節,翻譯這份文件有助於了 解未來這個 API 的潛力,並且可以看看這些情節在中文世界是不是不適用。我已 經開了一個翻譯的地盤,仍然在我們的 wiki[3] 上,文檔的結構基本上跟 HTML5 很類似,就是醜了一點 :p 裕波,你說要找人翻譯流媒體相關的那就來翻這個吧! * 幫忙互相解惑一下,下面提一些我的問題。也歡迎多提一些更這個最新標準相關 的問題。 [1] http://lists.w3.org/Archives/Public/public-html-ig-zh/2011Apr/0064 [2] http://lists.w3.org/Archives/Public/public-webrtc/2011Jul/0012 [3] http://www.w3.org/html/ig/zh/wiki/Draft-ietf-rtcweb-use-cases-and-requirements == WebRTC 問題 == * PeerConnection.send() 的作用是?所謂的 out-of-band signaling 是什麼? (這可能是很基本的問題,不過如果有人能為我解惑則感激不盡) * 這個 API 可以拿來做點對點 IM 嗎? 感覺好像可以,雖然 PeerConnection.send() 是 UDP 應該不能做 IM,不過如果 用 STUNS 的話好像是 TLS-over-TCP 所以資料不會漏? 另一種可能性,有人提議 PeerConnection 裡面的參數最終會變成一個 TURN 的 URL,像是:new Connection("turn:xxx.xxx.xx..."),那以後是不是以後有可能 可以直接 new WebSocket("turn:xxx.xxx.xx..")? * MediaStreamRecorder.getRecordedData 會得到的是該物件從出生到呼叫這個方 法為止的串流資料。我沒看到銷毀一個 MediaStreamRecorder 的方法,那不是代 表瀏覽器要一直記錄這個串流?這真的有辦法實作嗎? * 如果我沒搞錯的話,Google 版 2.5 節[4]之前的例 子,local.signalingChannel 應該是 local.processSignalingChannel 才對 [4] http://www.whatwg.org/specs/web-apps/current-work/webrtc.html#the-data-stream == 其他討論區 == * W3C WebRTC 工作組郵件群[5] * IETF rtcweb 工作組郵件群[6] * WHATWG 的郵件群[7]討論過很多次[8] [5] http://lists.w3.org/Archives/Public/public-webrtc/ [6] http://www.ietf.org/mail-archive/web/rtcweb/current/maillist.html 點 "rtcweb List Information" 即可訂閱 [7] http://lists.whatwg.org/pipermail/whatwg-whatwg.org/ [8] http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-March/thread.html#30873 http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-March/thread.html#30941 直接在 [7] 的搜尋條搜索 "peer" 可以得到多年的結果 此致 呂 康豪(Kenny), 中文興趣小組W3C連絡人 推特: http://twitter.com/kanghaolu Google+: https://plus.google.com/112088462407783855918/posts 新浪微博: http://t.sina.com.cn/1950042164
Received on Saturday, 16 July 2011 05:31:43 UTC