ムービーメーカーを使って複数の写真をフェードイン・フェードアウトでスライドショー動画を作るのと同じように、pythonの「MoviePy」を使って写真からスライドショー動画を作る方法。
プログラム
import os
from moviepy.editor import *
time = 6
fade = 2
clip1 = VideoFileClip("1.jpg").set_duration(time)
clip2 = VideoFileClip("2.jpg").set_duration(time)
clip3 = VideoFileClip("3.jpg").set_duration(time)
clip4 = VideoFileClip("4.jpg").set_duration(time)
final_clip = CompositeVideoClip([
clip1,
clip2.set_start(time*1 - fade*1).crossfadein(fade),
clip3.set_start(time*2 - fade*2).crossfadein(fade),
clip4.set_start(time*3 - fade*3).crossfadein(fade)
])
final_clip.write_videofile("final.mp4")
timeは1枚の写真を何秒表示させるか。
fadeは写真をクロスフェードで入れ替える秒数。
応用:写真が10枚ある場合
import os
from moviepy.editor import *
time = 6
fade = 2
clip1 = VideoFileClip("1.jpg").set_duration(time)
clip2 = VideoFileClip("2.jpg").set_duration(time)
clip3 = VideoFileClip("3.jpg").set_duration(time)
clip4 = VideoFileClip("4.jpg").set_duration(time)
clip5 = VideoFileClip("5.jpg").set_duration(time)
clip6 = VideoFileClip("6.jpg").set_duration(time)
clip7 = VideoFileClip("7.jpg").set_duration(time)
clip8 = VideoFileClip("8.jpg").set_duration(time)
clip9 = VideoFileClip("9.jpg").set_duration(time)
clip10 = VideoFileClip("10.jpg").set_duration(time)
final_clip = CompositeVideoClip([
clip1,
clip2.set_start(time*1 - fade*1).crossfadein(fade),
clip3.set_start(time*2 - fade*2).crossfadein(fade),
clip4.set_start(time*3 - fade*3).crossfadein(fade),
clip5.set_start(time*4 - fade*4).crossfadein(fade),
clip6.set_start(time*5 - fade*5).crossfadein(fade),
clip7.set_start(time*6 - fade*6).crossfadein(fade),
clip8.set_start(time*7 - fade*7).crossfadein(fade),
clip9.set_start(time*8 - fade*8).crossfadein(fade),
clip10.set_start(time*9 - fade*9).crossfadein(fade)
])
final_clip.write_videofile("final.mp4")
数字の連番はvscodeで簡単に作ることができる。
写真のファイル名を数字の連番に変更する方法はこちら
デジカメやスマホ写真の容量はそのまま使うと大きいので一括で縮小する方法
コメント