21
votes

I use FFMPEG (command line Input) to convert my videos to a specific output format. The problem I am facing is when I try to pass a constant bit rate(700 kbps) to FFMPEG, the result is an output video with a different bit rate(say 1000 kbps). This phenomenon occurs invariably for all videos.Why is this happening? I need to maintain a constant bit rate. Can anyone help me out.

My FFMPEG version is 0.5

The command line parameter which I am passing to FFMPEG is,

-i {inputfile}
-b 700k -ab 64k
-vcodec libx264
-acodec libfaac -ac 2 -ar 44100
-y -s 320x240 
{outputfile}

EDIT:

I was able to force CBR with a fluctuation of +/- 3% when I used the following parameters.

 ffmpeg -i myfile.avi
-b 4000k -minrate 4000k 
-maxrate 4000k -bufsize 1835k   out.m2v

But when I used -maxrate and - minrate along with my parameter set I was not able to force CBR. My parameter set is as follows,

-i {inputfile}
-b 1200k -minrate 1200k 
-maxrate 1200k -bufsize 1200k 
-ab 64k -vcodec libx264
-acodec libfaac -ac 2 -ar 44100
-y -s 320x240 
 {outputfile}

Why is this happening?

1

1 Answers

15
votes

Try this:

ffmpeg 
-i input 
-b 1200k 
-minrate 1200k 
-maxrate 1200k 
-bufsize 1200k 
-ab 64k 
-vcodec libx264 
-acodec aac -strict -2 
-ac 2 
-ar 44100 
-s 320x240 
-y output.mp4

Had to use aac instead of libfaac, which requires "-strict -2".

Also had to add ".mp4" to output file name.

I moved the "-y" next to the output file name since it tells it to overwrite the file, but it seemed to work where you had it too.

I did this on 64 bit OS X 10.8.4; ffmpeg version 1.2.1-tessus.

I have seen the same ffmpeg version work differently on 32 bit and 64 bit linux systems, so who knows if this will work for you.