[jitsi-users] Some questions about using video bridge and conferences (without XMPP)


#1

Hi,

In one of our current projects we are trying to build a video/audio-conferencing solution, which should support WebRTC, so that users can simply use their browsers.

For the server-side we are considering using Jitsi, as it already provide a very extensive support for multi-party audio/video conferences.

We tried out the out-of-the-box solutions provided by Jitsi and everything seems to work OK at the first glance.

But there is an issue which we would like to understand better:
- Right now Jitsi/libjitsi/videobridge seems to trigger/control conferences by means of XMPP (and some of its extensions like Colibri). Is it a correct understanding?

- In our own existing solution, which already provides audio conferences (though not WebRTC-based) and some other features, we do not use XMPP so far and there are no plans to do it in the near feature. Therefore, we are wondering how we can still make use of libjitsi/videobridge.

I can see different alternatives:

- When using libjitsi APIs/videobridge, we could try to map/convert our own way of identifying users and controlling/triggering conferences into XMPP/Colibri format and vice versa. I'm not sure yet if it is easily done. It is also not quite clear for me, if it would mean that we need to implicitly provision/register all our users in XMPP server that we would need to deploy.

- Another alternative could be to develop our own "control plane" for Jitsi videobridge conferencing. This "control plane" would use our own control commands instead of XMPP/Colibri. It would be very helpful, if someone could provide some indication about the complexity of such an undertaking.
Is it feasible with a reasonable effort?
Or would it need rewriting/customizing pretty big parts of libjitsi/videobridge?
Where should we start looking at? Which sub-systems? Which classes?
Could you provide us with a link to the code that currently handles (video) conferences control plane, e.g. establishment, joining, leaving conferences, negotiation of parameters (ports, security, encryption, codecs, resolutions, etc).

Which of these two alternatives would be better? Which is easier to implement? May be there are further possibilities to achieve the same? Or may be someone already has experience controlling jitsi/videobridge without using XMPP?

Any help or advice are very appreciated!

Thanks,
Leo


#2

Hi,

May be someone could provide some feedback regarding the questions I asked in the original email? This would be very helpful.

There are a few more questions I collected in the meantime. In principle, I'd like to achieve something like JitMeet web client, but I'd like to move the logic for SDP offer/answer processing from a web client/JS to a backend/Java. My web client would talk with my backend and send SDP offers to it or receive SDP answers from it.

1) Let's say I want to use Jitsi Bridge "as-is", i.e. contact it using XMPP/Colibri. I want to do it not from a browser directly, but from my backend system (written in Java). My backend is being contacted by the WebRTC-enabled browser and receives an SDP offer exactly as it is generated by invoking JavaSctipt WebRTC APIs. Now I'd like to forward this SDP to Jitsi Videobridge and get an SDP answer from it. Afterwards I'd simply forward this SDP answer to the browser and let WebRTC stack in the browser establish a proper peer connection with the Jitsi Videobridge.

Now to contact Jitsi Videobridge from my backend, I need to transform the SDP offer as received from a browser into Colibri format and send it over XMPP, right? My question is:
- As far as I can see I need a lib for sending/receiving/parsing/generating XMPP and I need a lib for processing Colibri packets (generate/parse them). I may also need a library for converting between usual SDP format and SDP format expected by Colibri/Videobridge. Which of Jitsi libs can/should I use to achieve this, in particular for SDP<->Colibri format conversions? Are there any examples available in Jitsi lib about how to do something like this (SDP<->Colibri, Java client that talks Colibri with the bridge, etc)? Or may be there is code that does roughly something similar (e.g. in the Jitsi Messenger?)

Thanks,
Leo


#3

Hey Leo,

Hi,

May be someone could provide some feedback regarding the questions I
asked in the original email? This would be very helpful.

There are a few more questions I collected in the meantime. In
principle, I'd like to achieve something like JitMeet web client, but
I'd like to move the logic for SDP offer/answer processing from a web
client/JS to a backend/Java. My web client would talk with my backend
and send SDP offers to it or receive SDP answers from it.

1) Let's say I want to use Jitsi Bridge "as-is", i.e. contact it using
XMPP/Colibri. I want to do it not from a browser directly, but from my
backend system (written in Java). My backend is being contacted by the
WebRTC-enabled browser and receives an SDP offer exactly as it is
generated by invoking JavaSctipt WebRTC APIs.

Yes, that's a valid way of doing it. We are actually thinking of supporting that in Jitsi Meet too.

Now I'd like to forward
this SDP to Jitsi Videobridge and get an SDP answer from it.

No, this doesn't make sense. Jitsi Videobridge just relays stuff. It does not understand offer/answer because it (generally) doesn't care about formats.

You should implement offer/answer semantics on the server part of your application.

Afterwards
I'd simply forward this SDP answer to the browser and let WebRTC stack
in the browser establish a proper peer connection with the Jitsi
Videobridge.

Now to contact Jitsi Videobridge from my backend, I need to transform
the SDP offer as received from a browser into Colibri format and send it
over XMPP, right? My question is:
- As far as I can see I need a lib for
sending/receiving/parsing/generating XMPP and I need a lib for
processing Colibri packets (generate/parse them). I may also need a
library for converting between usual SDP format and SDP format expected
by Colibri/Videobridge. Which of Jitsi libs can/should I use to achieve
this, in particular for SDP<->Colibri format conversions? Are there any
examples available in Jitsi lib about how to do something like this
(SDP<->Colibri, Java client that talks Colibri with the bridge, etc)? Or
may be there is code that does roughly something similar (e.g. in the
Jitsi Messenger?)

Yes, you can use Jingle and Colibri code from Jitsi. Have a look at:

net.java.sip.communicator.impl.protocol.jabber

Hope this helps,
Emil

···

On 27.03.14, 15:48, Leo Romanoff wrote:

Thanks,
    Leo

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users

--
https://jitsi.org


#4

Hey Emil,

Do we have functinality of desktop sharing from jitmeet?

And the issue I noticed about jit meet is I have broadband of 1 mbps and
trying jitmeet with two clients.

But the issue I ni
Iticed is video always freezes of opposite party not sure this is due yo
inadequate bw but wantrd to know where can we find logs for troubleshooting.

···

On 31 Mar 2014 01:15, "Emil Ivov" <emcho@jitsi.org> wrote:

Hey Leo,

On 27.03.14, 15:48, Leo Romanoff wrote:

Hi,

May be someone could provide some feedback regarding the questions I
asked in the original email? This would be very helpful.

There are a few more questions I collected in the meantime. In
principle, I'd like to achieve something like JitMeet web client, but
I'd like to move the logic for SDP offer/answer processing from a web
client/JS to a backend/Java. My web client would talk with my backend
and send SDP offers to it or receive SDP answers from it.

1) Let's say I want to use Jitsi Bridge "as-is", i.e. contact it using
XMPP/Colibri. I want to do it not from a browser directly, but from my
backend system (written in Java). My backend is being contacted by the
WebRTC-enabled browser and receives an SDP offer exactly as it is
generated by invoking JavaSctipt WebRTC APIs.

Yes, that's a valid way of doing it. We are actually thinking of
supporting that in Jitsi Meet too.

Now I'd like to forward

this SDP to Jitsi Videobridge and get an SDP answer from it.

No, this doesn't make sense. Jitsi Videobridge just relays stuff. It does
not understand offer/answer because it (generally) doesn't care about
formats.

You should implement offer/answer semantics on the server part of your
application.

Afterwards

I'd simply forward this SDP answer to the browser and let WebRTC stack
in the browser establish a proper peer connection with the Jitsi
Videobridge.

Now to contact Jitsi Videobridge from my backend, I need to transform
the SDP offer as received from a browser into Colibri format and send it
over XMPP, right? My question is:
- As far as I can see I need a lib for
sending/receiving/parsing/generating XMPP and I need a lib for
processing Colibri packets (generate/parse them). I may also need a
library for converting between usual SDP format and SDP format expected
by Colibri/Videobridge. Which of Jitsi libs can/should I use to achieve
this, in particular for SDP<->Colibri format conversions? Are there any
examples available in Jitsi lib about how to do something like this
(SDP<->Colibri, Java client that talks Colibri with the bridge, etc)? Or
may be there is code that does roughly something similar (e.g. in the
Jitsi Messenger?)

Yes, you can use Jingle and Colibri code from Jitsi. Have a look at:

net.java.sip.communicator.impl.protocol.jabber

Hope this helps,
Emil

Thanks,
    Leo

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users

--
https://jitsi.org

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users


#5

Hey Emil,

Do we have functinality of desktop sharing from jitmeet?

Yes. It currently only works from Chrome Canary and (I believe) Chromium though. Chrome should support it in a few weeks.

And the issue I noticed about jit meet is I have broadband of 1 mbps and
trying jitmeet with two clients.

But the issue I ni
Iticed is video always freezes of opposite party not sure this is due yo
inadequate bw but wantrd to know where can we find logs for troubleshooting.

WebRTC logs are available at chrome://webrtc-internals

Jitsi Videobridge prints logs on stdout.

Hope this helps,
Emil

···

On 30.03.14, 21:52, Blason R wrote:

On 31 Mar 2014 01:15, "Emil Ivov" <emcho@jitsi.org > <mailto:emcho@jitsi.org>> wrote:

    Hey Leo,

    On 27.03.14, 15:48, Leo Romanoff wrote:

        Hi,

        May be someone could provide some feedback regarding the questions I
        asked in the original email? This would be very helpful.

        There are a few more questions I collected in the meantime. In
        principle, I'd like to achieve something like JitMeet web
        client, but
        I'd like to move the logic for SDP offer/answer processing from
        a web
        client/JS to a backend/Java. My web client would talk with my
        backend
        and send SDP offers to it or receive SDP answers from it.

        1) Let's say I want to use Jitsi Bridge "as-is", i.e. contact it
        using
        XMPP/Colibri. I want to do it not from a browser directly, but
        from my
        backend system (written in Java). My backend is being contacted
        by the
        WebRTC-enabled browser and receives an SDP offer exactly as it is
        generated by invoking JavaSctipt WebRTC APIs.

    Yes, that's a valid way of doing it. We are actually thinking of
    supporting that in Jitsi Meet too.

        Now I'd like to forward
        this SDP to Jitsi Videobridge and get an SDP answer from it.

    No, this doesn't make sense. Jitsi Videobridge just relays stuff. It
    does not understand offer/answer because it (generally) doesn't care
    about formats.

    You should implement offer/answer semantics on the server part of
    your application.

        Afterwards
        I'd simply forward this SDP answer to the browser and let WebRTC
        stack
        in the browser establish a proper peer connection with the Jitsi
        Videobridge.

        Now to contact Jitsi Videobridge from my backend, I need to
        transform
        the SDP offer as received from a browser into Colibri format and
        send it
        over XMPP, right? My question is:
        - As far as I can see I need a lib for
        sending/receiving/parsing/__generating XMPP and I need a lib for
        processing Colibri packets (generate/parse them). I may also need a
        library for converting between usual SDP format and SDP format
        expected
        by Colibri/Videobridge. Which of Jitsi libs can/should I use to
        achieve
        this, in particular for SDP<->Colibri format conversions? Are
        there any
        examples available in Jitsi lib about how to do something like this
        (SDP<->Colibri, Java client that talks Colibri with the bridge,
        etc)? Or
        may be there is code that does roughly something similar (e.g.
        in the
        Jitsi Messenger?)

    Yes, you can use Jingle and Colibri code from Jitsi. Have a look at:

    net.java.sip.communicator.__impl.protocol.jabber

    Hope this helps,
    Emil

        Thanks,
             Leo

        _________________________________________________
        users mailing list
        users@jitsi.org <mailto:users@jitsi.org>
        Unsubscribe instructions and other list options:
        http://lists.jitsi.org/__mailman/listinfo/users
        <http://lists.jitsi.org/mailman/listinfo/users>

    --
    https://jitsi.org

    _________________________________________________
    users mailing list
    users@jitsi.org <mailto:users@jitsi.org>
    Unsubscribe instructions and other list options:
    http://lists.jitsi.org/__mailman/listinfo/users
    <http://lists.jitsi.org/mailman/listinfo/users>

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users

--
https://jitsi.org


#6

Hi Emil,

Thanks for your your reply.

 Hey Leo,

     Hi,

     May be someone could provide some

feedback regarding the questions I

     asked in the original email? This would be very helpful\.

     There are a few more questions I collected in the meantime\. In
     principle, I&#39;d like to achieve something like JitMeet web
     client, but
     I&#39;d like to move the logic for SDP offer/answer processing from
     a web
     client/JS to a backend/Java\. My web client would talk with my
     backend
     and send SDP offers to it or receive SDP answers from it\.

     1\) Let&#39;s say

I want to use Jitsi Bridge "as-is", i.e. contact it

     using
     XMPP/Colibri\. I want to do it not from a browser directly, but
     from my
     backend system \(written in Java\)\. My backend is being contacted
     by the
     WebRTC\-enabled browser and receives an SDP offer exactly as it is
     generated by invoking JavaSctipt WebRTC APIs\.

 Yes, that&#39;s a valid way of doing it\. We are actually thinking of
 supporting that in Jitsi Meet too\.

OK. Thanks that you confirmed my plan.

     Now I&#39;d like to forward
     this SDP to Jitsi Videobridge and get an SDP answer from it\.

 No, this doesn&#39;t make sense\. Jitsi Videobridge just relays stuff\. It
 does not understand offer/answer because it \(generally\) doesn&#39;t care
 about formats\.

 You should implement offer/answer semantics on the server part of
 your application\.

Yes. That is what I meant. I didn't mean sending SDPs directly to the bridge or vice versa.

     Afterwards
     I&#39;d simply forward this SDP answer to the browser and let WebRTC
     stack
     in the browser establish a proper peer connection with the Jitsi
     Videobridge\.

     Now to contact Jitsi Videobridge from my backend, I need to
     transform
     the SDP offer as received from a browser into Colibri format and
     send it
     over XMPP, right? My question is:
     \- As far as I can see I need a lib for
     sending/receiving/parsing/\_\_generating XMPP and I need a lib for
     processing Colibri packets \(generate/parse them\)\. I may also need a
     library for converting between usual SDP format and SDP format
  expected
     by Colibri/Videobridge\. Which of Jitsi libs can/should I use to
     achieve
     this, in particular for SDP&lt;\-&gt;Colibri format conversions? Are
     there any
     examples available in Jitsi lib about how to do something like this
     \(SDP&lt;\-&gt;Colibri, Java client that talks Colibri with the bridge,
     etc\)? Or
     may be there is code that does roughly something similar \(e\.g\.
     in the
     Jitsi Messenger?\)
Yes, you can use Jingle and Colibri code from Jitsi\. Have a look at:
 net\.java\.sip\.communicator\.\_\_impl\.protocol\.jabber

Yes. This helps. The initial prototype is functional now :wink:

Thanks again,
Leo

···

Emil Ivov <emcho@jitsi.org> schrieb am 0:10 Montag, 31.März 2014: > > On 31 Mar 2014 01:15, "Emil Ivov" <emcho@jitsi.org > <mailto:emcho@jitsi.org>> wrote:

 On 27\.03\.14, 15:48, Leo Romanoff wrote: