行ってきたし、LTで発表もしてきました。
スタッフ・ドリンク・フードの潤沢さに大企業の影を見たやで・・・!
SkyWayの目指す世界 by @mizuman_
SkyWayの歩み
- 5590のユーザー
- 9036のサービス
- 300+の企業と
- 488973/日接続!
- いろんなことができることがわかり、晴れて商用化!
SkyWayは何をしてくれるのか
- WebRTCは難しい
- そこを簡単に使えるように
- 本業のアイデアやイノベーションに集中してもらう
- ブラウザ / iOS / Android / IoT
- 無料のコミュニティエディションもあるよ
- 通信料の制限はあるが毎日キーを変えれば・・
お願い
- 開発者同士でもっとつながって
- アイデアを共有するとか
- コラボレーションすればできることは無限大
SkyWayを使いこなすために by @iwashi86
はじめに
- SkyWay = Peer.js?
- 当初は依存してた
- しかし今は違うよ
- フルスクラッチだよ!
- Safariしか持ってないような最新のAPIにも対応してるよ
- APIをPeer.js互換にしたのは、後方互換のため
- マイグレーションも公式サイトで案内
- 今後もsemverで、メジャーは変えない予定
基本
- `new Peer()`するときに
- config: `RTCPeerConnection`へのコンフィグも渡せる
- debug: ログレベルを設定できるし、サポートも答えやすいかも
- 1:1したいなら
- `peer.call()`するだけ
- 受け取ったら`video.srcObject`に
- N:NならフルメッシュとSFUのルームがあるよ
- https://conf.webrtc.ecl.ntt.com/ で動作も試せるよ
- DataChannelの場合は、`peer.connect()`
- ルームのDataChannelの中身は現状WebSocketです
応用
- 帯域の指定ができるので、P2Pでも頑張れる
- `peer.call(peerId, stream, { videoBandwidth, audioBandwidth })`
- コーデックも変えられる
- `peer.call(peerId, stream, { videoCodec, audioCodec })`
- H264にしたりVP9とかも
- 中でSDPを書き換えてます
- `peer.call(peerId, stream, { metadata })`
- 好きなデータを渡したい時に使える
- `peer.call()`でストリームを渡さないと、受信専用に
- P2Pでツリーを形成すれば・・・
ハック
- デバッグ
- `call._negotiator._pc.getStats()`で情報を引っこ抜ける
- TURN as a Service
- `new Peer()`したときに実は取得してる
- `peer._pcConfig.iceServers`でわかる
- STUN/TURNサーバーの場所
- 日本、シンガポール、オランダ、アメリカ
- 近いところを自動的に
- TLSをほどくProxyとかを通らない限り、ほとんどのケースでつながる
- SFU
- 現状サーバーは東京のみ
- 24時間つなぎっぱなしでも安定稼働してます
- SDK
- ブラウザ / iOS / Android / IoT(β)
- ブラウザに関しての対応ブラウザは、SafariとEdgeも一応動く(P2P)
その他
- 画面共有のライブラリもあるよ
- 認証
- 正式版のみシークレットキーを用意
- timestampと組み合わせてトークンに
- https://github.com/skyway/skyway-peer-authentication-samples
iOSでのSkyWay開発の勘所とTips by @jumboOrNot
自分の資料をなおしてたのでメモる暇なかったですごめんなさい!
Meetupでもおなじみ?のレアジョブのお方によるiOS x Firebaseのお話でした。
Skywayのビデオチャットを録画しよう。そう、ブラウザでね by @massie_g
- SkyWayは録画機能ないですよね
- ブラウザでできるよ
- `canvas.captureStream()`
- 音は`WebAudio`
- あとは`MediaRecorder`で
- 複数のストリームを1つのcanvasにrAFで書いてる
- 音声も複数のストリームを1つのAudioNodeにつなぐ
- 最後にそれぞれのTrackを、Streamにまとめて録画
SkyWay × cognitive service by @lz650sss
- Cognitive Service
- MSのサービス
- 写真やgUMのストリームから、表情の認識をするAPIを
- gUMでMediaStreamを取得、BlobにしてCSに投げる
- レスポンスをDataChannelで共有
- Face API以外にも色々ある
- 組み合わせると、おもしろビデオチャット作れそう!
SkyWay Q&A大会
- モデレーター: 我如古さん
- プロダクトマネージャー: 水嶋さん
- インフラ: 桂さん
- JS / シグナリングサーバー: アレンさん
- iOS / Android: 高橋さん
いつnpmで使えるようになるの
- 予定はあるよ
- Coming soonって感じ
iOS / AndroidでH.264
- P2Pのビデオ・メッシュは使えます
- SFUはまだ
- Androidは機種によってHWエンコードができないので注意
- Android 5.xとかなら大丈夫そう
冗長化・負荷分散どうなってるの
- 冗長化してるよ
- 電源レベルで
- SFUもこれから世界中にサーバーを配置していく予定
時雨堂のSFUとどう違うの
- Jitsi Video Bridgeを使ってる
- 時雨堂
- ライセンスを買って、自分のサーバーで動かすモデル
- 配信向けなイメージ
- SkyWay
- プラットフォーム
- 双方向
今後のロードマップ
- 皆さんの使用状況をまず把握したい
- 冗長化とか
- コーデックの対応とか
- SFUはα版と書いてあるが?
- もう正式版です
- Windows向けはどうすれば(C#とかのSDK・・
- 有志でラッパを書いてる人もいる
- Electronとか
- 前向きに考えてはいる
RaspPiで配信したい
- 既に出してるIoT SDKでもできる
- Janusとか
インフラチームの体制はどんな感じ?
- サーバー台数: 30くらい
- BGDなので最大 x2くらい
- 5−6人くらい
- 24/365対応は、社内の監視部隊も
CloudNですか?
- 使ってません
- 別のEnterpriseCloudっていうのを使ってる
- Azure / AWSとかも
そのコストは?
- 人件費が一番かかってるかな・・
途切れた時にどんなコードを書けば?
- ブラウザごとに挙動が違うのが現状
- ブラウザでどうしようもない時に`close`イベント投げてる
- 回答では`disconnected`って言ってたけど、`close`イベントだったはず
- 放置したらなおることもあるよ
- ほんとだよ!
アプリでもSFUできる?
- コーデックの問題はあるが、使えます
APIキーの使い回しについて
- ユーザー体験を損なわないように・・
- 良心の範囲でw
コミュニティエディション -> エンタープライズエディション
- 現状はコミュニティエディションの上限突破してもすぐ止めない
- メールでお知らせします
- なんなら一緒に移行プランを考えます
仕事楽しい?
- 楽しいよ!
- WebRTCはこれから!
WebRTC業界、キテますねー!(∩´∀`)∩