How to use webrtcbin DataChannel
Soebirk, Thorsten Nordholm
Thorsten.Sobirk at itelligence.dk
Tue Jun 9 15:26:24 UTC 2020
Quick follow-up to say that I have created a functioning, if perhaps not yet complete, GBytes wrapper. I hope to find time to get this into the main gst1-java-core repo over the summer.
Best regards,
Thorsten
From: Matthew Waters [mailto:ystreet00 at gmail.com]
Sent: 08 June 2020 17:33
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
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. :)
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><mailto:gstreamer-devel at lists.freedesktop.org>; Soebirk, Thorsten Nordholm <Thorsten.Sobirk at itelligence.dk><mailto: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<mailto: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/b39e9469/attachment.htm>
More information about the gstreamer-devel
mailing list