2021-10-30


安装Jitsi Meeting Jibri模块


目录

  1. List item

一、 安装依赖
二、 安装Ffmpeg
三、 安装Google Chrome
四、 安装ChromeDriver,他是用来控制Chrome
五、 安装Jibri
六、 将Jibri的用户帐户添加到用户组
七、 配置Jibri
八、 配置prosody配置文件
九、 配置Jicofo
十、 jitsi meet的配置文件
十一、 结果验证

说明:
使用安装操作系统Ubuntu18.04,JDK版本号为java version “1.8.0_131”

安装gpg软件版本gpg (GnuPG) 2.2.4;gpg是GNU Privacy guard 的缩写,是自由软件基金会GNU计划的一部分,它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密。

在安装Jitsi能召开视频会议的基础之上安装Jibri模块。
十分感谢这篇参考资料https://blog.csdn.net/mwl268/article/details/117331481
*

安装步骤

一、安装依赖

1、 输入apt install linux-image-extra-virtual ffmpeg curl unzip software-properties-common(此命令将ffmpeg也安装)

2、 设置要在启动时加载的模块,输入echo “snd-aloop” >> /etc/modules

3、 将模块加载到正在运行的内核中输入modprobe snd-aloop

4、 检查模块是否已加载输入lsmod | grep snd_aloop
在这里插入图片描述

5、 输入reboot重启操作系统

二、安装Ffmpeg

Jibri 需要相对新版本的 ffmpeg 安装并编译
1、 输入apt-get update
2、 输入apt-get install ffmpeg安装ffmpeg
安装ffmpeg

3、 输入ffmpeg -version验证安装的版本
三、安装Google Chrome
1、 输入wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
2、 将下载源加入到系统的源列表;输入wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add –

3、 输入apt-get update

4、 输入apt-get install google-chrome-stable
5、 安装完Chrome后,添加chrome管理的策略文件,并将CommandLineFlagSecurityWarningsEnabled设置为false。要不然录像中会有一个Chrome警告,输入mkdir -p /etc/opt/chrome/policies/managed
6、 输入echo ‘{ “CommandLineFlagSecurityWarningsEnabled”: false }’ >>/etc/opt/chrome/policies/managed/managed_policies.json

~~安装Google Chrome的另一种方式
1、 说明:要已启用transport-https若没有安装,则输入
输入apt install apt-transport-https

2、 输入sudo apt-add-repository universe

3、 输入wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
wget这句命令是将谷歌浏览器的deb包下载到当前目录中。~~

4、 输入apt-get -f install
-f参数的主要作用是是修复依赖关系(depends),假如用户的系统上有某个package不满足依赖条件,这个命令就会自动修复,安装程序包所依赖的包。
-f 是 参数 ;放在 install 前面跟后面是一样的效果
即: " sudo apt-get -f install " equals(相等) to " sudo apt-get install -f"

5、 输入dpkg -i google-chrome-stable_current_amd64.deb

四、安装ChromeDriver,他是用来控制Chrome

然后安装Chromedriver, 就是下载下来zip 解压之,复制到/usr/local/bin/chromedriver这个路径,然后赋予相应权限
1、 输入CHROME_DRIVER_VERSION=curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE
使用 curl -sS 请求失败时返回失败的返回值

2、 输入wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
-N, --timestamping 只获取比本地文件新的文件
-P, --directory-prefix=PREFIX 以 PREFIX/… 保存文件
wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止下载的位置继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

3、 输入unzip ~/chromedriver_linux64.zip -d ~/
解压chromedriver——Linux64

4、 输入rm ~/chromedriver_linux64.zip
5、 输入mv -f ~/chromedriver /usr/local/bin/chromedriver
6、 输入chown root:root /usr/local/bin/chromedriver
7、 输入chmod 0755 /usr/local/bin/chromedriver

五、安装Jibri

  1. 输入apt-get install default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-video-dummy

  2. Jibri 软件包可以在 downloads.jitsi.org 上的稳定存储库中找到。首先将 Jitsi 存储库密钥安装到您的系统上;输入curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c ‘gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg’
    “|”管道符,是指上一个命令的输出是下一个命令的输入。
    然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.asc 文件中写入信息:
    $ sudo echo “又一行信息” >> test.asc
    -bash: test.asc: Permission denied
    这时,可以看到 bash 拒绝这么做,说是权限不够。
    这是因为重定向符号 “>” 和 “>>” 也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 “>>” 命令也具有 root 权限,所以 bash 会认为这两个命令都没有像向test.asc 文件写入信息的权限。
    这一问题的途径有两种。第一种是利用 “sh -c” 命令,它可以让 bash 将一个字符串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
    $ sudo sh -c ‘echo “又一行信息” >> test.asc’

  3. 输入echo ‘deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/’ | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
    tee命令将输出到屏幕上的内容保存至文件中
    操作过程:
    1.执行以下的命令
    [root@testvm ~]# uname -n | tee hostInfo
    testvm
    [root@testvm ~]# cat hostInfo
    testvm

  4. 输入apt-get update

  5. 输入apt-get install jibri
    在这里插入图片描述

成功安装Jibri之后,会创建audio,video用户,可见上述安装成功截图
六、将Jibri的用户帐户添加到用户组
1、 输入usermod -aG adm,audio,video,plugdev jibri
usermod是更改用户属性的一个命令,-a指的是把用户追加到某些组中,仅与-G选项一起使用;-G|groups把用户追加到某些组中,仅与-a选项一起使用。

说明:

不安装adoptopenjdk-8-hotspot虽然能生成录像文件,但是不能播放,是运行jibri的jdk版本不匹配导致。所以需要安装openjdk-8,然后需要配置安装路径到Jibri的launch.sh文件中
1、 输入wget -O - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add –
2、 输入add-apt-repository https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
3、 输入apt-get -y update
4、 输入apt-get install adoptopenjdk-8-hotspot
5、 输入vim /opt/jitsi/jibri/launch.sh,将Java 8设置为Jibri的默认值—将单词“Java”替换为jdk的完整路径
修改成如下
#!/bin/bash

exec /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file="/etc/jitsi/jibri/jibri.conf" -jar /opt/jitsi/jibri/jibri.jar --config “/etc/jitsi/jibri/config.json”
修改launch.sh

七、配置Jibri
1、 配置文件在/etc/jitsi/jibri/目录下,输入cd /etc/jitsi/jibri/
2、 输入vim jibri.conf
编辑成如下:

// A unique identifier for this Jibri
  // TODO: eventually this will be required with no default
  id = "Jibri_Meeting"
  // Whether or not Jibri should return to idle state after handling
  // (successfully or unsuccessfully) a request.  A value of 'true'
  // here means that a Jibri will NOT return back to the IDLE state
  // and will need to be restarted in order to be used again.
  single-use-mode = true
  api {
    http {
      external-api-port = 2222
      internal-api-port = 3333
    }
    xmpp {
      // See example_xmpp_envs.conf for an example of what is expected here
      environments = [
	  {
		name = "prod environment"
		xmpp-server-hosts = ["172.16.13.75"]
		xmpp-domain = "172.16.13.75"
 
		control-muc {
				domain = "internal.auth.172.16.13.75"//域名或者IP地址
				room-name = "JibriBrewery"
				nickname = "jibri"
		}
 
		control-login {
				domain = "auth.172.16.13.75"
				username = "jibri"
				password = "jibriauthpass"
		}
 
		call-login {
				domain = "recorder.172.16.13.75"
				username = "recorder"
				password = "jibrirecorderpass"
		}
		strip-from-room-domain = "conference."
		usage-timeout = 0
		trust-all-xmpp-certs = true
}
	  ]
    }
  }
  recording {
    recordings-directory = "/srv/recordfile/"
    # TODO: make this an optional param and remove the default
    # finalize-script = "/path/to/finalize"
  }
  streaming {
    // A list of regex patterns for allowed RTMP URLs.  The RTMP URL used
    // when starting a stream must match at least one of the patterns in
    // this list.
    rtmp-allow-list = [
      // By default, all services are allowed
      ".*"
    ]
  }
  ffmpeg {
    resolution = "1920x1080"
    // The audio source that will be used to capture audio on Linux
    audio-source = "alsa"
    // The audio device that will be used to capture audio on Linux
    audio-device = "plug:bsnoop"
  }
  chrome {
    // The flags which will be passed to chromium when launching
    flags = [
      "--use-fake-ui-for-media-stream",
      "--start-maximized",
      "--kiosk",
      "--enabled",
      "--disable-infobars",
      "--autoplay-policy=no-user-gesture-required",
      // "--headless",
      "--no-sandbox",
      //"--disable-dev-shm-usage",
      "--ignore-certificate-errors"
    ]
  }
  stats {
    enable-stats-d = true
  }
  webhook {
    // A list of subscribers interested in receiving webhook events
    subscribers = []
  }
  jwt-info {
    // The path to a .pem file which will be used to sign JWT tokens used in webhook
    // requests.  If not set, no JWT will be added to webhook requests.
    # signing-key-path = "/path/to/key.pem"
 
    // The kid to use as part of the JWT
    # kid = "key-id"
 
    // The issuer of the JWT
    # issuer = "issuer"
 
    // The audience of the JWT
    # audience = "audience"
 
    // The TTL of each generated JWT.  Can't be less than 10 minutes.
    # ttl = 1 hour
  }
  call-status-checks {
    // If all clients have their audio and video muted and if Jibri does not
    // detect any data stream (audio or video) comming in, it will stop
    // recording after NO_MEDIA_TIMEOUT expires.
    no-media-timeout = 30 seconds
 
    // If all clients have their audio and video muted, Jibri consideres this
    // as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
    all-muted-timeout = 10 minutes
 
    // When detecting if a call is empty, Jibri takes into consideration for how
    // long the call has been empty already. If it has been empty for more than
    // DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
    default-call-empty-timeout = 30 seconds
  }

3、 输入mkdir /srv/recordfile创建存放录制视频的目录
4、 输入chown -R 777 /srv/recordfile
八、配置prosody配置文件
1、 输入 cd /etc/prosody/
2、 输入vim prosody.cfg.lua
将文件内容下面部分注释去掉并改成如下这样
—Set up a MUC (multi-user chat) room server on conference.example.com:
Component “conference.172.16.13.75” “muc”
— Store MUC messages in an archive and allow users to access it
modules_enabled = { “muc_mam” }
3、 输入cd /etc/prosody/conf.d/
4、 输入vim 172.16.13.75.cfg.lua

Component "internal.auth.172.16.13.75" "muc"
    modules_enabled = {
      "ping";
    }
    storage = "memory"
    muc_room_cache_size = 1000
 
VirtualHost "recorder.172.16.13.75"
    modules_enabled = {
      "ping";
    }
    authentication = "internal_plain"

然后设置两个号,供jibri用, 就是jibri.conf里配置的那两个,输入:prosodyctl register jibri auth.172.16.13.75 jibriauthpass
prosodyctl register recorder recorder.172.16.13.75 jibrirecorderpass
九、配置Jicofo
1、 输入cd /etc/jitsi/jicofo/
2、 输入touch sip-communicator.properties*
3、 输入chmod -R 777 sip-communicator.properties*
增加如下配置:


```bash
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.172.16.13.75
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
hiddenDomain: 'recorder.172.16.13.75',

## 十、jitsi meet的配置文件

1、	输入cd /etc/jitsi/meet/
2、	输入vim 172.16.13.75-config.js
取消如下两行注释

```bash
fileRecordingsEnabled: true, // If you want to enable file recording
liveStreamingEnabled: true, // If you want to enable live streaming
hiddenDomain: 'recorder.172.16.13.75',

3、 输入重启服务
systemctl restart prosody
systemctl restart jicofo
systemctl restart jitsi-videobridge2
4、 输入 systemctl restart jibri

十一、结果验证

录制会议截图

生成的会议录制文件这里插入图片描述

说明:
1、 按照上述步骤安装之后,只能会议主持人发起录制会议功能。
2、 录制结束之后,需要重启Jibri服务之后,才能继续使用录制服务会议。单个Jibri一次仅支持一个记录。 录制结束之后,还需要重启Prosody服务,录像存放文件夹中才能生成录像文件。 生成的录像文件名称格式是会场名称+会议发起时间。
3、 ChromeDriver作用介绍资料https://www.jianshu.com/p/31c8c9de8fcd(chrome Web驱动程序,能够提供谷歌浏览器与其他应用之间的协议通信)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值