<div dir="ltr">So I got rid of the identity element in the sender, set the udpsink to sync and increased the send and receive kernel buffers, but that only helps for about 25 to 30 seconds. For those first seconds the playback is the correct speed at 50 frames, after which it seems to slow down to half speed again. I also observed that the framerate for the video after depayload is set to 0/1, which means it is not constant. Could there be a connection to the slowdown?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Sa., 10. Dez. 2022 um 12:55 Uhr schrieb Tim-Philipp Müller via gstreamer-devel <<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, 2022-12-09 at 12:47 +0100, Chris Gerdener via gstreamer-devel<br>
wrote:<br>
<br>
Hi Chris,<br>
<br>
> For a university project, I am trying to use gstreamer to stream<br>
> uncompressed video. But while doing local testing, my receiver is too<br>
> slow, the video output from that is like half-speed or quarter-<br>
> speed  slow motion. Here are my pipelines for send and receive.<br>
> <br>
> sender:<br>
> <br>
> gst-launch-1.0 -v  filesrc<br>
> location=/Users/chris/Desktop/folder/test_uncompressed.mov ! qtdemux<br>
> ! queue ! videoconvert ! videorate ! rtpvrawpay ! identity silent=0 !<br>
> udpsink host=127.0.0.1 port=5678 sync=false async=false<br>
<br>
- you don't really need the videorate here, but it also doesn't hurt of<br>
course.<br>
<br>
- remove the identity element between the payloader and the udpsink, as<br>
it will prevent use of "buffer lists" between the two elements (makes<br>
things less efficient)<br>
<br>
- could try rtpvrawpay chunks-per-frame=20 (play with values)<br>
<br>
- most importantly, set udpsink sync=true, otherwise you'll flood the<br>
udp send buffer with data faster than realtime (since you're reading<br>
from a file) and data will just get dropped/overwritten before the<br>
kernal had a chance to send it out<br>
<br>
- make sure to configure large kernel send/receive buffer sizes with<br>
e.g. sudo sysctl net.core.wmem_max=8388608 net.core.rmem_max=8388608<br>
and then also set udpsink buffer-size=8388608 and udpsrc buffer-<br>
size=8388608<br>
<br>
<br>
> receiver:<br>
> <br>
> gst-launch-1.0 udpsrc port=5678 caps = "application/x-rtp,<br>
> media=(string)video, clock-rate=(int)90000, encoding-<br>
> name=(string)RAW, sampling=(string)YCbCr-4:2:2, depth=(string)10,<br>
> width=(string)1920, height=(string)1080, colorimetry=(string)BT709-2,<br>
> payload=(int)96, framerate=(fraction)50/1" ! rtpjitterbuffer ! queue<br>
> ! rtpvrawdepay ! queue ! videoconvert !  queue ! glimagesink  -v<br>
<br>
- make sure to configure large kernel send/receive buffer sizes with<br>
e.g. sudo sysctl net.core.wmem_max=8388608 net.core.rmem_max=8388608<br>
and then also set udpsrc buffer-size=8388608<br>
<br>
Cheers<br>
 Tim<br>
<br>
</blockquote></div>