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