ffmpeg concat demuxing Dauer und Inpoints

ffmpeg concat demuxing Dauer und Inpoints

Ich habe viele h265-Clips, alle sechs Sekunden lang. Jetzt möchte ich diese mit ffmpeg aneinanderreihen (vorzugsweise ohne Neucodierung), aber nur die Teile von Sekunde 2 bis 4 jedes Clips verwenden. Ich mache das mit dem Concat-Demuxer, aber sobald ich Inpoint und Dauer angebe, werden meine Ergebnisse ziemlich zufällig. Es wirft keine Fehler und produziert neue Clips, aber Längen und Inpoints sind völlig daneben.
Da meine Clips h265 und ziemlich kurz sind, war mein erster Verdacht, dass es einfach keine Keyframes gibt, die bearbeitet werden können, also habe ich dasselbe mit Quicktime-Prores-Clips (intraframe-codiert) versucht – was mir jedoch ähnlich seltsame Ergebnisse lieferte. Ich frage mich also, ob das Problem woanders liegen könnte?

Dies ist mein Code (Aufruf von Python):

subprocess.call(['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'concatlist.txt', '-c', 'copy', '-hide_banner', '-loglevel', 'error', output])

Dies ist ein Beispiel meiner (automatisch generierten) Textdatei:

file videos_squares/vt_5Hn8lze0G8A.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_J8DuC93hLq0.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_u8twUOpagZs_seg3.mp4
inpoint 2.0
duration 2.0

Antwort1

Um die Dauer mit dem Concat-Demuxer zu begrenzen, legen Sie fest outpoint(mit dem Wert inpoint + beabsichtigte Dauer).

Das durationSchlüsselwort hat einen schlechten Namen und legt im Grunde den Offset für den Startzeitstempel des nächsten Clips in Bezug auf den Startzeitstempel des aktuellen Clips fest. Es begrenzt jedoch nicht die Ausgabe des aktuellen Clips.

verwandte Informationen