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

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

file

【往期精彩】

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

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

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

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

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

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

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

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

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

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

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

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何将多张图片合成mp4视频格式,并加入背景音乐… - Python技术站

(0)
上一篇 2023年4月2日 下午5:41
下一篇 2023年4月2日 下午5:41

相关文章

  • python中最简单的turtle绘图:奥运五环

    为什么说奥运五环的绘制是最简单的,实际上它的绘制过程就是通过画笔画出五个相同大小的圆圈即可。不同的是圆圈的位置不同的。 阅读全文 开始之前,我特地去找了turtle的官网地址贴在下面,其实学习一个技术点官网的作用还是非常重要的。毕竟你在网上找到大量的资料都是二手资料。 因此,你可能并不了解这个技术点产生的初衷,最后,一个技术点就成以讹传讹。所以,鼓励大家学习…

    2023年4月2日
    00
  • 刚刚发现的可视化动态图库ipyvizzu,太好看了

    ipyvizzu生成的可视化图形是动态的,以前我们生成的可视化图形都是静态不动的。 它是python中的非标准库ipyvizzu,因此使用pip的方式额外安装一下。 【阅读全文】 pip install ipyvizzu 1、小试牛刀 首先,导入绘图相关的库ipyvizzu,以及pandas用来做数据导入操作。 import pandas as pd fro…

    2023年4月2日
    00
  • 一个help函数解决了python的所有文档信息查看

    在python中的交互式命令行中提供了help函数来查询各个模块,或是公共函数,或是模块下的函数接口等都可以使用help函数来查看接口文档。 【阅读全文】 不过要查看这样的文档还是得有些英文功底的,包含函数、模块、变量的介绍都是通过英文来介绍的。 1、模块文档查看 打开控制台,这里使用的控制台工具是cmder,看起来比默认的cmd命令行好看的多。 比如说需要…

    2023年4月2日
    00
  • Python 读取PDF文件为文本字符并转换为音频

    【阅读全文】 设计思路:首先通过PyPDF2非标准库提供的接口函数将PDF文件中的文本提取出来,然后,再使用pyttsx3非标准库将文本转换为音频文件。 使用pip的方式安装两个非标准库PyPDF2、pyttsx3。 pip install PyPDF2 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip ins…

    2023年4月2日
    00
  • python如何实现网络测试,了解一下speedtest-cli…

    它是一款面向开发人员的互联网连接测量工具。Speedtest CLI 为命令行带来 Speedtest 背后的可信技术和全球服务器网络。 【阅读全文】 Speedtest CLI 专为软件开发人员、系统管理员和计算机爱好者等打造,是 Ookla® 提供技术支持的首款正式 Linux 本机 Speedtest 应用程序。 Speedtest CLI是使用pyt…

    2023年4月2日
    00
  • python实现excel数据与mysql数据库互通有无

    【阅读全文】 python在制作一些小工具上本身就有着得天独厚的优势,大多数非标准库的应用只需要进行简单的安装即可使用。 比如:使用python将excel中的数据导入到mysql数据库表中,或是将mysql数据库表中的数据直接导出为excel都只需要简单的几行代码就可以完成,假如使用Java来做这件事强那可就有些复杂了呢。 话不多说,接下来直接进入正题..…

    2023年4月2日
    00
  • python做一个微型美颜图片处理器,十行代码即可完成

    【阅读全文】 图片美颜处理的实现思路就是使用cv2非标准库对图片做双边过滤,使其达到美颜的效果。 将cv2非标准库导入到代码块中 import cv2 准备好需要美颜的图片,源图片是在百度上面找的用来做测试用。 读取准备好的原始图片 source = cv2.imread(“source.jpeg”) 对准备好的原始图片执行双边过滤 target = cv2…

    2023年4月2日
    00
  • python 如何在多层循环中使用break/continue

    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。 【阅读全文】 先通过一个简单的单层循环来了解一下这两个关键字的使用。 print(‘=============单层循环使用=============’) for n in range(10):…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部