Я пытаюсь объединить 3 видео за раз из list.txt, я могу объединить все видео в списке в одно длинное видео, но я хочу объединить x видео из списка в одном выводе, затемобъединить следующие x видео из того же списка в другой вывод и т. д.
Сценарий, который я разрабатываю, написан на python, извлекает некоторые видео с сервера и сохраняет их локально в папке и пишетмой concat.txt, затем ffmpeg прочитал concat.txt и создала один выходной файл. их в output1.mp4, затем прочитайте следующую строку x из cancat.txt, объедините их в output2.mp4 и т. д.
Спасибо за ваше время, чтобы помочь мне, я действительно ценю это!
--- РЕДАКТИРОВАТЬ Спасибо @Tejas за ответ, я решил, как разделить файл concat.txt, теперь я пытаюсь применить фильтр к каждому клипу
import os
x = 3 #Number of files you want to concatenate
#Making directories so that the working directory stays organized
txtFileName = "./splits/output{}.txt"
outputFile = "./clip/output{}.mp4"
postFile = "./media/post{}.mp4"
os.makedirs(os.path.dirname(txtFileName), exist_ok=True)
os.makedirs(os.path.dirname(outputFile), exist_ok=True)
os.makedirs(os.path.dirname(postFile), exist_ok=True)
#While splitting the files store their path to a list
listofSplitFiles = []
with open('./downloaded/concat.txt','r') as concat:
lines = concat.readlines()
for i in range(0,lines.__len__()//x):
with open(txtFileName.format(i+1),'w') as split:
listofSplitFiles.append(txtFileName.format(i+1))
for j in range(0,x):
if( (i*x)+j < lines.__len__() ):
split.write(lines[(i*x)+j])
#Call ffmpeg on the list
for i in listofSplitFiles:
outputBaseName = os.path.basename(i)
outputFileName = os.path.splitext(outputBaseName)[0]
postFileName = os.path.splitext(outputBaseName)[0]
os.system("ffmpeg -f concat -i {} -safe 1 -r 30 -fflags +genpts -c:a copy ./clip/{}.mp4".format(i,outputFileName))
os.system('''ffmpeg -loglevel error -r 30 -i sfondo/bkg.png -i ./clip/output{}.mp4 -b:v 1M -filter_complex ''' + '''"[1:v]scale=''' + "750" + ''':''' + "1080" + ''' [ovrl], [0:v][ovrl]overlay=(main_w-overlay_w)/2:((main_h-overlay_h)/2)"''' + ''' ./media/{}.mp4''' .format(outputFileName,postFileName))
К сожалению, у меня естьэта ошибка ./clip/{}.mp4: No such file or directory