Kurz:Diese detaillierte Anleitung zeigt, wie man ffmpeg in Ubuntu und anderen Linux-Distributionen installiert. Es demonstriert auch einige nützliche ffmpeg-Befehle für den praktischen Gebrauch.
ffmpeg ist ein CLI (Befehlszeilen-basiertes) Dienstprogramm zum Verarbeiten von Mediendateien. Es ist ein Framework mit einer Vielzahl von Funktionen und aufgrund seiner Open-Source-Lizenz die Basis für viele weit verbreitete Apps wie VLC, YouTube, iTunes und viele mehr. Eine Reihe von Linux-Videoeditoren verwenden ffmpeg unterhalb der GUI.
Was ich an ffmpeg noch mehr liebe ist, dass es alleine verwendet werden kann, um viele Verarbeitungsaufgaben auf sehr einfache Weise (mit einem oder zwei Befehlen) zu erledigen. Es ist jedoch ein sehr leistungsfähiges Programm, das auf komplexere Weise verwendet werden kann und sogar einen Bearbeitungsworkflow ersetzen kann.
In diesem ffmpeg-Tutorial zeige ich Ihnen, wie Sie ffmpeg installieren und ich werde die verschiedenen Verwendungszwecke behandeln. Ich werde sogar auf einige komplexere Funktionen eingehen.
Hier sind die Abschnitte dieses Handbuchs:
- ffmpeg installieren
- Grundlegende Verwendung von ffmpeg
- Erweiterte Verwendung von ffmpeg
- Filtergrundlagen
Ich werde alles im Detail erklären, damit Sie verstehen können, was vor sich geht, auch wenn Sie neu in der Linux-Welt sind.
Ich verwende Ubuntu 18.04 , aber diese Befehle sollten auch für andere Distributionen funktionieren.
Hinweis: Obwohl ich ffmpeg recherchiert habe alles, was ich in diesem Artikel erwähne, gründlich und getestet habe, bearbeite ich Videos (oder andere Medien) nicht täglich. Wenn Sie Vorschläge, Tipps oder Korrekturen haben, lassen Sie es mich in den Kommentaren wissen!
Packen wir es an!
Installation von ffmpeg unter Ubuntu und anderen Linux
Installieren von ffmpeg ist ein unkomplizierter Vorgang. Es ist eine beliebte Anwendung und in den meisten Linux-Distributionen über den Paketmanager verfügbar.
ffmpeg in Ubuntu installieren
In Ubuntu ist ffmpeg im Universe-Repository verfügbar, stellen Sie also sicher, dass Sie das Universe-Repository aktivieren. und aktualisieren Sie dann die Paketliste und installieren Sie ffmpeg. Sie können all dies mit den folgenden Befehlen in einem Terminal tun:
sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg
Das sollte es sein! Sie können die Installation überprüfen, indem Sie einfach Folgendes eingeben:
ffmpeg
Dies sollte einen Text anzeigen, der Ihr ffmpeg beschreibt Konfiguration (einschließlich Version ).
Wie Sie auf dem obigen Screenshot sehen können, ist die installierte Version ist 3.4.4 . Allerdings die neueste Version von ffmpeg zum Zeitpunkt der Erstellung dieses Artikels ist 4.1 . Zur Installation von 4.x -Version müssen Sie die ffmpeg ppa verwenden . Klicken Sie, um den nächsten Abschnitt zu erweitern, um die Details der ffmpeg-Installation über PPA anzuzeigen.
Installieren Sie das neueste ffmpeeg in Ubuntu-basierten Distributionen mit PPA
Es gibt ein inoffizielles PPA, mit dem Sie die neueste ffmpeg-Version installieren können. Verwenden Sie einfach diese Befehle:
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update
sudo apt install ffmpeg -y
Installieren Sie ffmpeg in Arch-basierten Distributionen
Verwenden Sie den folgenden Befehl, um ffmpeg in Arch-basierten Distributionen zu installieren:
sudo pacman -S ffmpeg
Installieren Sie ffmpeg in Fedora-basierten Distributionen
Um ffmpeg in Fedora-basierten Linux-Distributionen zu installieren, können Sie diesen Befehl verwenden:
sudo dnf install ffmpeg
Verwendung von ffmpeg:Die Grundlagen
Mit ffmpeg installiert ist, gehe ich die grundlegenden Befehle durch, um Ihnen den Einstieg in die Verwendung dieses leistungsstarken Tools zu erleichtern.
0. ffmpeg-Befehle
Die Grundform ein ffmpeg-Befehl ist:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Sie müssen bedenken, dass alle Dateioptionen nur für die darauf folgende Datei gelten (Sie müssen sie für die nächste Datei erneut schreiben).
Jede Datei, der kein -i vorangestellt ist wird als Ausgabedatei betrachtet. Ffmpeg verwendet so viele Ein- und Ausgänge, wie Sie bereitstellen. Sie können auch denselben Namen für eine Eingabe- und eine Ausgabedatei verwenden, aber Sie müssen das -y hinzufügen -Tag vor dem Namen der Ausgabedatei.
Hinweis
Sie sollten nicht mischen Eingänge und Ausgänge; Geben Sie zuerst die Eingabedateien und dann die Ausgabedateien an.
1. Informationen zu Mediendateien erhalten
Die erste Verwendung von ffmpeg zeigt Informationen an über eine Mediendatei. Dies kann erreicht werden, indem keine Ausgabedateien eingegeben werden. Geben Sie einfach ein:
ffmpeg -i file_name
Dies funktioniert sowohl für Audio- als auch für Videodateien:
ffmpeg -i video_file.mp4
ffmpeg -i audio_file.mp3
Obwohl dieser Befehl nützlich ist, zeigt er viel zu viele Informationen an, die für Ihre Datei nicht relevant sind (Informationen über ffmpeg). Um das wegzulassen, fügen Sie das -hide_banner hinzu Flagge:
ffmpeg -i video_file.mp4 -hide_banner
ffmpeg -i audio_file.mp3 -hide_banner
Wie Sie sehen können, gibt der Befehl jetzt nur Details zu der von Ihnen angegebenen Mediendatei aus (Encoder, Streams usw.).
2. Mediendateien konvertieren
Eine weitere sehr nützliche Art, ffmpeg zu verwenden dient der problemlosen Konvertierung zwischen verschiedenen Medienformaten. Sie müssen nur Eingabe- und Ausgabedateien angeben, da ffmpeg erhält das erforderliche Format aus den Dateierweiterungen. Dies funktioniert für Video-zu-Video- und Audio-zu-Audio-Konvertierungen.
Hier sind einige Beispiele:
ffmpeg -i video_input.mp4 video_output.avi
ffmpeg -i video_input.webm video_output.flv
ffmpeg -i audio_input.mp3 audio_output.ogg
ffmpeg -i audio_input.wav audio_output.flac
Sie können sogar weitere Ausgabedateien angeben:
ffmpeg -i audio_input.wav audio_output_1.mp3 audio_output_2.ogg
Dadurch werden die Eingabedateien in alle angegebenen Formate konvertiert.
Um eine Liste aller unterstützten Formate anzuzeigen, verwenden Sie:
ffmpeg -formats
Auch hier können Sie -hide_banner hinzufügen um Informationen über die App wegzulassen.
Sie können -qscale 0 angeben Parameter vor der Ausgabedatei, um die Qualität einer Videodatei beizubehalten:
ffmpeg -i video_input.wav -qscale 0 video_output.mp4
Außerdem können Sie Codecs angeben Sie verwenden möchten, indem Sie -c:a hinzufügen (für Audio ) und -c:v (für Video ) gefolgt vom Namen des Codecs oder copy wenn Sie dieselben Codecs wie die Originaldatei verwenden möchten:
ffmpeg -i video_input.mp4 -c:v copy -c:a libvorbis video_output.avi
Hinweis: Dadurch könnte die Dateierweiterung ziemlich täuschen, seien Sie also vorsichtig.
3. Audio aus Video extrahieren
Um Audio zu extrahieren aus einer Videodatei führen Sie eine einfache Konvertierung durch und fügen das -vn hinzu Flagge:
ffmpeg -i video.mp4 -vn audio.mp3
Beachten Sie, dass dieser Befehl die Bitrate verwendet der Originaldatei. Es ist eine gute Idee, es selbst einzustellen; Sie können -ab verwenden (Audiobitrate):
ffmpeg -i video.mp4 -vn -ab 128k audio.mp3
Einige gängige Bitraten sind 96k, 128k, 192k, 256k, 320k (höchste von mp3 unterstützte Bitrate).
Andere gängige Optionen sind -ar (Audiofrequenz :22050, 441000, 48000), -ac (Anzahl der Audiokanäle ), -f (Audioformat , obwohl normalerweise automatisch erkannt). -ab kann auch durch -b:a ersetzt werden . Zum Beispiel:
ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b:a 128k -f mp3 audio.mp3
4. Audio in Video stumm schalten
Ähnlich wie bei der letzten Aufgabe fügen wir dazu ein einfaches Tag hinzu:-an (anstelle von -vn ).
ffmpeg -i video_input.mp4 -an -video_output.mp4
Hinweis: Das -an -Tag macht alle Audiooptionen für diese Ausgabedatei unbrauchbar, da das Ergebnis der Operation kein Audio enthält.
5. Bilder aus Video extrahieren
Dies könnte für viele Menschen nützlich sein. Beispielsweise haben Sie möglicherweise eine Reihe von Bildern (z. B. eine Diashow) und möchten alle Bilder daraus erhalten. Geben Sie einfach ein:
ffmpeg -i video.mp4 -r 1 -f image2 image-%3d.png
Nehmen wir das mal für eine Sekunde auseinander.
-r gibt die Framerate an (wie viele Frames in einer Sekunde in Bilder extrahiert werden, Standard :25), -f gibt das Ausgabeformat an (image2 steht eigentlich für image2 sequence.
Der letzte Parameter (die Ausgabedatei) hat einen etwas interessanten Namen:Er verwendet %3d Am Ende. Dies nummeriert Ihre Bilder einfach mit 3 Ziffern (000, 001 usw.). Sie können auch %2d verwenden (2-stelliges Format) oder sogar %4d (4-stelliges Format), wenn Sie möchten. Fühlen Sie sich frei, zu experimentieren und zu verwenden, was für Sie funktioniert!
Hinweis: Es gibt auch eine Möglichkeit, eine Reihe von Bildern in ein Video/eine Diashow umzuwandeln. Ich werde darauf in der Erweiterten Verwendung eingehen Abschnitt .
6. Videoauflösung oder Seitenverhältnis ändern
Eine weitere einfache Aufgabe für ffmpeg . Alles, was Sie tun müssen, um die Größe zu ändern Bei einem Video wird nach dem -s eine neue Auflösung angegeben Flagge:
ffmpeg -i video_input.mov -s 1024x576 video_output.mp4
Zusätzlich können Sie -c:a angeben um sicherzustellen, dass der Audio-Codec der Ausgabedatei der richtige ist:
ffmpeg -i video_input.h264 -s 640x480 -c:a video_output.mov
Sie können auch das Seitenverhältnis ändern mit -aspekt :
ffmpeg -i video_input.mp4 -aspect 4:3 video_output.mp4
Hinweis: Noch einmal wird eine etwas leistungsfähigere Methode in der Erweiterten Verwendung erwähnt Abschnitt.
7. Posterbild zu Audio hinzufügen
Dies ist eine großartige Möglichkeit, Audio in Video umzuwandeln , wobei ein einzelnes Foto (z. B. ein Albumcover) für den Ton verwendet wird. Dies ist eine sehr nützliche Funktion, wenn Sie Audiodateien auf Websites hochladen möchten, die nichts anderes als Videos/Bilder zulassen (YouTube und Facebook sind zwei Beispiele für solche Websites).
Hier ist ein Beispiel:
ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
Ändern Sie einfach die Codecs (-c:v gibt Video an Codecs, -c:a gibt Audio an Codecs) und die Namen Ihrer Dateien.
Hinweis: Sie müssen nicht -streng experimentell verwenden wenn Sie eine neuere Version verwenden (4.x ).
8. Untertitel zum Video hinzufügen
Genauso nützlich und einfach zu machen mit ffmpeg ist das Untertitel hinzufügen zu einem Video (z. B. einem Film). Geben Sie Folgendes ein:
ffmpeg -i video.mp4 -i subtitles.srt -c:v copy -c:a copy -preset veryfast -c:s mov_text -map 0 -map 1 output.mp4
Natürlich können Sie alle gewünschten Codecs angeben (und alle anderen zusätzlichen Optionen in Bezug auf Audio/Video). Sie können diesen Artikel über das grafische Bearbeiten von Untertiteln in Linux lesen.
9. Mediendateien komprimieren
Komprimieren Dateien reduziert die Dateigröße erheblich und spart Ihnen viel Platz. Dies kann für die Übertragung von Dateien wichtig sein. Mit ffmpeg , gibt es mehrere Methoden, um die Dateigröße zu reduzieren.
Hinweis: Wenn Sie Dateien zu stark komprimieren, verringert sich die Qualität der resultierenden Datei merklich.
Zunächst einmal für Audio Dateien einfach verkleinern die Bitrate (mit -b:a oder -ab ):
ffmpeg -i audio_input.mp3 -ab 128k audio_output.mp3 ffmpeg -i audio_input.mp3 -b:a 192k audio_output.mp3
Auch hier sind einige unterschiedliche Bitratenwerte:96k, 112k, 128k, 160k, 192k, 256k, 320k. Je höher die Bitrate, desto höher die Dateigröße und die Qualität.
Für Video Dateien haben Sie mehr Möglichkeiten. Eine Möglichkeit wäre, die Video-Bitrate zu reduzieren (mit -b:v ):
ffmpeg -i video_input.mp4 -b:v 1000k -bufsize 1000k video_output.mp4
Hinweis: Video-Bitraten sind anders von Audio-Bitraten (viel höhere Werte).
Sie könnten das -crf setzen Flag (Konstanter Ratenfaktor ). Ein niedrigerer crf bedeutet eine höhere Bitrate. Auch mit libx264 als Video-Codec hilft. Hier ist eine sehr effiziente Größenreduzierung mit sehr geringer Qualitätsminderung:
ffmpeg -i video_input.mp4 -c:v libx264 -crf 28 video_output.mp4
Ein crf von 20 bis 30 ist üblich, aber Sie können gerne mit dem spezifischen Wert herumspielen.
Reduzierung der Bildrate könnte in manchen Fällen funktionieren (obwohl es sehr leicht dazu führen kann, dass sich das Video träge anfühlt):
ffmpeg -i video_input.mp4 -r 24 video_output.mp4
-r gibt die Framerate an (in diesem Fall 24 ).
Sie können auch versuchen, die Größe zu verringern des Videos (bereits erklärt, wie das geht). Ein zusätzlicher Tipp ist das Komprimieren das Audio auch, wodurch es Stereo wird und Reduzieren der Bitrate . Zum Beispiel:
ffmpeg -i video_input.mp4 -c:v libx264 -ac 2 -c:a aac -strict -2 -b:a 128k -crf 28 video_output.mp4
Hinweis: -strict -2 und -ac 2 kümmere dich um den Stereoteil. Ich habe bereits den Teil behandelt, der die Bitrate reduziert .
10. Mediendateien schneiden (Basic)
Zum Trimmen Dateien von Anfang Sie müssen eine Dauer angeben mit -t :
ffmpeg -i input_video.mp4 -t 5 output_video.mp4
ffmpeg -i input_audio.wav -t 00:00:05 output_audio.wav
Wie Sie sehen können, funktioniert dies für beide Videos und Audio Dateien. Beide obigen Befehle machen dasselbe:Speichern Sie die ersten 5 Sekunden der Eingabedatei in der Ausgabedatei. Ich habe mich an verschiedene Arten der Eingabe der Dauer gewöhnt :eine einzelne Zahl (Anzahl Sekunden) und HH:MM:SS (Stunden, Minuten, Sekunden). Die zweite Version wirkt eher wie eine Endzeit .
Sie können sogar noch weiter gehen, indem Sie eine Startzeit angeben mit -ss , und sogar eine Endzeit mit -to :
ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3
ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav
ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264
ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg
Sie können Startzeit sehen (-ss HH:MM:SS ), Dauer (-t Dauer ) in Sekunden, Endzeit (-bis HH:MM:SS ) und Startzeit (-s Dauer ) in Sekunden (beginnend nach Dauer Sekunden).
All dies sind gültige Befehle und Sie können mit ihnen mit jedem Teil einer Mediendatei arbeiten.
Verwendung von ffmpeg:Erweiterte Verwendung
Ich werde jetzt etwas fortgeschrittenere Funktionen behandeln (z. B. Bildschirmübertragung, Verwendung von Geräten usw.). Kommen wir gleich zum ersten Punkt!
1. Mediendateien teilen
Ich habe bereits Trimmen behandelt Dateien. Was Sie tun müssen, um aufzuteilen eine Datei in mehrere Teile ist die Angabe mehrerer Beschnitte (unter Angabe von Anfangszeiten , Endzeit oder Dauer vor jeder Ausgabedatei).
Beachten Sie dieses Beispiel:
ffmpeg -i video.mp4 -t 00:00:30 video_1.mp4 -ss 00:00:30 video_2.mp4
Die Syntax ist recht einfach. Ich habe -t 00:00:30 angegeben als Dauer für den ersten Teil (der erste Teil besteht aus den ersten 30 Sekunden des Originalvideos). Als Nächstes habe ich angegeben, dass der Rest Teil eines zweiten Videos sein soll (beginnend mit dem Ende des letzten Teils, 00:00:30 ).
Dies ist für beliebig viele Teile möglich! Viel Spaß beim Spielen mit dieser Funktion, da sie sehr mächtig ist. Denken Sie daran, dass es auch mit Audio funktioniert.
2. Mediendateien verketten
ffmpeg kann auch den umgekehrten Vorgang ausführen:mehrere Teile zusammenfügen.
Dazu müssen Sie erstellen eine neue Textdatei und beginnen Sie mit der Bearbeitung es mit Ihrem bevorzugten Editor.
Da ich das Terminal gerne verwende, verwende ich Touch und vim . Es spielt keine Rolle, wie Sie diese Datei nennen. Ich nenne meine join.txt und erstellen Sie die Datei mit touch :
touch videos_to_join.txt
Jetzt bearbeite ich es mit vim :
vim videos_to_join.txt
Sie können alle Tools verwenden, die Sie möchten (Nano, Gedit usw.). Dies ist genau das, was für mich am einfachsten zu verwenden ist.
Geben Sie hier die vollständigen Pfade ein zu allen Dateien, die Sie verbinden möchten (Sie werden in der Reihenfolge verbunden, in der Sie sie hier schreiben), eine pro Zeile. Stellen Sie sicher, dass sie dieselbe Erweiterung haben (z. B. mp4 ). Hier ist meins:
/home/ubuntu/Desktop/video_1.mp4
/home/ubuntu/Desktop/video_2.mp4
/home/ubuntu/Desktop/video_3.mp4
Speichern Sie die gerade bearbeitete Datei. Diese Methode funktioniert für alle Audio- oder Videodateien.
Geben Sie nun Folgendes ein:
ffmpeg -f concat -i join.txt output.mp4
Hinweis: Meine Ausgabedatei ist output.mp4 , aber das liegt daran, dass alle meine Eingabedateien die Datei mp4 haben Erweiterung.
Dies sollte beitreten alle Dateien, die Sie in join.txt notiert haben (oder wie auch immer Sie diese Datei benannt haben) in eine einzige Ausgabedatei.
3. Verbinden Sie Bilder mit einem Video
So können Sie eine Diashow zusammenstellen oder ähnliches. Ich zeige Ihnen, wie Sie Audio hinzufügen auch.
Das erste, was ich empfehle, ist sicherzustellen, dass sich die Fotos, die Sie zusammenstellen möchten, im selben Verzeichnis befinden. Ich lege meine in ein Verzeichnis namens my_photos . Die Erweiterungen empfohlen für die Bilder sind .png und .jpg . Unabhängig davon, wofür Sie sich entscheiden, stellen Sie sicher, dass alle Bilder dieselbe Erweiterung haben (andernfalls verwenden Sie ffmpeg kann unbeabsichtigte Auswirkungen haben). Sie könnten einfach konvertieren die .png Dateien in .jpg oder umgekehrt (siehe Grundlegende Verwendung ).
Das Format (-f ) unserer Konvertierung sollte image2pipe sein . Für die Eingabe müssen Sie einen Bindestrich angeben (– ). Welche image2pipe was Sie tun können, ist pipe (mit | im Terminal) die Ergebnisse eines Befehls wie cat in ffmpeg anstatt alle Namen einzeln einzugeben. Genau das werde ich tun. Damit das funktioniert, müssen wir auch erwähnen, dass wir die Video-Codecs wollen kopiert werden (-c:v kopieren ) (um die Bilder richtig zu verwenden):
cat my_photos/* | ffmpeg -f image2pipe -i - -c:v copy video.mkv
Wenn Sie diese Datei abspielen, denken Sie vielleicht, dass der Diashow nur einige Bilder hinzugefügt wurden. Eigentlich wurden alle Ihre Bilder hinzugefügt, aber ffmpeg durchläuft sie so schnell wie möglich. Das bedeutet 1 Rahmen pro Foto; ffmpeg läuft (standardmäßig) mit etwa 23 fps .
Um das zu ändern, müssen Sie die Bildrate angeben (-Framerate ) Sie wollen:
cat my_photos/* | ffmpeg -framerate 1 -f image2pipe -i - -c:v copy video.mkv
In meinem Beispiel stelle ich die Framerate ein zu 1 , das bedeutet, dass jeder Frame (also auch jedes Bild) für 1 Sekunde angezeigt wird .
Zum Hinzufügen von Audio B. ein Hintergrundlied, müssen wir die Audiodatei angeben als Eingabedatei (-i Audiodatei ) und kopieren die Audio-Codecs (-c:eine Kopie ). Für die Codecs , könnten Sie mit -c copy sowohl Audio- als auch Video-Codecs gleichzeitig kopieren . Stellen Sie sicher, dass Sie die Codecs richtig eingestellt haben, bevor Sie die Ausgabedatei angeben. Sie können auch die Framerate einstellen damit alle Ihre Bilder mit der Dauer des Audios synchronisieren, das Sie verwenden möchten. Um das zu bekommen, dividiere die Anzahl der Bilder durch die Dauer des Audios (in Sekunden) . Für mein Beispiel habe ich eine 22 Sekunden lange Audiodatei und 9 Bilder. 9/22 ist ungefähr 0,40, also verwende ich das für meine Framerate:
cat my_photos/* | ffmpeg -framerate 0.40 -f image2pipe -i - -i audio.wav -c copy video.mkv
4. Nehmen Sie Ihren Bildschirm auf
Screencasting mit ffmpeg ist kein schwerer Job. Das Format (-f ), die Sie verwenden müssen, ist x11grab . Dadurch wird Ihr XSERVER erfasst . Als Eingabe Sie müssen Ihre Bildschirmanzeigenummer angeben (Hauptbildschirm sollte normalerweise 0:0 sein ). Dadurch wird jedoch nur ein oberer linker Teil erfasst des Bildschirms. Sie sollten eine Bildschirmgröße hinzufügen (-s ). Meine ist 1920×1080 . Die Bildschirmgröße sollte vor erwähnt werden die Eingabe :
ffmpeg -f x11grab -s 1920x1080 -i :0.0 output.mp4
Drücken Sie q oder STRG+C jederzeit aufzuhören der Screencast .
Bonustrick: Sie können die Größe der Ausgabedatei Vollbild machen indem Sie dies hinterher für die Größe eingeben (statt 1920×1080 oder einer anderen eingestellten Auflösung):
-s $(xdpyinfo | grep dimensions | awk '{print $2;}')
Hier ist der vollständige Befehl:
ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 output.mp4
5. Nehmen Sie Ihre Webcam auf
Eingabe aufnehmen von Ihrer Webcam (oder ein anderes Gerät, wie eine USB-Kamera) ist sogar noch einfacher. Unter Linux Geräte befinden sich in /dev als /dev/video0, /dev/video1 usw. :
ffmpeg -i /dev/video0 output.mkv
Wieder q oder STRG+C um die Aufnahme zu stoppen .
6. Nehmen Sie Ihr Audio auf
Linux verarbeitet Audio hauptsächlich über ALSA und Pulsaudio . ffmpeg kann aufzeichnen beides, aber ich werde pulsaudio abdecken , da Debian-basierte Distributionen es standardmäßig enthalten. Die Syntax ist für die beiden Methoden etwas unterschiedlich.
Für Pulsaudio , müssen Sie erzwingen (-f ) auch und geben Sie Standard an als Eingabe (-i default ):
ffmpeg -f alsa -i default output.mp3
Hinweis: Stellen Sie in Ihren Distributions-Soundeinstellungen sicher, dass das Standardaufnahmegerät ausgewählt ist ist derjenige, den Sie aufnehmen möchten.
Ich spiele ziemlich viel Gitarre und habe ein Audio-Interface, damit ich es aufnehmen kann. Ich hatte eine angenehme Überraschung, als ffmpeg hat meine Gitarre ohne Probleme aufgenommen.
Bonustipps zur Aufnahme
Für jede Art von Aufzeichnung können Sie auch Codecs angeben , natürlich (bereits abgedeckt). Sie können eine bestimmte Framerate auswählen (-r ). Sie können kombinieren Audioaufnahme auch mit Webcam/Bildschirmaufnahme!
ffmpeg -i /dev/video0 -f alsa -i default -c:v libx264 -c:a flac -r 30 output.mkv
Anstatt Audio aufzunehmen, können Sie genauso einfach hinzufügen eine Audiodatei als Eingabe, die über Ihrem Screencast/Ihrer Webcam aufgezeichnet werden soll:
ffmpeg -f x11grab -s $(xdpyinfo | grep dimensions | awk '{print $2;}') -i :0.0 -i audio.wav -c:a copy output.mp4
Hinweis: ffmpeg nimmt in kleinen Stücken auf, sodass eine wirklich kleine Aufnahme möglicherweise nicht gespeichert wird. Ich empfehle, etwas länger aufzunehmen und danach zu schneiden (wenn Sie nur ein paar Sekunden möchten), nur um sicherzustellen, dass die Datei tatsächlich auf Ihre Festplatte geschrieben wird.
Grundlegende Verwendung von Filtern in ffmpeg
Filter sind ein unglaublich mächtiges Feature von ffmpeg . Es gibt wahnsinnig viele Filter für Sie verfügbar, wodurch ffmpeg erstellt wird vollständig in der Lage, jede Bearbeitung zu handhaben braucht. Da es so viele Filter gibt und dieser Artikel bereits umfassend ist, werde ich nur einige einfache Filter behandeln.
Die Grundstruktur für die Verwendung eines Filters ist:
ffmpeg -i input.mp4 -vf "filter=setting_1=value_1:setting_2=value_2,etc" output.mp4 ffmpeg -i input.wav -af "filter=setting_1=value_1:setting_2=value_2,etc" output.wav
Wie Sie sehen, lege ich Videofilter fest (-vf , kurz für -filter:v ) und Audiofilter (-af , kurz für -filter:a ). Die eigentlichen Filter werden in doppelte Anführungszeichen geschrieben (“ ) und können verkettet werden, indem sie durch Kommas getrennt werden (, ). Sie können so viele Filter angeben, wie Sie möchten (ich habe etc geschrieben um zusätzliche Filter zu beachten, es ist nicht wirklich Teil des Befehls).
Die allgemeine Form eines Filters ist:
filter=setting_2=value_2:setting_2=value_2
Die verschiedenen Filtereinstellungen und ihre Werte werden durch Doppelpunkte getrennt .
Sie können auch mathematische Operationen ausführen als Werte für die verschiedenen Einstellungen .
Hinweis: Ausführlichere Informationen zu verschiedenen Konstanten, die in Ausdrücken verwendet werden können, und zu verschiedenen Einstellungen finden Sie im offiziellen ffmpeg-Filterdokumentation .
Ich werde über beide Videos berichten und Audio Filter. Sehen wir uns einige Beispiele an!
1. Videoskalierung
Dies ist ein sehr einfacher Filter. Die einzigen Einstellungen sind Breite und Höhe :
ffmpeg -i input.mp4 -vf "scale=w=800:h=600" output.mp4
Ich habe erwähnt, dass Sie mathematische Operationen verwenden können für Werte auch:
ffmpeg -i input.mkv -vf "scale=w=1/2*in_w:h=1/2*in_h" output.mkv
Dieser Befehl legt die Ausgabegröße fest auf die Hälfte (1/2 ) der Eingabegröße (in_w , in_h ).
2. Zuschneiden von Videos
Wie beim Skalierungsfilter , die Einstellungen sind die Breite und Höhe der resultierenden Datei. Optional können Sie Koordinaten für die linke obere Ecke angeben des Schnitts (Standard: Mitte des Eingangsvideos):
ffmpeg -i input.mp4 -vf "crop=w=1280:h=720:x=0:y=0" output.mp4
ffmpeg -i input.mkv -vf "crop=w=400:h=400" output.mkv
Wie bereits erwähnt, schneidet der zweite Schnitt in der Mitte der Eingabedatei (da ich x nicht angegeben habe und y Koordinaten für die obere linke Ecke). Der erste Befehl schneidet von der oberen linken Ecke aus (x=0:y=0 ).
Hier ist ein Beispiel, das mathematische Ausdrücke verwendet als Werte :
ffmpeg -i input.mkv -vf "crop=w=3/4*in_w:h=3/4*in_h" output.mkv
Dieser Befehl legt die Ausgabegröße fest bis 3/4 der Eingabegröße (in_w , in_h ).
3. Videorotation
Sie können auch drehen ein Video im Uhrzeigersinn durch einen Wert (im Bogenmaß ). Zur Vereinfachung können Sie einen Wert in Grad angeben und konvertieren Sie es in Bogenmaß durch Multiplikation diesen Wert mit PI/180 :
ffmpeg -i input.avi -vf "rotate=90*PI/180"
ffmpeg -i input.mp4 -vf "rotate=PI"
Der erste Befehl wird rotieren das Video 90 Grad im Uhrzeigersinn . Der zweite Befehl wird turn das Video auf dem Kopf (PI rad =180 Grad).
4. Audiokanal-Neuzuordnung
Dies kann hilfreich sein, wenn Sie irgendwie nur Audio erhalten im rechten Ohr oder ähnliches. Sie können das Audio machen hörbar von beiden Ohren (in diesem speziellen Fall) wie folgt:
ffmpeg -i input.mp3 -af "channelmap=1-0|1-1" output.mp3
Diese Karten das Recht (1 ) Audiokanal nach links (0 ) und das Recht (1 ) Audiokanal. (die linke Zahl steht für Eingabe , die richtige Nummer steht für Ausgabe ).
5. Multiplizieren der Audiolautstärke
Sie können multiplizieren die Audiolautstärke von jedem echten Zahl (Ganzzahl oder nicht). Sie müssen nur den Multiplikator angeben :
ffmpeg -i input.wav -af "volume=1.5" output.wav
ffmpeg -i input.ogg -af "volume=0.75" output.ogg
Der erste Befehl verstärkt die Lautstärke 1,5 mal. Der zweite Befehl macht das Audio zu 1/4 (0,25) mal leiser .
Bonus-Tipp:Anpassungen der Wiedergabegeschwindigkeit
Ich füge sowohl das Video hinzu (hat keinen Einfluss auf Audio) und Audio Filter für diese Aufgabe.
1. Video
Der Filter für Video ist setpts (PTS =Präsentationszeitstempel). Dies funktioniert auf eine etwas interessante Weise. Da wir tatsächlich den PTS modifizieren , ein größerer Koeffizient bedeutet ein langsameres Ergebnis und umgekehrt:
ffmpeg -i input.mkv -vf "setpts=0.5*PTS" output.mkv
ffmpeg -i input.mp4 -vf "setpts=2*PTS" output,mp4
Wie ich gerade erklärt habe, wird der erste Befehl verdoppelt die Wiedergabegeschwindigkeit und der zweite Befehl verlangsamt das Video bis 1/2 der Geschwindigkeit .A
2. Audio
Der Filter dafür ist atempo . Es gibt eine kleine Einschränkung:Es kann nur Werte zwischen 0,5 annehmen (halbe Geschwindigkeit) und 2 (doppelte Geschwindigkeit). Um das zu umgehen, können Sie atempo verketten Filter:
ffmpeg -i input.wav -af "atempo=0.75" output.wav
ffmpeg -i input.mp3 -af "atempo=2.0,atempo=2.0" ouutput.mp3
The first command slows the audio by 1/4 of the original speed. The second command speeds up the audio 4 times (2*2).
Hinweis: For changing video and audio playback speed with the same command you’ll have to look into filtergraphs .
Abschluss
In this comprehensive guide I covered the installation, basic usage, advanced usage and basics of filters.
I hope that this can be a helpful resource for anyone looking to try out ffmpeg , for someone that wants to use ffmpeg for multiple tasks or even just for someone who is willing to get more familiar with the extensive features of this amazing utility.
Let us know if you found this article useful in the comments below and tell us what are you using ffmpeg for! We look forward to any additions of any kind. Thanks for reading our blog and keep an eye out for an article covering more complex filtering . Viel Spaß!