2025/09/11 07:01 FFmpeg – The Ultimate Guide

やっほー、ロボ子!今日はFFmpegについてお話しするのじゃ!

FFmpegですか!動画や音声処理の強力なツールですよね。どんなことができるんでしょう?

そう!FFmpegは、オーディオ/ビデオのデコード、エンコード、トランスコード、多重化、分離、ストリーミング、フィルタリング、再生まで、何でもできるマルチメディアフレームワークなのじゃ!

すごい!まるで魔法みたいですね。自動化やスクリプト処理にも向いているとのことですが、具体的にどんな場面で役立つんですか?

例えば、大量の動画ファイルを異なる形式に変換したり、動画から音声だけを抽出したりする作業を自動化できるのじゃ。最新のノンリニアビデオエディタ(NLE)の基本的な機能も実行できるから、すごいぞ!

なるほど!FFmpegはLinux、Mac OS X、Windowsで利用できるんですね。Linuxでは、ほとんどのディストリビューションにプリビルドされたものが含まれているとは知りませんでした。

そうそう。FFmpegは2000年にFabrice Bellardによって開始されたプロジェクトで、名前は "fast-forward" を意味する "FF" と、ビデオ標準グループのMPEGの組み合わせなのじゃ。

へえ、そんな由来があったんですね!約3ヶ月ごとに新しいリリースがあるなんて、開発が活発ですね。

Ubuntu Linuxディストリビューションに付属のデフォルトのFFmpegは約460のコーデックと370のフォーマットをサポートしているのじゃ。でも、サポートされているコーデックとフォーマットは、コンパイルフラグに大きく依存するから注意が必要だぞ。

なるほど。ライセンスやアーキテクチャ、サイズなどの理由で除外されているものもあるんですね。FFmpegの強みは何ですか?

ほとんどのビデオおよびオーディオフォーマットの読み取りと書き込みが可能で、フィルタリング、ハードウェアアクセラレーション、多様な入出力方法をサポートしているところが強みなのじゃ!

サンプリングレート、ビットレート、チャンネル数、解像度、ビット深度、透明度…メディアに関する様々な概念があるんですね。

そう!例えば、サンプリングレートは入力データストリームを測定/スキャン/サンプリングする回数を示すファクターで、8 kHz(GSM - 低品質)から48 kHz(非常に高品質)まであるのじゃ。

ビットレートはトランスコーディング/量子化プロセスから生じる1秒あたりのデータ量のことですね。チャンネルは、モノ、ステレオ、2.1、5.1などがあるんですね。

その通り!画像なら、解像度(HDや4Kなど)やビット深度(8ビット、24ビットなど)、透明度(アルファチャンネル)が重要になるのじゃ。

ビデオには解像度、フレームレート、コーデックなどの属性があるんですね。コーデックは、H.264やH.265など、ビデオを圧縮する方法を記述するフォーマットなんですね。

そう!オーディオコーデックには、MP3、AAC、OGG(ロッシー形式)、PCM、FLAC(ロスレス形式)などがあるのじゃ。

コンテナは、複数のストリームを単一のファイル形式に結合するフォーマット仕様で、MOV、MP4、MKV、WebM、WAVなどがあるんですね。

FFplayはメディアを再生するための基本的なビデオプレーヤーで、FFprobeはメディアファイルに関する情報を取得するためのツールなのじゃ。

FFprobeはストリーム、フォーマット、パケット、フレームなどの情報をJSON形式で出力できるんですね。便利そうです!

FFmpegの概念として、入力、ストリーム、出力、マッピング、フィルタリングがあるのじゃ。フィルタリングは、デコードされたフレーム(オーディオまたはビデオ)を変更する機能で、単純なフィルタと複雑なフィルタがあるぞ。

FFmpegのコマンドラインオプションは、グローバルオプション、入力ファイル、出力ファイルとそのオプションで構成されているんですね。入力ファイルは "-i" フラグで指定するんですね。

そう!出力ファイルは、入力仕様の後にファイル名として指定するのじゃ。 "-hide_banner" でバナーの印刷をスキップしたり、 "-y" で出力が既に存在する場合でも上書きしたりできるぞ。

"-map" は入力ファイルストリームと出力ファイルストリームを接続するために使うんですね。

FFmpegはファイル、ネットワーク、Webカメラ、マイク、パイプからの入力に対応していて、ローカルファイルストレージ、FTP、メッセージキュープロトコル、ストリーミングプロトコルへの出力ができるのじゃ。

FFmpegでオーディオをトランスコードする際には、フォーマットの選択、ビットレートの設定、サンプルレートの設定、チャンネル数の設定を行うんですね。ロスレスフォーマットにはFLACやWAVなどがあるんですね。

ビデオのトランスコードでは、H.264およびH.265への変換や、CRF(Constant Rate Factor)値の比較が重要になるのじゃ。

クリップの先頭または末尾からのトリミングや、再エンコードなしでの編集(ストリームのコピー)もできるんですね。

オーディオおよびビデオフィルタを使用して、メディアを操作できるのじゃ。基本的な構文、複数のフィルタのチェーン、入力および出力パッド、複数のチェーンを理解する必要があるぞ。

ビデオ編集では、サイズ変更またはスケーリング、テキストの追加、オーバーレイの追加、クロマキーイングができるんですね。オーディオ操作では、ゲート、イコライゼーション、コンプレッション、音量の変更ができるんですね。

FFmpegのメインドキュメント、WIKI、コンパイルガイド、フィルタドキュメント、フォーマットドキュメント、H.264/H.265ビデオエンコードガイドなど、ドキュメンテーションも充実しているのじゃ。

FFmpeg、奥が深いですね!

そうじゃろ!最後に一つなぞなぞ!FFmpegで作った動画を見てたら、時間が経つのを忘れちゃった!さて、それは一体なぜでしょう?

うーん…もしかして、エンコードに時間がかかりすぎたからですか?

ブッブー!答えは…FFmpeg(ふっ、むげー)夢中になっちゃったから!…って、つまらなかったかのじゃ?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
