Ffmpegを使用してh264/aacビデオファイルをxvid/mp3ファイルに変換し、超安価なメディアプレーヤーで再生できるようにしようとしています。
現時点では、変換されたビデオファイルは元のmp4の2倍のサイズです。品質をあまり落とさずにファイルサイズを小さくする方法はありますか? -qmin 1に落としても、かなりひどいです!
私が使用しているコマンドは
ffmpeg -i input.mp4 -vcodec libxvid -sameq -acodec libmp3lame -ab 128k -ac 2 output.avi
そしてffmpegの出力は
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4'
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
Duration: 01:34:27.69, start: 0.000000, bitrate: 1520 kb/s
Stream #0.0(und): Video: h264, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 1387 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
Output #0, avi, to 'output.avi':
Metadata:
ISFT : Lavf52.64.2
Stream #0.0(und): Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0.1(und): Audio: libmp3lame, 48000 Hz, stereo, s16, 128 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
メディアプレーヤーが処理できるものに応じて、フレームサイズを小さくすることができます。 1280x720で始まる場合は、640x360に減らします。これにより、品質を変更せずにビデオのビットレートを3/4に減らすことができ、小さいビデオプレーヤーはとにかく幅640ピクセルしか表示しません。
コメントで前に述べたように、h.264はxvidよりも優れた(圧縮のように)コーデックであるため、他のすべての条件(品質、フレームサイズ、フレームレートなど)が等しい場合、xvidは常に大きなファイルを生成します。 xvidの利点は、h.264よりもCPUの負荷が少ないことです。そのため、安価なメディアプレーヤーで使用できます。
適切な例として、元のxbox(733 MHzで実行されているPIIIアーキテクチャのCPUを搭載)上のXBMCは、コーデックが十分に軽量で非常に特殊なフラグを備えている場合にのみ、720pHDコンテンツの再生を強制できます。 SD解像度でもh.264は通常、貧弱な古いPIIIには多すぎるため、これは通常xvidでした。 SD解像度では、一般的に許容されるQ45分のテレビ番組の重量は約350Mbですが、h.264ではその約半分になります。
最善の策として、ビデオをデバイスと同じ解像度に再コーディングします(ただし、品質は維持します)。そうすれば、再生時にダウンスケールされるだけの画像の帯域幅を無駄にすることはありません。 -任意の方向の解像度を半分にすると(上記のように1280x720-> 640x360など)、必要な帯域幅(および結果のファイルサイズ)が1/4に減少します。