Moviepy ERROR - AttributeError: 'int' Objekt hat kein Attribut "Dauer"Python

Python-Programme
Anonymous
 Moviepy ERROR - AttributeError: 'int' Objekt hat kein Attribut "Dauer"

Post by Anonymous »

Ich versuche, ein Array in ein Array zu übergeben und das Array zu verbreiten, während ich es mache. Ich hoffe das macht Sinn. Die Methode concatenate_videoclips in moviepy erwartet ein Array, kein Array mit Arrays.

Code: Select all

list_of_images = [
text_clip,
*image_data,
]
final_video = concatenate_videoclips(list_of_images, method='compose')
< /code>
Im Folgenden finden Sie den gesamten Code -Snippet < /p>
from moviepy.editor import *
from moviepy.config import change_settings
from pathlib import Path
import os
import traceback
change_settings({"IMAGEMAGICK_BINARY": r"C:\\Program Files\\ImageMagick-7.1.2-Q16-HDRI\\magick.exe"})

def is_image_by_extension(filepath):
"""
Checks if a file is likely an image based on its extension.
"""
valid_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'}
_, ext = os.path.splitext(filepath)
return ext.lower() in valid_extensions

image_data = {}
name_prefix = "user_"
directory_path = Path(r"C:/Users/User/Development/moviepy/images")
count = 0
for file_path in directory_path.iterdir():
if file_path.is_file():  # Check if it's a file
if os.path.isfile(file_path) and is_image_by_extension(file_path):
image_data[count] = ImageClip(str(file_path)).set_duration(2)
image_data[count] = image_data[count].fx(vfx.fadeout, 1)
image_data[count] = image_data[count].fx(vfx.fadein,1)
count += 1
else:
print(f"'{file_path}' is not an image file (or doesn't exist).")

# image_0 = ImageClip(r'C:\Users\User\Development\moviepy\images\mark.jpg').set_duration(2)
# image_1 = ImageClip(r'C:\Users\User\Development\moviepy\images\MarkAnime.jpg').set_duration(2)

# image_0_faded_out = image_0.fx(vfx.fadeout, 1)
# image_1_faded_in = image_1.fx(vfx.fadein, 1)

audio = AudioFileClip(r'C:\Users\User\Development\moviepy\audio\KYJellyBabies-AccessDenied.mp3')
text_clip = TextClip("In Loving memory of \nJoe Blocks",
fontsize=70,
color='white',
font='Arial',
bg_color='transparent') # Optional background color

# setting position of text in the center and duration will be 10 seconds
text_clip = text_clip.set_pos('center').set_duration(5)
#list_of_images = [
#    text_clip,
#    image_0_faded_out,
#    image_1_faded_in,
#]

list_of_images = [
text_clip,
*image_data,
]

try:
final_video = concatenate_videoclips(list_of_images, method='compose')
final_video.audio = audio.subclip(0, final_video.duration)

final_video.write_videofile('final_video.mp4', fps=30)
except Exception as e:
traceback.print_exc()
< /code>
Hier ist die Ausgabe: < /p>
Traceback (most recent call last):
File "C:\Users\User\Development\moviepy\main.py", line 62, in 
final_video = concatenate_videoclips(list_of_images, method='compose')
File "C:\Users\User\AppData\Roaming\Python\Python313\site-packages\moviepy\video\compositing\concatenate.py", line 71, in concatenate_videoclips
tt = np.cumsum([0] + [c.duration for c in clips])
^^^^^^^^^^
AttributeError: 'int' object has no attribute 'duration'
PS C:\Users\User\Development\moviepy> python .\main.py
Traceback (most recent call last):
File "C:\Users\User\Development\moviepy\main.py", line 62, in 
final_video = concatenate_videoclips(list_of_images, method='compose')
File "C:\Users\User\AppData\Roaming\Python\Python313\site-packages\moviepy\video\compositing\concatenate.py", line 71, in concatenate_videoclips
tt = np.cumsum([0] + [c.duration for c in clips])
^^^^^^^^^^
AttributeError: 'int' object has no attribute 'duration'

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post