在 PowerPoint 中創建視頻

從 PowerPoint 演示文稿派生的視頻在展示數據可視化和營銷產品方面非常有效。它還非常擅長向廣泛的受眾群體傳遞不同類型的信息。鑑於與標準演示文稿相比與真實視頻播放相關的好處,在許多情況下將 PPT 轉換為視頻是有意義的。

在C#中將PPT轉換為視頻

在本文中,我們打算帶您完成將PPT 轉換為MP4 的操作/mp4/) 以編程方式轉換任務。請參閱下面的 C# 中如何將 PPT 轉換為視頻。

將 PPT 轉換為視頻的 C# API

將 PPT 轉換為視頻

視頻由幀組成,因此 PowerPoint 到視頻的轉換過程需要您做兩件事:

  • 根據演示幻燈片生成一組幀。 Aspose.Slides for .NET 在這裡派上用場。要安裝 Aspose.Slides for .NET,請參閱 安裝

  • 根據生成的幀創建視頻。這就是 ffmpeg(和 .NET 的 ffmpeg 核心)的用武之地——在 此處 下載 ffmpeg。

信息:Aspose 提供免費的 PowerPoint 到視頻轉換器,可以將 PowerPoint 演示文稿轉換為視頻。您可能希望看到此轉換器,因為它是此處流程的實時實現。

在 C# 中將 PPT 轉換為視頻

  1. 通過“dotnet add package command”將 Aspose.Slides for .NET 和 FFMpegCore 添加到您的項目中:

    • 要為 .NET 添加 Aspose.Slides,請運行“dotnet add package Aspose.Slides.NET –version 22.11.0”
    • 要添加 FFMpegCore,請運行“dotnet add package FFMpegCore –version 4.8.0”
  2. 以這種方式指定您之前獲得的 ffmpeg 的路徑(例如,您將其提取到“C:\tools\ffmpeg”):GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" ,});

  3. 運行將 PowerPoint 轉換為視頻的代碼:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // Will use FFmpeg binaries we extracted to "c:\tools\ffmpeg" before
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())

{
    // 添加微笑形狀,然後對其進行動畫處理
    IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
    effectIn.Timing.Duration = 2f;
    effectOut.PresetClassType = EffectPresetClassType.Exit;

   const int Fps = 33;
   List<string> frames = new List<string>();

   using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, Fps))
    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };
        animationsGenerator.Run(presentation.Slides);
    }

    // 配置 ffmpeg 二進製文件文件夾。請參閱此頁面:https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // 將幀轉換為 webm 視頻
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

在視頻中應用效果和動畫

包含過渡和動畫的演示文稿通常比沒有這些效果的演示文稿更具吸引力和趣味性。同樣的原則也適用於視頻——簡單地快速連續滑動的視頻有時不會被剪掉。

Aspose.Slides 支持常見的過渡和動畫,因此您可以在視頻中應用和使用這些效果。假設我們繼續使用上一節中的代碼,我們可以通過這種方式進行另一張幻燈片和一個過渡:

// 添加微笑形狀並為其設置動畫

// ...

// 添加新的幻燈片和動畫過渡

ISlide newSlide = presentation.Slides.AddEmptySlide(presentation.Slides[0].LayoutSlide);

newSlide.Background.Type = BackgroundType.OwnBackground;

newSlide.Background.FillFormat.FillType = FillType.Solid;

newSlide.Background.FillFormat.SolidFillColor.Color = Color.Indigo;

newSlide.SlideShowTransition.Type = TransitionType.Push;

除了幻燈片動畫,Aspose.Slides 還允許您為文本添加動畫。這樣,您就可以為對像上的段落設置動畫,使它們一個接一個地出現(例如,將延遲設置為一秒):

using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    // 添加文本和動畫
    IAutoShape autoShape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
    Paragraph para1 = new Paragraph();
    para1.Portions.Add(new Portion("Aspose Slides for .NET"));
    Paragraph para2 = new Paragraph();
    para2.Portions.Add(new Portion("convert PowerPoint Presentation with text to video"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("paragraph by paragraph"));
    autoShape.TextFrame.Paragraphs.Add(para1);
    autoShape.TextFrame.Paragraphs.Add(para2);
    autoShape.TextFrame.Paragraphs.Add(para3);
    autoShape.TextFrame.Paragraphs.Add(new Paragraph());

    IEffect effect = presentation.Slides[0].Timeline.MainSequence.AddEffect(para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect2 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect3 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect4 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect.Timing.TriggerDelayTime = 1f;
    effect2.Timing.TriggerDelayTime = 1f;
    effect3.Timing.TriggerDelayTime = 1f;
    effect4.Timing.TriggerDelayTime = 1f;

    // 將幀轉換為視頻
    const int Fps = 33;
    List<string> frames = new List<string>();
    
    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))

    using (var player = new PresentationPlayer(animationsGenerator, Fps))

    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };
        animationsGenerator.Run(presentation.Slides);
    }
    // 配置 ffmpeg 二進製文件文件夾。請參閱此頁面:https://github.com/rosenbjerg/FFMpegCore#installation

    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // 將幀轉換為 webm 視頻
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

獲得免費許可證

想要不受限制地試用 Aspose.Slides 的功能?獲取免費臨時許可證

結論

至此,我們相信您現在知道如何將 PowerPoint PPT 轉換為簡單的視頻或具有動畫、過渡和其他效果的更複雜的視頻。

要了解有關 Aspose.Slides 功能 的更多信息,請參閱我們的文檔.如果您有任何問題,可以在我們的論壇 上發帖。

也可以看看