WebRTC 最新動向
WebRTC Meetup Tokyo #2
Yusuke 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 Group
http://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月)
– 主な変更点
• マルチモニタの画面共有に対応
• PeerConnectionを試験的に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+Plugin
s
– 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月はサンタ・クララ

Webrtc最新動向

Editor's Notes

  • #2 趣旨:WebRTCの標準化、ブラウザ実装、製品情報等に関する最新動向を伝える 時間:20分(スライドは30ページぐらい) ターゲット:WebRTCとはなにか?を理解している人(すぐに使ってみたいWebエンジニア向け) 表の趣旨:最新動向を知ってもらう        発表後も、バイブル的な資料にする 裏の趣旨:WebRTC業界での知名度向上 内容 標準化の最新動向 ブラウザ実装の最新動向 トピックス(discassionwebrtcから) ObjectRTCについて
  • #8 IETFの話はしません
  • #9 グラフ化してもいいいかも