-
-
Save michaelosthege/cd3e0c3c556b70a79deba6855deb2cc8 to your computer and use it in GitHub Desktop.
import imageio | |
import os, sys | |
class TargetFormat(object): | |
GIF = ".gif" | |
MP4 = ".mp4" | |
AVI = ".avi" | |
def convertFile(inputpath, targetFormat): | |
"""Reference: http://imageio.readthedocs.io/en/latest/examples.html#convert-a-movie""" | |
outputpath = os.path.splitext(inputpath)[0] + targetFormat | |
print("converting\r\n\t{0}\r\nto\r\n\t{1}".format(inputpath, outputpath)) | |
reader = imageio.get_reader(inputpath) | |
fps = reader.get_meta_data()['fps'] | |
writer = imageio.get_writer(outputpath, fps=fps) | |
for i,im in enumerate(reader): | |
sys.stdout.write("\rframe {0}".format(i)) | |
sys.stdout.flush() | |
writer.append_data(im) | |
print("\r\nFinalizing...") | |
writer.close() | |
print("Done.") | |
convertFile("C:\\Users\\Yoda\\Desktop\\EwokPr0n.mp4", TargetFormat.GIF) |
How to Convert Video to GIF Using Python
Visit:- https://www.techroadmap.in/blog/how-to-convert-video-to-gif-using-python/
Under the hood all the GIF-writing methods use PIL
.
The link above does it too, but falls short on the quality of the output. Here's some troubleshooting insight I earned painfully a few days ago:
Problem 1: Transparency of frames
Symptom: Output GIF has bad quality on texts. Looks like really bad antialiasing.
Reason: The alpha channel of frames is just cut away by pillow, but unless there wasn't any transparency this is not the correct way to remove transparency.
Solution: Make sure to create frames (e.g. matplotlib figures) with white background so cutting away the alpha channel doesn't break the colors.
Problem 2: Grizzly output GIFs
Symptom: Output GIF has artifacts, even though the frames didn't. (Like in the example from the link above.)
Reason: ???
Solution: Try to call .quantize()
on the PIL.Image
frames.
How to Convert Video to GIF Using Python
Visit:- https://www.techroadmap.in/blog/how-to-convert-video-to-gif-using-python/