Wie teile ich Dateien auf und füge sie zusammen, ffmpeg
während alle Audiotracks erhalten bleiben?
Wie Sie festgestellt haben, wählt eine Bitstream-Kopie nur eine (Audio-) Spur gemäß der Dokumentation der Streamspezifikation aus :
Beinhaltet standardmäßig
ffmpeg
nur einen Stream jedes Typs (Video, Audio, Untertitel) in den Eingabedateien und fügt sie jeder Ausgabedatei hinzu. Es wird das "Beste" von jedem anhand der folgenden Kriterien ausgewählt: Für Video ist dies der Stream mit der höchsten Auflösung, für Audio der Stream mit den meisten Kanälen, für Untertitel der erste Untertitelstream. In dem Fall, in dem mehrere Streams des gleichen Typs gleich sind, wird der Stream mit dem niedrigsten Index ausgewählt.
So wählen Sie alle Audiospuren aus:
ffmpeg -i InputFile.ts-c copy -ss 00:12:34.567 -t 00:34:56.789 -map 0:v -map 0:a FirstFile.ts
So wählen Sie die dritte Audiospur aus:
ffmpeg -i InputFile.ts -c copy -ss 00:12:34.567 -t 00:34:56.789 -map 0:v -map 0:a:2 FirstFile.ts
Weitere Informationen und Beispiele für die Stream-Auswahl finden Sie im Abschnitt Erweiterte Optionen der ffmpeg
Dokumentation.
Ich würde auch -vcodec copy -acodec copy
von Ihrem ursprünglichen Befehl aus -c copy
wie oben für die Kompaktheit des Ausdrucks kombinieren .
Teilt:
Kombinieren Sie diese mit dem, was Sie in den beiden Dateien erreichen möchten, was das Aufteilen zum späteren Wiederverbinden angeht:
ffmpeg -i InputOne.ts -ss 00:02:00.0 -c copy -map 0:v -map 0:a OutputOne.ts ffmpeg -i InputTwo.ts -c copy -t 00:03:05.0 -map 0:v -map 0:a OutputTwo.ts
werde dir geben:
OutputOne.ts
, das ist alles nach den ersten zwei Minuten der ersten EingabedateiOutputTwo.ts
Dies sind die ersten 3 Minuten und 5 Sekunden der zweiten Eingabedatei
Beitreten:
ffmpeg
unterstützt die Verkettung von Dateien ohne Neucodierung, die ausführlich in der Verkettungsdokumentation beschrieben wird .
Erstellen Sie Ihre Liste der zu verbindenden Dateien (zB join.txt
):
file '/path/to/files/OutputOne.ts' file '/path/to/files/OutputTwo.ts'
Dann kann Ihr ffmpeg
Befehl Folgendes verwenden concat demuxer
:
ffmpeg -f concat -i join.txt -c copy FinalOutput.ts
Da Sie mit mpeg
Transportströmen ( .ts
) arbeiten, sollten Sie auch das concat- Protokoll verwenden können :
ffmpeg -i "concat:OutputOne.ts|OutputTwo.ts" -c copy -bsf:a aac_adtstoasc output.mp4
Gemäß dem Beispiel auf der oben verlinkten Concat-Seite. Das überlasse ich dir, um damit zu experimentieren.