VideoToolbox は並列無制限ではなく、ユニファイドメモリ と APFS IO が同時セッションを決めます。ソースが遠いとデコード待ちが支配的です。本稿は 算力レンタル の実務マトリクス。ProRes・16/24GB と リージョン・TCO を併読してください。
VideoToolbox セッション数と解像度しきい値表
下表は レンタル M4 の VT エンコード 同時本数 の保守的出発点です(h264_videotoolbox / hevc_videotoolbox)。GOP・ビットレートで必ず検証してください。
| 主出力ラスタ | M4 16GB:初期値 | M4 24GB:初期値 | 増やす前の兆候 |
|---|---|---|---|
| 1080p24–30 | VT エンコード 3 並列 | VT エンコード 4 並列 | スワップは安定でも ディスク が常時飽和 → 1本減らすか入出力をボリューム分散。 |
| 1080p50–60 | 2 並列 | 3 並列 | 1分あたりエンコード時間の伸び → メモリ/帯域制約。HDR や 10bit レーンは直列化を検討。 |
| 4K24–30(8bit SDR 典型) | 主1本+軽量(プロキシ/音声) | フルエンコード 2 並列 | セグメント時間のばらつき → 4K60 は 16GB では原則1本に。 |
| 4K50–60 または高ビットレート 4K | エンコード 1 のみ | 1〜2(計測で証明) | 並列の CPU フィルタ が同一メモリファブリックを奪う → 解析は別キューへ。 |
ffmpeg(Apple Silicon):デコード試行後 VT エンコード(ビットレートは配信に合わせる):
ffmpeg -hide_banner -hwaccel videotoolbox -i input.mov \ -c:v h264_videotoolbox -b:v 12M -maxrate 14M -bufsize 28M \ -pix_fmt yuv420p -c:a aac -b:a 192k output_1080p.mp4
HEVC(QuickTime 向けタグ):
ffmpeg -hwaccel videotoolbox -i input.mov \ -c:v hevc_videotoolbox -tag:v hvc1 -b:v 20M \ -c:a copy output_hevc.mov
CPU フィルタは -hwaccel videotoolbox の効果を相殺しがちです。
並行タスクとメモリ/ストレージ IO
16GB では 4K 2本まで許容でも、ProRes 中間が重なると遅延だけが先に膨らみます。IO は 同一高速 APFS に寄せ、空き 約15%、ディスクあたりの同時書き込み本数を制限してください。
CPU 前処理と VT は 並列上限を分離 し、前処理1キュー → VT1キューが安定しやすいです。
ノード選定(遅延/リージョン)
オブジェクトストアが遠いと 読み取り が支配的です。エンコーダより データ面の RTT を先に揃えてください。
| ソースの置き場 | 推奨 Mac ノード | VT に効く理由 |
|---|---|---|
| 東京リージョンの S3 / GCS / Azure | 日本(同一メトロのピアリングが望ましい) | シーケンシャル読みの停滞が デコード起動 を遅らせる。範囲読みの MP4/MOV は RTT に敏感。 |
| 米西の社内 NAS(VPN) | 米国西部レンタル | トンネル RTT が支配的。エンコーダより 並列リーダー数を減らす 方が効く場合がある。 |
| シンガポール近傍 CDN | シンガポールまたは最寄り APAC エッジ | キャッシュヒット地域 とワーカーを揃え、ジョブごとに太平洋横断取得を避ける。 |
取り込みと納品でノードを分けると速い場合があります。SSH 初手は SSH/VNC チェックリスト へ。
キュー タイムアウトと再試行パラメータ
HTTP タイムアウト・SSH アイドル・ジョブ TTL が重なります。期限は 尺とビットレート から決め、固定一本にしないでください。
- 壁時計: ローカル基準の 約3倍 から。
- 読み取り:
-rw_timeout/-stimeoutをプロトコルに合わせ明示。 - 再試行:
.part→ リネームで冪等化。バックオフ 30秒・2分・8分、多くは3回まで。 - 長い GOP: セグメント化で再試行コストを下げる。
GNU timeout で ffmpeg に硬い壁を付ける例:
timeout 45m ffmpeg -nostdin -hwaccel videotoolbox -i "$SRC" \ -c:v hevc_videotoolbox -b:v 18M -c:a copy "$DST.part" \ && mv "$DST.part" "$DST"
macOS は gtimeout またはオーケストレータの上限で代替。
FAQ
まとめ
解像度表で並列を決め、CPU と VT を分離し、IO とデータ面を揃え、タイムアウトと再試行を跨区域向けに伸ばす。