Gリポートの開発を担当している趙です。
ビデオ通話をするためのシステムを構築することが大変だと思われているかもしれませんが、
ossを調べてみたら、意外と簡単にSFUサーバーを建てることができてしまいます。
今回利用するのは、LiveKit
LiveKit is an open source WebRTC stack that gives you everything needed to build scalable and real-time video, audio, and data experiences in your applications.
- 映像、音声、データのリアルタイムでのやり取りが可能
- TURN機能を内蔵
- SDKが豊富
動作確認も含めて手順を残しておきます。
実行環境
ローカルでも動かすことができますが、今回は
AWS上にサーバーを建てて、そちらデプロイして動作を確認します
os: Ubuntu 22.04.3 LTS
・Elastic IPを紐づいておきます。
・ポートを開ける、利用ポート一覧
LiveKit導入
公式Gitはこちら
・LiveKitをインストール
1 |
curl -sSL https://get.livekit.io | bash |
・livekit-cliをインストール
1 |
curl -sSL https://get.livekit.io/cli | bash |
・開発モードで起動
1 |
livekit-server --dev --bind 0.0.0.0 |
動作確認
・ローカルpcからテスト用のクライアントを立ち上げる
1 2 3 4 |
git clone https://github.com/livekit/client-sdk-js cd client-sdk-js/example npm install npm run sample |
ブラウザが自動で立ち上がり、下記画面が表示される
・Token発行
サーバーから
1 2 3 4 |
livekit-cli create-token \ --api-key devkey --api-secret secret \ --join --room my-first-room --identity user1 \ --valid-for 24h |
このようにTokenが発行される
発行されたTokenをweb画面の「Token」欄に入力
・繋いでみる
「LiveKit URL」欄に「ws://{サーバーのElastic IP}:7880」を入れる
このように
「Connect」ボタンを押します
繋がるとカメラ映像が表示される。
画面下のログからも確認できる
1 2 3 |
participant user1 connected tracks published in 3508ms connection quality changed user1 excellent |
・同じ手順で2台目、3台目を繋いで確認
本番運用のためには
・ドメインを用意
・SSL証明書設定
・TURN機能を利用するには、それ用のドメインとSSL設定が必要
説明は割愛します、詳細はこちらを参照してください。
終わり