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 Web框架Tornado运行和部署
Oct 19 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
浅谈Python中的bs4基础
Oct 21 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
用Python绘制漫步图实例讲解
Feb 26 Python
20行Python代码实现视频字符化功能
Apr 13 Python
python中Django文件上传方法详解
Aug 05 Python
Django框架安装及项目创建过程解析
Sep 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 error_log 函数的使用
2009/04/13 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
js 文件引入实现代码
2010/04/23 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python表示矩阵的方法分析
2017/05/26 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
python障碍式期权定价公式
2019/07/19 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
毕业研究生的自我鉴定
2013/11/30 职场文书
网管求职信
2014/03/03 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
文明礼仪标语
2014/06/13 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
企业介绍信范文
2015/01/30 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL