ffmpegコマンドで動画を変換しファイルサイズを縮小

前回の記事で「「LPICレベル2 v4.0差分問題集」Kindle版のサンプル動画(再生時間約2分)をアップしました。
動画はAndorid4.4のScreen recording機能を使って録画したのですが、ファイルサイズが約55MBと大きかったので、これをffmpegコマンドで変換し、ファイルサイズを約7.6MBに縮小しました。以下、Scientific Linux 6.4のffmpeg バージョン0.6.5での実行例です。

1) Screen recordingで生成したMP4コンテナ kindle-v4.0supplement.mp4 の動画情報を表示

$ ls -lh kindle-v4.0supplement.mp4
-rw-r--r-- 1 user01 user01 55M 10月 8 17:11 2014 kindle-v4.0supplement.mp4

$ ffprobe kindle-v4.0supplement.mp4 2>&1 |tail -2
Duration: 00:02:07.91, start: 0.000000, bitrate: 3541 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 1080x1920, 3540 kb/s, PAR 65536:65536 DAR 9:16, 12.79 fps, 90k tbr, 90k tbn, 180k tbc

[ ビットレート:3541 kb/s、ビデオコーデック:h264、解像度:1080x1920、フレームレート:12.79 fps ]

2) kindle-v4.0supplement.mp4を変換、サイズ縮小

$ ffmpeg -i kindle-v4.0supplement.mp4 -f mp4 -vcodec libx264 -vpre medium -vb 512k kindle-v4.0supplement-small.mp4

オプション:
-i 入力ファイルの指定、-f コンテナフォーマットの指定、-vcodec ビデオコーデックの指定、-vpre ビデオプリセットの指定、-vb ビデオビットレートの指定

・「man ffmpeg」でオンラインマニュアルを参照
・「ffmpeg -h」でオプションの一覧を表示
・「ffmpeg -formats」でコンテナフォーマットの一覧を表示(D:デコード可、E:エンコード可)
・「ffmpeg -codecs」でコーデックの一覧を表示(D:デコード可、E:エンコード可)
・「-vpre medium」と指定すると、プリセットファイル /usr/share/ffmpeg/libx264-medium.ffpreset が参照される
 プリセットファイルは、速度、品質、ファイルサイズに関係するパラメータを指定する
・この例では音声(audio)は無しだが、音声コーデックは-acodec、音声ビットレートは-ab オプションで指定できる

3) 新しく作成したファイル kindle-v4.0supplement-small.mp4の動画情報を表示

$ ls -lh kindle-v4.0supplement-small.mp4
-rw-rw-r-- 2 user01 user01 7.6M 10月 12 22:35 2014 kindle-v4.0supplement-small.mp4

$ ffprobe kindle-v4.0supplement-small.mp4 2>&1 |tail -2
Duration: 00:02:03.74, start: 0.000000, bitrate: 513 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 1080x1920 [PAR 1:1 DAR 9:16], 511 kb/s, 13.22 fps, 90k tbr, 180k tbn, 180k tbc

[ ビットレート:513 kb/s、ビデオコーデック:h264、解像度:1080x1920、フレームレート:13.22 fps ]

[参考]
・コンテナフォーマット: ウィキペディア
さまざまな種類のデータや標準的なデータ圧縮方法を使って圧縮したデータを保持できるファイルフォーマット。
コンテナフォーマットの例:MP4, Webm、Ogg, ...
MP4の拡張子は.mp4、Webmの拡張子は.webm、Oggの共通の拡張子はogg → .ogx、動画の拡張子は.ogv、音声の拡張子は.oga。

・コーデック: ウィキペディア
符号化方式を使ってデータのエンコード(符号化)とデコード(復号)を双方向にできる装置、ソフトウェア、アルゴリズムのこと。coder/decoderの略語。
コーデックの例:H.264(MPEG-4 AVCと同じ), MPEG-1, MPEG-2, MPEG-4, ...

・フレームレート:
1秒当たりの静止画(フレーム)の数。単位はfps。

・ビットレート:
1秒当たりのデータ量。
今回は、ffmpegのオプションで「-vb 512k」と指定し、元ファイルのビットレート 3541 kb/s → 変換後のビットレート 513 kb/s としてファイルサイズを小さくした。