Por fin luego de mucho luchar hemos dado con la contestación de esta duda que algunos lectores de nuestra web han presentado. Si deseas aportar algo más no dejes de dejar tu información.
Solución:
Encontré otra forma de hacerlo:
from moviepy.editor import *
img = ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png',
'7.png', '8.png', '9.png', '10.png', '11.png', '12.png']
clips = [ImageClip(m).set_duration(2)
for m in img]
concat_clip = concatenate_videoclips(clips, method="compose")
concat_clip.write_videofile("test.mp4", fps=24)
Y de la carpeta actual:
import os
import glob
from natsort import natsorted
from moviepy.editor import *
base_dir = os.path.realpath("./images")
print(base_dir)
gif_name = 'pic'
fps = 24
file_list = glob.glob('*.png') # Get all the pngs in the current directory
file_list_sorted = natsorted(file_list,reverse=False) # Sort the images
clips = [ImageClip(m).set_duration(2)
for m in file_list_sorted]
concat_clip = concatenate_videoclips(clips, method="compose")
concat_clip.write_videofile("test.mp4", fps=fps)
Así es como lo hice usando tu código inicial. El error que estabas viendo era por no especificar set_duration
para los clips. También ordené los archivos en el directorio para que el mp4 resultante sea secuencial (no era el caso por defecto).
import os
from moviepy.editor import *
base_dir = os.path.realpath(".")
print(base_dir)
directory=sorted(os.listdir('.'))
print(directory)
for filename in directory:
if filename.endswith(".png"):
clips.append(ImageClip(filename).set_duration(1))
print(clips)
video = concatenate(clips, method="compose")
video.write_videofile('test1.mp4', fps=24)
Reseñas y calificaciones del tutorial
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)