jitsi meet 说明
jitsi meet 是一个开源的视频会议解决方案,可以通过查看 官网
和 开源项目地址了解. 在 这里可以进行体验. 在开源库中有项目地址,这里做下简单介绍.
- jitsi-meet web端的会议项目源码,不建议clone自己编译,来安装部署,会出一些问题,比较麻烦,我们直接用快速安装,会自动安装prosody和 jicofo videobridge 等服务,然后前后端就搭建好了,通过修改配置来弄
- docker-jitsi-meet doker 的安装版本.能搭建成功,不太容易改东西.
- jigasi 服务器端应用程序,充当Jitsi Meet会议的网关。目前,支持电话会议
- jitsi 是桌面版本的应用程序.
安装与配置
vps 阿里云或百度云安装
环境准备
- 购买百度云或阿里云的ECS
- 系统要求,内存至少2g,最好用Ubuntu 16.04 64位系统
- 开发阶段放行所有端口,阿里云是在网页功能的防火墙,通过防火墙放行所有tcp和udp端口.百度云是在安全组,将实例应用到放行所有tcp和udp的安全组就行.
- 系统先安装NGINX ,使用命令apt-get install nginx -y(非root用户前所有命令前加sudo)
快速安装方式
- 增加仓库
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
- 添加key
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add
- 更新包
apt-get update
#上面语句出错请使用下面这个
apt-get install apt-transport-https
- 安装jitsi meet
根据网络状况,安装过程不等,百度云vps只需不到10s,阿里云需要几分钟,如果用自己电脑的虚拟机,用公司的网络,没有设置镜像的话,可能要十多分钟.
apt-get -y install jitsi-meet
- 输入域名
这里简单的话,可以直接输入公网ip 就行.自己有绑定机器的域名的话,直接输入域名就行. 要是没有买域名,要想用域名的方式的话.可以进行模拟.需要在 虚拟机的hosts中映射 127.0.0.1到虚拟域名.通过外网访问的机器需要绑定同样域名到你部署机器的对外IP .
比如:
#自己本机window的C:\Windows\System32\drivers\etc\HOSTS
182.61.47.152 yhbdmeeting.com
#购买的vps 或者虚拟机执行 sudo vim /etc/hosts
127.0.0.1 yhbdmeeting.com
- 选择生成证书,选第一个选项就好
- 这时候访问应用,2人以上参与的话,可能会遇到端口转发的问题,需要进行额外配置
在
/etc/jitsi/videobridge/sip-communicator.properties
新增
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
例如针对我的百度云vps内网网的情况则添加以下内容,然后重启vps
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=172.16.0.2
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=182.61.47.152
-
然后通过https://yourPublicIP访问 或者https://yourDomain , 必须通过Chrome或者火狐浏览器中, 测试多人功能的时候,可以用一个浏览器开三四个窗口进同一房间来做
-
如果想要控制创建房间的权限,可以通过参考 文档来做.不过我测试,结果是只要你浏览器不清除cookie的话,只要认证过一次后,以后再创建房间的话,也不需要再输入账号密码了,不是很好,要看下其他方式.
如果出现问题可以对照 官方快速安装文档
本地虚拟机中安装
环境准备
- 安装 VirtualBox
- 下载 ubuntu 镜像 16和18 都行.安装过程参照网上教程.安装桌面版本的就行
- 网络模式保持默认网卡1 网络地址装换nat就行
- 设置端口转发
设置->网络->网卡1(网络地址装换nat)->高级->端口转发,新增以下规则,其中主机IP填写自己电脑 ipconfig 查出的IP , 子系统IP是虚拟机执行ifconfig查出的IP
协议 | 主机IP | 主机端口 | 子系统IP | 子系统端口 |
---|---|---|---|---|
tcp | 192.168.28.212 | 80 | 10.0.2.15 | 80 |
tcp | 192.168.28.212 | 443 | 10.0.2.15 | 443 |
tcp | 192.168.28.212 | 4443 | 10.0.2.15 | 4443 |
tcp | 192.168.28.212 | 4443 | 10.0.2.15 | 4443 |
udp | 192.168.28.212 | 10000 | 10.0.2.15 | 10000 |
- 其余步骤同vps安装.
- 别人访问你电脑的IP就行 https://yourIp ,会自动转发到虚拟机中的应用中去.当然也可以用虚拟的域名.同vps中的操作一样.但是要访问的人的电脑,都得把域名绑定到你机器的IP 在我的例子中是绑定到192.168.28.212
如果安装有问题可以参考如何在Ubuntu上安装Jitsi Meet视频会议平台 以及 快速安装
定制化修改
修改方式介绍
配置文件的名称会根据你填写的domain或者ip来生成这里统一用{yourDomain}
主要是通过修改配置文件,以及静态资源来做.
会议方面最主要有两个配置文件
一个是config.js 程序参数配置 比如选择默认语言,是否开启欢迎页面,退出会议时是否展现反馈页面,在配置文件中都有相应注释说明
sudo vim /etc/jitsi/meet/{yourDomain}-config.js
比如可以修改默认语言为中文 defaultLanguage: ‘zhCN’
以及interface_config.js web界面表现配置,例如可以去掉页面中一些不必要的东西
sudo vim /usr/share/jitsi-meet/interface_config.js
其中网页的静态资源位置位于,
cd /usr/share/jitsi-meet
这里可以更改水印的图片image/watermark.png,以及补全和修改中文对应的翻译之类的lang/main-zhCN.json.不知道怎么往虚拟机上传文件的话,可以使用
FinalShell SSH 工具,有上传的功能,选好后文件夹,拖进去就行了
更改了这些文件后, 应该是要重启nginx的 .可以用一下命令.
/etc/init.d/nginx stop
/etc/init.d/nginx start
顺便提一下 部署后的web站点配置是在
cat /etc/nginx/sites-available/{yourDomain}.conf
但是更改后端的配置 比如装prosody和 jicofo videobridge的话, 要重启相应服务,不知道怎么重启就干脆重启vps ,在/etc/init.d 下面可以重启
/etc/init.d/prosody restart
/etc/init.d/jicofo restart
/etc/init.d/jitsi-videobridge restart
一些说明
- 我们是要调用摄像头的,但是摄像头只能在localhost下以及https下调用,所以你在后面提到的嵌入到另外应用的开发时,你的应用必须发布成https.使用springboot的话,由于使用的是内嵌的Tomcat,我们需要在返回Tomcat容器的时候做一些配置. 如果是spring-mvc等其他手动部署的话,我们只需要对Tomcat的配置文件进行修改.然后在idea改下部署的访问协议为https,端口改成8443?,两种方式参照网上教程弄.
- 如果在更改语言前访问过应用,即使服务器重启后,重新访问还是不会生效的.其实是改过来的,你可以尝试用隐身模式试一下.忘记了清楚cookie管用不,应该能起作用的,它优先使用保存在本地的语言设置.
- 2个人是走的p2p,直接双方连接,不经过服务器分发,所以要保证应用确实良好运作的话,应该用3人及其以上来测试.一个人可以用同一浏览器开3个tab来测试.
- 自带的语言翻译功能是可以用的,但是说英语才能翻译,中文的话应该是可以设置,但是方言那么多,所有没啥用,可以关了
- 我还有其他问题怎么办? 可以去 官方论坛 ,搜一下相关问题,没有的话可以自己提问,社区的开发者都挺热心的,不过是英文社区的哈.也可以去jitsi meet的github托管页面的issue查找他们遇到问题的解决方案.
一些位置
- 配置证书位置
/etc/jitsi - 配套服务启动位置
/etc/init.d/jicofo
/etc/init.d/jitsi-videobridge
/etc/init.d/prosody - jitsi meet 部署资源位置
/usr/share/jitsi-meet - 日志位置
/var/log/jitsi
/var/log/prosody
嵌入使用
使用方式
安装好后我们就可以用自己部署来提供服务,通过使用Jitsi Meet api的方式将Jitsi Meet嵌入到自己其他应用程序中。我们只需要提供部署的地址,如果不自己部署的话,想先体验下它的api我们使用官方部署好的 meet.jit.si 来测试.
测试页面 官网有提供
<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<script src="https://meet.jit.si/external_api.js"></script>
<script>
var domain = "meet.jit.si";
var options = {
roomName: "JitsiMeetAPIExample",
width: 700,
height: 180,
parentNode: undefined,
configOverwrite: {},
interfaceConfigOverwrite: {
filmStripOnly: true
}
}
var api = new JitsiMeetExternalAPI(domain, options);
</script>
</body>
</html>
然后可以调用它的 api 来执行操作
这里可能会遇到问题,如果你是使用像我们之前那样自己部署的服务器,因为安装的时候选择的证书是那种糊弄证书,
本来正常情况直接访问https下会告诉你不安全,你点继续才加载出来.但是这里是通过代码给我们弄进来的,如果你之前没有在浏览器打开并同意过内嵌的域名下任何页面的话,只会看到加载不成功的空白.如果现在马上直接打开一次,同意后,再刷新的话就好了.这个看网上有不优雅的解决方案,在Chrome快捷右键在目标那一栏启动增加参数,大概是这个样子
C:\Users\jk969\AppData\Local\CentBrowser\Application\chrome.exe --ignore-certificate-errors --allow-running-insecure-content