How to use webrtcbin DataChannel

Matthew Waters ystreet00 at gmail.com
Mon Jun 8 15:32:39 UTC 2020


Hi,

On 8/6/20 11:32 pm, Soebirk, Thorsten Nordholm wrote:
>
> Thanks Matt. Good resources.
>
>  
>
> My failure to find these myself seems to be because I am working with
> the Java bindings, and I was therefore searching for “DataChannel”
> (one word) rather than “data-channel” or “data_channel”. I’ll remember
> that in the future.
>
>  
>
> The only thing in the examples that struck me as different from my own
> program is that the examples set the bundle-policy to "max-bundle". I
> tried this and my program now works. J
>

This is one such case that is fixed in master.  data-channel-only
without bundle.

> I am now facing a new challenge. I am using the DataChannel
> implementation from this fork
> (https://github.com/ai-foundation/gst1-java-core/blob/webrtc-datachannels/src/org/freedesktop/gstreamer/webrtc/WebRTCDataChannel.java)of
> the gst1-java-core bindings. It only exposes the "send-string" signal,
> which works, but I need to send binary data. So I need to figure out
> how to wrap the "send-data" signal. GStreamer expects a GBytes pointer
> and I can’t seem to figure out how to provide something compatibly
> from Java. I have tried simply supplying a byte[] or a ByteBuffer, but
> in both cases it gives the error "Requested to send data that is too
> large" which is probably just an indication that GStreamer doesn’t
> know what to do with the data. Any idea what a correct binding would
> look like? Og should I be asking this elsewhere?
>

I'm not familiar with how the java bindings wrap something like GBytes. 
I would look for some other API that uses GBytes and see how that maps.

> Thanks!
>
>  
>
> Best regards,
>
> Thorsten
>
>  
>
> *From:*Matthew Waters [mailto:ystreet00 at gmail.com]
> *Sent:* 07 June 2020 03:05
> *To:* Discussion of the development of and with GStreamer
> <gstreamer-devel at lists.freedesktop.org>; Soebirk, Thorsten Nordholm
> <Thorsten.Sobirk at itelligence.dk>
> *Subject:* Re: How to use webrtcbin DataChannel
>
>  
>
> What version of GStreamer are you using? You may need the latest
> master for fixes in some specific cases.
>
> There is an example of data channels within
> https://github.com/centricular/gstwebrtc-demos/blob/master/sendrecv/gst/webrtc-sendrecv.c#L303. 
> Search for channel.  There is also data channel usage in the unit
> tests:
> https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/tests/check/elements/webrtcbin.c.
>
> Offers will only be produced if you call the 'create-offer' signal. 
> That can be in response to the 'negotiation-needed' signal but that is
> not required.
>
> You don't need to set webtcbin to READY to renegotiate the SDP (within
> the supported renegotiation scenarios).
>
> Cheers
> -Matt
>
> On 7/6/20 3:31 am, Soebirk, Thorsten Nordholm wrote:
>
>     Hi,
>
>      
>
>     I am struggling to figure out how to use DataChannels in WebRTC
>     using webrtcbin (using version 1.16.2), and I can’t find any
>     example code to illustrate this. My application initiates the
>     WebRTC connection, i.e. sends the offer. It also sends and
>     receives both audio and video streams. Everything works fine
>     except for DataChannels.
>
>      
>
>     Here’s what I’ve tried so far:
>
>      
>
>     1. If I send the create-data-channel signal before sending the
>     offer while webrtcbin is in state ready, no offer is ever
>     produced. Also, no error message is given.
>
>      
>
>     2. If I wait until audio and video have started streaming and then
>     set state back to ready, signal create-data-channel, and set state
>     to play again, this seems to work in that I get a DataChannel
>     instance back. But when I subsequently try to send data using this
>     DataChannel, I get a “not open” error.
>
>      
>
>     3. Signaling create-data-channel when webrtcbin is not in ready
>     state just gives an error.
>
>      
>
>      
>
>     I wonder if I am missing something simple or perhaps doing things
>     in the wrong order. Any help greatly appreciated. A simple working
>     example would be awesome.
>
>      
>
>     Best regards,
>
>     Thorsten
>
>      
>
>
>
>     _______________________________________________
>
>     gstreamer-devel mailing list
>
>     gstreamer-devel at lists.freedesktop.org <mailto:gstreamer-devel at lists.freedesktop.org>
>
>     https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>  
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200609/fb7a2b9d/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200609/fb7a2b9d/attachment-0001.sig>


More information about the gstreamer-devel mailing list