Deine Filme in bester Qualität

Digitalisieren von Blu-Ray Discs in einer Apple-Umgebung

Für begeisterte Filmefans und Hi-Fi-Enthusiasten ist die Blu-Ray Disc (BD) das Medium der Wahl für den Filmekonsum.
Allerdings ist eine digitale Verwaltung der BDs nicht möglich und in den Genuss der benutzerfreundlichen Gestaltung von Streamingapps à la Apple TV oder Netflix kommen Besitzer von BDs auch nicht.

Nun könnte der Filmefan einfach zu einem der zahlreichen Streaminganbieter wechseln. Allerdings wäre die Qualität der Streams für den Hi-Fi-Enthusiast wohl nicht ausreichend.

Folgend ein Vergleich eines Streams und der entsprechenden BD („Interstellar“ von Christopher Nolan):

StreamBD
Gesamtbitrate5.794 kb/s30.398 kb/s
Dateigröße7,02 GB36,78 GB

Die niedrigere Bitrate des Streams im Vergleich zur BD hat negative Auswirkungen auf die Bild- und Tonqualität des Films. Eine Reduktion der Qualität um den Faktor fünf, wie in diesem Fall, ist üblich.

Ein zweiter Grund für das Sammeln von BDs sind die dem Streamingnutzer vorenthaltenen Fassungen, wie Director’s Cut o. Ä. Bspw. hat die Black-Edition-BD des Films „I Saw the Devil“ von Regisseur Jee-Woon Kim eine Länge von 142 Minuten, die Version im Apple TV ist 131 Minuten lang. Was geschnitten wurde und ob dies auf Kosten der Handlung geschah, muss im Einzelfall betrachtet werden. Allerdings verkörpern ungeschnittene Fassungen, allen voran der Director’s Cut, stärker die Intention des Regisseurs, im Gegensatz zu geschnittenen Versionen des Films.

Das Digitalisierung der BDs bietet die Möglichkeit, Filme in einer hohen Qualität, in unterschiedlichen Fassungen und mit dem Komfort einer Streamingapp wiederzugeben.

Außerdem ermöglicht die Digitalisierung das Erstellen von eigenen, nie im Heimatland veröffentlichten, Fassungen. Ein Beispiel ist der Film „The Avengers“ von Regisseur Joss Whedon. Dieser wurde für die deutschen Kinos und später auch für das Heimkino auf BD geschnitten. Beim Digitalisieren ist es nun möglich, den Videostream der italienischen mit dem Audiostream der deutschen BD zusammenzuführen und so ein nie auf dem deutschen Markt verfügbares Filmerlebnis zu schaffen. Nach dem gleichen Prinzip können nie im Ausgabeland auf BD veröffentlichte Filme erstellt werden, indem bspw. der Audiostream einer deutschen DVD und der Videostream einer US-amerikanischen BD zusammengefügt werden.

Das Erstellen solcher Schnittfassungen wird Dubbing genannt und in diesem Artikel erklärt.

Es ist allerdings zu beachten, dass das Erstellen dieser Fassungen eine Bearbeitung eines Werkes nach § 23 Abs. 1 UrhG darstellt und somit nach § 23 Abs. 2 UrhG der Zustimmung des Urhebers bedarf.


Folgend eine Anleitung zum Digitalisieren und Taggen der BDs. Als Ergebnis kann der von BD digitalisierte Film einer Streamingapp hinzugefügt werden.

Das Look-and-feel einer Streamingapp.

Diese Anleitung ist für die Wiedergabe der digitalisierten BDs in einer Apple-Umgebung gedacht, da Apple mit der iTunes Search API ein sehr nützliches Werkzeug bietet dieses Vorhaben umzusetzen.

Folgende Software wird benötigt:

  • Microsoft Windows
  • Apple macOS
  • Mp3tag (Windows)
  • Python (Windows)
  • x264 (Windows)
  • FFmpeg (Windows)
  • Subtitle Edit (Windows)
  • Subler (macOS)

1. BD konvertieren:

Nach § 53 Abs. 1 UrhG ist die „Vervielfältigung[ ] eines Werkes durch eine natürliche Person zum privaten Gebrauch auf beliebigen Trägern“ zulässig. Allerdings besitzen BDs einen Kopierschutz, der nach § 95a Abs. 1 UrhG eine „wirksame technische Maßnahme[ ] zum Schutz eines […] Werkes“ darstellt und nicht umgangen werden darf. Das sogenannte „Rippen“ kommt demnach nicht in Frage.
Mit einem entsprechend lizenzierten Programm darf allerdings die BD bei der Wiedergabe konvertiert (aufgenommen) werden. Der einzige Unterschied ist die Dauer dieses Vorgangs. Während die Dauer des Rippes einer BD nur etwa ein Fünftel der eigentlichen Länge des Films beträgt, sind es beim Konvertieren 100 % dieser Länge.

Die Ausgabe kann eine MKV-Datei mit dem Dateinamen output.mkv sein.

2. M4V-Datei erstellen:

Der zuvor erstellte Container (output.mkv) enthält nun einen Videostream, einen oder mehrere Audiostreams und beliebig viele Subtitle-Streams.
Nun muss der Inhalt von einem Container in einen anderen (MP4-Container) gepackt und auf die Kompatibilität der enthaltenen Streams mit dem Container geachtet werden.

Beim Konvertieren der BDs sind folgende Formate üblich:

Videostream:

  • MPEG-2
  • MPEG-4 AVC
  • VC-1

Audiostream:

  • LPCM
  • Dolby Digital
  • Dolby Digital Plus
  • Dolby Lossless
  • DTS Digital Surround
  • DTS-HD High Resolution Audio
  • DTS-HD Master Audio
  • DigiRise DRA

Die Videostreams mit dem Codec MPEG-2 und VC-1 sind nicht mit dem MP4-Container kompatibel. Die Streams müssen transcodiert werden. Dies wird im Folgenden erläutert.
Da ein Stream erstellt werden soll, der nicht von einer originalen BD zu unterscheiden ist, muss ein BD konformer Encoder verwendet werden. Der x264-Encoder kann BD kompatible Videostreams erzeugen.
Um die Befehlszeile des Encoders korrekt aufzubauen, wird das Programm ffprobe des FFmpeg-Frameworks benötigt.

Die Bitrate (BPS) des Containers wird ausgelesen:

ffprobe -v 0 -of csv=p=0 -select_streams 0 -show_entries stream_tags=BPS output.mkv

Die Framerate (FPS) des Containers wird ausgelesen:

ffprobe -v 0 -of csv=p=0 -select_streams 0 -show_entries stream=r_frame_rate output.mkv

Die fertigen x264-Befehlszeilen sehen nun wie folgt aus:

x264.exe --fps [FPS] --force-cfr --bitrate [round(BPS/1000)] --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint [round(FPS)] --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o temp.mkv output.mkv

x264.exe --fps [FPS] --force-cfr --bitrate [round(BPS/1000)] --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint [round(FPS)] --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o output_avc.mkv output.mkv

Die Kompatibilität des Codecs der Audiostreams kann vernachlässigt werden, indem diese in das kompatible und verlustfreie Format ALAC konvertiert werden. Informationsverluste wie sie bei lossy zu lossy-Transcodierungen vorkommen können so vermieden werden. Die Bittiefe der lossless-Audiostreams muss allerdings berücksichtigt werden. Bei lossless zu lossless-Konvertierungen wird die Bittiefe vom Stream übernommen und bei lossy zu lossless-Konvertierungen werden 16 bits verwendet.

Anschließend muss festgelegt werden, was aus dem MKV-Container übernommen wird. Um so nah wie möglich am Original (in diesem Fall dem Stream) zu bleiben, werden jene auf der BD verfügbaren Streams übernommen, die Apple ebenfalls anbietet.

Am Beispiel „Interstellar“ sind das folgende Streams:

  • Videostream
  • englischer Audiostream
  • deutscher Audiostream
  • englischer Subtitle-Stream
  • deutscher Subtitle-Stream

Die Subtitle-Streams werden mit dem binären Bildvergleich von Subtitle Edit erstellt.

Die Befehlszeile des Muxers ffmpeg des FFmpeg-Frameworks sieht nun wie folgt aus:

ffmpeg^
 -i output.mkv -i output_english.srt -i output_german.srt^
 -map 0:0 -map 0:1 -map 0:3 -map 1:0 -map 2:0^
 -metadata:s:v:0 handler_name="AVC"^
 -metadata:s:a:0 language=eng -metadata:s:a:0 handler_name="DTS-HD Master Audio"^
 -metadata:s:a:1 language=deu -metadata:s:a:1 handler_name="DTS-HD Master Audio"^
 -metadata:s:s:0 language=eng -metadata:s:s:0 handler_name="English"^
 -metadata:s:s:1 language=deu -metadata:s:s:1 handler_name="German"^
 -movflags disable_chpl^
 -c:s mov_text -c:v copy -c:a alac^
 Interstellar.m4v

-i output.mkv: MKV-Container
-i output_english.srt: englischer Subtitle-Stream
-i output_german.srt: deutscher Subtitle-Stream
-map 0:0: Videostream aus dem MKV-Container
-map 0:1: englischer Audiostream aus dem MKV-Container
-map 0:3: deutscher Audiostream aus dem MKV-Container
-map 1:0: englischer Subtitle-Stream
-map 2:0: deutscher Subtitle-Stream
-metadata:s:*:* language=*: Sprache des jeweiligen Streams
-metadata:s:*:* handler_name=*: Name des jeweiligen Streams

Sollte der Videostream im MPEG-2- oder VC-1-Codec vorliegen sieht die Befehlszeile etwas anders aus:

ffmpeg^
 -i output_avc.mkv -i output.mkv -i output_english.srt -i output_german.srt^
 -map 0:0 -map 1:1 -map 1:3 -map 2:0 -map 3:0^
 -metadata:s:v:0 handler_name="VC-1"^
 -metadata:s:a:0 language=eng -metadata:s:a:0 handler_name="DTS-HD Master Audio"^
 -metadata:s:a:1 language=deu -metadata:s:a:1 handler_name="DTS-HD Master Audio"^
 -metadata:s:s:0 language=eng -metadata:s:s:0 handler_name="English"^
 -metadata:s:s:1 language=deu -metadata:s:s:1 handler_name="German"^
 -movflags disable_chpl^
 -c:s mov_text -c:v copy -c:a alac^
 Interstellar.m4v

Ist es notwendig, die Bittiefe auf 16 bits zu reduzieren, wird die Befehlszeile mit dem Parameter

-sample_fmt:a:[stream_id] s16p

ergänzt. Sollte der Audiostream über acht Kanäle verfügen, wird die Befehlszeile mit dem Parameter

-filter_complex "[0:a:[stream_id]]channelmap=map=FL-FL|FR-FR|FC-FC|LFE-LFE|BL-BL|BR-BR|SL-FLC|SR-FRC:channel_layout=7.1(wide)[newlayout]"

als input option ergänzt und das neue channel layout ([newlayout]) gemappt.

3. Metadaten dem Container hinzufügen:

Anschließend wird das Programm Subler im macOS gestartet und die entsprechenden Metadaten aus dem iTunes Store geladen. Es werden die passenden Sprache-/Landkombinationen für die Streams ausgewählt. Abschließend werden die deutschen Audio- und Subtitle-Streams auf default gesetzt:

Die Metadaten des Films werden mit Subler in den Container gespeichert.

Informationen zu Besetzung, Drehbuch, Regie, Produktion und Studio speichert Apple in einer Eigenschaftenliste. Subler legt diese Liste mit den entsprechenden Personen an, allerdings ohne die IDs der Personen. Es muss also der Film mit dem Programm Mp3tag geöffnet werden, um den Inhalt des ITUNMOVI-Atom anzuzeigen:

Das ITUNMOVI-Atom im Programm Mp3tag.

Das Schlüssel-/Wertepaar name [name] vom Datentyp string wird mit dem Paar adamId [id] vom Typ integer ergänzt. Die entsprechenden Werte finden sich im Webauftritt des iTunes Store (Eigenschaftenliste).
Außerdem fehlen die Tags desc und geID. Diese können mit dem python-Modul mutagen in die Datei gespeichert werden (Python-Skript). Subler füllt das Feld ldes und da desc die ersten 254 Zeichen des ldes-Feldes beinhaltet, kann ldes als Datenquelle genutzt werden. Das geID-Feld wird gefüllt, indem das Genre aus dem Feld \xa9gen mit der entsprechenden ID ersetzt wird.

Nun kann die Datei Interstellar.m4v der iTunes-Mediathek hinzugefügt werden:

Der Film "Interstellar" in der Streamingapp.

2 Kommentare

  1. Hasan Ahmadov

    Danke für die ausführliche Erklärung und mit den eingeblendeten Screenshots wird mir es eine große Hilfe sein meine eigene Filmbibliothek aufzubauen und Blu-Ray Discs zu digitalisieren. Ich konnte im Netz nach langer Suche zu keinem so genialen Artikel mit Mehrwert kommen. Flimmerzimmer ist die beste Seite in Deutschland in diesem Bereich.

    • Felix

      Hallo Hasan,

      vielen Dank für Dein positives Feedback. Das freut mich sehr.
      Solltest Du weitere Fragen haben, melde Dich gerne per E-Mail: mail@flimmerzimmer.eu.

      Bis dahin viel Erfolg beim Aufbauen Deiner Sammlung!

      Viele Grüße
      Felix

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert