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