C#使用PPT组件的CreateVideo方法生成视频

目录

需求

实现

CreateVideo方法

关键代码

CreateVideoStatus

其它


需求

我们在使用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

关键代码

cs 复制代码
            
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方法生成视频的介绍,感谢您的阅读,欢迎大家批评指正。

相关推荐
AI玫瑰助手5 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
油炸自行车5 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
周杰伦fans5 小时前
C# 踩坑 CS8370:Switch Expression 在 C# 7.3 不可用及三种解决方案
c#
肩上风骋5 小时前
C++14特性
开发语言·c++·c++14特性
JAVA社区6 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
弥树子6 小时前
踩坑记录:服务器内网调用接口,真实请求URL与官方公开URL不一致问题排查
开发语言·php
z落落7 小时前
C# ToCharArray + foreach遍历 + String与StringBuilder
开发语言·c#
学代码的真由酱7 小时前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
人道领域7 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
xiaoshuaishuai88 小时前
C# AvaloniaUI动态显示图片
开发语言·c#