最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)操作PPT動畫窗格并插入音頻文件

 更新時間:2023年10月24日 09:45:16   作者:初九之潛龍勿用  
這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)操作PPT動畫窗格并插入音頻文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

系統(tǒng)環(huán)境

在 Windows Server 2019 操作系統(tǒng)上安裝Office PowerPoint 2016或以上

安裝 .netFramework4.7.1以上

開發(fā)工具 VS2019 語言 C#

基礎配置

打開控制面板、管理工具、組件服務:

點擊組件服務、計算機、我的電腦、DCOM配置 

找到Microsoft PowerPoint應用程序

選擇屬性、打開標識選項卡、選擇下列用戶選項,設置啟動PPT應用的用戶,點確定即可。

設計想法

由用戶設計PPT及每頁的動畫效果,并以此為模板,與給定的一組音頻文件,通過程序控制進行二次合成,插入的依據(jù)則是根據(jù)提供的動畫標題進行搜索定位(標題可以模糊搜索)。這個設計想法可以參考文末補充內容

我們假設如下圖,要在兩組動畫效果中,執(zhí)行完成一個動畫效果后插入一段音頻講解詞,動畫效果的標題為:

(1)組合6:對應插入P5_01.MP3講解詞。

(1)組合30:對應插入P5_02.MP3講解詞。

那么設計原理,就是遍歷動畫窗格的動畫效果對象,記錄對象的持續(xù)時間和延遲時間,插入音頻后,則下一個動畫效果的延遲時間根據(jù)上一動畫效果對象的時間和音頻的時間累積進行計算,并更改動畫效果的開始條件,如下圖:

如圖,下一個動畫效果對象的延遲時間重新計算,是根據(jù)“組合6" 和 "P5_01" 的時間進行累積計算得到的,以此類推。 

關鍵代碼

組件庫引入

基礎代碼

//創(chuàng)建PPT應用程序            
    POWERPOINT.Application objApp = new POWERPOINT.Application();
    POWERPOINT.Presentation objPresSet = null;
 
// 不顯示彈出警告等,最小化窗口應用
    objApp.DisplayAlerts = POWERPOINT.PpAlertLevel.ppAlertsNone;
    objApp.WindowState = POWERPOINT.PpWindowState.ppWindowMinimized;
    
//打開文件,假設模板文件名為m1.pptx
    objPresSet = objApp.Presentations.Open("m1.pptx", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
 
//創(chuàng)建查找字典
    Dictionary<string, string> Medias = new Dictionary<string, string>();
    Medias.Add("組合6","P5_01.MP3");
    Medias.Add("組合30", "P5_02.MP3");

核心代碼

//遍歷所有的幻燈片對象            
for (int i = 1; i <= objPresSet.Slides.Count; i++)
{
    POWERPOINT.Slide slide = objPresSet.Slides[i];   //獲取當前幻燈片對象
    if (slide.TimeLine.MainSequence.Count == 0) continue;  //如果該頁沒有動畫效果則短路
    ...
}
//按提供的字典進行查找 
foreach (string[] pros in Medias)
{
    string f_likecaption = pros[0];  //要查找的動畫標題
    mediafile = pros[1];             //對應要添加的MP3文件地址
    POWERPOINT.Shape wave=null;      //初始化一個聲音變量,在PPT里也是一個Shape對象
    //遍歷該頁動畫效果
    for (int j = 1; j <= slide.TimeLine.MainSequence.Count; j++)
    {
      POWERPOINT.Effect effect = slide.TimeLine.MainSequence[j];
       //如果查找到動畫標題,則添加對應的聲音文件
      if (((effect.Shape.Name + ":" + effect.DisplayName).IndexOf(f_likecaption.Trim()) != -1
      {
         wave = slide.Shapes.AddMediaObject2(mediafile);  //添加聲音文件方法
         int  singleWaveLen = wave.MediaFormat.Length;    //記錄聲音的長度
         wave.Left = 60;                                  //shape對象的位置
         wave.AnimationSettings.Animate = Microsoft.Office.Core.MsoTriState.msoTrue; //設置該對象要成為動畫
         wave.AnimationSettings.PlaySettings.PlayOnEntry = Microsoft.Office.Core.MsoTriState.msoTrue; //設置為允許自動播放
         wave.AnimationSettings.PlaySettings.HideWhileNotPlaying = Microsoft.Office.Core.MsoTriState.msoTrue; //設置播放期間是隱藏狀態(tài)
         wave.AnimationSettings.AdvanceMode = POWERPOINT.PpAdvanceMode.ppAdvanceOnTime;//設置與上一動畫同時
         wave.AnimationSettings.AnimationOrder = slide.TimeLine.MainSequence.Count;
//shape對象的索引位置,默認為最后一個,這個要根據(jù)業(yè)務邏輯進行調整 
         break;
      }
     }//for
    ..............
}//foreach pros
//其它關鍵屬性 
POWERPOINT.Effect effect ;
effect.Timing.Duration  //返回或設置以秒為單位的動畫長度
float WaveLen = float.Parse((singleWaveLen / 1000.0).ToString()); //聲音長度需要換算成秒

這些代碼我們提供了一些操作PPT相關的關鍵方法、屬性,我們需要根據(jù)實際的業(yè)務情況進行修改,這里僅作參考。

知識補充

Craneoffice云PPT課件培訓視頻生成系統(tǒng)

本系統(tǒng)是Craneoffice.netFramework(基于.net開發(fā)的自研發(fā)框架)下的一個功能組件,它主要能夠實現(xiàn),在制作培訓課件的后期,生成培訓視頻素材,是一款強勁的輔助設計工具。

用PPT編寫培訓視頻課件制作的基本流程如下:

第一步,根據(jù)專業(yè)教材,編寫PPT、腳本及動畫指令文件

腳本及動畫指令是一個WORD文件,請按標準的模板進行編寫,如下圖:

動畫指令如下圖,一個正確的動畫指令描述,包括三個部分:

第一部分:動畫效果部分標題

第二部分:分隔符,分隔符必須是橫線加右箭頭

第三部分:“講解詞”“起首語”。

如果有多條指令描述,請用回車換行即可。

第二步,將編寫好的PPT和腳本文件,上傳到云系統(tǒng),得到語音文本素材包

第三步,使用您常用的語音合成工具,根據(jù)語音文本素材包,批量生成mp3聲音素材包

第四步,在云系統(tǒng)批量上傳mp3聲音素材,系統(tǒng)會為您生成最終版的PPT文件,下載后即可以生成視頻。

生成的基本原理及結果如下圖舉例,根據(jù)每頁的語音講解詞,并根據(jù)動畫指令的條數(shù)生成對應的語音條數(shù),并根據(jù)動畫時間軸進行計算和插入。

以上就是C#實現(xiàn)操作PPT動畫窗格并插入音頻文件的詳細內容,更多關于C#操作PPT的資料請關注腳本之家其它相關文章!

相關文章

  • c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法

    c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法

    這篇文章主要介紹了c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • 在.NET平臺使用C#為PDF添加各種類型的表單域的方法

    在.NET平臺使用C#為PDF添加各種類型的表單域的方法

    在日常辦公系統(tǒng)開發(fā)中,涉及 PDF 處理相關的開發(fā)時,生成可填寫的 PDF 表單是一種常見需求,與靜態(tài) PDF 不同,帶有**表單域的文檔支持用戶直接在 PDF 內部輸入、勾選、選擇等交互操作,本文將介紹如何使用 C# 為 PDF 添加各種類型的表單域,需要的朋友可以參考下
    2025-05-05
  • 淺談C# 中 const 與 readonly的核心區(qū)別

    淺談C# 中 const 與 readonly的核心區(qū)別

    在 C# 編程中,const?與?readonly?經常被統(tǒng)稱為“常量”,但二者在初始化規(guī)則、編譯/運行時行為、IL 生成方式、版本兼容性、引用類型語義等方面存在本質差異,下面就來詳細的介紹一下,感興趣的可以了解一下
    2026-05-05
  • C# 實現(xiàn)WebSocket服務端教程

    C# 實現(xiàn)WebSocket服務端教程

    這篇文章主要介紹了C# 實現(xiàn)WebSocket服務端教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • C#判斷指定文件是否是只讀的方法

    C#判斷指定文件是否是只讀的方法

    這篇文章主要介紹了C#判斷指定文件是否是只讀的方法,涉及C#中Attributes屬性的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#使用Ado.Net更新和添加數(shù)據(jù)到Excel表格的方法

    C#使用Ado.Net更新和添加數(shù)據(jù)到Excel表格的方法

    這篇文章主要介紹了C#使用Ado.Net更新和添加數(shù)據(jù)到Excel表格的方法,較為詳細的分析了OLEDB的原理與使用技巧,可實現(xiàn)較為方便的操作Excel數(shù)據(jù),需要的朋友可以參考下
    2015-04-04
  • C#事務處理(Execute Transaction)實例解析

    C#事務處理(Execute Transaction)實例解析

    這篇文章主要介紹了C#事務處理(Execute Transaction)實例解析,對于理解和學習事務處理有一定的幫助,需要的朋友可以參考下
    2014-08-08
  • 再議C#中的裝箱與拆箱的問題詳解

    再議C#中的裝箱與拆箱的問題詳解

    本篇文章再次介紹了C#中的裝箱與拆箱,這次們看下使用泛型和不使用泛型引發(fā)裝箱拆箱的情況
    2013-05-05
  • 基于WPF實現(xiàn)Message消息提醒控件

    基于WPF實現(xiàn)Message消息提醒控件

    這篇文章主要介紹了如何利用WPF實現(xiàn)Meesage消息提醒控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的可以參考一下
    2023-07-07
  • 基于C#實現(xiàn)的P2P視頻和聊天工具

    基于C#實現(xiàn)的P2P視頻和聊天工具

    該文章介紹了基于C#實現(xiàn)的P2P視頻和聊天工具,該工具使用UDP協(xié)議和OMCS音視頻框架,支持跨平臺(Windows/Linux)運行,文章詳細描述了項目架構、技術選型、核心代碼實現(xiàn)和關鍵功能實現(xiàn)說明,需要的朋友可以參考下
    2026-01-01

最新評論

奉节县| 新泰市| 普定县| 冕宁县| 和龙市| 高雄市| 桃园市| 兰溪市| 灵台县| 防城港市| 手游| 灵山县| 砚山县| 蕲春县| 呼图壁县| 姜堰市| 扬中市| 长岛县| 四平市| 陆良县| 鹤峰县| 屏东市| 阿荣旗| 阳新县| 宜川县| 淮阳县| 永州市| 马山县| 泰兴市| 余庆县| 和硕县| 城口县| 丰台区| 天全县| 沈阳市| 南汇区| 甘洛县| 宁远县| 旬阳县| 洛宁县| 闵行区|