将Python列表传递给Moviepy模块中的concatenate_videoclips函数

时间:2017-02-01 22:13:34

标签: python video moviepy

目的:

  1. 在目录中构建视频文件的python列表
  2. 打开视频片段(理解moviepy的要求)
  3. 调用combine_clips函数并传递'剪辑' list(此处出错。)
  4. 将组合剪辑写入单个视频文件
  5. 错误:

    A

    脚本:

    "concatenate.py", line 71, in concatenate_videoclips
    tt = np.cumsum([0] + [c.duration for c in clips])
    AttributeError: 'str' object has no attribute 'duration'"
    

    问题:为什么" concatenate_videoclips()"接受硬编码列表但是当我将列表传递给它时失败。

1 个答案:

答案 0 :(得分:0)

您创建VideoFileClip(clip)但不添加到列表中,因此您将包含文件名的列表发送到concatenate_videoclips

中需要new_list
def open_clips(clips):

    new_list = []

    for clip in clips:
        new_list.append(VideoFileClip(clip))

    combine_clips(new_list)

编辑:更短:

import os
from moviepy.editor import *

clips = []

for filename in os.listdir('.'):
    if filename.endswith(".mov"):
        clips.append(VideoFileClip(filename))

video = concatenate_videoclips(clips, method='compose')
video.write_videofile('ct_01.mp4')