, когда я выполняю следующий код:
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 и обрезать меньше, но это должен быть переменный скрипт, так как он будет использоваться для многих, многих картинок.Это почти наверняка связано с тем, что moviepy получает неправильную продолжительность от GIF.Любые предложения о том, как я могу исправить это?
обновление: я определил, что moviepy получает неправильную продолжительность из GIF.когда эта длительность передается на вызов write_videofile()
, он записывает только этот более короткий интервал.Я смотрю, как он определяет продолжительность GIF.