[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