크로스 리전 Mac mini M4 임대에서 야간 ffmpeg 배치는 -hwaccel videotoolbox·h264_videotoolbox/hevc_videotoolbox가 흔합니다. 여기서는 병렬 VT 세션·preset/비트레이트·통합 메모리 대역·APFS 임시 경로·교차 리전 타임아웃·디그레이션을 한 표로 고정합니다. 연산·RAM 선정은 프록시·ProRes·16/24GB 매트릭스, 리전·비용은 지연·배치·구매 대비 임대와 함께 보세요.
시나리오와 반복 실패
전형 워크로드는 미즈다닝 H.264/HEVC·프록시·HDR 리랩·저해상도 다발 배치입니다. 임대 헤드리스 Mac에서 반복되는 실패는 세 가지로 압축됩니다.
- VT 과적재 → 메모리 압축 후 프레임 풀 지연·불투명 VT 오류.
- 디스크 병목 → 부트 볼륨에 중간 파일 몰림, 큐 깊이와 교차 리전 인입 지터 상관.
- TTL 과소 → 원격 객체 읽기에 LAN 기준 타임아웃, 재시도가 네트워크·APFS를 동시에 두드림.
16/24GB 연산 매트릭스로 티어를 고른 뒤 아래 동시성·디스크·TTL을 맞추세요.
하드웨어 능력 경계
VideoToolbox 병렬 상한은 문서화된 “세션 수”가 아니라 미디어 엔진·통합 메모리 프레임 버퍼·메모리 대역의 교집합에 가깝습니다. M4에선 CPU가 한가해 보여도 HW 디코드+인코드를 잡당 대역 집약 파이프로 보세요.
- 4K60 HDR·넓은 GOP는 1080p 대비 상주 표면이 비선형으로 늘어 세션 상한이 빨리 떨어집니다.
- 무거운 scale/zscale·디노이즈는 CPU 경로로 픽셀을 끌고 와 VT 안정성을 깨뜨릴 수 있습니다.
- 병렬 잡은 순차 쓰기를 겹치게 하고, 부트 APFS에서 temp와 소스 읽기가 겹치면 지연 절벽이 납니다.
워커 리전·비용은 지연·TCO 글을 참고하세요.
파라미터 매트릭스
표는 M4 임대 시작점입니다. p95 벽시계·종료 코드·디스크 여유를 본 뒤 동시성을 올리세요.
| 배치 프로필 | 동시 VT 세션(시작) | ffmpeg preset / VT 플래그 | I/O 패턴 | 임시·작업 경로 | 타임아웃 힌트 | 디그레이션 |
|---|---|---|---|---|---|---|
| 1080p24–30 미즈다닝(H.264 VT) | 16GB: 2 · 24GB: 3 | -q:v 65–75 또는 -b:v+-maxrate; 가드용 -allow_sw 0 선택 | 순차 읽기, 잡당 출력 스트림 1개 | export TMPDIR=/Volumes/Data/scratch/vt-$JOB | 교차 리전 소스면 LAN 기준 벽시계의 약 3배를 1차 상한으로 | 세션 1로 축소 → 필터 축소 → 최후 libx264로 남은 건만 |
| 4K24–30 HEVC 납품(VT) | 16GB: 1 · 24GB: 2 | -c:v hevc_videotoolbox -tag:v hvc1; 명시적 -b:v | 대용량 순차 읽기; MP4 moov 시크 주의 | 동일 스크래치 루트; 부트 디스크의 Docker 레이어와 섞지 않기 | 원격 객체 스토리지 직독이면 기준의 약 4배 | 큐 직렬화 → 타임코드 세그먼트 → 비트레이트 축소 후 CPU 폴백 |
| 720p 프리뷰·스프라이트 다발 | 16GB: 4–5 · 24GB: 6+ | -q:v 55–65; 스크럽용 짧은 GOP | 작은 파일 다수·쓰기 빈도 높음 | 배치별 하위 트리: /Volumes/Data/scratch/previews/$BATCH | 자산당 타이트 TTL; 재시도 최대 3회 | 래스터 축소 전에 ffmpeg 워커 수 축소; 시간당 스테일 temp 정리 |
실행 예(경로·비트레이트는 환경에 맞게 조정):
export TMPDIR=/Volumes/Data/scratch/ffmpeg-$$
mkdir -p "$TMPDIR"
ffmpeg -hide_banner -nostdin -hwaccel videotoolbox -i "$SRC" \
-c:v h264_videotoolbox -q:v 68 -c:a copy \
"$DST.part" && mv "$DST.part" "$DST"
ffmpeg -hide_banner -hwaccel videotoolbox -i "$SRC" \
-c:v hevc_videotoolbox -tag:v hvc1 -b:v 18M -maxrate 22M -bufsize 44M \
-c:a aac_at -b:a 192k "$DST.part" && mv "$DST.part" "$DST"
ffmpeg -rw_timeout 15000000 -stimeout 15000000 \
-hwaccel videotoolbox -i "$REMOTE_URL" \
-c:v h264_videotoolbox -b:v 12M -c:a copy "$DST.part" \
&& mv "$DST.part" "$DST"
프로토콜별 타임아웃 단위는 빌드·문서를 확인하세요. HTTP·SRT·마운트 파일 혼용 시 특히 그렇습니다.
큐·디스크 운영
타임아웃은 길이·비트레이트·RTT로 산출하고, 교차 리전이면 여유를 넣은 뒤 timeout/잡 TTL로 하드 캡을 겁니다.
- 데이터 플레인과 워커를 맞추세요. 잡당 바이트가 많이 나오는 버킷 리전에 가까운 노드를 고릅니다. 도시별 주문은 싱가포르·일본·한국·홍콩·미서부 페이지에서 비교하세요.
- 스크래치는 부트 밖. 여유 공간은 종료 코드와 동급 지표.
- 멱등 출력: .part에 쓰고 원자적 mv로 반쯤 쓴 마스터 노출을 막습니다.
- 백오프 재시도: 일시 네트워크 실패는 30초·2분·8분 간격 등으로 흩어 뜁니다.
- 장시간 배치 중 절전 방지: 제공 정책 또는 caffeinate 래퍼로 헤드리스 세션이 GOP 중간에 끊기지 않게 합니다.
timeout 90m ffmpeg -nostdin -hwaccel videotoolbox -i "$SRC" \
-c:v hevc_videotoolbox -b:v 20M -c:a copy "$DST.part" \
&& mv "$DST.part" "$DST"
래스터 상한을 중심으로 한 세션 표는 VideoToolbox 병렬 트랜스코드 임계 글과 짝을 이룹니다.
FAQ
16GB에서 VT 병렬은? 표의 1080p 행부터—보통 HW 파이프 2개 전후. Activity Monitor·디스크 큐로 검증.
-allow_sw 0? VT 실패를 빨리 드러내 CPU 폴백을 막습니다. 알림과 동시성 축소와 짝지으세요.
오디오 copy? 표준이 맞으면 -c:a copy. 채널·SR 변경 시만 재인코딩.
쿼터와 병렬 큐? 스토리지 티어가 병목이 될 수 있음. APFS 여유 두 자릿수 %·배치 후 스크래치 정리.