Hier ist, was ich benutze und nur ein paar Sekunden dauern wird, um zu laufen:
ffmpeg -i input.mp4 -ss 01:19:27 -to 02:18:51 -c:v copy -c:a copy output.mp4
Referenz: Videodateien mit FFmpeg zuschneiden von Alexander Refsum Jensenius.
Generierte mp4
Dateien könnten auch in iMovie
verwendet werden. Weitere Informationen zur Ermittlung der Gesamtdauer mit dem get_duration(input_video) Modell.
Wenn Sie mehrere geschnittene Szenen zusammenfügen möchten, können Sie folgendes Python-Skript verwenden:
#!/usr/bin/env python3
import subprocess
def get_duration(input_video):
cmd = ["ffprobe", "-i", input_video, "-show_entries", "format=duration",
"-v", "quiet", "-sexagesimal", "-of", "csv=p=0"]
return subprocess.check_output(cmd).decode("utf-8").strip()
def main():
name = "input.mkv"
times = []
times.append(["00:00:00", "00:00:10"])
times.append(["00:06:00", "00:07:00"])
# times = [["00:00:00", get_duration(name)]]
if len(times) == 1:
time = times[0]
cmd = ["ffmpeg", "-i", name, "-ss", time[0], "-to", time[1], "-c:v", "copy", "-c:a", "copy", "output.mp4"]
subprocess.check_output(cmd)
else:
open('concatenate.txt', 'w').close()
for idx, time in enumerate(times):
output_filename = f"output{idx}.mp4"
cmd = ["ffmpeg", "-i", name, "-ss", time[0], "-to", time[1], "-c:v", "copy", "-c:a", "copy", output_filename]
subprocess.check_output(cmd)
with open("concatenate.txt", "a") as myfile:
myfile.write(f"file {output_filename}\n")
cmd = ["ffmpeg", "-f", "concat", "-i", "concatenate.txt", "-c", "copy", "output.mp4"]
output = subprocess.check_output(cmd).decode("utf-8").strip()
print(output)
if __name__ == "__main__":
main()
Das Beispielskript schneidet und fusioniert Szenen zwischen 00:00:00 - 00:00:10
und 00:06:00 - 00:07:00
.
Wenn Sie das komplette Video schneiden möchten (falls Sie das Format mkv
in mp4
konvertieren möchten), kommentieren Sie einfach die folgende Zeile aus:
# times = [["00:00:00", get_duration(name)]]