jitsi-meet 联合jibri录制虚拟机搭建踩坑记录
jitsi-meet 是一个基于Java的时评会议框架,官方文档在搭建时并没有提到虚拟机搭建的,所以在没有域名进行搭建的过程中漏洞百出,所以特地留下这个踩坑记录:
问题一: 找不到localStorage
Jibri recording failed Failed to read the 'localStorage' property from 'Window': Access is denied for this document
这个问题是访问服务器谷歌浏览器访问https协议网址导致的,可以通过两种方法解决,先说比较靠谱的一种
A:
在chromeDriver启动之前添加参数,使其不出现警告页面,修改JibriSelenium.kt文件
这是原来的代码
logPrefs.enable(LogType.DRIVER, Level.ALL)
chromeOptions.setCapability(CapabilityType.LOGGING_PREFS, logPrefs)
chromeDriver = ChromeDriver(chromeDriverService, chromeOptions)
chromeDriver.manage().timeouts().pageLoadTimeout(60,TimeUnit.SECONDS)
这是修改后的:
logPrefs.enable(LogType.DRIVER, Level.ALL)
chromeOptions.setCapability(CapabilityType.LOGGING_PREFS, logPrefs)
chromeOptions.addArguments("--ignore-certificate-errors")//修改
chromeDriver = ChromeDriver(chromeDriverService, chromeOptions)
chromeDriver.manage().timeouts().pageLoadTimeout(60,TimeUnit.SECONDS)
另一种就比较直接了 ,直接在chromeDriver访问链接的时候将其改成http协议连接,可能有效,但不建议这么做:
B:
在JibriSelenium.kt中的joinCall()方法中将访问链接修改:
原本的代码:
HomePage(chromeDriver).visit(callUrlInfo.baseUrl)
val localStorageValues = mutableMapOf(
"displayname" to jibriSeleniumOptions.displayName,
"email" to jibriSeleniumOptions.email,
"callStatsUserName" to "jibri"
)
修改后的代码:
HomePage(chromeDriver).visit("http://127.0.0.1")
val localStorageValues = mutableMapOf(
"displayname" to jibriSeleniumOptions.displayName,
"email" to jibriSeleniumOptions.email,
"callStatsUserName" to "jibri"
)
问题二:App is not define
前台问题,更改JibriSelenium.kt中的访问方式即可:
原代码:
if (!CallPage(chromeDriver).visit(callUrlInfo.callUrl)){
stateMachine.transition(SeleniumEvent.FailedToJoinCall)
} else {
修改后代码:
if (!HomePage(chromeDriver).visit(callUrlInfo.callUrl)) {
stateMachine.transition(SeleniumEvent.FailedToJoinCall)
} else {
以上两个问题无非是程序在使用linux系统下的谷歌浏览器访问会议界面遇到的前端问题,于整个程序运行而言无关紧要,可以先跑起来再去深入研究框架