【FFmpeg】静止画を動画に変換する、動画を軽くする

CG一般

jpgやpngをそのままmp4に変換したいとか、編集ソフトを経由せずにmp4を軽くしたいと思ったことはありませんか?ビジュアライゼーション関連だと、下記のような状況が想定されます。

  • Twinmotionで書き出した動画はビットレートが非常に高いので、Oculusでスムーズに視聴するためにビットレートを落としたい
  • VR360度パノラマ画像を書き出したが、YouTubeやEZ360等、動画のみ対応のサービスにアップロードするためにファイルサイズを抑えて動画に変換したい

Adobe AfterEffectsやPreiere Proを使えばできるのですが、画質が思うようにいかなかったり、ファイルサイズが無駄に大きくなってしまったり、きちんとした調整は意外と困難です。ここでは、FFmpegという便利なツールを紹介します。

FFmpegとは

FFmpegはコマンドプロンプトから動画の変換などを行うことができるフリーソフトです。まずは公式サイトからダウンロード&インストールしてください。インストールの仕方はこちらの「新卒エンジニアの開発日記」さんの記事がとても参考になります。

コマンドプロンプトの準備

ここではWindows10環境で話をします。まずはショートカットWindows+Rで「ファイル名を指定して実行」の画面が出てくるので、”cmd”と入力して”OK”してください。

下記のような黒い画面が表示されますので、ここでコマンド入力することができます。

まずは変換したいファイルがある場所に移動します。下記のようにコマンドを入力してEnterを押します。

cd+半角スペース+ファイルがある場所のパス

これで準備完了です。ちなみに、コマンドプロンプト上ではファイル名にスペースが入っていると正常に動きませんので注意。特にTwinmotionでは、デフォルトで”Clip 01.mp4″などスペースが入ったファイル名で生成されるので、その場合はリネームしておいてください。

コマンド例

VR視聴という観点から、よく使うコマンド例を記載します。ファイル名の部分以外はコピペで実行すればOKです。

1枚の.png静止画を10秒間の.mp4動画に変換する

ffmpeg -r 0.1 -i image.png -vcodec libx264 -pix_fmt yuv420p -r 1 movie.mp4

image.png、movie.mp4の部分は任意のファイル名に変更してください。これで高画質かつ低ファイルサイズ(数MB程度)の動画をつくることが可能です。ソースのpngファイルを0.1fpsで読み込んで、1fpsのmp4(h.264)を書き出すという操作をしています。

動画の横解像度を5760pxに変換する(アスペクト比は保持)

ffmpeg -i input.mp4 -vf scale=5760:-1 output.mp4

input.mp4、output.mp4の部分は任意のファイル名に変更してください。5760の部分は、任意の解像度を設定できます。サービスごとに推奨解像度が記載されていたりするので、確認してください。

ビットレートを20Mbpsまで落としたい

ffmpeg -i input.mp4 -b 20M output.mp4

input.mp4、output.mp4の部分は任意のファイル名に変更してください。 20Mの部分は、任意のビットレートを設定できます。サービスごとに推奨ビットレートが記載されていたりするので、確認してください。

以上.

タイトルとURLをコピーしました