audio over Ethernet network not working
tim at centricular.com
Thu Jun 26 15:45:32 PDT 2014
On Thu, 2014-06-26 at 14:15 -0700, mahyarelc wrote:
> I change the IP address (in the pipeline) to the receiver's IP and it
> worked. But now if I change the server's pipeline to send a
> videotestsrc (just change audiotestsrc to videotestsrc), it won't work
> again (data is not received at all) gst-launch -v videotestsrc !
> udpsink host=169.254.7.7 port=1234 (I'm just going step by step to
> figure out what's the problem)
videotestsrc will output buffers that are too large than the maximum UDP
packet size. You should use and will have to use an RTP payloader to
split them up into suitably small packets, e.g.:
gst-launch-1.0 -v videotestsrc ! rtpvrawpay ! udpsink
caps=application/x-rtp,media=video,clock-rate=90000,encoding-name=RAW,sampling=... ! rtpjitterbuffer ! vrawdepay ! queue ! videoconvert ! videoscale ! autovideosink
where the RTP caps match the ones you see on the sink on the sender.
> I've tried to use tcp instead of udp (does it matter?) but still no luck.
> (using tcpserversink)
> Any idea what's the problem?
Two problems with sending "raw" data over TCP: it's not typefindable and
the packetisation is not maintained (where does a video frame
start/end), nor does the receiver know what the format is. You can force
parsing on the receiver with audioparse/videoparse then if you set the
properties right, but it's a bit ugly. Depending on the use case
gdppay ! tcp..sink tcp..src ! gdpdepay ! .. might be a workable option
(has some downsides, depends all a bit on the exact scenario/pipelines).
Tim Müller, Centricular Ltd - http://www.centricular.com
More information about the gstreamer-devel