Container und Codecs

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Damit mehrere Browser unterstützt werden, musst du deine .mov-Datei mit FFmpeg in zwei verschiedene Container konvertieren: einen MP4-Container und einen WebM-Container. In der Praxis geben Sie wahrscheinlich gleichzeitig einen Codec an. Vorerst verwenden wir die Standardeinstellungen von FFmpeg.

Wenn Sie mit diesen Konzepten noch nicht vertraut sind, sollten Sie zuerst den Artikel Grundlagen zu Mediendateien lesen, bevor Sie fortfahren. Wenn FFmpeg nicht installiert ist, lies den Hilfeartikel Grundlagen von Medienanwendungen, um es mit Docker einzurichten.

Wir verwenden die vorgeschlagene Docker-Installation und die Datei glocken.mov aus dem Verzeichnis Mediendateien für das Web vorbereiten, die im Verzeichnis media hinzugefügt wurden. Für alle Befehle in diesem Abschnitt wurde FFmpeg-Version 4.3.2 verwendet.

Container

Zuerst müssen wir aus der .mov-Datei zwei Container mit den Dateiendungen .mp4 und .webm erstellen, die sowohl einen Audio- als auch einen Videostream enthalten. Wenn du den Unterschied zwischen Containern und Streams nicht kennst, lies den Hilfeartikel Grundlagen von Mediendateien.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

Das Erstellen von WebM-Dateien dauert länger als das Erstellen von MP4-Dateien. Das ist nicht überraschend, wenn man sich die Ergebnisse ansieht. MP4-Dateien werden auf etwa 83% der Größe der Originaldatei komprimiert. WebM-Dateien werden auf 78% der Größe der Originaldatei komprimiert, können aber viel kleiner sein. Die Ergebnisse können variieren. Wichtig: In FFmpeg 4.2.2 ist die Standard-Videobitrate auf 200k festgelegt. In 4.3.2 ist keine Standardbitrate festgelegt. Das Video ist also nicht mehr nur 4% des Originals. Mit dem Bash-Befehl ls -a in dem Ordner, in dem sich Ihre Mediendateien befinden, können Sie sich das ansehen.

Beispiel:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

So erhalten Sie eine winzige Datei:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

Ergebnisse prüfen

Verwende FFmpeg und Shaka Packager, um die Ergebnisse zu überprüfen, wie bereits in Grundlagen von Medienanwendungen gezeigt:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

Codecs

Als Nächstes der Codec. Wie unter Grundlagen von Mediendateien beschrieben, ist ein Codec nicht dasselbe wie ein Container (Dateityp). Zwei Dateien desselben Containertyps können Daten enthalten, die mit verschiedenen Codecs komprimiert wurden. Das WebM-Format ermöglicht beispielsweise die Codierung von Audioinhalten entweder mit Vorbis oder Opus. Zum Ändern des Codecs verwenden wir FFmpeg. Mit diesem Befehl wird beispielsweise eine .mkv-Datei mit einem vorbis-Audio-Codec und einem av1-Video-Codec ausgegeben.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

In diesem Beispiel werden mit dem Flag -c:a und dem -c:v die Audio- bzw. Video-Codecs angegeben.

Auf der Seite Medienkonvertierung sind die Befehle aufgeführt, die für die Konvertierung von Codecs erforderlich sind. In den folgenden Tabellen sind die Bibliotheken zusammengefasst, die in FFmpeg zur Durchführung der Codec-Konvertierungen für WebM- und MP4-Dateien verwendet werden. Dies sind die für DASH bzw. HLS empfohlenen Formate.

Video

Codec Erweiterung Bibliothek
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Audio

Codec Erweiterung Bibliothek
AAC MP4 AAC
opus WebM libopus
vorbis WebM Libvorbis

Als Nächstes zeigen wir dir, wie du die Bitrate deiner neu erstellten Dateien änderst.