
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:
- 打开 ffmpeg 官方下载页面,将鼠标移到 windows 图标上。
- 点击 windows builds from gyan.dev,也可以选择 windows builds by btbn。
- 在 release builds 部分下载 release essentials 版本,例如 ffmpeg-release-essentials.7z 或对应的 .zip 压缩包。
- 解压文件并找到其中的 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转视频的资料请关注代码网其它相关文章!
发表评论