Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
mganeko
PPTX, PDF
1,514 views
Webrtc bootcamp handson
WebRTC Conference Japan 2016の WebRTC Boot Camp ハンズオン資料です
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Downloaded 20 times
1
/ 34
2
/ 34
3
/ 34
4
/ 34
5
/ 34
6
/ 34
7
/ 34
8
/ 34
9
/ 34
10
/ 34
11
/ 34
12
/ 34
13
/ 34
14
/ 34
15
/ 34
16
/ 34
17
/ 34
18
/ 34
19
/ 34
20
/ 34
21
/ 34
22
/ 34
23
/ 34
24
/ 34
25
/ 34
26
/ 34
27
/ 34
28
/ 34
29
/ 34
30
/ 34
31
/ 34
32
/ 34
33
/ 34
34
/ 34
More Related Content
PDF
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
by
Yusuke Naka
PPTX
WebRTC meetup Tokyo 1
by
mganeko
PPTX
2013 WebRTC node
by
mganeko
PDF
2013 WebRTC 概説 & ワークショップ
by
mganeko
PPTX
ブラウザでWebRTC - iOSゲートウェイ作ってみた
by
mganeko
PDF
Node.js with WebRTC DataChannel
by
mganeko
PPTX
Infocom webrtc conference japan
by
mganeko
PPTX
WebRTC NextVersion時代のJavaScript開発
by
Yusuke Naka
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
by
Yusuke Naka
WebRTC meetup Tokyo 1
by
mganeko
2013 WebRTC node
by
mganeko
2013 WebRTC 概説 & ワークショップ
by
mganeko
ブラウザでWebRTC - iOSゲートウェイ作ってみた
by
mganeko
Node.js with WebRTC DataChannel
by
mganeko
Infocom webrtc conference japan
by
mganeko
WebRTC NextVersion時代のJavaScript開発
by
Yusuke Naka
What's hot
PDF
WebRTC Boot Camp (WebRTC Conference Japan 2016) 事前公開版
by
You_Kinjoh
PDF
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
by
Kensaku Komatsu
PDF
5分でわかるWebRTCの仕組み - html5minutes vol.01
by
西畑 一馬
PDF
WebRTC/ORTCの最新動向まるわかり!
by
Yusuke Naka
PPTX
WebRTC SFU Mediasoup Sample update
by
mganeko
PDF
WebRTCとPeer.jsを使った実装
by
Yuta Suzuki
PDF
SkyWayとWebRTC開発者コミュニティ4年間の軌跡とCMC_Meetupで学んだこと、実践したこと
by
Yusuke Naka
PPTX
ORTCの仕様書をざっくり斜め読みする
by
Yusuke Naka
PPTX
MediaRecorder と WebM で、オレオレ Live Streaming
by
mganeko
PPTX
H.264で相互接続 - WebRTC Meetup Tokyo #10
by
goforbroke
PDF
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
by
You_Kinjoh
PDF
WebRTCの技術解説 第二版 公開版 本編
by
Contest Ntt-west
PPTX
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
PPTX
WebRTCのオーディオ処理の謎、誰か教えて!
by
mganeko
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
by
tnoho
PPTX
SkyWayで作るボイスチャット
by
tioken
PDF
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
by
mganeko
WebRTC Boot Camp (WebRTC Conference Japan 2016) 事前公開版
by
You_Kinjoh
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
by
Kensaku Komatsu
5分でわかるWebRTCの仕組み - html5minutes vol.01
by
西畑 一馬
WebRTC/ORTCの最新動向まるわかり!
by
Yusuke Naka
WebRTC SFU Mediasoup Sample update
by
mganeko
WebRTCとPeer.jsを使った実装
by
Yuta Suzuki
SkyWayとWebRTC開発者コミュニティ4年間の軌跡とCMC_Meetupで学んだこと、実践したこと
by
Yusuke Naka
ORTCの仕様書をざっくり斜め読みする
by
Yusuke Naka
MediaRecorder と WebM で、オレオレ Live Streaming
by
mganeko
H.264で相互接続 - WebRTC Meetup Tokyo #10
by
goforbroke
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
by
You_Kinjoh
WebRTCの技術解説 第二版 公開版 本編
by
Contest Ntt-west
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
WebRTCのオーディオ処理の謎、誰か教えて!
by
mganeko
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
by
tnoho
SkyWayで作るボイスチャット
by
tioken
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
by
mganeko
Viewers also liked
PDF
WebRTCの技術解説 第四版 公開版
by
You_Kinjoh
PPTX
WebRTCとSFU
by
Saki Homma
PDF
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
by
You_Kinjoh
PDF
Value Added Services and WebRTC
by
Dialogic Inc.
PDF
はじめてのWebRTC/ORTC
by
Yusuke Naka
PDF
SFUの話
by
tnoho
PDF
WebRTCの技術解説 公開版
by
Contest Ntt-west
PDF
WebRTC開発者向けプラットフォーム SkyWayの裏側
by
Yusuke Naka
WebRTCの技術解説 第四版 公開版
by
You_Kinjoh
WebRTCとSFU
by
Saki Homma
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第三版
by
You_Kinjoh
Value Added Services and WebRTC
by
Dialogic Inc.
はじめてのWebRTC/ORTC
by
Yusuke Naka
SFUの話
by
tnoho
WebRTCの技術解説 公開版
by
Contest Ntt-west
WebRTC開発者向けプラットフォーム SkyWayの裏側
by
Yusuke Naka
Similar to Webrtc bootcamp handson
PDF
Let's begin WebRTC
by
yoshikawa_t
PDF
WebRTCがよく分からないから調べて試してみた
by
toru tom
PPTX
2016 February - WebRTC Conference Japan - 日本語
by
Alexandre Gouaillard
PDF
WebRTCの技術解説 第二版 公開版 完全版
by
Contest Ntt-west
PDF
WebRTCハンズオン
by
Yusuke Naka
PDF
20130216
by
komarineko
PDF
About WebRTC
by
Seiya Konno
PDF
5分でわかるWebRTC
by
Ryosuke Otsuya
PDF
WebRTC を利用したブラウザキャッシュ共有によるデータ配信システム
by
Kazuki Matsushita
PPTX
Webrtc最新動向
by
Yusuke Naka
PDF
WebRTC入門+最新動向
by
Ryosuke Otsuya
PPTX
WebRTC on Native App
by
WebRTCConferenceJapan
PDF
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
by
Kensaku Komatsu
PPTX
Testing and packaging WebRTC Stack
by
Alexandre Gouaillard
PDF
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
by
Yoshiaki Sugimoto
PDF
WebSocket Chat App Hands On on Microsoft Azure
by
Yoshio Terada
PPTX
WebRTC status and what to expect in 2015
by
Alexandre Gouaillard
PDF
WebRTC入門 ~沖縄編~
by
Ryosuke Otsuya
PPTX
Chromebook 「だけ」で WebRTCを動かそう
by
mganeko
PDF
WebRTCの話
by
You_Kinjoh
Let's begin WebRTC
by
yoshikawa_t
WebRTCがよく分からないから調べて試してみた
by
toru tom
2016 February - WebRTC Conference Japan - 日本語
by
Alexandre Gouaillard
WebRTCの技術解説 第二版 公開版 完全版
by
Contest Ntt-west
WebRTCハンズオン
by
Yusuke Naka
20130216
by
komarineko
About WebRTC
by
Seiya Konno
5分でわかるWebRTC
by
Ryosuke Otsuya
WebRTC を利用したブラウザキャッシュ共有によるデータ配信システム
by
Kazuki Matsushita
Webrtc最新動向
by
Yusuke Naka
WebRTC入門+最新動向
by
Ryosuke Otsuya
WebRTC on Native App
by
WebRTCConferenceJapan
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
by
Kensaku Komatsu
Testing and packaging WebRTC Stack
by
Alexandre Gouaillard
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
by
Yoshiaki Sugimoto
WebSocket Chat App Hands On on Microsoft Azure
by
Yoshio Terada
WebRTC status and what to expect in 2015
by
Alexandre Gouaillard
WebRTC入門 ~沖縄編~
by
Ryosuke Otsuya
Chromebook 「だけ」で WebRTCを動かそう
by
mganeko
WebRTCの話
by
You_Kinjoh
More from mganeko
PPTX
Amazon Kinesis Video Streams WebRTC 使ってみた
by
mganeko
PPTX
Build Node.js-WASM/WASI Tiny compiler with Node.js
by
mganeko
PPTX
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
by
mganeko
PPTX
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
by
mganeko
PPTX
Skywayのビデオチャットを録画しよう。そう、ブラウザでね
by
mganeko
PPTX
WebRTC mediasoup on raspberrypi3
by
mganeko
PPTX
WebRTC SFU mediasoup sample
by
mganeko
PDF
Inside of 聖徳玉子 by O2
by
mganeko
PPTX
WebRTC Build MCU on browser
by
mganeko
PPTX
PeerConnectionリレーとMediaRecorder
by
mganeko
PPTX
ここがつらいよWebRTC - WebRTC開発の落とし穴
by
mganeko
PPTX
WebRTC multitrack / multistream
by
mganeko
PDF
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
by
mganeko
PDF
WebRTC multistream
by
mganeko
PPTX
Inside WebM
by
mganeko
PPTX
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
by
mganeko
PDF
WebRTC Summit 2014 NewYork 参加報告
by
mganeko
Amazon Kinesis Video Streams WebRTC 使ってみた
by
mganeko
Build Node.js-WASM/WASI Tiny compiler with Node.js
by
mganeko
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
by
mganeko
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
by
mganeko
Skywayのビデオチャットを録画しよう。そう、ブラウザでね
by
mganeko
WebRTC mediasoup on raspberrypi3
by
mganeko
WebRTC SFU mediasoup sample
by
mganeko
Inside of 聖徳玉子 by O2
by
mganeko
WebRTC Build MCU on browser
by
mganeko
PeerConnectionリレーとMediaRecorder
by
mganeko
ここがつらいよWebRTC - WebRTC開発の落とし穴
by
mganeko
WebRTC multitrack / multistream
by
mganeko
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
by
mganeko
WebRTC multistream
by
mganeko
Inside WebM
by
mganeko
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
by
mganeko
WebRTC Summit 2014 NewYork 参加報告
by
mganeko
Webrtc bootcamp handson
1.
WebRTC Conference Japan
2016 WebRTC Boot Camp ハンズオン インフォコム株式会社 がねこまさし
2.
リソース • スライドのURL – http://www.slideshare.net/mganeko/webrtc- bootcamp-handson –
短縮 http://goo.gl/cA9CV5 • 元になるソースコード – https://github.com/mganeko/bootcamp – 短縮 https://goo.gl/HfXTmT • 参考 – WebRTCを試すために必要なもの (Qiita) • http://goo.gl/hSfYc9 – お手軽なWebサーバーの立て方 (Qiita) • http://goo.gl/0C18j5
3.
PART 1 カメラを使ってみよう
4.
navigator.getUserMedia() • カメラの映像/マイクの音声を取得できます • ベンダーブレフィックスが付いています –
Chrome: navigator.webkitGetUserMedia() – Firefox: navigator.mozGetUserMedia() • 最新の仕様では、navigator.MediaDevices.getUserMedia() – ※今日は使いません • ユーザに許可を求めるダイアログが表示されます • 取得に成功するとMediaStream オブジェクトが得られます • ※Chrome 47からは https://〜でしか利用できなくなりました – http://localhost は例外として利用できます
5.
コード例 // プレフィックスを吸収する navigator.getUserMedia =
navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; // カメラの映像を取得する場合 navigator.getUserMedia( {video : true}, function(stream) { // 成功時のコールバック }, function(err) { // エラー時のコールバック } );
6.
マイクの音声も取得する場合 // カメラの映像とマイクの音声を取得する場合 navigator.getUserMedia( {video
: true, audio: true}, function(stream) { // 成功時のコールバック }, function(err) { // エラー時のコールバック } ); ※会場でやるとうるさいので、今日は音声無しでお願いします
7.
映像をvideo要素で再生 • window.URL.createObjectURL(stream) でURL を取得 –
blob://〜 という表記のURLを返す • video要素のsrc に指定して再生 video.src = window.URL.createObjectURL(stream); video.play();
8.
実際にやってみよう(1)(2) • media_0.html をエディタで開いてください •
startCamera() 関数の (1), (2) を記述してみて ください • [start]ボタンを押して、試してみましょう
9.
解答例 function startCamera() { //
(1) getUserMediaを使って、cameraからメディアストリームを取得してください // また、それをlocalStreamにセットしておいてください navigator.getUserMedia( {video : true}, function(stream) { // success localStream = stream; // (2) それを localVideo に表示してください localVideo.src = window.URL.createObjectURL(localStream); localVideo.play(); }, function(err) { // error console.error('getUserMedia error', err); } ); }
10.
映像の停止 • video.pause() • window.URL.revokeObjectURL(url)
でURLを解放 • ストリームを停止 – MediaStream.stop() はChrome 47から使えなくなりました – MediaTrack.stop() を使う必要があります MediaStream MediaTrack MediaTrack
11.
実際にやってみよう(3)(4) • 先ほどの続きで、stopCamera() 関数の
(3), (4) を記述してみてくだい – MediaStreamを停止させるための関数を stopStream(stream) として用意していますので、 ご利用ください • [start]→[stop]ボタンを押して、試してみましょ う
12.
解答例 function stopCamera() { //
(3) localVideoの再生を停止させてください localVideo.pause(); window.URL.revokeObjectURL(localVideo.src); localVideo.src = ''; // Firefox ではWARNING // (4) メディアストリームを停止させてください stopStream(localStream); localStream = null; }
13.
参考:新しい getUserMedia • Media
Capture and Streamsでは、新しいAPIが定義され ています – http://www.w3.org/TR/mediacapture-streams/ • navigator.MediaDevices.getUserMedia() • Promiseを返します navigator.mediaDevices.getUserMedia( {video: true} ).then(function (stream) { // 成功時の処理 }).catch(function (reason) { // 例外時の処理 });
14.
PART 2 通信してみよう
15.
RTCPeerConnection • WebRTC通信には、RTCPeerConnetionを使用 – ブラウザとブラウザの間で直接Peer-to-Peer通信を行う –
UDP/IPを使用 • TCP/IPのようにパケットの到着は保障しない • オーバーヘッドが少ない • 通信のリアルタイム性を重視 • UDPのポート番号は動的に割り振られる(49152 ~ 65535) • ベンダーブレフィックスが付いている – Chrome: window.webkitRTCPeerConnetion – Firefox: window.mozRTCPeerConnection
16.
RTCPeerConnection • Peer-to-Peer 通信を確立するために、2種類の情報を 交換する –
SDP (Session Description Protocol) – ICE Candidate (Interactive Connectivity Establishment Candidate) • SDP ... 通信するPeerの能力や、条件について – 映像、音声、データーの有無 – 使いたいコーデック、使いたい帯域幅、など – 通信を始める側: Offer – 通信に応答する側: Answer • ICE Candidate – 通信に使う経路の情報
17.
SDP と ICE •
ICE Candidate…経路の情報を示す。複数ある場合も多い • P2Pによる直接通信 • STUNによる、NAT通過のためのポートマッピング – → 最終的にはP2Pになる • TURNによる、リレーサーバーを介した中継通信 SDP SDPICE
18.
ご注意 • ICE Candidate
を収集するには、デバイスが ネットワークに繋がっている必要があります – ネットワーク無し、localhostのみだとICE candidate が収集できない • ハンズオンは、テザリング等でデバイスをネッ トワークに接続してから、実行してください – 外部と実際には通信しませんが、外部と接続でき るネットワークが必要です
19.
シグナリング • 最初は通信相手のことをお互い知らない • 情報をなんらかの方法で交換する必要あり –
→ シグナリング • 通常は仲介役となるサーバーを用意 – → シグナリングサーバー • 今日は、仲介役は「あなた」 – → 手動でシグナリング
20.
デモ
21.
SDPの交換の概略: Offer側 • Offer
SDP を生成 – RTCPeerConnection.createOffer() • 自分のSDPを覚える – RTCPeerConnection.setLocalDescription() • 相手に送る • 相手から Answer SDP を受け取ったら、それを覚える – RTCPeerConnection.setRemoteDescription() ※非同期処理になるので、コールバックを使って記述
22.
SDPの交換の概略: Answer側 • 相手から
Offer SDP を受け取ったら、それを覚える – RTCPeerConnection.setRemoteDescription() • Answer SDP を生成 – RTCPeerConnection.createAnswer() • 自分のSDPを覚える – RTCPeerConnection.setLocalDescription() • 相手に送り返す ※非同期処理になるので、コールバックを使って記述
23.
コードの概略 // プレフィックスを吸収する RTCPeerConnection =
window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection; // PeerConnectionオブジェクトを生成する var peerConnection = new RTCPeerConnection({"iceServers":[]}); // iceServersは NAT/Firewall越えを行う場合に指定 // 今回は指定は空っぽでOK // Offer SDPを生成する peerConnection.createOffer( function(sessionDescription) { // 成功した場合 }, function(err) { // 失敗した場合 }, {} // オプション指定 );
24.
コードの概略(続き) // Answer SDPを生成する peerConnection.createAnswer( function(sessionDescription)
{ // 成功した場合 }, function(err) { // 失敗した場合 }, {} // オプション指定 ); // SDP を受け取った場合 peerConnection.setRemoteDescription(sessionDescription, function() { // 成功 }, function(err) { // 失敗 } );
25.
ICE Candidateの交換の概略 • ICE
Candidate (通信経路の候補)は複数個ある • 非同期に順々に収集される – RTCPeerConnection.onicecandidate() • 早く見つかったものから随時交換… Trcikle ICE – 早く繋がるケースが多い • 全て見つけてから、まとめて交換… Vanilla ICE – 処理はシンプル。※今日はこちらを利用
26.
Trickle ICE によるシグナリング
27.
Vanilla ICE によるシグナリング
28.
コードの概略 peerConection.onicecandidate = function
(evt) { if (evt.candidate) { // 個々のcandidateを収集をした時の処理 // Trikle ICE の場合、ここで処理する } else { // 全てのICE candidateが収集し終わったタイミング // Vanilla ICE の場合、ここで処理する var sdpWithICE = peerConnection.localDescription.sdp; } };
29.
手動シグナリングをやってみよう (1)〜(7) • hand_vanilla_0.html をエディタで開いてください •
makeOffer()関数の(1),(2)を記述してみてください • setOfferText()関数の(3),(4)を記述してみてください • makeAnswer()関数の(5),(6)を記述してみてください • setAnswerText()関数の(7)を記述してみてください
30.
解答例 function makeOffer() { //
(1) createOfferを呼び出して、Offer SDPを生成する peerConnection.createOffer(function (sessionDescription) { // in case of success // (2) 生成されたSDPを、peerConnetionにセットする // ※Vanilla ICEを用いるため、すぐにはOfferを相手に送信しない peerConnection.setLocalDescription(sessionDescription, function() { console.log('setLocalDescription() succsess'); // ※Trickle ICEの場合は、このタイミングでOffer SDPを相手に送信する // ※Vanilla ICEの場合には、まだ送らない }, function(err) { console.error('setLocalDescription() ERROR: ', err); } ); console.log('-- Create Offer SDP --'); console.log(sessionDescription); }, function (err) { // in case of error console.error('Create Offer failed:', err); }, mediaConstraints); }
31.
解答例 // Offerを受け取る function setOfferText(text)
{ // SDPの文字列からRTCSessionDescriptionのオブジェクトを生成 var offer = new RTCSessionDescription({ type : 'offer', sdp : text, }); // (3) 生成したオブジェクトを、peerConnetionにセットする // 相手側のSDPをセットする peerConnection.setRemoteDescription(offer, function() { console.log('setRemoteDescription(offer) succsess'); // (4) さらに、適切なタイミングで用意している関数 makeAnswer() を呼び出す // コールバックが呼ばれたら、Answerを生成する makeAnswer(); }, function(err) { console.error('setRemoteDescription(offer) ERROR: ', err); } ); }
32.
解答例 // Answer を生成する function
makeAnswer() { // (5) createAnswerを呼び出して、Answer SDPを生成する peerConnection.createAnswer(function (sessionDescription) { // in case of success // (6) 生成されたSDPを、peerConnetionにセットする // ※Vanilla ICEを用いるため、すぐにはOfferを相手に送信しない peerConnection.setLocalDescription(sessionDescription, function() { console.log('setLocalDescription() succsess'); // ※Trickle ICEの場合は、このタイミングでAnswer SDPを相手に送信する // ※Vanilla ICEの場合には、まだ送らない }, function(err) { console.error('setLocalDescription() ERROR: ', err); } ); console.log(sessionDescription); }, function (err) { // in case of error console.error('Create Answer failed:', err); }, mediaConstraints); }
33.
解答例 // Answerを受け取る function setAnswerText(text)
{ // SDPの文字列からRTCSessionDescriptionのオブジェクトを生成 var answer = new RTCSessionDescription({ type : 'answer', sdp : text, }); // (7) 生成したオブジェクトを、peerConnetionにセットする // 相手側のSDPをセットする peerConnection.setRemoteDescription(answer, function() { console.log('setRemoteDescription(answer) succsess'); }, function(err) { console.error('setRemoteDescription(answer) ERROR: ', err); } ); }
34.
Thank you! 34 END
Download