[FFmpeg-user] Reducing end to end streaming latency (bmd->udp->bmd) < 0.5s

Anusha Balan Anusha.Balan at intusurg.com
Fri Mar 21 03:25:59 CET 2014


I am trying to achieve a streaming latency of around 300ms (end to end) using a dedicated Gigabit Ethernet LAN of 1080i @ 30fps. When I run bmon on linux box based streaming side, it clearly shows that I am using only 1Mbps. Also, another prime source of delay is the receipt of first I-frame on recieving end.

I have read the streaming guide and I am trying to incorporate almost everything mentioned there but I am not sure if I am even
headed in a direction where this will be possible. What is the minimum latency achieved so far?

I managed only about 1.5 - 2s which is extremely high for the interactive application for which I intend to use this.

>From this article, it seems feasible that with a dedicated and powerful what I mentioned above is possible. (Given it was 2010, when it was written)

This is what I am doing at the moment.

Streaming Side (On Ubuntu 12.04)

./bmdcapture -C0 -m11 -V4 -v -F nut -f pipe:1  | ffmpeg -i - -vcodec libx264 -preset ultrafast -crf 22 -pix_fmt yuv420p -tune zerolatency -threads 8 -keyint_min 5 -maxrate 800000 -bufsize 26666 -intra-refresh 1 -f mpegts udp://

Receiving Side (Tested on Ubuntu 12.04 and Windows 7)

ffmpeg -i udp:// -probesize 100 -analyzeduration 50 -f decklink -s 1920x1080 -fflags nobuffer -r 30000/1001 -g 10 -pix_fmt uyvy422 -an "DeckLink 4K Extreme"

Is there any parameters I am actually feeding in wrong? Isn't bufsize = maxrate / framerate? Is there anything I can do to make this come down to less than 0.5s?

Could really use some expert advice.

More information about the ffmpeg-user mailing list