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
Submit search
EN
Uploaded by
mganeko
PPTX, PDF
4,133 views
WebRTC Build MCU on browser
WebRTC Meetup Tokyo 11 の資料です。ブラウザでMCU作ってみた。Canvasを駆使してMCU(Multipoint control Unit)を実現してみました。
Technology
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Downloaded 20 times
1
/ 29
2
/ 29
3
/ 29
4
/ 29
5
/ 29
6
/ 29
7
/ 29
8
/ 29
9
/ 29
10
/ 29
11
/ 29
12
/ 29
13
/ 29
14
/ 29
15
/ 29
16
/ 29
17
/ 29
18
/ 29
19
/ 29
20
/ 29
21
/ 29
22
/ 29
23
/ 29
24
/ 29
25
/ 29
26
/ 29
27
/ 29
28
/ 29
29
/ 29
More Related Content
PPTX
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
by
mganeko
PPTX
Inside WebM
by
mganeko
PDF
SFUの話
by
tnoho
PDF
WebRTCの技術解説 公開版
by
Contest Ntt-west
PDF
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
by
Yusuke Naka
PDF
WebRTCの技術解説 第二版 公開版 完全版
by
Contest Ntt-west
PDF
サーバPUSHざっくりまとめ
by
Yasuhiro Mawarimichi
PPTX
Nreal Lightハンズオン
by
Takashi Yoshinaga
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
by
mganeko
Inside WebM
by
mganeko
SFUの話
by
tnoho
WebRTCの技術解説 公開版
by
Contest Ntt-west
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
by
Yusuke Naka
WebRTCの技術解説 第二版 公開版 完全版
by
Contest Ntt-west
サーバPUSHざっくりまとめ
by
Yasuhiro Mawarimichi
Nreal Lightハンズオン
by
Takashi Yoshinaga
What's hot
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
PDF
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
by
UnityTechnologiesJapan002
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
PPTX
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
by
WESEEKWESEEK
PDF
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
PPTX
Keycloak入門
by
Hiroyuki Wada
PPTX
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
by
Yugo Shimizu
PDF
UE4を使った映像制作 (UE4 Character Art Dive Online)
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
実践イカパケット解析
by
Yuki Mizuno
PDF
WebSocketのキホン
by
You_Kinjoh
PPTX
WkWebViewのキャッシュについて調べた
by
firewood
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
by
ShuheiUda
PDF
nginx入門
by
Takashi Takizawa
PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
by
Yoshiro Tokumasu
PDF
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
by
Shohei Okada
PDF
ChatGPTは思ったほど賢くない
by
Carnot Inc.
PPTX
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
by
jyouryuusui
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
by
UnityTechnologiesJapan002
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
by
WESEEKWESEEK
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
Keycloak入門
by
Hiroyuki Wada
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
by
Yugo Shimizu
UE4を使った映像制作 (UE4 Character Art Dive Online)
by
エピック・ゲームズ・ジャパン Epic Games Japan
実践イカパケット解析
by
Yuki Mizuno
WebSocketのキホン
by
You_Kinjoh
WkWebViewのキャッシュについて調べた
by
firewood
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
by
ShuheiUda
nginx入門
by
Takashi Takizawa
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
by
Yoshiro Tokumasu
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
by
Shohei Okada
ChatGPTは思ったほど賢くない
by
Carnot Inc.
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
by
jyouryuusui
Similar to WebRTC Build MCU on browser
PPTX
WebRTC SFU mediasoup sample
by
mganeko
PPTX
WebRTC SFU Mediasoup Sample update
by
mganeko
PPTX
WebRTC mediasoup on raspberrypi3
by
mganeko
PPTX
2013 WebRTC node
by
mganeko
PPTX
ブラウザでWebRTC - iOSゲートウェイ作ってみた
by
mganeko
PPTX
Vuzix Developer Conference
by
Keiji Ariyama
PDF
20130216
by
komarineko
PDF
HTML5開発最前線
by
yoshikawa_t
PPTX
WebRTCとSFU
by
Saki Homma
PDF
2013 WebRTC 概説 & ワークショップ
by
mganeko
PDF
Web BluetoothではじめるIoT Prototype
by
Masayuki Kurashita
WebRTC SFU mediasoup sample
by
mganeko
WebRTC SFU Mediasoup Sample update
by
mganeko
WebRTC mediasoup on raspberrypi3
by
mganeko
2013 WebRTC node
by
mganeko
ブラウザでWebRTC - iOSゲートウェイ作ってみた
by
mganeko
Vuzix Developer Conference
by
Keiji Ariyama
20130216
by
komarineko
HTML5開発最前線
by
yoshikawa_t
WebRTCとSFU
by
Saki Homma
2013 WebRTC 概説 & ワークショップ
by
mganeko
Web BluetoothではじめるIoT Prototype
by
Masayuki Kurashita
More from mganeko
PPTX
ここがつらいよWebRTC - WebRTC開発の落とし穴
by
mganeko
PDF
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
by
mganeko
PPTX
Amazon Kinesis Video Streams WebRTC 使ってみた
by
mganeko
PPTX
MediaRecorder と WebM で、オレオレ Live Streaming
by
mganeko
PPTX
WebRTCのオーディオ処理の謎、誰か教えて!
by
mganeko
PPTX
Skywayのビデオチャットを録画しよう。そう、ブラウザでね
by
mganeko
PDF
Node.js with WebRTC DataChannel
by
mganeko
PPTX
WebRTC multitrack / multistream
by
mganeko
PPTX
Chromebook 「だけ」で WebRTCを動かそう
by
mganeko
PDF
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
by
mganeko
PDF
WebRTC multistream
by
mganeko
PPTX
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
PPTX
Build Node.js-WASM/WASI Tiny compiler with Node.js
by
mganeko
PDF
Inside of 聖徳玉子 by O2
by
mganeko
PPTX
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
by
mganeko
PPTX
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
by
mganeko
PPTX
Infocom webrtc conference japan
by
mganeko
PPTX
PeerConnectionリレーとMediaRecorder
by
mganeko
PDF
WebRTC Summit 2014 NewYork 参加報告
by
mganeko
PPTX
Webrtc bootcamp handson
by
mganeko
ここがつらいよWebRTC - WebRTC開発の落とし穴
by
mganeko
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
by
mganeko
Amazon Kinesis Video Streams WebRTC 使ってみた
by
mganeko
MediaRecorder と WebM で、オレオレ Live Streaming
by
mganeko
WebRTCのオーディオ処理の謎、誰か教えて!
by
mganeko
Skywayのビデオチャットを録画しよう。そう、ブラウザでね
by
mganeko
Node.js with WebRTC DataChannel
by
mganeko
WebRTC multitrack / multistream
by
mganeko
Chromebook 「だけ」で WebRTCを動かそう
by
mganeko
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
by
mganeko
WebRTC multistream
by
mganeko
WebRTC getStats - WebRTC Meetup Tokyo 5 LT
by
mganeko
Build Node.js-WASM/WASI Tiny compiler with Node.js
by
mganeko
Inside of 聖徳玉子 by O2
by
mganeko
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
by
mganeko
Nodeで操るKurentoメディアサーバー ( Kurento + WebRTC + Node.js )
by
mganeko
Infocom webrtc conference japan
by
mganeko
PeerConnectionリレーとMediaRecorder
by
mganeko
WebRTC Summit 2014 NewYork 参加報告
by
mganeko
Webrtc bootcamp handson
by
mganeko
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
WebRTC Build MCU on browser
1.
WebRTC Meetup Tokyo
#11 ブラウザでMCU 作ってみた Build MCU on Browser インフォコム株式会社 がねこまさし @massie_g 1
2.
自己紹介 • がねこまさし /
@massie_g • インフォコム株式会社 に所属 – 技術調査と社内での利用を推進するチーム • WebRTC入門2016を HTML5Experts.jpに連載中 – https://html5experts.jp/series/webrtc2016/ • 最近Qiitaに上げた記事が、自己最高のストック数 – WebRTCを試すときにオッサンが映り続ける問題に対処する – http://qiita.com/massie_g/items/5a6c4b69374d5997dc37 2
3.
今日のお題 • MCU :
Multipoint Control Unit – 多地点制御装置 – ビデオ会議で良く使うやつ • ブラウザー – WebRTC, Canvas, Web Audio 3
4.
P2P と MCU 4 ブラウザ A ブラウザ B ブラウザ D ブラウザ C P2Pの場合 •
サーバ不要 ◎ • ブラウザ側の • CPU負荷:高 × • ネットワーク負荷:高 × ブラウザ A ブラウザ B ブラウザ D ブラウザ C MCU 映像・音声 を合成 MCUの場合 • MCUサーバ必要 → CPU負荷:激高 ×× • ブラウザ側はCPU/ネットワーク負荷:低 ◎ モバイル にも最適
5.
過去の試み:WebRTC Meetup Tokyo
#4 • WebRTC +αで無理やりやってみた×3 – (3) 多人数の映像を無理やり合成してみた – http://www.slideshare.net/mganeko/webrtc-meetup4-lt (P21~) 5
6.
いまなら、ブラウザだけでできる! • Canvas の
captureStream() – Firefox 43~、 Chrome 51~ • リモートの音声が Web Audio API で操作可能 – Firefox 40以前からOK、 Chrome 49~ 6
7.
ブラウザMCU DEMO 7
8.
MCUサーバー役の仕組み:Video 8 RTCPeerConnection A MediaStream <video>タグ RTCPeerConnection
D MediaStream <canvas>タグ drawImage() requestAnimationFrame()で 継続的に描画 <video>タグ drawImage()
9.
MCUサーバー役の仕組み:Video 9 RTCPeerConnection A RTCPeerConnection D <canvas>タグ MediaStream captureStream(fps)で取得
10.
MCUサーバー役の仕組み:Video 10 RTCPeerConnection A MediaStream <video>タグ RTCPeerConnection
D MediaStream <canvas>タグ MediaStream drawImage() requestAnimationFrame()で 継続的に描画 <video>タグ captureStream(fps)で取得 drawImage()
11.
MCUサーバー役の流れ:Video • RTCPeerConnection からリモートのMediaStreamを取得 –
それを <video> タグで表示 • Canvasのコンテキストを getContext('2d')で取得 • window.requestAnimationFrame()で、継続的に描画処理を実行 – drawImage()を使って、各<video>の映像を、Canvasに描画 • Canvasから captureStream(fps)を使って、MediaStreamを取得 – RTCPeerConnectionに addStream()で渡し、通信相手に送り返す 11
12.
MCUサーバー役の注意点:Video • window.requestAnimationFrame() 利用 –
ウィンドウ/タブが隠れると呼ばれない – 最小化したり、他のタブの後ろに回すと描画停止 • 代わりに window.setInterval() を使っても – ウィンドウ/タブが完全に隠れると、著しく間隔が開いてしまう – 50msに指定しても、後ろに回すと1秒以上間隔が開く 12 DEMO
13.
MCUサーバー役の注意点:Audio • Videoは全員に同じのものを送り返せばよい • Audioは、全員に同じものを送り返すと
… つらい – 自分の声が「ちょっと遅れて戻ってくる」と、とてもしゃべりにくい – WebRTC開発している皆さんは、きっと経験あると思います – 開発していない人にも分かるように、試してみます • https://mganeko.github.io/webrtcexpjp/basic2016/camera_mic.html • ヘッドフォンを付けて、やってみてください • 大変しゃべりにくい、です 13 DEMO
14.
MCUサーバー役の仕組み:Audio • Audioは、「マイナスワン」を作る必要あり – 自分以外の参加者の声を合成(合算)した音 •
複数種類の音声生成が必要 – 4人いたら、4通り – N人いたら、N通り 14 ブラウザ A ブラウザ B ブラウザ D ブラウザ C MCU 音声合成は やっかい 映像(Video)より 音声(Audio)の方が 厄介
15.
MCUサーバー役の仕組み:Audio 15 RTCPeerConnection A MediaStream AudioContext . createMediaStreamSource() で生成 MediaStreamAudioSourceNode
16.
MCUサーバー役の仕組み:Audio 16 RTCPeerConnection D MediaStream MediaStreamAudioSourceNode MediaStreamAudioSourceNode MediaStreamAudioSourceNode MediaStreamAudioDestinationNode AudioContext
. createMediaStreamDestination() で生成 合成(合算)
17.
MCUサーバー役の仕組み:Audio 17 RTCPeerConnection A MediaStream RTCPeerConnection D MediaStream AudioContext
. createMediaStreamSource() で生成 MediaStreamAudioSourceNode MediaStreamAudioSourceNode MediaStreamAudioSourceNode MediaStreamAudioDestinationNode AudioContext . createMediaStreamDestination() で生成 合成(合算)
18.
MCUサーバー役の流れ:Audio • RTCPeerConnection からリモートのMediaStreamを取得 •
Web AudioのMediaStreamAudioSourceNodeを生成 – MediaStreamをWeb Audioのノードに変換 • MediaStreamAudioDestinationNodeを生成 – 自分以外の音のSourceNodeを接続(音を合成) – sourceNode.connect(destinationNode); • MediaStreamを取り出す – RTCPeerConnectionに addStream()で渡し、送り返す – peer.addStream(destinationNode.stream); • ※以上を、メンバー毎に個別に行う 18
19.
MCUサーバー役の仕組み:Video & Audio 19 RTCPeerConnection
A RTCPeerConnection D MediaStream (Video A+B+C+D) MediaStream (Audio B+C+D) RTCPeerConnection B RTCPeerConnection C MediaStream (Audio A+C+D) MediaStream (Audio A+B+D) MediaStream (Audio A+B+C) VideoのみのMediaStreamと AudioのみのMediaStreamの Multi-Stream
20.
ブラウザMCU DEMO 2 •
Canvasの自由度は凄い! 20
21.
ブラウザMCU DEMO 3 •
Canvas + WebGL で3Dも行ける! • 8人 (今回は録画で) • ~25人(今回は録画で) – さすがに厳しい… 21
22.
ブラウザMCU DEMO 4 22 •
MediaRecorderで録画もできる!
23.
MCUサーバー役の仕組み:録画 23 MediaStream (Video A+B+C+D) <canvas>タグ 配信用のものを利用 Web
Audio API MediaStream (Audio A+B+C+D) 録画用に改めて準備 videoTracks[] MediaStreamTrack MediaStreamTrackaidioTracks[] MediaStream 新しく生成 MediaStream.addTrack() で追加 MediaStream.addTrack() で追加 MediaRecorder WebM
24.
MCU vs. SFU 24
25.
SFU: Selective Forwarding
Unit 25 ブラウザ A ブラウザ B ブラウザ D ブラウザ C SFU 映像・音声 を分岐/配信 ブラウザ A ブラウザ B ブラウザ D ブラウザ C MCU 映像・音声 を合成 MCUの場合 • MCUサーバ必要 → CPU負荷:激高 ×× • ブラウザ側はCPU/ネットワーク負荷:低 ◎ SFUの場合 • SFUサーバ必要 → CPU負荷:低 ○ • ブラウザ側はCPU負荷:低め ○ • ブラウザ側はネットワーク負荷:中 △ 表示レイアウトの 自由度が高い ◎
26.
ブラウザMCU DEMO 5 •
MCUは表示レイアウトが固定 → 自由度が低い • ... 否、無理やりレイアウト変更もできる! 26
27.
オマケ:MCUの泣き所 • 本物のMCUでは、タイミング合わせが大変 – それぞれの映像のコマのタイミングを合わせる –
映像と音声のタイミングを合わせる – → 今回のブラウザMCUでは、一切タイミング合わせはしない • タイミング合わせのために、ある程度待つことも必要 – ただし、いつまでも待っていてはならない – クライアント側との通信が切断されたら、あきらめる必要がある • 黒コマを送る、or 最後の絵を送る、など – → 今回のブラウザMCUでは、何も気にしなくて良い 27 DEMO
28.
まとめ • WebRTC +
Canvas の可能性は無限大 – とても楽しいオモチャ • ローカルファイルの配信も可能 • http://qiita.com/massie_g/items/5a6c4b69374d5997dc37 • とは言え、サーバ役にムチャクチャ負荷がかかる – スケールしない、非実用的 • ユーザにサーバ役も賄ってもらえれば、使いようはあるかも? • 本日のプレゼン資料は Slideshareに 28
29.
Thank you! 29
Download