繁体   English   中英

100%的gif无法与moviepy转换为mp4

[英]100% of gif does not convert to mp4 with moviepy

当我执行以下代码时:

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获得错误的持续时间。 关于如何解决此问题的任何建议?

更新:我已确定moviepy从gif获取不正确的持续时间。 当该持续时间传递给write_videofile()调用时,它只会写入该较短的时间间隔。 我正在研究它如何确定gif持续时间。

我将.gif转换更改为

os.system('echo "y"| ffmpeg -i temp.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" temp.mp4')

然后使用以下方式将持续时间缩短到最多15秒

       if (dur > 15):
            print("changing duration")
            clip.set_duration(15).write_videofile("buffertemp.mp4")
            clip = mp.VideoFileClip("buffertemp.mp4")
            clip.write_videofile("temp.mp4")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM