[Libav-user] "Circular buffer overrun" error when reading UDP stream
Adi Shavit
adishavit at gmail.com
Tue Jul 30 08:37:50 CEST 2013
Hi Alex,
> See http://ffmpeg.gusari.org/viewtopic.php?f=12&t=624. For ffmpeg
> command line, you can specify the UDP buffer size in the URL, e.g.
> udp://localhost:5002?fifo_size=1000000.
Thanks. I did actually see this post, though I get errors from the
overrun_nonfatal argument.
>
> Buy if you get this message because you followed my advice about max
> 15 FPS, you are doing something wrong on your side: you should pull
> the buffers faster.
Yes, I'm dropping frames where I can to decrease fps (though not as
you suggested (yet)).
But I'm decoding multiple streams simultaneously so my CPU is pretty stressed.
I don't use any sleep because I actually prefer processing frames early.
I also don't mind dropped frames in case of processing lag.
> Did you add a sleep in the decoder loop? If your
> client is at 100% CPU utilization, faster settings for h264 decoder
> may help.
What settings are those?
>
> The only "legitimate" case when increase of the fifo size may really
> be the correct solution, is a slow, unreliable network. In such case,
> UDP packets may arrive significantly out of order, and nothing but
> fifo size will compensate that.
ok...
>
> Note that overrun_nonfatal will break the video output. If the network
> is very bad, and you have IDR frames sent often enough, or if you use
> an intra-refresh stream.
Sorry, I don't understand what this means.
Basically, my requirements are as follows:
1. Decode multiple video streams simultaneously from a single MTP stream.
2. I do not display the frames, only process the pixels.
3. I'm not very sensitive about dropped frames.
4. I prefer to process the frames as early as possible, even before
they would have been displayed in "playing-time".
If the UDP network stream is bad, then just wait until you get some
proper packets/frames.
Thanks,
Adi
More information about the Libav-user
mailing list