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

210 lines
5.5 KiB
Markdown

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