需求
我们在使用PowerPoint文档时,经常会使用其导出功能以创建视频,如下图:
手工操作下,在制作好PPT文件后,点击文件 -> 导出 -> 创建视频 -> 设置导出选项 -> 点击创建视频即可,下面我们介绍一下如何使用C#来实现这一需求。
实现
首先我们需要引用 Microsoft.Office.Interop.PowerPoint 程序集,具体的系统环境及基础配置,请参照我的文章《C#操作PPT动画窗格并插入音频文件的一些思路》。
Microsoft.Office.Interop.PowerPoint.Presentation对象提供了CreateVideo方法,该方法实现创建视频功能。
CreateVideo方法
语法为:CreateVideo( FileName, UseTimingsAndNarrations, DefaultSlideDuration, VertResolution, FramesPerSecond, Quality )
参数介绍:
名称 | 必需/可选 | 对应C#类型 | 说明 | 默认值 |
FileName | 必需 | string | 要创建的视频文件的名称 | |
UseTimingsAndNarrations | 可选 | bool | 指示是否使用计时和旁白 | true |
DefaultSlideDuration | 可选 | int | 观看幻灯片的持续时间(单位:秒) | 5 |
VertResolution | 可选 | int | 幻灯片的分辨率 | 720 |
FramesPerSecond | 可选 | int | 每秒的帧数 | 30 |
Quality | 可选 | int | 幻灯片的质量水平,最高100 | 85 |
关键代码
POWERPOINT.Application objApp = null; //初始PPT应用对象 POWERPOINT.Presentation objPresSet = null; //初始文稿对象 objApp = new POWERPOINT.Application(); //创建实例化PPT应用 objApp.DisplayAlerts = POWERPOINT.PpAlertLevel.ppAlertsNone; //关闭一切提示 string pptfilename="c:\\test.pptx"; //要打开的PPT文件名 //打开文件,创建实例化PPT文稿对象 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; //指示是否使用计时和旁白 int DefaultSlideDuration = 5; //观看幻灯片的持续时间(单位:秒) int VertResolution = 720; //幻灯片的分辨率 int FramesPerSecond = 30; //每秒的帧数 int Quality = 100; //幻灯片的质量水平,最高100 //创建视频开始 objPresSet.CreateVideo(MP4_FileName, UseTimingsAndNarrations, DefaultSlideDuration, VertResolution, FramesPerSecond, Quality); //由于该方法是异步的,需要实时监控生成进度 while (objPresSet.CreateVideoStatus == POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusInProgress) { System.Threading.Thread.Sleep(1000); //间隔1秒监控1次 } //生成完毕,执行其它操作... ......
CreateVideoStatus
返回在当前文稿对象中创建一个视频的状态,只读属性。枚举包括如下:
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusDone //完成
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusFailed //失败
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusNone //空闲
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusQueued //排队
POWERPOINT.PpMediaTaskStatus.ppMediaTaskStatusInProgress //执行中
其它
如果在同一台计算机,即使打开多个PPT应用,每个应用执行不同的导出操作,也只有一个任务在执行,其它的任务则处于排队状态,而且如果显式的打开应用,会在所有打开的PPT应用的底部状态栏看到同一任务信息,即正在创建的视频信息。
以上是C#使用PPT组件的CreateVideo方法生成视频的介绍,感谢您的阅读,欢迎大家批评指正。