[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