T-CREATOR

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

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 をインストールしますが、実はデフォルト設定では多くの機能が無効化されています

以下は、デフォルトインストールで無効化されている主な機能の一覧です。

#無効化されている機能影響を受ける用途
1GPL ライセンスのコーデック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、非フリーライセンスなど、各オプションには異なるライセンスが適用されます。商用利用や再配布を考える場合、ライセンスの理解が必要です。

#ライセンス種別主な制約該当オプション例
1LGPLソースコード開示不要(動的リンク)デフォルトの多くのライブラリ
2GPLソースコード開示必要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基本的な動画変換なし(デフォルトで可)-
2Web 配信用動画作成--with-fdk-aac★★★
3高速エンコードVideoToolbox(標準)★★★
4ライブ配信--with-rtmpdump, --with-srt★★★
5字幕焼き込み--with-libass★★
6WebP 画像--with-webp★★
7VP9/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-libassASS/SSA 字幕の焼き込み
3--with-libvpxVP9/WebM フォーマット対応
4--with-webpWebP 画像生成
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-rtmpdumpRTMP プロトコル対応
4--with-srtSRT プロトコル対応(低遅延)
5--with-libvpxVP9 エンコード

実践例 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(マイク)

配信時の推奨ビットレート

解像度とフレームレートに応じた、配信時の推奨ビットレートをまとめます。

#解像度フレームレートビットレート(推奨)
11920x1080(Full HD)60fps6000 kbps
21920x1080(Full HD)30fps4500 kbps
31280x720(HD)60fps4500 kbps
41280x720(HD)30fps2500 kbps
5854x480(SD)30fps1000 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-libvpxVP8/VP9 エンコード・デコード
3--with-opencore-amrAMR 音声コーデック(携帯電話用)
4--with-openh264H.264 エンコード(Cisco 版)
5--with-opusOpus 音声コーデック
6--with-rav1eAV1 エンコード
7--with-speexSpeex 音声コーデック
8--with-two-lameMP2 音声エンコード
9--with-xvidXvid MPEG-4 エンコード

フォーマット・プロトコル関連

#オプション機能
1--with-libblurayBlu-ray ディスク読み込み
2--with-libristRIST プロトコル(業務用配信)
3--with-libsshSSH/SFTP プロトコル
4--with-rtmpdumpRTMP プロトコル
5--with-srtSRT プロトコル(低遅延配信)
6--with-zeromqZeroMQ メッセージング

フィルタ・処理関連

#オプション機能
1--with-libass字幕レンダリング
2--with-libsoxr高品質オーディオリサンプリング
3--with-libvidstab手ぶれ補正
4--with-libvmaf動画品質評価
5--with-rubberbandオーディオタイムストレッチ
6--with-zimg高品質画像スケーリング

画像・メタデータ関連

#オプション機能
1--with-openjpegJPEG 2000 対応
2--with-webpWebP 画像フォーマット
3--with-chromaprint音声フィンガープリント
4--with-tesseractOCR(光学文字認識)
5--with-libxml2XML メタデータ処理
6--with-wavpackWavPack ロスレス音声

フル構成の利用例

フル構成でしか使えない高度な機能をいくつか紹介します。

例 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 環境を構築してみてください。

関連リンク