[FFmpeg-user] MPEG-TS CBR?

Anjo Krank anjo at krank.net
Tue Apr 3 16:37:58 CEST 2012

Hi Carl,

thanks for your reply! Here's a complete line and the resulting output. There is nothing noteworthy in there, AFAICS. No error messages during running whatsoever.

ffmpeg -i /mvl/412/Office.sd.mpg  -c:v mpeg2video -pix_fmt yuv420p -ec +deblock -vf yadif -r 25 -s 720x576 -b:v 4000k -minrate:v 4000k -maxrate:v 4000k  -bufsize 1000k -g 12 -bf 2 -flags +cgop -flags2 sgop -sc_threshold 1000000000 -streamid:v 0:480 -streamid:a 1:481  -c:a mp2 -ar 48000 -b:a 192k -packetsize 188 -f mpegts -y tst.mpg 

ffmpeg version git-2011-09-16-0f692db Copyright (c) 2000-2012 the FFmpeg developers
  built on Feb 15 2012 13:56:35 with gcc 4.0.1 (Apple Inc. build 5493)
  configuration: --prefix=/Users/ak/sffmpeg/build --datadir=/Users/ak/sffmpeg/build/etc --arch=x86_64 --disable-shared --enable-static --enable-gpl --enable-version3 --enable-nonfree --disable-doc --disable-debug --disable-ffplay --disable-ffserver --disable-avdevice --disable-indevs --disable-outdevs --enable-runtime-cpudetect --enable-memalign-hack --extra-cflags=-I/Users/ak/sffmpeg/build/include --extra-cflags=--static --extra-cflags=-m64 --extra-ldflags=-L/Users/ak/sffmpeg/build/lib --extra-ldflags=-m64 --extra-ldflags=-arch --extra-ldflags=x86_64 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --disable-libspeex --enable-libx264 --disable-libxvid --disable-librtmp
  libavutil      51. 39.100 / 51. 39.100
  libavcodec     54.  1.100 / 54.  1.100
  libavformat    54.  0.100 / 54.  0.100
  libavfilter     2. 62.100 /  2. 62.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, mpeg, from '/mvl/412/Office.sd.mpg':
  Duration: 02:08:29.54, start: 0.357978, bitrate: 31158 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [SAR 32:27 DAR 16:9], 30000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
[buffer @ 0x101100600] w:720 h:480 pixfmt:yuv420p tb:1/1000000 sar:32/27 sws_param:
[yadif @ 0x1011023e0] mode:0 parity:-1 auto_enable:0
[scale @ 0x101101040] w:720 h:480 fmt:yuv420p -> w:720 h:576 fmt:yuv420p flags:0x4
[mpegts @ 0x101810220] muxrate VBR, pcr every 2 pkts, sdt every 200, pat/pmt every 40 pkts
Output #0, mpegts, to 'tst.mpg':
    encoder         : Lavf54.0.100
    Stream #0:0: Video: mpeg2video, yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, 4000 kb/s, 90k tbn, 25 tbc
    Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video -> mpeg2video)
  Stream #0:1 -> #0:1 (mp2 -> mp2)
Press [q] to stop, [?] for help
frame=192740 fps= 28 q=2.0 Lsize= 4281847kB time=02:08:29.56 bitrate=4549.8kbits/s dup=0 drop=38315    
video:3764423kB audio:180694kB global headers:0kB muxing overhead 8.535395%

It's frustrating that I can't give more info about what "rate too low" is actually supposed to mean. The client has a system set up where this is simply an error message and no one can give me any more info :/

The only thing I found was a drop at around 50 secs in:

It's the tiny white line at the left, where throughput drops to 3.5m. The resulting movie files looks totally normal at this location. From mucho googling I had the impression that it could maybe be a wrong setting for the  -bufsize 1000k. Is this on any way calculable or are they simply a bunch of legal settings?

The other thing would have been to set -muxrate to around 4000+128*1.05, which is just low enough to not produce error messages due to underruns. My impression was that this would fill up the stream with NULL packets.

But I haven't really tried that yet because turnaround is ~4 days and I thought maybe someone would have a general idea what might be wrong.

Thanks again, Anjo

Am 03.04.2012 um 10:16 schrieb Carl Eugen Hoyos:

> Anjo Krank <anjo <at> krank.net> writes:
>> From a lot of searching on the web I get the impression that 
>> "real" CBR isn't really possible with ffmpeg or mpeg2 in general.
> Constant frame size does not exist for MPEG-2.
> If you need support here, please post a "real" command line 
> (one that can be copy-pasted into a terminal and works if the 
> input file exists) together with complete, uncut console output.
> Did you try if it works with a program stream?
> Carl Eugen
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user

More information about the ffmpeg-user mailing list