Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python untuk menukar antara format MP4 dan GIF

Cara menggunakan Python untuk menukar antara format MP4 dan GIF

王林
王林ke hadapan
2023-04-27 10:31:141862semak imbas

Prinsip menukar mp4 kepada gif sebenarnya sangat mudah, iaitu membaca bingkai fail mp4 dan kemudian menggabungkannya menjadi gif. Ia boleh dilakukan dengan mudah menggunakan dua perpustakaan cv2 dan 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")

Selepas pelaksanaan selesai, didapati saiz fail gif telah meningkat dengan mendadak:

Cara menggunakan Python untuk menukar antara format MP4 dan GIF

Anda boleh cuba mengoptimumkan saiz gif dengan mengurangkan bilangan bingkai Sebagai contoh, video ini mempunyai jumlah Terdapat 60 bingkai Jika kita hanya mengambil 30 bingkai, saiznya akan dikurangkan kepada separuh; berfungsi untuk menapis gambar bernombor genap untuk sintesis, dan saiz minimum dimampatkan daripada 3.9M kepada 2M.

Selepas menulis kod ini, saya mendapati terdapat satu lagi perpustakaan hebat, moviepy, yang boleh dilakukan dengan 2 baris kod

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 telah merangkum butiran pelaksanaan dengan sangat mudah, dan kemudian dengan syarat Sebilangan besar parameter boleh dikonfigurasikan oleh pembangun sendiri. Tetapi fail yang ditukar menggunakan moviepy ialah 9M Saya percaya bahawa parameter boleh digunakan untuk mengoptimumkan dan melaraskannya.

Cara menggunakan Python untuk menukar antara format MP4 dan GIFAnda harus mengakui bahawa ekosistem Python penuh dengan perpustakaan dan terdapat pelbagai jenis roda cari.

Sudah tentu, anda juga boleh menukar gif kepada format MP4 Contohnya, jika anda melihat beberapa gif lucu, tukarkannya kepada mp4 dan letakkannya pada platform video pendek.

rreeee

Atas ialah kandungan terperinci Cara menggunakan Python untuk menukar antara format MP4 dan GIF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam