この記事でわかること
- 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
使用可能なプロファイル: baseline、main、high
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 チートシートです。手元に置いておくと調べる時間を短縮できます。
関連記事
一次ソース: trac.ffmpeg.org/wiki/HWAccelIntro / developer.apple.com/documentation/videotoolbox