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

37
ORTC ののののののののののののののの WebRTC Meetup Tokyo #4 Yusuke Naka

description

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

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

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

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

WebRTC Meetup Tokyo #4Yusuke Naka

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

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

– NTT コミュニケーションズ 技術開発部 オフィシャルワーク

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

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

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

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

最近の悩みpeer.js とか使っていると、生の WebRTC コード書けなくなりますよね・・・。

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

今日話すこと• ORTC とは?• ORTC の仕様書をざっくり読んでみた– 実装できるほど読み込んではいません・・・。

• 間違いがあれば突っ込んで下さい

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

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の仕様書をざっくり斜め読みする

• Microsoft さんが注目– http://status.modern.ie/webrtcwebrtcv10api?ter

m=Object%20RTC

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

ORTC をなぜ作ったのか?• ORTC 陣営が考える「 WebRTC に足りてないもの」

– モバイルアプリとのプロトコルの互換性– キャリアスケールのオペレーションに必要な監視、診断機能– Cloud 環境への対応

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

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

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

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

RTC で利用するプロトコルの詳細

WebRTC を支えるマイナーなプロトコル SRTP/DTLS/SCTP を分かった気になるhttp://www.slideshare.net/iwashi86/20140801-web-rtcmeetup3r3

@iwashi86

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

仕様書を読む

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の仕様書をざっくり斜め読みする

Abstract

• ORTC は WebRTC 1.0 とはことなり、シグナリングプロトコルやフォーマットを強制しない

• Offer/Answer というステータスを管理しない• 「 sender 」、「 receiver 」、「 transport 」

という3つのオブジェクトにそれぞれの機能が定義されている

• 「 Track 」と「 Data Channels 」は「 sender 」と「 receiver 」の間で「 transport 」を介して送信される

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

ORTC 概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCDtlsTransport

• DTLS によるデータ転送を司るオブジェクト• DTLS とは?– TLS で暗号化したデータを送受信するプロトコ

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCIceTransport

• ICE で相互コネクションを確立するオブジェクト– ICE の仕組みを利用して接続先候補を収集し、一

番効率がよいルートで接続を行う– STUN 、 TRUN などの仕組みも活用

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

RTCIceTransport

• ICE の状態遷移状態 意味new 初期状態checking 接続候補を1

件以上受信し相手を確認中

connected 接続できる相手を見つけたが、他の候補をまだ探している

Completed 接続候補の収集が終了

disconnected 切断されたclosed シャットダウ

ンSTUN の応答にも返答しません

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCIceTransportController

• ICE凍結と帯域幅推定の共有を行うオブジェクト?

• 実際の動きがよく理解できませんでした・・・。

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCIceListner

• ローカルの ICE 候補を取得するためのイベントリスナー

オプション 意味all 全ての候補を収集nohost ホスト候補を除く全て

の候補を収集relay TURN サーバを経由す

る候補を取得する

RTCIceGatherOptions

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCRtpSender

• Sender に関するオブジェクト• MediaStreamTrack の送信、停止等を担う

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCRtpReceiver

• Receiver に関するオブジェクト• MediaStreamTrack の受信、停止等を担う

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

概要ORTC の仕様で定義されているオブジェクト郡

垂直方向の矢印:メソッドとイベントのやりとり水平方向の矢印:メディアやデータのやり取り

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

RTCRtpListener

• DTLS のコネクションから RTPパケットを受信するためのリスナー

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

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の仕様書をざっくり斜め読みする

//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の仕様書をざっくり斜め読みする

RTCDtmfSender

• DTMF トーンを送る API• コールセンターの受付などに活用• WebRTC 1.0 の DtmfSender API に準拠• WebRTC も今は Chrome しか動かないはず

DTMF Tone 送信サンプル: https://think-sv.net/dtmf/

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

RTCDataChannel

• データチャネル用オブジェクト

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

RTCSctpTransport

• SCTP を利用したデータ転送を可能にする

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

Statistics API

• 統計情報収集用の API• WebRTC 1.0 の Statistics API に準拠

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

Identity

• ID 管理の API• WebRTC 1.0 の Identity API に準拠• Web ベースの ID 管理プロバイダーを利用

して、 DTLS の認証が可能。

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

WebRTC との互換性• すみません、英語読みきれてません・・・

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

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の仕様書をざっくり斜め読みする

Ortc の今後の展開• WebRTC 1.1 で統合する方向らしい• 注目ですよ!