
Ich habe ein Video von einem Fußballspiel. Ich möchte die Zeit before the game
und during half time
schließlich das Ende des Spiels herausschneiden.
Gesamtlänge des Clips 1h 51m
oder111m
Idealerweise sind die Schnitte und die Zeit wie folgt:
+------------+-------------+---------------------+
| Start Time | Finish Time | Clip Duration |
+------------+-------------+---------------------+
| 1:30 | 47:30 | 47:30 |
| 53:00 | 100:00 | 47 |
+------------+-------------+---------------------+
Mein Video endet jedoch bei
ffmpeg -ss 00:01:30 -i Tripod_Camera.mp4 -t 00:47:30 -ss 00:53:00 -t 00:47:00 -c copy VideoClip.mp4
Antwort1
Make
input.txt
enthält die Zeitstempel (in Sekunden) zum Schneiden:file 'input.mp4' inpoint 90 outpoint 2850 file 'input.mp4' inpoint 3180 outpoint 6000
Ausführen
ffmpeg
zum Verketten mit demConcat-Demuxer:ffmpeg -f concat -i input.txt -c copy output.mp4
Dieser WilleStreamkopie, sodass keine Neukodierung erfolgt, was bedeutet, dass der gesamte Vorgang schnell abläuft und die Qualität erhalten bleibt. Allerdings werden Schnitte an den Keyframes vorgenommen, sodass die Genauigkeit möglicherweise nicht ausreicht. Wenn eine höhere Genauigkeit erforderlich ist, müssen Sie eine viel langsamere Methode verwenden, z. B. die Filter (a)trim, (a)setpts und concat, die eine Neukodierung erfordern.
Wenn Sie eine A/V-Desynchronisierung bekommen, dannZeitstempel von Keyframes abrufen, verwenden Sie Keyframe-Zeitstempel als Ihre
inpoint
, aber fügen Sie jedeminpoint
Zeitstempel in 0,001 hinzuinput.txt
.
Antwort2
VerwendenVideoschnittdas ich für diesen Zweck geschrieben habe. Es ist dank eigenem Muxer präziser als ffmpeg und stellt dir eine grafische Oberfläche zur Verfügung.
Da es auf ffmpeg (oder seinen Bibliotheken) basiert, ist das Schneiden verlustfrei.