WebRTC with data channel only?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

WebRTC with data channel only?

Bill G
Hello,

I'm trying to get a webrtcbin running which has data channels only (i.e. no audio, no video.)  I started with the working sendrecv example and got to the point where I had a working data-channel with audio only.  When I remove audio the data channels fail to connect - one data channel is created by GStreamer code, another intiated on the browser side. 

I found and example (link below) for only receiving streams in which the gst_parse_launch() was removed and one-way transceivers manually added.  I read that without a audio/video sink pad connected the transceivers need to be manually created.  Maybe this is also related to data channels not functioning?

https://github.com/centricular/gstwebrtc-demos/compare/master...a-morales:figure-out-transceivers?expand=1

So, I'm assuming there is something preventing these data-channels from getting established, and asking how to get past it?  This is with everything running on one machine, Windows and GStreamer 1.16.  Thanks in advance!

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: WebRTC with data channel only?

attaboy
I'm still having this problem first posted in March.  I'm using GStreamer webrtcbin to send data over a WebRTC data channel and all is working well!  The only problem is for the data channel to be established I also need to specify a dummy audio stream as follows:

pipe1 = gst_parse_launch("webrtcbin  name=sendrecv "
 "audiotestsrc is-live=true  ! audioconvert ! audioresample ! queue ! opusenc  ! rtpopuspay ! "
 "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);

When I try webrtcbin by itself or with a fakesrc instead of an audio source I can still create the data channel as below without errors but I never get the "on-open" callback like I do when an audio source is present.

g_signal_emit_by_name(webrtc1, "create-data-channel", "channel", NULL, &send_channel);
if (send_channel) {
  g_print("Created data channel\n");
  connect_data_channel_signals(send_channel, session);
}

So in short - can webrtcbin be configured to work with only data channels, and if so, what am I missing?

Bill

On Tue, Mar 31, 2020 at 11:30 AM Bill G <[hidden email]> wrote:
Hello,

I'm trying to get a webrtcbin running which has data channels only (i.e. no audio, no video.)  I started with the working sendrecv example and got to the point where I had a working data-channel with audio only.  When I remove audio the data channels fail to connect - one data channel is created by GStreamer code, another intiated on the browser side. 

I found and example (link below) for only receiving streams in which the gst_parse_launch() was removed and one-way transceivers manually added.  I read that without a audio/video sink pad connected the transceivers need to be manually created.  Maybe this is also related to data channels not functioning?


So, I'm assuming there is something preventing these data-channels from getting established, and asking how to get past it?  This is with everything running on one machine, Windows and GStreamer 1.16.  Thanks in advance!
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: WebRTC with data channel only?

Toshick
Hello Bill.

As you need only a data channel, but neither video nor audio why do you need Gstreamer? Gstreamer is first of all audio/video framework. It is more useful to use 3rd party webrtc libraries like (https://webrtc.googlesource.com/src/+/master/api).

Best regards,
Anton.

On Fri, Jul 17, 2020 at 5:10 PM William Gerecke <[hidden email]> wrote:
I'm still having this problem first posted in March.  I'm using GStreamer webrtcbin to send data over a WebRTC data channel and all is working well!  The only problem is for the data channel to be established I also need to specify a dummy audio stream as follows:

pipe1 = gst_parse_launch("webrtcbin  name=sendrecv "
 "audiotestsrc is-live=true  ! audioconvert ! audioresample ! queue ! opusenc  ! rtpopuspay ! "
 "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);

When I try webrtcbin by itself or with a fakesrc instead of an audio source I can still create the data channel as below without errors but I never get the "on-open" callback like I do when an audio source is present.

g_signal_emit_by_name(webrtc1, "create-data-channel", "channel", NULL, &send_channel);
if (send_channel) {
  g_print("Created data channel\n");
  connect_data_channel_signals(send_channel, session);
}

So in short - can webrtcbin be configured to work with only data channels, and if so, what am I missing?

Bill

On Tue, Mar 31, 2020 at 11:30 AM Bill G <[hidden email]> wrote:
Hello,

I'm trying to get a webrtcbin running which has data channels only (i.e. no audio, no video.)  I started with the working sendrecv example and got to the point where I had a working data-channel with audio only.  When I remove audio the data channels fail to connect - one data channel is created by GStreamer code, another intiated on the browser side. 

I found and example (link below) for only receiving streams in which the gst_parse_launch() was removed and one-way transceivers manually added.  I read that without a audio/video sink pad connected the transceivers need to be manually created.  Maybe this is also related to data channels not functioning?


So, I'm assuming there is something preventing these data-channels from getting established, and asking how to get past it?  This is with everything running on one machine, Windows and GStreamer 1.16.  Thanks in advance!
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: WebRTC with data channel only?

attaboy
Thanks for the response.  First, my application is already doing lots of other video/audio processing with GStreamer and I would really like to stick with it if possible.  Second, I much prefer it over the massive Chromium based WebRTC implementation from Google...not that GStreamer is small.  :-)

Can anyone say for sure that webrtcbin doesn't currently support data channels only?

Bill



 

On Fri, Jul 17, 2020 at 3:20 PM Anton Pryima <[hidden email]> wrote:
Hello Bill.

As you need only a data channel, but neither video nor audio why do you need Gstreamer? Gstreamer is first of all audio/video framework. It is more useful to use 3rd party webrtc libraries like (https://webrtc.googlesource.com/src/+/master/api).

Best regards,
Anton.

On Fri, Jul 17, 2020 at 5:10 PM William Gerecke <[hidden email]> wrote:
I'm still having this problem first posted in March.  I'm using GStreamer webrtcbin to send data over a WebRTC data channel and all is working well!  The only problem is for the data channel to be established I also need to specify a dummy audio stream as follows:

pipe1 = gst_parse_launch("webrtcbin  name=sendrecv "
 "audiotestsrc is-live=true  ! audioconvert ! audioresample ! queue ! opusenc  ! rtpopuspay ! "
 "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);

When I try webrtcbin by itself or with a fakesrc instead of an audio source I can still create the data channel as below without errors but I never get the "on-open" callback like I do when an audio source is present.

g_signal_emit_by_name(webrtc1, "create-data-channel", "channel", NULL, &send_channel);
if (send_channel) {
  g_print("Created data channel\n");
  connect_data_channel_signals(send_channel, session);
}

So in short - can webrtcbin be configured to work with only data channels, and if so, what am I missing?

Bill

On Tue, Mar 31, 2020 at 11:30 AM Bill G <[hidden email]> wrote:
Hello,

I'm trying to get a webrtcbin running which has data channels only (i.e. no audio, no video.)  I started with the working sendrecv example and got to the point where I had a working data-channel with audio only.  When I remove audio the data channels fail to connect - one data channel is created by GStreamer code, another intiated on the browser side. 

I found and example (link below) for only receiving streams in which the gst_parse_launch() was removed and one-way transceivers manually added.  I read that without a audio/video sink pad connected the transceivers need to be manually created.  Maybe this is also related to data channels not functioning?


So, I'm assuming there is something preventing these data-channels from getting established, and asking how to get past it?  This is with everything running on one machine, Windows and GStreamer 1.16.  Thanks in advance!
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: WebRTC with data channel only?

Matthew Waters
In reply to this post by attaboy
Data channel only can work, but a lot of the data channel cases only work with master at the moment.  Backporting some of the required commits fixes to 1.16 is not easy.

e.g. here is a validate scenario that only opens a data channel and sends some data: https://gitlab.freedesktop.org/gstreamer/gst-examples/-/blob/master/webrtc/check/validate/scenarios/send_data_channel_string.scenario

On 18/7/20 12:09 am, William Gerecke wrote:
I'm still having this problem first posted in March.  I'm using GStreamer webrtcbin to send data over a WebRTC data channel and all is working well!  The only problem is for the data channel to be established I also need to specify a dummy audio stream as follows:

pipe1 = gst_parse_launch("webrtcbin  name=sendrecv "
 "audiotestsrc is-live=true  ! audioconvert ! audioresample ! queue ! opusenc  ! rtpopuspay ! "
 "queue ! " RTP_CAPS_OPUS "97 ! sendrecv. ", &error);

When I try webrtcbin by itself or with a fakesrc instead of an audio source I can still create the data channel as below without errors but I never get the "on-open" callback like I do when an audio source is present.

g_signal_emit_by_name(webrtc1, "create-data-channel", "channel", NULL, &send_channel);
if (send_channel) {
  g_print("Created data channel\n");
  connect_data_channel_signals(send_channel, session);
}

So in short - can webrtcbin be configured to work with only data channels, and if so, what am I missing?

Bill

On Tue, Mar 31, 2020 at 11:30 AM Bill G <[hidden email]> wrote:
Hello,

I'm trying to get a webrtcbin running which has data channels only (i.e. no audio, no video.)  I started with the working sendrecv example and got to the point where I had a working data-channel with audio only.  When I remove audio the data channels fail to connect - one data channel is created by GStreamer code, another intiated on the browser side. 

I found and example (link below) for only receiving streams in which the gst_parse_launch() was removed and one-way transceivers manually added.  I read that without a audio/video sink pad connected the transceivers need to be manually created.  Maybe this is also related to data channels not functioning?


So, I'm assuming there is something preventing these data-channels from getting established, and asking how to get past it?  This is with everything running on one machine, Windows and GStreamer 1.16.  Thanks in advance!
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (499 bytes) Download Attachment