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字符串处理之count()方法的使用
May 18 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
django如何连接已存在数据的数据库
Aug 14 Python
python统计中文字符数量的两种方法
Jan 31 Python
Django 反向生成url实例详解
Jul 30 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Django与pyecharts结合的实例代码
May 13 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
python爬虫请求头设置代码
Jul 28 Python
python raise的基本使用
Sep 10 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
php生成图片验证码-附五种验证码
2015/08/19 PHP
PHP如何使用Memcached
2016/04/05 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python 类之间的参数传递方式
2019/12/20 Python
Python tkinter模版代码实例
2020/02/05 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
求职者简历中的自我评价
2013/10/20 职场文书
实习老师离校感言
2014/02/03 职场文书
法定代表人身份证明书
2014/09/10 职场文书
工作收入住址证明
2014/10/28 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
MySQL 数据库范式化设计理论
2022/04/22 MySQL
Java 多态分析
2022/04/26 Java/Android