如何將多張圖片合成mp4視頻格式,並加入背景音樂...

来源:https://www.cnblogs.com/lwsbc/archive/2022/04/27/16200288.html
-Advertisement-
Play Games

教程說明 C++高性能網路服務保姆級教程 首發地址 day02 真正的高併發還得看IO多路復用 本節目的 使用epoll實現一個高併發的伺服器 從單進程講起 上節從一個基礎的socket服務說起我們實現了一個基本的socket伺服器,並留了個思考題 先啟動server,然後啟動一個client,不輸 ...


file

【閱讀全文】

實現的思路:將準備好的圖片通過opencv讀取出來,並將其設置好幀數等參數後合成為無聲視頻。
最後通過moviepy編輯視頻將背景音樂加入到視頻中。

file
file

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

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使用即可。

最後,分享一下我從視頻中提取出來的輕音樂聽起來還挺好聽。

background.mp3

file

【往期精彩】

如何實現根據照片獲取地理位置及如何防禦照片泄漏地理位置!

python如何實現網路測試,瞭解一下speedtest-cli...

模型已經寫好了,怎麼表白就看你的了!

又是櫻花盛開的季節,使用小烏龜來畫一顆櫻花樹吧!

Python 讀取PDF文件為文本字元並轉換為音頻...

python 獲取最新房價信息-以北京房價為例

辦公自動化:Image圖片轉換成PDF文檔存儲...

python做一個微型美顏圖片處理器,十行代碼即可完成...

用python做一個文本翻譯器,自動將中文翻譯成英文,超方便的!

python 表情包下載器,輕鬆下載上萬個表情包、鬥圖不用愁...

小王,給這2000個客戶發一下節日祝福的郵件...

python 一行命令開啟網路間的文件共用...

歡迎關註作者公眾號【Python 集中營】,專註於後端編程,每天更新技術乾貨,不定時分享各類資料!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.部署到阿裡雲伺服器 既然博客也已經成功在本地部署,然後主題也成功安裝,接下來就可以部署到伺服器上面了,如果你也想要魔改matery主題,可以去各種博客上面找一找大佬的教程,或者聯繫我,也可以讓你少走一些彎路(❁´◡`❁)。 1.部署到伺服器需要做的事情 首先需要在阿裡雲上面購買一臺伺服器,然後購 ...
  • 前言 本篇文章會從本地(Windows 10)搭建-主題更換-部署阿裡雲詳細步驟,如果在搭建過程中,遇到問題,可以通過博客頁腳下的QQ聯繫我,或者在下麵評論留言 一.本地搭建 1.安裝前置 1.1安裝git 在git官網下載最新版本的git即可,因為本地是Windows所以下載Windows版本即可 ...
  • 前言 【筆記內容】 關於JSchallenger中Arrays對象題目的復盤 本人的提交、以及做題時的思路 分析作者答案 涉及的知識快速瞭解,註意:並不深入分析具體知識,只是圍繞題目展開 【筆記目的】 幫助本人進一步瞭解Javascript的Arrays對象以及涉及的方法 對自己做題後的復盤,進一步 ...
  • 想必大部分做頂部導航欄(position: fixed;)的都遇見過導航欄遮住鏈接鏈接對象部分內容這種情況吧,如下圖所示,我的頂部導航欄的高度為9vh,video元素是“本店快遞流程”(錨鏈接)跳轉的元素 當我點擊該鏈接時,video元素被遮去了9vh的高度,這是為什麼呢? 我查看了一下源代碼(vi ...
  • 微服務概覽 微服務是圍繞業務領域建模可獨立發佈的服務。服務封裝了對應功能並可以通過網路被其他服務訪問。 從外部來看,單個微服務被視為一個黑盒子。它使用最合適的協議在一個或多個網路端點(例如,隊列或REST API)上承載業務功能。消費者,無論他們是其他微服務還是其他類型的程式,都通過這些聯網的端點來 ...
  • 要寫好一份 B 端產品的技術方案,是非常有挑戰的事情,對最終項目價值達成起到決定性的作用,技術方案質量差可能直接毀滅一塊業務。下麵推薦一份 B 端產品的技術方案模板,供讀者參考。 ...
  • 業務需求 最近公司在做養老相關的業務,現在需要子女從小程式端對家裡的老人通過家庭終端交互屏進行實時看護。 解決方案 第三方的一些現成的服務:騰訊音視頻通話、直播功能; 阿裡的音視頻通信;兩者都挺好的,但是需要收費因此放棄決定自己搭建一套直播流服務; 先看效果(自己伺服器配置低有延遲、放到公司伺服器上 ...
  • 26名學生,每個人可以填寫10個交談對象: 10輪匹配結果: 1、pom.xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</sco ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...