使用Python实现将PowerPoint转换为视频

 更新时间:2026年09月15日 15:11:18   作者:SunnyDays1011  
PowerPoint 很适合用于现场演示或由演讲者控制播放,但在一些场景中,将演示文稿转换为视频会更方便,下面我们就来看看如何将 PowerPoint 演示文稿转换为 MP4 或 WMV 视频吧

PowerPoint 很适合用于现场演示或由演讲者控制播放,但在一些场景中,将演示文稿转换为视频会更方便。例如培训资料、产品演示、课程内容、数字标牌,或者需要上传到视频平台的演示内容,都更适合使用视频格式进行分发和播放。

在 Windows 上,一种常见做法是通过 COM API 自动化 Microsoft PowerPoint。不过,这种方式要求计算机上安装 PowerPoint,也不适用于无图形界面的 Linux 服务器、Docker 容器或云端环境。

本文将介绍如何使用 Python 以编程方式将 PowerPoint 演示文稿转换为 MP4 或 WMV 视频,而无需使用 COM 自动化。主要内容包括:

  • 前置准备
  • 使用 Python 将 PowerPoint 转换为 MP4
  • 使用 Python 将 PowerPoint 转换为 WMV
  • 自定义视频帧率和幻灯片播放时长
  • 使用 Python 将指定范围的幻灯片转换为视频
  • 支持的动画和幻灯片切换效果
  • PowerPoint 转视频的注意事项

前置准备

本文使用 Spire.Presentation for Python 处理和渲染 PowerPoint 演示文稿,无需安装 Microsoft PowerPoint。视频导出还需要使用 FFmpeg,将渲染后的幻灯片内容编码为最终的视频文件。

第 1 步:安装所需库

通过 pip 从 PyPI 安装:

pip install Spire.Presentation

注意:PowerPoint 转视频功能从 11.8.1 版本开始提供支持。

第 2 步:安装 FFmpeg 并找到 bin 目录

根据所使用的操作系统安装 FFmpeg,然后找到 ffmpeg 可执行文件所在的目录。后面的代码示例需要使用该目录。

Windows

  1. 打开 FFmpeg 官方下载页面,将鼠标移到 Windows 图标上。
  2. 点击 Windows builds from gyan.dev,也可以选择 Windows builds by BtbN。
  3. 在 release builds 部分下载 release essentials 版本,例如 ffmpeg-release-essentials.7z 或对应的 .zip 压缩包。
  4. 解压文件并找到其中的 bin 目录,例如:
    E:\software\ffmpeg-9.0.1-essentials_build\bin

Linux(Ubuntu/Debian):

更新软件包索引并安装 FFmpeg:

sudo apt update
sudo apt install ffmpeg

查看 FFmpeg 可执行文件的位置:

which ffmpeg

运行该命令通常会得到/usr/bin/ffmpeg,这种情况下,后续代码中使用的 FFmpeg 目录就是/usr/bin。

使用 Python 将 PowerPoint 转换为 MP4

对于大多数使用场景,MP4 是更通用的视频格式,它可以直接在现代浏览器、媒体播放器、在线学习平台和移动设备上播放。

转换过程比较简单:加载 PPTX 文件,通过 SaveToVideoOption 指定 FFmpeg 所在目录,然后以 MP4 格式保存演示文稿。

示例代码如下:

from spire.presentation import *

# 指定输入和输出文件
input_file = "Sample.pptx"
output_file = "PowerPointToVideo.mp4"

# 指定 FFmpeg 可执行文件所在目录
ffmpeg_dir = r"E:\software\ffmpeg-9.0.1-essentials_build\bin"

# 加载 PowerPoint 演示文稿
presentation = Presentation()
presentation.LoadFromFile(input_file)

# 配置视频导出所需的 FFmpeg
presentation.SaveToVideoOption = SaveToVideoOption(ffmpeg_dir)

# 将演示文稿转换为 MP4
presentation.SaveToFile(output_file, FileFormat.MP4)

# 释放资源
presentation.Dispose()

使用 Python 将 PowerPoint 转换为 WMV

如果视频需要用于较旧的 Windows 工作流,或者目标应用程序明确要求使用 Windows Media Video,也可以将 PowerPoint 转换为 WMV。

该转换的实现方式与 MP4 基本相同,主要区别是 SaveToFile() 方法中指定的输出格式不同。

from spire.presentation import *

# 指定输入和输出文件
input_file = "Sample.pptx"
output_file = "PowerPointToVideo.wmv"

# 指定 FFmpeg 可执行文件所在目录
ffmpeg_dir = r"E:\software\ffmpeg-9.0.1-essentials_build\bin"

# 加载 PowerPoint 演示文稿
presentation = Presentation()
presentation.LoadFromFile(input_file)

# 配置视频导出所需的 FFmpeg
presentation.SaveToVideoOption = SaveToVideoOption(ffmpeg_dir)

# 将演示文稿转换为 WMV
presentation.SaveToFile(output_file, FileFormat.WMV)

# 释放资源
presentation.Dispose()

自定义视频帧率和幻灯片播放时长

默认的视频导出设置并不一定适合所有演示文稿。例如,培训类演示可能需要让每页幻灯片停留更长时间,而包含动画的演示文稿则可能需要使用更高的帧率,以获得更流畅的播放效果。

通过 SaveToVideoOption,可以分别设置视频帧率以及每页幻灯片的显示时长。

from spire.presentation import *

# 指定输入和输出文件
input_file = "Sample.pptx"
output_file = "CustomizedVideo.mp4"

# 指定 FFmpeg 目录
ffmpeg_dir = r"E:\software\ffmpeg-9.0.1-essentials_build\bin"

# 加载 PowerPoint 演示文稿
presentation = Presentation()
presentation.LoadFromFile(input_file)

# 创建视频导出选项
video_options = SaveToVideoOption(ffmpeg_dir)

# 设置视频帧率
video_options.Fps = 40

# 设置每页幻灯片显示 8 秒
video_options.DurationForEachSlide = 8

# 应用视频设置
presentation.SaveToVideoOption = video_options

# 导出为 MP4
presentation.SaveToFile(output_file, FileFormat.MP4)

# 释放资源
presentation.Dispose()

其中,Fps 用于设置每秒生成的帧数,DurationForEachSlide 用于设置每页幻灯片在视频中的显示时长。提高帧率或延长幻灯片播放时间,也会增加视频生成所需的处理时间和资源。

注意:Fps 最大可设置为 60。DurationForEachSlide 每页最长可设置为 300 秒,即 5 分钟,以避免视频生成时间过长。

使用 Python 将指定范围的幻灯片转换为视频

有时并不需要将整个演示文稿都转换为视频。例如,一个较长的培训文稿中可能只有部分幻灯片需要单独导出。

这种情况下,可以将指定范围内的幻灯片复制到一个新的演示文稿中,再将新的演示文稿导出为视频。

下面的示例将第 3 到第 6 页幻灯片转换为 MP4:

from spire.presentation import *


def convert_slide_range_to_video(input_file: str, output_file: str, start_index: int, end_index: int):
    ppt = Presentation()
    new_ppt = None

    try:
        # 加载源演示文稿
        ppt.LoadFromFile(input_file)

        # 验证幻灯片范围
        if start_index < 0 or end_index >= ppt.Slides.Count or start_index > end_index:
            raise ValueError("指定的幻灯片范围无效。")

        # 创建新的演示文稿
        new_ppt = Presentation()

        # 删除默认创建的空白幻灯片
        new_ppt.Slides.RemoveAt(0)

        # 使用与源演示文稿相同的幻灯片尺寸
        new_ppt.SlideSize.Type = SlideSizeType.Custom
        new_ppt.SlideSize.Size = ppt.SlideSize.Size

        # 将指定范围的幻灯片复制到新演示文稿
        for i in range(start_index, end_index + 1):
            new_ppt.Slides.AppendBySlide(ppt.Slides[i])

        # 配置视频导出所需的 FFmpeg
        new_ppt.SaveToVideoOption = SaveToVideoOption(
            r"E:\software\ffmpeg-9.0.1-essentials_build\bin"
        )

        # 将选定的幻灯片导出为 MP4
        new_ppt.SaveToFile(output_file, FileFormat.MP4)

    finally:
        if new_ppt is not None:
            new_ppt.Dispose()
        ppt.Dispose()


# 将第 3 到第 6 页幻灯片转换为视频
convert_slide_range_to_video("Sample.pptx", "SelectedSlides.mp4", 2, 5)

这里,start_index 和 end_index 都从 0 开始计数,并且包含起始和结束位置。因此,传入 2 和 5 时,对应的就是第 3 到第 6 页幻灯片。

支持的动画和幻灯片切换效果

PowerPoint 转视频时,可以保留部分常见的幻灯片切换效果以及进入和退出动画,使导出的视频尽可能接近原演示文稿的播放效果。

效果类型支持的效果
幻灯片切换效果Fade、Push、Wipe(上、下、左、右)、Reveal、Cover、Split、Dissolve、Clockwise Clock
进入动画Fly In、Float In、Appear、Fade、Split、Wipe
退出动画Fly Out、Float Out、Disappear、Fade、Split、Wipe

并非所有 PowerPoint 效果都受支持。对于较复杂的切换效果或动画组合,最终视频中的呈现效果可能与 Microsoft PowerPoint 中的原始播放效果存在差异。如果演示文稿大量使用动画,建议在导出后检查实际播放效果。

PowerPoint 转视频的注意事项

1.首先检查 FFmpeg 路径

SaveToVideoOption 需要传入 FFmpeg 可执行文件所在的目录。如果路径错误或当前程序无法访问该目录,视频将无法正常编码。较旧的 FFmpeg 版本也可能影响某些幻灯片切换效果。

2.确保所需字体已经安装

如果执行转换的计算机没有安装演示文稿中使用的字体,导出结果中的文字外观、换行或版式可能与原始幻灯片不同。

3.预留足够的处理时间和磁盘空间

更高的帧率、更长的幻灯片播放时长以及较大的演示文稿都会生成更多中间帧,因此转换过程中需要更多处理时间和临时存储空间。

总结

使用 Python 可以在不安装 Microsoft PowerPoint 的情况下,将 PowerPoint 演示文稿转换为 MP4 或 WMV 视频,并根据实际需要调整视频帧率、幻灯片播放时长以及需要导出的幻灯片范围。

对于包含复杂动画、切换效果或特殊字体的演示文稿,在进行批量转换之前,建议先检查少量文件的导出结果,确认最终视频的播放效果符合预期。

以上就是使用Python实现将PowerPoint转换为视频的详细内容,更多关于Python PowerPoint转视频的资料请关注脚本之家其它相关文章!

相关文章

  • Python提取PDF中的图片的实现示例

    Python提取PDF中的图片的实现示例

    本文主要介绍了Python提取PDF中的图片的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python判断字符串是否包含特定子串的7种方法

    Python判断字符串是否包含特定子串的7种方法

    我们经常会遇这样一个需求,判断字符串中是否包含某个关键词,也就是特定的子字符串,本文主要给大家分享了 7 种可以达到此效果的方法,大家可以根据需要进行选择
    2025-12-12
  • Python使用PIL库实现图像圆形裁剪

    Python使用PIL库实现图像圆形裁剪

    本文将详细介绍如何使用Python的Pillow库(PIL)实现一个实用的图像处理任务——将图片裁剪为圆形,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • Windows下实现pytorch环境搭建

    Windows下实现pytorch环境搭建

    这篇文章主要介绍了Windows下实现pytorch环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解opencv去除背景算法的方法比较

    详解opencv去除背景算法的方法比较

    本文主要介绍了opencv去除背景算法的方法比较,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 简单的Python2.7编程初学经验总结

    简单的Python2.7编程初学经验总结

    这篇文章主要是作者写给Python2.7编程初学者的经验总结,侧重于包管理、代码调试等实际使用方面,需要的朋友可以参考下
    2015-04-04
  • 详解如何用python实现一个简单下载器的服务端和客户端

    详解如何用python实现一个简单下载器的服务端和客户端

    这篇文章主要介绍了详解如何用python实现一个简单下载器的服务端和客户端,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python selenium 实例之通过 selenium 查询禅道是否有任务或者BUG

    Python selenium 实例之通过 selenium 查询禅道是否有任务或者BUG

    这篇文章主要介绍了Python selenium 实例之通过 selenium 查询禅道是否有任务或者BUG的相关资料,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • python中文件的创建与写入实战代码

    python中文件的创建与写入实战代码

    这篇文章主要给大家介绍了关于python中文件的创建与写入的相关资料,在Python中文件写入提供了不同的模式和方法来满足不同的需求,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • python中selenium操作下拉滚动条的几种方法汇总

    python中selenium操作下拉滚动条的几种方法汇总

    这篇文章主要介绍了python中selenium操作下拉滚动条的几种方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论