# Amazon PVD Mezzanine Encoder Automatisches Windows-Tool zur Erstellung von Amazon-PVD-Mezzanine-Dateien aus ProRes-, Blu-ray-, DVD- und anderen Videodateien. Das Tool erzeugt: - ein PVD-MP4 mit deutschem Stereo-Ton - eine separate MOV-Datei mit allen deutschen Tonspuren als uncompressed PCM - falls vorhanden, eine separate MOV-Datei mit allen originalsprachigen bzw. nicht-deutschen Tonspuren als uncompressed PCM ## Aktueller Workflow 1. Quelle auswaehlen oder als Parameter uebergeben. 2. FFprobe analysiert Video, Audio, Framerate, Aufloesung, Interlacing und Farbraum-Metadaten. 3. Audio-Sprache und Layout werden bevorzugt aus dem Dateinamen gelesen, z.B. `DEU51_ENG20`. 4. Das PVD-MP4 wird erzeugt. 5. Danach werden die Audio-MOVs erzeugt. ## Voraussetzungen - Windows - Python 3.10+ - FFmpeg und FFprobe - Schreibzugriff auf das Zielverzeichnis FFmpeg und FFprobe werden automatisch gesucht: 1. explizite Pfade aus `config.ini` 2. `PATH` 3. `C:\Tools\FFMPEG` 4. `C:\Software` ## Starten Interaktiv: ```powershell .\create_mezzanine.bat ``` Mit direktem Dateiparameter: ```powershell .\create_mezzanine.bat "D:\Trailers\Film_DEU51_ENG20.mov" ``` Direkt per Python: ```powershell py -3 .\pvd_mezzanine.py "D:\Trailers\Film_DEU51_ENG20.mov" ``` Kompatibler CLI-Modus: ```powershell py -3 .\pvd_mezzanine.py --cli "D:\Trailers\Film_DEU51_ENG20.mov" ``` Wenn Tkinter in der verwendeten Python-Installation verfuegbar ist, startet eine UI mit Analyse, Audio-Uebersicht und Encoding-Log. Wenn Tkinter nicht verfuegbar ist, oeffnet das Tool einen nativen Windows-Dateidialog fuer die Quelle und laeuft danach im Konsolenmodus weiter. Wird eine Datei als Parameter uebergeben, wird kein Dialog geoeffnet. ## Ausgabe Das Zielverzeichnis wird ueber `config.ini` bestimmt: 1. `output.base_dir`, wenn gesetzt 2. erstes vorhandenes Verzeichnis aus `output.preferred_dirs` 3. falls keines existiert, der erste Eintrag aus `output.preferred_dirs` Default: ```ini preferred_dirs = F:\VOD, H:\VOD ``` Damit wird `F:\VOD` bevorzugt, wenn vorhanden. Sonst wird `H:\VOD` verwendet, wenn vorhanden. Dateinamen: ```text Titel_DEU20_PVD.mp4 Titel_DEU_AUDIO_PCM.mov Titel_OV_AUDIO_PCM.mov ``` Wenn nur deutsche Tonspuren vorhanden sind, wird keine `Titel_OV_AUDIO_PCM.mov` erzeugt. ## ProRes-Audio im Dateinamen Bei ProRes-Quellen muss die Reihenfolge der Audiospuren im Dateinamen stehen, wenn die Datei selbst keine verlaesslichen Sprach-Metadaten hat. Format: ```text SPRACHEFORMAT ``` Beispiele: ```text Film_DEU51_ENG20.mov ``` - Spur 1: Deutsch 5.1 - Spur 2: Englisch 2.0 ```text Film_DEU20_DEU51.mov ``` - Spur 1: Deutsch 2.0 - Spur 2: Deutsch 5.1 - Es wird nur eine deutsche Audio-MOV erzeugt. Unterstuetzt werden dreistellige Sprachcodes wie `DEU`, `GER`, `ENG`, `FRA`, `ITA`, `SPA` usw. `GER` wird intern wie `DEU` behandelt. ## Audio-Regeln - Das PVD-MP4 bekommt immer deutschen Stereo-Ton. - Wenn eine deutsche 2.0-Spur vorhanden ist, wird diese verwendet. - Wenn keine deutsche 2.0-Spur vorhanden ist, wird die erste deutsche Spur per FFmpeg auf Stereo heruntergemischt. - Alle deutschen Tonspuren werden in eine MOV-Datei mit uncompressed PCM geschrieben. - Alle nicht-deutschen Tonspuren werden in eine separate MOV-Datei mit uncompressed PCM geschrieben. - Wenn keine deutsche Tonspur erkannt wird, bricht das Tool mit einer Fehlermeldung ab. ## Video-Regeln - HD wird mit den HD-Werten aus `config.ini` encodiert, standardmaessig `30M`. - SD wird mit den SD-Werten aus `config.ini` encodiert, standardmaessig `8M`. - Interlaced-Material wird mit `bwdif=mode=0:parity=auto` deinterlaced. - Forced Subtitles werden eingebrannt, wenn neben der Quelle eine Datei mit `_forced.srt` liegt. - Farbraum-Metadaten werden auf den Ziel-Farbraum gesetzt. - Der `colorspace`-Filter wird nur verwendet, wenn die Quelle vollstaendige Farbraum-Metadaten liefert. Bei `unknown`-Metadaten wird der Filter uebersprungen, damit FFmpeg nicht abbricht. Forced-Subtitle-Beispiel: ```text Film_DEU51_ENG20.mov Film_DEU51_ENG20_forced.srt ``` ## Konfiguration Die wichtigsten Parameter stehen in [config.ini](config.ini). Das Format ist bewusst einfach gehalten: - `#` beginnt einen Kommentar - Werte werden als `name = wert` geschrieben - mehrere Ordner werden mit Komma getrennt - leere Werte bedeuten automatische Suche bzw. automatische Auswahl Default: ```ini # Amazon PVD Mezzanine Encoder Konfiguration [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 hd_level = 4.1 sd_bitrate = 8M sd_maxrate = 10M sd_bufsize = 15M sd_level = 3.1 preset = slow tune = film [audio] mp4_bitrate = 256k sample_rate = 48000 pcm_codec = pcm_s24le ``` Hinweise: - `ffmpeg_exe` und `ffprobe_exe` koennen leer bleiben, dann wird automatisch gesucht. - `base_dir` ueberschreibt die automatische Zielverzeichniswahl. - Wenn `config.ini` fehlt, wird sie beim Start mit Default-Werten erzeugt. ## Fehlerbilder Wenn eine Datei als Parameter uebergeben wird und der Pfad falsch ist, oeffnet sich kein Dialog. Stattdessen erscheint: ```text FEHLER: Eingabedatei nicht gefunden: ... ``` Wenn keine deutsche Tonspur erkannt wird, muss der Dateiname ein deutsches Audio-Token enthalten, z.B.: ```text Film_DEU20.mov Film_DEU51_ENG20.mov ``` ## Repo-Pflege Die lokale `.env` enthaelt Zugangsdaten und wird nicht versioniert. Bei jeder Funktionsaenderung muss diese Anleitung aktuell gehalten werden. Neue Aenderungen sollen zusammen mit passender README-Aktualisierung committed und nach `main` gepusht werden.