網站首頁 編程語言 正文
實現的思路:將準備好的圖片通過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
相關推薦
- 2022-07-09 使用python獲取cpu每秒的使用率_python
- 2022-04-26 Python中Enum使用的幾點注意事項_python
- 2022-07-22 jQuery實現點擊顯示密碼框密碼
- 2022-10-15 Go?Excelize?API源碼解讀GetSheetViewOptions與SetPageLayo
- 2023-03-18 RedisTemplate訪問Redis的更好方法_Redis
- 2022-07-11 npm 查看全局安裝和卸載全局安裝
- 2022-04-11 git項目初次push提示error: failed to push some refs to ht
- 2023-05-21 Django項目搭建之實現簡單的API訪問_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支