Webrtc最新動向

31
WebRTC 最最最最 WebRTC Meetup Tokyo #2 Yusuke Naka

description

WebRTC Meetup Tokyo #2 の発表資料です!

Transcript of Webrtc最新動向

Page 1: Webrtc最新動向

WebRTC 最新動向

WebRTC Meetup Tokyo #2Yusuke Naka

Page 2: Webrtc最新動向

自己紹介• なかゆうすけ( Twitter : @Tukimikage ) 所属

– NTT コミュニケーションズ 先端 IP アーキテクチャセンタ オフィシャルワーク

– HTML5 Experts.jp ( HTML5 Experts Works ) 副編集長

– WebRTC 開発者向けフレームワーク「 SkyWay 」中の人 コミュニティワーク

– html5j 自動車部部長– html5j エンタープライズ部スタッフ

Page 3: Webrtc最新動向

伝えたいこと• WebRTC にかぎらず是非新しい情報をウォッ

チしてみると面白いよ

• 標準化の現場でどのような議論がされているか

• メーリングリストなどでホットなピックスはなにか?(結構個人的に)

Page 4: Webrtc最新動向

ごめんなさい• 文字ばっかりでつまらないかも

• Google 翻訳先生に多大なご協力を頂きました。

• 内容に間違いがあればご指摘下さい

Page 5: Webrtc最新動向

目次• 最新情報を収集するには?• W3C での標準化動向• 気になるトピックス– Chrome M34,M35 リリース– iOS 対応– H.264 対応– ObejctRTC について

• カンファレンスなどの予定– WebRTC Conference Atlanta

Page 6: Webrtc最新動向

最新情報を収集するには?• 公開 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

Page 7: Webrtc最新動向

W3C 標準化動向主に JavaScriptAPI についての標準化を実施

Web Real-Time Communications Working Grouphttp://www.w3.org/2011/04/webrtc/

Page 8: 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とりあえず、遅れ気味です・・・・。

Page 9: Webrtc最新動向

W3C 標準化動向• 昨年暮れから今年にかけて– 2013/11/12@TPAC2013 オフライン・ミーティン

グ• 中国 深セン

– 2014/05/12 オフライン・ミーティング• アメリカ ワシントン DC

Page 10: Webrtc最新動向

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 を管理する

Page 11: Webrtc最新動向

W3C 標準化動向• 2014/05/12 オフライン・ミーティング– Stream Isolation

出展 :  https://www.w3.org/wiki/images/2/2d/Martin-slides.pdf

Page 12: Webrtc最新動向

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 等

Page 13: Webrtc最新動向

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 パラメーター– 現在のエンコードパラメータを取得– エンコード方式を直接変更

» 最大送信レートを可変» ストリームの一時停止、再開» コーデックを変更

Page 14: Webrtc最新動向

W3C 標準化動向• 2014/05/12 オフライン・ミーティング

• ブラウザ同士の相互運用性についての問題

出展: https://www.w3.org/2011/04/webrtc/wiki/images/8/80/W3c-interop.pdf

Page 15: Webrtc最新動向

ブラウザ対応情報• RTCPeerConnection

Page 16: Webrtc最新動向

ブラウザ対応情報• getUserMedia/MediaStream

Page 17: Webrtc最新動向

W3C 標準化動向• 2014/05/12 オフライン・ミーティング

• WebRTC Error Reporting– 省略・・・

• 今後の仕様策定の計画– RTCRtpSender / RTCRtpReceiver 6 月中旬– バグフィクス等 9 月中旬– Last Call 9 月末※議事録までは読んでいないので、結論は違うかも

Page 18: Webrtc最新動向

気になるトピックス• Chrome M34 リリース• Chrome M35 リリース• FirefoxOS 対応• iOS 対応• H.264 対応

Page 19: Webrtc最新動向

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 に対応

Page 20: Webrtc最新動向

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

Page 21: Webrtc最新動向

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

Page 22: Webrtc最新動向

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

Page 23: Webrtc最新動向

FirefoxOS 対応

出展: https://bugzilla.mozilla.org/show_bug.cgi?id=984239

Page 24: Webrtc最新動向

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/

Page 25: Webrtc最新動向

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

Page 26: Webrtc最新動向

ObjectRTC

• 将来は WebRTC をも飲み込む勢い?

出展: http://ortc.org.s59135.gridserver.com/wp-content/uploads/2013/11/Raymond-Robin-ORTC-API.ppt

Page 27: Webrtc最新動向

ObjectRTC

• ObjectRTC陣営が考える「 WebRTC に足りてないもの」– モバイルアプリとのプロトコルの互換性– キャリアスケールのオペレーションに必要な監視、診断機能– Cloud環境への対応

• サーバ側の WebRTC 実装(クライアントとしての)• STUN/TURN の認証情報管理• オーディオ、ビデオのミキシング• SIP プロキシ• XMPP接続

– 拡張性• H.264/SVC などのモバイルにやさしいコーデックの追加

– これらに対応した次世代の JavaScriptAPI

Page 28: Webrtc最新動向

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 アプリが作れる

Page 29: Webrtc最新動向

ObjectRTC

• アーキテクチャの違い(ざっくり)

出展: http://ortc.org.s59135.gridserver.com/wp-content/uploads/2013/11/Raymond-Robin-ORTC-API.ppt

SDP という考え方が隠蔽された

Page 30: Webrtc最新動向

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){

Page 31: Webrtc最新動向

カンファレンスなど

年2回開催中6月はアトランタ、11月はサンタ・クララ