Python实现将多张图片合成MP4视频并加入背景音乐


Posted in Python onApril 28, 2022

实现的思路:将准备好的图片通过opencv读取出来,并将其设置好帧数等参数后合成为无声视频。

最后通过moviepy编辑视频将背景音乐加入到视频中。

Python实现将多张图片合成MP4视频并加入背景音乐

Python实现将多张图片合成MP4视频并加入背景音乐

开始之前还是需要说明一下非标准库的来源,因为有些库的名称和需要导入模块的名称不一定就是一样的。

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

到此这篇关于Python实现将多张图片合成视频并加入背景音乐的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
详解Python3中的Sequence type的使用
Aug 01 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
python 获取当天每个准点时间戳的实例
May 22 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
python检测IP地址变化并触发事件
Dec 26 Python
记录Python脚本的运行日志的方法
Jun 05 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
python实现简单的购物程序代码实例
Mar 03 Python
python操作redis数据库的三种方法
Sep 10 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
php正则校验用户名介绍
2008/07/19 PHP
浅谈php和.net的区别
2014/09/28 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
js实现交通灯效果
2017/01/13 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python 异常处理总结
2016/10/18 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
Python笔记之工厂模式
2019/11/20 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python读写锁实现实现代码解析
2020/11/28 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
西雅图的买手店:Totokaelo
2019/10/19 全球购物
自主招生推荐信范文
2014/05/10 职场文书
档案信息化建设方案
2014/05/16 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
初中信息技术教学计划
2015/01/22 职场文书
入党介绍人意见2015
2015/06/01 职场文书
工作证明格式范文
2015/06/15 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
大队委员竞选稿
2015/11/20 职场文书
2016中秋节广告语
2016/01/28 职场文书
用Python生成会跳舞的美女
2022/01/18 Python