Heim  >  Artikel  >  Backend-Entwicklung  >  Die Konvertierung von MP4- und GIF-Formaten mit Python ist unglaublich einfach!

Die Konvertierung von MP4- und GIF-Formaten mit Python ist unglaublich einfach!

王林
王林nach vorne
2023-04-12 19:58:141916Durchsuche

Als ich das letzte Mal einen Artikel auf dem offiziellen Konto geschrieben habe, war das Einfügen von Videodateien in das offizielle Konto zu umständlich. Beim Hochladen als Video musste die Plattform sie überprüfen , es war nicht so direkt wie ein GIF.

Also wollte ich ein Tool finden, um MP4 in GIF zu konvertieren. Nach der Online-Suche gibt es viele Online-Tools, aber es gibt verschiedene Methoden. Einige davon erfordern Werbung, während andere das Scannen eines QR-Codes erfordern. Ausländische Websites sind besser, sie haben nicht so viele Tricks.

Ich denke, Python kann mit solchen Problemen definitiv umgehen. Schließlich kann der allmächtige Python alles, außer keine Kinder zur Welt zu bringen. Auf diese Weise werde ich später ein Online-Tool daraus machen, das für mich selbst praktisch ist und von anderen genutzt werden kann.

Das Prinzip der Konvertierung von MP4 in GIF ist eigentlich sehr einfach: Man liest die Frames der MP4-Datei und fügt sie dann zu einem GIF zusammen. 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 dramatisch zugenommen hat:

Die Konvertierung von MP4- und GIF-Formaten mit Python ist unglaublich einfach!

Sie können versuchen, die Größe des GIF zu optimieren, indem Sie beispielsweise die Anzahl der Frames reduzieren Das Video hat insgesamt 60 Bilder. Wenn wir nur 30 Bilder aufnehmen, wird die Größe halbiert. Die Implementierungslogik besteht darin, Bilder mit gerader Nummer zu filtern und sie dann auf die Mindestgröße zu komprimieren 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.

Die Konvertierung von MP4- und GIF-Formaten mit Python ist unglaublich einfach!Sie 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")

Abschließend: Wenn Sie sich ein wenig mit Operationen auskennen, wäre es dann nicht schön, daraus ein Tool zu machen und es online zu stellen, um ein fanatisches Artefakt zu werden?

Das obige ist der detaillierte Inhalt vonDie Konvertierung von MP4- und GIF-Formaten mit Python ist unglaublich einfach!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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