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.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
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.