2017-02-01 9 views
0

目的:パスPythonのリスト

  1. がディレクトリ
  2. オープンビデオクリップ(moviepyの了解要件)
  3. コールcombine_clips機能でビデオファイルのPythonのリストを作成'クリップリスト'を渡す(ここでエラーが発生する)
  4. 1つのビデオファイルに結合クリップを書き込む

エラー:

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

スクリプト:

import os 
from moviepy.editor import * 

def clips_list(): 
    clips = [] 
    for file in os.listdir('.'): 
     if file.endswith(".mov"): 
      clips.append(file) 
    open_clips(clips) 

def open_clips(clips): 
    for clip in clips: 
     VideoFileClip(clip) 
    combine_clips(clips) 

def combine_clips(clips): 
    video = concatenate_videoclips(clips, method='compose') 

def output_video(video): 
    video.write_videofile('ct_01.mp4') 

clips_list() 

質問:なぜ "concatenate_videoclipsは()" ハードコードさリストを受け入れるが、私はそれをリストを渡すと失敗ありません。

+0

常に** FULL **エラーメッセージセージ - 多くの有用な情報があります。 – furas

+0

'print()'を使って、あなたがリスト上にあるものを見てください。私にとっては 'VideoFileClip'ではなくファイル名です。 – furas

+0

'VideoFileClip(clip)'を作成しますが、これをリストに追加しません。 – furas

答えて

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) 

でEDIT必要があります。
短い:

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') 
+0

ありがとう@furas!これは以来、動作します。私は次回全体のエラーメッセージを投稿します。再度、感謝します! – Digfield