使用Python和`moviepy`库从输入的图片、动图和音频生成幻灯片式视频的示例代码

news/2025/2/8 18:23:55 标签: python, 音视频, java

下面是一个使用Python和moviepy库从输入的图片、动图和音频生成幻灯片式视频的示例代码。在这个示例中,我们将依次展示每张图片或动图,同时播放音频。

python">from moviepy.editor import ImageClip, VideoFileClip, AudioFileClip, concatenate_videoclips

def create_slideshow_video(image_paths, audio_path, output_path, duration_per_image=5):
    """
    从输入的图片、动图和音频生成幻灯片式的视频。

    :param image_paths: 图片和动图的文件路径列表
    :param audio_path: 音频文件的路径
    :param output_path: 输出视频的路径
    :param duration_per_image: 每张静态图片显示的时长(秒),默认为5秒
    """
    clips = []

    for image_path in image_paths:
        try:
            # 尝试将文件作为动图处理
            clip = VideoFileClip(image_path)
        except:
            # 如果不是动图,将其作为静态图片处理
            clip = ImageClip(image_path).set_duration(duration_per_image)

        clips.append(clip)

    # 拼接所有的视频片段
    final_clip = concatenate_videoclips(clips, method="compose")

    # 加载音频文件
    audio = AudioFileClip(audio_path)

    # 将音频添加到视频中
    final_clip = final_clip.set_audio(audio)

    # 保存最终的视频
    final_clip.write_videofile(output_path, fps=24)

    # 关闭所有的剪辑对象
    for clip in clips:
        clip.close()
    final_clip.close()
    audio.close()

if __name__ == "__main__":
    # 图片和动图的文件路径列表
    image_paths = ["image1.jpg", "image2.gif", "image3.jpg"]
    # 音频文件的路径
    audio_path = "audio.mp3"
    # 输出视频的路径
    output_path = "output_video.mp4"

    create_slideshow_video(image_paths, audio_path, output_path)

代码说明:

  1. 导入必要的库:从moviepy.editor导入所需的类,包括ImageClip用于处理静态图片,VideoFileClip用于处理动图和视频,AudioFileClip用于处理音频,concatenate_videoclips用于拼接视频片段。
  2. 定义create_slideshow_video函数:该函数接受图片和动图的文件路径列表、音频文件的路径、输出视频的路径以及每张静态图片显示的时长作为参数。
  3. 处理图片和动图:遍历图片和动图的文件路径列表,尝试将每个文件作为动图处理。如果失败,则将其作为静态图片处理,并设置显示时长。
  4. 拼接视频片段:使用concatenate_videoclips函数将所有的视频片段拼接成一个最终的视频。
  5. 添加音频:加载音频文件,并将其添加到最终的视频中。
  6. 保存视频:使用write_videofile方法将最终的视频保存到指定的输出路径。
  7. 关闭剪辑对象:关闭所有的剪辑对象,释放资源。

使用方法:

image_paths列表中的文件路径替换为你实际的图片和动图文件路径,将audio_path替换为你实际的音频文件路径,将output_path替换为你想要保存的输出视频的路径,然后运行代码即可生成幻灯片式的视频。


http://www.niftyadmin.cn/n/5845196.html

相关文章

【redis】缓存设计规范

本文是 Redis 键值设计的 14 个核心规范与最佳实践,按重要程度分层说明: 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析: 是否需要排序?: zset(有序集合)用…

【B站保姆级视频教程:Jetson配置YOLOv11环境(八)TensorRT模型导出】

Jetson配置YOLOv11环境(8)TensorRT模型导出 文章目录 1. Conda 虚拟环境配置TensorRT2. onnx, onnxslim, onnxruntime-gpu安装2.1 简介2.2 onnx,onnxslim安装2.3 onnxruntime-gpu安装 3. TensorRT格式导出&推理验证3.1 模型导出为TensorR…

启明星辰发布MAF大模型应用防火墙产品,提升DeepSeek类企业用户安全

2月7日,启明星辰面向DeepSeek等企业级大模型业务服务者提供的安全防护产品——天清MAF(Model Application Firewall)大模型应用防火墙产品正式发布。 一个新赛道将被开启…… DeepSeek的低成本引爆赛道规模 随着DeepSeek成为当前最热的现象级…

解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-downloads.py

downloads.py ultralytics\utils\downloads.py 目录 downloads.py 1.所需的库和模块 2.def is_url(url, checkFalse): 3.def delete_dsstore(path, files_to_delete(".DS_Store", "__MACOSX")): 4.def zip_directory(directory, compressTrue, ex…

解决错误:CondaHTTPError: HTTP 000 CONNECTION FAILED for url

解决错误:CondaHTTPError: HTTP 000 CONNECTION FAILED for url 查看channels:vim ~/.condarcshow_channel_urls: true channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/…

cmd执行mysql命令

安装mysql之后如果想使用cmd执行mysql命令,需要怎么操作呢,下面一起看一下。 安装mysql之后,如果直接去cmd窗口执行MySQL命令,窗口可能会提示mysql不是可执行命令。 需要配置系统的环境变量,将mysql的安装路径配置系…

【React】实现TagInput输入框,可以输入多个邮箱并校验是否合法

背景 需要实现一个类似Select组件的tags模式的输入框,输入一个邮箱后,回车,会显示成tag样式,也可以删除每一个tag。 实现 技术栈:react-tag-input-component Antd 目前Antd没有提供现成的组件,可以使用r…