Проверка длины видео в Moviepy без его рендеринга - PullRequest
1 голос
/ 10 июля 2020

Я хочу создать сценарий python, который будет показывать изображения в течение X секунд (время до звука), а затем go для следующего изображения. Я хочу, чтобы видео было X длины. Длина видео всегда будет разной из-за звука. Что-нибудь, что я могу проверить длину необработанного видео? Мой код:

from moviepy.editor import *

img = ['1.jpg']

clips = [ImageClip(m).set_duration(2)
      for m in img]


clip = VideoFileClip("test.mp4")
print( clip.duration )
if clip.duration > 601:
    print("clip is longer than 10 min")
else:
    print("clip is shorter than 10 min")

vid_clips = concatenate_videoclips(clips, method="compose")
vid_clips.write_videofile("test.mp4", fps=60)

1 Ответ

0 голосов
/ 10 июля 2020

Вызов команды ffprobe будет быстрее, чем использование moviepy:

import subprocess

def get_length(filename):
    result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
                             "format=duration", "-of",
                             "default=noprint_wrappers=1:nokey=1", filename],
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT)
    return float(result.stdout)

duration = get_length("test.mp4")
print(duration) # 30.024000
...