対象 OS: macOS 10.8以降(Intel/Apple Silicon共通)
VideoToolboxとは
VideoToolboxはmacOSに内蔵されているハードウェアビデオエンコード・デコードフレームワークです。Macに内蔵された動画エンコード用のハードウェア(Apple Siliconではメディアエンジン)を使って、動画を高速にエンコードします。
| 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 がなく、ビットレート指定(-b:v)が基本です。Apple Silicon の Mac では、-q:v(1〜100、大きいほど高画質)で画質を指定することもできます。Intel Mac では -q:v qscale not available for encoder. Use -b:v bitrate instead. と出て止まります。
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%」は楽観的で、VMAF を揃えた実測では 26〜35% でした(実測データ)。ただし、これはソフトウェアエンコーダ(libx265 と libx264)どうしの比較です。
ビットレート制御オプション
| オプション | 説明 |
|---|---|
-b:v 4M |
ターゲットビットレート(4 Mbit/s) |
-maxrate 6M |
最大ビットレート(どの1秒間もこれを超えない上限) |
-bufsize 8M |
効果なし(VideoToolboxのエンコーダは使わない) |
品質を優先する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、constrained_baseline、main、high、constrained_high、extended
Apple Silicon (M1/M2/M3) 固有のポイント
Apple SiliconのMacではより効率的なメディアエンジンが搭載されており、FFmpegのVideoToolboxはこれを自動的に使用します。特別なオプションは不要です。
hevc_videotoolbox は、10ビットの入力を10ビットのHEVC(Main10)でエンコードし、BT.2020とPQ/HLGなどの色の情報も引き継ぎます。ただし、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)での再生互換性のために推奨されます。
よくあるエラーと対処法
Unknown encoder 'h264_videotoolbox'
- FFmpegがVideoToolbox対応でビルドされていない
- Homebrew版 (
brew install ffmpeg) を使用する ffmpeg -encoders | grep videotoolboxで確認
H.265 を .avi に書き出したファイルが再生できない
- FFmpeg はエラーを出さずに書き出しますが、AVI には H.265 を入れる標準の方法がなく、ほかのソフトでは読めないファイルになる
- 出力を
.mp4または.movに変更する
品質が低い・ブロックノイズが出る
- VideoToolboxはCRFモード非対応のため
-b:vを高めに設定する(5M〜8M) - 高品質が必要な場合は
libx264/libx265ソフトウェアエンコードを検討
ソフトウェアエンコードとの使い分け
| 用途 | 推奨 |
|---|---|
| 高品質アーカイブ | libx264 / libx265(ソフトウェア) |
| 高速変換・バッチ処理 | VideoToolbox |
| Final Cut Pro連携 | VideoToolbox(hvc1 タグ) |
| CRF品質制御が必要 | ソフトウェアエンコード |
速度と品質の目安
結果はチップ(M1〜M3、Intel)や解像度で変わります。
- エンコード速度: VideoToolboxは、ふつう
libx264 -preset mediumより速く処理できます。ビデオエンコードエンジンは、M1 Maxが2つ、M1 Ultraが4つです(Apple)。 - 品質トレードオフ: 同じVMAFを狙うと、VideoToolboxは
libx264より高めのビットレートが必要になりがちです。差の大きさはチップ世代と素材に依存します。CRFが使えずビットレートが最も予測しやすい制御のため、ビットレートを絞りすぎるとブロックノイズが出やすくなります。 - HEVC効果:
hevc_videotoolboxはH.264比で同品質を明確に小さいサイズで出せることが多いです。
つまずきやすいポイント
CRF(-crf/-cq)を指定しても効かない
- 症状:
-crf 23を付けてもエラーになる、または無視される。 - 原因: VideoToolboxにはCRFがありません。画質の指定は
-q:v(1〜100、大きいほど高画質)で、使えるのはApple SiliconのMacだけです。 - 対処:
-b:v(例:5M)でターゲットを決め、-maxrateで上限を付ける(Apple Siliconなら-q:vも使える)。品質が足りなければビットレートを上げるか、品質優先ならlibx264 -crfに切り替える。
-q:v の挙動がlibx264と違う
- 症状:
-q:vを渡したが期待した画質にならない。または-q:v qscale not available for encoder. Use -b:v bitrate instead.と出て止まる。 - 原因: VideoToolboxの
-q:vは1〜100で、大きいほど高画質になる。使えるのはApple SiliconのMacだけで、Intel Macでは上のメッセージで止まる。 - 対処: Apple Siliconでは、画質を上げたいときに
-q:vの値を大きくする。Intel Macでは-b:vを使う。
Apple Silicon と Intel Macで品質・速度が揃わない
- 症状: 同じコマンドでもIntel MacとApple Siliconで結果が違う。
- 原因: メディアエンジンの世代差。Apple Siliconは専用エンジンが効率的で、Intel機のiGPUとは品質特性が異なる。
- 対処: 機種ごとにビットレートを微調整する。古いIntel MacではH.265非対応のことがある。
ffmpeg -encodersはFFmpegに組み込まれたエンコーダの一覧で、非対応のMacでもhevc_videotoolboxが表示されるので、短い動画を実際にエンコードして確かめる。
.mp4で再生できるのにApple製品で映像が出ない
- 症状: HEVCを出力したらmacのVLCでは再生できるがiPhone/Apple TVで映らない。
- 原因: HEVCのコーデックタグが
hev1のままで、Appleのデバイス・アプリはhvc1タグの方が互換性が高い。 - 対処: Appleでの再生を狙うなら
-tag:v hvc1を付けて出力する。コンテナは.mp4または.movにする。
よくある質問
VideoToolboxでCRF品質制御はできる?
-crf はありません。Apple SiliconのMacでは、-q:v(1〜100、大きいほど高画質)でビットレートの代わりに画質を指定できます。Intel Macでは -q:v が使えないので、-b:v でターゲットを決め、-maxrate で上限を付けます。どのMacでもCRFのような「サイズは可変でも画質一定」にしたいなら、libx264 -crf を使ってください。
M1とIntel Macで同じコマンドを使える?
-b:v を使う基本コマンドは共通です(-q:v はApple Siliconだけ)。ただしApple Siliconはメディアエンジンが効率的で、同じビットレートでも品質・速度特性が異なります。古いIntel MacはH.265非対応のことがあります。ffmpeg -encoders の一覧に出ても使えないことがあるので、短い動画で試してください。
ProResはVideoToolboxで出せる?
Apple Siliconの一部世代で prores_videotoolbox が利用できます。Final Cut Pro向けの中間コーデックとして有用ですが、使えるかどうかはチップ世代によります。ffmpeg -encoders | grep prores で分かるのはFFmpegに組み込まれているかどうかだけなので、短い動画で試してください。
配信向けに低遅延エンコードしたい
-realtime true(対応ビルド)で遅延を抑えられます。-bufsize はVideoToolboxでは効かないので、小さくしても遅延は減りません。厳密な低遅延が必要な場合は、ビットレートを安定させるCBR寄りの設定が向きます。
ビットレートはどのくらいに設定すべき?
1080pのH.264なら4〜6Mbps、HEVCなら2〜4Mbpsが一般的な目安です。動きの激しい素材やブロックノイズが気になる場合は1〜2割上げてください。CRFがない分、ビットレートに余裕を持たせるのが安全です。