Webrtc最新動向
-
Upload
yusuke-naka -
Category
Internet
-
view
5.950 -
download
6
description
Transcript of Webrtc最新動向
WebRTC 最新動向
WebRTC Meetup Tokyo #2Yusuke Naka
自己紹介• なかゆうすけ( Twitter : @Tukimikage ) 所属
– NTT コミュニケーションズ 先端 IP アーキテクチャセンタ オフィシャルワーク
– HTML5 Experts.jp ( HTML5 Experts Works ) 副編集長
– WebRTC 開発者向けフレームワーク「 SkyWay 」中の人 コミュニティワーク
– html5j 自動車部部長– html5j エンタープライズ部スタッフ
伝えたいこと• WebRTC にかぎらず是非新しい情報をウォッ
チしてみると面白いよ
• 標準化の現場でどのような議論がされているか
• メーリングリストなどでホットなピックスはなにか?(結構個人的に)
ごめんなさい• 文字ばっかりでつまらないかも
• Google 翻訳先生に多大なご協力を頂きました。
• 内容に間違いがあればご指摘下さい
目次• 最新情報を収集するには?• W3C での標準化動向• 気になるトピックス– Chrome M34,M35 リリース– iOS 対応– H.264 対応– ObejctRTC について
• カンファレンスなどの予定– WebRTC Conference Atlanta
最新情報を収集するには?• 公開 Google Group
– discuss-webrtc• https://groups.google.com/forum/#!forum/discuss-webrtc• 最新情報をキャッチアップできる• 情報量が多い• すごく初歩的な話題からかなり高度な話題まで様々• ウォッチするのは結構疲れます・・・• Chrome に関係する情報が多い• iOS 向けの WebRTC スタックについても結構議論されている
– mozilla.dev.media• https://groups.google.com/forum/#!forum/mozilla.dev.media• Mozilla に関係する WebRTC 等のメディア処理系 API の議論が行われている
• WebRTC WG Wiki– http://www.w3.org/2011/04/webrtc/wiki/Main_Page– 標準化の動向を知るならここ– ミーティングの開催情報やミーティングで提出されたプレゼン資料が読める– 英語が堪能な方であれば、 IRC を垂れ流しておくと面白いかも
• irc://irc.w3.org:6665#webrtc
W3C 標準化動向主に JavaScriptAPI についての標準化を実施
Web Real-Time Communications Working Grouphttp://www.w3.org/2011/04/webrtc/
W3C 標準化動向• ロードマップ
– WebRTC 1.0 ( PeerConnection )• Editors Draft 2014/04/10 – 2014/05/21版を現在作成中• Working Draft 2014/04/21• Last Call Working Draft 2014/Q1 ( 9 月以降?)• Candidate Recommendation 2014/2Q ( 12 月以降?)
– Media Capture and Streams ( getUserMedia )• Editors Draft 2014/03/07 – 2014/05/21版を現在作成中• Working Draft 2012/6/28
– MediaStream Recording• Editors Draft 2013/11/08• Working Draft 2013/02/05
– MediaStream Capture Scenarios• Editors Draft 2013/11/08• Working Draft 2012/05/06とりあえず、遅れ気味です・・・・。
W3C 標準化動向• 昨年暮れから今年にかけて– 2013/11/12@TPAC2013 オフライン・ミーティン
グ• 中国 深セン
– 2014/05/12 オフライン・ミーティング• アメリカ ワシントン DC
W3C 標準化動向• 2013/11/12@TPAC2013 オフライン・ミーティング
– Candidate Pool という仕組みを作り ICE 候補者情報を収集する– IceRestart という ICE を中断再開する API の提案– Partial Offers の提案( SDP の一部を更新するため?)– Stream Control API の提案
• Pause / Resume(Sending & Receiving)• Rejecting Offered Stream• Remove Stream
– DTMF API の提案– Data Channel でのメッセージサイズについて
• Blob で大容量のデータを送る場合のメモリバッファを考慮せねば• ストリームデータを送る API が欲しい・・・• IETF で議論してくれ
– WebRTC Stats API• そもそも、 ICE の統計情報とかだれが見たいんだっけ?それ意味あるの?・・・
– DTLS Key Control• WebCryptAPI を利用して DTLS 用の鍵をアプリケーションレベルで生成( 2014 年には実装した
い?– RTCIdentity API の提案
• PeerJS でいうところの PeerID を管理する
W3C 標準化動向• 2014/05/12 オフライン・ミーティング– Stream Isolation
出展 : https://www.w3.org/wiki/images/2/2d/Martin-slides.pdf
W3C 標準化動向• 2014/05/12 オフライン・ミーティング– WebRTC Stats API の議論状況の報告• https://www.w3.org/2011/04/webrtc/wiki/Stats• MediaStreamTrack objects• ICE Candidate Pairs / Candidate Objects• Data Channel Objects• Audio Volume• Present stats• Network Performance stats 等
W3C 標準化動向• 2014/05/12 オフライン・ミーティング– RTCRtpSender / RTCRtpReceiver の提案• PeerConnection.addTrack(Stream.AudioTracks()[0], Stream)• function onaddtrack(e) { receiver = e.receiver; }• Transports プロパティで情報収集
– ICE Connection State– Remote DTLS certificate
• Encoding パラメーター– 現在のエンコードパラメータを取得– エンコード方式を直接変更
» 最大送信レートを可変» ストリームの一時停止、再開» コーデックを変更
W3C 標準化動向• 2014/05/12 オフライン・ミーティング
• ブラウザ同士の相互運用性についての問題
出展: https://www.w3.org/2011/04/webrtc/wiki/images/8/80/W3c-interop.pdf
ブラウザ対応情報• RTCPeerConnection
ブラウザ対応情報• getUserMedia/MediaStream
W3C 標準化動向• 2014/05/12 オフライン・ミーティング
• WebRTC Error Reporting– 省略・・・
• 今後の仕様策定の計画– RTCRtpSender / RTCRtpReceiver 6 月中旬– バグフィクス等 9 月中旬– Last Call 9 月末※議事録までは読んでいないので、結論は違うかも
気になるトピックス• Chrome M34 リリース• Chrome M35 リリース• FirefoxOS 対応• iOS 対応• H.264 対応
Chrome M34 リリース( 4 月)– 主な変更点
• マルチモニタの画面共有に対応• Peer Connection を試験的に IPv6 対応• Chrome Android Beta に – disable-webrtc-encryption フラグを実装• SCTP OPEN ACK に対応
– ACK が返ってくるまで待機する– もともと SCTP は UDP上で到着順序を保証する
• Sandbox モードで AEC (オーディオエコーキャンセラー)のデバッグレコーディングを有効化(保存はできない)
• リモートオーディオトラックで個々のボリュームコントロールが可能になる
• “a=rtcp-fb:100 nack pli” に対応• Stable版で desktopCapture API に対応
Chrome M35 リリース(5月)– 主な変更点
• MediaStreamTrack.readyState() に対応– トラックの状態を取得
» “new” / “live” / “ended”
• CPU overload control in WebRTC– CPU負荷が高くなると入力解像度、フレームレート、エンコード方式を制御して、処理を軽くす
る?– JS側では制御できない
• SDES を標準で無効に– Firefox は元から DTLS-SRTP のみサポート– Chrome は SDES をサポートしその後DTLS-SRTP に– IETF の議論で SDES は必須ではないとなっている– SDES と DTLS-SRTP の違い
» http://webrtchacks.com/webrtc-must-implement-dtls-srtp-but-must-not-implement-sdes/
• ウィンドウキャプチャ時には最前面に共有ウィンドウが表示される• スクリーンキャプチャ時の通知バーに非表示オプションが追加• MediaStreamTrack.clone() に対応
– メディアストリームトラックを複製する• DesktopCapture API を HTTPS スキーマーでしか利用できないように変更• MediaStream のトラックで配信が停止している場合に黒いフレームをレンダリング
https://groups.google.com/d/msg/discuss-webrtc/8Um1WESQ97g/2ETFKEiFcpUJ
iOS 対応は?– よく勘違いされますが、 iOS版 Chrome では動きませ
ん– WebRTC のネイティブスタックを用いて各自実装
• Webrtc-ios– https://github.com/gandg/webrtc-ios– iPad or iPhone 対応
– サードパーティ製ライブラリを利用する• Temasys Plugin
– https://temasys.atlassian.net/wiki/display/TWPP/WebRTC+Plugins– IE と Safari の PC版に対応
出展: https://temasys.atlassian.net/wiki/display/TWPP/WebRTC+Plugins
FirefoxOS 対応– Firefox OS 1.2 for developers• mozGetUserMedia 実装• RTCPeerConnection 実装• バグで動かない(今は無効化されている)
– https://bugzilla.mozilla.org/show_bug.cgi?id=942343– 2013/11/26 現在(対応進んでない?)
• Firefox OS 2.0 でのロードマップ– H.264 のハードウェアサポート(次のスライド)– Firefox OS Loop Client (?)– User-facing service のリリース準備中– https://wiki.mozilla.org/B2G/Roadmap
FirefoxOS 対応
出展: https://bugzilla.mozilla.org/show_bug.cgi?id=984239
H.264 の対応は?• 公式にはなかなか結論が出ない・・・– Cisco がオープンソース H.264 コードを公開
http://www.engadget.com/2013/10/30/cisco-plans-to-open-source-h-264-code-for-webrtc/
– Open H.264 に対応するためのパッチを開発• Kaiduan氏( 2014/3/20 )• 現在コードレビュー中
https://webrtc-codereview.appspot.com/21499004/
ObjectRTC
• WebRTC の対抗馬?– 2014/01/29 editor’s draft 初版公開
• リファレンスコード– https://github.com/openpeer/ortc
• W3C ORTC Community Group– http://www.w3.org/community/ortc/participants
• Microsoft さんが注目– http://status.modern.ie/webrtcwebrtcv10api?term=Object%20RTC
– CU-RTC-Web の考え方は取り入れているが別物» ソケットレベルまでコントロールできるためセキュリティリスクが
あった» 強力だが使いにくい
出展: http://status.modern.ie/webrtcwebrtcv10api?term=Object%20RTC
ObjectRTC
• 将来は WebRTC をも飲み込む勢い?
出展: http://ortc.org.s59135.gridserver.com/wp-content/uploads/2013/11/Raymond-Robin-ORTC-API.ppt
ObjectRTC
• ObjectRTC陣営が考える「 WebRTC に足りてないもの」– モバイルアプリとのプロトコルの互換性– キャリアスケールのオペレーションに必要な監視、診断機能– Cloud環境への対応
• サーバ側の WebRTC 実装(クライアントとしての)• STUN/TURN の認証情報管理• オーディオ、ビデオのミキシング• SIP プロキシ• XMPP接続
– 拡張性• H.264/SVC などのモバイルにやさしいコーデックの追加
– これらに対応した次世代の JavaScriptAPI
ObjectRTC
• ObejectRTC の価値とは?– 簡単なブラウザコード
– モバイル開発用の SDK 「 ortclib 」を提供• https://github.com/openpeer/ortclib
– Node.js 用のサーバコードを提供• https://github.com/openpeer/ortc-node
– WebRTC 1.0 API との互換性を確保• webrtc-shim• https://github.com/openpeer/webrtc-shim• Chrome 、 Firefox 、 IE全てで動く WebRTC アプリが作れる
ObjectRTC
• アーキテクチャの違い(ざっくり)
出展: http://ortc.org.s59135.gridserver.com/wp-content/uploads/2013/11/Raymond-Robin-ORTC-API.ppt
SDP という考え方が隠蔽された
ObjectRTC• コードの例
var options = new ortc.RTCConnectionOptions([new ortc.RTCIceServer("stun:168.61.2.180:8888")]);
var rtcConn = new RTCConnection(options);
ortc.getUserMedia({ "audio": true, "video": true }, gotMedia,gotMediaError);
// ローカルの Candidate を取得rtcConn.oncandidate = function(){};
//全ての Candidate を発見したrtcConn.onendofcandidates = function(){}
// リモートとのペアリングが完了したrtcConn.onactivecandidate = function(evt){}
// 知らない Track を受信したrtcConn.onunknowntrack = function(evt){}
//接続状態が変化したrtcConn.onstatechanged = function(evt){
カンファレンスなど
年2回開催中6月はアトランタ、11月はサンタ・クララ