{"id":6967,"date":"2024-09-05T12:00:00","date_gmt":"2024-09-05T10:00:00","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=6967"},"modified":"2024-09-05T20:00:06","modified_gmt":"2024-09-05T18:00:06","slug":"15-nutzliche-ffmpeg-befehle","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/15-nutzliche-ffmpeg-befehle\/","title":{"rendered":"15 N\u00fctzliche ffmpeg Befehle f\u00fcrs Umwandeln &amp; Anpassen von Videos"},"content":{"rendered":"<p>Das quelloffene <strong>ffmpeg<\/strong> ist ein <em>Schweizer Taschenmesser<\/em> unter den Werkzeugen f\u00fcr Videobearbeitung: Schneiden, Drehen, Bildschirmfotos generieren, Herunterskalieren, Umwandeln sind nur die Spitze des Eisbergs. In diesem Beitrag habe ich \u00fcber mehrere Jahre die Befehle f\u00fcr verschiedene Anwendungsf\u00e4lle gesammelt.<\/p>\n<p>Gerade aufgrund der vielen Funktionen erschlie\u00dft sich die Bedienung vor allem f\u00fcr Einsteiger jedoch oft nicht. Zum Einstieg wird daher die grunds\u00e4tzliche Nutzung von ffmpeg mit einfachen Umwandlungen gezeigt. Sp\u00e4ter folgen weitere, komplexere Beispiele mit Bildschirmfotos oder Gifs zur Demonstration. Das Programm kann noch weitaus mehr und werkelt im Hintergrund vieler Systeme. Die Liste ist keineswegs vollst\u00e4ndig, sondern fasst nur jene Szenarien zusammen, die mir bisher weitergeholfen haben und sicher auch andere gebrauchen k\u00f6nnen.<\/p>\n<h2 class=\"wp-block-heading\">Einstieg: So nutzt du ffmpeg<\/h2>\n<p>Einige GNU\/Linux Distributionen haben es im Lieferumfang. Ob das bei dir der Fall ist, kannst du mit folgendem Befehl auf der Konsole pr\u00fcfen. Liefert er keine Fehler, ist es bei dir bereits installiert.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -version\nffmpeg version n7.0.1 Copyright (c) 2000-2024 the FFmpeg developers\nbuilt with gcc 14.1.1 (GCC) 20240522\nconfiguration: --prefix=\/usr --disable-debug\n...<\/code><\/pre>\n<p>Andernfalls kannst du es \u00fcber die Paketverwaltung deines Betriebssystems nachinstallieren. Unter Debian und dessen Derivaten wie u.a. Ubuntu gen\u00fcgt das gleichnamige Paket:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt install ffmpeg<\/code><\/pre>\n<p>Zur Verwendung \u00fcbergibst du ffmpeg mit dem <code class=\"\" data-line=\"\">-i<\/code> Parameter den Pfad zur Eingangsdatei. In manchen Szenarien sind mehrere vorhanden, etwa beim Einf\u00fcgen von Logos (siehe unten). Nach den Quelldateien folgen Parameter, die bestimmen, was die Software mit dem Video machen soll: Umwandeln des Formats, Schneiden usw. Abschlie\u00dfend der Name oder Pfad zur Zieldatei, die ffmpeg produziert &#8211; hierf\u00fcr ist kein benannter Parameter vorgesehen.<\/p>\n<h2 class=\"wp-block-heading\">Speicherbedarf eines Videos reduzieren<\/h2>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 output.mp4<\/code><\/pre>\n<p>Dies ist der einfachste Aufruf ohne Parameter und l\u00e4dt <code class=\"\" data-line=\"\">input.mp4<\/code>, um daraus <code class=\"\" data-line=\"\">output.mp4<\/code> zu erzeugen. Gibt man keinen Codec explizit an, werden automatisch Standards anhand der Dateiendung ermittelt. Bei MP4 ist dies beispielsweise der klassische H264 Codec mit einem Kompromiss zwischen Dateigr\u00f6\u00dfe sowie Qualit\u00e4t. Viele Kameras setzen weniger Optimierungen ein und erzeugen damit gr\u00f6\u00dfere Dateien. Daher kann man oft bereits ohne weitere Optionen eine deutliche Reduzierung der Gr\u00f6\u00dfe erreichen &#8211; das Handyvideo im Beispiel ist nur noch halb so gro\u00df.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-04_20-01.avif\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"91\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-04_20-01.avif\" alt=\"\" class=\"wp-image-13855\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-04_20-01.avif 667w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-04_20-01-300x41.avif 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-04_20-01-640x87.avif 640w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/a><\/figure>\n<\/div>\n<p>Weitere Optimierungen sind auf zwei Wegen m\u00f6glich: Im selben Codec durch Reduzierung der Qualit\u00e4t, also verlustbehaftet. Daf\u00fcr wird der Constant Rate Factor (CRF) genutzt. Die Skala reicht bei H264 von 0 (Verlustfrei) bis 51 (geringste Qualit\u00e4t), ffmpeg setzt standardm\u00e4\u00dfig 23.<sup data-fn=\"15575f85-22b3-4bef-8105-92db7776ea38\" class=\"fn\"><a href=\"#15575f85-22b3-4bef-8105-92db7776ea38\" id=\"15575f85-22b3-4bef-8105-92db7776ea38-link\">1<\/a><\/sup> Dadurch wird die Ausgabedatei im obigen Beispiel bereits verkleinert. Noch kleinere Dateien lassen sich beispielsweise mit 30 erreichen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i 20230722_135205.mp4 -crf 30 output_crf30.mp\n\nl | grep crf\n.rw-r--r--   12M daniel daniel  4 Sep 21:37  output_crf30.mp4<\/code><\/pre>\n<p>F\u00fcr z.B. Mobilger\u00e4te mag das akzeptabel sein. Generell w\u00fcrde ich nach M\u00f6glichkeit einen effizienteren Codec bevorzugen. H.265 (auch bekannt als HEVC) erreicht mit 15 MB mehr als eine weitere Halbierung gegen\u00fcber H264 mit Standard-Parametern. Zwar ist die Skala identisch mit H264 (0 &#8211; 51, Verlustfrei bis geringste Qualit\u00e4t), aber nicht 1:1 \u00fcbertragbar. So entspricht CRF 28 bei H265 (Standard von ffmpeg) dem CRF 23 von H264.<sup data-fn=\"32d3ec03-25f7-4b9f-9165-aaae47fb6957\" class=\"fn\"><a href=\"#32d3ec03-25f7-4b9f-9165-aaae47fb6957\" id=\"32d3ec03-25f7-4b9f-9165-aaae47fb6957-link\">2<\/a><\/sup><\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i 20230722_135205.mp4 -vcodec libx265 output_x265.mp4<\/code><\/pre>\n<p>Die Ausgabedatei kann allerdings nur dort genutzt werden, wo H265 unterst\u00fctzt wird. Obwohl HEVC seit 2013 standardisiert ist, hat er sich bis heute nicht \u00fcberall verbreitet &#8211; \u00e4hnlich wie <a href=\"https:\/\/u-labs.de\/portal\/die-3-bildformate-der-zukunft\/\" data-type=\"post\" data-id=\"13747\">bei den neuen, effizienteren Bildformaten<\/a>. Auch hier gibt es eine Patentschlacht: Zahlreiche Unternehmen haben Patente und verlangten Jahrelang Lizenzgeb\u00fchren. Jedoch erkennen europ\u00e4ische Gesetze reine Softwarepatente nicht an.<sup data-fn=\"cde74b5f-470e-4cbf-b923-3819f553a2be\" class=\"fn\"><a href=\"#cde74b5f-470e-4cbf-b923-3819f553a2be\" id=\"cde74b5f-470e-4cbf-b923-3819f553a2be-link\">3<\/a><\/sup> Die Mehrheit der Patente ist inzwischen ausgelaufen.<sup data-fn=\"71cf3238-d8f3-421b-b090-15f5b3dd1b86\" class=\"fn\"><a href=\"#71cf3238-d8f3-421b-b090-15f5b3dd1b86\" id=\"71cf3238-d8f3-421b-b090-15f5b3dd1b86-link\">4<\/a><\/sup> 2018 hat sich der Lizenzverwalter f\u00fcr die Streichung der Geb\u00fchren bei der Inhaltsverbreitung entschieden,<sup data-fn=\"03e32687-c497-47e6-94f4-c88d78660e1e\" class=\"fn\"><a href=\"#03e32687-c497-47e6-94f4-c88d78660e1e\" id=\"03e32687-c497-47e6-94f4-c88d78660e1e-link\">5<\/a><\/sup> die wenige Jahre zuvor noch erh\u00f6ht wurden.<sup data-fn=\"0557657d-ae85-4727-9c05-7b5fca77f718\" class=\"fn\"><a href=\"#0557657d-ae85-4727-9c05-7b5fca77f718\" id=\"0557657d-ae85-4727-9c05-7b5fca77f718-link\">6<\/a><\/sup><\/p>\n<p>Eine weniger umstrittene Alternative kann AV1 sein.<sup data-fn=\"d32b32ab-e266-4e78-88e1-696ca2e1b820\" class=\"fn\"><a href=\"#d32b32ab-e266-4e78-88e1-696ca2e1b820\" id=\"d32b32ab-e266-4e78-88e1-696ca2e1b820-link\">7<\/a><\/sup> Unter Verwendung von <code class=\"\" data-line=\"\">libaom-av1 <\/code>ist dies allerdings derzeit extrem langsam. Deutlich performanter ist <code class=\"\" data-line=\"\">libsvtav1<\/code>. Damit ist das im Original 74 MB gro\u00dfe Video nur noch 20M klein und damit 5 MB gr\u00f6\u00dfer, als bei H265.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i 20230722_135205.mp4 -vcodec libsvtav1 output_libsvtav1.mkv<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Film schneiden<\/h2>\n<p>Man kann ffmpeg einen Zeitstempel f\u00fcr die Startzeit und die Dauer \u00fcbergeben:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 -ss 0 -t 5 output.mp4<\/code><\/pre>\n<p>Im Beispiel starten wir vom Beginn (0) und erhalten die ersten 5 Sekunden. Dies ist nicht nur f\u00fcr das Aufteilen von gro\u00dfen Filmen oder kurzen Vorschau-Trailern sinnvoll. Auch zum Testen macht dies bei l\u00e4ngeren Filmen oft Sinn. Wer beispielsweise ein Wasserzeichen setzen will, muss einen 5 Minuten Film nicht komplett rendern. Hierzu reichen ein paar Sekunden, die dementsprechend auch deutlich schneller fertiggestellt werden k\u00f6nnen.<\/p>\n<h2 class=\"wp-block-heading\">Videos drehen &#8211; Ausrichtung \u00e4ndern<\/h2>\n<p>Ab Commit 1630224 vom 02.05.2020 kann ffmpeg Videos automatisch drehen. Voraussetzung hierf\u00fcr ist, dass die Videodatei entsprechende Metadaten f\u00fcr die Ausrichtung enthalten. Dies sollte bei vielen modernen Digitalkameras und Smartphones der Fall sein. Hierf\u00fcr gen\u00fcgt ein simpler Aufruf mit Input\/Output Angabe. Der Audiostream kann in diesem Falle einfach kopiert werden:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 -c:a copy output.mp4<\/code><\/pre>\n<p>Dies funktioniert jedoch nicht immer. Beispielsweise wenn die Metadaten entfernt wurden. Oder man die Kamera gedreht hat, etwa ein Smartphone. In solchen F\u00e4llen l\u00e4sst sich das Video h\u00e4ndisch drehen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 -vf &quot;transpose=1&quot; output.mp4<\/code><\/pre>\n<p>F\u00fcr <strong>transpose<\/strong> sind folgende Werte m\u00f6glich:<\/p>\n<ul class=\"wp-block-list\">\n<li>0 &#8211; Um 90 Grad gegen den Uhrzeigersinn drehen und vertikal spiegeln. Dies ist die Standardeinstellung.<\/li>\n<li>1 &#8211; Um 90 Grad im Uhrzeigersinn drehen.<\/li>\n<li>2 &#8211; Um 90 Grad gegen den Uhrzeigersinn drehen.<\/li>\n<li>3 &#8211; Um 90 Grad im Uhrzeigersinn drehen und vertikal spiegeln.<\/li>\n<\/ul>\n<p>M\u00f6chte man ein Video um mehr als 90 Grad drehen, lassen sich mehrere transpose-Anweisungen kombinieren. F\u00fcr eine Drehung um 180 Grad im Uhrzeigersinn gibt man also einfach <strong>transpose=1,transpose=1<\/strong> an.<\/p>\n<p>Bei Videos, die ich mit dem Handy aufnehme, kommt es immer wieder zu Problemen. \u00dcber ein kleines Tischstativ ist das Smartphone oft leicht geneigt, was bei Aufnahmen im Hochformat vom Ger\u00e4t h\u00e4ufig nicht korrekt erkannt wird.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px.avif\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-1024x576.avif\" alt=\"\" class=\"wp-image-13818\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-1024x576.avif 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-300x169.avif 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-768x432.avif 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-640x360.avif 640w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px-302x170.avif 302w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/DSC05215-600px.avif 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Sie werden Horizontal aufgenommen, sodass man den <em>Blick von der Seite<\/em> im aufgenommenem Material bekommt:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-03_12-09.avif\"><img loading=\"lazy\" decoding=\"async\" width=\"168\" height=\"155\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2024\/09\/2024-09-03_12-09.avif\" alt=\"\" class=\"wp-image-13819\"\/><\/a><\/figure>\n<\/div>\n<p>Mit ffmpeg l\u00e4sst sich das Video korrekt drehen und dabei gleich vom alten H264 Codec der Kamera in H265 umwandeln:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i 20240902_164721.mp4 -vf &quot;transpose=1,transpose=1,transpose=1&quot; -vcodec libx265 20240902_164721_rotated.mp4<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Metadaten ebenfalls kopieren<\/h2>\n<p>Standardm\u00e4\u00dfig gehen einige Metadaten bei der Verwendung von ffmpeg verloren. Darunter z\u00e4hlen beispielsweise Hersteller und Modell der Kamera oder der originale Aufnahmezeitpunkt.<\/p>\n<p>Zun\u00e4chst muss zwischen den <em>bekannten<\/em> Metadaten und den Herstellerspezifischen unterschieden werden. Der Schalter <strong>-map_metadata 0<\/strong> schreibt alle <em>bekannten<\/em> Metadaten von Stream 0 (also der ersten Eingangsdatei) in die Ausgabedatei. Dar\u00fcber hinaus sorgt <strong>-movflags use_metadata_tags<\/strong> daf\u00fcr, dass die herstellereigenen Metadaten ebenfalls in die Ausgabedatei geschrieben werden.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 -map_metadata 0 -movflags use_metadata_tags output.mp4<\/code><\/pre>\n<p>Alternativ lassen sich die Metadaten in eine Textdatei exportieren. Im Gegensatz zum Kommandozeilenwerkzeug exiftool bietet ffmpeg eine M\u00f6glichkeit, diese Daten auch wieder zu importieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># Export\nffmpeg -i input.mp4 -f ffmetadata meta.txt\n# Import\nffmpeg -hide_banner -i input.mp4 -f ffmetadata -i meta.txt output.mp4<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Thumbnails\/Screenshots generieren<\/h2>\n<p>Screenshots einzelner Filmsequenzen sind beispielsweise als Vorschaubilder n\u00fctzlich. Hierf\u00fcr bietet ffmpeg zwei Varianten.<\/p>\n<h3 class=\"wp-block-heading\">Zu einer festgelegten Zeit<\/h3>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i -hide_banner input.mp4 -ss 00:00:12.000 -vframes 1 thumbnail.png<\/code><\/pre>\n<p>Im Beispiel wird bei Sekunde 12 ein Screenshot erstellt. Dies bietet sich an, wenn man das Filmmaterial kennt und wei\u00df, wann ein Bild Sinn macht.<\/p>\n<h3 class=\"wp-block-heading\">Intervall: Alle X Sekunden ein Screenshot<\/h3>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -hide_banner -i input.mp4 -vf fps=1\/5 &quot;thumbnail_%03d.jpg&quot;<\/code><\/pre>\n<p>Alle 5 Sekunden (1\/5: 1 Screenshot pro 5 Sekunden) wird hierbei ein Screenshot erstellt. Er hei\u00dft <strong>thumbnail_XX<\/strong> wobei XX eine fortlaufende Nummer darstellt. W\u00fcrde man beispielsweise <strong>1\/60<\/strong> angeben, wird pro Minute ein Bild erzeugt.<\/p>\n<h2 class=\"wp-block-heading\">Herunterskalieren der Aufl\u00f6sung, z.B. 4k zu FullHD<\/h2>\n<p>Modernere Kameras k\u00f6nnen problemlos in 4k aufnehmen. Als Rohmaterial ist dies auch durchaus sinnvoll. Doch dabei entstehen entsprechend auch gr\u00f6\u00dfere Dateien, die teils Probleme verursachen k\u00f6nnen. Beispielsweise wenn eine schlechte Internetverbindung besteht oder die maximale Dateigr\u00f6\u00dfe f\u00fcr einen Upload limitiert ist.<\/p>\n<p>In solch einem Fall kann man das Video auf 1080p (Full-HD) herunterskalieren. Die Qualit\u00e4t ist dabei immer noch ordentlich und f\u00fcr viele Ger\u00e4te ausreichend. Doch der Speicherbedarf sinkt ungef\u00e4hr um den Faktor 6-10.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -i input.mp4 -vf &quot;scale=1920x1080&quot; output.mp4<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Gifs erstellen<\/h2>\n<p>Gifs sind praktisch, um kurze Filmsequenzen ohne Medienplayer einbetten zu k\u00f6nnen. Sie lassen sich daher \u00fcberall nutzen, wo Bilder eingef\u00fcgt werden k\u00f6nnen. Beispielsweise auch in Foren oder Blogs, die zwar Bilder erlauben, aber keine Videos.<\/p>\n<p>Standardm\u00e4\u00dfig erstellt ffmpeg mit der passenden Erweiterung automatisch ein gif. Dies stellt die Farben aber nur mit 256Bit dar und ist daher qualitativ wenig \u00fcberzeugend. Allerdings k\u00f6nnen auch gifs mit h\u00f6herer Qualit\u00e4t erstellt werden:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -hide_banner -i input.mp4 \\\n  -vf &quot;fps=10,scale=300:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse&quot; \\\n  -loop 1 \\\n  \/tmp\/output.gif<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/floating-text-ffmpeg.gif\" alt=\"\"\/><\/figure>\n<\/div>\n<p>Zu beachten ist allerdings, dass die erstellten Gifs schnell sehr gro\u00df werden k\u00f6nnen. Daher habe ich die Bildwiederholrate auf 10 Bilder pro Sekunde begrenzt (<strong>fps=10<\/strong>). Au\u00dferdem wurde mit <strong>scale=300:-1<\/strong> die Aufl\u00f6sung auf 300px in der Breite reduziert. -1 generiert automatisch eine entsprechend proportionale H\u00f6he. Ein 20 Sekunden MP4-Video kommt damit auf 4,5 MB.<\/p>\n<p><strong>-loop<\/strong> gibt an, ob sich das Gif in einer Endlosschleife wiederholen soll. Bei 0 wird es nur einmal abgespielt.<\/p>\n<h2 class=\"wp-block-heading\">Statische Overlays: Text\/Bilder \u00fcber das Video legen<\/h2>\n<p>Die Filter von ffmpeg sind sehr m\u00e4chtig. Sie beginnen bei statischem Text, beispielsweise einem Wasserzeichen. Diese k\u00f6nnen frei positioniert werden. \u00dcber die eingebauten Funktionen ist aber auch komplexeres m\u00f6glich: Flie\u00dftext im TV-Stil, Hinweistexte die zu einer bestimmten Position eingeblendet werden und sogar Animationen k\u00f6nnen realisiert werden. Im Folgenden ist daher nur ein Auszug des machbaren zu finden, der die umfangreichen M\u00f6glichen demonstriert.<\/p>\n<h3 class=\"wp-block-heading\">Einfache Textzeile (z.B. Copyright)<\/h3>\n<p>Ideal f\u00fcr ein Copyright, Wasserzeichen, die Angabe einer Homepage und \u00e4hnliche Anwendungsf\u00e4lle. Der Text wird statisch an einer bestimmten Stelle positioniert. Man kann diesen entweder mit den x\/y Koordinaten absolut angeben. Oder dynamisch berechnen. In diesem Beispiel wird die Variable <strong>w<\/strong> (= width = Breite des Filmes) sowie <strong>text_w<\/strong> (= Breite des Textes) genutzt, um den ben\u00f6tigten Platz zu berechnen. Durch das anschlie\u00dfende Halbieren l\u00e4sst er sich mittig platzieren.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-1024x576.png\" alt=\"\" class=\"wp-image-6984\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-1024x576.png 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-300x169.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-768x432.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-1536x864.png 1536w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422-70x39.png 70w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-19h33m24s422.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">fontFile=$(pwd)\/Roboto-Black.ttf\nffmpeg -hide_banner -i input.mp4 \\\n  -vf drawtext=&quot;text=&#039;Gro\u00dfer Text&#039; \\\n    :x=(w-text_w)\/2 :y=h-th-30 \\\n    :fontfile=$fontFile \\ :fontsize=120 :fontcolor=#cee3f8&quot; \\\n  \/tmp\/output.mp4<\/code><\/pre>\n<p>Abgesehen von oben Links (wegen dem Textfluss) d\u00fcrfen wir nicht 0 angeben, um den Text in eine Ecke zu platzieren. Sonst ist dieser selbst nicht korrekt sichtbar. Die Ma\u00dfe des Textes m\u00fcssen immer ber\u00fccksichtigt werden.<\/p>\n<p>Zu den Seiten empfiehlt sich immer etwas Abstand. Ansonsten sieht das Ergebnis unnat\u00fcrlich aus. Daher werden im obigen Beispiel f\u00fcr die y-Achse weitere 30px abgezogen. Beim zentrieren er\u00fcbrigt sich das zu den Seiten.<\/p>\n<p>Ein paar weitere g\u00e4ngige Positionen:<\/p>\n<ul class=\"wp-block-list\">\n<li>Oben links: x=0:y=0<\/li>\n<li>Oben zentriert: x=(w-text_w)\/2:y=0<\/li>\n<li>Oben rechts: x=w-tw:y=0<\/li>\n<li>Zentriert in der Mitte des Bildes: x=(w-text_w)\/2:y=(h-text_h)\/2<\/li>\n<li>Unten links: x=0:y=h-th<\/li>\n<li>Unten rechts: x=w-tw:y=h-th<\/li>\n<\/ul>\n<p>Die Schrift Rotobo Black wurde aus dem Internet geladen. Unter<strong> \/usr\/share\/fonts<\/strong>\/ findet man auf dem System installierte Schriften. Ben\u00f6tigt man keine spezielle, kann man diese nutzen. Verschiedene Varianten der Ubuntu-Schrift finden sich beispielsweise im Ordner <strong>\/usr\/share\/fonts\/truetype\/ubuntu.<\/strong><\/p>\n<p>Das Angaben der Gr\u00f6\u00dfe ist selbsterkl\u00e4rend. Je nach Filmmaterial und Wirkung m\u00f6chte man ggf. noch die Farbe anpassen. Dies kann ein sprechender Name wie z.B. <em>Blau<\/em> sein. Oder ein Hex-Code, sodass jede Farbe gew\u00e4hlt werden kann.<\/p>\n<p>Weitere Informationen findet man <a href=\"https:\/\/ffmpeg.org\/ffmpeg-filters.html#drawtext\" target=\"_blank\" rel=\"nofollow\">in der ffmpeg Dokuentation zum drawtext Filter<\/a>.<\/p>\n<h3 class=\"wp-block-heading\">Mehrere Textzeilen<\/h3>\n<p>Die obige L\u00f6sung reicht f\u00fcr einfache Texte aus. Aber wie f\u00fcgt man mehrere Texte ein? Beispielsweise der Name des Authors mit Verweis auf seine Internetseite. Wenn beide nicht exakt gleich hinsichtlich Position und Formatierungen sein sollen, reicht eine <em>drawtext<\/em> Direktive nicht aus. Vorstellbar ist z.B. der Name des Authors in einer Ecke, w\u00e4hrend die Homepage unten am Rand steht. Oder beides \u00fcbereinander, w\u00e4hrend der Name gr\u00f6\u00dfer dargestellt wird.<\/p>\n<p>In diesem Falle muss der Film nicht mehrmals enkodiert werden, um zwei Filter \u00fcbereinander zu legen. Denn ffmpeg unterst\u00fctzt die parallele Verwendung mehrerer Filter, wie folgendes Beispiel zeigt:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">fontFile=$(pwd)\/Roboto-Black.ttf\nffmpeg -hide_banner -i input.mp4 \\\n  -vf drawtext=&quot;text=&#039;Gro\u00dfer Text&#039; \\\n    :x=(w-text_w)\/2  :y=h-th-110 \\\n    :fontfile=$fontFile \\ :fontsize=120 :fontcolor=#cee3f8,\n    drawtext=text=&#039;Mit kleinerem Untertitel darunter&#039; \\\n    :x=(w-text_w)\/2  :y=h-th-${offsetY}-40 \\\n    :fontfile=$fontFile \\\n    :fontsize=80 :fontcolor=#6eec6e&quot; \\\n  \/tmp\/output.mp4<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-09-20h09m13s363.png\" alt=\"\" class=\"wp-image-6985\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-09-20h09m13s363.png 800w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-09-20h09m13s363-300x169.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-09-20h09m13s363-768x432.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-09-20h09m13s363-70x39.png 70w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\">Text mit Schatten<\/h3>\n<p>Zur Hervorhebung kann der Text auch mit einem Schatten versehen werden. Hierzu geben die Variableb <strong>shadowx<\/strong> und <strong>shadowy<\/strong> die Verschiebung des Schattens auf der X- bzw. Y-Achse an. Zus\u00e4tzlich kann mit <strong>shadowcolor<\/strong> die Farbe angegeben werden. Wieder als sprechender Name oder Hex-Wert. Standardm\u00e4\u00dfig ist schwarz vorgesehen, die X- und Y-Variablen sind jedoch nicht gesetzt. Folgendes Beispiel erzeugt einen Extremschatten mit jeweils 20px Verschiebung auf jeder Achse in der Farbe schwarz:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">fontFile=$(pwd)\/Roboto-Black.ttf\nffmpeg -hide_banner -i input.mp4 \\\n  -vf drawtext=&quot;text=&#039;Gro\u00dfer Text&#039; \\\n    :x=(w-text_w)\/2  :y=h-th-110 \\\n    :fontfile=$fontFile \\\n    :fontsize=120 :fontcolor=#cee3f8 :shadowy=20 :shadowx=20,\n    drawtext=text=&#039;Mit kleinerem Untertitel darunter&#039; \\\n    :x=(w-text_w)\/2  :y=h-th-${offsetY}-40 \\\n    :fontfile=$fontFile \\\n    :fontsize=80 :fontcolor=#6eec6e&quot; \\\n  \/tmp\/output.mp4<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-20h00m16s611.png\" alt=\"\" class=\"wp-image-6987\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-20h00m16s611.png 800w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-20h00m16s611-300x169.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-20h00m16s611-768x432.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-11-20h00m16s611-70x39.png 70w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\">Bilder \u00fcber das Video legen (z.B. Logo einf\u00fcgen) via Overlay<\/h3>\n<p>Man kann mit ffmpeg relativ einfach ein Bild \u00fcber das Video legen. Es sollte transparent sein (PNG mit entsprechendem Hintergrund) oder eben farblich zum Video passen.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -hide_banner -i input.mp4 \\\n  -i &quot;$(echo ~)\/Downloads\/tick-128px.png&quot; \\\n  -filter_complex &quot;[0:v] [1:v] overlay=main_w-overlay_w-30:30&quot; \\\n  -pix_fmt yuv420p -c:a copy \\\n  -c:a copy -map 0:a? \\\n  \/tmp\/output.mp4<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-20h50m13s591.png\" alt=\"\" class=\"wp-image-6994\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-20h50m13s591.png 800w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-20h50m13s591-300x169.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-20h50m13s591-768x432.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-20h50m13s591-70x39.png 70w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<p>Das Overlay nutzt ein Icon von Flaticons (Author: Kiranshastry) und positioniert es mit dem Filter \u00fcber dem Video. Zum Rand beider Seiten halten wir 30 Pixel Abstand, damit es optisch ansprechender wirkt. Wie an anderer Stelle auch handelt es sich hier um x:y Koordinaten.<\/p>\n<p>Praktisch sind hier die angebotenen Variablen wie im Beispiel <strong>main_w<\/strong> f\u00fcr die H\u00f6he des Videos. Folgende stehen zur Verf\u00fcgung:<\/p>\n<p>main_h : Die H\u00f6he des Videos\r\nmain_w : Die Breite des Videos\r\noverlay_h : Die H\u00f6he des Overlays\r\noverlay_w : Die Breite des Overlays<\/p>\n<p>So l\u00e4sst sich das Ganze flexibel auf verschiedene Videos anwenden, ohne Anpassungen vornehmen zu m\u00fcssen.<\/p>\n<h3 class=\"wp-block-heading\">Bild am Ende des Videos f\u00fcr XX Sekunden anzeigen (Endcard)<\/h3>\n<p>M\u00f6chte man als Abspann ein bestimmtes Bild ins Video einbetten, kann dies<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">ffmpeg -hide_banner -i input.mp4 \\\n  -i &quot;$(echo ~)\/Downloads\/tick-128px.png&quot; \\\n  -filter_complex &quot;[0:v] [1:v] overlay=main_w-overlay_w-30:30&quot; \\\n  -pix_fmt yuv420p -c:a copy \\\n  -c:a copy -map 0:a? \\\n  \/tmp\/output.mp4\n\nffmpeg -hide_banner -i input.mp4 -loop 1 -t 15 \\\n-i &quot;\/tmp\/outro-image.png&quot; -f lavfi -t 1 \\\n-i anullsrc \\\n-filter_complex &quot;[0:v] [1:v] concat=n=2:v=1:a=0 [v]&quot; -strict -2 \\\n-map &quot;[v]&quot; -c:a copy -map 0:a? output.mp4<\/code><\/pre>\n<p><em>-t 15<\/em> gibt die L\u00e4nge in Sekunden an, die das Bild angezeigt werden soll. Falls das Video eine Audiospur besitzt, ist es an dieser Stelle wichtig, diese zu kopieren (-c:a copy sowie optionales Mapping mit -map 0:a?). Ansonsten besitzt das Ausgabevideo <strong>keine Audiospur<\/strong>!<\/p>\n<h3 class=\"wp-block-heading\">Bild im Film zentrieren (Mittig)<\/h3>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">-filter_complex &quot;overlay=x=(main_w-overlay_w)\/2:y=(main_h-overlay_h)\/2&quot;<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-21h05m26s177.png\" alt=\"\" class=\"wp-image-6995\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-21h05m26s177.png 800w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-21h05m26s177-300x169.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-21h05m26s177-768x432.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/vlcsnap-2020-11-13-21h05m26s177-70x39.png 70w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\">Animation: Overlay bewegt sich unten von rechts nach links durchs Bild<\/h3>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">-filter_complex &quot;overlay=&#039;if(gte(t,1), -w+(t-1)*200, NAN)&#039;:(main_h-overlay_h)-40&quot;<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/4678Rq.gif\" alt=\"\"\/><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Laufender Text (News-Zeile von Nachrichtensendern)<\/h2>\n<p>Nachrichtensender blenden gerne eine kleine Fu\u00dfzeile ein. Neben der Uhrzeit wiederholt sich dort auch ein Flie\u00dftext, der regelm\u00e4\u00dfig wechselt. Dies ist f\u00fcr l\u00e4ngere Texte sinnvoll. Oder wenn man die Aufmerksamkeit des Zuschauers auf diesen Text lenken m\u00f6chte. Er l\u00e4sst sich zwar ebenfalls mit einem Filter realisieren. Allerdings ben\u00f6tigt man komplexere Mathematische Funktionen, um einen solchen Lauftext zu realisieren.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">fontFile=$(pwd)\/Roboto-Black.ttf\nffmpeg -hide_banner -i input.mp4 \\\n  -vf &quot;drawtext=text=&#039;Mit kleinerem Untertitel darunter&#039; \\\n  :y=h-line_h-10:x=w-mod(max(t-1\\,0)*(w+tw)\/15\\,(w+tw))&#039; \\\n  :fontfile=$fontFile \\\n  :fontsize=70 :fontcolor=#6eec6e :shadowy=2 :shadowx=2&quot; \\\n  \/tmp\/output.mp4<\/code><\/pre>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/11\/floating-text-ffmpeg.gif\" alt=\"\"\/><\/figure>\n<\/div>\n<p>Bei <strong>t-1<\/strong> steht <strong>1<\/strong> f\u00fcr die Zeit in Sekunden, die initial bis zum Erscheint des Lauftextes gewartet werden soll. Gibt man hier z.B. 10 an, ist bis Sekunde 10 kein Text sichtbar. Erst danach flie\u00dft er von rechts nach links ins Bild.<\/p>\n<p>Die <strong>15<\/strong> bei <strong>(w+tw)\/15<\/strong> gibt die Geschwindigkeit an, mit der sich der Text durchs Bild bewegt. Je h\u00f6her um so schneller.<\/p>\n<h4 class=\"wp-block-heading\">Ohne Wiederholung<\/h4>\n<p>Im obigen Beispiel wird der Text bis zum Ende des Videos wiederholt: Sobald er links verschwunden ist, erscheint er auf der rechten Seite erneut. Soll der Text nur einmalig erscheinen und danach ohne Wiederholung verschwinden, kann folgende Formel f\u00fcr die x-Position genutzt werden:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">:y=h-line_h-10:x=w-(t-1)*w\/15<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n<ol class=\"wp-block-footnotes\">\n<li id=\"15575f85-22b3-4bef-8105-92db7776ea38\">https:\/\/trac.ffmpeg.org\/wiki\/Encode\/H.264 <a href=\"#15575f85-22b3-4bef-8105-92db7776ea38-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 1 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"32d3ec03-25f7-4b9f-9165-aaae47fb6957\">http:\/\/trac.ffmpeg.org\/wiki\/Encode\/H.265 <a href=\"#32d3ec03-25f7-4b9f-9165-aaae47fb6957-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 2 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"cde74b5f-470e-4cbf-b923-3819f553a2be\">https:\/\/www.cnet.com\/science\/vlc-steps-into-next-gen-video-wars-with-vp9-hevc-support\/ <a href=\"#cde74b5f-470e-4cbf-b923-3819f553a2be-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 3 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"71cf3238-d8f3-421b-b090-15f5b3dd1b86\">https:\/\/www.mpegla.com\/wp-content\/uploads\/hevc-att1.pdf <a href=\"#71cf3238-d8f3-421b-b090-15f5b3dd1b86-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 4 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"03e32687-c497-47e6-94f4-c88d78660e1e\">https:\/\/web.archive.org\/web\/20220405062843\/https:\/\/www.presseportal.de\/pm\/120729\/3890534 <a href=\"#03e32687-c497-47e6-94f4-c88d78660e1e-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 5 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"0557657d-ae85-4727-9c05-7b5fca77f718\">https:\/\/www.zdnet.de\/88255281\/hevc-advance-senkt-codec-lizenzgebuehren\/ <a href=\"#0557657d-ae85-4727-9c05-7b5fca77f718-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 6 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<li id=\"d32b32ab-e266-4e78-88e1-696ca2e1b820\">https:\/\/trac.ffmpeg.org\/wiki\/Encode\/AV1 <a href=\"#d32b32ab-e266-4e78-88e1-696ca2e1b820-link\" aria-label=\"Zur Fu\u00dfnotenreferenz 7 navigieren\">\u21a9\ufe0e<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Das quelloffene ffmpeg ist ein Schweizer Taschenmesser unter den Werkzeugen f\u00fcr Videobearbeitung: Schneiden, Drehen, Bildschirmfotos generieren, Herunterskalieren, Umwandeln sind nur die Spitze des Eisbergs. In diesem Beitrag habe ich \u00fcber mehrere Jahre die Befehle f\u00fcr verschiedene Anwendungsf\u00e4lle gesammelt. Gerade aufgrund der vielen Funktionen erschlie\u00dft sich die Bedienung vor allem f\u00fcr Einsteiger jedoch oft nicht. Zum &#8230;<\/p>\n","protected":false},"author":5,"featured_media":13881,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"content\":\"https:\/\/trac.ffmpeg.org\/wiki\/Encode\/H.264\",\"id\":\"15575f85-22b3-4bef-8105-92db7776ea38\"},{\"content\":\"http:\/\/trac.ffmpeg.org\/wiki\/Encode\/H.265\",\"id\":\"32d3ec03-25f7-4b9f-9165-aaae47fb6957\"},{\"content\":\"https:\/\/www.cnet.com\/science\/vlc-steps-into-next-gen-video-wars-with-vp9-hevc-support\/\",\"id\":\"cde74b5f-470e-4cbf-b923-3819f553a2be\"},{\"content\":\"https:\/\/www.mpegla.com\/wp-content\/uploads\/hevc-att1.pdf\",\"id\":\"71cf3238-d8f3-421b-b090-15f5b3dd1b86\"},{\"content\":\"https:\/\/web.archive.org\/web\/20220405062843\/https:\/\/www.presseportal.de\/pm\/120729\/3890534\",\"id\":\"03e32687-c497-47e6-94f4-c88d78660e1e\"},{\"content\":\"https:\/\/www.zdnet.de\/88255281\/hevc-advance-senkt-codec-lizenzgebuehren\/\",\"id\":\"0557657d-ae85-4727-9c05-7b5fca77f718\"},{\"content\":\"https:\/\/trac.ffmpeg.org\/wiki\/Encode\/AV1\",\"id\":\"d32b32ab-e266-4e78-88e1-696ca2e1b820\"}]"},"categories":[78],"tags":[778],"class_list":["post-6967","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-ffmpeg"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=6967"}],"version-history":[{"count":41,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6967\/revisions"}],"predecessor-version":[{"id":13882,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6967\/revisions\/13882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/13881"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=6967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=6967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=6967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}