Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie Python zum Konvertieren zwischen MP4- und GIF-Formaten

So verwenden Sie Python zum Konvertieren zwischen MP4- und GIF-Formaten

王林
王林nach vorne
2023-04-27 10:31:141882Durchsuche

Das Prinzip der Konvertierung von MP4 in GIF ist eigentlich sehr einfach, nämlich die Frames der MP4-Datei zu lesen und sie dann zu einem GIF zusammenzuführen. Dies lässt sich ganz einfach mit den beiden Bibliotheken cv2 und PIL bewerkstelligen.

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")

Nach Abschluss der Ausführung wird festgestellt, dass die Größe der GIF-Datei stark zugenommen hat:

So verwenden Sie Python zum Konvertieren zwischen MP4- und GIF-Formaten

Sie können versuchen, die Größe des GIF zu optimieren, indem Sie die Anzahl der Frames reduzieren Wenn wir nur 30 Bilder aufnehmen, wird die Größe um die Hälfte reduziert von 3,9 Mio. bis 2 Mio.

Nachdem ich diesen Code geschrieben habe, habe ich herausgefunden, dass es eine weitere großartige Bibliothek gibt, moviepy, die mit nur 2 Zeilen Code erstellt werden kann.

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)

moviepy hat die Implementierungsdetails auf sehr einfache Weise gekapselt und stellt dann viele davon bereit Parameter, die Entwickler selbst konfigurieren können. Aber die mit moviepy konvertierte Datei ist 9 MB groß. Ich glaube, dass Parameter zur Optimierung und Anpassung verwendet werden können.

So verwenden Sie Python zum Konvertieren zwischen MP4- und GIF-FormatenSie müssen zugeben, dass das Python-Ökosystem voller Bibliotheken ist. Es gibt nichts, was Sie nicht tun können, nur Dinge, die Sie nicht finden können.

Natürlich können Sie GIFs auch wieder in das MP4-Format konvertieren. Wenn Sie beispielsweise einige lustige GIFs sehen, konvertieren Sie sie in mp4 und stellen Sie sie auf die Kurzvideoplattform, vielleicht werden sie populär.

def mp4_to_gif2():
clip = VideoFileClip("demo.mp4")
clip.write_gif("output2.gif")

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python zum Konvertieren zwischen MP4- und GIF-Formaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen