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 struct模块解析
Jun 12 Python
RC4文件加密的python实现方法
Jun 30 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python算术运算符实例详解
May 31 Python
Python标准库inspect的具体使用方法
Dec 06 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
PyQt5每天必学之组合框
Apr 20 Python
python使用Matplotlib画饼图
Sep 25 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP如何将XML转成数组
2016/04/04 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
初步探究Python程序的执行原理
2015/04/11 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
SQL语言面试题
2013/08/27 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
业务员的岗位职责
2014/03/15 职场文书
工程质量承诺书范文
2014/03/27 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
增员口号大全
2014/06/18 职场文书
爱的教育读书笔记
2015/06/26 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python