Upgrade to Pro — share decks privately, control downloads, hide ads and more …

省リソースで動作するビデオカンファレンスソフトウェアのGalène

 省リソースで動作するビデオカンファレンスソフトウェアのGalène

Kenichiro MATOHARA

June 19, 2022
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. ビデオミーティングソフトウェ ビデオミーティングソフトウェ アのserver requirements アのserver requirements [1] RAM 2〜8GB CPU

    4core〜 RAM 16GB〜 CPU 8Core〜 1. どんどん増えている……? Jitsi Meet BigBlueButton 6 / 42
  2. Galène Galène Galene needs little momory — it should run correctly in

    128MB of RAM, and is rock solid with 512MB. 桁違いに軽量そう! (PINE64あたりだとAES acceleratorが乗ってたはず) Galène FAQ 9 / 42
  3. 早速試す 早速試す  要Go 1.13以降 $ sudo apt install golang

    $ git clone https://github.com/jech/galene $ cd galene $ CGO_ENABLED=0 go build -ldflags='-s -w' 12 / 42
  4. クロスビルド例 クロスビルド例 1 Linux arm6(Raspberry Pi 1) 2 Linux arm7(Raspberry

    Pi 2〜) 3 Linux arm64(Raspberry Pi 2 B 1.2〜かつ64bit OS)  今回Linux/amd64とLinux/armhfで試した, Linux/arm64,Linux/mipsやWindowsでも動くらしい $ GOARCH="arm" GOOS="linux" GOARM=6 CGO_ENABLED=0 \ go build -o galene_arm6_linux -ldflags='-s -w' $ GOARCH="arm" GOOS="linux" GOARM=7 CGO_ENABLED=0 \ go build -o galene_arm7_linux -ldflags='-s -w' $ GOARCH="arm64" GOOS="linux" CGO_ENABLED=0 \ go build -o galene_arm64_linux -ldflags='-s -w' 1 2 3 13 / 42
  5. setting(1 of 2) setting(1 of 2) Media Options Camera: →

    off or 各種カメラ Microphone: → off or 各種マイク ✅ Mirror view □ Blackboard mode (高解像度低fps)になる ✅ Noise suppression □ High-quality audio (音楽再生時など) 20 / 42
  6. setting(2 of 2) setting(2 of 2) Other Settings Filter: →

    none, Holizontal mirror, Virtical mirror Send: → lowest, low, normal, unlimited Simulcast: → off, auto, on( ) Receive: → noting, audio only, screen share(low), screen share, everything(low), everything □ Activity detection (????) [1] 1. Firefoxでは動作しない サイマルキャスト 21 / 42
  7. chatでのコマンド chatでのコマンド /help ヘルプ表示 /leave グループを離れる /msg プライベートメッセージを送信 /presentfile 動画音声ファイルのブロードキャスト再生

    /raise 挙手(メンバーリストの◦が🖐になる) /renegotiate メディアストリームの再ネゴシエート /sendfile 指定したユーザへのファイル送信(IPアドレスも開示され る) /unraise 手を下げる 22 / 42
  8. helpに出てこないチャットコマン helpに出てこないチャットコマン ド ド /record 録画開始[1] /unrecord 録画終了 /set resolution

    [1024, 768] 送信解像度の指定,指定後ビデオ の再起動(Disable/Enable)が必要 1. グループの設定で allow-recording が必要 23 / 42
  9. Raspberry Pi 3B + Raspberry Pi OS Raspberry Pi 3B

    + Raspberry Pi OS bullseye armhf bullseye armhf 24 / 42
  10. 少し使ってみて 少し使ってみて LAN内でRaspberry Pi 3 model B + Raspberry Pi

    OS bullseye armhf(4core/1GB RAM)をサーバにして3台接続 半日ほど放置しても安定して動作していそう ビデオや画面共有を増やしてもサーバの負荷はあまり上がらない クライアントの使い勝手は慣れが必要そう 25 / 42
  11. リモートサーバにデブロイ リモートサーバにデブロイ 1 Galèneバイナリとstaticディレクトリをコピー 2 リモートサーバに移動 3 必要なディレクトリ作成 4 証明書コピー[1]

    1. 証明書ファイルがない場合起動時に毎回自己証明書が作られる $ rsync -avcP galene static [email protected]:~ $ ssh [email protected] $ mkdir -p data groups $ sudo install -m 400 -o `id -u` -g `id -g` /etc/letsencrypt/live/server.example.org/fullchain $ sudo install -m 400 -o `id -u` -g `id -g` /etc/letsencrypt/live/server.example.org/privkey.p 1 2 3 26 / 42
  12. グループ設定 グループ設定 groups/groupname.json 詳細は README を参照のこと { "op": [{"username":"jch","password":"1234"}], "presenter":

    [{}], "allow-recording": true, "allow-anonymous": true, "allow-subgroups": true, "public": true, "displayName": "Galenサンプル", "contact": "[email protected]", "comment": "コメント", "codecs": ["vp8", "opus"] } 29 / 42
  13. 関連ソフトウェア 関連ソフトウェア Vueフレームワークの代替フロントエンド UDP, RTMP, またはSRTストリームをGalèneに送信するため のゲートウェイ(Gstreamer利用) サンプル認証サーバ garage44/pyrite: Pyrite

    is a web(RTC) client for the Galène videoconference server. erdnaxe/galene-stream: Gateway to send UDP, RTMP or SRT streams to Galène videoconference server. jech/galene-sample-auth-server 32 / 42
  14. フロントエンドのPyriteを試す フロントエンドのPyriteを試す Docker(Galène同梱)かnpx, npmで導入 今回はDockerで試した Disk 1.2GBほど必要[1] 1. Dockerを使わないGalène単体は11MB程 $

    git clone https://github.com/garage44/pyrite $ cd pyrite/docker $ PYRITE_UID=`id -u` PYRITE_GID=`id -g` docker-compose up $ xdg-open http://localhost:3030/ 33 / 42
  15. クライアントのネットワーク利 クライアントのネットワーク利 用状況 用状況  17:00過ぎからGalène利用,接続人数は減ったがデータ量は 増えているところがある $ vnstat -h

    -b "2022-06-19 14:00" -e "`date +%F\ %H:%M`" wlp4s0 / hourly hour rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- 2022-06-19 14:00 66.80 MiB | 162.45 MiB | 229.25 MiB | 534.20 kbit/s 15:00 67.95 MiB | 124.63 MiB | 192.58 MiB | 448.75 kbit/s 16:00 101.91 MiB | 22.53 MiB | 124.45 MiB | 289.98 kbit/s 17:00 237.75 MiB | 98.66 MiB | 336.41 MiB | 783.89 kbit/s 18:00 210.19 MiB | 76.22 MiB | 286.41 MiB | 667.38 kbit/s 19:00 628.30 MiB | 143.67 MiB | 771.97 MiB | 1.80 Mbit/s 20:00 871.78 MiB | 113.51 MiB | 985.29 MiB | 2.30 Mbit/s 21:00 100.20 MiB | 32.89 MiB | 133.09 MiB | 310.12 kbit/s 22:00 79.40 MiB | 28.66 MiB | 108.06 MiB | 274.70 kbit/s ------------------------+-------------+-------------+--------------- sum of 9 2.31 GiB | 803.22 MiB | 3.09 GiB | 41 / 42