対象 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がない分、ビットレートに余裕を持たせるのが安全です。

関連記事