🧊

WebRTC Meetup Tokyo #18 に行ってきたメモ #webrtcjp

WebRTC Meetup Tokyo #18 : ATND

台風な中、今回も海外スピーカーの多い回やった。

YouTubeでの配信もあったしアーカイブも公開されてるので、今からでも見れます!

WebRTC Meetup Tokyo #18 #webrtcjp - YouTube

Gone in 1100 seconds — The weirdest bug I have ever met" by @daginge

WebRTC Conferenceにきてたらしい!

Confrere

18min 20sec

  • いっつも18分でチャットが切れるというお問い合わせ
  • WebRTC開発はバグまみれでもあるけど・・
    • Safariとか突然フリーズしてシャットダウンしたし
    • Android端末とか赤外線カメラがデフォルトになる
  • そんな中でも最も謎だった

どうデバッグしていくか

  • 便利なツールたち
  • だめなのはChrome <-> Edge
  • まずは問題の通信ログを見ていった
    • 特に通信が閉じた様子もなかった
  • ハードから揃えて、再現環境を作った
    • WindowsのLaptopでEdgeを使って
    • したら再現した

デバッグの歩み

  • 1歩ずつ試していく
    • そしてどうなったかをドキュメントにしていく
  • Chrome <-> Edgeがダメ
  • Chrome <-> ChromeはOK
  • Firefox <-> Edgeもダメ
  • Chrome <-> Edgeをappear.inで試すと動いた
    • これで問題は自分たちにあることがわかった
  • 違う日に、家の回線から試してみた
  • Chrome <-> Edgeがなんと動いた
    • `iceTransportPolicy: 'relay'`にしたらダメだった
  • Chrome <-> Edgeをappear.in w/ TURNでやると動く
  • これで自分たちのTURNに問題があることが切り分けできた
  • TURNのログを見る
  • `nonce`の設定が怪しい・・?
    • 乱数的なもの
    • 定期的にリフレッシュされるべき値
  • appear.inの中の人が友達なので聞いてみた
    • MicrosoftのQAでそういう事象があったと聞いた
    • しかも2017年の5月に
    • けど界隈のどこにもその情報は残ってない
  • coturn側で`stale-nonce`をdisabledにするしかないらしい
  • やってみたらなおった!!

18minの裏側

  • 600secでnonceがinvalidに
  • その後500secで通信が切れる
    • これはcoturnデフォルトのtimeout値らしい
  • Edgeがnonceの更新をしてなくて、Chrome側は問題ないのにEdge側が切れる

質問

  • 最新のEdgeでもダメなの?
    • たぶんダメ(試してないけど
    • 直すの難しいんだろうと思う

これだからEdgeは・・。

Autonomous WebRTC Clients: The Why and How by Sean Oxley @ DMM Eikaiwa

WebRTC Bot

  • Videoの送受信ができるBot
    • WebAPI経由で部屋に呼び出せるようになってる
    • 任意の動画を送りつけたり、録画したり
  • これを、DMM英会話でどう使ってるかの話
  • 見えないピアとして会話に参加してる
  • 聞き専で入って、videoをAWSに流す
  • ただ帯域を食うのが玉にキズ

Botの用途

  • レッスンの録画
    • レッスンはP2Pなので、サーバーで録画とかできない
  • ユーザー側で録画することも考えたが、
    • いつタブが閉じられるかと思うとこっち側で管理したい
  • あとはテスト用途、モニタリング
  • ユーザーの設定をチェックしたり
  • 純粋に英語の上達具合をあとから見返したり
  • CrashMonitoring

Botの詳細

  • C++ w/ libwebrtc
  • APIのところはRuby / Sinatra
    • `/launch_bot`を叩くと、Botのプロセスがspawn
    • 1Botプロセスは同時に1部屋にしか入れない
  • Docker on AWSなので、スケールアップ・ダウンは簡単
  • Realtimeと呼んでる独自プロトコルを解釈する
    • 他のピアから命令される
  • あとはいつものWebRTCな手順(Offer/Answer)
  • libwebrtcつらい
    • が仕方ない
  • AWSいいけど、CPU使う処理には向かない
    • お金が・・
  • クライアント向けにre-encodingするのを回避したい
    • built-inのDecoderをモック
    • パケットをそのままパスして録画
    • SDPのコーデックを固定したり調整

質問

  • AWSはLambda?
    • ちがうよ
  • Botは誰が呼ぶの?
    • 先生が呼んだりすることもある
    • なんか会話の調子が悪いときとかに調べてもらう
  • libwebrtcのコンパイルめっちゃ大変なので、そのBotで使ってるバイナリとか周辺、OSSにしてくれません・・?
    • まだ開発中なので、この先は未定
    • もしやるなら、大変なところは解消したい気持ちはある
  • 録画の帯域はどれくらい使ってる?
    • まだちゃんと決めてない
  • H.264AWSにアップしてたけど、VP8じゃないの?

こういう話聞くと、フロントエンドのAPIがどうこうなんか大した問題ではないよなーと思う・・。

Screen Mirroring Service with WebRTC by SangSoo Hong@Rsupport

韓国のWebRTC界をリードしている起業です!とのこと。

はじめに

Mobizen

  • Androidで使える画面ミラーリングアプリ
  • プレゼン機能もあって、そっちでWebRTCを使ってる
  • スマホの画面をPCに飛ばす
  • ファイルを共有したり、ホワイトボードみたく使ったり
  • 上司からWebRTC使って簡単なプレゼン機能を作れと言われた

MobizenPT(PresenTation)

  • Offer側はPC・モバイル
  • Answer側はAndroidだけ
  • もともとのミラーリングは、WebSocketでJPEGを送ってた
  • WebRTCにしたことで、各種コーデックを選んでvideo要素だけで表示できるように
  • 解像度もビットレートもconstraintsで指定できるようになった

デモ

  • まだ開発中で韓国語のみ
  • PC側で表示されたpinコードみたいな6桁を、Androidで入力すると接続
  • 韓国にあるサーバーを経由
  • Mobizen専用のイヤホンもAmazonで売ってるよ
  • Android側の画面だけじゃなく、音も飛ばせるのがウリ

WebRTCはミラーリング向きだったか

  • 採用してよかったと思う
  • ブラウザさえあれば、OSも関係ないしプラグインも不要
  • デフォルトのコーデックも及第点
  • 本当は面倒なシグナリングも、画一的な手順がちゃんとあるし
  • ICEも賢いし、STUN/TURNでだいたいつながる
  • `gUM()`のconstraintsで設定を変えられるのもいいよね

MobizenPTの今後

  • 商用化を目指してるわけでないけど、取り組みたいこと
  • DataChannelでファイル共有
  • PC画面のミラーリング
  • 録画

つらいこと

  • iOSミラーリングをサポートしてない
  • SafariH.264しかサポートしてない
  • EdgeにDataChannelがない
  • なんか突然パケットが遅延する現象

質疑

  • なんで技術選定がWebRTC縛りだったの?
    • 小さい会社でCEOがほぼ主導してたのでそれで決まった
    • そのおかげで2ヶ月くらいで作れた

WebRTCでロボット遠隔操作デバイス作った話 by 今井 大介+馬 英奎 @ Asratec Corp

最後はロボットのデモ!

はじめに

  • V-Sido
  • 最近の例だと、車から人型に変形するロボットとか
  • 以前のWebRTC Meetupで発表してた

過去の取り組み

  • 2015年: モーションキャプチャでロボを動かす仕組みの通信部分
  • 2016年: PepperにVRゴーグルで乗り移れるテレプレゼンスの仕組み
    • 裏はSkyWay
  • 2017年: VRCon for Pepper

2018年の取り組み

質問

  • 個人で買える?
    • 今は売ってない
    • 何かと開発が必要になったりするので
    • ただ個人からの声も多く聞くので、これから用意したいと思ってる
  • ロボットとBOXは何でつながってる?
    • WebRTCのDataChannel
    • ロボ・PCの両方にBOXが必要で、そこでシリアル <-> DC変換してる
  • となるとWebRTCを使うメリットは?
    • LANを超えて遠隔操縦できるようになる
    • Videoの転送もすごく楽になった

ロボットSUGEEE!