1

我使用了这个教程https://github.com/jitsi/jibri和这个视频https://www.youtube.com/watch?v=OHHoqKCjJ0E 2

安装jibri

但我无法开始录制

在 Jitsi 一侧

在 /etc/prosody/conf.d/osboxes.osboxes.demoanuswadh.info.cfg.lua

  • 我为 jibri 添加用户,记录并使用 prosodyctl
  • 添加了 internal.auth 和 recorder 组件

在 /etc/jitsi/meet/osboxes.demoanuswadh.info-config.js

  • 已启用 fileRecordingsEnabled: ture
  • 添加了隐藏域

在 /etc/jitsi/jicofo/sip-communicator.properties

  • org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.osboxes.demoanuswadh.info
  • org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

这些是日志的最后一百行 - log.0.txt

ava:312)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:744)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:369)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:852)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
at org.eclipse.jetty.server.Server.start(Server.java:415)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at org.eclipse.jetty.server.Server.doStart(Server.java:382)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.jitsi.jibri.MainKt.launchHttpServer(Main.kt:173)
at org.jitsi.jibri.MainKt.main(Main.kt:158)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 66 more
MultiException stack 2 of 2
java.lang.IllegalArgumentException: Errors were discovered while reifying SystemDescriptor(
implementation=org.glassfish.jersey.message.internal.DataSourceProvider
contracts={javax.ws.rs.ext.MessageBodyReader,javax.ws.rs.ext.MessageBodyWriter}
scope=javax.inject.Singleton
qualifiers={}
descriptorType=CLASS
descriptorVisibility=NORMAL
metadata=
rank=0
loader=null
proxiable=null
proxyForSameScope=null
analysisName=null
id=106
locatorId=1
identityHashCode=1778422985
reified=false)
at org.jvnet.hk2.internal.SystemDescriptor.reify(SystemDescriptor.java:705)
at org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor(ServiceLocatorImpl.java:464)
at org.jvnet.hk2.internal.ServiceLocatorImpl.narrow(ServiceLocatorImpl.java:2310)
at org.jvnet.hk2.internal.ServiceLocatorImpl.access$1200(ServiceLocatorImpl.java:128)
at org.jvnet.hk2.internal.ServiceLocatorImpl$9.compute(ServiceLocatorImpl.java:1395)
at org.jvnet.hk2.internal.ServiceLocatorImpl$9.compute(ServiceLocatorImpl.java:1390)
at org.glassfish.hk2.utilities.cache.internal.WeakCARCacheImpl.compute(WeakCARCacheImpl.java:128)
at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1452)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1377)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1366)
at org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.getAllServiceHolders(AbstractHk2InjectionManager.java:158)
at org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.getAllServiceHolders(ImmediateHk2InjectionManager.java:54)
at org.glassfish.jersey.internal.inject.Providers.getServiceHolders(Providers.java:329)
at org.glassfish.jersey.internal.inject.Providers.getProviders(Providers.java:157)
at org.glassfish.jersey.message.internal.MessageBodyFactory.initialize(MessageBodyFactory.java:265)
at org.glassfish.jersey.message.internal.MessageBodyFactory$MessageBodyWorkersConfigurator.postInit(MessageBodyFactory.java:136)
at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$2(ApplicationHandler.java:372)
at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4390)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:372)
at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:256)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:315)
at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:282)
at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:335)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:671)
at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:428)
at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:750)
at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:744)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:369)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:852)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
at org.eclipse.jetty.server.Server.start(Server.java:415)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at org.eclipse.jetty.server.Server.doStart(Server.java:382)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.jitsi.jibri.MainKt.launchHttpServer(Main.kt:173)
at org.jitsi.jibri.MainKt.main(Main.kt:158)

2020-04-18 19:06:12.543 SEVERE: [21] org.jitsi.xmpp.mucclient.MucClientManager.log() Failed to initialize and start a MucClient:
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘osboxes.demoanuswadh.info:5222’ failed because: osboxes.demoanuswadh.info/77.525.75.82 exception: java.net.ConnectException: Connection refused (Connection refused)
at org.jivesoftware.smack.SmackException$ConnectionException.from(SmackException.java:278)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:619)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:902)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:383)
at org.jitsi.xmpp.mucclient.MucClient.initializeConnectAndJoin(MucClient.java:277)
at org.jitsi.xmpp.mucclient.MucClientManager.lambda$addMucClient$0(MucClientManager.java:152)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
2020-04-18 19:06:42.348 WARNING: [30] org.jivesoftware.smackx.ping.PingManager.pingServerIfNecessary() XMPPConnection was not authenticated
2020-04-18 19:22:59.687 INFO: [17] org.jitsi.jibri.api.http.internal.InternalHttpApi.gracefulShutdown() Jibri gracefully shutting down

/etc/jitsi/jibri/config.json

    {

    // NOTE: this is a *SAMPLE* config file, it will need to be configured with

    // values from your environment

    // Where recording files should be temporarily stored

    "recording_directory":"/xxxxxxxxxx/xxxxxxxxx/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": [

                "osboxes.demoanuswadh.info"

            ],

            // The xmpp domain we'll connect to on the XMPP server

            "xmpp_domain": "osboxes.demoanuswadh.info",

            // Jibri will login to the xmpp server as a privileged user 

            "control_login": {

                // The domain to use for logging in

                "domain": "auth.osboxes.demoanuswadh.info",

                // The credentials for logging in

                "username": "jibri",

                "password": "xxxxxxxxxxxxxxxxxx"

            },

            // 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.osboxes.demoanuswadh.info",

                "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.osboxes.demoanuswadh.info",

                "username": "recorder",

                "password": "xxxxxxxxxxxxxxxxxxxxxx"

            },

            // When jibri gets a request to start a service for a room, the room

            //  jid will look like:

            //  roomName@optional.prefixes.subdomain.xmpp_domain

            // We'll build the url for the call by transforming that into:

            //  https://xmpp_domain/subdomain/roomName

            // So if there are any prefixes in the jid (like jitsi meet, which

            //  has its participants join a muc at conference.xmpp_domain) then

            //  list that prefix here so it can be stripped out to generate

            //  the call url correctly

            "room_jid_domain_string_to_strip_from_start": "conference.",

            // The amount of time, in minutes, a service is allowed to continue.

            //  Once a service has been running for this long, it will be

            //  stopped (cleanly).  A value of 0 means an indefinite amount

            //  of time is allowed

            "usage_timeout": "0"

        }

    ]

}

我将不胜感激。提前致谢

4

3 回答 3

1

在您的日志中说连接被拒绝。

2020-04-18 19:06:12.543 SEVERE: [21] org.jitsi.xmpp.mucclient.MucClientManager.log() Failed to initialize and start a MucClient:[...] failed because: osboxes.demoanuswadh.info/77.525.75.82 exception: java.net.ConnectException: Connection refused (Connection refused)

在 jitsi 中验证用户、域和密码。准备好后,删除 log.0.txt 或重命名它并重新启动 jibri 服务以获得清晰的日志。

于 2020-05-08T17:12:06.820 回答
0
2020-04-18 19:06:12.543 SEVERE: [21] org.jitsi.xmpp.mucclient.MucClientManager.log() Failed to initialize and start a MucClient:
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘osboxes.demoanuswadh.info:5222’ failed because: osboxes.demoanuswadh.info/77.525.75.82 exception: java.net.ConnectException: Connection refused (Connection refused)

您的日志说 jibri 连接到 osboxes.demoanuswadh.info (它会解析到 localhost 还是公共 IP?)

如果您在同一主机上安装了 jitsi-meet 和 jibri,请确保 osboxes.demoanuswadh.info 应解析为 localhost。

如果您安装在同一子网内的不同机器上,osboxes.demoanuswadh.info 应解析为私有 IP

如果您安装在同一子网内的不同机器上,osboxes.demoanuswadh.info 应解析为公共 IP

对于最后两种情况,请确保您的韵律正在侦听绑定到 0.0.0.0 的 5222 端口,还允许使用 ufw(ubuntu 防火墙)进行防火墙访问

于 2021-06-17T03:32:53.733 回答
0

在安装 Jibri 之前,您必须5222在 Jitsi 服务器中启用该端口。如果你可以只为 Jibri 使用 Debian 服务器,那就更好了。不是 Jitsi 服务器。因为FFmpeg and chromium服务可以在 Debian 服务器上顺利运行。

于 2021-02-18T11:18:47.007 回答