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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
python自动zip压缩目录的方法
Jun 28 Python
python实现备份目录的方法
Aug 03 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
python实现壁纸批量下载代码实例
Jan 25 Python
python3使用smtplib实现发送邮件功能
May 22 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
python实现高效的遗传算法
Apr 07 Python
python实现简单倒计时功能
Apr 21 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 #Python
详解PyTorch模型保存与加载
Apr 28 #Python
Python 图片添加美颜效果
Python 视频画质增强
python 单机五子棋对战游戏
You might like
javascript,php获取函数参数对象的代码
2011/02/03 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP解决中文乱码
2017/04/28 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
在Linux下调试Python代码的各种方法
2015/04/17 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Python使用python-docx读写word文档
2019/08/26 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python如何实现DES加密
2020/09/21 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
大学生农村教师实习自我鉴定
2013/09/21 职场文书
项目总经理岗位职责
2014/02/14 职场文书
公证书
2019/04/17 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
5个实用的JavaScript新特性
2022/06/16 Javascript
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS