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 相关文章推荐
读取本地json文件,解析json(实例讲解)
Dec 06 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
python实现可视化动态CPU性能监控
Jun 21 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
python读取指定字节长度的文本方法
Aug 27 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python 多进程队列数据处理详解
Dec 23 Python
通过cmd进入python的步骤
Jun 16 Python
Python的轻量级ORM框架peewee使用教程
Feb 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学习之PHP变量
2006/10/09 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
javascript判断office版本示例
2014/04/11 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
js实现拖拽功能
2017/03/01 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
JavaScript如何操作css
2020/10/24 Javascript
python str与repr的区别
2013/03/23 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
软件工程专业推荐信
2013/10/28 职场文书
生产经理的自我评价分享
2013/11/07 职场文书
演讲稿怎么写
2014/01/07 职场文书
运动会邀请函范文
2014/01/31 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Pandas自定义选项option设置
2021/07/25 Python