[FFmpeg-trac] #8829(undetermined:new): Error writing trailer of udp: Cannot allocate memory
FFmpeg
trac at avcodec.org
Wed Jul 29 10:42:34 EEST 2020
#8829: Error writing trailer of udp: Cannot allocate memory
-------------------------------------+-------------------------------------
Reporter: Przemo1983 | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined |
Keywords: udp cbr | Blocked By:
mpegts mapping |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
I am struggling with mapping a few mpegts inputs (spts) into 1 mpts
output.
I am using ffmpeg version: 4.3.1
I am using following command to send udp data with spts transprot streams:
{{{
ffmpeg -re -stream_loop -1 -i /media/usb/MPTS.ts -map 0:p:1 -c copy -f
mpegts -flush_packets 0
"udp://233.0.0.1:4000?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
-map 0:p:2 -c copy -f mpegts -mpegts_service_id 666
-mpegts_transport_stream_id 888 -mpegts_start_pid 900 -flush_packets 0
"udp://233.0.0.1:4001?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
-map 0:p:3 -c copy -f mpegts -flush_packets 0
"udp://233.0.0.1:4002?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
-map 0:p:4 -c copy -f mpegts -flush_packets 0
"udp://233.0.0.1:4003?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
-map 0:p:5 -c copy -f mpegts -flush_packets 0
"udp://233.0.0.1:4004?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
-map 0:p:6 -c copy -f mpegts -flush_packets 0
"udp://233.0.0.1:4005?pkt_size=1316&ttl=1&fifo_size=1000000&buffer_size=10000000"
}}}
and then I am ussing following command to make an MPTS from those input
SPTS:
{{{
ffmpeg -re -thread_queue_size 256 -i
"udp://233.0.0.1:4005?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4000?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4001?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4002?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4003?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -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"
}}}
And this is working perfectly. Many hours. But there is no CBR UDP output
that I need for another tool.
When I change that command and add "bitrate=40000000" to have CBR UDP
utput then I have memory problem.
{{{
ffmpeg -re -thread_queue_size 256 -i
"udp://233.0.0.1:4005?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4000?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4001?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4002?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4003?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -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&bitrate=40000000"ffmpeg
-re -thread_queue_size 256 -i
"udp://233.0.0.1:4005?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4000?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4001?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4002?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -i
"udp://233.0.0.1:4003?fifo_size=1000000&buffer_size=10000000"
-thread_queue_size 256 -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&bitrate=40000000"
}}}
After a several minutes of playing with many audio cuts, ffmpeg stops and
I see:
{{{
av_interleaved_write_frame(): Cannot allocate memory
Error writing trailer of
udp://239.2.2.2:2222?overrun_nonfatal=1&fifo_size=1000000&buffer_size=10000000&pkt_size=1316&ttl=1&bitrate=40000000.
Cannot allocate memory
}}}
The question is: what to change in my command to have stable CBR UDP
bitrate output with lack of audio cuts?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8829>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list