jibri icon indicating copy to clipboard operation
jibri copied to clipboard

jibri only works if APP.conference._room.isJoined() exists

Open Fuzzyma opened this issue 4 years ago • 3 comments

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

Fuzzyma avatar May 08 '21 06:05 Fuzzyma

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

damencho avatar May 08 '21 12:05 damencho

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!

Fuzzyma avatar May 14 '21 11:05 Fuzzyma

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

Fuzzyma avatar May 14 '21 11:05 Fuzzyma

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?

dengzihaohs avatar Jun 29 '23 08:06 dengzihaohs

Replying to OP: At this time there is no way around it. It's by design.

saghul avatar Jun 29 '23 08:06 saghul

@saghul if its by design then document it

Fuzzyma avatar Jun 29 '23 08:06 Fuzzyma

Done: https://github.com/jitsi/jibri/commit/1e6c0da8eed5bfab4734f3b58d87d1490afaf527

saghul avatar Jun 29 '23 11:06 saghul

@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

Fuzzyma avatar Jun 29 '23 13:06 Fuzzyma

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.

saghul avatar Jun 29 '23 13:06 saghul

Thats fair enough. Thanks for the clarification

Fuzzyma avatar Jun 29 '23 13:06 Fuzzyma