web-dev-qa-db-ja.com

FFMPEGを使用して固定ビットレートを強制する方法

FFMPEG(コマンドライン入力)を使用して、ビデオを特定の出力形式に変換します。私が直面している問題は、一定のビットレート(700 kbps)をFFMPEGに渡そうとすると、異なるビットレート(たとえば1000 kbps)の出力ビデオになります。この現象はすべての動画で常に発生しますが、なぜこれが起こっているのですか?一定のビットレートを維持する必要があります。誰かが私を助けてくれますか?.

私のFFMPEGバージョンは0.5です

FFMPEGに渡すコマンドラインパラメーターは、

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

編集:

次のパラメータを使用すると、+ /-3%の変動でCBRを強制することができました。

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

しかし、パラメーターセットと共に-maxrateおよび-minrateを使用した場合、CBRを強制することができませんでした。私のパラメータセットは次のとおりです。

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

なんでこんなことが起こっているの?

17
user1338254

これを試して:

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

「-strict -2」を必要とするlibfaacの代わりにaacを使用する必要がありました。

また、出力ファイル名に「.mp4」を追加する必要がありました。

"-y"はファイルを上書きするように指示するので、出力ファイル名の横に移動しましたが、あなたがそれを持っている場所でも動作するようです。

私は64ビットOS X 10.8.4でこれを行いました。 ffmpegバージョン1.2.1-tessus。

同じffmpegのバージョンが32ビットと64ビットのlinuxシステムで異なる動作をするのを見てきたので、これがうまくいくかどうかは誰にもわかりません。

12
ox.