溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)

發(fā)布時(shí)間:2022-04-28 10:42:29 來(lái)源:億速云 閱讀:560 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)”,在日常操作中,相信很多人在Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

實(shí)現(xiàn)的思路:將準(zhǔn)備好的圖片通過(guò)opencv讀取出來(lái),并將其設(shè)置好幀數(shù)等參數(shù)后合成為無(wú)聲視頻。

最后通過(guò)moviepy編輯視頻將背景音樂(lè)加入到視頻中。

Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)

Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)

開始之前還是需要說(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)敘述了,若是沒(méi)有的話安裝一下就可以了。接下來(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ú)聲視頻中添加背景音樂(lè),背景音樂(lè)可以選擇從另外一段視頻中提取音頻。最后將提取到的音頻文件添加到該無(wú)聲視頻中。

def set_music():
    '''
    合成視頻設(shè)置背景音樂(lè)函數(shù)
    :return:
    '''
    print('開始添加背景音樂(lè)!')
    # 初始化視頻文件對(duì)象
    clip = mov.VideoFileClip('./media.mp4')
    # 從某個(gè)視頻中提取一段背景音樂(lè)
    audio = mov.AudioFileClip('./source.mp4').subclip(0, 83)
    # 將背景音樂(lè)寫入.mp3文件
    audio.write_audiofile('./background.mp3')
    # 向合成好的無(wú)聲視頻中添加背景音樂(lè)
    clip = clip.set_audio(audio)
    # 保存視頻
    clip.write_videofile('./media.mp4')
    print('背景音樂(lè)添加完成!')


# image_to_video('./images/', './media.mp4')
set_music()

上述代碼塊已經(jīng)過(guò)素材完成測(cè)試,運(yùn)行沒(méi)有任何報(bào)錯(cuò)直接copy使用即可。

到此,關(guān)于“Python怎么實(shí)現(xiàn)將多張圖片合成視頻并加入背景音樂(lè)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI