Ich habe eine AC3 5.1-Audiodatei, in die ich zu Beginn x Sekunden stilles Audio einfügen möchte. Dies hat nichts mit Video-Muxing zu tun, daher ist sein Offset nutzlos, da er anscheinend nur mit einem Audio-Stream funktioniert, der einem Video-Stream beiliegt. Ich möchte dies mit ffmpeg erreichen. Irgendwelche Ideen?
14
Antworten:
Verwenden des Concat-Demuxers (fügen Sie Anfang und / oder Ende Stille hinzu)
Verwenden Sie den Concat-Demuxer, wenn Sie eine Neucodierung des Hauptsegments vermeiden möchten. Diese Methode fügt dem Anfang oder Ende (oder beiden) Stille hinzu.
Verwenden Sie den Filter für die anullsrc- Audioquelle, um das stille Audio zu erstellen. Sie müssen das Format, das Kanallayout und die Abtastrate der Hauptaudiodatei anpassen. Beispiel für die Erstellung einer 5,1-Kanal-, 48000-Hz-Abtastrate, 1 Sekunde stille AC3-Audiodatei (da dies das Format in der Frage war):
Erstellen Sie nun eine Textdatei mit dem Namen
input.txt
, in der die zu verkettenden Dateien aufgelistet sind:Wenn Sie die Stille am Ende wünschen, ändern Sie stattdessen einfach die Reihenfolge der Dateien in
input.txt
.Jetzt können Sie die Dateien mit dem concat-Demuxer verketten :
Verwenden des Concat-Filters (am Anfang und / oder Ende Stille hinzufügen)
Verwenden Sie den Concat-Filter, wenn Sie alles in einem Befehl ausführen möchten oder wenn Sie in einem anderen Format als der Eingabe ausgeben möchten (da diese Methode ohnehin neu codiert). Diese Methode fügt dem Anfang oder Ende oder beiden Stille hinzu.
Beispiel für das Hinzufügen von 1 Sekunde Stille zum Beginn eines Stereo-Eingangs mit einer Abtastrate von 44100 Hz:
Das Filtern führt zu einer Neucodierung, der Concat-Demuxer jedoch nicht.
In anullsrc wird empfohlen, das Kanallayout und die Abtastrate des Eingangs anzupassen.
Wenn Sie dem Ende stattdessen Stille hinzufügen möchten, ändern Sie einfach die Reihenfolge der Eingaben für den Concat-Filter :
[1:a][0:a]concat=n=2:v=0:a=1
.Verwenden des Adelay-Filters (fügen Sie dem Anfang Stille hinzu)
Verwenden Sie den Adelay- Audiofilter, wenn Sie alles in einem Befehl ausführen oder in einem anderen Format als der Eingabe ausgeben möchten (da diese Methode ohnehin neu codiert). Dies funktioniert nur, um den Anfang einer Datei zum Schweigen zu bringen.
In diesem Beispiel wird am Anfang eines Stereo-Eingangs 1 Sekunde Stille hinzugefügt:
1s
eine Sekunde lang verwenden.adelay=1000
, während ein 5.1-Eingang verwendet würdeadelay=1000|1000|1000|1000|1000|1000
.Verwenden des Apad-Filters (fügen Sie am Ende Stille hinzu)
Verwenden Sie den apad- Audiofilter, wenn Sie alles in einem Befehl ausführen möchten oder wenn Sie in einem anderen Format als der Eingabe ausgeben möchten (da diese Methode ohnehin neu codiert). Dies funktioniert nur, um das Ende einer Datei zum Schweigen zu bringen.
In diesem Beispiel wird am Ende 1 Sekunde Stille hinzugefügt:
Das Filtern führt zu einer Neucodierung, der Concat-Demuxer jedoch nicht.
Die
pad_dur
Option wurde nach der Veröffentlichung von FFmpeg 4.1 hinzugefügt, sodass Sie einen aktuellen Build aus dem Git-Master-Zweig verwenden oder auf FFmpeg 4.2 warten müssen.quelle
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
Neue Syntax ist-i "aevalsrc=0|0|0|0|0|0:d=1"