Bozhidar Tonchev
Bozhidar Tonchev

Reputation: 111

GStreamer v1.0 UDP Multicast streaming not properly decoded if client starts after server

I am trying to make UDP Multicast screen streaming using GStreamer. My screen casting server should run on Windows and my client should run on Linux.

If I start the client before the server, everything is fine.

The problem is when I start the client and the server had already been launched. The video is received, but it is terribly distorted.

This is the result.

Server:

gst-launch-1.0 -e gdiscreencapsrc ! queue ! video/x-raw, framerate=25/1 ! videoconvert ! \
       x264enc noise-reduction=10000 tune=zerolatency bitrate=2500  speed-preset="fast" byte-stream=true threads=4 key-int-max=15 intra-refresh=true ! \
             h264parse ! rtph264pay config-interval=1 \
       ! udpsink host=224.1.1.1 port=5000 auto-multicast=true

Client:

gst-launch-1.0 -v udpsrc multicast-group=224.1.1.1 auto-multicast=true port=5000 ! application/x-rtp  ! rtph264depay ! h264parse ! queue ! decodebin ! videoconvert ! autovideosink caps='video/x-raw, format=RGB'

I have already tried using dx9screencapsrc, but the behaviour is the same. The issue is fixed only if I replace gdiscreencapsrc with videotestsrc.

If I launch the server on Linux, using ximagesrc, I still have some issues, but the video is improving over time.

Any help would be appreciated!

Upvotes: 2

Views: 6547

Answers (1)

Bozhidar Tonchev
Bozhidar Tonchev

Reputation: 111

Adding cabac=false to my x264enc element fixed the ussue.

gst-launch-1.0 -v gdiscreencapsrc ! queue ! video/x-raw,framerate=60/1 ! decodebin ! videoscale ! videoconvert ! \
       x264enc cabac=false tune=zerolatency bitrate=4000  speed-preset="fast" ! \
             h264parse ! rtph264pay config-interval=-1 \
       ! udpsink host=224.1.1.1 port=5000 auto-multicast=true sync=false

Upvotes: 2

Related Questions