Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

WebRTC +αで無理やりやってみた×3 WebRTC Meetup Tokyo 4

3,786 views

Published on

WebRTC Meetup Tokyo 4 で発表する資料です。
WebRTC+αで無理やりやってみた×3
http://peatix.com/event/51641

Published in: Technology
  • Be the first to comment

WebRTC +αで無理やりやってみた×3 WebRTC Meetup Tokyo 4

  1. 1. WebRTC + α で無理やりやってみた×3 WebRTC Meetup Tokyo #4 LT 2014.10.03 インフォコム株式会社 がねこまさし
  2. 2. 最初に • 今回は(も)、邪道な内容です • 本来、ブラウザだけで色々できるWebRTCですが、それ 以外の小道具を使って実現しました • 今日は(も)、ソースコードは一切ありません • ※スケールしない方法なので、お勧めしません
  3. 3. (1) 無理やりFirewallを 越えてみた
  4. 4. まだTURN サーバーの動かし方が 分からなかった頃 • 社外で行われたイベントを、社内ネットワークで 中継したい! – 岩沼みんなの家(宮城県)で、社内ハッカソンを実施 – 作品発表会を、オフィスの人たちに見せたい https://www.facebook.com/minnanoie.iwanuma.infocom
  5. 5. まだFirewallを超えられない… でも、無理やり超えてやる!
  6. 6. 「光学的」Firewall越え ※音声はアナログでFirewall越え ヘッドフォン端子→マイク端子
  7. 7. 結果 • 反射して見にくい • 音が割れて聞きにくい … さんざんなコメント でも、「楽しそうな雰囲気は伝わった」とのこと • その後、TURNサーバーの使い方が分りました – 「壁を越えろ!WebRTCでNAT/Firewallを越えて通信しよう」 – http://html5experts.jp/mganeko/5554/ – ※ 「WebRTC firewall」で検索!
  8. 8. (2)中継を 「無理やり中継」してみた
  9. 9. WebRTC Meetup Tokyo #2 にて • 「音声が多段中継できない」 MediaStream PeerConnection PeerConnection MediaStream 配信元 PeerConnection 中間層 MediaStream PeerConnection 視聴者 映像は出る 音が出ない!!
  10. 10. discuss-webrtc Group に(最近)質問 • リモートの音声をリレーできないんだけど、どうして? – WebRTC audio is not passed, while relaying remote stream to another. • I am trying to relay mediastream of WebRTC, using three Chrome 37 browsers. • In Browser3, playing video is OK, but there is no audio. • Is it limitaion of specification of WebRTC, or something wrong with me? • → 現状できないよ。Issue 2192を見ろ – Relaying audioTracks is not supported currently, see issue 2192. – https://code.google.com/p/webrtc/issues/detail?id=2192
  11. 11. Issue 2192 Investigate/ Implement adding remote audio track/stream to a PeerConnection. • Aug 7, 2013 – Split from https://code.google.com/p/webrtc/issues/detail?id=383 (Mar 21, 2012) for tracking the work on the audio side. • May 28, 2014 – They are replumbing all the audio stack so it takes some time. Here is a rough roadmap given earlier this year (march): • Move the WebRTC APM to Chrome • Implement a media stream render mixer in Chrome. • Change the render callback from a pull model to a push model, and connect the render data to the mixer • Allow WebRtc to pass un-mix data to Chrome through Libjingle, and add support for relaying the stream. 根が深い、やっかいな問題らしい。残念
  12. 12. 待て、俺には「無理やり」がある!
  13. 13. WebRTC多段中継:試し PeerConnection PeerConnection MediaStream PeerConnection MediaStream 中間層 視聴者 映像は出る 「別の」音が出る VideoTracks MediaStream MediaStream AudioTracks 生成 「別の」音を入力 「映像」だけ取り出し
  14. 14. 「音が出た!」
  15. 15. WebRTC多段中継:無理やり PeerConnection PeerConnection MediaStream PeerConnection MediaStream 中間層 視聴者 映像は出る 「元の」音が出た! VideoTracks MediaStream MediaStream AudioTracks 生成 再生して、 また拾う
  16. 16. 自分のヘッドフォン端子→ マイク端子 ※ハウリングの危険! 絶対にマイクの音を モニター再生しないで! マイクヘッドフォン
  17. 17. 結果 • 狙い通り視聴者に元の音を届けるこができた • が、非常に音質が悪い • …使えない
  18. 18. おまけ:ステレオミキサーの場合 • Windowsには「ステレオミキサー」なる仮想的な音声 入力デバイスがある • PCで鳴らす音を全部取得することが可能
  19. 19. おまけ:ステレオミキサーの場合 • Windowsには「ステレオミキサー」なる仮想的な音声 入力デバイスがある • PCで鳴らす音を全部取得することが可能 • 一旦再生した音声を再度 デジタル化する • その分のディレイが発生 • 動画と合わせるとかなりの 違和感 やっぱり、使えない…
  20. 20. おまけ:ステレオミキサーの場合 • Windowsには「ステレオミキサー」なる仮想的な音声 入力デバイスがある • PCで鳴らす音を全部取得することが可能 • 一旦再生した音声を再度 デジタル化する • その分のディレイが発生 • 動画と合わせるとかなりの 違和感 やっぱり、使えない… ※高性能のUSBオーディオインターフェ イスを使えば、行けるかも…
  21. 21. (3)多人数の映像を 無理やり合成してみた
  22. 22. きっかけ「10人でWeb会議したい」 • 人事部「WebRTCとやらで出来るんでしょ?」 • 俺「…それ、無理です(P2Pだし)」 • 人事部「なんだあ(しょぼい…)」 • 俺「(くそう…涙)」 実際試してみた→ 社内開発機では意外と行けた が、インターネット環境が絡むと、6人以上はストリームが流れない ケースが多発
  23. 23. 待て、俺には「無理やり」がある! ※アイデアは@satoru_tk さんから 頂きました
  24. 24. 各メンバーの映像を、1台にまとめる 多対1、片方向通信
  25. 25. 別のPCでキャプチャー HDMI キャプチャー ユニット ブラウザはカメラとして認識 「ドライバ必要なしUSB接続のHDMIビデオキャプチャユニット」を利用 http://febon.blogspot.com/2013/12/uvc-usbhdmi.html (台湾の個人事業主っぽい) ←FEBON168 HDMI Grabber Card ※ステマじゃないよ。お金は貰ってません!
  26. 26. 映像を、1対多の片方向配信
  27. 27. ここまで、全体像 HDMI キャプチャー ユニット
  28. 28. ところで、音声は? • この方式で音声も合成した場合 – 自分の声が、少し遅れて帰ってくる – …かなり話し辛い • 本来は、「マイナスワン」の音声が必要 – 自分以外の人たちの音声を合成してほしい – かなり面倒 • →別の方法で実現
  29. 29. 音声は、Peer-to-Peer で
  30. 30. HDMI キャプチャー ユニット 全体像
  31. 31. 結果 • 社内実験環境ではできた(~12人まで実験) • ※インターネット越しの実践投入はまだ
  32. 32. メディアサーバー/MCUが やってること HDMI キャプチャー ユニット ところで、 「餅は餅屋」に任せるのが良さそう Dialogic XMS, Intel CS for WebRTC, Kurento(←鋭意調査中)
  33. 33. END 良い子は、 けっして真似しないでください

×