The last time I wrote an article on the official account, I encountered a problem. It was too cumbersome to insert video files into the official account. A very small video had to be reviewed when uploaded as a video to the platform, and it was not as straightforward as a GIF when played.
So I wanted to find a tool to convert mp4 to gif. After searching online, there are many online tools, but there are various methods. Some of them require advertisements, while others require you to scan a QR code first. Foreign websites are better, they don’t have so many tricks.
I think Python can definitely handle this kind of problem. After all, the omnipotent Python can do everything except not having children. In this way, I will make it into an online tool later, which is convenient for myself and can be used by others.
The principle of converting mp4 to gif is actually very simple, that is, reading the frames of the mp4 file and then merging them into a gif. You can easily get it done using the two libraries cv2 and PIL.
import glob import cv2 from PIL import Image def convert_mp4_to_jpgs(input_file): # 先将mp4文件的所有帧读取出保存为图片 video_capture = cv2.VideoCapture(input_file) still_reading, image = video_capture.read() frame_count = 0 while still_reading: cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image) # read next image still_reading, image = video_capture.read() frame_count += 1 def convert_images_to_gif(output_file): # 读取目录下图片,用Pillow模块的Image和所有图片合并 # 成一张gif images = glob.glob(f"output/*.jpg") images.sort() frames = [Image.open(image) for image in images] frame_one = frames[0] frame_one.save(output_file, format="GIF", append_images=frames[1:], save_all=True, duration=40, loop=0) def convert_mp4_to_gif(input_file, output_file): convert_mp4_to_jpgs(input_file) convert_images_to_gif(output_file) if __name__ == "__main__": convert_mp4_to_gif("demo.mp4", "output.gif")
frame_one.save(output_file, format="GIF", append_images=[f for i, f in enumerate(frames[1:]) if i % 2 == 0], save_all=True, duration=40, loop=0)
def mp4_to_gif2(): clip = VideoFileClip("demo.mp4") clip.write_gif("output2.gif")
def convert_gif_to_mp4(): import moviepy.editor as mp clip = mp.VideoFileClip("demo.gif") clip.write_videofile("output.mp4")
The above is the detailed content of Using Python to convert MP4 and GIF formats is incredibly easy!. For more information, please follow other related articles on the PHP Chinese website!