Echo filter via udp

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

Echo filter via udp

Andrés Meseguer Valenzuela

Dear all, I am developing a pipeline to send video and audio muxed via  
UDP to receive it in another computer.
The only problem is that in case of a bidirectional conversation I  
receive echo, hence I would like to apply the filter: webrtcechoprobe  
and webrtcdsp, but I do not how to do this.

This is the pipeline to send:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw, height=480  
! videoconvert \
! x264enc tune=zerolatency  \
! queue ! mpegtsmux name=mux ! queue ! udpsink host=ipvalue  
port=portvalue alsasrc   \
! queue ! audioconvert \
! queue ! opusenc ! queue ! mux. -e

And the pipeline to receive:

gst-launch-1.0 -v udpsrc port=portvalue ! queue ! tsdemux name=demux demux. \
! queue ! h264parse ! queue ! avdec_h264 ! queue ! videoconvert \
! autovideosink demux. ! queue ! opusdec ! queue ! audioconvert !  
queue ! alsasink sync=false

Would you give me an example about how to perform it?
Thanks for your valuable time,
Regards,
Andrés.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Echo filter via udp

Nicolas Dufresne-5


Le mar. 22 déc. 2020 10 h 00, Andrés Meseguer Valenzuela <[hidden email]> a écrit :

Dear all, I am developing a pipeline to send video and audio muxed via 
UDP to receive it in another computer.
The only problem is that in case of a bidirectional conversation I 
receive echo, hence I would like to apply the filter: webrtcechoprobe 
and webrtcdsp, but I do not how to do this.

To use these elements, you need to send and receive in the same pipeline. 


This is the pipeline to send:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw, height=480 
! videoconvert \
! x264enc tune=zerolatency  \
! queue ! mpegtsmux name=mux ! queue ! udpsink host=ipvalue 
port=portvalue alsasrc   \

Then the webrtcdsp goes here, right after alsasrc.

! queue ! audioconvert \
! queue ! opusenc ! queue ! mux. -e

And the pipeline to receive:

gst-launch-1.0 -v udpsrc port=portvalue ! queue ! tsdemux name=demux demux. \
! queue ! h264parse ! queue ! avdec_h264 ! queue ! videoconvert \
! autovideosink demux. ! queue ! opusdec ! queue ! audioconvert ! 

And the echoprobe right before alsasink. The probe is timestamp driven, so you probably want to use sync=true async=false on that sink. Though the latency will be too hight with mpegtsdemux, hopefully you use a recent GStreamer release and have a latency property to reduce it from the 700ms default.

Another note, our TS demuxer does not reorder UDP packets, so avoid this protocol over the internet, use RTP instead.

queue ! alsasink sync=false

Would you give me an example about how to perform it?
Thanks for your valuable time,
Regards,
Andrés.
_______________________________________________
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