SlideShare a Scribd company logo
Let's  begin  WebRTC!

                            2013/03/22
                  Web先端技術味⾒見見部#18
        Toru  Yoshikawa  (@yoshikawa_̲t)
Who?
吉川  徹  /  Toru  Yoshikawa
@yoshikawa_̲t
   Google  Developer  Experts  (Chrome)

   html5j.org/HTML5とか勉強会スタッフ

   ⽇日本jQuery  Mobileユーザー会  管理理⼈人

   Sublime  Text  2  Japan  Users  Group  管理理⼈人

   allWebクリエイター塾/jQuery  Mobile担当講師

   Blog:  http://d.hatena.ne.jp/pikotea/
Recently  hot  news
Hello  Chrome,  itʼ’s  Firefox  calling!




   https://hacks.mozilla.org/2013/02/hello-‐‑‒chrome-‐‑‒its-‐‑‒firefox-‐‑‒calling/

   http://blog.chromium.org/2013/02/hello-‐‑‒firefox-‐‑‒this-‐‑‒is-‐‑‒chrome-‐‑‒calling.html
HTML5でテレビ電話、Chrome  
Beta  for  AndroidでWebRTCを試す




  http://d.hatena.ne.jp/jovi0608/20130307/1362645489
Resources
Community

   http://www.webrtc.org/

Sample  Source

   https://code.google.com/p/webrtc-‐‑‒samples/source/
   browse/trunk/apprtc/

Interoperability  (Chrome  and  Firefox)

   https://code.google.com/p/webrtc-‐‑‒samples/source/
   browse/trunk/apprtc/js/adapter.js
Specifications
W3C

       WebRTC  1.0:  Real-‐‑‒time  Communication  Between  Browsers  (http://
       www.w3.org/TR/webrtc/)

       Media  Capture  and  Streams  (http://www.w3.org/TR/mediacapture-‐‑‒streams/)

IETF

       Web  Real-‐‑‒Time  Communication  (WebRTC):  Media  Transport  and  Use  of  RTP  
       (http://tools.ietf.org/html/draft-‐‑‒ietf-‐‑‒rtcweb-‐‑‒rtp-‐‑‒usage)

       WebRTC  Data  Channel  Protocol  (http://tools.ietf.org/html/draft-‐‑‒jesup-‐‑‒rtcweb-‐‑‒
       data-‐‑‒protocol)

       Javascript  Session  Establishment  Protocol  (http://tools.ietf.org/html/draft-‐‑‒ietf-‐‑‒
       rtcweb-‐‑‒jsep)
Communications
W3C  ML

    http://lists.w3.org/Archives/Public/public-‐‑‒webrtc/

IETF  ML

    http://www.ietf.org/mail-‐‑‒archive/web/rtcweb/current/maillist.html
Architecture
Network
STUN
Simple  Traversal  of  UDP  through  NATs

NAT越えの⽅方法のひとつ

通信するホストがSTUNサーバーにUDP接続を⾏行行
い、NATが割り当てたグローバルIPアドレスとポー
ト番号を取得する

取得したグローバルIPアドレスとポート番号を通信
するホスト間で交換する
NATの種類
フルコーン型

 1つのTCP/UDPポートを1台のPCに割り当て

制限コーン型

 内部ホストがパケット送信した外部ホストのみと通信可能(UDPホール
 パンチングなどで対応)

ポート制限コーン型

 制限コーン型には、さらにポートの制限を加えたもの

対称型

 外部ホストごとに別々のアドレス変換テーブルを持つ
ICE
Interactive  Connectivity  Establishment

STUNとTURNなどのNAT越えの⼿手順をまとめたもの

STUNで対応できないホストには、TURNを利利⽤用する

STUNで対応できるNATは、フルコーン型、制限コーン型、
ポート制限コーン型の3つ

対称型、多段NATなどの場合は、TURNを利利⽤用する
TURN
Traversal  Using  Relay  NAT

NAT越えの⽅方法のひとつ

対称型や多段NATにも対応できる

要は、すべての通信をTURNを経由して⾏行行うの
で、速度度的なメリットはほとんどない

サーバー的にも⾼高負荷・⾼高コスト
Sequence
サンプルコード
getUserMedia

navigator.getUserMedia({audio: true, video:true}, success);

function success(stream) {
  videoElement.src = URL.createObjectURL(stream);
}
RTCPeerConnection

PeerConnection00は、Deprecatedなので利利⽤用
しないように

Firefoxは、nightly以外は、about:configで
media.peerconnection.enabledをtrueに設定す
る
RTCPeerConnection
            インスタンスの作成
var pc = new RTCPeerConnection({
  "iceServers": [
    {"url": "STUNサーバーのアドレス"},
      {"url": "TURNサーバーのアドレス"}
  ]
});


 stun:stun.l.google.com:19302
 stun:23.21.150.121
addICECandidate
pc.onicecandidate = function(e) {

     // リモートへICE候補を送信する
     sendMessage(JSON.stringify({
       "candidate": e.candidate
     }));
};

// リモートからのICE候補を受信した場合
function receiveMessage(message){

     var candidate = new RTCIceCandidate({
       "candidate": message.candidate
     });
     pc.addICECandidate(candidate);
}
addStream  (local)
            creaeOffer
// getUserMediaで取得したストリームデータを追加
pc.addStream(localStream);

// オファーを作成
pc.createOffer(function(description){
  pc.setLocalDescription(description);

  // Send Offer
  sendMessage(JSON.stringify({
    "sdp": description
  }));
});
createAnswer
function reciveMessage(message) {
  // RTCPeerConnectionを作成していなければ、作成しストリームデータを
追加しておく
  pc.setRemoteDescription(new
RTCSessionDescription(message.sdp), function(){

      if (pc.remoteDescription.type == "offer") {
        pc.createAnswer(function(description){
          pc.setLocalDescription(description);

                // Send Answer
                sendMessage(JSON.stringify({
                  "sdp": description
                }));
              });
          }
    });
}
addStrem  (remote)



pc.onaddstream = function(e) {
  video.src = URL.createObjectURL(e.stream);
}
Data  Channel
var channel = pc.createDataChannel("labelName");
channel.onopen = function(e) {
  // データチャネルオープン
}
channel.onmessage = function(e) {
  // テキストデータの受信
    console.log(e.data);
}
channel.onclose = function(e) {
  // データチャネルクローズ
}

// テキストデータの送信
channel.send(message);
Data  Channel
P2Pでバイナリ、テキストデータが送れる

APIは、WebSocketとほぼ同じ

Chrome  27より前は、起動オプションが必要

 -‐‑‒-‐‑‒enable-‐‑‒data-‐‑‒channels

Canary  Buildは、現在v27なのでそのまま利利⽤用可
能
DTMF  API

Dual-‐‑‒Tone  Multi-‐‑‒Frequency

トーン信号(プッシュ信号)を送信するための仕様

WebRTC上での仕様は、議論論中でまだまだ変わりそう

Webkitで既に実装されているが、利利⽤用できるか不不明  
(http://trac.webkit.org/changeset/141984)
Articles
グループビデオチャットのTenHandsがChromeの
WebRTCで実装–プラグイン不不要に  (http://
jp.techcrunch.com/archives/20130205real-‐‑‒time-‐‑‒
communications-‐‑‒platform-‐‑‒tenhands-‐‑‒now-‐‑‒uses-‐‑‒
webrtc-‐‑‒on-‐‑‒chrome-‐‑‒for-‐‑‒plugin-‐‑‒free-‐‑‒video-‐‑‒chats/)

WebRTCとSIPを結びつけるSDKをPlivoがローンチ…Web
と固定電話の通話も可能に  (http://jp.techcrunch.com/
archives/20130115plivo-‐‑‒launches-‐‑‒the-‐‑‒first-‐‑‒sdk-‐‑‒that-‐‑‒
lets-‐‑‒developers-‐‑‒connect-‐‑‒webrtc-‐‑‒and-‐‑‒sip/)
Microsoft  WebRTC  Proposal

  Microsoft  pushes  ahead  with  its  own  take  on  
  WebRTC  (http://gigaom.com/2013/01/17/
  microsoft-‐‑‒cu-‐‑‒webrtc-‐‑‒prototype/)

  Customizable,  Ubiquitous  Real-‐‑‒Time  
  Communication  (http://
  html5labs.interoperabilitybridges.com/cu-‐‑‒rtc-‐‑‒
  web/cu-‐‑‒rtc-‐‑‒web.htm)
Thank  you!!
 (@yoshikawa_̲t)

More Related Content

What's hot (15)

PDF
マスタリングJUNOS DHCP
ZenSekibe
 
PDF
TCP connectionの保存と復元
mittyorz
 
PDF
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
PDF
Ietf97 ソウル報告
yuki-f
 
PPTX
TLS & LURK @ IETF 95
Kazuho Oku
 
PDF
raspi + soracom #pakeana33
@ otsuka752
 
PDF
ミラクルはすける勉強会#0
Kiwamu Okabe
 
PDF
Stream processing and Norikra
SATOSHI TAGOMORI
 
PDF
http2 最速実装 v2
Yoshihiro Iwanaga
 
PDF
ストリーミング用マルチCDN
Masaaki Nabeshima
 
PPTX
FSI analysis with preCICE (OpenFOAM and CalculiX)
守淑 田村
 
PDF
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
 
PDF
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Masaharu IWAI
 
ODP
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
 
マスタリングJUNOS DHCP
ZenSekibe
 
TCP connectionの保存と復元
mittyorz
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
Ietf97 ソウル報告
yuki-f
 
TLS & LURK @ IETF 95
Kazuho Oku
 
raspi + soracom #pakeana33
@ otsuka752
 
ミラクルはすける勉強会#0
Kiwamu Okabe
 
Stream processing and Norikra
SATOSHI TAGOMORI
 
http2 最速実装 v2
Yoshihiro Iwanaga
 
ストリーミング用マルチCDN
Masaaki Nabeshima
 
FSI analysis with preCICE (OpenFOAM and CalculiX)
守淑 田村
 
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
 
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Masaharu IWAI
 
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
 

Similar to Let's begin WebRTC (20)

PDF
WebRTC/ORTCの最新動向まるわかり!
Yusuke Naka
 
PDF
WebRTCの技術解説 第二版 公開版 本編
Contest Ntt-west
 
PDF
2013 WebRTC 概説 & ワークショップ
mganeko
 
PDF
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
Yoshiaki Sugimoto
 
PDF
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
Kensaku Komatsu
 
PPTX
WebRTC meetup Tokyo 1
mganeko
 
PDF
WebRTCハンズオン
Yusuke Naka
 
PDF
WebRTC入門+最新動向
Ryosuke Otsuya
 
PPTX
2013 WebRTC node
mganeko
 
PDF
WebRTCとPeer.jsを使った実装
Yuta Suzuki
 
PPTX
WebRTC NextVersion時代のJavaScript開発
Yusuke Naka
 
PPTX
WebRTC の紹介
Kensaku Komatsu
 
PDF
About WebRTC
Seiya Konno
 
PPTX
エフサミ2014 web rtcの傾向と対策
Kensaku Komatsu
 
PDF
Real time Media streaming Web technologies
Nobo Okada
 
PDF
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
Yusuke Naka
 
PDF
20130216
komarineko
 
PDF
WebRTC概説(P2P)
goforbroke
 
PPTX
Webrtc最新動向
Yusuke Naka
 
PPTX
Webrtc bootcamp handson
mganeko
 
WebRTC/ORTCの最新動向まるわかり!
Yusuke Naka
 
WebRTCの技術解説 第二版 公開版 本編
Contest Ntt-west
 
2013 WebRTC 概説 & ワークショップ
mganeko
 
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
Yoshiaki Sugimoto
 
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
Kensaku Komatsu
 
WebRTC meetup Tokyo 1
mganeko
 
WebRTCハンズオン
Yusuke Naka
 
WebRTC入門+最新動向
Ryosuke Otsuya
 
2013 WebRTC node
mganeko
 
WebRTCとPeer.jsを使った実装
Yuta Suzuki
 
WebRTC NextVersion時代のJavaScript開発
Yusuke Naka
 
WebRTC の紹介
Kensaku Komatsu
 
About WebRTC
Seiya Konno
 
エフサミ2014 web rtcの傾向と対策
Kensaku Komatsu
 
Real time Media streaming Web technologies
Nobo Okada
 
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
Yusuke Naka
 
20130216
komarineko
 
WebRTC概説(P2P)
goforbroke
 
Webrtc最新動向
Yusuke Naka
 
Webrtc bootcamp handson
mganeko
 
Ad

More from yoshikawa_t (20)

PDF
Ionicで作るTechfeed
yoshikawa_t
 
PDF
困った時のDev toolsの使い方(初心者向け)
yoshikawa_t
 
PDF
TechFeedというテクノロジーキュレーションサービスを作った話
yoshikawa_t
 
PDF
Chrome DevTools Awesome 10 Features +1
yoshikawa_t
 
PDF
これからのモバイルWebと最新動向
yoshikawa_t
 
PDF
いまさら聞けないHTML5概要
yoshikawa_t
 
PDF
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
yoshikawa_t
 
PDF
jQuery Mobile is not dead!
yoshikawa_t
 
PDF
HTML5開発最前線
yoshikawa_t
 
PDF
Chrome Apps のデバイスAPI
yoshikawa_t
 
PDF
Chrome Apps & Chromeウェブストア概要
yoshikawa_t
 
PDF
Chrome DevTools for beginners v1.2
yoshikawa_t
 
PDF
モバイル時代のWebパフォーマンス
yoshikawa_t
 
PDF
モバイル時代のWebパフォーマンスTips
yoshikawa_t
 
PDF
Chrome apps for mobile 概要
yoshikawa_t
 
PDF
Chrome Apps 概要
yoshikawa_t
 
PDF
Chrome Devtools for beginners (v1.1)
yoshikawa_t
 
PDF
Html5概要 & デモ
yoshikawa_t
 
PDF
いまさら聞けないCSSレイアウト入門
yoshikawa_t
 
PDF
Sencha touch vs j query mobile
yoshikawa_t
 
Ionicで作るTechfeed
yoshikawa_t
 
困った時のDev toolsの使い方(初心者向け)
yoshikawa_t
 
TechFeedというテクノロジーキュレーションサービスを作った話
yoshikawa_t
 
Chrome DevTools Awesome 10 Features +1
yoshikawa_t
 
これからのモバイルWebと最新動向
yoshikawa_t
 
いまさら聞けないHTML5概要
yoshikawa_t
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
yoshikawa_t
 
jQuery Mobile is not dead!
yoshikawa_t
 
HTML5開発最前線
yoshikawa_t
 
Chrome Apps のデバイスAPI
yoshikawa_t
 
Chrome Apps & Chromeウェブストア概要
yoshikawa_t
 
Chrome DevTools for beginners v1.2
yoshikawa_t
 
モバイル時代のWebパフォーマンス
yoshikawa_t
 
モバイル時代のWebパフォーマンスTips
yoshikawa_t
 
Chrome apps for mobile 概要
yoshikawa_t
 
Chrome Apps 概要
yoshikawa_t
 
Chrome Devtools for beginners (v1.1)
yoshikawa_t
 
Html5概要 & デモ
yoshikawa_t
 
いまさら聞けないCSSレイアウト入門
yoshikawa_t
 
Sencha touch vs j query mobile
yoshikawa_t
 
Ad

Recently uploaded (6)

PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 

Let's begin WebRTC