動画や音声ファイルの形式をコマンドで変換する方法(FFmpeg)

動画や音声ファイルの形式をコマンドで変換する方法(FFmpeg)

パソコンで動画ファイルの形式(フォーマット)を変換したりといった加工を行いたい場合、グラフィカルなアプリを使うのが一般的ですが、定型的な加工処理を行うことが多ときなどは、グラフィカルなアプリよりもコマンドラインツールの方が使い勝手が良い場合があります。

そこでここでは、Windows環境で動画や音声の形式変換などの加工処理ができるコマンドラインツールの定番「FFmpeg」の使い方を紹介します。

FFmpegとは

FFmpeg

FFmpegは、音声・動画の録画や変換といった加工処理ができるツールやライブラリから構成されるオープンソースのマルチメディアフレームワークで、音声や動画を扱うさまざまなサービスやソフトの内部でも使用されており、単体のコマンドラインツールとしても利用できます。

FFmpegでは、主要な音声や動画形式を幅広くサポートしており、コマンド操作で音声ファイルや動画ファイルにさまざまな加工処理を行うことができます。

  • 動画や音声の形式(フォーマット)変換
  • 動画のコンテナ形式の変換
  • 動画品質の変更(フレームレートやビットレートの変更)
  • 映像と音声の結合
  • 動画から音声データの取り出し
  • 動画のトリミングやクロップ
  • 動画の結合・分割
  • 動画の再生速度の変更
  • 動画に字幕を埋め込む など

FFmpegの使い方

ここからは、WindowsにFFmpegをインストールする方法や、FFmpegの基本的な使用例を紹介します。

FFmpegのインストール

Windows環境にFFmpegをインストールする場合、公式サイト経由で必要なプログラムを自分でダウンロードするという方法が一般的な方法でしたが、現在のWindows 10や11なら、標準搭載されているコマンドベースのパッケージマネージャー「winget」を使うことで、簡単にインストールできます。

wingetでFFmpegをインストールするときは、コマンドプロンプトやPowerShell(ターミナル)を起動して、以下のコマンドを実行します。

インストール場所を指定しない場合は「-l」オプションの指定は不要です。

> winget install ffmpeg -l "インストール場所"

動画や音声ファイルの形式をコマンドで変換する方法(FFmpeg)

FFmpegをアップデートしたいときは、以下のようにコマンドを実行します。

> winget upgrade ffmpeg

なお、wingetコマンドでインストールしたアプリは、一般的なアプリと同じようにWindowsの「設定」>「アプリ」からアンインストールできます。(wingetコマンドでアンインストールすることもできます。)

動画や音声ファイルの変換

FFmpegでは、入力ファイルと出力ファイルを指定すれば、ファイルの拡張子から種類を自動判定して処理してくれます。

たとえば、FLV形式の動画ファイルをMP4形式へ変換したいときは、以下のようにシンプルな記述で簡単に変換できます。

> ffmpeg -i input.flv output.mp4

音声ファイルの形式変換もできます。

> ffmpeg -i input.wav output.flac

以下のように音声や動画のコーデックを指定して変換することもできます。

> ffmpeg -i input.mkv -vcodec libx264 -acodec libfaac output.mp4

使用できるコーデックは、以下のコマンドで確認できます。

> ffmpeg -codecs

また、動画や音声データを再エンコードすることなく(無劣化で)、コンテナ形式だけを変換することもできます。

> ffmpeg -i input.mp4 -c copy output.mkv

動画のトリミング

動画ファイルの特定の時間帯を切り出すことも可能です。

> ffmpeg -i input.mp4 -ss [開始位置(秒数)] -t [切り出す秒数] -c copy output.mp4

たとえば、動画の30秒の位置から10秒間を切り出したいときは、以下のように実行します。

> ffmpeg -i input.mp4 -ss 00:00:30.0 -t 00:00:10.0 -c copy output.mp4

動画のクロップ

動画ファイルの特定の画面領域を切り出すこと(クロップ)もできます。

> ffmpeg -i input.mp4 -vf crop=x=[切り取りを開始するx座標]:y=[切り取りを開始するy座標]:w=[切り取る範囲の幅]:h=[切り取る範囲の高さ] output.mp4

たとえば、動画の左上からX座標100px、Y座標50pxの位置を起点にして、幅200px高さ150pxの領域を切り出す場合は、以下のように実行します。

> ffmpeg -i input.mp4 -vf crop=x=100:y=50:w=200:h=150 output.mp4

動画から画像を切り出す

動画の特定フレームを画像ファイルとして切り出すこともできます。

> ffmpeg -i input.mp4 -ss [切り出し位置(秒数)] -vframes 1 output.jpg

動画から音声を取り出す

動画ファイルから、音声データだけを取り出すこともできます。

たとえば、音声データだけをWAV形式で取り出す場合は、以下のように実行します。

> ffmpeg -i input.mp4 -acodec pcm_s16le output.wav

ビットレート192kbpsのMP3形式で取り出す場合は、以下のように実行します。

> ffmpeg -i input.flv -vn -ar 44100 -ac 2 -ab 192 -acodec libmp3lame output.mp3

また、動画ファイル内の音声データの形式を確認してから、同じ形式で取り出せば、再エンコードせずに(無劣化で)取り出すこともできます。

> ffmpeg -i input.mp4
> ffmpeg -i input.mp4 -acodec copy output.xxx

あとがき

たくさんの動画や音声ファイルに定型的な加工処理を行うことが多い場合に、加工ツールを毎回起動して処理するのが面倒だなぁと感じているなら、FFmpegを使って加工処理をスクリプト化(バッチファイル化)しておくのがおすすめです。