【一番分かり易い】ffmpeg のダウンロードと使い方

当ページのリンクには広告が含まれています。

データ分析において、動画からの情報を活用するケースがますます増えています。顔認識、感情分析、物体検知、音声認識など、AI開発の領域でも動画からのデータが重要な要素となっています。こうした場面で、動画から抽出した画像や音声が貴重な学習データとして活用されることが少なくありません。

そして、動画から簡単に画像や音声を抽出できるツールとしてffmpegがあります。

ffmpegは無料の動画編集ツールでありながら、数多くの機能があり、非常に強力なツールですが、コマンドラインであるために少々わかりにくいといった弱点もあります。そこで、今回はffmpegのダウンロードとインストール、そして動画からデータ分析をするために役立つffmpegの機能について紹介したいと思います。

目次

ffmpeg とは

ffmpeg(Fast Forward MPEG)は、オープンソースのマルチメディアフレームワークであり、動画と音声の処理、変換、編集において世界的に使用されています。異なるメディアフォーマットやコーデックに対応し、高品質なメディアのエンコード・デコードを行うことが可能です。また、単純なコマンドラインツールとして提供されるため、プログラマーやデータ分析の専門家から広く愛用されています。

主な機能用途
動画の変換とエンコード異なるフォーマットへの変換、再生可能形式へのエンコード
音声の変換と編集音声ファイルの変換、クリップ作成
画像と動画から情報抽出画像抽出、フレームごとの情報取得
フィルタリングとエフェクト映像と音声にフィルターやエフェクトを適用

尚、ffmpeg の詳しい情報については ffmpeg 公式サイトに記載されているので、合わせてご一読下さい。

ffmpeg に含まれる3つの機能

ffmpeg をダウンロードすると、以下の3つのファイルが同梱されています。

ファイル名特徴
ffmpeg動画と音声の変換、エンコード、フィルタリング、エフェクトなどの
メディア処理を行うコマンドラインツール。
ffprobeメディアファイルの情報を表示し、解析するためのユーティリティ。
メディアファイルのプロパティやストリーム情報を詳細に分析できる。
ffplayメディアファイルの再生を行うシンプルなメディアプレイヤー。
シークやループ、スローモーション再生などの機能を提供する。

ダウンロード方法

ffmpeg は 以下の公式サイトからダウンロードできます。

GitHub
Releases · BtbN/FFmpeg-Builds Contribute to BtbN/FFmpeg-Builds development by creating an account on GitHub.

上記のURLに移動すると下記の画面が表示されます。ここから

  ffmpeg-master-latest-win64-gpl.zip

を選択してダウンロードして下さい。

インストール方法

ダウンロードした ffmpeg-master-latest-win64-gpl.zip  はZIP形式の圧縮ファイルなので、解凍が必要です。

解凍したら、ffmpeg.exe (必要なら残り2つも)を任意のフォルダにコピーして下さい。例えばCドライブ直下、又は 「Program Files」直下、あるいは 「C:\Users\ユーザー名」直下 に 「bin」 フォルダごとコピーして、「bin」を「ffmpeg」に変更するなどして下さい。

次に必要に応じて環境変数に登録します。

Windows11の画面下端にある検索窓から 次のコマンドを入力し、エンターキーを押します。

sysdm.cpl

システムのプロパティが表示されるので、「①詳細設定」⇒「②環境変数」⇒「③Path」⇒「④編集」⇒「⑤新規」⇒「⑥」でffmpg.exeを入れたフォルダのパスを入力し、「⑦OK」ボタンをクリックします。

使い方

ffmpeg には数多くのオプションがありますが、多くの場合は入力ファイルと出力ファイルの拡張子から行いたい処理を判断してくれるため、非常に簡単に扱うことが出来ます。

コマンドとオプション

<基本コマンド>

動画⇒画像ffmpeg -i 入力ファイル 出力ファイル(拡張子:画像)
動画⇒音声ffmpeg -i 入力ファイル 出力ファイル(拡張子:音声)
画像⇒動画ffmpeg -i 入力ファイル(拡張子:画像) -i 音声入力ファイル 出力ファイル
動画変換ffmpeg -i 入力ファイル 出力ファイル
画像反転ffmpeg -i 入力ファイル -vf vflip,hflip  出力ファイル
動画分割ffmpeg -i 入力ファイル -f segment -reset_timestamps 1 -c copy
    -segment_time 秒数  出力ファイル
動画結合ffmpeg -f concat -i 動画リストファイル -c copy 出力ファイル
クロップffmpeg -i 入力ファイル
   -vf crop=x=x始点:y=y始点:w=横サイズ:h=縦サイズ  出力ファイル

<範囲の指定>

役割オプション説明
先頭からの開始位置-ss ファイルの先頭をから、指定した秒数だけ処理を飛ばします。
省略時はファイルの先頭から処理されます。
例:-ss 20 ⇒ファイル先頭から20秒後に処理を開始
切り出し時間-t-ss で指定した開始位置から、-t で指定した秒数だけ
処理を行います。
省略時はファイルの最後まで処理されます。
例:-t 50 ⇒処理を開始してから50秒後に処理を終了
切り出し終了時刻-to-to で指定で指定した時刻(hh:mm:ss)で処理を終了します。
省略時はファイルの最後まで処理されます。
例:ファイルの先頭から10分30秒で処理を終了する場合
  -to 00:10:30 

<フレームレートの指定>

役割オプション説明
フレームレートの指定-rフレームレートを指定します。入力ファイルより小さい値
を指定した場合、間の画像は間引かれ、逆に大きい場合は
間の画像が補完されます。

動画から画像の切り出す

動画ファイルから、開始時間から指定した秒数だけ画像を切り出します。

 ffmpeg -i 入力ファイル -q:v 1  出力ファイル(拡張子:画像)

  • 出力ファイル名の拡張子(.jpg,.png,.bmp)に応じた画像フォーマットで出力されます。
  • 出力ファイルには %06d.jpg のように書式を指定する必要があります。
  • -q:v 1 は jpg 画像の品質を指定するオプションで、これを指定しないと画質が劣化します。bmp やpngの場合は指定せずとも画質の劣化はありません。
  • 同じファイル名が存在する場合、その画像の切り出しは行わず、次に進みます。

下記のコマンドを実行すると、resフォルダに最高画質のJPGファイルが "Game_000001_img.jpg","Game_000002_img.jpg2",・・・ という名前で出力されます。

ffmpeg -i ゲーム大会.mp4 -q:v 1 res/Game_%06d_img.jpg

フォルダとファイルの間の区切り文字(res/Game_%06d_img.jpg)に '/' を指定していますが、もちろんWindows標準の \ で区切ることも可能です。

動画から音声を切り出す

動画ファイルから、開始時間から終了時間までの音声を切り出します。

 ffmpeg -i 入力ファイル  出力ファイル(拡張子:音声)

  • 出力ファイル名の拡張子(.wav,.mp3,.aac,.wma)に応じた音声フォーマットで出力されます。

下記のコマンドを実行すると、wav形式の音声ファイルが出力されます。

ffmpeg -i ゲーム大会.mp4 ゲーム大会_音声.wav

 

画像から動画を作成する

画像ファイルを結合して動画を作成します

ffmpeg -i 入力ファイル(拡張子:画像) -i 音声入力ファイル  出力ファイル

  • 入力ファイル(画像)は %06d.jpg のように書式を指定する必要があります。
  • 出力ファイル名の拡張子(.avi,.mp4,.wmv,mov)に応じた音声フォーマットで出力されます。
  • 音声ファイルに動画を指定すると、その動画から音声を取り出してくれます。
  • 音声ファイルを指定しない場合、音声無しの動画が作成されます。

次のコマンドを実行すると、res フォルダに保存されている画像と、ゲーム大会.MP4 の音声を使って、動画を作成します。

ffmpeg -i res/Game_%06d_img.bmp -i ゲーム大会.MP4 Game大会動画.mp4

1つめの -i は画像ファイルの場所とファイル名のフォーマットを指定しています。2つ目の -i は音声ファイルの取得先を指定しています。

動画変換

動画ファイルを別のフォーマットに変換します

 ffmpeg -i 入力ファイル  出力ファイル

  • 出力ファイル名の拡張子(.avi,.mp4,.wmv,mov)に応じた音声フォーマットで出力されます。

下記コマンドを実行すると、MP4からmov にフォーマット変換してくれます。

ffmpeg -i ゲーム大会.MP4 Game大会.mov

上下左右に回転する

動画変換の一種類になりますが、-vf オプションを使うと動画を上下左右に反転することが可能です。

ffmpeg -i 入力ファイル  -vf vflip,hflip  出力ファイル

左右反転--vf hfllip
上下反転-vf vflip
上下左右反転-vf hflip,vflip

下記コマンドを実行すると、上下左右を反転した動画をavi形式で出力します。

ffmpeg -i 浜辺.mp4 -vf hflip,vflip 浜辺上下反転.avi

動画を指定秒ごとに分割する

入力ファイルを-segment_timeで指定した秒数ごとに分割します。

 ffmpeg -i 入力ファイル -f segment -reset_timestamps 1 -c copy -segment_time 秒数 出力ファイル

  • 出力ファイルは %06d.jpg のように書式を指定する必要があります。尚、 -f segment を指定しないと出力ファイルに書式を書いても、書式だと認識してくれません。
  • -segment_time に分割したい秒数を指定します。
  • -c copy オプションを指定すると再エンコード無しで分割します。このオプションは無くても分割は可能ですが、再エンコードが行なわれる分、処理が遅くなります。
  • -reset_timestamps 1 は、動画と音声の再生タイミングを合わせるためのタイムスタンプ情報をリセットするための指定であり、音ズレ防止の為につけておきます。

動画を結合する

テキストファイルに記載されている動画を結合します。結合対象のファイルがすべて同じフォーマットの場合、-c copy オプションで再エンコード無しで結合できます。

 ffmpeg -f concat -i 動画リストファイル -c copy 出力ファイル

あらかじめ結合対象の動画を、動画リストファイルに記載しておく必要があります。動画ファイルの置き場所がカレントフォルダではない場合、動画リストファイルにパスを含めて記述します。

この時、フォルダとフォルダ、フォルダとファイルの区切り文字は¥ではなく / を記述しないとエラーになります。また、各行の先頭には file を記述する必要があります。

下記は動画ファイルリストのサンプルです。

file res/output_000.mp4
file res/output_001.mp4
file res/output_002.mp4

下記のコマンドを実行すれば、1つのファイルに結合できます。

ffmpeg -f concat -i movielists.txt -c copy ゲーム大会結合.mp4

動画をクロッピングする

 入力ファイルにおいて、指定した範囲をくロッピングします。 

 ffmpeg -i 入力ファイル -vf crop=x=x始点:y=y始点:w=横サイズ:h=縦サイズ  出力ファイル

XとYを指定すると、そこを起点にクリッピングします。

ffmpeg -i 浜辺.mp4 -vf crop=x=50:y=50:w=300:h=200 crip_video.MP4

XとYを省略すると、中心を起点にクリッピングします。

ffmpeg -i 浜辺.mp4 -vf crop=w=300:h=200 crip_video.MP4

動画を再生する

動画再生は ffplay.exe を使用します。こちらもオプションがたくさん用意されていますので、詳細については こちらの公式サイトをご確認下さい。

基本的な使い方は、ffplay.exe に再生したい動画ファイルのパスを指定するだけです。

 ffplay ファイル名

ffplay.exe P:\movie\浜辺.mp4

実行すると下記のようなシンプルな動画再生画面が表示されました。画面をマウス右クリックし、左にドラッグすると巻き戻し、右にドラッグすると早送りになりますが、それ以外の操作はできず、メニューも全く表示されません。

動画の情報を表示する

動画や音声ファイルの情報は ffprobe.exe を使用します。こちらもオプションがたくさん用意されていますので、詳細については こちらの公式サイトをご確認下さい。

ffprobe ファイル名

ffprobe.exe P:\movie\ゲーム大会.MP4

実行すると下記の情報が表示されます。

まとめ

今回は 無料で使える動画編集用ツール ffmpeg のダウンロードとインストール、及び基本的な使い方について解説しました。

動画編集ツールは様々なメーカーから販売されていますが、データ分析で動画を使う場合は不要な機能が多く、また処理対象の動画が多い場合は作業が煩わしくなります。

その点、ffmpeg はコマンドラインで実行できるため、動画本数が多くても簡単に処理できます。

ffmpeg には数多くのオプションがありますが、動画から画像や音声を取す、画像を反転させる、動画を分割&結合する、フォーマット変換を行うなど基本機能は、ほとんどオプションを指定せずとも実行できてしまいます。

かなり強力なツールなので、是非皆さんも使ってみて頂ければと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次