首页 > 解决方案 > 如何在moviepy中循环播放mp4文件?

问题描述

我当前的代码正在获取一个 mp4 视频文件,它向其中添加了一个 mp3 音乐文件,将 mp4 文件的持续时间设置为 mp3 文件的长度,将剪辑调整为 1920x1080 像素,最后保存并输出完成视频。

结果:完成的视频播放 mp4 文件一次,然后冻结,直到 mp3 文件结束。

我想要的结果:如何让 mp4 文件循环到 mp3 文件结束,这样它就不会在一次播放后冻结。


from moviepy.editor import *
import moviepy.editor as mp
import moviepy.video.fx.all as vfx


audio = AudioFileClip("PATH/TO/MP3_FILE")

clip = VideoFileClip("PATH/TO/MP4_FILE").set_duration(audio.duration)


# Set the audio of the clip
clip = clip.set_audio(audio)

#Resizing
clip_resized = clip.resize((1920, 1080)) 


#Code that doesn't work for looping
newClip = vfx.loop(clip_resized)


# Export the clip
clip_resized.write_videofile("movie_resized.mp4", fps=24)

代码本身有效,但 mp4 直到最后才会循环。提前致谢。

标签: pythonpython-3.xvideomoviepy

解决方案


比那个晚了 3 年,但它仍然是谷歌上的最高结果。

如果你想在音频的持续时间内循环它,moviepy 有一个简单的循环函数,你可以从要循环的剪辑中调用它,它需要循环的数量或循环的持续时间。

所以在你的情况下

loopedClip = clip_resized.loop(duration = audio.duration)

或者,如果您不想创建单独的剪辑,那么

clip_resized = clip_resized.loop(duration = audio.duration)

推荐阅读