# encoding=utf8 #-*-coding:utf-8 -*- ''' python合成视频 ''' 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) print(image_names) # 对提取到的图片名称进行排序 image_names.sort(key=lambda n: int(n[:-4])) # 设置写入格式 fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') #用小写 mp4v # fourcc = cv2.VideoWriter_fourcc(*'XVID') # avi # 设置每秒帧数 fps = 24 # 由于图片数目较少,这里设置的帧数比较低 # 读取第一个图片获取大小尺寸,因为需要转换成视频的图片大小尺寸是一样的 image = Image.open(image_path +"\\"+ image_names[0]) print(image.size) # 初始化媒体写入对象 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)) print(im) media_writer.write(im) #在 VideoWriter 中指定的尺寸要和 write() 中写进去的一样,不然视频会存储失败的 print(image_name, '合并完成!') # 释放媒体写入对象 media_writer.release() print('无声视频写入完成!') def set_music(media_path,music_path): ''' 合成视频设置背景音乐函数 :return: ''' print('开始添加背景音乐!') # 初始化视频文件对象 clip = mov.VideoFileClip(media_path) audio = mov.AudioFileClip(music_path) #打开音频 # 向合成好的无声视频中添加背景音乐 clip = clip.set_audio(audio) # 保存视频 clip.write_videofile(media_path) print('背景音乐添加完成!') # # 从某个视频中提取一段背景音乐 # 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('背景音乐添加完成!') if __name__ == '__main__': image_path = r".\tupian" media_path= "4.1_制定项目章程.mp4" music_path = "4.1_指定项目章程_1.mp3" image_to_video(image_path, media_path) set_music(media_path, music_path)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2020-03-10 shell51内存报警脚本
2020-03-10 shell50磁盘使用率脚本
2020-03-10 shell49创建用户脚本
2020-03-10 shell48数值比较
2020-03-10 shell47文件测试
2020-03-10 shell46判断是否为root用户
2020-03-10 shell45判断是否为目录脚本