Jibriサーバ(Ubuntu18.04LTS)インストール †更新日 2020-06-03 (水) 15:30:40
Jibriは会議内でサイレント参加者として機能するモジュール。 Jibriサーバからサイレント参加者として、Jitsiサーバに入る。Jitsi VideobridgeはユーザーのストリームをJibriにルーティングし、そこでライブストリーミングのために記録またはYouTubeに送信する。 Jitsiサーバの構成とJibriサーバの関係 ---------------- --------------- -------------------- | | | | | | | Jitsi Meet |<--------->| Prosody |<----------->| Video bridge | | web frontend | | XMPP server | | SFU media sever | | | | |<--- | | ---------------- --------------- | -------------------- | | | | | -------- | | | | | | Jibri Server ----------------- --------------- | ------------------- | | | | | | | | Web Server | | Jicofo | --->| Jibri | | Nginx, Apache | | conferences | | recording, | | | | management | | streaming | ----------------- --------------- ------------------- SFU(Selective Forwarding Unit):音声や映像をサーバー経由で行う技術です。配信者が直接相手に通信するのではなく、サーバーを間に挟むことで、動画の視聴者増加などによる、端末への負荷軽減を可能にする。 Jitsi Meetサーバ側の設定例(Ubuntu16.04ベースの説明を参考) †Jitsi Meetの設定を変更し、Jibriサーバからサイレント参加者として、Jitsiサーバに入るようにする。 設定内容 †Step 1 add the MUC component add recorder virtual host Step 2 add the Jibri users MUC componentとrecorder virtual hostの追加 †/etc/prosody/conf.d/meet.hoge-c.com.cfg.lua meet.hoge-c.com.cfg.lua -> /etc/prosody/conf.avail/meet.hoge-c.com.cfg.lua /etc/prosody/conf.avail/meet.hoge-c.com.cfg.lua Component "internal.auth.meet.hoge-c.com" "muc" storage = "none" modules_enabled = { "ping"; } admins = { "focus@auth.meet.hoge-c.com", "jvb@auth.meet.hoge-c.com" } muc_room_locking = false muc_room_default_public_jids = true VirtualHost "auth.meet.hoge-c.com" ssl = { key = "/etc/prosody/certs/auth.meet.hoge-c.com.key"; certificate = "/etc/prosody/certs/auth.meet.hoge-c.com.crt"; } authentication = "internal_plain"
最終行に追加 -- Jibri(Edit by JE2ISM) Component "internal.auth.meet.hoge-c.com" "muc" modules_enabled = { "ping"; } storage = "null" ←"none" ? muc_room_cache_size = 1000 VirtualHost "recorder.meet.hoge-c.com" modules_enabled = { "ping"; } authentication = "internal_plain" prosodyの設定再読み込み # /etc/init.d/prosody reload [ ok ] Reloading prosody configuration (via systemctl): prosody.service. jibriサーバからログインするユーザ作成 †JibriがコントロールMUCにログインするために使用するアカウントです(Jibriはステータスを送信し、コマンドを待機します) # prosodyctl register jibri auth.meet.hoge-c.com ****** 2番目のアカウントは、通話に参加するときにJibriがSeleniumのクライアントとして使用するアカウントで、Jitsi Meet Web UIで特別な方法で処理できるようにします # prosodyctl register recorder recorder.meet.hoge-c.com ***** # ls -l /var/lib/prosody/*/accounts/* (略) -rw-r----- 1 prosody prosody 45 May 25 16:04 /var/lib/prosody/auth%2emeet%2eoot suji%2dc%2ecom/accounts/jibri.dat (略) -rw-r----- 1 prosody prosody 45 May 25 16:05 /var/lib/prosody/recorder%2emeet%2 ehoge%2dc%2ecom/accounts/recorder.dat /etc/jitsi/jicofo/sip-communicator.properties org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet.hoge-c.com org.jitsi.jicofo.auth.URL=XMPP:meet.hoge-c.com (以下を追加) org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.hoge.hoge-c.com org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90 jicofo再起動 # /etc/init.d/jicofo restart [ ok ] Restarting jicofo (via systemctl): jicofo.service. /etc/jitsi/meet/meet.hoge-c.com-config.js // Recording // Whether to enable file recording or not. // fileRecordingsEnabled: false, fileRecordingsEnabled: true, ←ここ // Enable the dropbox integration. // dropbox: { // appKey: '<APP_KEY>' // Specify your app key here. // Whether to enable live streaming or not. // liveStreamingEnabled: false, liveStreamingEnabled: true, ←ここ hiddenDomain: 'recorder.vmmeeting.hoge-c.com', ←ここ ツールボタンの確認 †/usr/share/jitsi-meet/interface_config.js TOOLBAR_BUTTONS: [ 'microphone', 'camera', 'closedcaptions', 'desktop', 'fullscreen', 'fodeviceselection', 'hangup', 'profile', 'info', 'chat', 'recording', ^^^^^^^^^ 'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand', ^^^^^^^^^^^^^ 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts', 'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'e2ee' ], Jibriサーバのインストール †JitsiサーバとJibriサーバは別サーバにインストールした。 OpenJDK-8をインストールするように追加 †# echo 'deb http://archive.ubuntu.com/ubuntu bionic universe' > /etc/apt/sources.list.d/openjdk-8.list # apt update # apt upgrade OpenJDK-8をインストールする(必要かは不明) # apt install openjdk-8-jre-headless # apt -y install linux-image-extra-virtual Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: linux-image-extra-virtual 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 1,864 B of archives. After this operation, 16.4 kB of additional disk space will be used. Get:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-image -extra-virtual amd64 4.15.0.101.91 [1,864 B] Fetched 1,864 B in 0s (33.2 kB/s) Selecting previously unselected package linux-image-extra-virtual. (Reading database ... 67532 files and directories currently installed.) Preparing to unpack .../linux-image-extra-virtual_4.15.0.101.91_amd64.deb ... Unpacking linux-image-extra-virtual (4.15.0.101.91) ... Setting up linux-image-extra-virtual (4.15.0.101.91) ... ^^^^^^^^^^^^^ # uname -a Linux vm-jibri2 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC \ ^^^^^^^^^^ 2020 x86_64 x86_64 x86_64 GNU/Linux # reboot # uname -a Linux vm-jibri2 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
必要モジュールの確認のロードと確認 # modprobe snd-aloop # lsmod | grep aloop snd_aloop 24576 0 snd_pcm 98304 3 snd_ac97_codec,snd_aloop,snd_ens1371 snd 81920 7 snd_seq_device,snd_timer,snd_ac97_codec,snd_aloop,snd_pcm,snd_rawmidi,snd_ens1371 モジュールの自動ロードの設定 # echo "snd-aloop" >> /etc/modules chormeのインストール †# wget -qO - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - OK # echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list # apt update # apt -y install google-chrome-stable (略) update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.36.11-2) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... chormeドライバのインストール # CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` # wget http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip # apt -y install unzip # unzip chromedriver_linux64.zip -d /usr/local/bin/ Archive: chromedriver_linux64.zip inflating: /usr/local/bin/chromedriver jibriのインストール †# wget -qO - http://download.jitsi.org/jitsi-key.gpg.key | apt-key add - OK # echo "deb https://download.jitsi.org unstable/" > /etc/apt/sources.list.d/jitsi-unstable.list # apt update # apt -y install jibri (略) Processing triggers for systemd (237-3ubuntu10.41) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for fontconfig (2.12.6-0ubuntu2) ... Processing triggers for menu (2.1.47ubuntu2.1) ... Processing triggers for dictionaries-common (1.27.2) ... jibriの設定 †/etc/jitsi/jibri/config.json // Where recording files should be temporarily stored "recording_directory":"/srv/recordings", ←ここ // The path to the script which will be run on completed recordings "finalize_recording_script_path": "/path/to/finalize_recording.sh", "xmpp_environments": [ { // A friendly name for this environment which can be used // for logging, stats, etc. "name": "prod environment", // The hosts of the XMPP servers to connect to as part of // this environment "xmpp_server_hosts": [ "vmmeeting.hoge-c.com" ←ここ ], // The xmpp domain we'll connect to on the XMPP server "xmpp_domain": "vmmeeting.hoge-c.com", ←ここ // Jibri will login to the xmpp server as a privileged user "control_login": { // The domain to use for logging in "domain": "auth.vmmeeting.hoge-c.com", ←ここ // The credentials for logging in "username": "jibri", ←ここ "password": "******" ←ここ }, // Using the control_login information above, Jibri will join // a control muc as a means of announcing its availability // to provide services for a given environment "control_muc": { "domain": "internal.auth.vmmeeting.hoge-c.com", ←ここ "room_name": "JibriBrewery", "nickname": "jibri-nickname" }, // All participants in a call join a muc so they can exchange // information. Jibri can be instructed to join a special muc // with credentials to give it special abilities (e.g. not being // displayed to other users like a normal participant) "call_login": { "domain": "recorder.vmmeeting.hoge-c.com", ←ここ "username": "recorder", ←ここ "password": "*******" ←ここ }, 録画保存フォルダの作成 †# mkdir /srv/recordings # chown jibri:jibri /srv/recordings jibriサービス起動 †# service jibri restart # service jibri status ● jibri.service - Jibri Process Loaded: loaded (/etc/systemd/system/jibri.service; disabled; vendor preset: e Active: active (running) since Wed 2020-05-27 15:33:48 JST; 16s ago Main PID: 6604 (java) Tasks: 36 (limit: 2290) CGroup: /system.slice/jibri.service mq6604 java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging. May 27 15:33:48 vm-jibri2 systemd[1]: Started Jibri Process. May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: Failed to load class "org.slf4 May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: Defaulting to no-operation (NO May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: See http://www.slf4j.org/codes OS起動時に自動起動するように設定 †# systemctl enable jibri.service 参考 † |