5.2 KiB
Amazon PVD Mezzanine Encoder
Automatisches Python-Tool zur Erstellung von Amazon PVD-konformen Mezzanine-VOD-Dateien und Audio-Master-Dateien (ProRes • Blu-ray • DVD • PAL • NTSC • Interlaced)
Features
- Vollautomatische Erkennung von SD/HD, PAL/NTSC und interlaced Material
- ProRes-Quellen mit mehreren Tonspuren werden unterstuetzt
- Audio-Sprache und Layout aus Dateinamen (
DEU51_ENG20,DEU20, usw.) - HD-PVD-MP4 mit 30 Mbit/s und deutscher Stereo-Spur
- Automatischer Downmix von deutscher 5.1-Spur auf Stereo, wenn keine deutsche Stereo-Spur vorhanden ist
- Separate PCM-Audio-MOVs fuer deutsche Tonspuren und originalsprachige Tonspuren
- Bester Deinterlacer (
bwdif mode=0) → saubere 25 fps bei PAL-DVDs (kein Double-Framerate) - Automatische Farbraum-Konvertierung (Rec.601 PAL/NTSC ↔ Rec.709) inkl.
colorspace-Filter - Forced Subtitles werden automatisch eingebrannt (wenn
_forced.srtvorhanden) - Informative Tkinter-UI mit Analyse, Audio-Uebersicht und Encoding-Log
- Windows-Fallback ohne Tkinter mit nativen Dateidialogen und Konsolen-Log
- Amazon PVD optimierte Parameter (Bitrate, Level, GOP, x264-Settings)
- Saubere Metadaten +
faststartfür beste Streaming-Performance - Funktioniert mit Drag & Drop (
.batoder direkt auf Script ziehen)
Voraussetzungen
- Windows (getestet)
- FFmpeg + FFprobe im
PATH, inC:\Tools\FFMPEGoder inC:\Software - Python 3.10+
- Schreibzugriff auf den Ausgabeordner
F:\VODoderH:\VOD
Installation & Nutzung
- Repo klonen oder herunterladen
ffmpeg.exeundffprobe.exeinC:\Software\ablegen (oder Pfade im Script ändern)- Optional:
create_mezzanine.batanlegen:@echo off set "PYTHON_EXE=%LocalAppData%\Programs\Python\Python311\python.exe" if exist "%PYTHON_EXE%" ( "%PYTHON_EXE%" "%~dp0pvd_mezzanine.py" %* ) else ( py -3 "%~dp0pvd_mezzanine.py" %* ) pause - Tool starten:
.\create_mezzanine.bat - In der UI Quelle auswaehlen, analysieren und Encoding starten.
Wenn die installierte Python-Version kein Tkinter mitbringt, oeffnet das Tool automatisch einen Windows-Dateidialog fuer die Quelle, verwendet H:\VOD als Ausgabeordner und zeigt die Analyse sowie das Encoding-Log in der Konsole.
Fuer automatisierte CLI-Laeufe kann das Encoding direkt gestartet werden:
py -3 .\pvd_mezzanine.py --cli "C:\Pfad\zur\Quelle.mov"
Alternativ kann die Datei direkt als erster Parameter uebergeben werden:
.\create_mezzanine.bat "C:\Pfad\zur\Quelle.mov"
Ausgabe
Das Script schreibt die fertige Mezzanine-Datei standardmäßig nach:
H:\VOD
Der MP4-Dateiname wird automatisch aus dem Quellpfad bzw. Blu-ray-Projektordner gebildet und endet auf:
_DEU20_PVD.mp4
Bei ProRes-Quellen werden zusaetzlich Audio-MOVs erzeugt:
Titel_DEU_AUDIO_PCM.mov
Titel_OV_AUDIO_PCM.mov
Wenn nur deutsche Tonspuren vorhanden sind, wird nur Titel_DEU_AUDIO_PCM.mov erzeugt.
ProRes-Audio-Namen
Die Sprache und das Tonformat der Tonspuren werden aus dem Dateinamen gelesen. Die Tokens stehen in der Reihenfolge der Audiospuren im ProRes.
Beispiele:
Film_DEU51_ENG20.mov
- Spur 1: Deutsch 5.1
- Spur 2: Englisch 2.0
Film_DEU20_DEU51.mov
- Spur 1: Deutsch 2.0
- Spur 2: Deutsch 5.1
- Es wird nur eine deutsche PCM-Audio-MOV erzeugt.
Untertitel
Forced Subtitles werden automatisch eingebrannt, wenn neben der Quelle eine gleichnamige Datei mit dem Suffix _forced.srt liegt.
Beispiel:
Film.mkv
Film_forced.srt
Audio-Ausgabe
- Das PVD-MP4 bekommt immer deutschen Stereo-Ton.
- Wenn eine deutsche 2.0-Spur vorhanden ist, wird sie verwendet.
- Wenn keine deutsche 2.0-Spur vorhanden ist, wird die erste deutsche Spur auf Stereo heruntergemischt.
- Alle deutschen Tonspuren werden als uncompressed PCM in eine separate MOV geschrieben.
- Alle nicht-deutschen Tonspuren werden als uncompressed PCM in eine separate MOV geschrieben.
Konfiguration
Die wichtigsten Parameter stehen in config.json. Wenn die Datei fehlt, wird sie beim Start mit Default-Werten erzeugt.
{
"ffmpeg": {
"ffmpeg_exe": "",
"ffprobe_exe": "",
"search_dirs": [
"C:\\Tools\\FFMPEG",
"C:\\Software"
]
},
"output": {
"base_dir": "",
"preferred_dirs": [
"F:\\VOD",
"H:\\VOD"
]
},
"video": {
"hd_bitrate": "30M",
"hd_maxrate": "35M",
"hd_bufsize": "50M",
"sd_bitrate": "8M",
"sd_maxrate": "10M",
"sd_bufsize": "15M"
},
"audio": {
"mp4_bitrate": "256k",
"sample_rate": "48000",
"pcm_codec": "pcm_s24le"
}
}
FFmpeg wird in dieser Reihenfolge gesucht:
- Explizite Pfade aus
ffmpeg_exeundffprobe_exe PATHC:\Tools\FFMPEGC:\Software
Das Zielverzeichnis wird so bestimmt:
output.base_dir, wenn gesetzt- erstes vorhandenes Verzeichnis aus
output.preferred_dirs, standardmaessigF:\VOD, dannH:\VOD - falls keines existiert, der erste Preferred-Dir-Wert
Git-Hinweis
Die lokale .env enthält Zugangsdaten und wird absichtlich nicht versioniert. Neue Änderungen sollten zusammen mit einer passenden README-Aktualisierung committed und nach main gepusht werden.