C#使用PPT組件的CreateVideo方法實(shí)現(xiàn)視頻生成
需求
我們?cè)谑褂肞owerPoint文檔時(shí),經(jīng)常會(huì)使用其導(dǎo)出功能以創(chuàng)建視頻,如下圖:

手工操作下,在制作好PPT文件后,點(diǎn)擊文件 -> 導(dǎo)出 -> 創(chuàng)建視頻 -> 設(shè)置導(dǎo)出選項(xiàng) -> 點(diǎn)擊創(chuàng)建視頻即可,下面我們介紹一下如何使用C#來(lái)實(shí)現(xiàn)這一需求。
實(shí)現(xiàn)
首先我們需要引用 Microsoft.Office.Interop.PowerPoint 程序集,具體的系統(tǒng)環(huán)境及基礎(chǔ)配置,請(qǐng)參照我的文章《C#操作PPT動(dòng)畫(huà)窗格并插入音頻文件的一些思路》。
Microsoft.Office.Interop.PowerPoint.Presentation對(duì)象提供了CreateVideo方法,該方法實(shí)現(xiàn)創(chuàng)建視頻功能。
CreateVideo方法
語(yǔ)法為:CreateVideo( FileName, UseTimingsAndNarrations, DefaultSlideDuration, VertResolution, FramesPerSecond, Quality )
參數(shù)介紹:
| 名稱 | 必需/可選 | 對(duì)應(yīng)C#類型 | 說(shuō)明 | 默認(rèn)值 |
|---|---|---|---|---|
| FileName | 必需 | string | 要?jiǎng)?chuàng)建的視頻文件的名稱 | |
| UseTimingsAndNarrations | 可選 | bool | 指示是否使用計(jì)時(shí)和旁白 | true |
| DefaultSlideDuration | 可選 | int | 觀看幻燈片的持續(xù)時(shí)間(單位:秒) | 5 |
| VertResolution | 可選 | int | 幻燈片的分辨率 | 720 |
| FramesPerSecond | 可選 | int | 每秒的幀數(shù) | 30 |
| Quality | 可選 | int | 幻燈片的質(zhì)量水平,最高100 | 85 |
關(guān)鍵代碼
POWERPOINT.Application objApp = null; //初始PPT應(yīng)用對(duì)象
POWERPOINT.Presentation objPresSet = null; //初始文稿對(duì)象
objApp = new POWERPOINT.Application(); //創(chuàng)建實(shí)例化PPT應(yīng)用
objApp.DisplayAlerts = POWERPOINT.PpAlertLevel.ppAlertsNone; //關(guān)閉一切提示
string pptfilename="c:\\test.pptx"; //要打開(kāi)的PPT文件名
//打開(kāi)文件,創(chuàng)建實(shí)例化PPT文稿對(duì)象
objPresSet = objApp.Presentations.Open(pptfilename, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
string MP4_FileName = "c:\\test.mp4"; //輸出的MP4文件名
bool UseTimingsAndNarrations = false; //指示是否使用計(jì)時(shí)和旁白
int DefaultSlideDuration = 5; //觀看幻燈片的持續(xù)時(shí)間(單位:秒)
int VertResolution = 720; //幻燈片的分辨率
int FramesPerSecond = 30; //每秒的幀數(shù)
int Quality = 100; //幻燈片的質(zhì)量水平,最高100
//創(chuàng)建視頻開(kāi)始
objPresSet.CreateVideo(MP4_FileName, UseTimingsAndNarrations, DefaultSlideDuration, VertResolution, FramesPerSecond, Quality);
//由于該方法是異步的,需要實(shí)時(shí)監(jiān)控生成進(jìn)度
while (objPresSet.CreateVideoStatus == POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusInProgress)
{
System.Threading.Thread.Sleep(1000); //間隔1秒監(jiān)控1次
}
//生成完畢,執(zhí)行其它操作...
......CreateVideoStatus
返回在當(dāng)前文稿對(duì)象中創(chuàng)建一個(gè)視頻的狀態(tài),只讀屬性。枚舉包括如下:
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusDone //完成 POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusFailed //失敗 POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusNone //空閑 POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusQueued //排隊(duì) POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusInProgress //執(zhí)行中
其它
如果在同一臺(tái)計(jì)算機(jī),即使打開(kāi)多個(gè)PPT應(yīng)用,每個(gè)應(yīng)用執(zhí)行不同的導(dǎo)出操作,也只有一個(gè)任務(wù)在執(zhí)行,其它的任務(wù)則處于排隊(duì)狀態(tài),而且如果顯式的打開(kāi)應(yīng)用,會(huì)在所有打開(kāi)的PPT應(yīng)用的底部狀態(tài)欄看到同一任務(wù)信息,即正在創(chuàng)建的視頻信息。
到此這篇關(guān)于C#使用PPT組件的CreateVideo方法實(shí)現(xiàn)視頻生成的文章就介紹到這了,更多相關(guān)C# CreateVideo生成視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DevExpress設(shè)置FocusedNode背景色的方法
這篇文章主要介紹了DevExpress設(shè)置FocusedNode背景色的方法,很實(shí)用的功能,需要的朋友可以參考下2014-08-08
C#12中的Collection expressions集合表達(dá)式語(yǔ)法糖詳解
C#12中引入了新的語(yǔ)法糖來(lái)創(chuàng)建常見(jiàn)的集合,并且可以使用..來(lái)解構(gòu)集合,將其內(nèi)聯(lián)到另一個(gè)集合中,下面就跟隨小編一起學(xué)習(xí)一下C#12中這些語(yǔ)法糖的使用吧2023-11-11
C#使用Spire.XLS for .NET將Excel轉(zhuǎn)換為SVG圖片
在C#開(kāi)發(fā)中,C# Excel轉(zhuǎn)換為SVG的需求日益增長(zhǎng),尤其Web應(yīng)用中Excel矢量預(yù)覽已成為痛點(diǎn)解決關(guān)鍵,本文客觀分享實(shí)現(xiàn)路徑與代碼,幫助C#開(kāi)發(fā)者快速集成,提升項(xiàng)目效率,需要的朋友可以參考下2026-03-03
winform中的ListBox和ComboBox綁定數(shù)據(jù)用法實(shí)例
這篇文章主要介紹了winform中的ListBox和ComboBox綁定數(shù)據(jù)用法,實(shí)例分析了將集合數(shù)據(jù)綁定到ListBox和ComboBox控件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
C# 如何獲取處于運(yùn)行中的Excel、Word對(duì)象
這篇文章主要介紹了C# 獲取處于運(yùn)行中的Excel、Word對(duì)象操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
深入理解C#中的享元模式(Flyweight Pattern)
享元模式通過(guò)共享對(duì)象減少內(nèi)存占用,區(qū)分內(nèi)蘊(yùn)與外部狀態(tài),適用于大量重復(fù)對(duì)象場(chǎng)景,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2025-05-05
c#禁止通過(guò)拖動(dòng),雙擊標(biāo)題欄改變窗體大小的方法
今天小編就為大家分享一篇c#禁止通過(guò)拖動(dòng),雙擊標(biāo)題欄改變窗體大小的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
C#封裝將函數(shù)封裝為接口dll的簡(jiǎn)單步驟指南
在C#中,封裝函數(shù)為接口并打包成DLL是實(shí)現(xiàn)代碼重用和模塊化的常見(jiàn)方法,此過(guò)程包括創(chuàng)建類庫(kù)項(xiàng)目、定義接口、實(shí)現(xiàn)接口、編譯項(xiàng)目生成DLL文件,這種方法適用于需要在多個(gè)項(xiàng)目間共享功能時(shí)使用,需要的朋友可以參考下2024-11-11

