Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux-tools:ffmpeg

Auf dieser Seite geht es um eine Gruppe von Programmen, die es ermöglichen Audio & Video zu bearbeiten, zu streamen oder auch nur umzuwandeln. Das Offizielle Wiki hierzu ist auf: https://en.wikipedia.org/wiki/FFmpeg

Da es schon unzählige Informationen im Netz gibt die einem die Grundsätze dieser Programmsammlung erklären hier nur eine kurze Einführung in das Thema FFmpeg. http://download.av-rd.com/pub/2019/05-LiWo_Wien/ffmpeg.html (Dank an Peter Bubestinger-Steindl)

Wie man erlesen kann ist eine Menge machbar und wer tiefer einsteigen will hat genug „Manpages“ um hier fündig zu werden. Ziel dieser Seite ist es aber einige Fertige Lösungen anzubieten um die Dinge zu erledigen die einem im täglichen Umgang mit Videos oder Audio Dateien vorkommen.

Man kann die Arbeiten mit FFmpeg aus der Konsole heraus machen oder wenn es nur um die „einfache“ Umwandlung von Dateien geht auch mit Hilfe einer Grafischen Oberfläche erledigen. https://github.com/BradHeff/ffmpeg-GUI

Der große Vorteil der Programme ist, dass es sie für alle Betriebssysteme gibt und in vielen Programmsprachen eingebunden werden kann. Für Linux Benutzer ist natürlich die Verwendung von Bash Skripten üblich. Hier ein Beispiel einer Datei die einen mp4 Container erzeugt nachdem alle Einstellungen zur Konvertierung abgefragt wurden. videoscripts-master.zip

Hier nun ein paar Beispiele für Anwendungen die sehr Interessant sind:

Die x11 Oberfläche (Desktop) als Input:

ffmpeg -video_size 1024×768 -framerate 25 -f x11grab -i: 0.0 + 100.200 output.mp4 Dadurch wird das Bild vom Desktop abgerufen, beginnend mit der oberen linken Ecke bei x = 100, y = 200 mit einer Breite und Höhe von 1024 × 768.

Wenn man auch Audio benötigt, kann man ALSA verwenden (weitere Informationen unter Capture / ALSA): ffmpeg -video_size 1024×768 -framerate 25 -f x11grab -i: 0.0 + 100.200 -f alsa -ac 2 -i hw: 0 output.mkv

Oder das Puls System als Eingabegerät: ffmpeg -video_size 1024×768 -framerate 25 -f x11grab -i: 0.0 + 100.200 -f pulse -ac 2 -i default output.mkv Wenn die CPU nicht schnell genug ist, kann der Codierungsvorgang zu lange dauern. Um den Kodierungsprozess zu beschleunigen, kann die verlustfreie Kodierung verwenden und erweiterte Kodierungsoptionen deaktivieren.

ffmpeg -video_size 1920×1080 -framerate 30 -f x11grab -i: 0.0 -c: v libx264 -crf 0 -preset ultrafast Ausgabe.mkv -crf 0 weist x264 an, im verlustfreien Modus zu codieren. -preset ultrafast rät dazu, dies schnell zu tun.

Der Encoder sollte auf modernster Hardware schnell genug sein, um ohne Framedrop aufzunehmen, und sogar genügend CPU Ressourcen für andere Anwendungen lassen. Wenn man die Aufzeichnung archivieren möchten oder sich Gedanken über die Dateigröße macht, kodiert man diese erneut verlustfrei, jedoch mit einer langsameren Voreinstellung. Da die anfängliche Aufzeichnung verlustfrei war und die Neukodierung auch verlustfrei ist, wird in diesem Prozess in keiner Weise ein Qualitätsverlust eingeführt. ffmpeg -i Ausgabe.mkv -c: v libx264 -crf 0 -preset veryslow Ausgabe-kleiner.mkv

Anamorphe Filme korrigieren

Hasst Ihr das nicht auch, wenn 16:9 Filme auf 4:3 gezerrt werden (ohne Balken) und alle Gesichter befremdend nach Bananen oder Gurken aussehen? Man bezeichnet das als anamorph. Mir persönlich sind die schwarzen Balken oben und unten lieber. Hier habe ich z.B. so einen Problemfall: Das Video hat eine Auflösung von 352x288px. Das ist nicht wirklich 4:3, aber fast. Damit das Ganze halbwegs ein Seitenverhältnis von 16:9 kriegt, ändere ich die Auflösung auf 352×200. Dann sehen die Gesichter auch wieder menschlich aus.

ffmpeg -i banane.flv -s 352×200 -acodec copy -sameq normal.flv

-s 352×200 das neue Seitenverhältnis -acodec copy die Tonspur unverändert kopieren -sameq die Videoqualität beibehalten Schlussendlich sollte der ganze Film aber doch wieder ein Seitenverhältnis von 4:3 bekommen, nur eben mit Balken.

Kopfrechnen: 4:3=1,333333333 352:1,333333333=264,000… (264-200):2=32

Die Balken oben und unten müssen jeweils 32 Pixel hoch sein. ffmpeg -i banane.flv -s 352×200 -padtop 32 -padbottom 32 \ -acodec copy -sameq normal2.flv

-padtop 32 oben einen Balken von 32 Pixel Höhe dazu -padbottom 32 unten auch

4K Videos auf HD schrumpfen:

Nahezu jede Kamera kann heute in 4K Videos machen. Die kann ich hiermit in HD weiterbearbeiten.

Hat man eine einzelne Datei reicht: ffmpeg -i DJI_0029.MP4 -vf scale = 1920: 1080 -c: v libx264 -crf 35 DJI_0029-smaller.mp4

Das Bash-Skript: (Speichern Sie diese Datei in convert.sh und chmod + x convert.sh)

#! / bin / bash

ffmpeg -i $ 1 -vf scale = 1920: 1080 -c: v libx264 -crf 35 $ 1-1080P.mp4

Ausführung in dem Ordner des Videos: ./convert.sh filename.mp4 Die Ausgabedateien haben den Dateinamen filename.mp4.1080P.mp4, für meine Zwecke ist das in Ordnung.

FFmpeg hat einen sehr leistungsfähigen "Anpassung an Größe" Filter,

mit dem verschiedene Aufgaben erledigt werden können. Einige von ihnen sind hier aufgelistet. Weitere Informationen findet man in der offiziellen Dokumentation.

In allen Beispielen ist das Startbild (input.jpg) dieses (535 × 346 Pixel):

Einfaches Reskalieren

Wenn Du Dein Video einfach auf eine bestimmte Größe (z. B. 320 × 240) skalieren musst, kannst DU den Skalierungsfilter in seiner einfachsten Form verwenden:

ffmpeg -i input.avi -vf scale = 320: 240 output.avi

Gleiches gilt auch für Bilder:

ffmpeg -i input.jpg -vf scale = 320: 240 output_320x240.png

Das resultierende Bild sieht folgendermaßen aus:

Wie Du siehst, stimmt das Seitenverhältnis nicht mit dem des Originalbilds überein, sodass das Bild gestreckt erscheint.

Seitenverhältnis beibehalten

Wenn Du das Seitenverhältnis beibehalten möchtest, musst Du Sie nur eine Komponente (Breite oder Höhe) angeben und die andere Komponente auf -1 setzen. Zum Beispiel diese Befehlszeile:

ffmpeg -i input.jpg -vf scale = 320: -1 output_320.png

Setzt die Breite des Ausgabebildes auf 320 Pixel und berechnet die Höhe des Ausgabebildes entsprechend dem Seitenverhältnis des Eingabebildes. Das resultierende Bild hat eine Größe von 320 × 207 Pixel.

Bei einigen Codecs muss die Größe von Breite und Höhe ein Vielfaches von n sein. Das erreicht man, indem man die Breite oder Höhe auf -n setzt:

ffmpeg -i input.jpg -vf scale = 320: -2 output_320.png

Die Ausgabe beträgt jetzt 320 × 206 Pixel.

Hinzufügen von Posterbildern zu Audiodateien

Eie Posterbilder zu Ihren Dateien hinzufügen, damit die Bilder während der Wiedergabe der Audiodateien angezeigt werden?

Dies kann nützlich sein, um Audiodateien in Video-Hosting- oder Sharing-Websites zu hosten.

ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

PDF als Film

Dazu ist neben FFmpeg auch die Installation von ImageMagick notwendig.

Konvertiere nach der Installation von ffmpeg und imagemagick die PDF in ein Bildformat wie PNG oder JPG.

$ convert-density 400 input.pdf picture.png

Hier gibt -density 400 die horizontale Auflösung der Ausgabebilddatei-en an.

Der obige Befehl konvertiert alle Seiten in der angegebenen PDF-Datei in das PNG-Format. Jede Seite in der PDF-Datei wird in eine PNG-Datei konvertiert und im aktuellen Verzeichnis mit den Dateinamen picture-1.png, picture-2.png usw. gespeichert. Geduld…………. Je nach Anzahl der Seiten in der PDF-Eingabedatei dauert es eine Weile.

Nachdem alle Seiten in der PDF-Datei in das PNG-Format konvertiert wurden, gib den folgenden Befehl ein, um eine Videodatei aus den PNG-Dateien zu erstellen.

$ ffmpeg -r 1/10 -i picture-% 01d.png -c: v libx264 -r 30 -pix_fmt yuv420p video.mp4

Einstellungen:

-r 1/10: Zeigt jedes Bild 10 Sekunden lang an. -i Bild-% 01d.png: Liest alle Bilder, die mit dem Namen „Bild-“ beginnen, gefolgt von einer Ziffer (% 01d) und endend mit .png.

Wenn der Bildname zwei Ziffern enthält (z. B. picture-10.png, picture11.png usw.), verwende (% 02d) im obigen Befehl.

-c: v libx264: Video-Codec ausgeben (d. h264). -r 30: Framerate des Ausgabevideos -pix_fmt yuv420p: Videoauflösung ausgeben video.mp4: Videodatei im MP4-Format ausgeben.

Die Filmdatei ist fertig !! Diese lässt sich auf allen Geräten abspielen, die das MP4-Format unterstützen.

Nach Erstellung der Video Datei kann jetzt noch eine Audiodatei (gleicher Länge) hinzuaddiert werden.

$ ffmpeg -i Audio.mp3 -i Video.mp4 -acodec copy -vcodec copy neue.mp4

Der Ken Burns Effekt

Ein „Trick“ um Fotos Lebendig zu machen. https://de.wikipedia.org/wiki/Ken_Burns

Hier meine verstorbene Katze Feline als Foto (1000x666px)

Mit diesem Script wird das hereinzoomen, aufteilen in Einzelbilder und zusammenfügen als Film durchgeführt.

#!/bin/bash ffmpeg -y -i %d.jpg -t 25 -pix_fmt yuv420p -vf zoompan=z='zoom+0.001':s=800×600 -c:v libx264 -preset fast -crf 22 -t 300 -threads 2 zoomout.mp4

und hier das Ergebniss:

linux-tools/ffmpeg.txt · Zuletzt geändert: 2019/10/25 21:51 von peter

Seiten-Werkzeuge