Я скачал следующий скрипт — это не моя работа; он поставлялся с другим скриптом Python, который просматривает папку с видео игрового процесса Rocket League, выискивая моменты, когда был забит гол (с помощью tesseract-OCR), а затем записывает имя файла и кадр клипа в файл csv под названием «detect.csv» «.
Эта часть сработала, теперь я все понял! Это вторая часть, этот скрипт должен читать список файлов и номеров кадров «detect.csv», затем обрезать и создавать новые видеоклипы и выводить их в папку. Код выглядит так:
import ntpath
import os
detectedGoalList = []
f = open("detected.csv", "r")
for x in f:
tup = x.replace(""[", "").replace("]"", "").split(", ")
print(x)
detectedGoalList.append([tup[0], tup[1]])
for dg in detectedGoalList:
print(dg[0])
input_file = ""{}"".format(dg[0].replace("'", ""))
output_path = "../clips/" + ntpath.basename(dg[0]).replace("'", "").replace(
".mp4", "").replace("Rocket League®_", "").replace("Rocket League™_", "").replace("Rocket
League_", "") + ".clipped.mp4"
start = (int(dg[1]) - int(30 * 10)) / 30
if start < 0:
start = 0
end = (int(dg[1]) / 30) - 3
duration = end - start
os.system("ffmpeg -ss {} -i {} -t {} -c copy {}".format(start, input_file,
duration, output_path))
Скрипт запускается мгновенно и не возвращает ошибок. Он ничего не записывает в терминал. Новые клипы не выводятся. У меня есть 5 файлов mp4 в каталоге «клипов», которые точно совпадают с файлом csv. Файл Detected.csv содержит следующее:
"['K:/Gameplay Videos/Rocket League/goals/clips\goal(2).mp4', 1750]"
"['K:/Gameplay Videos/Rocket League/goals/clips\goal(28).mp4', 1200]"
"['K:/Gameplay Videos/Rocket League/goals/clips\goal(3).mp4', 3350]"
"['K:/Gameplay Videos/Rocket League/goals/clips\goal(4).mp4', 3050]"
"['K:/Gameplay Videos/Rocket League/goals/clips\goal(5).mp4', 3500]"
Так что я почти уверен, что виновата последняя строка ffmpeg. Я понимаю базовый синтаксис командной строки ffmpeg, но когда он является частью кода Python и переменных, я просто не могу этого понять. Я часто вижу упоминание числа «30» — может быть, у парня, который это написал, в качестве источника были видео со скоростью 30 кадров в секунду (в конце концов, это были повторы Playstation), у меня есть видео со скоростью 60 кадров в секунду. Я безуспешно пытался изменить эти числа на 60.