FFmpeg を macOS で最適導入:Homebrew +オプション選定で機能漏れゼロ

FFmpeg を macOS にインストールする際、デフォルト設定では必要な機能が使えないことがあります。「動画変換ができると思ったのに、特定のコーデックに対応していない」「ハードウェアエンコードが使えない」といった経験はありませんか。
実は、Homebrew を使った標準的なインストール方法だけでは、FFmpeg の持つ豊富な機能の一部しか使えません。本記事では、Homebrew を活用しながら、用途に応じた最適なオプション選定で機能漏れゼロの FFmpeg 環境を構築する方法を解説します。
背景
FFmpeg とは
FFmpeg は、動画・音声ファイルの変換、編集、ストリーミング配信など、マルチメディア処理を行うための強力なオープンソースツールです。コマンドラインから操作でき、以下のような幅広い用途に対応しています。
主な機能を表にまとめました。
# | 機能分類 | 具体的な用途 |
---|---|---|
1 | 動画変換 | MP4, MOV, AVI, MKV など形式間の相互変換 |
2 | エンコード | H.264, H.265, VP9, AV1 などのコーデック対応 |
3 | 編集 | カット、結合、リサイズ、フィルタ適用 |
4 | 配信 | RTMP, HLS などストリーミング配信 |
5 | 抽出 | 音声トラック、字幕、メタデータの抽出 |
FFmpeg は単体のツールではなく、複数のライブラリとプログラムから構成されています。
mermaidflowchart TB
ffmpeg["ffmpeg<br/>(メインツール)"]
ffprobe["ffprobe<br/>(メディア情報解析)"]
ffplay["ffplay<br/>(プレイヤー)"]
libavcodec["libavcodec<br/>(コーデックライブラリ)"]
libavformat["libavformat<br/>(フォーマットライブラリ)"]
libavfilter["libavfilter<br/>(フィルタライブラリ)"]
libavdevice["libavdevice<br/>(デバイス入出力)"]
ffmpeg --> libavcodec
ffmpeg --> libavformat
ffmpeg --> libavfilter
ffprobe --> libavformat
ffplay --> libavcodec
ffplay --> libavdevice
上図のように、FFmpeg は階層構造を持ち、各ライブラリが特定の役割を担っています。このため、インストール時にどのライブラリや機能を有効化するかが重要になります。
macOS での FFmpeg 導入の一般的な方法
macOS で FFmpeg を導入する方法は主に 3 つあります。
方法 1:公式サイトからバイナリをダウンロード
FFmpeg の公式サイトから、コンパイル済みのバイナリファイルをダウンロードして使う方法です。
メリット
- すぐに使い始められる
- 特別な知識が不要
デメリット
- アップデート管理が手動
- オプションのカスタマイズ不可
- パスの設定が必要
方法 2:ソースコードからビルド
GitHub からソースコードを取得し、自分でコンパイルする方法です。
メリット
- すべてのオプションを自由に選択可能
- 最新の開発版も利用できる
デメリット
- ビルド環境の構築が必要
- コンパイル時間がかかる
- 依存関係の解決が複雑
- メンテナンスの手間が大きい
方法 3:Homebrew でインストール
macOS のパッケージ管理ツール Homebrew を使う方法です。
メリット
- インストールとアップデートが簡単
- 依存関係を自動解決
- オプション指定でカスタマイズ可能
- macOS に最適化済み
デメリット
- Homebrew のインストールが前提
- デフォルトでは一部機能が無効
本記事では、メリットが多い 方法 3:Homebrew を使ったインストールに焦点を当てます。
Homebrew による管理のメリット
Homebrew は macOS(および Linux)向けのパッケージ管理システムで、コマンド一つでソフトウェアのインストール、アップデート、削除ができます。
FFmpeg を Homebrew で管理する主なメリットは以下のとおりです。
# | メリット | 詳細 |
---|---|---|
1 | 簡単なインストール | brew install ffmpeg で基本インストール完了 |
2 | 自動依存関係解決 | 必要なライブラリを自動的にインストール |
3 | アップデート管理 | brew upgrade ffmpeg で最新版に更新 |
4 | オプション指定 | --with-xxx でビルドオプションを選択可能 |
5 | クリーンな削除 | brew uninstall ffmpeg で完全削除 |
Homebrew を使うことで、FFmpeg のライフサイクル全体を効率的に管理できます。次の図は、Homebrew による FFmpeg 管理のワークフローを示しています。
mermaidflowchart LR
user["ユーザー"] -->|brew install| install["インストール"]
install -->|自動解決| deps["依存関係<br/>取得"]
deps --> build["ビルド"]
build --> ready["利用可能"]
ready -->|brew upgrade| update["アップデート"]
update --> ready
ready -->|brew uninstall| remove["削除"]
style ready fill:#e1f5e1
このワークフローにより、複雑なビルド作業を意識することなく、FFmpeg を常に最新かつ最適な状態で利用できるのです。
課題
デフォルトインストールの落とし穴
Homebrew で FFmpeg をインストールする際、最もシンプルな方法は以下のコマンドです。
bashbrew install ffmpeg
このコマンドは確かに FFmpeg をインストールしますが、実はデフォルト設定では多くの機能が無効化されています。
以下は、デフォルトインストールで無効化されている主な機能の一覧です。
# | 無効化されている機能 | 影響を受ける用途 |
---|---|---|
1 | GPL ライセンスのコーデック | x264, x265 など主要な H.264/H.265 エンコーダ |
2 | 非フリーコーデック | AAC エンコーダ(fdk-aac)、NVENC など |
3 | ハードウェアアクセラレーション | VideoToolbox, NVENC, QSV など |
4 | 特定フォーマット対応 | WebP, OpenEXR, AV1 など |
5 | 字幕関連 | ASS/SSA 字幕レンダリング |
6 | ストリーミング | RTMP, SRT プロトコル |
なぜデフォルトで無効化されているのでしょうか。理由は主に 3 つあります。
理由 1:ライセンスの制約 GPL や非フリーライセンスのコーデックを含めると、配布に制約が生じます。Homebrew はデフォルトで最も制約の少ない構成を提供しています。
理由 2:ビルド時間の短縮 すべてのオプションを有効化すると、ビルドに時間がかかります。デフォルトは最小限の機能で高速インストールを実現しています。
理由 3:依存関係の最小化 多くの機能を有効化すると、それに伴う依存ライブラリも増加します。デフォルトは依存関係を最小限に抑えた構成です。
次の図は、デフォルトインストールと完全インストールの違いを示しています。
mermaidflowchart TB
subgraph planDefault ["デフォルトインストール"]
d_basic["基本コーデック<br/>(libx264除く)"]
d_format["基本フォーマット"]
d_filter["基本フィルタ"]
end
subgraph planFull ["完全インストール"]
f_codec["全コーデック<br/>(GPL/非フリー含む)"]
f_hw["ハードウェア<br/>アクセラレーション"]
f_format["全フォーマット"]
f_filter["全フィルタ"]
f_stream["ストリーミング<br/>プロトコル"]
f_subtitle["字幕レンダリング"]
end
user["ユーザー"] -->|brew install ffmpeg| planDefault
user -->|オプション指定| planFull
style planDefault fill:#ffe6e6
style planFull fill:#e6ffe6
デフォルトインストールでは、基本的な動画変換はできますが、プロフェッショナルな用途や特定のユースケースには対応できません。
機能不足で起こる実際のトラブル
デフォルトインストールによる機能不足は、実際の作業で以下のようなトラブルを引き起こします。
トラブル 1:H.264 エンコードができない
YouTube や SNS へのアップロード用に H.264 形式で動画を変換しようとしたケースです。
bashffmpeg -i input.mov -c:v libx264 -preset medium output.mp4
エラーメッセージ
sqlUnknown encoder 'libx264'
原因 デフォルトでは GPL ライセンスの libx264 が無効化されているため、H.264 エンコードができません。
影響 Web 配信用の動画作成ができず、別のツールを探すか FFmpeg を再インストールする必要があります。
トラブル 2:ハードウェアエンコードが使えない
大容量の 4K 動画を高速にエンコードしようとして、Apple の VideoToolbox を使おうとしたケースです。
bashffmpeg -i input.mov -c:v h264_videotoolbox -b:v 10M output.mp4
エラーメッセージ
Encoder h264_videotoolbox not found
原因 VideoToolbox サポートが無効化されているため、ハードウェアアクセラレーションが利用できません。
影響 エンコード速度が大幅に低下し、CPU 負荷も高くなります。4K 動画では実用的な速度が出ません。
トラブル 3:RTMP 配信ができない
ライブ配信のため、RTMP プロトコルでストリーミング送信しようとしたケースです。
bashffmpeg -re -i input.mp4 -c copy -f flv rtmp://live.example.com/app/stream
エラーメッセージ
arduinoProtocol 'rtmp' not found
原因 RTMP プロトコルサポートが無効化されています。
影響 YouTube Live、Twitch、ニコニコ生放送などへの配信ができません。
トラブル 4:WebP 画像が扱えない
動画から WebP 形式の静止画を抽出しようとしたケースです。
bashffmpeg -i video.mp4 -vf "select=eq(n\,100)" -vframes 1 output.webp
エラーメッセージ
arduinoEncoder 'libwebp' not found
原因 WebP サポートが無効化されています。
影響 Web 最適化された画像形式が使えず、代替形式での対応が必要になります。
これらのトラブルに共通するのは、「使えると思っていた機能が使えない」という問題です。作業中に気づくと、再インストールや代替手段の検討に時間を取られてしまいます。
オプション選定の難しさ
トラブルを避けるには、インストール時に適切なオプションを指定する必要があります。しかし、オプション選定には以下の難しさがあります。
難しさ 1:オプションの種類が多すぎる
Homebrew の FFmpeg Formula は、数十種類のオプションを提供しています。以下は主要なオプションの一部です。
bashbrew info ffmpeg
出力例(抜粋)
diffffmpeg: stable 6.1
==> Options
--with-chromaprint
--with-fdk-aac
--with-libass
--with-libbluray
--with-librist
--with-libsoxr
--with-libssh
--with-libvidstab
--with-libvmaf
--with-libxml2
--with-opencore-amr
--with-openh264
--with-openjpeg
--with-openssl
--with-rav1e
--with-rtmpdump
--with-rubberband
--with-speex
--with-srt
--with-tesseract
--with-two-lame
--with-wavpack
--with-webp
--with-xvid
--with-zeromq
--with-zimg
これだけの選択肢から、自分に必要なものを選ぶのは容易ではありません。
難しさ 2:オプション間の依存関係
一部のオプションは、他のオプションや外部ライブラリに依存しています。例えば、字幕レンダリングを有効化するには --with-libass
が必要ですが、libass 自体も別途インストールが必要です。
依存関係の例を図示します。
mermaidflowchart TB
ffmpeg["FFmpeg"]
libass["--with-libass<br/>(字幕)"]
freetype["FreeType<br/>(フォント)"]
fribidi["FriBidi<br/>(双方向テキスト)"]
libvpx["--with-libvpx<br/>(VP9)"]
fdk["--with-fdk-aac<br/>(AAC)"]
rtmp["--with-rtmpdump<br/>(RTMP)"]
openssl["OpenSSL"]
ffmpeg --> libass
libass --> freetype
libass --> fribidi
ffmpeg --> libvpx
ffmpeg --> fdk
ffmpeg --> rtmp
rtmp --> openssl
style ffmpeg fill:#e1f5e1
このように、一つのオプションを有効化すると、連鎖的に複数のライブラリが必要になることがあります。
難しさ 3:用途に応じた最適な組み合わせが不明
「動画編集用」「配信用」「開発用」など、用途によって必要なオプションは異なります。しかし、公式ドキュメントには用途別の推奨構成が明記されていません。
難しさ 4:ライセンスへの理解
GPL、LGPL、非フリーライセンスなど、各オプションには異なるライセンスが適用されます。商用利用や再配布を考える場合、ライセンスの理解が必要です。
# | ライセンス種別 | 主な制約 | 該当オプション例 |
---|---|---|---|
1 | LGPL | ソースコード開示不要(動的リンク) | デフォルトの多くのライブラリ |
2 | GPL | ソースコード開示必要 | libx264, libx265, libxvid |
3 | 非フリー | 再配布に制約 | fdk-aac, NVENC |
これらの難しさを克服するには、FFmpeg の機能体系とオプションの役割を体系的に理解する必要があります。
解決策
Homebrew でのオプション指定方法
Homebrew で FFmpeg のオプションを指定してインストールする基本的な方法を解説します。
基本構文
オプション付きインストールの基本構文は以下のとおりです。
bashbrew install ffmpeg [オプション1] [オプション2] ...
オプションは --with-xxx
または --enable-xxx
の形式で指定します。
利用可能なオプションの確認
インストール前に、利用可能なオプション一覧を確認できます。
bashbrew options ffmpeg
このコマンドで、すべての利用可能なオプションとその説明が表示されます。
具体的なインストール例
例として、H.264/H.265 エンコード、WebP 対応、RTMP 配信に対応した構成をインストールします。
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-libvpx \
--with-libvorbis \
--with-opus \
--with-rtmpdump \
--with-webp
このコマンドを実行すると、Homebrew が以下の処理を自動的に行います。
mermaidsequenceDiagram
participant user as ユーザー
participant brew as Homebrew
participant deps as 依存関係
participant build as ビルド処理
participant install as インストール
user->>brew: brew install ffmpeg --with-xxx
brew->>deps: 依存関係を解析
deps->>brew: 必要なライブラリリスト
brew->>deps: 依存ライブラリをインストール
deps->>build: ビルド準備完了
build->>build: FFmpeg をビルド
build->>install: バイナリ生成
install->>user: インストール完了
既存インストールへのオプション追加
すでに FFmpeg をインストール済みで、オプションを追加したい場合は、一度アンインストールしてから再インストールします。
bash# 既存の FFmpeg をアンインストール
brew uninstall ffmpeg
bash# オプション指定で再インストール
brew install ffmpeg --with-fdk-aac --with-libass
インストール後の確認
インストールが完了したら、有効化されたオプションを確認できます。
bashffmpeg -version
このコマンドで、ビルド構成やライブラリバージョンが表示されます。
bash# 利用可能なエンコーダ一覧
ffmpeg -encoders
bash# 利用可能なデコーダ一覧
ffmpeg -decoders
bash# 利用可能なフォーマット一覧
ffmpeg -formats
これらのコマンドで、目的のコーデックやフォーマットが含まれているかを確認しましょう。
必須オプションの選定基準
どのオプションを選ぶべきかの判断基準を、目的別に整理します。
選定基準 1:必須コーデック対応
動画・音声変換を行う上で、最低限必要なコーデック対応を確保します。
H.264(最重要) Web 配信、SNS、モバイルデバイスで最も広く使われるコーデックです。
必要なオプション:GPL ライセンスを受け入れる必要があります(Homebrew の最新版では標準で含まれることがありますが、念のため確認が必要)。
AAC 音声 H.264 動画と組み合わせて使う標準的な音声コーデックです。
必要なオプション:
bash--with-fdk-aac
VP9 / WebM YouTube が推奨する高効率コーデックです。
必要なオプション:
bash--with-libvpx
音声コーデック各種
必要なオプション:
bash--with-libvorbis --with-opus
選定基準 2:ハードウェアアクセラレーション
エンコード・デコードの高速化には、ハードウェアアクセラレーションが不可欠です。
Apple Silicon / Intel Mac macOS では VideoToolbox が利用可能です(通常は標準で有効)。
確認方法:
bashffmpeg -encoders | grep videotoolbox
出力例:
V..... h264_videotoolbox VideoToolbox H.264 Encoder
V..... hevc_videotoolbox VideoToolbox H.265 Encoder
NVIDIA GPU NVIDIA GPU を搭載した Mac(現在は少数)では NVENC が使えます。
必要なオプション:非フリーライセンスの受け入れが必要です。
選定基準 3:配信・ストリーミング対応
ライブ配信やストリーミングを行う場合の必須オプションです。
RTMP プロトコル YouTube Live、Twitch などへの配信に必要です。
必要なオプション:
bash--with-rtmpdump
SRT プロトコル 低遅延配信に使われる次世代プロトコルです。
必要なオプション:
bash--with-srt
選定基準 4:字幕・テキスト処理
字幕の焼き込みや ASS/SSA 形式の字幕を扱う場合に必要です。
必要なオプション:
bash--with-libass
選定基準 5:画像フォーマット対応
動画から静止画を切り出したり、画像シーケンスを扱う場合に必要です。
WebP Web 最適化された次世代画像フォーマットです。
必要なオプション:
bash--with-webp
OpenEXR VFX やプロフェッショナル用途で使われる HDR 画像フォーマットです。
必要なオプション:
bash--with-openexr
選定基準まとめ表
以下の表で、用途別の必須オプションを整理しました。
# | 用途 | 必須オプション | 優先度 |
---|---|---|---|
1 | 基本的な動画変換 | なし(デフォルトで可) | - |
2 | Web 配信用動画作成 | --with-fdk-aac | ★★★ |
3 | 高速エンコード | VideoToolbox(標準) | ★★★ |
4 | ライブ配信 | --with-rtmpdump , --with-srt | ★★★ |
5 | 字幕焼き込み | --with-libass | ★★ |
6 | WebP 画像 | --with-webp | ★★ |
7 | VP9/WebM | --with-libvpx | ★★ |
8 | プロ用途(HDR など) | --with-openexr , --with-libvmaf | ★ |
優先度が ★★★ のオプションは、多くのユーザーにとって必須といえます。
用途別オプション組み合わせ
実際の用途に応じた、推奨オプションの組み合わせを提示します。
パターン A:Web 配信者・YouTuber 向け
想定用途
- YouTube、SNS へのアップロード
- 動画編集ソフトとの連携
- サムネイル画像の生成
推奨オプション
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libvpx \
--with-webp \
--with-libass
このパターンで可能になること
- H.264 および VP9 エンコード(YouTube 推奨形式)
- 高品質 AAC 音声エンコード
- WebP 形式でサムネイル生成
- 字幕の焼き込み
パターン B:ライブ配信者向け
想定用途
- YouTube Live、Twitch などへの配信
- OBS との連携
- リアルタイムエンコード
推奨オプション
bashbrew install ffmpeg \
--with-fdk-aac \
--with-rtmpdump \
--with-srt \
--with-libass
このパターンで可能になること
- RTMP プロトコルでの配信
- SRT プロトコルでの低遅延配信
- リアルタイム字幕表示
- ハードウェアエンコード活用
パターン C:動画編集・制作者向け
想定用途
- プロフェッショナルな動画編集
- カラーグレーディング
- 品質評価
推奨オプション
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-libvpx \
--with-webp \
--with-libvmaf \
--with-zimg
このパターンで可能になること
- 各種コーデックへの変換
- VMAF による品質評価
- 高品質スケーリング(zimg)
- HDR 対応
パターン D:開発者・研究者向け(フル構成)
想定用途
- あらゆるフォーマット対応
- プロトコル実験
- コーデック研究
推奨オプション
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-libbluray \
--with-librist \
--with-libsoxr \
--with-libssh \
--with-libvidstab \
--with-libvmaf \
--with-libvpx \
--with-libxml2 \
--with-opencore-amr \
--with-openh264 \
--with-openjpeg \
--with-opus \
--with-rav1e \
--with-rtmpdump \
--with-rubberband \
--with-speex \
--with-srt \
--with-tesseract \
--with-webp \
--with-xvid \
--with-zeromq \
--with-zimg
このパターンで可能になること
- ほぼすべてのコーデック・フォーマット対応
- 各種ストリーミングプロトコル
- 手ぶれ補正(libvidstab)
- OCR(tesseract)
- AV1 エンコード(rav1e)
次の図は、用途別オプションパターンの関係を示しています。
mermaidflowchart TB
basic["基本インストール<br/>(デフォルト)"]
web["パターン A<br/>Web配信者向け"]
live["パターン B<br/>ライブ配信者向け"]
editor["パターン C<br/>動画編集者向け"]
full["パターン D<br/>開発者向けフル構成"]
basic --> web
basic --> live
basic --> editor
web --> full
live --> full
editor --> full
style basic fill:#ffe6e6
style web fill:#fff4e6
style live fill:#fff4e6
style editor fill:#fff4e6
style full fill:#e6ffe6
基本インストールから始めて、必要に応じてオプションを追加していくアプローチも可能です。ただし、後からオプションを追加する場合は再インストールが必要になるため、最初から用途に合ったパターンを選ぶことをおすすめします。
具体例
基本インストール手順
まずは、Homebrew を使った FFmpeg の基本的なインストール手順を確認しましょう。
ステップ 1:Homebrew のインストール確認
Homebrew がインストールされているか確認します。
bashbrew --version
出力例
Homebrew 4.2.0
Homebrew がインストールされていない場合は、公式サイトの指示に従ってインストールしてください。
bash/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ステップ 2:Homebrew の更新
最新の Formula を取得するため、Homebrew を更新します。
bashbrew update
このコマンドで、利用可能なパッケージ情報が最新化されます。
ステップ 3:FFmpeg の情報確認
インストール前に、FFmpeg のバージョンとオプションを確認しましょう。
bashbrew info ffmpeg
出力例(抜粋)
vbnetffmpeg: stable 6.1 (bottled)
Play, record, convert, and stream audio and video
https://ffmpeg.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/f/ffmpeg.rb
License: GPL-2.0-or-later
==> Dependencies
Build: pkg-config ✘
Required: aom ✘, aribb24 ✘, dav1d ✘, fontconfig ✘, ...
==> Options
--with-chromaprint
Enable the Chromaprint audio fingerprinting library
--with-fdk-aac
Enable the Fraunhofer FDK AAC library
...
この情報から、現在のバージョンと利用可能なオプションが確認できます。
ステップ 4:インストール実行
ここでは、最も汎用性の高いオプションを選んでインストールします。
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-libvpx \
--with-opus \
--with-webp
インストールには数分から十数分かかります。依存ライブラリのビルドも含まれるため、初回は時間がかかることがあります。
インストール中の出力例
bash==> Downloading https://ghcr.io/v2/homebrew/core/ffmpeg/manifests/6.1
...
==> Installing dependencies for ffmpeg: aom, aribb24, dav1d, ...
==> Installing ffmpeg dependency: aom
==> Pouring aom--3.8.0.arm64_ventura.bottle.tar.gz
...
==> Installing ffmpeg
==> Pouring ffmpeg--6.1.arm64_ventura.bottle.tar.gz
🍺 /opt/homebrew/Cellar/ffmpeg/6.1: 277 files, 58.2MB
ステップ 5:インストール確認
インストールが完了したら、FFmpeg が正しく動作するか確認します。
bashffmpeg -version
出力例
rubyffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.1.0.2.5)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libaribb24 --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-neon
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
...
この出力から、有効化されたオプションが configuration:
の部分で確認できます。
bash# エンコーダの確認
ffmpeg -encoders | grep -E "(libx264|libfdk_aac|libvpx|webp)"
出力例
objectivec V..... libvpx libvpx VP8 (codec vp8)
V..... libvpx-vp9 libvpx VP9 (codec vp9)
V..... libwebp libwebp WebP image (codec webp)
A..... libfdk_aac Fraunhofer FDK AAC (codec aac)
V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
目的のエンコーダが表示されれば、インストールは成功です。
動画編集用の最適構成
動画編集やコンテンツ制作を行うユーザー向けの最適構成を解説します。
想定する作業内容
- 複数の動画ファイルの結合・分割
- フォーマット変換(MOV → MP4 など)
- 解像度変更・クロッピング
- 字幕の焼き込み
- サムネイル画像の生成
- 品質評価
インストールコマンド
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-libvpx \
--with-webp \
--with-libvmaf \
--with-zimg \
--with-libvidstab
各オプションの役割
# | オプション | 役割 |
---|---|---|
1 | --with-fdk-aac | 高品質 AAC 音声エンコード |
2 | --with-libass | ASS/SSA 字幕の焼き込み |
3 | --with-libvpx | VP9/WebM フォーマット対応 |
4 | --with-webp | WebP 画像生成 |
5 | --with-libvmaf | 動画品質評価 |
6 | --with-zimg | 高品質スケーリング |
7 | --with-libvidstab | 手ぶれ補正 |
実践例 1:動画の形式変換
MOV 形式の動画を、Web 配信用の MP4 に変換します。
bashffmpeg -i input.mov \
-c:v libx264 -preset medium -crf 23 \
-c:a libfdk_aac -b:a 128k \
output.mp4
オプション解説
-c:v libx264
:H.264 ビデオコーデックを使用-preset medium
:エンコード速度と品質のバランス-crf 23
:品質指定(18-28 が一般的、小さいほど高品質)-c:a libfdk_aac
:FDK-AAC 音声コーデックを使用-b:a 128k
:音声ビットレート 128kbps
実践例 2:字幕の焼き込み
ASS 形式の字幕ファイルを動画に焼き込みます。
bashffmpeg -i input.mp4 -vf "ass=subtitle.ass" \
-c:v libx264 -preset medium -crf 23 \
-c:a copy \
output_with_sub.mp4
オプション解説
-vf "ass=subtitle.ass"
:字幕ファイルを指定-c:a copy
:音声はそのままコピー(再エンコードしない)
この処理には --with-libass
オプションが必須です。
実践例 3:サムネイル画像の生成
動画の 10 秒地点から WebP 形式のサムネイルを生成します。
bashffmpeg -i input.mp4 -ss 00:00:10 \
-vframes 1 -q:v 2 \
thumbnail.webp
オプション解説
-ss 00:00:10
:10 秒の位置を指定-vframes 1
:1 フレームのみ出力-q:v 2
:品質指定(2-31、小さいほど高品質)
WebP 出力には --with-webp
オプションが必要です。
実践例 4:動画品質の評価
オリジナル動画とエンコード後の動画を VMAF で品質比較します。
bashffmpeg -i encoded.mp4 -i original.mp4 \
-lavfi libvmaf="model_path=/usr/local/share/model/vmaf_v0.6.1.json" \
-f null -
VMAF スコア(0-100)が出力され、スコアが高いほど高品質です。この機能には --with-libvmaf
オプションが必要です。
実践例 5:高品質スケーリング
4K 動画を Full HD にスケーリングする際、zimg を使って高品質に変換します。
bashffmpeg -i input_4k.mp4 \
-vf "zscale=1920:1080:filter=lanczos" \
-c:v libx264 -preset slow -crf 18 \
-c:a copy \
output_fhd.mp4
オプション解説
zscale=1920:1080
:解像度を 1920x1080 に指定filter=lanczos
:Lanczos フィルタで高品質スケーリング-preset slow
:時間をかけて高品質エンコード
zscale フィルタには --with-zimg
オプションが必要です。
配信・エンコード用の最適構成
ライブ配信やストリーミング配信を行うユーザー向けの最適構成を解説します。
想定する作業内容
- YouTube Live、Twitch への配信
- RTMP プロトコルでの送信
- リアルタイムエンコード
- 低遅延配信(SRT)
- ハードウェアエンコードの活用
インストールコマンド
bashbrew install ffmpeg \
--with-fdk-aac \
--with-libass \
--with-rtmpdump \
--with-srt \
--with-libvpx
各オプションの役割
# | オプション | 役割 |
---|---|---|
1 | --with-fdk-aac | 高品質 AAC 音声エンコード |
2 | --with-libass | リアルタイム字幕表示 |
3 | --with-rtmpdump | RTMP プロトコル対応 |
4 | --with-srt | SRT プロトコル対応(低遅延) |
5 | --with-libvpx | VP9 エンコード |
実践例 1:RTMP で YouTube Live に配信
ローカルの動画ファイルを YouTube Live に RTMP で配信します。
bashffmpeg -re -i input.mp4 \
-c:v h264_videotoolbox -b:v 4500k \
-c:a libfdk_aac -b:a 128k \
-f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY
オプション解説
-re
:リアルタイム再生速度で読み込み-c:v h264_videotoolbox
:VideoToolbox でハードウェアエンコード-b:v 4500k
:ビデオビットレート 4.5Mbps(1080p 推奨値)-f flv
:FLV フォーマットで出力rtmp://...
:YouTube の RTMP URL とストリームキー
このコマンドには --with-rtmpdump
オプションが必須です。
実践例 2:ウェブカメラからライブ配信
Mac の内蔵カメラから直接 RTMP 配信を行います。
bashffmpeg -f avfoundation -framerate 30 -i "0:0" \
-c:v h264_videotoolbox -b:v 2500k -pix_fmt yuv420p \
-c:a libfdk_aac -b:a 128k \
-f flv rtmp://live.twitch.tv/app/YOUR_STREAM_KEY
オプション解説
-f avfoundation
:macOS のカメラ・マイク入力-framerate 30
:30fps で取り込み-i "0:0"
:デバイス 0(カメラ)とデバイス 0(マイク)-pix_fmt yuv420p
:ピクセルフォーマット指定(互換性向上)
デバイス一覧の確認:
bashffmpeg -f avfoundation -list_devices true -i ""
実践例 3:SRT で低遅延配信
SRT プロトコルを使って、低遅延配信を行います。
bashffmpeg -re -i input.mp4 \
-c:v h264_videotoolbox -b:v 3000k \
-c:a libfdk_aac -b:a 128k \
-f mpegts "srt://receiver_ip:9000?mode=caller"
オプション解説
-f mpegts
:MPEG-TS フォーマットsrt://...
:SRT プロトコルで送信mode=caller
:クライアントモード(サーバーに接続)
SRT は RTMP よりも低遅延で、ネットワークの変動に強いプロトコルです。このコマンドには --with-srt
オプションが必要です。
実践例 4:画面録画と同時配信
macOS の画面を録画しながら、同時に配信します。
bashffmpeg -f avfoundation -capture_cursor 1 -framerate 30 -i "1:0" \
-c:v h264_videotoolbox -b:v 4500k \
-c:a libfdk_aac -b:a 128k \
-f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY
オプション解説
-capture_cursor 1
:カーソルも録画-i "1:0"
:デバイス 1(画面)とデバイス 0(マイク)
配信時の推奨ビットレート
解像度とフレームレートに応じた、配信時の推奨ビットレートをまとめます。
# | 解像度 | フレームレート | ビットレート(推奨) |
---|---|---|---|
1 | 1920x1080(Full HD) | 60fps | 6000 kbps |
2 | 1920x1080(Full HD) | 30fps | 4500 kbps |
3 | 1280x720(HD) | 60fps | 4500 kbps |
4 | 1280x720(HD) | 30fps | 2500 kbps |
5 | 854x480(SD) | 30fps | 1000 kbps |
配信プラットフォームによって推奨値が異なるため、各サービスのガイドラインを確認しましょう。
すべての機能を含むフル構成
開発者、研究者、またはあらゆる用途に対応したい方向けの、すべての機能を含むフル構成を解説します。
インストールコマンド
bashbrew install ffmpeg \
--with-chromaprint \
--with-fdk-aac \
--with-libass \
--with-libbluray \
--with-librist \
--with-libsoxr \
--with-libssh \
--with-libvidstab \
--with-libvmaf \
--with-libvpx \
--with-libxml2 \
--with-opencore-amr \
--with-openh264 \
--with-openjpeg \
--with-opus \
--with-rav1e \
--with-rtmpdump \
--with-rubberband \
--with-speex \
--with-srt \
--with-tesseract \
--with-two-lame \
--with-wavpack \
--with-webp \
--with-xvid \
--with-zeromq \
--with-zimg
全オプション一覧
このフル構成で有効化される機能を、カテゴリ別に整理します。
コーデック関連
# | オプション | 機能 |
---|---|---|
1 | --with-fdk-aac | 高品質 AAC エンコード |
2 | --with-libvpx | VP8/VP9 エンコード・デコード |
3 | --with-opencore-amr | AMR 音声コーデック(携帯電話用) |
4 | --with-openh264 | H.264 エンコード(Cisco 版) |
5 | --with-opus | Opus 音声コーデック |
6 | --with-rav1e | AV1 エンコード |
7 | --with-speex | Speex 音声コーデック |
8 | --with-two-lame | MP2 音声エンコード |
9 | --with-xvid | Xvid MPEG-4 エンコード |
フォーマット・プロトコル関連
# | オプション | 機能 |
---|---|---|
1 | --with-libbluray | Blu-ray ディスク読み込み |
2 | --with-librist | RIST プロトコル(業務用配信) |
3 | --with-libssh | SSH/SFTP プロトコル |
4 | --with-rtmpdump | RTMP プロトコル |
5 | --with-srt | SRT プロトコル(低遅延配信) |
6 | --with-zeromq | ZeroMQ メッセージング |
フィルタ・処理関連
# | オプション | 機能 |
---|---|---|
1 | --with-libass | 字幕レンダリング |
2 | --with-libsoxr | 高品質オーディオリサンプリング |
3 | --with-libvidstab | 手ぶれ補正 |
4 | --with-libvmaf | 動画品質評価 |
5 | --with-rubberband | オーディオタイムストレッチ |
6 | --with-zimg | 高品質画像スケーリング |
画像・メタデータ関連
# | オプション | 機能 |
---|---|---|
1 | --with-openjpeg | JPEG 2000 対応 |
2 | --with-webp | WebP 画像フォーマット |
3 | --with-chromaprint | 音声フィンガープリント |
4 | --with-tesseract | OCR(光学文字認識) |
5 | --with-libxml2 | XML メタデータ処理 |
6 | --with-wavpack | WavPack ロスレス音声 |
フル構成の利用例
フル構成でしか使えない高度な機能をいくつか紹介します。
例 1:AV1 エンコード
次世代コーデック AV1 で動画をエンコードします。
bashffmpeg -i input.mp4 \
-c:v librav1e -speed 6 -qp 100 \
-c:a libopus -b:a 128k \
output.webm
AV1 は H.265 よりもさらに高効率ですが、エンコードには時間がかかります。
例 2:OCR で動画内のテキスト抽出
動画内に表示されているテキストを OCR で抽出します。
bashffmpeg -i video.mp4 \
-vf "ocr" \
-f null -
この機能には --with-tesseract
オプションが必要です。
例 3:Blu-ray ディスクから動画抽出
Blu-ray ディスクのコンテンツを読み込んで変換します。
bashffmpeg -i bluray:/path/to/bluray \
-map 0:v -map 0:a:0 \
-c:v libx264 -crf 18 \
-c:a libfdk_aac -b:a 192k \
output.mp4
この機能には --with-libbluray
オプションが必要です。
例 4:音声フィンガープリント生成
音楽認識サービス用のフィンガープリントを生成します。
bashffmpeg -i audio.mp3 \
-f chromaprint -fp_format 2 \
fingerprint.txt
この機能には --with-chromaprint
オプションが必要です。
フル構成の注意点
すべての機能を有効化すると、以下の点に注意が必要です。
ビルド時間 フル構成のビルドには、30 分以上かかることがあります。多数の依存ライブラリをコンパイルするためです。
ディスク容量 インストール後の FFmpeg および依存ライブラリは、数百 MB から 1GB 以上のディスク容量を消費します。
ライセンス GPL、非フリーライセンスのコンポーネントが含まれるため、商用利用や再配布には注意が必要です。
アップデート
依存ライブラリが多いため、brew upgrade
時に多くのパッケージが更新される可能性があります。
フル構成は「あらゆる用途に対応したい」「実験・研究目的」といったケースに適しています。一般的な動画編集や配信であれば、前述の用途別構成で十分です。
まとめ
FFmpeg を macOS で最適に導入するには、Homebrew を活用し、用途に応じたオプション選定が重要です。本記事で解説したポイントをまとめます。
デフォルトインストールの課題
brew install ffmpeg
だけでは、多くの機能が無効化されている- H.264 エンコード、ハードウェアアクセラレーション、RTMP 配信など、実用的な機能が使えないことがある
- 作業中にエラーが発生してから気づくと、再インストールの手間がかかる
オプション選定の基準
- 必須コーデック:H.264(libx264)、AAC(fdk-aac)、VP9(libvpx)
- ハードウェアアクセラレーション:VideoToolbox(macOS 標準)
- 配信:RTMP(rtmpdump)、SRT(srt)
- 字幕・画像:libass、webp
用途別推奨構成
- Web 配信者向け:fdk-aac、libvpx、webp、libass
- ライブ配信者向け:fdk-aac、rtmpdump、srt、libass
- 動画編集者向け:fdk-aac、libass、libvpx、webp、libvmaf、zimg、libvidstab
- 開発者向けフル構成:すべてのオプションを有効化
インストール後の確認
ffmpeg -version
でビルド構成を確認ffmpeg -encoders
で利用可能なエンコーダを確認ffmpeg -formats
で対応フォーマットを確認
最初から用途に合ったオプションを選んでインストールすることで、後から「使えない機能」に悩まされることなく、FFmpeg の強力な機能をフル活用できます。
macOS と Homebrew の組み合わせは、FFmpeg の導入とメンテナンスを非常にシンプルにしてくれます。ぜひ本記事を参考に、自分の用途に最適な FFmpeg 環境を構築してみてください。
関連リンク
- article
FFmpeg を macOS で最適導入:Homebrew +オプション選定で機能漏れゼロ
- article
FFmpeg デインターレース比較:yadif vs bwdif vs nnedi3 の画質と速度検証
- article
FFmpeg 音ズレを根治:VFR→CFR 変換と PTS 補正の実践ガイド
- article
FFmpeg アーキテクチャ超図解:demuxer→decoder→filter→encoder→muxer の流れを一望
- article
Node.js × FFmpeg で音声抽出・変換:MP3/AAC/Opus への最短手順
- article
Node.js × FFmpeg でサムネイル自動生成:キーフレーム抽出とスプライト化
- article
Redis セットアップ完全版(macOS/Homebrew):設定テンプレ付き最短構築
- article
FFmpeg を macOS で最適導入:Homebrew +オプション選定で機能漏れゼロ
- article
Python を macOS で快適構築:pyenv + uv + Rye の最小ストレス環境
- article
ESLint を Yarn + TypeScript + React でゼロから構築:Flat Config 完全手順(macOS)
- article
Dify を macOS でローカル検証:Docker Compose で最短起動する手順
- article
Prisma vs Drizzle vs Kysely:DX・型安全性・最適化余地を実測比較
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来