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

Cara menggunakan Python untuk menukar antara format MP4 dan GIF

王林
Lepaskan: 2023-04-27 10:31:14
ke hadapan
1927 orang telah melayarinya

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")
Salin selepas log masuk

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)
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan