av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

用Python處理MP4與GIF格式互轉(zhuǎn),簡單到爆!

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

創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、肇州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為肇州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

mp4轉(zhuǎn)gif的原理其實(shí)很簡單,就是將mp4文件的幀讀出來,然后合并成一張gif圖。用cv2和PIL這兩個(gè)庫就可以輕松搞定。

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

執(zhí)行完成后,發(fā)現(xiàn)gif文件大小暴增:

可以嘗試通過減少幀的數(shù)量來優(yōu)化gif的大小,比如這個(gè)視頻一共有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)

實(shí)現(xiàn)邏輯是用enumerate函數(shù)過濾取偶數(shù)張圖片來合成,最小大小從3.9M壓縮到2M。

寫完這個(gè)代碼后,發(fā)現(xiàn)還有另一個(gè)牛逼的庫moviepy,2行代碼就可以搞定;

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

moviepy把實(shí)現(xiàn)細(xì)節(jié)已經(jīng)封裝非常簡約了,然后提供了一大堆參數(shù)可以讓開發(fā)者自行配置。但使用moviepy轉(zhuǎn)的文件有9M,我相信可以用參數(shù)來優(yōu)化調(diào)整。

你不得不承認(rèn)Python生態(tài)就是庫多,各種各樣的輪子都有,沒有做不到的,只有你找不到的。

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

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

最后,如果你稍微懂點(diǎn)運(yùn)營,把它做成工具,掛到網(wǎng)上,又是一個(gè)吸粉的神器,豈不美哉。


當(dāng)前文章:用Python處理MP4與GIF格式互轉(zhuǎn),簡單到爆!
URL標(biāo)題:http://uogjgqi.cn/article/dpsgcop.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流