Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ORTCの仕様書をざっくり斜め読みする

5,344 views

Published on

WebRTC Meetup Tokyo #4の発表資料です。
http://peatix.com/event/51641

Published in: Technology

ORTCの仕様書をざっくり斜め読みする

  1. 1. ORTCの仕様書をざっくり斜め読みする WebRTC Meetup Tokyo #4 Yusuke Naka
  2. 2. 自己紹介 • なかゆうすけ(Twitter : @Tukimikage)  所属 – NTTコミュニケーションズ技術開発部  オフィシャルワーク – HTML5 Experts.jp(HTML5 Experts Works) 副編集長 – WebRTC開発者向けフレームワーク「SkyWay」の開発  コミュニティワーク – html5j 自動車部部長 – html5j エンタープライズ部スタッフ
  3. 3. 最近の悩み peer.jsとか使っていると、生のWebRTCコード書 けなくなりますよね・・・。
  4. 4. 今日話すこと • ORTCとは? • ORTCの仕様書をざっくり読んでみた – 実装できるほど読み込んではいません・・・。 • 間違いがあれば突っ込んで下さい
  5. 5. ObjectRTC • 今年の2月にIETFで初めて公開 • 2014/01/29 editor’s draft初版公開 • 2014/08/20 editor’s draft 20 公開 • リファレンスコード – https://github.com/openpeer/ortc • W3C ORTC Community Group – http://www.w3.org/community/ortc/participants • MSさんやGoogleさん、Tokboxなどのサービスプロバイ ダーも加わっている。 • WebRTCとうまく親和性をもたせようとしている – WebRTC 1.1で統合か
  6. 6. • Microsoftさんが注目 – http://status.modern.ie/webrtcwebrtcv10api?ter m=Object%20RTC
  7. 7. ORTCをなぜ作ったのか? • ORTC陣営が考える「WebRTCに足りてないもの」 – モバイルアプリとのプロトコルの互換性 – キャリアスケールのオペレーションに必要な監視、診断機能 – Cloud環境への対応 • サーバ側のWebRTC実装(クライアントとしての) • STUN/TURNの認証情報管理 • オーディオ、ビデオのミキシング • SIPプロキシ • XMPP接続 – 拡張性 • H.264/SVCなどのモバイルにやさしいコーデックの追加 – これらに対応した次世代のJavaScriptAPI
  8. 8. RTCで利用するプロトコルの詳細 @iwashi86 WebRTCを支えるマイナーなプロトコルSRTP/DTLS/SCTPを分かった気になる http://www.slideshare.net/iwashi86/20140801-web-rtcmeetup3r3
  9. 9. 仕様書を読む Object RTC (ORTC) API for WebRTC Draft Community Group Report 20 August 2014 http://ortc.org/wp-content/uploads/2014/08/ortc.html 著者: Bernard Aboba, Microsoft Corporation Justin Uberti, Google
  10. 10. Abstract • ORTCはWebRTC 1.0とはことなり、シグナリン グプロトコルやフォーマットを強制しない • Offer/Answerというステータスを管理しない • 「sender」、「receiver」、「transport」という3つ のオブジェクトにそれぞれの機能が定義され ている • 「Track」と「Data Channels」は「sender」と 「receiver」の間で「transport」を介して送信さ れる
  11. 11. ORTC概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  12. 12. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  13. 13. RTCDtlsTransport • DTLSによるデータ転送を司るオブジェクト • DTLSとは? – TLSで暗号化したデータを送受信するプロトコル
  14. 14. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  15. 15. RTCIceTransport • ICEで相互コネクションを確立するオブジェクト – ICEの仕組みを利用して接続先候補を収集し、一番 効率がよいルートで接続を行う – STUN、TRUNなどの仕組みも活用
  16. 16. RTCIceTransport • ICEの状態遷移 状態意味 new 初期状態 checking 接続候補を1件 以上受信 し相手を確認中 connected 接続できる相手 を見つけたが、 他の候補をまだ 探している Completed 接続候補の収 集が終了 disconnected 切断された closed シャットダウン STUNの応答に も返答しません
  17. 17. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  18. 18. RTCIceTransportController • ICE凍結と帯域幅推定の共有を行うオブジェク ト? • 実際の動きがよく理解できませんでした・・・。
  19. 19. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  20. 20. RTCIceListner • ローカルのICE候補を取得するためのイベント リスナー オプション意味 all 全ての候補を収集 nohost ホスト候補を除く全ての 候補を収集 relay TURNサーバを経由する 候補を取得する RTCIceGatherOptions
  21. 21. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  22. 22. RTCRtpSender • Senderに関するオブジェクト • MediaStreamTrackの送信、停止等を担う
  23. 23. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  24. 24. RTCRtpReceiver • Receiverに関するオブジェクト • MediaStreamTrackの受信、停止等を担う
  25. 25. 概要 ORTCの仕様で定義されているオブジェクト郡 垂直方向の矢印:メソッドとイベントのやりとり 水平方向の矢印:メディアやデータのやり取り
  26. 26. RTCRtpListener • DTLSのコネクションからRTPパケットを受信す るためのリスナー
  27. 27. RTP Dictionaries • 便利なユーティリティたち – RTCRtpCapabilities • MediaTrackのCODECを指定することが出来る – RTCRtpCodecCapabilities • CODECの更に細かなオプションを指定可能 • 例えば – Opus » maxplaybackrate / MAX出力サンプリングレート » stereo / true or false – VP8 » max-fr / MAXフレームレート » max-fs / MAXフレームサイズ – H.264 » max-recv-level / 最大受信レベル? » packetization-mode / パケット化モードのサポート
  28. 28. //Send a thumbnail along with regular size var encodings = [{ ssrc: 1, priority: 1.0 }] // Control the resolution and framerate with a different track and RtpSender. var encodings = [{ ssrc: 2, // Prioritize the thumbnail over the main video. priority: 10.0 }]; // Sign Language (need high framerate, but don't get too bad quality) var encodings = [{ minQuality: 0.2, framerateBias: 1.0 }]; // Screencast (High quality, framerate can be low) var encodings = [{ framerateBias: 0.0 }]; //Remote Desktop (High framerate, must not downscale) var encodings = [{ framerateBias: 1.0 }]; // Audio more important than video var audioEncodings = [{ priority: 10.0 }]; var videoEncodings = [{ priority: 0.1 }]; //Video more important than audio var audioEncodings = [{ priority: 0.1 }]; var videoEncodings = [{ priority: 10.0 }]; //Crank up the quality var encodings = [{ maxBitrate: 10000000 }]; //Keep the bandwidth low var encodings = [{ maxBitrate: 100000 }]; SDPのSの字も無いですね・・・
  29. 29. RTCDtmfSender • DTMFトーンを送るAPI • コールセンターの受付などに活用 • WebRTC 1.0のDtmfSender APIに準拠 • WebRTCも今はChromeしか動かないはず DTMF Tone 送信サンプル:https://think-sv.net/dtmf/
  30. 30. RTCDataChannel • データチャネル用オブジェクト
  31. 31. RTCSctpTransport • SCTPを利用したデータ転送を可能にする
  32. 32. Statistics API • 統計情報収集用のAPI • WebRTC 1.0のStatistics APIに準拠
  33. 33. Identity • ID管理のAPI • WebRTC 1.0のIdentity APIに準拠 • WebベースのID管理プロバイダーを利用して、 DTLSの認証が可能。
  34. 34. WebRTCとの互換性 • すみません、英語読みきれてません・・・
  35. 35. 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アプリが作れる
  36. 36. Ortcの今後の展開 • WebRTC 1.1で統合する方向らしい • 注目ですよ!
  37. 37. 参考文献 • http://www.infoq.com/jp/news/2014/08/ortc-webrtc • http://ortc.org/wp-content/ uploads/2014/08/ortc.html

×