如何将多张图片合成mp4视频格式,并加入背景音乐...

2023-11-17

file

【阅读全文】

实现的思路:将准备好的图片通过opencv读取出来,并将其设置好帧数等参数后合成为无声视频。 最后通过moviepy编辑视频将背景音乐加入到视频中。

file file

开始之前还是需要说明一下非标准库的来源,因为有些库的名称和需要导入模块的名称不一定就是一样的。

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使用即可。

最后,分享一下我从视频中提取出来的轻音乐听起来还挺好听。

background.mp3

【往期精彩】

如何实现根据照片获取地理位置及如何防御照片泄漏地理位置!

python如何实现网络测试,了解一下speedtest-cli...

模型已经写好了,怎么表白就看你的了!

又是樱花盛开的季节,使用小乌龟来画一颗樱花树吧!

Python 读取PDF文件为文本字符并转换为音频...

python 获取最新房价信息-以北京房价为例

办公自动化:Image图片转换成PDF文档存储...

python做一个微型美颜图片处理器,十行代码即可完成...

用python做一个文本翻译器,自动将中文翻译成英文,超方便的!

python 表情包下载器,轻松下载上万个表情包、斗图不用愁...

小王,给这2000个客户发一下节日祝福的邮件...

python 一行命令开启网络间的文件共享...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将多张图片合成mp4视频格式,并加入背景音乐... 的相关文章

  • Python常用基础语法知识点大全合集,看完这一篇文章就够了

    介绍 Python 是一门独特的语言 快速浏览一下他的要点 面向对象 每一个变量都是一个类 有其自己的属性 attribute 与方法 method 语法块 用缩进 四个空格 而不是分号 花括号等符号来标记 因此 行首的空格不能随意书写 注
  • 用RPA实现高效批量下载图片,轻松解决繁琐操作!

    在电商行业中 高质量的商品图片是吸引客户的重要因素之一 然而 传统的下载方式需要逐个点击商品链接并手动保存图片 费时费力且容易出错 为了解决这个问题 八爪鱼抓取淘宝商品图片rpa机器人应运而生 它可以模拟人在电脑上的操作 根据用户的配置自动
  • 好书推荐《VirtualLab Fusion入门与进阶实用教程(第二版)》

    目 录 第一章 VirtualLab Fusion理论基础 1 1 1 几何光学和光线追迹 1 1 2 物理光学和光场追迹 1 1 2 1 统一场追迹 3 1 2 2 第二代场追迹 6 第二章 VirtualLab Fusion安装与更新
  • GEE 24:基于GEE实现高空间分辨率物种分布模型的模拟

    高分辨率物种分布模型模拟 1 加载数据并定义网格大小和范围 2 预测变量 3 定义模型拟合和交叉验证的空间块 使用未分类的卫星图像作为预测变量 以高空间分辨率对物种分布进行建模 1 加载数据并定义网格大小和范围 对于本例 我们从 GBIF获
  • 《精通LASCAD 3.6》好书分享

    目 录 第一章 LASCAD简介 1 1 1 创始人简介 1 1 2 主要功能 1 1 3 主要客户 1 第二章 LASCAD的安装 启动以及系统要求 4 2 1 LASCAD的安装 4 2 2 LASCAD的启动 4 2 3 LASCAD
  • Python数据分析原来这么简单!5分钟上手,让你成为数据分析达人!

    前言 数据分析是如今信息时代的核心技能之一 通过对大量数据的收集 整理 处理和分析 数据分析师可以从中提取出有价值的信息 为企业决策提供支持和指导 而Python作为一种简单 易学且功能强大的编程语言 成为了数据分析的热门工具之一 本文将为
  • optisystem案例解析》好书分享

    目 录 安装OptiSystem 简介 快速入门 案例1 发射机 外调制激光 案例2 子系统 分层模拟 案例3 光学系统 WDM设计 案例4 参数扫描 BERx输入功率 案例5 双向模拟 使用多次迭代 案例6 时间驱动模拟 单独采样 案例7
  • 计算智能 | 蚁群算法——旅行商问题(TSP)python

    目录 一 求解TSP city31 问题的python代码 二 python运行结果 一 求解TSP city31 问题的python代码 import numpy as np import random import matplotlib
  • 白光迈克尔逊干涉仪

    摘要 白光干涉测量法是一种非接触式技术 用于精确测量 例如表面轮廓和微小位移 使用迈克尔逊干涉仪设置和氙灯光源 在VirtualLab Fusion中演示了白光干涉测量 考虑到光源的光谱特性 即有限的相干长度 结果显示仅当两个臂的路径长度几
  • Python-一键爬取图片、音频、视频资源

    前言 使用Python爬取任意网页的资源文件 比如图片 音频 视频 一般常用的做法就是把网页的HTML请求下来通过XPath或者正则来获取自己想要的资源 这里我做了一个爬虫工具软件 可以一键爬取资源 媒体文件 但是需要说明的是 这里爬取资源
  • 探索关系:Python中的Statsmodels库进阶

    目录 写在开头 1 多元线性回归 场景介绍 2 Logistic回归 2 1 Logistic回归的概念 2 2 应用案例 2 2 1 建立模型和预测
  • Python数据分析之Jupyter Notebook安装教程

    一 简介 Jupyter Notebook是基于网页的交互编程工具 以网页的形式打开 可以在网页页面中直接编写代码和运行代码 代码的运行结果也会直接在代码块下显示 特点 Jupyter Notebook中所有交互计算 编写说明文档 数学公式
  • 滤光片截止带上尖峰的抑制

    具有很宽截止带的边缘滤光片往往会出现尖峰 1 这些峰值具有较高透射率 并且在光谱范围上很窄 这是由滤光片的核心腔体结构导致的 腔体的存在会稍微扩展特性 因此有时会采用优化或合成工艺来引入它们 峰值随系统任何层的厚度变化而移动 因此它始终存在
  • 实现智能化运维的关键驱动力,你知道可观测性工具吗

    可观测性是指根据系统产生的数据评估内部系统状态的能力 对于IT运维团队来说 可观测性工具是非常重要的 通过这些工具 IT团队可以同时观察或深入了解IT基础架构中不同应用程序和资源的健康状况和状态 从而主动检测异常 分析问题并解决问题 可观测
  • 民安智库(第三方满意度调研公司):满意度调查,选择适合的数据分析方法

    满意度调查是企业了解客户对其产品或服务满意程度的重要工具 而选择适合的数据分析方法则是解读调查结果的关键步骤 不同的数据分析方法可以提供不同的洞察和见解 帮助企业更好地理解客户需求 优化产品和服务 本文将分享民安智库 北京第三方绩效管理评估
  • 数据分析求职-岗位介绍

    这是咱们干货开始的第一篇文章 后续我尽量会保持日更的节奏和大家做分享 在未来所有分享的内容展开之前 咱们有必要先彻底 深入地了解下数据分析这个岗位 如果你还在犹豫是否要走数据分析的路 或者你已经拿了数据分析的offer想了解下将来会做什么
  • 数据分析求职-如何准备

    今天咱们来聊一聊数据分析岗位求职到底需要准备什么 什么时间准备 该如何准备 1 求职时间轴 上图很清楚地把求职时间轴展示出来了 重复的话也不多说了 有两点想和同学们重点提下 1 一定一定要抓住校招的机会 不管你身处其中哪个阶段 但凡有校招的
  • 数据分析求职-简历准备

    简历在整个求职过程中的重要性不言而喻 今天咱们来聊求职过程中简历准备的那些事儿 1 简历究竟有啥用 求职的流程简单说就是 网申 gt 笔试 gt 面试 gt offer 其中网申环节 简历100 决定了你的通过与否 这个点大家都知道 很多同
  • 智能数据分析系统:揭秘最强AI助力企业腾飞的秘密武器

    现代企业离不开数据 而数据的分析与应用更是成为企业走向成功的关键之一 然而 随着数据量的不断增长 传统的数据分析方法已经无法满足企业的需求 这时 智能数据分析系统应运而生 成为企业决策的得力助手 那么 智能数据分析系统究竟是如何帮助企业实现
  • 基于GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 基于ChatGPT4 Python近红外光谱数据分析及机器学习与深度学习建模教程 第一 GPT4 基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初

随机推荐

  • struts2配置commons-fileupload的问题

    这个问题主要出现在上传文件时parseRequest 的值为空 原因是struts2的Filter拦截了 ServletFileUpload sfu new ServletFileUpload factory List fileList s
  • 快手通过标签添加你什么意思_你知道快手标签是什么吗?钓号网告诉你

    你知道快手标签是什么吗 钓号网告诉你 通俗来讲 标签就是你想做的领域的标签 比如说 当你喜欢美食 经常点赞评论美食的视频 系统就会给你贴上美食的标签 这个我们是看不到的 是记录在后台的 标签的作用在于可以帮助系统把视频分发给有相同标签的人
  • select实现串口阻塞读取数据

    文章目录 前言 一 包含串口编程必要的头文件 二 串口初始化 三 串口写数据 四 串口阻塞读取数据 五 RS485与RS232编程和TTL的区别 六 完整代码 前言 串口编程分为这么几类 lt 1 gt 普通的TTL 一对一通信 lt 2
  • SQL中的DQL(数据查询)语言

    SQL语句分类 通常分为五类 DDL 数据定义语言 create alter drop等 DQL 数据查询语言 select等 DML 数据操纵语言 insert delete update等 TCL 事务操纵语言 commit rollb
  • 我的创作纪念日---Look back on the past year of hard work

    哈 今天在CSDN的站内信收到了通知 为了纪念我在CSDN度过的日日夜夜 故简单写点东西记录一下 分享给可能和我有相同经历的计算机专业的大学生 以此来勉励大家 缘起 嗨 大家好 我是一个内向的计算机小白 在 CSDN 已经度过了 100 多
  • IJKPlayer 编译及运行Demo 教程(详细)

    IJKPlayer 编译及运行Demo 教程 编译环境准备 1 Ubuntu安装 2 工具安装 安装JDK SDK NDK 1 安装JDK 2 安装SDK 3 安装NDK 下载ijkplayer及修改其中配置 编译 android stud
  • [培训-DSP快速入门-8]:C54x DSP汇编语言之寻址方式

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119023151 目录 第1章
  • Java Timer定时器schedule()函数

    TimerTask task new TimerTask Override public void run 逻辑处理 Timer timer new Timer timer schedule task 0 此处delay为0表示没有延迟 立
  • rosprofiler 安装和使用

    rosprofiler wiki 页面 http wiki ros org rosprofiler rosprofiler package 下载rosprofiler和ros statistics msgs 放到工程目录下编译 https
  • Android列表组件ListView子项的点击事件与子项中组件的点击事件

    点击ListView子项时进行相关的逻辑操作 为ListView组件添加子项点击事件 设置ListView子项的点击事件 testLv setOnItemClickListener new AdapterView OnItemClickLi
  • React 组件根据数据动态渲染

    数据驱动的UI界面 import React from react import as componentLib from components index import dataMap from data dataMap function
  • Error: Cannot find module ‘timers/promises‘

    这个错误很要命 他会导致你本机所有的npm 命令全部报错 首先 这个错误是因为 npm 与 node版本不匹配导致的 最简单的办法就是 查一下你安装的这个npm 的版本适配那个版本的 node 然后将本地的node删除 控制面板写在node
  • 月满中秋夜|中秋和 Jina AI 一起过

    Jina AI 祝您中秋快乐 用开源社区的方式打开别样中秋节 Jina AI 社区准备了两个小任务和精美周边礼物 等你来挑战 活动时间 即日起 9 13号中午12 00 参与方式 Step 1 到 Jina 全家桶的 GitHub 页面 给
  • 使用虚拟机VMware Workstation安装ubuntu22.04

    下载准备 VMwareWorkstation 地址 Download VMware Workstation Pro 我是在windows系统安装 所以选择这个下载按钮 试用版可以在网上找到对应版本的密钥进行破解 一般都不影响使用 iso镜像
  • Warning: Ignoring WAYLAND_DISPLAY on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.Ca

    一 问题描述 centos stream9 安装了多个 qt creator 版本 Qt5 14 1 qt creator 9 0 qt creator 6 0 在调试platforminputcontexts 解决中文无法输入时 在修改
  • 奇迹暖暖服务器不稳定,奇迹暖暖怎么换服务器

    剑雨江湖6月15日服务器互通公告 合服充值大返利 剑雨江湖 6月15日将进行部分服务器互通操作 为了避免不必要的损失 玩家请关注官方公告 详细的 剑雨江湖 15日服务器互通公告 一起来看 服务器级战争爆发 热血三国2 染血战斗檄文呈上 热血
  • lwip接收文件 stm32_LWIP移植文件介绍

    在介绍文件之前首先介绍一下DMA描述符 stm32以太网模块接收 发送FIFO和内存之间的以太网传输是通过以太网DMA使用DMA描述符完成的 一共有两个描述符列表 一个用于接收 一个用于发送 两个列表的基址分别写入ETH DMARDLAR
  • iOS16新特性及开发适配

    一 新特性 iOS 16 满载全新的个性化功能 更具深度的智能技术 以及更多无缝的沟通与共享方式 让 iPhone 的体验更进一步 详细的系统新特性请查看 Apple 发布iOS16预览 中文版 二 开发者适配 IDE环境相关升级 Xcod
  • java: 无法从静态上下文中引用非静态 方法

    Java中静态上下文中无法引用非静态变量的解决办法 一 为什么不能引用 今天编写代码遇到 non static variable mainframe cannot be referenced from a static context 经过
  • 如何将多张图片合成mp4视频格式,并加入背景音乐...

    阅读全文 实现的思路 将准备好的图片通过opencv读取出来 并将其设置好帧数等参数后合成为无声视频 最后通过moviepy编辑视频将背景音乐加入到视频中 开始之前还是需要说明一下非标准库的来源 因为有些库的名称和需要导入模块的名称不一定就