Операторам видео-батчей, которые берут в аренду удалённый Mac mini M4 под ночные волны транскода, нужна не только строка -hwaccel videotoolbox, а согласованная матрица: сколько аппаратных сессий держит unified memory, какой preset и битрейт не раздувают очередь записи, куда направить временные файлы и какие таймауты ставить при чтении из другого региона. Ниже — практический каркас под FFmpeg 6.x/7.x на Apple Silicon. Выбор RAM и профиля под ProRes/прокси — в материале о вычислительном профиле и 16 ГБ против 24 ГБ; регион, RTT и экономика узлов — в обзоре регионов и TCO; расширенная таблица VT по растру — в заметке о параллельном VideoToolbox. Страницы заказа по площадкам: Япония, Сингапур, Корея, Гонконг, запад США — и общий каталог заказа.
Сценарии пакетного транскода
Типичные цепочки на арендованном M4: нормализация меззанинов в H.264/HEVC для доставки, пакетная генерация превью, ремасштабирование с минимальным числом CPU-фильтров, повторная упаковка контейнера с копированием аудио. В кросс-региональном режиме доминирует не скорость энкодера, а чтение источника и запись выхода на APFS: FFmpeg держит кольцевые буферы, VideoToolbox — поверхности кадров, а оркестратор — свои дедлайны. Поэтому сценарий всегда описывается тройкой «источник данных — параллелизм воркеров — политика таймаутов», а не одной командой.
Если источник в объектном хранилище, согласуйте регион воркера с краем данных (см. страницы узлов выше и материал о TCO). Для длинных GOP и тяжёлых контейнеров закладывайте запас на повторное открытие файла и на пики I/O при старте каждого задания.
Границы аппаратных возможностей
На M4 одна плоскость unified memory обслуживает CPU, GPU и медиадвижок: каждая дополнительная пара «декод VT + энкод VT» добавляет резидентные буферы кадров и снижает запас под фильтры и ОС. Аппаратный путь быстрый, пока не включаются тяжёлые -vf на CPU или 10-битные цепочки, которые вынуждают лишние копии пикселей.
Практическая эвристика: на 16 ГБ держите консервативный потолок из матрицы ниже; на 24 ГБ добавьте ровно одну сессию того же «класса» (например ещё один 1080p60), затем подтвердите по Activity Monitor и длительности минуты исходника. Температурный троттлинг на Mac mini встречается реже, чем давление памяти и очередь диска.
Матрица параметров
Используйте таблицу как стартовый профиль раннера; числа — ориентиры для h264_videotoolbox / hevc_videotoolbox без тяжёлого постпроцесса. Preset в VT задаётся через -preset (например fast / medium): более медленный вариант обычно даёт лучшую эффективность битрейта при том же ограничении по реальному времени очереди.
| Параллельные VT-сессии (M4 16 / 24 ГБ) | Preset VT | I/O (вход → выход) | Временный каталог (TMPDIR) | Таймаут задания / чтения | Деградация при перегрузке |
|---|---|---|---|---|---|
| 2 / 3 (1080p24–30, SDR) | fast |
Локальный NVMe → тот же том | /Volumes/scratch/tmp |
Wall: 3× локальный baseline; сеть: поднять -rw_timeout (мкс для протоколов ffmpeg) |
−1 сессия; перейти на medium для снижения пиков битрейта |
| 1 / 2 (1080p50–60) | medium |
Сеть (S3-подобное) → локальный выход | Тот же том, что и выход (избегать кросс-томовых копий) | Удвоить оценку по сравнению с локальным чтением; TTL оркестратора ≥ p95 + 30% | Сериализовать сеть: max 1 активное чтение на воркер; отложить второй энкод |
| 1 / 2 (4K24–30 SDR) | medium |
Локальный → локальный; без параллельных тяжёлых писателей | $TMPDIR на быстром томе, отдельно от системного |
timeout 90m (GNU) или лимит планировщика; внутри ffmpeg — таймауты демультиплексора |
Убрать CPU-фильтры из цепочки; оставить один 4K на узел |
| 1 / 1 (4K50–60 или высокий битрейт) | slow или medium |
Только локальный ingest; сеть — после предкопирования | Выделенный scratch с ≥15% свободного APFS | Щедрый лимит + сегменты по GOP/частям файла | Разбить файл; снизить параллелизм очереди глобально |
Пример: два параллельных 1080p на локальном диске (проверьте совместимость декода источника с VT):
export TMPDIR=/Volumes/scratch/tmp
mkdir -p "$TMPDIR"
ffmpeg -hide_banner -nostdin -hwaccel videotoolbox -i "$SRC" \
-c:v h264_videotoolbox -preset fast -b:v 8M -maxrate 9M -bufsize 18M \
-pix_fmt yuv420p -c:a aac -b:a 160k "${DST}.part" \
&& mv "${DST}.part" "$DST"
Пример: HEVC с тегом hvc1 и ограничением нагрузки на буферы:
ffmpeg -hwaccel videotoolbox -i "$SRC" \
-c:v hevc_videotoolbox -preset medium -tag:v hvc1 -b:v 18M \
-maxrate 22M -bufsize 44M -c:a copy "${DST}.part" \
&& mv "${DST}.part" "$DST"
Для чтения по сети добавьте параметры таймаута, подходящие вашему протоколу (см. документацию ffmpeg для конкретного входа), и логируйте отдельно ошибки демультиплексора и кодека.
Очередь и диск
Оркестратор очереди должен знать не только CPU, но и число активных писателей на том: два FFmpeg, пишущих большие MP4 на один насыщенный том, могут удлинить хвост сильнее, чем третья VT-сессия. Введите семафор «не более N одновременных энкодов на диск» и разведите тяжёлые задачи по фазам.
TMPDIR обязан указывать на том с запасом места: промежуточные файлы, буферы и атомарные .part быстро съедают свободный объём. Не используйте сетевой том для временных файлов VT без явных измерений латентности.
Политика таймаутов: задавайте предел wall time из тройного локального прогона того же профиля при кросс-региональном источнике; повторы делайте идемпотентными (уникальный временный файл → mv). Бэкофф для транзиентных сетевых сбоев: например 30 с, 2 мин, 8 мин, не более трёх попыток без классификации причины.
export TMPDIR=/Volumes/scratch/tmp timeout 120m ffmpeg -nostdin -hwaccel videotoolbox -i "$SRC" \ -c:v hevc_videotoolbox -preset medium -b:v 16M -c:a copy "$DST.part" \ && mv "$DST.part" "$DST"
FAQ
Нужен ли -threads для VT-энкода? Ограничивайте потоки CPU для фильтров и демульсера; сам VT задействует фиксированные аппаратные пути. Избыточные потоки на лёгкой цепочке редко помогают и ухудшают предсказуемость.
Смешивать в одной очереди VT и libx264? Только с раздельными лимитами параллелизма: программный энкодер конкурирует за память и кэш иначе, чем VideoToolbox.
Где смотреть публичные комплектации и регионы без аккаунта? Тарифы — на странице пакетов, выбор узла — в каталоге заказа и на региональных страницах из вводного абзаца; ответы по доступу — в справочном центре.
Резюме
Пакетный транскод на арендованном Mac M4 держится на связке «реалистичный параллелизм VT + дисковая дисциплина + TMPDIR + таймауты под сеть». Сверьте матрицу с вашими битрейтами, затем зафиксируйте деградацию: сначала уменьшайте число сессий, затем тяжесть preset и только потом битрейт доставки. Подобрать комплектацию и регион под ваш пайплайн можно на публичных страницах заказа — вход в аккаунт не требуется, чтобы просмотреть уровни и оформить быстрый заказ.