#python #moviepy
Вопрос:
Я пытаюсь написать код, который объединяет все сегменты видео в одно видео; однако между каждым сегментом видео есть переходное видео, когда я делаю видео, видео повреждено. Только первый сегмент видео отображается правильно, все остальные сегменты видео отображают кучу мигающих и стробирующих линий, как эффект сбоя, наблюдаемый в телевизорах 90-х годов.
У меня есть два каталога файлов, которые содержат кучу сегментов видео и переходных видео соответственно.
У меня уже довольно давно возникла эта проблема. Я много чего перепробовал, но не смог придумать, как это решить. Я не понимаю, почему это не работает. Я думаю, это, вероятно, потому, что сегменты видео имеют разное соотношение сторон, разрешение и частоту кадров. (Хотя все они являются видеофайлами .mp4)
В качестве примечания, прежде чем у меня возникла эта проблема, я написал сценарий moviepy, чтобы создать кучу сегментов видео, которые состояли из ничего, кроме неподвижного изображения с некоторым звуком.
У кого-нибудь есть какие-нибудь идеи или кто может предложить помощь?
Вот мой код для создания отдельных сегментов видео:
import moviepy
from moviepy.editor import *
import os
myDir = (r'C:UsersCharlieDocumentspythonAutomted-videodownloadedImages' "\")
myAudDir = (r'C:UsersCharlieDocumentspythonAutomted-videoaudios' '\')
def make(videoID):
audioID = videoID
audioID = audioID.replace(".jpg", ".mp3")
audioID = audioID.replace(".png", ".mp3")
videoNameID = videoID
videoNameID = videoNameID.replace(".jpg", ".mp4")
videoNameID = videoNameID.replace("png", ".mp4")
image = ImageClip(myDir videoID, duration=7)
audioclip = AudioFileClip(myAudDir audioID)
new_audioclip = CompositeAudioClip([audioclip])
image.audio = new_audioclip
image.write_videofile(r'C:UsersCharlieDocumentspythonAutomted-videovideos' "\" videoNameID, fps=30)
for myItem in os.listdir(myDir):
make(myItem)
А вот мой код для объединения сегментов видео и создания финального видео.
import moviepy
from moviepy.editor import *
import os
import random
vidName = "video"
myDir = (r'C:UsersCharlieDocumentspythonAutomted-videovideos_segments' "\")
myDir2 = (r'C:UsersCharlieDocumentspythonAutomted-videotransitions' '\')
myDir3 = (r'C:UsersCharlieDocumentspythonAutomted-videofinished_videos' '\')
myTransitions = []
for myItem in os.listdir(myDir2):
myTransitions.append(myDir2 myItem)
myVideos = []
for myVideo in os.listdir(myDir):
qwe = VideoFileClip(myDir myVideo)
qwer = VideoFileClip(random.choice(myTransitions))
myVideos.append(qwe)
myVideos.append(qwer)
final_product = concatenate_videoclips(myVideos)
final_product.write_videofile(myDir3 vidName ".mp4")
Также: Я знаю, что я не лучший программист на python, и это, вероятно, кажется глупым вопросом, потому что я не самый умный человек на Земле.
Этот код предназначен для моего личного использования, поэтому он, вероятно, не соответствует стандартным общепринятым методам python.
Комментарии:
1. возможно, проблема создает только видео — поэтому мы не можем протестировать ее без примеров видеофайлов.