台風な中、今回も海外スピーカーの多い回やった。
YouTubeでの配信もあったしアーカイブも公開されてるので、今からでも見れます!
Gone in 1100 seconds — The weirdest bug I have ever met" by @daginge
WebRTC Conferenceにきてたらしい!
Confrere
- WebRTCを使ったビデオチャットのサービス
- Confrere - Video conversations with you clients, without the hassle
- リンクを共有するだけではじめられるよ
- Dashboardが便利だよ
- 誰が見てるかわかる
- マイクやカメラの様子とかも
18min 20sec
- いっつも18分でチャットが切れるというお問い合わせ
- 謎
- WebRTC開発はバグまみれでもあるけど・・
- Safariとか突然フリーズしてシャットダウンしたし
- 某Android端末とか赤外線カメラがデフォルトになる
- そんな中でも最も謎だった
どうデバッグしていくか
- 便利なツールたち
- RTCStats
- `chrome://webrtc-internals`
- https://fippo.github.io/webrtc-dump-importer/
- だめなのは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.264でAWSにアップしてたけど、VP8じゃないの?
- Safariがいるから・・
こういう話聞くと、フロントエンドのAPIがどうこうなんか大した問題ではないよなーと思う・・。
Screen Mirroring Service with WebRTC by SangSoo Hong@Rsupport
韓国のWebRTC界をリードしている起業です!とのこと。
はじめに
- IT業界にくるまえは、獣医だった
- アンチウイルスソフト作ってた
- いまはRsupportという会社で、Mobizenというのを作ってる
- Mobizen | Your Android, Anywhere
- 他にもWebRTCを使った商品はある
Mobizen
- Androidで使える画面ミラーリングアプリ
- プレゼン機能もあって、そっちでWebRTCを使ってる
- スマホの画面をPCに飛ばす
- ファイルを共有したり、ホワイトボードみたく使ったり
- 上司からWebRTC使って簡単なプレゼン機能を作れと言われた
MobizenPT(PresenTation)
- Offer側はPC・モバイル
- EdgeもSafariも
- 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がミラーリングをサポートしてない
- SafariがH.264しかサポートしてない
- EdgeにDataChannelがない
- なんか突然パケットが遅延する現象
質疑
- なんで技術選定がWebRTC縛りだったの?
- 小さい会社でCEOがほぼ主導してたのでそれで決まった
- そのおかげで2ヶ月くらいで作れた
WebRTCでロボット遠隔操作デバイス作った話 by 今井 大介+馬 英奎 @ Asratec Corp
最後はロボットのデモ!
はじめに
- V-Sido
- 駆動制御に特化した汎用ソフトウェア
- V-Sido OS | アスラテック株式会社
- たくさんのメーカーのロボットで使える
- 最近の例だと、車から人型に変形するロボットとか
- 以前のWebRTC Meetupで発表してた
過去の取り組み
- 2015年: モーションキャプチャでロボを動かす仕組みの通信部分
- 2016年: PepperにVRゴーグルで乗り移れるテレプレゼンスの仕組み
- 裏はSkyWay
- 2017年: VRCon for Pepper
2018年の取り組み
- V-Sido WebConnect
- ロボット制御用のWebRTCアプライアンスBOX
- RaspberryPiベース
- arm用にlibwebrtcをビルド
- M65くらいのmasterをクロスコンパイル環境作ってやってる
- 有線接続の延長ケーブル的な立ち位置
- ロボもソフトも改修なしで対応できる
- ロボとBOX間は、WebSocketやTCP/UDPでの接続も実績ある
質問
- 個人で買える?
- 今は売ってない
- 何かと開発が必要になったりするので
- ただ個人からの声も多く聞くので、これから用意したいと思ってる
- ロボットとBOXは何でつながってる?
- WebRTCのDataChannel
- ロボ・PCの両方にBOXが必要で、そこでシリアル <-> DC変換してる
- となるとWebRTCを使うメリットは?
- LANを超えて遠隔操縦できるようになる
- Videoの転送もすごく楽になった
ロボットSUGEEE!