在 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 功能 的更多信息,请参阅我们的文档.如果您有任何问题,可以在我们的论坛 上发帖。

也可以看看