Python實現PPT演示文稿中視頻的添加、替換及提取

無論是在教室、會議室還是虛擬會議中,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.pswp.cn/news/711916.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711916.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711916.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArkTS中的路由跳轉和HTTP數據請求

路由跳轉 步驟1:找到箭頭所指的文件,在其中添加已創建的頁面 步驟2:導包 步驟3: HTTP數據請求 步驟1:導包 > import http from ohos.net.http; 步驟2:(如果需要在頁面加載前請求&#xf…

TcpServer服務器管理模塊(模塊十)

目錄 類功能 類定義 類實現 編譯測試 server.cc gdb測試斷點 忽略SIGPIPE信號 類功能 類定義 // TcpServer服務器管理模塊(即全部模塊的整合) class TcpServer { private:uint64_t _next_id; // 這是一個自動增長的連接IDint _port;i…

Linux學習-C語言-運算符

目錄 算術運算符: - * /:不能除0 %:不能對浮點數操作 :自增與運算符 i:先用再加 i:先加再用 --:自減運算符 常量,表達式不可以,--,變量可以 賦值運算符 三目運算符 逗號表達式 size…

alpine創建lnmp環境alpine安裝nginx+php5.6+mysql

前言 制作lnmp環境,你可以在alpine基礎鏡像中安裝相關的服務,也可以直接使用Dockerfile創建自己需要的環境鏡像。 注意:提前確認自己的alpine版本,本次創建基于alpine3.6進行創建,官方在一些版本中刪除了php5 1、拉取…

JS正則02——js正則表達式中常用的方法、常見修飾符的使用詳解以及各種方法使用情況示例

JS正則02——js正則表達式中常用的方法、常見修飾符的使用詳解以及各種方法使用情況示例 1. 前言1.1 簡介1.2 js正則特殊字符即使用示例 2. 創建正則表達式的方式2.1 兩種創建正則表達式的方式2.2 關于修飾符 3. 正則表達式中常用的方法3.1 test() 方法——正則表達式對象的方法…

Vue之監測數據的原理(對象)

大家有沒有想過,為什么vue可以監測到數據發生改變?其實底層借助了Object.defineProperty,底層有一個Observer的構造函數 讓我為大家簡單的介紹一下吧! 我用對象為大家演示一下 const vm new Vue({el: "#app",data: {ob…

Python列表操作函數

在Python中,列表(list)是一種可變的數據類型,它包含一系列有序的元素。Python提供了一系列內置的函數和方法來操作列表。以下是一些常用的Python列表操作函數和方法: 列表方法 append(x) 將元素x添加到列表的末尾。 …

文獻速遞:帕金森的疾病分享--多模態機器學習預測帕金森病

文獻速遞:帕金森的疾病分享–多模態機器學習預測帕金森病 Title 題目 Multi-modality machine learning predicting Parkinson’s disease 多模態機器學習預測帕金森病 01 文獻速遞介紹 對于漸進性神經退行性疾病,早期和準確的診斷是有效開發和使…

Linux按鍵輸入實驗-對按鍵驅動進行測試

一. 簡介 前面學習在設備樹文件中創建按鍵的設備節點,并實現對按鍵驅動代碼的編寫,文章地址如下:Linux按鍵輸入實驗-創建按鍵的設備節點-CSDN博客Linux按鍵輸入實驗-按鍵的字符設備驅動代碼框架-CSDN博客Linux按鍵輸入實驗-按鍵的GPIO初始化-CSDN博客 本文對所實現的按鍵驅…

【精品】集合list去重

示例一&#xff1a;對于簡單類型&#xff0c;比如String public static void main(String[] args) {List<String> list new ArrayList< >();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add(…

網絡工程師必備的網絡端口大全(建議收藏)

端口是一種數字標識&#xff0c;用于在計算機網絡中進行通信&#xff0c;你完全可以把端口簡單的理解為是計算機和外界通訊交流的出口。但在網絡技術中&#xff0c;端口一般有兩種含義&#xff1a; &#xff08;1&#xff09;硬件設備中的端口 如交換機、路由器中用于鏈接其他…

用stream流將list轉為map

用stream流將list轉為map 1、將list轉為Map<Long, List> 按照spaceId分組&#xff0c;spaceId相同的為一組數據&#xff1a; List<BasEvaluationPriceResultDto> list new ArrayList(); Map<Long, List<BasEvaluationPriceResultDto>> priceResult…

“金三銀四”招聘季,大廠爭招鴻蒙人才

在金三銀四的招聘季中&#xff0c;各大知名互聯網企業紛紛加入了對鴻蒙人才的爭奪戰。近日&#xff0c;包括淘寶、京東、得物等在內的知名APP均宣布啟動鴻蒙星河版原生應用開發計劃。這一舉措不僅彰顯了鴻蒙生態系統的迅猛發展&#xff0c;還催生了人才市場的繁榮景象。據數據顯…

遙感影像處理(ENVI+ChatGPT+python+ GEE)處理高光譜及多光譜遙感數據

遙感技術主要通過衛星和飛機從遠處觀察和測量我們的環境&#xff0c;是理解和監測地球物理、化學和生物系統的基石。ChatGPT是由OpenAI開發的最先進的語言模型&#xff0c;在理解和生成人類語言方面表現出了非凡的能力。本文重點介紹ChatGPT在遙感中的應用&#xff0c;人工智能…

vue3學習 【4】ref和reactive的使用并于ts結合

使用ref聲明一個響應式對象并使用 <script lang"ts" setup> import { ref } from vue; const message ref("HelloWorld") message.value"被修改了啊~~" </script> <template>{{ message }} </template>ref() 接收參數…

Vue——攜帶參數跳轉路由

Vue學習之——跳轉路由 前情回顧 當我們進行點擊修改時&#xff0c;會進行跳轉到修改頁面&#xff0c;為了完成回顯數據&#xff08;根據對應id查找&#xff09;&#xff0c;我們需要攜帶對應選擇中的id跳轉到修改頁面&#xff0c;讓其進行查找回顯 學習useRoute和useRoute…

webstorm2023.3.4安裝與破解

WebStorm安裝步驟 打開JetBrains官方網站&#xff08;https://www.jetbrains.com/webstorm/&#xff09; 運行.exe 選擇安裝路徑 第一個意思是是否創建桌面快捷方式&#xff0c;可根據需要選擇&#xff1b;第二個.js .css .html勾選后之后js css html文件默認會用webstor…

AI Agent

目錄 一、什么是Agent 二、什么是MetaGPT【多智能體框架介紹】 三、MetaGPT的背景 一、什么是Agent 智能體 LLM觀察思考行動記憶 Agent&#xff08;智能體&#xff09; 一個設置了一些目標或任務&#xff0c;可以迭代運行的大型語言模型。這與大型語言模型&#xff08;LLM&am…

985機械研一轉碼,java還是c++?

985機械研一轉碼&#xff0c;java還是c&#xff1f; 在開始前我分享下我的經歷&#xff0c;我剛入行時遇到一個好公司和師父&#xff0c;給了我機會&#xff0c;一年時間從3k薪資漲到18k的&#xff0c; 我師父給了一些 電氣工程師學習方法和資料&#xff0c;讓我不斷提升自己&…

一鍵下載電路(for STM32 and mcuisp)

一鍵下載電路 1. STM32 一鍵下載電路2. 燒錄軟件&#xff1a;mcuisp和FlyMcu下載3. 遇到問題 1. STM32 一鍵下載電路 博文連接 2. 燒錄軟件&#xff1a;mcuisp和FlyMcu下載 mcuisp和FlyMcu下載 3. 遇到問題 按如上博文電路設計&#xff0c;上電發現程序沒有進入 main() 函…