Files
pvd/README.md
T
2026-05-07 18:39:52 +02:00

7.5 KiB

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.

Schnellstart fuer Kollegen

Am einfachsten:

  1. Datei korrekt benennen, z.B. Film_DEU51_ENG20.mov.
  2. create_mezzanine.bat doppelklicken.
  3. Im Dateidialog die Videodatei auswaehlen.
  4. Warten, bis im Fenster ERFOLGREICH abgeschlossen. steht.
  5. Ergebnis im Zielordner pruefen, standardmaessig bevorzugt F:\VOD, sonst H:\VOD.

Noch einfacher mit Drag & Drop:

  1. Videodatei auf create_mezzanine.bat ziehen.
  2. Warten, bis das Encoding fertig ist.

Wichtig: Das Fenster waehrend des Encodings offen lassen. Am Ende bleibt es stehen, damit Fehlermeldungen gelesen werden koennen.

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 per Doppelklick oder Konsole:

.\create_mezzanine.bat

Mit direktem Dateiparameter:

.\create_mezzanine.bat "D:\Trailers\Film_DEU51_ENG20.mov"

Direkt per Python:

py -3 .\pvd_mezzanine.py "D:\Trailers\Film_DEU51_ENG20.mov"

Kompatibler CLI-Modus:

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.

Bedienoberflaeche und Tkinter

Tkinter ist ein Bestandteil vieler Python-Installationen. Es ist die einfache grafische Oberflaeche, die Python fuer kleine Windows-Programme mitbringt.

Fuer dieses Tool bedeutet das:

  • Mit Tkinter erscheint eine kleine Programmoberflaeche.
  • Dort kann man Quelle und Ausgabeordner auswaehlen.
  • Nach Analysieren sieht man Video-Infos, erkannte Tonspuren und geplante Ausgaben.
  • Mit Encoding starten beginnt die Verarbeitung.
  • Das Log zeigt, was FFmpeg gerade macht.

Nicht jede Python-Installation enthaelt Tkinter. Das ist kein Problem. Wenn Tkinter fehlt, erscheint keine grosse Programmoberflaeche. Das Tool funktioniert trotzdem:

  1. Es oeffnet einen normalen Windows-Dateidialog fuer die Videodatei.
  2. Danach laeuft die Verarbeitung im schwarzen Konsolenfenster.
  3. Alle wichtigen Informationen und Fehler stehen dort als Text.

Fuer Kollegen ohne Python-Wissen ist deshalb die Empfehlung:

create_mezzanine.bat doppelklicken oder Videodatei darauf ziehen.

Wenn eine grafische Oberflaeche erscheint: normal benutzen. Wenn nur ein Dateidialog und danach ein Konsolenfenster erscheint: ebenfalls normal, einfach laufen lassen.

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:

preferred_dirs = F:\VOD, H:\VOD

Damit wird F:\VOD bevorzugt, wenn vorhanden. Sonst wird H:\VOD verwendet, wenn vorhanden.

Dateinamen:

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:

SPRACHEFORMAT

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 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:

Film_DEU51_ENG20.mov
Film_DEU51_ENG20_forced.srt

Konfiguration

Die wichtigsten Parameter stehen in 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:

# 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 nach dem Start nur ein Dateidialog erscheint und keine grosse Oberflaeche, fehlt Tkinter in Python. Das ist kein Fehler. Datei auswaehlen und das Tool im Konsolenfenster weiterlaufen lassen.

Wenn eine Datei als Parameter uebergeben wird und der Pfad falsch ist, oeffnet sich kein Dialog. Stattdessen erscheint:

FEHLER: Eingabedatei nicht gefunden: ...

Wenn keine deutsche Tonspur erkannt wird, muss der Dateiname ein deutsches Audio-Token enthalten, z.B.:

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.