当我执行以下代码时:
import requests
import moviepy.editor as mp
url = "https://i.imgur.com/VaTidQA.gif"
with open('temp.gif', 'wb') as f:
f.write(requests.get(url).content)
clip = mp.VideoFileClip("temp.gif")
print(clip.duration)
clip.write_videofile("temp.mp4")
我在MP4文件中遇到丢失帧的情况。MP4总是从一开始就开始,但在某一点上似乎会任意切断。
下面是一个例子:
GIF:
https://i.imgur.com/VaTidQA.gif
MP4:
https://giphy.com/gifs/pesky-wabbit-5UqQOjkYLuWrvHzvsA
GIF确实是完整下载的。
经过测试,我发现如果我将最后一行更改为:
clip.set_duration(clip.duration + X).write_videofile("temp.mp4")
然后,它确实会扩展MP4并减少截止,但这需要是一个变量脚本,因为它将用于许多,许多gif。几乎可以肯定的是,电影的持续时间是错误的。我有什么可以补救的建议吗?
更新:我已经确定moviepy从gif获取的持续时间不正确。当该持续时间传递到
write_videofile()
调用,它只写较短的间隔。我正在研究它是如何确定GIF持续时间的。