日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python實現將多張圖片合成視頻并加入背景音樂_python

作者:Python?集中營 ? 更新時間: 2022-06-26 編程語言

實現的思路:將準備好的圖片通過opencv讀取出來,并將其設置好幀數等參數后合成為無聲視頻。

最后通過moviepy編輯視頻將背景音樂加入到視頻中。

開始之前還是需要說明一下非標準庫的來源,因為有些庫的名稱和需要導入模塊的名稱不一定就是一樣的。

import os  # python標準庫,不需要安裝,用于系統文件操作相關
import cv2  # python非標準庫,pip install opencv-python 多媒體處理
from PIL import Image  # python非標準庫,pip install pillow,圖像處理
import moviepy.editor as mov  # python非標準庫,pip install moviepy,多媒體編輯

要使用到什么模塊已經敘述了,若是沒有的話安裝一下就可以了。接下來第一步就是將圖片素材準備好來編寫如何將圖片轉換成視頻。

def image_to_video(image_path, media_path):
    '''
    圖片合成視頻函數
    :param image_path: 圖片路徑
    :param media_path: 合成視頻保存路徑
    :return:
    '''
    # 獲取圖片路徑下面的所有圖片名稱
    image_names = os.listdir(image_path)
    # 對提取到的圖片名稱進行排序
    image_names.sort(key=lambda n: int(n[:-4]))
    # 設置寫入格式
    fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
    # 設置每秒幀數
    fps = 2  # 由于圖片數目較少,這里設置的幀數比較低
    # 讀取第一個圖片獲取大小尺寸,因為需要轉換成視頻的圖片大小尺寸是一樣的
    image = Image.open(image_path + image_names[0])
    # 初始化媒體寫入對象
    media_writer = cv2.VideoWriter(media_path, fourcc, fps, image.size)
    # 遍歷圖片,將每張圖片加入視頻當中
    for image_name in image_names:
        im = cv2.imread(os.path.join(image_path, image_name))
        media_writer.write(im)
        print(image_name, '合并完成!')
    # 釋放媒體寫入對象
    media_writer.release()
    print('無聲視頻寫入完成!')

向合成后的無聲視頻中添加背景音樂,背景音樂可以選擇從另外一段視頻中提取音頻。最后將提取到的音頻文件添加到該無聲視頻中。

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


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

上述代碼塊已經過素材完成測試,運行沒有任何報錯直接copy使用即可。

原文鏈接:https://www.cnblogs.com/lwsbc/p/16200288.html

欄目分類
最近更新