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中几种操作字符串的方法的介绍
Apr 09 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python读取目录下最新的文件夹方法
Dec 24 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
简单了解python中的与或非运算
Sep 18 Python
python实现控制台输出彩色字体
Apr 05 Python
Python time库的时间时钟处理
May 02 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python标准库内置函数complex介绍
2014/11/25 Python
python解决字符串倒序输出的问题
2018/06/25 Python
python实现日志按天分割
2019/07/22 Python
在python中用url_for构造URL的方法
2019/07/25 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
主题教育活动总结
2014/05/05 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
关于召开会议的通知
2015/04/15 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
dubbo服务整合zipkin详解
2021/07/26 Java/Android