I am struggling with muxing a few UDP inputs (SPTS from file) in one UDP output (MPTS). When I use following command
ffmpeg -thread_queue_size 2048 -i "udp://233.0.0.1:4005?fifo_size=1000000&buffer_size=10000000" -thread_queue_size 2048 -i "udp://233.0.0.1:4000?fifo_size=1000000&buffer_size=10000000" -thread_queue_size 2048 -i "udp://233.0.0.1:4001?fifo_size=1000000&buffer_size=10000000" -thread_queue_size 2048 -i "udp://233.0.0.1:4002?fifo_size=1000000&buffer_size=10000000" -thread_queue_size 2048 -i "udp://233.0.0.1:4003?fifo_size=1000000&buffer_size=10000000" -thread_queue_size 2048 -i "udp://233.0.0.1:4004?fifo_size=1000000&buffer_size=10000000" -map 0 -map 1 -map 2 -map 3 -map 4 -map 5 -program title=Program0:st=0:st=1 -program title=Program1:st=2:st=3 -program title=Program2:st=4:st=5 -program title=Program3:st=6:st=7 -program title=Program4:st=8:st=9 -program title=Program5:st=10:st=11 -c copy -metadata service_provider=FILE -f mpegts -muxrate 40000000 -flush_packets 0 "udp://239.2.2.2:2222?overrun_nonfatal=1&fifo_size=1000000&buffer_size=10000000&pkt_size=1316&ttl=1"
I can play (with VLC) the MPTS content many hours with no problems.
When I add a bitrate parameter to make UDP output stream as CBR
"udp://239.2.2.2:2222?overrun_nonfatal=1&fifo_size=1000000&buffer_size=10000000&pkt_size=1316&ttl=1&bitrate=40000000"
instead of
"udp://239.2.2.2:2222?overrun_nonfatal=1&fifo_size=1000000&buffer_size=10000000&pkt_size=1316&ttl=1"
a hear many audio cuts, and from VLC I see then:
main warning: timing screwed (drift: -89659 us): stopping resampling
main warning: playback too early (-89367): down-sampling
main warning: playback way too early (-126525): playing silence
main debug: inserting 6073 zeroes
main warning: playback too early (-47858): down-sampling
main warning: timing screwed (drift: -97495 us): stopping resampling
main warning: playback too early (-96807): down-sampling
main warning: playback way too early (-134672): playing silence
main debug: inserting 6464 zeroes
and after some random time (several minutes) ffmpeg stops working due to following error:
av_interleaved_write_frame(): Cannot allocate memory
How to make it work with CBR UDP bitrate?
I tired changing parameters of buffer_size and fifo_size but with no success.
I've increased OS UDP buffers to improve performance but same memory problem is visible