Python實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂
實(shí)現(xiàn)的思路:將準(zhǔn)備好的圖片通過opencv讀取出來(lái),并將其設(shè)置好幀數(shù)等參數(shù)后合成為無(wú)聲視頻。
最后通過moviepy編輯視頻將背景音樂加入到視頻中。


開始之前還是需要說(shuō)明一下非標(biāo)準(zhǔn)庫(kù)的來(lái)源,因?yàn)橛行?kù)的名稱和需要導(dǎo)入模塊的名稱不一定就是一樣的。
import os # python標(biāo)準(zhǔn)庫(kù),不需要安裝,用于系統(tǒng)文件操作相關(guān) import cv2 # python非標(biāo)準(zhǔn)庫(kù),pip install opencv-python 多媒體處理 from PIL import Image # python非標(biāo)準(zhǔn)庫(kù),pip install pillow,圖像處理 import moviepy.editor as mov # python非標(biāo)準(zhǔn)庫(kù),pip install moviepy,多媒體編輯
要使用到什么模塊已經(jīng)敘述了,若是沒有的話安裝一下就可以了。接下來(lái)第一步就是將圖片素材準(zhǔn)備好來(lái)編寫如何將圖片轉(zhuǎn)換成視頻。
def image_to_video(image_path, media_path):
'''
圖片合成視頻函數(shù)
:param image_path: 圖片路徑
:param media_path: 合成視頻保存路徑
:return:
'''
# 獲取圖片路徑下面的所有圖片名稱
image_names = os.listdir(image_path)
# 對(duì)提取到的圖片名稱進(jìn)行排序
image_names.sort(key=lambda n: int(n[:-4]))
# 設(shè)置寫入格式
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
# 設(shè)置每秒幀數(shù)
fps = 2 # 由于圖片數(shù)目較少,這里設(shè)置的幀數(shù)比較低
# 讀取第一個(gè)圖片獲取大小尺寸,因?yàn)樾枰D(zhuǎn)換成視頻的圖片大小尺寸是一樣的
image = Image.open(image_path + image_names[0])
# 初始化媒體寫入對(duì)象
media_writer = cv2.VideoWriter(media_path, fourcc, fps, image.size)
# 遍歷圖片,將每張圖片加入視頻當(dāng)中
for image_name in image_names:
im = cv2.imread(os.path.join(image_path, image_name))
media_writer.write(im)
print(image_name, '合并完成!')
# 釋放媒體寫入對(duì)象
media_writer.release()
print('無(wú)聲視頻寫入完成!')
向合成后的無(wú)聲視頻中添加背景音樂,背景音樂可以選擇從另外一段視頻中提取音頻。最后將提取到的音頻文件添加到該無(wú)聲視頻中。
def set_music():
'''
合成視頻設(shè)置背景音樂函數(shù)
:return:
'''
print('開始添加背景音樂!')
# 初始化視頻文件對(duì)象
clip = mov.VideoFileClip('./media.mp4')
# 從某個(gè)視頻中提取一段背景音樂
audio = mov.AudioFileClip('./source.mp4').subclip(0, 83)
# 將背景音樂寫入.mp3文件
audio.write_audiofile('./background.mp3')
# 向合成好的無(wú)聲視頻中添加背景音樂
clip = clip.set_audio(audio)
# 保存視頻
clip.write_videofile('./media.mp4')
print('背景音樂添加完成!')
# image_to_video('./images/', './media.mp4')
set_music()
上述代碼塊已經(jīng)過素材完成測(cè)試,運(yùn)行沒有任何報(bào)錯(cuò)直接copy使用即可。
到此這篇關(guān)于Python實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂的文章就介紹到這了,更多相關(guān)Python圖片合成視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python2 與Python3的版本區(qū)別實(shí)例分析
這篇文章主要介紹了Python2 與Python3的版本區(qū)別,結(jié)合實(shí)例形式分析了Python2 與Python3的版本使用過程中的各種常見區(qū)別、用法與注意事項(xiàng),需要的朋友可以參考下2020-03-03
Python自動(dòng)化測(cè)試中yaml文件讀取操作
這篇文章主要介紹了Python自動(dòng)化測(cè)試中yaml文件讀取操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
1行Python代碼實(shí)現(xiàn)去除圖片水印詳解
這篇文章主要為大家介紹了1行Python代碼實(shí)現(xiàn)去除圖片水印詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
django 實(shí)現(xiàn)編寫控制登錄和訪問權(quán)限控制的中間件方法
今天小編就為大家分享一篇django 實(shí)現(xiàn)編寫控制登錄和訪問權(quán)限控制的中間件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-01-01
Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)填充和步幅的理解
這篇文章主要介紹了Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)填充和步幅的理解2021-10-10

