簡體   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