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 würden Sie wahrscheinlich gleichzeitig einen Codec angeben. Derzeit lassen wir FFmpeg die Standardeinstellungen zu.

Wenn Sie mit diesen Konzepten noch nicht vertraut sind, sollten Sie zuerst den Artikel Grundlagen zu Mediendateien lesen, bevor Sie fortfahren. Wenn Sie FFmpeg nicht installiert haben, lesen Sie außerdem den Artikel Grundlagen der Medienanwendung, um Docker einzurichten.

Wir verwenden die vorgeschlagene Docker-Installation und die Datei glocken.mov von Prepare media files for the web (Mediendateien für das Web vorbereiten) im Verzeichnis media. Für alle Befehle in diesem Abschnitt wurde FFmpeg Version 4.3.2 verwendet.

Container

Zuerst müssen wir unsere beiden Container aus der Datei .mov mit den Dateiendungen .mp4 und .webm erstellen, wobei die Datei sowohl einen Audio- als auch einen Videostream enthält. Wenn Sie den Unterschied zwischen diesen nicht kennen, lesen Sie Grundlagen zu Mediendateien mit weiteren Informationen zu Containern und Streams.

  1. MP4

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

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

Die Erstellung von WebM dauert länger als bei MP4. Bei den Ergebnissen ist das nicht überraschend. MP4 wird auf etwa 83% der Originalgröße komprimiert, WebM ist jedoch auf 78% der Originalgröße beschränkt, kann aber viel kleiner sein. Die Ergebnisse werden variieren. Wichtig: Die FFmpeg-Datei 4.2.2 legt die Standard-Bitrate für Videos auf 200k fest. Für 4.3.2 ist keine Standardbitrate festgelegt. Das Video ist also nicht mehr nur4% des Originals. Das können Sie selbst mit dem Bash-Befehl ls -a in dem Ordner prüfen, in dem sich Ihre Mediendateien befinden.

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

Um eine winzige Datei zu erhalten, würden Sie stattdessen so vorgehen:

/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

Verwenden Sie zum Überprüfen der Ergebnisse FFmpeg und Shaka Packager, wie bereits unter Grundlagen der Medienanwendung gezeigt:

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

Codecs

Als Nächstes der Codec. Wie unter Grundlagen zu Mediendateien beschrieben, ist ein Codec nicht dasselbe wie ein Container (Dateityp). Zwei Dateien desselben Containertyps könnten Daten enthalten, die mit verschiedenen Codecs komprimiert wurden. Das WebM-Format ermöglicht beispielsweise die Codierung von Audiodaten mit Vorbis oder Opus. Um den Codec zu ändern, verwenden wir FFmpeg. Dieser Befehl gibt beispielsweise eine .mkv-Datei mit dem Audio-Codec vorbis und dem Video-Codec av1 aus.

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

In diesem Beispiel geben das Flag -c:a und -c:v die Audio- bzw. Video-Codecs an.

Auf der Seite Medienkonvertierung werden Befehle zum Umwandeln von Codecs aufgeführt. In den folgenden Tabellen werden die Bibliotheken zusammengefasst, die in FFmpeg verwendet werden, um die Codec-Konvertierungen für WebM- und MP4-Dateien durchzuführen. Diese Formate werden für DASH und HLS empfohlen.

Video

Codec Erweiterung Mediathek
av1 WebM, MKV libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

Audio

Codec Erweiterung Mediathek
AAC MP4 AAC
Opus WebM Liboopus
Vorbis WebM Livorbis

Als Nächstes zeigen wir Ihnen, wie Sie die Bitrate Ihrer neu erstellten Dateien ändern.