我目前尝试用图片制作电影,但我找不到任何有用的东西。
到目前为止,这是我的代码:
import time
from PIL import ImageGrab
x =0
while True:
try:
x+= 1
ImageGrab().grab().save('img{}.png'.format(str(x))
except:
movie = #Idontknow
for _ in range(x):
movie.save("img{}.png".format(str(_)))
movie.save()
答案 0 :(得分:36)
您可以考虑使用像ffmpeg这样的外部工具将图像合并到电影中(请参阅答案here),或者您可以尝试使用OpenCv将图像合并到电影中,如示例here
我附加在剪切的代码下面我曾经用来组合来自名为" images"的文件夹中的所有png文件。进入视频。
import cv2
import os
image_folder = 'images'
video_name = 'video.avi'
images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
video = cv2.VideoWriter(video_name, 0, 1, (width,height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
答案 1 :(得分:24)
谢谢,但我找到了一个使用ffmpeg的替代解决方案:
def save():
os.system("ffmpeg -r 1 -i img%01d.png -vcodec mpeg4 -y movie.mp4")
但是谢谢你的帮助:)
答案 2 :(得分:8)
这是使用moviepy的最小示例。对我来说,这是最简单的解决方案。
import os
import moviepy.video.io.ImageSequenceClip
image_folder='folder_with_images'
fps=1
image_files = [image_folder+'/'+img for img in os.listdir(image_folder) if img.endswith(".png")]
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps=fps)
clip.write_videofile('my_video.mp4')
答案 3 :(得分:3)
我使用ffmpeg-python
绑定。您可以找到更多信息here。
import ffmpeg
(
ffmpeg
.input('/path/to/jpegs/*.jpg', pattern_type='glob', framerate=25)
.output('movie.mp4')
.run()
)