jibri only works if APP.conference._room.isJoined() exists
Description
As can be seen here, jibri waits for the conference to be joined. However, the check which is done is super specific to the jitsi-meet application.
return APP.conference._room.isJoined();
When I build my own application around lib-jitsi-meet, it is not assured, that I have a global APP object with that properties. In fact: It is nowhere mentioned that this is required. I am struggling with the Timed out waiting for call page to load error for a while now and discovered this part only by pure chance!
Current behavior
CallPage.kt checks if conference was joined with very specific code
Expected Behavior
Do a check, which is more robust for all usages of lib-jitsi-meet OR document whats needed to do the check properly. Maybe define an API
Possible Solution
Mention this in the readme or define an API
Actually APP.conference._room is JitsiConference from lib-jitsi-meet. You can expose it from your app and it will work.
Well, you can gather all such references from the code and a PR is welcome to list all that is used. Thank you
It is also required, that you manually pass password and id to JitsiConnection.connect() which can be found in the local storage:
new JitsiMeetJS.JitsiConnection(...)
const id = window.localStorage.getItem('xmpp_username_override')
const password = window.localStorage.getItem('xmpp_password_override')
if (id && id.length > 0 && password && password.length > 0) {
connection.connect({ id, password })
} else {
connection.connect()
}
This is ofc only required if you have password or token authentication enabled
@damencho you are providing a software as open source which is awesome but expect all of them to read your whole codebase because you cant add these few lines to the docs? I know that I can create a PR but this project is here for very long and I don't even want to know how many people gave up because they cant figure out what the "Waiting callpage to load" error is all about. The Forum is full of it!
Oh and if you wonder how to start a recording at all (because this is not documented as well):
// start
let jibriSession = await APP.conference._room.startRecording({appId: null})
// stop
await APP.conference._room.stopRecording(jibriSession.getID())
This is simplified code. Make sure to wrap it in try/catch because errors can happen in the promise
It is also required, that you manually pass password and id to
JitsiConnection.connect()which can be found in the local storage:new JitsiMeetJS.JitsiConnection(...) const id = window.localStorage.getItem('xmpp_username_override') const password = window.localStorage.getItem('xmpp_password_override') if (id && id.length > 0 && password && password.length > 0) { connection.connect({ id, password }) } else { connection.connect() }This is ofc only required if you have password or token authentication enabled
@damencho you are providing a software as open source which is awesome but expect all of them to read your whole codebase because you cant add these few lines to the docs? I know that I can create a PR but this project is here for very long and I don't even want to know how many people gave up because they cant figure out what the "Waiting callpage to load" error is all about. The Forum is full of it!
how to fix for Timed out waiting for call page to load?
Replying to OP: At this time there is no way around it. It's by design.
@saghul if its by design then document it
Done: https://github.com/jitsi/jibri/commit/1e6c0da8eed5bfab4734f3b58d87d1490afaf527
@saghul I have jibri running without the jitsi meed frontend and it works flawlessly. so that:
NOTE: Jibri currently only works with a full-fledged Jitsi Meet installation. Using a different frontend won't work.
is kinda wrong - especially because I posted the solution here
You need to implement a bunch of globals to get it to work. If someone wants to go ahead and do that great, but it will never work out of the box and may break at any time. I don't want to make any promises.
Thats fair enough. Thanks for the clarification