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 07 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
python下10个简单实例代码
Nov 15 Python
Python subprocess模块详细解读
Jan 29 Python
python保存数据到本地文件的方法
Jun 23 Python
tensorflow更改变量的值实例
Jul 30 Python
python实现连续图文识别
Dec 18 Python
python生成requirements.txt的两种方法
Sep 18 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
python获取命令行参数实例方法讲解
Nov 02 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
pytorch中的inference使用实例
2020/02/20 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
护士专业推荐信
2013/11/02 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
python全面解析接口返回数据
2022/02/12 Python