[FFmpeg-trac] #2547(avformat:new): -muxrate option doesn't work with stream_segment mpegts output

FFmpeg trac at avcodec.org
Thu May 9 18:50:19 CEST 2013


#2547: -muxrate option doesn't work with stream_segment mpegts output
------------------------------------+--------------------------------------
             Reporter:  jettoblack  |                     Type:  defect
               Status:  new         |                 Priority:  important
            Component:  avformat    |                  Version:  git-master
             Keywords:              |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+--------------------------------------
 When I use the -muxrate parameter with the mpegts muxer directly, it works
 fine without any errors and I get the desired muxrate.  But it is not
 working when using the mpegts muxer indirectly via the stream_segment
 muxer (even after patching segment.c to pass the muxrate parameter to the
 mpegts muxer and verifying that the right value was passed - see below).

 Using mpegts muxer directly:
 ffmpeg -i lg4test.ts -map 0:0 -vcodec libx264 -s 640x360 -b:v 1M -minrate
 1M -maxrate 1M -bufsize 500K -muxrate 1.25M -g 60 -profile:v main -map 0:1
 -acodec aac -strict experimental -b:a 128K -ac 2 -ar 48000 -f mpegts -v
 verbose test.ts

 Complete console output attached as: mpegts_output.txt

 Quote from the output:
 [mpegts @ 0x7fc381829c00] muxrate 1250000, pcr every 16 pkts, sdt every
 415, pat/pmt every 83 pkts

 So, that looks good. Next I want to do the same thing when using mpegts
 via the stream_segment muxer.

 First I edited libavformat/segment.c to enable the muxrate option to be
 passed to the muxer specified by -segment_format, via a new option called
 -segment_format_muxrate (see patch attached).  There may be a better way
 to accomplish this, but it works for now.  If you prefer, I can submit
 this patch first to ffmpeg-devel and then inquire about this bug.

 Next, making use of this new option:

 ffmpeg -i lg4test.ts -map 0:0 -vcodec libx264 -s 640x360 -b:v 1M -minrate
 1M -maxrate 1M -bufsize 500K -muxrate 1.25M -g 60 -profile:v main -map 0:1
 -acodec aac -strict experimental -b:a 128K -ac 2 -ar 48000 -f ssegment
 -segment_list test.m3u8 -segment_list_flags +live -segment_time 10
 -segment_format mpegts -segment_format_muxrate 1.25M -segment_time_delta
 1.0 -v verbose test%05d.ts

 Complete console output attached as: ssegment_output.txt

 This message cofirms that the muxrate option was correctly passed to the
 mpegts muxer:
 [mpegts @ 0x7fdff3c16800] muxrate 1250000, pcr every 16 pkts, sdt every
 415, pat/pmt every 83 pkts

 However, as you can see in the console output, I now get this error
 message repeated very often:
 [mpegts @ 0x7fdff3c16800] dts < pcr, TS is invalid
     Last message repeated 58 times

 When this error occurs, I found that the size of each segment file (which
 should be all roughly the same size, since they are all approx. the same
 duration) is actually growing by multiples, e.g.:
 ls -al test0*.ts
 -rw-r--r--  1 jasonlivingston  admin   1657784 May  8 22:39 test00000.ts
 -rw-r--r--  1 jasonlivingston  admin   3273268 May  8 22:39 test00001.ts
 -rw-r--r--  1 jasonlivingston  admin   5023736 May  8 22:39 test00002.ts
 -rw-r--r--  1 jasonlivingston  admin   6452160 May  8 22:39 test00003.ts
 -rw-r--r--  1 jasonlivingston  admin   8077796 May  8 22:39 test00004.ts
 -rw-r--r--  1 jasonlivingston  admin   9741784 May  8 22:39 test00005.ts
 -rw-r--r--  1 jasonlivingston  admin  11516692 May  8 22:39 test00006.ts
 -rw-r--r--  1 jasonlivingston  admin  13087244 May  8 22:39 test00007.ts
 -rw-r--r--  1 jasonlivingston  admin  14500816 May  8 22:39 test00008.ts
 -rw-r--r--  1 jasonlivingston  admin  16241884 May  8 22:39 test00009.ts

 Again, these are all the same duration and same CBR, so they should be
 roughly the same size.

 Any ideas why this works fine for using mpegts directly, but not when
 using mpegts via ssegment?

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2547>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list