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绘制人人网好友关系图示例
Apr 01 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
对python添加模块路径的三种方法总结
Oct 16 Python
python实现简单名片管理系统
Nov 30 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
javascript实现简单搜索功能
2020/03/26 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
使用Python实现博客上进行自动翻页
2017/08/23 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
30岁生日感言
2014/01/25 职场文书
创业计划书如何编写
2014/02/06 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
2015年教研员工作总结
2015/05/26 职场文书
小学数学国培研修日志
2015/11/13 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
JavaScript流程控制(循环)
2021/12/06 Javascript
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers