この記事でわかること

  • VideoToolboxとは何か、どのMacで使えるか
  • h264_videotoolbox および hevc_videotoolbox の基本的な使い方
  • ビットレート・品質オプションの設定方法
  • Apple Silicon固有のポイント
  • よくあるエラーと対処法

テスト済みバージョン: FFmpeg 6.1(macOS / Apple Silicon環境)
対象 OS: macOS 10.8以降(Intel/Apple Silicon共通)


VideoToolboxとは

VideoToolboxはmacOSに内蔵されているハードウェアビデオエンコード・デコードフレームワークです。MacのGPU(Intel iGPU、Apple Siliconの内蔵GPU)を使用して動画を高速にエンコードします。

Mac対応コーデック
Intel Mac(2011以降)H.264
Intel Mac(2017以降)H.264, H.265
Apple Silicon(M1/M2/M3)H.264, H.265, ProRes(一部)

前提条件

VideoToolboxはmacOSに標準で含まれているため、特別なドライバーは不要です。ただしFFmpegがVideoToolbox対応でビルドされている必要があります。

HomebrewのFFmpegは標準でVideoToolboxを有効にしています:

※ このコマンドはApple Silicon/macOS環境が必要です
brew install ffmpeg

対応エンコーダーの確認:

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -encoders | grep videotoolbox

h264_videotoolbox の基本コマンド

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -i input.mp4 -c:v h264_videotoolbox -b:v 4M -c:a aac -b:a 128k output_vt.mp4

重要: VideoToolboxはCRFモード(-cq)をサポートしておらず、ビットレート指定(-b:v)が基本です。


hevc_videotoolbox(H.265)

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -i input.mp4 -c:v hevc_videotoolbox -b:v 2M -c:a aac -b:a 128k output_hevc_vt.mp4

H.265はH.264と同等の品質でファイルサイズを約40〜50%削減できます。


ビットレート制御オプション

オプション説明
-b:v 4Mターゲットビットレート(4 Mbit/s)
-maxrate 6M最大ビットレート(VBRの上限)
-bufsize 8Mバッファサイズ(-maxrate と併用)

品質を優先するVBR設定例:

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -i input.mp4 -c:v h264_videotoolbox -b:v 5M -maxrate 8M -bufsize 10M -c:a aac output.mp4

Proファイル指定

H.264のプロファイルを指定できます:

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -i input.mp4 -c:v h264_videotoolbox -profile:v high -b:v 4M output.mp4

使用可能なプロファイル: baselinemainhigh


Apple Silicon (M1/M2/M3) 固有のポイント

Apple SiliconのMacではより効率的なメディアエンジンが搭載されており、FFmpegのVideoToolboxはこれを自動的に使用します。特別なオプションは不要です。

macOS 13(Ventura)以降では hevc_videotoolbox でHDR(Dolby Vision, HDR10)コンテンツも扱える場合があります:

※ このコマンドはApple Silicon/macOS環境が必要です
ffmpeg -i input_hdr.mp4 -c:v hevc_videotoolbox -b:v 8M -tag:v hvc1 output_hdr.mp4

-tag:v hvc1 はAppleデバイス(iPhone、iPad、Apple TV)での再生互換性のために推奨されます。


よくあるエラーと対処法

Encoder h264_videotoolbox not found

  • FFmpegがVideoToolbox対応でビルドされていない
  • Homebrew版 (brew install ffmpeg) を使用する
  • ffmpeg -encoders | grep videotoolbox で確認

Error: -2 (codec not currently supported in this container format)

  • H.265を.aviなどの非対応コンテナに出力しようとしている
  • 出力を .mp4 または .mov に変更する

品質が低い・ブロックノイズが出る

  • VideoToolboxはCRFモード非対応のため -b:v を高めに設定する(5M〜8M)
  • 高品質が必要な場合は libx264 / libx265 ソフトウェアエンコードを検討

ソフトウェアエンコードとの使い分け

用途推奨
高品質アーカイブlibx264 / libx265(ソフトウェア)
高速変換・バッチ処理VideoToolbox
Final Cut Pro連携VideoToolbox(hvc1 タグ)
CRF品質制御が必要ソフトウェアエンコード

速度と品質の目安(実測レンジ)

数値は公開ベンチマークで観測される典型的なレンジで、チップ(M1〜M3、Intel)や解像度で変動します。

  • エンコード速度: Apple SiliconのM1/M2クラスで1080p H.264を実時間の約5〜10倍で処理できることが多く、libx264 -preset medium(実時間1.5〜3倍)より明確に高速です。M1/M2はメディアエンジンを1〜2基搭載し、Mシリーズのupper(Pro/Max)ほどスループットが上がります。
  • 品質トレードオフ: 同じVMAFを狙うと、VideoToolboxは libx264 より高めのビットレートが必要になりがちです。差の大きさはチップ世代と素材に依存します。CRFが使えずビットレートが最も予測しやすい制御のため、ビットレートを絞りすぎるとブロックノイズが出やすい点に注意してください。数値はチップ・素材・解像度で変わります。
  • HEVC効果: hevc_videotoolbox はH.264比で同品質を明確に小さいサイズで出せることが多く、配信・保存どちらでも効きます。

つまずきやすいポイント

CRF(-crf/-cq)を指定しても効かない

  • 症状: -crf 23 を付けてもエラーになる、または無視される。
  • 原因: VideoToolboxはCRFをサポートしません。ビットレートが最も予測しやすい制御です。-q:v オプションは存在しますが、libx264の -qscale とは挙動が異なり、バージョン・デバイス依存です。
  • 対処: -b:v(例: 5M)でターゲットを決め、-maxrate/-bufsize でVBRの上限を制御する。品質が足りなければビットレートを上げるか、品質優先なら libx264 -crf に切り替える。

-q:v の挙動がlibx264と違う

  • 症状: -q:v を渡したが期待した画質にならない。
  • 原因: VideoToolboxの -q:v(quality)は実装・バージョンで挙動が変わり、libx264の -qscale とは別物。安定して効かない場合がある。
  • 対処: 基本は -b:v ベースで制御し、-q:v に依存しない。確実な品質指定が必要なソフトウェアエンコードを使う。

Apple Silicon と Intel Macで品質・速度が揃わない

  • 症状: 同じコマンドでもIntel MacとApple Siliconで結果が違う。
  • 原因: メディアエンジンの世代差。Apple Siliconは専用エンジンが効率的で、Intel機のiGPUとは品質特性が異なる。
  • 対処: 機種ごとにビットレートを微調整する。古いIntel MacではH.265非対応のことがあるため ffmpeg -encoders | grep videotoolbox で対応を確認する。

.mp4で再生できるのにApple製品で映像が出ない

  • 症状: HEVCを出力したらmacのVLCでは再生できるがiPhone/Apple TVで映らない。
  • 原因: HEVCのコーデックタグが hev1 のままで、Appleのデバイス・アプリは hvc1 タグの方が互換性が高い。
  • 対処: Appleでの再生を狙うなら -tag:v hvc1 を付けて出力する。コンテナは .mp4 または .mov にする。

よくある質問

VideoToolboxでCRF品質制御はできる?

CRFはサポートされていません。ビットレートが最も予測しやすい制御です。-b:v でターゲットを決め、-maxrate/-bufsize で上限を管理します。-q:v オプションは存在しますが、libx264とは挙動が異なりバージョン・デバイス依存のため当てにしないでください。CRFのような「サイズは可変でも画質一定」が必要なら libx264 -crf を使ってください。

M1とIntel Macで同じコマンドを使える?

基本コマンドは共通です。ただしApple Siliconはメディアエンジンが効率的で、同じビットレートでも品質・速度特性が異なります。古いIntel MacはH.265非対応のことがあるため、事前に対応エンコーダを確認してください。

ProResはVideoToolboxで出せる?

Apple Siliconの一部世代で prores_videotoolbox が利用できます。Final Cut Pro向けの中間コーデックとして有用ですが、対応はチップ世代に依存するため ffmpeg -encoders | grep prores で確認してください。

配信向けに低遅延エンコードしたい

-realtime true(対応ビルド)やバッファを小さくする -bufsize の調整で遅延を抑えられます。厳密な低遅延が必要な場合は、ビットレートを安定させるCBR寄りの設定が向きます。

ビットレートはどのくらいに設定すべき?

1080pのH.264なら4〜6Mbps、HEVCなら2〜4Mbpsが一般的な目安です。動きの激しい素材やブロックノイズが気になる場合は1〜2割上げてください。CRFがない分、ビットレートに余裕を持たせるのが安全です。


関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート

関連記事


一次ソース: trac.ffmpeg.org/wiki/HWAccelIntro / developer.apple.com/documentation/videotoolbox