【具体例あり】動画・音声・画像なんでも変換できるFFmpegの紹介と活用例

Mac

こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。

ファイルのサイズやファイル形式をサクッと変換したいと思ったことはありますか。

例えば、ぼくの場合ですと、Macの標準アプリQuickTime Playerで撮影したmov形式の動画ファイルをmp4に変換したいなと思ったことがあります。

動画をはじめとするファイルを簡単に変換するツールにはFFmpegがオススメです。

ファイルの変換をするときによく挙げられる方法として『Webサイトのツールを利用する方法』がありますが、FFmpegを利用すればわざわざWebサイトに動画をアップロードしなくても手元で変換することができます。

今回はFFmpegの紹介と具体的な利用例について説明をしたいと思います。

FFmpegはCUIで操作できるファイル変換ツール

まずはFFmpegについて簡単に説明をします。
FFmpegは動画や音声といったファイルを変換するためのツールで、ターミナルから操作をすることができます。

FFmpegの特徴としては『対応ファイル形式が多い』、『多様な変換オプションが用意されている』などが挙げられます。

FFmpegでできることはたくさんあるのですが、例えば以下のようなことができます。

FFmpegでできること
  • 動画のファイルサイズの圧縮
  • 動画ファイルをGIFアニメーションに変換する
  • 動画の特定の時間だけを切り出す
  • 動画と音声の合成や分離

FFmpegのインストール方法

FFmpegはこちらからダウンロードし、インストールをおこないます。

Macの場合でしたらbrewコマンドでインストール可能です。

$ brew install ffmpeg

FFmpegの基本的な使い方

FFmpegはCUIベースでの操作となります。
基本コマンドは以下のようになります。

$ ffmpeg -i [入力ファイル] [出力ファイル]

例えば、movファイルからmp4ファイルに変換したいのであれば以下のようになります。

$ ffmpeg -i iput.mov output.mp4

FFmpegで用意されているオプションを利用した場合、コマンドは以下のような感じになります。

$ ffmpeg [入力オプション] -i [入力ファイル] [出力オプション] [出力ファイルパス]

FFmpegの活用集

FFmpegでできることを全て説明すると長くなりすぎるので、一例としてぼくの活用例を紹介をしたいと思います。

動画ファイルを圧縮する

-crfオプションを利用することでファイルを圧縮することができます。

圧縮率の数字の目安に関しては以下の記事が参考になります。

CRFスケールの範囲は0〜51です。0は無損失、23はデフォルト、51は可能な限り最低の品質です。通常、値が低いほど品質が高くなり、主観的に妥当な範囲は17〜28です。17または18は視覚的に無損失またはほぼ損失がないと考えてください。入力と同じかほぼ同じに見えるはずですが、技術的に無損失ではありません。
FFmpeg, H.264 エンコーディングガイド

数が大きいほど圧縮率は高いが画質は粗くなるという点を間違えないようにしましょう。
具体的なコマンドは以下のようになります。

$ ffmpeg -i input.mov -crf 23 output-crf23.mov

動画のフレームレートを変更する

フレームレートとは1秒あたりのフレーム数のことです。fpsという単位で表現されます。

フレームレートが少ないほど時間あたりの静止画が少なくなるため、カクカクした動画になります。

例えばMOVファイルから30fpsのMP4を作るのであれば以下のようにします。

$ ffmpeg -i input.mov -r 30 outpt-r30.mp4

ファイルの大きさ(スケール)を変更する

-vfのフィルターオプションでscaleを指定するとファイルの大きさを変更できます。

ブログに貼り付けるには大きすぎる写真を変換するときなどに利用します。(大きすぎる写真はファイルサイズも大きく、記事の読み込みが遅くなる原因になるため。)

例えば、JPEGファイルを320⨉240ピクセルのPNGファイルにする場合は以下のようにします。

$ ffmpeg -i input.jpg -vf scale=320:240 output_320-240.png

もしアスペクト比(縦幅と横幅の比率)を変えたくないという場合は-1を指定します。
例えば横幅800ピクセルでアスペクト比をそのままにするのであれば以下のように指定します。

$ ffmpeg -i input.jpg -vf scale=800:-1 output_800.png

FFmpegによるスケール変更方法の詳細についてはFFmpegの『Scaling』をの項目をご覧になってください。

動画からGIFアニメーションを作成する

今までのオプションを活用した動画からGIFアニメーションへの変換方法について紹介します。

例えば、横幅800ピクセル、フレームレートが20fpsのGIFアニメーションをmovファイルから作成するには以下のようになります。

$ ffmpeg -i input.mov -vf scale=800:-1 -r 20 output_800-r20.gif

まとめ

以上でFFmpegの紹介と利用例について紹介を終わります。

今回は紹介しませんでしたが、FFmpegを利用することで『動画のカット』『動画と音声の合成』『動画の画面のトリミング』など、より複雑な変換もできてしまいます。

個人的なFFmpegの使い方としてはあくまで簡単なファイル変換のみです。
細かな動画の編集が必要なときはFFmpegではなく、iMovieのような動画編集ツールを利用しています。

サクッとファイルを変換したいというときはぜひFFmpegを利用してみてはいかがでしょうか。

この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!`