2026 Mac Mini mieten 7×24: HandBrake CLI vs. FFmpeg VideoToolbox — parallele Batch-Transcodes, Thermik-Gates und APFS-Wasserlinien
Langzeit-Hosting auf gemietetem Mac Mini bricht selten wegen fehlender Encoder — sondern wegen zu vieler VideoToolbox-Sitzungen auf einer NVMe-Spur, Thermik ohne Referenz-Wallzeit oder APFS-Knappheit im Mux.
Matrix HandBrakeCLI vs. FFmpeg VT, Parallelitäts-Tabelle, Platten-Checkliste, GNU parallel, Backoff, caffeinate, pmset für 7×24. Mehr: FFmpeg-Queue, Power-Matrix, APFS-FAQ, SSH/VNC (Blog ohne Login).
Drei typische Langläufer-Brüche
- Session-Überbuchung: Mehrere VT-Jobs auf einer SSD — Metadaten-Latenz, korrupte Partials.
- Thermik blind: Keine Referenz-Wallzeit — Throttle erst in Logs.
- Retries: Lineare Wiederholungen nach Mount-Flattern — Thundering Herd, volles Scratch.
Hardwarevoraussetzungen
Mietknoten = Batch-Lane: Strom, Netz, Wartung teilen sich. 7×24 nach Steady-State, nicht Demo-Spitzen.
- APFS-NVMe für Scratch; keine USB-Hubs; Thunderbolt für getrennte Pfade.
- Kernmix notieren; VT ≠ freie CPU für Demux/Filter.
- Referenzclip wöchentlich; optional Power/Lüfter loggen.
- SSH + Multiplexer; keine reinen GUI-Trigger für Marathon-Queues.
Werkzeugvergleich
HandBrakeCLI: Preset- und QC-Disziplin. FFmpeg h264_videotoolbox/hevc_videotoolbox: Filter, Segmente, HLS/DASH. Beide VT — Unterschied: Flags vs. Preset-Freeze.
| Spur | Wählen wenn | Risiko |
|---|---|---|
| HandBrakeCLI + VT-Preset | Library-Reencode, feste Presets | HandBrake-Versionsdrift — Container-Build pinnen |
| FFmpeg + VideoToolbox | Scale, Audio, Meta, Packaging | Flag-Sprawl — nur freigegebene Templates |
| Hybrid | HandBrake für Bild, FFmpeg für Post | Doppeltes Temp — TMPDIR / FFMPEG_TMPDIR auf dasselbe schnelle Scratch |
Beispielbefehle (Presets und Bitraten anpassen)
# Encoder-Liste: HandBrakeCLI --encoder-list
HandBrakeCLI -i "in.mov" -o "out.mkv" --preset "Fast 1080p30" -e vt_h264 -B 160
ffmpeg -hide_banner -nostdin -y -hwaccel videotoolbox -i "in.mov" \
-c:v hevc_videotoolbox -b:v 12M -tag:v hvc1 -c:a copy "out.mov"
Parallelitäts-Schwellentabelle
HandBrake- und FFmpeg-VT-Sitzungen gemeinsam zählen. Encoder schnell, Fabric/SSD limitieren. Referenzclip wöchentlich; Parallelität nur bei flachen Kurven erhöhen.
| Host-Profil | Standard-VT-Sessions | Gelb (drosseln) | Rot (Enqueue stop) |
|---|---|---|---|
| M4-Klasse, eine interne NVMe | 1 VT; 2 nur getrennte Geräte | Wallzeit > 110 % Baseline, zweimal hintereinander | > 125 % oder Power-Anomalie |
| M2/M3 Pro, ein Scratch-Volume | 1–2 leichte Filter; bei schwerem Scale nur 1 | > 15 % Wandzeit-Regression zum gleitenden Median | Sichtbare Kernel-Thermiklogs oder blockierte Admin-SSH |
| M1/M2 Basis, geteilte Lane | 1 VT-Job; CPU-Filter in zweiter Queue mit Mutex | NVMe-Latenz-Ausreißer in Stichproben | Jede Platten-Rot-Schwelle (siehe unten) |
Manuelle Parallelität und Queue-Backoff
Ein Driver besitzt Enqueue. GNU parallel --jobs/--delay per Tabelle; --joblog für Audit.
export TMPDIR="$HOME/Library/Caches/transcode-scratch"
export FFMPEG_TMPDIR="$TMPDIR"
parallel --jobs 1 --delay 8 --retries 3 --joblog vt.log --resume-failed \
./encode-one.sh ::: ./queue/*.mov
Backoff exponentiell + Jitter — kein synchroner Sturm.
base=60; cap=600; attempt=1; max_attempt=5; delay=$base
until ./encode-one.sh; do
jitter=$(( delay / 4 ))
sleep $(( delay + RANDOM % (jitter + 1) ))
delay=$(( delay * 2 ))
[ "$delay" -gt "$cap" ] && delay=$cap
attempt=$(( attempt + 1 ))
[ "$attempt" -gt "$max_attempt" ] && exit 1
done
caffeinate und pmset — Mietkontext
caffeinate -dimsu -- ./batch-driver.shoder-w <PID>am Supervisor.- pmset nur mit Provider-OK;
pmset -g custom/assertionssichern; bei SSH-Freeze rollback — Matrix.
Festplatte und Protokolle
Video-IO bläht Staging; APFS-Gates + Logrotate gegen Telemetrie-Überlauf.
Parameter-Checkliste (Runbook)
- Scratch: dedizierter Ordner auf schnellstem Volume;
TMPDIRundFFMPEG_TMPDIRvor Queue-Start exportieren. - Gelb: neue Jobs pausieren unter 20 % frei oder unter 80 GB absolut — strengerer Wert gewinnt.
- Rot: Enqueue hart stoppen unter 15 % oder 50 GB; laufende Jobs kontrolliert drainen.
- Inodes:
df -ihim selben Gate wie df -h bei Segmentern. - Logs: stdout deckeln,
~/Library/Logsrotieren; launchd ThrottleInterval ≥ 120 s auf Respawn-Wrappern.
Sieben Runbook-Schritte
- Referenzclip-Baseline und Thermik notieren.
- Scratch,
TMPDIR, launchd/Wrapper. - Parallelität + GNU parallel
--jobs/--delay. - Platten-Gate vor Enqueue; Gelb/Rot handeln.
- caffeinate um Driver; pmset nur freigegeben.
- Backoff mit Cap/Jitter im Gate-Skript.
- Postmortem-Felder für Hilfe-Tickets.
Zitierfähige Parameter
- 110 % / 125 % Referenz-Wallzeit für Gelb bzw. Rot bei VT-Dauerlast.
- 20 % / 80 GB Gelb; 15 % / 50 GB Rot auf APFS — strengerer Wert gewinnt.
- 60–600 s exponentielles Backoff mit bis zu 30 % Jitter; 3–5 Versuche dann Eskalation.
- parallel --jobs 1 --delay 8 als konservativer Start auf geteilter Miet-NVMe.
FAQ
- Darf ich HandBrakeCLI und FFmpeg VT in einer Queue mischen?
- Ja, wenn ein Supervisor die Gesamt-VT-Sessions deckelt und beide Pfade dieselben Platten-Gates teilen.
- Macht VideoToolbox CPU-Tuning überflüssig?
- Nein — Demux, Filter und Audio bleiben teuer. Messen Sie End-to-End-Wallzeit.
- Soll ein Mieter pmset ändern?
- Nur mit Provider-Zustimmung; caffeinate bevorzugen; SSH-Freeze → sofort rollback.
- Ist 7×24 auf gemieteter Hardware ohne SLA-Risiko möglich?
- Mit Gates, Logs und getrenntem Scratch ja; bei geteiltem Host Nacht-Fenster bevorzugen.
- Erstkontakt?
- SSH/VNC-Checkliste, dann kaufen.html.
Nächster Schritt: Mini-Paket für Transcode-Dauerlast wählen — Preise, kaufen.html ohne Pflicht-Login; Hilfe-Center; Praxisstimmen in Nutzerberichten; weiterer Blog.
Mac Mini für HandBrake- und FFmpeg-VT-Pipelines
Passen Sie ein Miet-Paket an 7×24- oder nachtlastige VideoToolbox-Transcodes an. Startseite, Pakete, kaufen.html ohne Login-Pflicht; Hilfe-Center; Blog mit Queue-, APFS- und Power-Playbooks.
Transcode-Lane sichern: Pakete, kaufen.html, Hilfe, Blog.