Python实现PPT演示文稿中视频的添加、替换及提取

news2024/11/13 9:30:54

无论是在教室、会议室还是虚拟会议中,PowerPoint 演示文稿都已成为一种无处不在的工具,用于提供具有影响力的可视化内容。PowerPoint 提供了一系列增强演示的功能,在其中加入视频的功能可以大大提升整体体验。视频可以传达复杂的概念、演示产品功能或添加吸引观众的元素。然而,在 PowerPoint 演示文稿中手动管理视频既费时又繁琐。这时,Python 这种通用编程语言就能发挥作用,提供一种简化的方法来插入、替换或检索 PowerPoint 演示文稿中的视频。本文将介绍如何利用 Python 在 PowerPoint 中管理视频,包括插入视频到PPT、替换PPT中的视频以及提取PPT中的视频。

文章目录

    • 用Python添加视频到PPT中指定幻灯片的指定位置
    • 用Python替换PPT中指定视频为新的视频
    • 用Python提取PPT幻灯片中的视频
      • 总结

本文所介绍的方法需要用到Spire.Presentation for Python,可从官网下载或通过PyPI安装:pip install Spire.Presentation

用Python添加视频到PPT中指定幻灯片的指定位置

插入到PPT中的视频可以直接在PPT中播放,不需要额外的插件。且视频嵌入到PPT中,无需额外储存。以下是详细操作步骤:

  • 创建 Presentation 类的实例
  • 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 文档。
  • 通过 Presentation.Slides[] 方法根据索引获取特定幻灯片。
  • 创建 RectangleF 类的实例。
  • 使用 ISlide.Shapes.AppendVideoMedia(String, RectangleF) 方法为幻灯片添加视频。
  • 通过 IVideo.PictureFill.Picture.Url 属性为视频设置缩略图。
  • 使用 Presentation.SaveToFile() 方法保存结果文档。

代码示例:

from spire.presentation.common import *
import math
from spire.presentation import *

# 创建Presentation对象
presentation = Presentation()

# 载入演示文稿
presentation.LoadFromFile("Sample.pptx")

# 添加视频标题
rec_title = RectangleF.FromLTRB(50, 280, 160+50, 50+280)
shape_title = presentation.Slides[1].Shapes.AppendShape(
    ShapeType.Rectangle, rec_title)
shape_title.ShapeStyle.LineColor.Color = Color.get_Transparent()

shape_title.Fill.FillType = FillFormatType.none
para_title = TextParagraph()
para_title.Text = "视频:"
para_title.Alignment = TextAlignmentType.Center
para_title.TextRanges[0].LatinFont = TextFont("HarmonyOS Sans SC")
para_title.TextRanges[0].FontHeight = 32
para_title.TextRanges[0].IsBold = TriState.TTrue
para_title.TextRanges[0].Fill.FillType = FillFormatType.Solid
para_title.TextRanges[0].Fill.SolidColor.Color = Color.FromArgb(
    255, 68, 68, 68)
shape_title.TextFrame.Paragraphs.Append(para_title)

# 添加视频
left = math.trunc(presentation.SlideSize.Size.Width / float(2)) - 125
videoRect = RectangleF.FromLTRB(left, 300, 150+left, 150+240)
video = presentation.Slides[1].Shapes.AppendVideoMedia(
    "Cat1.mp4", videoRect)
video.PictureFill.Picture.Url = "https://i.postimg.cc/zfspqJKC/Cat1.png"

# Save the document
presentation.SaveToFile("output/添加视频.pptx", FileFormat.Pptx2010)
presentation.Dispose()

添加结果:
Python添加视频到PowerPoint演示文稿

用Python替换PPT中指定视频为新的视频

操作步骤如下:

  • 创建 Presentation 类的实例
  • 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 文档。
  • 通过 Presentation.Videos 属性获取文档中嵌入的视频。
  • 通过 Presentation.Slides[] 属性获取幻灯片。
  • 遍历幻灯片中的形状,并判断形状是否为 IVideo 实例。如果是,则进行替换操作。
  • 使用 VideoCollection.AppendByStream() 方法将视频数据嵌入到文档。
  • 通过 IVideo.EmbeddedVideoData 属性将视频数据设置为改视频形状的视频数据。
  • 通过 IVideo.PictureFill.Picture.Url 设置新的预览图。
  • 使用 Presentation.SaveToFile() 保存演示文稿。

代码示例:

from spire.presentation.common import *
from spire.presentation import *

# 创建Presentation对象
presentation = Presentation()

# 载入演示文稿
presentation.LoadFromFile("output/添加视频.pptx")

# 获取演示文稿中嵌入的视频
videos = presentation.Videos

# 获取视频所在幻灯片
sld = presentation.Slides[1]

# 遍历幻灯片中的形状
for sp in sld.Shapes:
    # 判断形状是否为IVideo实例
    if isinstance(sp, IVideo):
        video = sp if isinstance(sp, IVideo) else None
        # 载入视频
        stream = Stream("Cat2.mp4")
        # 将视频嵌入到演示文稿
        videoData = videos.AppendByStream(stream)
        # 将视频设置为形状的视频
        video.EmbeddedVideoData = videoData
        # 设置新预览图
        video.PictureFill.Picture.Url = "https://i.postimg.cc/kX1fGrbp/Cat2.png"

# 保存文档
presentation.SaveToFile("output/替换视频.pptx", FileFormat.Pptx2016)
presentation.Dispose()

替换结果:
Python替换PowerPoint演示文稿视频

用Python提取PPT幻灯片中的视频

通过此API可以轻松提取演示文稿中的所有视频,并保存到指定文件夹。以下是操作步骤:

  • 创建 Presentation 类的实例
  • 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 文档。
  • 遍历演示文稿中的幻灯片,再遍历幻灯片中的形状,并判断形状是否为视频。
  • 如果形状是视频,则使用 IVideo.EmbeddedVideoData.SaveToFile() 方法保存视频到指定位置。

代码示例:

from spire.presentation.common import *
from spire.presentation import *

# 创建Presentation对象
presentation = Presentation()

# 载入演示文稿
presentation.LoadFromFile("output/替换视频.pptx")

i = 0
result = "output/Videos/" + "ExtractVideo_"+str(i)+".mp4"

# 遍历演示文稿中的幻灯片
for slide in presentation.Slides:
    # 遍历幻灯片中的形状
    for shape in slide.Shapes:
        # 判断形状是否为视频
        if isinstance(shape, IVideo):
            # 保存视频
            shape.EmbeddedVideoData.SaveToFile(result)
            i += 1
presentation.Dispose()

提取效果:
Python提取PowerPoint演示文稿视频

总结

本文介绍了如何使用Python代码处理PowerPoint演示文稿中的视频,包括添加视频、替换视频和提取视频,帮助开发者以更简单的方式对演示文稿中的视频进行操作。

Spire.Presentation for Python还支持许多其他PowerPoint文档操作,请前往Spire.Presentation for Python教程查看。

申请免费License

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1480633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity后期

unity|后处理篇 前言一、Post-Processing 1、 Post-Processing的使用2、Post-Processing后处理效果 抗锯齿①、Ambient Occlusion 环境光遮蔽②、Auto Exposure 自动曝光③、Bloom 辉光/泛光④、Chromatic Aberration | 色差⑤、Color Grading 色调/颜色分级⑥、Depth Of Fiel…

每次提出一个bug都让测试重现,描述得那么清楚,自己操作下不会吗?

一说到测试和开发的关系,你一定会想到一个词“冤家”。 开发的工作就是按照PM的设计将产品最终造出来,而测试则是在开发已完成的工作里纠错。so,测试的工作会让开发很不爽,人之常情,谁都不喜欢自己的劳动成果被别人挑…

解析馆藏文物预防性保护:监测平台与数据传输系统概述

1)文物预防性保护监测平台概述 文物预防性保护监测与调控系统是文物环境监测必不可少的关键组成部分之一,在项目实施中,将充分利用前沿物联网技术,如无线网络、低功耗设计、高精度传感器来实现文物保存环境的实时监测与数据分析。此外,还将通…

uniapp 安装安卓、IOS模拟器并调试

一、安装Android模拟器并调试 1.下载并安装Android Studio。 2.创建简单project。 3.安装模拟器。 完成安卓模拟器的安装。 4.启动模拟器。 5.hbuilderx选择模拟器、运行。 点击刷新按钮后出现模拟器,勾选并运行。 6.调试。 在 HBuilderX 中,项目启…

GCN 翻译 - 1

ABSTRACT 我们提出了一种可扩展的在以图结构为基础的数据上的半监督学习,这种方法直接作用在图数据上,可以看做是卷积神经网络的变种。我们选择了图谱理论里面的一阶近似作为我们的卷积结构。我们的模型能够随着图的规模线性伸缩,并且隐藏层…

将镜像上传到私有镜像仓库Harbor

首先你需要安装Harbor服务: https://blog.csdn.net/qq_50247813/article/details/136388229 客户端已经安装docker: https://docs.docker.com/engine/install/centos/ 在docker客户端登录 Harbor 我的Harbor 服务器地址: 192.168.44.161 账号…

抖店无货源违规频发,不能入驻?这个是真的吗?

我是电商珠珠 还没有踏入抖店这个电商行业的新手,单从别人的口中,听说了抖店无货源特别容易违规,还会被扣除全部的保证金,得不偿失之类的话。有的还专门劝诫新手不要做抖店,做了就会亏本之类的话,这搞得人…

首个美国大学宣布与OpenAI建立合作伙伴关系!全美本科AI强校大盘点!

美国亚利桑那州立大学(Arizona State University )在其官网宣布与OpenAI建立合作伙伴关系,该校也由此成为第一家与OpenAI合作的高等教育机构。 这一合作将ChatGPT Enterprise的先进功能引入亚利桑那州立大学,使教职员工能够探索生…

【Java】UWB高精度工业定位系统项目源代码

目录 UWB技术原理 优势 1. 高精度: 2. 抗干扰能力强: 3. 定位范围广: 4. 实时性强: 应用前景 定位系统源码功能介绍 实时定位: 轨迹回放: 区域管理: 巡检管理: 数据可视化分析&…

YOLOv9改进|加入AKConv模块!

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、改进点介绍 AKConv是一种具有任意数量的参数和任意采样形状的可变卷积核,对不规则特征有更好的提取效果。 论文速览:&am…

《TCP/IP详解 卷一》第9章 广播和组播

目录 9.1 引言 9.2 广播 9.2.1 使用广播地址 9.2.2 发送广播数据报 9.3 组播 9.3.1 将组播IP地址转换为组播MAC地址 9.3.2 例子 9.3.3 发送组播数据报 9.3.4 接收组播数据报 9.3.5 主机地址过滤 9.4 IGMP协议和MLD协议 9.4.1 组成员的IGMP和MLD处理 9.4.2 组播路由…

uniapp微信小程序开发踩坑日记:修改组件默认样式

使用uniapp官方组件的时候,我们常常要修改组件的默认样式,但是网上的很多修改组件默认样式的方法都是不生效的(因为我都试过了) 下面给大家介绍vue构建的uniapp小程序中能够生效的修改组件默认样式的方法 1、在编译后的代码文件…

华为HCIP Datacom H12-821 卷3

1.单选题 四台路由器运行 IS-IS 且已经建立邻接关系,区域号和路由器的等级如图中标记,则 R4到达 10.0.2.2/32 的的 Cost 值为多少? A、40 B、10 C、20 D、30 正确答案: D 解析: 由于没有配置路由渗透,所以R4会选择…

potplayer安装

官网 解压运行即可

WinApp自动化测试之辅助工具介绍

前篇文章中,我们简单介绍了部分WinApp自动化测试脚本常规操作,今天我们来讲剩余的部分。 文件批量上传 文件批量上传和文件单个上传原理是相同的,单个上传直接传入文件路径即可,批量上传需要进入批量上传的文件所在目录&#xf…

高性能的key-value数据库Redis 介绍

Redis 是一个高性能的key-value数据库。 Redis是一个开源的键值存储系统,通常用于缓存和消息传递。它支持多种类型的数据结构,如字符串、列表、集合、散列表和有序集合等。Redis的特点是提供了高性能、灵活性和可伸缩性。 Redis的主要特点包括&#xff…

自动化测试摸索:python+selenium+pytest(持续更新.....)

一、环境搭建 1、python 安装 下载链接:Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时,找到该安装程序:python-3.12.2-amd64.exe文件,双击启动安装向导。 为了防止C:盘文件因系统故障或者无…

LeetCode 2265.统计值等于子树平均值的节点数

给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。 注意: n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。 root 的 子树 由 root 和它的所…

数据结构之二叉树的精讲

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

关键对话_

关键对话 https://www.bilibili.com/video/BV1Vh4y1E7sY 关键对话,是那些让你觉得很艰难,同时又非常重要的谈话 关键对话三个特征 1、对话双方的观点有很大差距, 比如说你和你父母观点差异很大,父母觉得到了一定年龄就该结婚啊…