何があった
ハンディカムで撮った動画をスライドに乗せることになったのだけど、22MBはちょっと大きいのでサイズ縮小のためにやったこといろいろをメモ
まずは動画の情報を確認
いろいろやるにしてもまずは動画の情報が無いと不便です
ということで
$ffmpeg -i source.MTS
で入力ファイルのみを与えると、ファイルの情報を吐き出してエラーで終了します。
エラーと言っても出力ファイルを指定しろというエラーなので別になんの問題も無いです。
これ以降の処理はこれを使って情報見てオプション与えたり本当にうまくいってるのか確認したりします。
何はともあれaviにする
ハンディカムからコピーしたファイルの拡張子が.MTSなのでaviにする。
aviにするのはターゲット環境がwindowsだから。
コマンドは
$ffmpeg -i source.MTS output.avi
出力ファイルの拡張子を指定すれば勝手にやってくれます。
基本的に
これ以降はオプションのみを書いていきます。
最後に結局どういうコマンドになったのかは乗せます。
ビデオストリームのみにする
ビデオストリーム以外にも音声ストリームや字幕ストリームなどがついてきたのですが、今回は動画だけでいいのでサイズの肥やしはカット。
今回はストリームの0番がビデオストリームだったので
-map 0:0
でOK.
動画の時間を切り詰める
動画の頭とおしりの余分な部分を切り取ります.truncateってやつですね。
今回は開始12秒時点から20秒間の間を残します。
ということで追加するオプションは
-ss "00:00:12" -t "00:00:20"
で-ssが開始時刻で、-tが長さです。
http://quickhowto.blogspot.jp/2011/02/how-to-truncate-video-using-command.html
動画の解像度を下げる
動画が1440x1080っていう結構でかいサイズなんですが、プロジェクターに写したらそんなに解像度あってもしょうがないので、640x480のVGAサイズに落とします
-s 640x480
コーデックを指定
ここがすごい大事。いろいろやってサイズ削減しても結局再生できないんじゃ意味無いですからね。
まずは使用可能なコーデックに何があるかを調べます。
$ffmpeg -encoders | grep V
今回はビデオエンコーダだけ知りたいのでこれで。
無難にmpeg4あたりでしょうか。
ということで追加するオプションは
-c mpeg4
ブロックノイズがひどい・・・。動画のサイズを800x600にしてもいいかもしれません。
まとめると
こちらのコマンドになります。
ffmpeg -i source.MTS -map 0:0 -c mpeg4 -ss "00:00:12" -t "00:00:20" -s 640x480 output.avi
感想
なんとか1Mには収まったけどブロックノイズが・・・。
追記
素直にmp4にしてコーデック指定を切った方がいいかも。少なくとも、macではmp4じゃないと再生デキないみたいです。