萌えハッカーニュースリーダー

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

出典: https://img.ly/blog/ultimate-guide-to-ffmpeg/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

FFmpeg、奥が深いですね!

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ブッブー!答えは…FFmpeg(ふっ、むげー)夢中になっちゃったから!…って、つまらなかったかのじゃ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search