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 相关文章推荐
Python 第一步 hello world
Sep 25 Python
Python中的index()方法使用教程
May 18 Python
通过源码分析Python中的切片赋值
May 08 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python实现飞机大战
Sep 11 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
python常用数据重复项处理方法
Nov 22 Python
python实现PCA降维的示例详解
Feb 24 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
聊一聊python常用的编程模块
May 14 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
python操作xml文件示例
2014/04/07 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
聚网科技C++面试笔试题
2015/09/01 面试题
村党支部书记承诺书
2014/05/29 职场文书
2014年国庆标语
2014/06/30 职场文书
车辆转让协议书
2014/09/24 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
亲属关系公证书样本
2015/01/23 职场文书
银行求职自荐信范文
2015/03/04 职场文书
python关于集合的知识案例详解
2021/05/30 Python