Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question on using just the jvb without the rest of jitsi-meet #2627

Open
Luc35b opened this issue Jan 29, 2025 · 12 comments
Open

Question on using just the jvb without the rest of jitsi-meet #2627

Luc35b opened this issue Jan 29, 2025 · 12 comments

Comments

@Luc35b
Copy link

Luc35b commented Jan 29, 2025

Is it possible/feasible to setup and use only the jvb sfu server without the rest of jisti meet using plain webrtc and our own meeting constructs/UI instead of lib-jitsi-meet and then something like socket.io for signaling instead of prosody?

@saghul
Copy link
Member

saghul commented Jan 29, 2025

Technically possible, but the REST API for the bridge is undocumented and there is no helper library :-(

@Luc35b
Copy link
Author

Luc35b commented Jan 29, 2025

@saghul I see so would you have any suggestions or recommendations on what to use to as an sfu to maintain performance as participant counts scales for a meeting application instead of jvb while still having the ability to customize the ui and webrtc constructs?

@saghul
Copy link
Member

saghul commented Jan 29, 2025

I'm heavily biased here of course :-)

If you need your own UI lib-jitsi-meet is a great option, as is has all the signaling and scaling figured out.

Don't be startled by XMPP / prosody, it's just an implementation detail, and if you roll your own everything on top of socket.io you'd end up reinventing most of the same constructs that are necessary.

Good luck with your project!

@Luc35b
Copy link
Author

Luc35b commented Jan 29, 2025

@saghul Ah ok its just using lib-jitsi-meet I've run into problem like low audio/video quality and a slight delay with uncertainty when from a p2p to sever connection so I was trying to find other solutions. Also in trying to add a remote control feature there's also been issues with latency using the sendMessage data channel unless you know a way to add another custom data channel for just remote control or another solution for this.

@saghul
Copy link
Member

saghul commented Jan 29, 2025

just using lib-jitsi-meet I've run into problem like ;ow audio/video quality and a slight delay

Hard to tell what could have gone wrong without more details about your setup and configuration. LJM is (reasonably) low level, so a number of knobs need to be turned for optimal performance, depending on your use case.

un certainty when from a p2p to sever connection

Generally speaking you shouldn't need to worry about that. P2P is only used for 1-to-1 calls, as an optimization. The moment a 3rd participant joins the call it will seamlessly transition to the JVB.

Also in trying to add a remote control feature there's also been issues with latency using the sendMessage data channel

sendMessage uses the XMPP signalling for transport, which is not well suited for high volume transfers, you can use sendEndpointMessage instead, which uses the JVB datachannel as a transport.

You are of course welcome to use whatever software better suits your needs such as MediaSoup or Janus, both made by dear friends of mine; but I'd be remiss if I didn't point out the above ;-)

@Luc35b
Copy link
Author

Luc35b commented Jan 29, 2025

Thanks you so much for the suggestions, I'll investigate/experiment more and let you know if I have a follow up question or solve the issues!

@Luc35b
Copy link
Author

Luc35b commented Jan 30, 2025

@saghul Since sendEndpointMessage is deprecated, checking the "sendThroughVideoBridge" condition instead fixed the latency issue. I'm still looking into video/audio optimization but was wondering if I was able to create new data channels on the lib-jitsi-meet constructs to separate out chat and remote control when sending data with jvb. So far I've tried the approach of trying to access the RTCPeerConnection object through the JitsiConference object with "room?.current?.getActiveMediaSession()?.peerconnection?.peerconnection" then calling createDataChannel on this but nothing seems to be passing through the server with this. Is there any specific way to get this to work?

@saghul
Copy link
Member

saghul commented Jan 30, 2025

Since sendEndpointMessage is deprecated, checking the "sendThroughVideoBridge" condition instead fixed the latency issue.

I forgot we deprecated that API. Under the hood they do the same thing though. Glad to hear this helped with the latency issue, that's what I was expecting.

was wondering if I was able to create new data channels on the lib-jitsi-meet constructs to separate out chat and remote control when sending data with jvb.

This is currently not possible. That said, they are already separate. The chat goes voer XMPP and endpoint messages over the JVB and are free-form.

So far I've tried the approach of trying to access the RTCPeerConnection object through the JitsiConference object with "room?.current?.getActiveMediaSession()?.peerconnection?.peerconnection" then calling createDataChannel on this but nothing seems to be passing through the server with this. Is there any specific way to get this to work?

That won't work.

@Luc35b
Copy link
Author

Luc35b commented Jan 30, 2025

Ah ok I was starting to suspect it wouldn't. I was hoping to have multiple data channels so a file transfer feature could also be separated to its own data channel so hopefully multiplexing the one channel wont cause any significant performance issues.

@saghul
Copy link
Member

saghul commented Jan 30, 2025

I don't think it would make a huge difference, your bandwidth still needs to be split between the 2.

@4n1m4t10n
Copy link

Hello there! I am Jose, part of Lucas' team for this project. I was wondering what kind of options LJM has specifically that will help us deal with low quality/laggy video feeds. Thank you for the heads up!

@saghul
Copy link
Member

saghul commented Feb 3, 2025

Hey @4n1m4t10n ! There are a number of things that can affect quality:

  • What receiver constraints are you setting?
  • What constraints are you creating local tracks with?

Those 2 are a good start.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants