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中的多线程实例教程
Aug 27 Python
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
Python OS模块常用函数说明
May 23 Python
Python实现的RSS阅读器实例
Jul 25 Python
《Python学习手册》学习总结
Jan 17 Python
Python中常用信号signal类型实例
Jan 25 Python
python 自动批量打开网页的示例
Feb 21 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
php学习之简单计算器实现代码
2011/06/09 PHP
php+mysql实现无限级分类
2015/11/11 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
php实现用户登陆简单实例
2017/04/04 PHP
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
python的keyword模块用法实例分析
2015/06/30 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python如何爬取动态网站
2020/09/09 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
JBL英国官网:JBL UK
2018/07/04 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
公司会议策划方案
2014/05/17 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
2015年售票员工作总结
2015/04/29 职场文书
优秀志愿者感言
2015/08/01 职场文书
python 调用js的四种方式
2021/04/11 Python
js之ajax文件上传
2021/05/13 Javascript
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript