Container und Codecs

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Wenn du mehrere Browser unterstützen möchtest, 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 Ihnen diese Konzepte neu sind, sollten Sie zuerst den Artikel Grundlagen von Mediendateien lesen. 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 Mediendateien für das Web vorbereiten, die wir in das Verzeichnis media kopiert haben. 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 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 ein bloßer4% Ableger des Originals. Sie können sich das selbst ansehen, indem Sie im Ordner, in dem sich Ihre Mediendateien befinden, den ls -a-Bash-Befehl ausführen.

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 bereits im Abschnitt Grundlagen von Mediendateien erwähnt, ist ein Codec nicht dasselbe wie ein Container (Dateityp). Zwei Dateien desselben Containertyps können Daten enthalten, die mit verschiedenen Codecs komprimiert wurden. Im WebM-Format kann Audio beispielsweise mit Vorbis oder Opus codiert werden. 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 dienen das Flag -c:a und das -c:v der Angabe der Audio- bzw. Video-Codecs.

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 für die Codec-Konvertierung von 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.