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多线程http下载实现示例
Dec 30 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python读取Excel的方法实例分析
Jul 11 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
python实现批量修改文件名代码
Sep 10 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
使用Python从零开始撸一个区块链
Mar 14 Python
Python3 max()函数基础用法
Feb 19 Python
pandas.cut具体使用总结
Jun 24 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
浅谈电磁辐射对健康的影响
2021/03/01 无线电
通达OA公共代码 php常用检测函数
2011/12/14 PHP
smarty简单分页的实现方法
2014/10/27 PHP
yii添删改查实例
2015/11/16 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
jQuery的三种$()
2009/12/30 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
jquery使用经验小结
2015/05/20 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
flask中的wtforms使用方法
2018/07/21 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
免税水晶:Duty Free Crystal
2019/05/13 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
软件工程师面试题
2012/06/25 面试题
学校七一活动方案
2014/01/19 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
毕业班工作总结
2015/08/10 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS