Модуль Python Moviepy — Когда я объединяю несколько видео (с разным соотношением сторон и частотой кадров) в одно видео, видео повреждается

#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. возможно, проблема создает только видео — поэтому мы не можем протестировать ее без примеров видеофайлов.