成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Python處理MP4與GIF格式互轉,簡單到爆!

開發 前端
mp4轉gif的原理其實很簡單,就是將mp4文件的幀讀出來,然后合并成一張gif圖。用cv2和PIL這兩個庫就可以輕松搞定。

上次公眾號寫文章的時候,遇到個問題,公眾號插入視頻文件太繁瑣,一個很小的視頻,作為視頻傳上去平臺還要審核,播放的時候也沒gif來的直接。

于是想著找個工具將mp4轉換成gif。網上搜一下,在線的工具好多,但是各種套路,有些要點廣告,有些要先掃二維碼。還是國外的網站好,沒那么多套路。

我想Python肯定也可以處理這種問題,畢竟萬能的Python除了不會生孩子,什么都能做。這樣后面我把它做成一個在線工具,方便自己也順便可以給其他人使用。

mp4轉gif的原理其實很簡單,就是將mp4文件的幀讀出來,然后合并成一張gif圖。用cv2和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")

執行完成后,發現gif文件大小暴增:

可以嘗試通過減少幀的數量來優化gif的大小,比如這個視頻一共有60幀,我們只取30幀,大小就會減半;

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)

實現邏輯是用enumerate函數過濾取偶數張圖片來合成,最小大小從3.9M壓縮到2M。

寫完這個代碼后,發現還有另一個牛逼的庫moviepy,2行代碼就可以搞定;

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

moviepy把實現細節已經封裝非常簡約了,然后提供了一大堆參數可以讓開發者自行配置。但使用moviepy轉的文件有9M,我相信可以用參數來優化調整。

你不得不承認Python生態就是庫多,各種各樣的輪子都有,沒有做不到的,只有你找不到的。

當然,你也可以將gif轉回成MP4格式,比如你看到一些搞笑的gif將它轉換成mp4放到短視頻平臺,說不定就火了。

def convert_gif_to_mp4():
import moviepy.editor as mp
clip = mp.VideoFileClip("demo.gif")
clip.write_videofile("output.mp4")

最后,如果你稍微懂點運營,把它做成工具,掛到網上,又是一個吸粉的神器,豈不美哉。

責任編輯:武曉燕 來源: Python之禪
相關推薦

2011-09-02 19:30:47

2011-09-06 16:44:47

FFmpegUbuntump4

2022-10-28 21:11:52

m3u8網絡

2011-09-06 16:42:30

FFmpegUbuntu

2025-05-19 07:34:42

File客戶端存儲

2018-04-16 15:39:43

轉換技巧

2025-04-08 18:43:44

谷歌Gemini AI人工智能

2011-04-21 15:48:00

DJL-725MLED微型投影機

2011-06-30 10:01:01

Qt FFMPEG MP4

2022-04-21 14:29:40

前端文件預覽

2017-11-22 15:36:56

m3u8文件mp4

2023-02-06 18:23:42

ExcelChatGPT

2015-10-08 16:02:28

HTML5Video

2012-12-24 09:17:12

iOSUnity3D

2023-06-08 08:43:36

2019-07-22 08:49:37

PythonJSON編程語言

2022-12-15 16:13:19

Windows11微軟

2021-05-27 15:43:29

鴻蒙安卓和iOS

2020-12-10 06:06:07

Windows10HEIFHEIC

2016-03-04 13:45:56

七牛云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操 夜夜操 | 色吊丝2288sds中文字幕 | 国产精品美女视频 | 国产精品欧美精品日韩精品 | 一区二区三区免费 | 91久久精品一区二区二区 | 日韩欧美三区 | 国产精品揄拍一区二区久久国内亚洲精 | 国产一区二区三区久久久久久久久 | 欧美一区二区三区高清视频 | 一区二区视频在线观看 | 91一区二区三区在线观看 | 久久99视频 | 久久久精品久久久 | 日韩波多野结衣 | 日韩欧美在线播放 | 天堂久久天堂综合色 | 超碰91在线 | 日韩在线免费观看视频 | 国产激情91久久精品导航 | 中文字幕av第一页 | 97人人爱 | 国产91久久久久久 | 精品国产欧美一区二区三区成人 | 成人免费一区二区三区视频网站 | 日韩精品一区二区三区在线观看 | 成人午夜视频在线观看 | 91色综合 | 亚洲最大福利网 | 天堂一区二区三区 | 国产精品国产三级国产播12软件 | 日韩手机在线看片 | 国产精品美女久久久久aⅴ国产馆 | 日韩一区二区在线免费观看 | 九九热在线视频 | 超碰在线免费 | 国产精品美女久久久av超清 | 国产精品1| 国产电影一区 | 亚洲成人综合网站 | 亚洲精品91|