Skip to content

Instantly share code, notes, and snippets.

@kou1okada
Last active April 17, 2020 10:01
Show Gist options
  • Save kou1okada/1d7c3606f14514650eecab5feb8e81c6 to your computer and use it in GitHub Desktop.
Save kou1okada/1d7c3606f14514650eecab5feb8e81c6 to your computer and use it in GitHub Desktop.
Jitsi-memo

Jitsi Meet について

公式ページ等

既存の Jitsi Meet Instances

  • meet.jit.si : Jitsi 公式の Jitsi Meet Instance
  • GitHub / jitsi / jitsi-meet / wiki / Jitsi-Meet-Instances : その他、公開されている Jitsi Meet Instance 一覧

参考になるページ等

大まかな特徴

全般的な特徴

  • WebRTC による TV 会議システム
    • PC はモダンブラウザのみで利用可能(推奨は Chrome か Chromium)
      • ただし 2020-04-13 現在 Edge (Legacy) と IE では動作しなかった。
    • スマホは基本的には要アプリ
      • Android 版 Chrome の場合、右上にある「︙」→「PC版サイト」を ON にしておけばブラウザ上での動作は可能
  • Apache-2.0 の OSS
  • サーバーは既存の Jitsi Meet Instance (Jitsi 公式他)または自前 Instance を利用可能。
  • 基本的にはアカウントは不要。
  • 自前サーバーを立てた場合は認証対応も可能。
  • ミーティングは Jitsi Meet Instance 上の URL にて公開される。
    • 公式 Instance である meet.jit.si だと https://meet.jit.si/ルーム名
    • 別途パスワードの設定は可能。
  • 画面・ウインドウの配信が可能。
  • チャット機能
    • URL はリンクとして機能
    • UNC, smb:// はリンク扱いされなかった(ZOOM で問題になった NTLM の認証情報漏洩はない)
  • 録画機能
    • 「録画を開始」で Dripbox に保存可能
    • YouTube のライブストリームキーを与えるとミーティングを YouTube Live に直接配信可能
  • Google や Microsoft のカレンダーと連携して詳細欄に URL 埋め込んむ事も可能。
  • API が用意されてて、様々な web アプリに埋め込みが可能。

ブラウザ版特有の機能

  • 「通話品質を管理する」という設定があり、動画の品質を設定可能。
  • 「画面を共有する」という機能で、画面やウインドウ単位で配信できる。
    • 共有となっているがあくまでも配信。
    • ただし Firefox だとマウスカーソルが配信されなかった。Chrome は問題なし。

Androidアプリ特有の機能

  • 「音声のみモードを開始」「音声のみモードを無効にする」という、他者の映像を自分の端末に表示しない設定がある(パケット節約用?)。
  • ピンチイン・アウトによる、共有画面の拡大縮小。

meet.jit.si 挙動

自前で Instance を立ち上げた場合に、設定の調整で変更可能かどうかは要確認。

  • 参加者に上下関係が(設定でき)ない。全員が同じ権限を持つ。
    • パスワードの設定、削除
    • 特定の参加者以外の強制ミュート(一時的なミュートなので、各自でミュート解除可能)
    • 特定の参加者をルームから追い出す
    • 参加者のビデオと音声の初期状態(ON/OFF)設定
    • 全員フォローミー(参加者のクライアントの画面を自分のクライアントと同じ画面にする)
      • この機能については、早い者勝ち。
      • 既に「全員フォローミー」が ON の人(= モデレーター)がいると、他の人は「全員フォローミー」を ON に出来ない。
      • ただし、モデレーターを強制的に「追い出す」ことは可能なの、モデレーターを強制解除することは可能。
    • YouTube へライブストリームの開始・停止
    • 等々
  • ルームはミーティングの参加者が 0 になると解放される。
    • 第三者による再利用があり得る。
  • ルーム名の予約が出来ない。

気付いた点など

ルーム名とセキュリティについて

単純に URL の一部がルーム名になるだけらしいので、特に長さ制限等はなさそう。 少なくとも SHA512 (16進128桁) は大丈夫だった。

meet.jit.si でルーム名を空のままミーティングを開始するとルーム名が自動生成される。 これは例えば「MinimalForestsPutThough」のようなフレーズになる。

この実装は js-utils/random/roomNameGenerator.js の generateRoomWithoutSeparator()。

2020-04-08 現在、要素数が

{ _ADJECTIVE_: (1033) […], _ADVERB_: (468) […], _PLURALNOUN_: (2847) […], _VERB_: (1222) […] }

の辞書にある単語を、テンプレート _ADJECTIVE__PLURALNOUN__VERB__ADVERB_ にランダム割り当てするので、組み合わせの数は 1,033 * 2,847 * 1,222 * 468 = 1,681,918,113,096 (40 bit 相当)だった。

部外者をシャットアウトするには、ルーム名とパスワードを秘密にする必要がある。 ただし、一旦会議に参加してしまえば、参加者の誰もがパスワードの設定・解除が可能であり、複数人で同じルーム名とパスワード(秘密)を共有するという性質からすれば、ルーム名が十分に長ければ実質的にはパスワードと変わらないはず。

画面共有について

4K 等の広大なデスクトップ全体を配信した場合、受信側では見え辛いと思われる。 デスクトップの一部を矩形指定するとかいう機能は見当たらなかった。

ファイルの共有について

ファイルをドラッグ&ドロップして参加者に配信共有するはなかった。 URL の貼り付けは出来るので、LMS 等に上げた資料への誘導は可能。

YouTube 動画の共有

ブラウザ版には、「YouTube 動画を共有する」という機能がある。 YouTube 動画の URL を与えると参加者に配信できるのだが、Windows 10 上の Firefox や Chrome には配信されるものの、Android のアプリにはなぜか配信されなかった。 不具合だろうか?

LDAP 認証

ルームに入る際に IP, PW が必要になる。

Android からだと、IP, PW の入力がやや煩雑な印象。

感想

基本的には、参加者が全員信頼できるという前提で、全員が平等に権限を持ち参加者相互で情報を自由に発信できるというシステムのようだ。 参加者は妨害行為をしないという前提なら、とりあえずミーティング名を適当に長いハッシュにして部外秘にしとけば、総当たり攻撃への耐性は期待できるはずだが、参加者に不心得者がいるとミーティングは破綻すると思われる。 基本、アカウント不要で名前も自己申告制であるため、Shibboleth や LDAP による認証が入れていない場合、誰が妨害したのかも分からないだろう。

その他

開発元による Instance である https://8x8.vc には様々な追加機能が認められる。 例えば、組織とか管理者等。 標準の Jitsi Meet でどこまで対応可能なのかは要調査。

不具合

Chrome のバグ?

2020-04-16 現在、Google Chrome だと描画がバグる。 具体的には、画面共有した際に Chrome のレンダリングが腐る。三角形に分割されて一部黒くなり描画されないとか、Chrome 全体の描画が停止する(描画の停止後、最大化等すると、以後 Chrome 全体が真っ黒になる)等の症状が発生する。Shift+再起動 で完全な reboot 等も試したが効果はなかった。

一応、こちら側のレンダリングが腐った状態でも画面共有やカメラなどによる映像の送信自体は生きているようで、相手側には映像は伝わっているようだが、操作が出来ないので使い物にならない。

症状的からすると GPU ドライバの問題ではないかと推測しているが、発生条件の特定には至っていない。 関係のありそうな項目は以下の通り。

  • Windows 10 Pro 1903 (OS ビルド 18363.778)
  • Intel(R) HD Graphics 515 21.20.16.4860 (2017-11-15)
  • Google Chrome 81.0.4044.113(Official Bild) (64 ビット)

発生頻度は低いが、以下の構成のデスクトップ PC でも、受信状態放置で、真っ黒になって反応しなくなる減少を 2020-04-17 に 1 回確認。

  • Intel Core i7-6700K
  • MSI Z170A PC MATE
  • Windows 10 Pro 1909 (OS ビルド 18363.657)
  • Intel(R) HD Graphics 530 26.100.7263 (2019-09-25)
  • NVIDIA GeForce GTX 1080 26.21.14.3200 (2019-07-24)
  • Google Chrome 81.0.3987.132(Official Bild) (64 ビット)

今のところ、Firefox ではこの症状に遭遇してない。

Tips

配信時の状況確認と録画

配信する端末とは別に1台用意して並べておくと、配信先での表示を確認しながら配信できるためオススメ。 回線トラブル(LANのケーブル抜けや無線LANの電波障害)等の早期発見にも役立つ。

この際、F11 でブラウザを全画面モードにした上で、⊞ (Windows Logo Key)+GXBox Game Bar を起動してブラウザの画面を録画すると録画環境をクラウドに頼らずローカルで完結できる点もオススメ。

レートは動きの激しさにもよるが、現在の感触としては 3,600kbps (= 1.6GB/h) 前後と思われる。

モデレーター

参加者は側の画面で、任意の参加者をクリックすると、その参加者に青枠が付き、選択した参加者が画面中央に表示される。 どの参加者も選択していない(つまり誰にも青枠を付けてない)参加者の画面には、モデレーターの画面状態が反映される。

自身をモデレーターとするには、Jitsi Meet の右下にある「︙」→「⚙設定」から「その他」のタブで「☑ 全員フォローミー」を ON にする。 モデレーターが存在している状態では、他の参加者の「☐ 全員フォローミー」は🚫となり操作できない。 モデレーターが自身の「☐ 全員フォローミー」を OFF にすると、モデレーター不在の状態に戻る。

問題は、モデレーターが回線障害等で切断してしまった場合。 モデレーターの回線がそのまま回復した場合は大丈夫だと思うが、 F5 等で再接続した場合は、同名の別の参加者として登録される。

この場合、回線切断したモデレーターが居座った状態となるので、再接続した元モデレーター自身も「☐ 全員フォローミー」は🚫のままで操作が出来ない。

こうなってしまった場合、モデレーターとなっている参加者枠にある「︙」→「⏏追い出す」によりモデレーターを BAN するとモデレーター不在の状態に戻すことができる。


  • Copytright (c) 2020 Koichi OKADA. All rights reserved.
  • This document is distributed under the CC-SA 4.0.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=edge" />
<style>
//html {background: black; color: white;}
h1, h2 {border: solid #CCF;}
h1 {border-width: 0 0 4px 0;}
h2 {border-width: 0 0 1px 0;}
p {text-indent: 1em;}
img {margin-left: -1em;}
img {border: 2px solid #eee;}
//a {color: #AAF;}
blockquote {border: 1px solid gray; background: lightyellow; padding: 1ex;}
</style>
<title>Jitsi Meet について</title>
</head>
<body>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment