ORTCの仕様書をざっくり斜め読みする 
WebRTC Meetup Tokyo #4 
Yusuke Naka
自己紹介 
• なかゆうすけ(Twitter : @Tukimikage) 
 所属 
– NTTコミュニケーションズ技術開発部 
 オフィシャルワーク 
– HTML5 Experts.jp(HTML5 Experts Works) 副編集長 
– WebRTC開発者向けフレームワーク「SkyWay」の開発 
 コミュニティワーク 
– html5j 自動車部部長 
– html5j エンタープライズ部スタッフ
最近の悩み 
peer.jsとか使っていると、生のWebRTCコード書 
けなくなりますよね・・・。
今日話すこと 
• ORTCとは? 
• 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で統合か
• Microsoftさんが注目 
– http://status.modern.ie/webrtcwebrtcv10api?ter 
m=Object%20RTC
ORTCをなぜ作ったのか? 
• ORTC陣営が考える「WebRTCに足りてないもの」 
– モバイルアプリとのプロトコルの互換性 
– キャリアスケールのオペレーションに必要な監視、診断機能 
– Cloud環境への対応 
• サーバ側のWebRTC実装(クライアントとしての) 
• STUN/TURNの認証情報管理 
• オーディオ、ビデオのミキシング 
• SIPプロキシ 
• XMPP接続 
– 拡張性 
• H.264/SVCなどのモバイルにやさしいコーデックの追加 
– これらに対応した次世代のJavaScriptAPI
RTCで利用するプロトコルの詳細 
@iwashi86 
WebRTCを支えるマイナーなプロトコルSRTP/DTLS/SCTPを分かった気になる 
http://www.slideshare.net/iwashi86/20140801-web-rtcmeetup3r3
仕様書を読む 
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
Abstract 
• ORTCはWebRTC 1.0とはことなり、シグナリン 
グプロトコルやフォーマットを強制しない 
• Offer/Answerというステータスを管理しない 
• 「sender」、「receiver」、「transport」という3つ 
のオブジェクトにそれぞれの機能が定義され 
ている 
• 「Track」と「Data Channels」は「sender」と 
「receiver」の間で「transport」を介して送信さ 
れる
ORTC概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCDtlsTransport 
• DTLSによるデータ転送を司るオブジェクト 
• DTLSとは? 
– TLSで暗号化したデータを送受信するプロトコル
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCIceTransport 
• ICEで相互コネクションを確立するオブジェクト 
– ICEの仕組みを利用して接続先候補を収集し、一番 
効率がよいルートで接続を行う 
– STUN、TRUNなどの仕組みも活用
RTCIceTransport 
• ICEの状態遷移 
状態意味 
new 初期状態 
checking 接続候補を1件 
以上受信 
し相手を確認中 
connected 接続できる相手 
を見つけたが、 
他の候補をまだ 
探している 
Completed 接続候補の収 
集が終了 
disconnected 切断された 
closed シャットダウン 
STUNの応答に 
も返答しません
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCIceTransportController 
• ICE凍結と帯域幅推定の共有を行うオブジェク 
ト? 
• 実際の動きがよく理解できませんでした・・・。
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCIceListner 
• ローカルのICE候補を取得するためのイベント 
リスナー 
オプション意味 
all 全ての候補を収集 
nohost ホスト候補を除く全ての 
候補を収集 
relay TURNサーバを経由する 
候補を取得する 
RTCIceGatherOptions
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCRtpSender 
• Senderに関するオブジェクト 
• MediaStreamTrackの送信、停止等を担う
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCRtpReceiver 
• Receiverに関するオブジェクト 
• MediaStreamTrackの受信、停止等を担う
概要 
ORTCの仕様で定義されているオブジェクト郡 
垂直方向の矢印:メソッドとイベントのやりとり 
水平方向の矢印:メディアやデータのやり取り
RTCRtpListener 
• DTLSのコネクションからRTPパケットを受信す 
るためのリスナー
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 / パケット化モードのサポート
//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の字も無いですね・・・
RTCDtmfSender 
• DTMFトーンを送るAPI 
• コールセンターの受付などに活用 
• WebRTC 1.0のDtmfSender APIに準拠 
• WebRTCも今はChromeしか動かないはず 
DTMF Tone 送信サンプル:https://think-sv.net/dtmf/
RTCDataChannel 
• データチャネル用オブジェクト
RTCSctpTransport 
• SCTPを利用したデータ転送を可能にする
Statistics API 
• 統計情報収集用のAPI 
• WebRTC 1.0のStatistics APIに準拠
Identity 
• ID管理のAPI 
• WebRTC 1.0のIdentity APIに準拠 
• WebベースのID管理プロバイダーを利用して、 
DTLSの認証が可能。
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アプリが作れる
Ortcの今後の展開 
• WebRTC 1.1で統合する方向らしい 
• 注目ですよ!
参考文献 
• http://www.infoq.com/jp/news/2014/08/ortc-webrtc 
• http://ortc.org/wp-content/ 
uploads/2014/08/ortc.html

More Related Content

PPTX
知ってると得するかもしれないConstraintsたち
PDF
WebRTC/ORTCの最新動向まるわかり!
PDF
WebRTCハンズオン
PPTX
SkyWay HandsOn
PPTX
5分で分るWebRTCコーデックウォーズ
PDF
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
PPTX
Webrtc最新動向
PDF
5分でわかるWebRTCの仕組み - html5minutes vol.01
知ってると得するかもしれないConstraintsたち
WebRTC/ORTCの最新動向まるわかり!
WebRTCハンズオン
SkyWay HandsOn
5分で分るWebRTCコーデックウォーズ
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
Webrtc最新動向
5分でわかるWebRTCの仕組み - html5minutes vol.01

What's hot (16)

PDF
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
PPTX
2013 WebRTC node
PPTX
WebRTCと ORTCについて 整理しておこう
PDF
SkyWay国内唯一のCPaaS
PPTX
WebRTC NextVersion時代のJavaScript開発
PDF
はじめてのWebRTC/ORTC
PDF
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
PDF
DataChannelでIoTしてみた
PDF
スマホ(Android・iPhone)でWebRTC
PDF
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
PPTX
ここがつらいよWebRTC - WebRTC開発の落とし穴
PPTX
PeerConnectionリレーとMediaRecorder
PPTX
SkyWayで作るボイスチャット
PPTX
WebRTCのオーディオ処理の謎、誰か教えて!
PPTX
ブラウザでWebRTC - iOSゲートウェイ作ってみた
PPTX
Web rtcの使い方
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
2013 WebRTC node
WebRTCと ORTCについて 整理しておこう
SkyWay国内唯一のCPaaS
WebRTC NextVersion時代のJavaScript開発
はじめてのWebRTC/ORTC
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
DataChannelでIoTしてみた
スマホ(Android・iPhone)でWebRTC
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
ここがつらいよWebRTC - WebRTC開発の落とし穴
PeerConnectionリレーとMediaRecorder
SkyWayで作るボイスチャット
WebRTCのオーディオ処理の謎、誰か教えて!
ブラウザでWebRTC - iOSゲートウェイ作ってみた
Web rtcの使い方
Ad

Viewers also liked (16)

PDF
ち〜ん
PDF
Jitsi video bridge で遊んでみた
PDF
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
PDF
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
PPTX
Testing and packaging WebRTC Stack
PPTX
スマホアプリBestieBoxにWebRTCを組みこんでみた
PDF
WebRTC Meetup Tokyo #3 - WebRTC Conference参加報告
PPTX
WebRTC meetup Tokyo 1
PPTX
WebRTC on Native App
PDF
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
PPTX
うしちゃん WebRTC Chat on SkyWayの開発コードw
PDF
IoTをインターネット越しで見る
PDF
ArduinoでMidiコントローラーを作ろう
PPTX
WebRTC Build MCU on browser
PPTX
WebRTC SFU mediasoup sample
PPTX
WebRTC on Edge
ち〜ん
Jitsi video bridge で遊んでみた
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
Testing and packaging WebRTC Stack
スマホアプリBestieBoxにWebRTCを組みこんでみた
WebRTC Meetup Tokyo #3 - WebRTC Conference参加報告
WebRTC meetup Tokyo 1
WebRTC on Native App
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
うしちゃん WebRTC Chat on SkyWayの開発コードw
IoTをインターネット越しで見る
ArduinoでMidiコントローラーを作ろう
WebRTC Build MCU on browser
WebRTC SFU mediasoup sample
WebRTC on Edge
Ad

Similar to ORTCの仕様書をざっくり斜め読みする (20)

PPTX
Ossで作成するチーム開発環境
PDF
ひとつひとつ組み上げてみていくビデオチャットアプリのアーキテクチャ
PDF
Rtミドルウェア講習会 第1部資料
PDF
Orb dlt technical_overview(特許情報なし)
PDF
151026 東工大授業「ロボット技術」資料
PDF
HTML5開発最前線
PDF
160705-01 RTミドルウエア講習会・名城大
PPTX
WebRTCについて
PDF
ROBOMECH2023 RTミドルウェア講習会 第1部
PDF
Nedo講座・rtmセミナー
PPTX
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
PDF
1.コース概要
PDF
201110 01 Polytech Center 1
PDF
IBM Rational Team Concertに触れてみた
PDF
20130329 rtm1
PDF
20130329 rtm01
PDF
Rtm講習会 140626 02
PPTX
WebRTC SFU Mediasoup Sample update
PDF
Web on Kernel
PDF
20201127 .NET 5
Ossで作成するチーム開発環境
ひとつひとつ組み上げてみていくビデオチャットアプリのアーキテクチャ
Rtミドルウェア講習会 第1部資料
Orb dlt technical_overview(特許情報なし)
151026 東工大授業「ロボット技術」資料
HTML5開発最前線
160705-01 RTミドルウエア講習会・名城大
WebRTCについて
ROBOMECH2023 RTミドルウェア講習会 第1部
Nedo講座・rtmセミナー
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
1.コース概要
201110 01 Polytech Center 1
IBM Rational Team Concertに触れてみた
20130329 rtm1
20130329 rtm01
Rtm講習会 140626 02
WebRTC SFU Mediasoup Sample update
Web on Kernel
20201127 .NET 5

More from Yusuke Naka (15)

PDF
SkyWayを使いこなすために How to use SkyWay -SkyWay UG Kansai #1 スペシャルバージョン-
PDF
SkyWay UG Kansai #1 Kickoff
PDF
SkyWay UG Tokyo #1 Kickoff
PDF
SkyWayとWebRTC開発者コミュニティ4年間の軌跡とCMC_Meetupで学んだこと、実践したこと
PDF
NTTコミュニケーションズがちょっと変わったメディアを作ったわけ
PDF
HTML5 Experts.jp パフォーマンス・チューニング
PDF
WebRTC開発者向けプラットフォーム SkyWayの裏側
PPTX
TypeScriptをオススメする理由
PPTX
getUserMedia
PDF
FuelPHP活用事例
PPTX
Chrome Extensionで スクリーンシェアをやってみる
PPTX
第72回読書するエンジニアの会(テーマ:変人)
PPTX
5jCup WebRTC賞
PPTX
WebRTCを始めよう! HTML5fun 第一回勉強会
PDF
SPAを実現するために必要な通信技術
SkyWayを使いこなすために How to use SkyWay -SkyWay UG Kansai #1 スペシャルバージョン-
SkyWay UG Kansai #1 Kickoff
SkyWay UG Tokyo #1 Kickoff
SkyWayとWebRTC開発者コミュニティ4年間の軌跡とCMC_Meetupで学んだこと、実践したこと
NTTコミュニケーションズがちょっと変わったメディアを作ったわけ
HTML5 Experts.jp パフォーマンス・チューニング
WebRTC開発者向けプラットフォーム SkyWayの裏側
TypeScriptをオススメする理由
getUserMedia
FuelPHP活用事例
Chrome Extensionで スクリーンシェアをやってみる
第72回読書するエンジニアの会(テーマ:変人)
5jCup WebRTC賞
WebRTCを始めよう! HTML5fun 第一回勉強会
SPAを実現するために必要な通信技術

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