GStreamer udpsink with ipv6 host doesn't work

496 views Asked by At

I'm trying to send with gstreamer (version 1.18.4) a videostream with udpsink ipv6 and gst-launch-1.0 but it doesn't work, nothing is received on the client side. My commands are:

client: gst-launch-1.0 udpsrc port=5000 ! 'application/x-rtp,encoding-name=H264,payload=96' ! rtph264depay ! avdec_h264 ! xvimagesink sync=0

server: gst-launch-1.0 videotestsrc is-live=1 ! video/x-raw,width=1280,height=720 ! timeoverlay valignment=4 halignment=1 ! videoconvert ! 'video/x-raw,width=1280,height=720' ! x264enc ! h264parse ! rtph264pay ! udpsink host=fe80::2b37:54e4:1812:9169 port=5000 sync=0

Putting the ipv6 address into quotes "" doesn't help either.

With ipv4 everything works. gst-launch-1.0 videotestsrc is-live=1 ! video/x-raw,width=1280,height=720 ! timeoverlay valignment=4 halignment=1 ! videoconvert ! 'video/x-raw,width=1280,height=720' ! x264enc ! h264parse ! rtph264pay ! udpsink host=192.168.0.176 port=5000 sync=0

Does anyone know how to solve it? I need it for a vpn provider which supports only ipv6.

1

There are 1 answers

1
Ron Maupin On

When using IPv6 Link-Local addressing, you must include the Zone ID (see RFC 6874). Every IPv6 interface uses the same Link-Local network, so you must use the Zone ID to distinguish the specific interface in the host.

Also, remember that packets with Link-Local addresses cannot leave the link; they cannot be routed or cross a layer-3 device.


You should really use the IPv6 Global addresses, or you could use IPv6 ULA addresses if you do not want the traffic to be able to be used on the public Internet. Remember that IPv6 can have addresses of each type (even multiple addresses of each type) on the same interface.