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

5.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.

Voraussetzungen

  • Windows
  • Python 3.10+
  • FFmpeg und FFprobe
  • Schreibzugriff auf das Zielverzeichnis

FFmpeg und FFprobe werden automatisch gesucht:

  1. explizite Pfade aus config.json
  2. PATH
  3. C:\Tools\FFMPEG
  4. C:\Software

Starten

Interaktiv:

.\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.

Ausgabe

Das Zielverzeichnis wird ueber config.json 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.json encodiert, standardmaessig 30M.
  • SD wird mit den SD-Werten aus config.json 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.json.

Default:

{
  "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.ffmpeg_exe und ffmpeg.ffprobe_exe koennen leer bleiben, dann wird automatisch gesucht.
  • output.base_dir ueberschreibt die automatische Zielverzeichniswahl.
  • Wenn config.json 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:

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.