PowerPoint in Video umwandeln

Durch die Umwandlung Ihrer PowerPoint-Präsentation in ein Video erhalten Sie

  • Erhöhte Zugänglichkeit: Alle Geräte (unabhängig von der Plattform) sind standardmäßig mit Videoplayern ausgestattet, im Gegensatz zu Anwendungen zum Öffnen von Präsentationen, sodass Benutzer es einfacher finden, Videos zu öffnen oder abzuspielen.
  • Mehr Reichweite: Durch Videos können Sie ein großes Publikum erreichen und mit Informationen ansprechen, die ansonsten in einer Präsentation langweilig erscheinen könnten. Die meisten Umfragen und Statistiken legen nahe, dass Menschen Videos häufiger ansehen und konsumieren als andere Formen von Inhalten, und sie bevorzugen im Allgemeinen solche Inhalte.

PowerPoint in Video Umwandlung in Aspose.Slides

In Aspose.Slides 22.11 haben wir die Unterstützung für die Umwandlung von Präsentationen in Videos implementiert.

  • Verwenden Sie Aspose.Slides, um eine Reihe von Frames (von den Präsentationsfolien) zu generieren, die einer bestimmten FPS (Frames pro Sekunde) entsprechen.
  • Verwenden Sie ein Drittanbieter-Tool wie FFMpegCore (ffmpeg), um ein Video basierend auf den Frames zu erstellen.

PowerPoint in Video umwandeln

  1. Verwenden Sie den Befehl dotnet add package, um Aspose.Slides und die FFMpegCore-Bibliothek zu Ihrem Projekt hinzuzufügen:
    • führen Sie dotnet add package Aspose.Slides.NET --version 22.11.0 aus
    • führen Sie dotnet add package FFMpegCore --version 4.8.0 aus
  2. Laden Sie ffmpeg hier herunter.
  3. FFMpegCore erfordert, dass Sie den Pfad zum heruntergeladenen ffmpeg angeben (z.B. entpackt unter “C:\tools\ffmpeg”): GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
  4. Führen Sie den Code zur Umwandlung von PowerPoint in Video aus.

Dieser C#-Code zeigt Ihnen, wie Sie eine Präsentation (die eine Figur und zwei Animationseffekte enthält) in ein Video umwandeln:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // Verwendet die FFmpeg-Binärdateien, die wir vorher in "c:\tools\ffmpeg" entpackt haben
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())

{
    // Fügt eine Smiley-Form hinzu und animiert sie
    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);
    }

    // Konfigurieren Sie den Ordner für die ffmpeg-Binärdateien. Siehe diese Seite: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Konvertiert Frames in ein Webm-Video
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

Videoeffekte

Sie können Animationen auf Objekte auf Folien anwenden und Übergänge zwischen Folien verwenden.

Animationen und Übergänge machen Diashows ansprechender und interessanter – und sie tun dasselbe für Videos. Lassen Sie uns eine weitere Folie und einen Übergang in den Code der vorherigen Präsentation hinzufügen:

// Fügt eine Smiley-Form hinzu und animiert sie

// ...

// Fügt eine neue Folie und einen animierten Übergang hinzu

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 unterstützt auch Animationen für Texte. Wir animieren also Absätze auf Objekten, die nacheinander erscheinen (mit einer Verzögerung von einer Sekunde):

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

using (Presentation presentation = new Presentation())
{
    // Fügt Text und Animationen hinzu
    IAutoShape autoShape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
    Paragraph para1 = new Paragraph();
    para1.Portions.Add(new Portion("Aspose Slides für .NET"));
    Paragraph para2 = new Paragraph();
    para2.Portions.Add(new Portion("PowerPoint-Präsentation mit Text in Video umwandeln"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("Absatz für Absatz"));
    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;

    // Konvertiert Frames in Video
    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);
    }
    // Konfigurieren Sie den Ordner für die ffmpeg-Binärdateien. Siehe diese Seite: https://github.com/rosenbjerg/FFMpegCore#installation

    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Konvertiert Frames in ein Webm-Video
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

Video-Konvertierungsklassen

Um Ihnen die Durchführung von PowerPoint-zu-Video-Umwandlungsaufgaben zu ermöglichen, bietet Aspose.Slides die Klassen PresentationAnimationsGenerator und PresentationPlayer an.

PresentationAnimationsGenerator ermöglicht es Ihnen, die Frame-Größe für das Video (das später erstellt wird) über seinen Konstruktor festzulegen. Wenn Sie eine Instanz der Präsentation übergeben, wird Presentation.SlideSize verwendet, und es wird Animationen generiert, die von PresentationPlayer verwendet werden.

Wenn Animationen generiert werden, wird ein Ereignis NewAnimation für jede nachfolgende Animation ausgelöst, das den Parameter IPresentationAnimationPlayer hat. Letzteres ist eine Klasse, die einen Player für eine separate Animation darstellt.

Um mit IPresentationAnimationPlayer zu arbeiten, werden die Eigenschaften Duration (die Gesamtdauer der Animation) und die Methode SetTimePosition verwendet. Jede Animationsposition wird im Bereich 0 bis Dauer festgelegt, und die Methode GetFrame gibt dann ein Bitmap zurück, das dem Animationszustand zu diesem Zeitpunkt entspricht.

using (Presentation presentation = new Presentation())
{
    // Fügt eine Smiley-Form hinzu und animiert sie
    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;

    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    {
        animationsGenerator.NewAnimation += animationPlayer =>
        {
            Console.WriteLine($"Gesamte Animationsdauer: {animationPlayer.Duration}");
            
            animationPlayer.SetTimePosition(0); // Ursprünglicher Animationszustand
            Bitmap bitmap = animationPlayer.GetFrame(); // Bitmap des ursprünglichen Animationszustands

            animationPlayer.SetTimePosition(animationPlayer.Duration); // Endzustand der Animation
            Bitmap lastBitmap = animationPlayer.GetFrame(); // Letzter Frame der Animation
            lastBitmap.Save("last.png");
        };
    }
}

Um alle Animationen in einer Präsentation gleichzeitig abzuspielen, wird die Klasse PresentationPlayer verwendet. Diese Klasse nimmt eine Instanz von PresentationAnimationsGenerator und die FPS für Effekte in ihrem Konstruktor und ruft dann das Ereignis FrameTick für alle Animationen auf, um sie abzuspielen:

using (Presentation presentation = new Presentation("animated.pptx"))
{
    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, 33))
    {
        player.FrameTick += (sender, args) =>
        {
            args.GetFrame().Save($"frame_{sender.FrameIndex}.png");
        };
        animationsGenerator.Run(presentation.Slides);
    }
}

Dann können die generierten Frames kompiliert werden, um ein Video zu produzieren. Siehe den Abschnitt PowerPoint in Video umwandeln.

Unterstützte Animationen und Effekte

Eingänge:

Animationstyp Aspose.Slides PowerPoint
Erscheinen nicht unterstützt unterstützt
Ausblenden unterstützt unterstützt
Hineinfliegen unterstützt unterstützt
Hineinschweben unterstützt unterstützt
Teilen unterstützt unterstützt
Wischen unterstützt unterstützt
Form unterstützt unterstützt
Rad unterstützt unterstützt
Zufällige Balken unterstützt unterstützt
Wachsen & Drehen nicht unterstützt unterstützt
Zoom unterstützt unterstützt
Schwenken unterstützt unterstützt
Springen unterstützt unterstützt

Betonung:

Animationstyp Aspose.Slides PowerPoint
Puls nicht unterstützt unterstützt
Farbpuls nicht unterstützt unterstützt
Wippen unterstützt unterstützt
Drehen unterstützt unterstützt
Wachsen/Schrumpfen nicht unterstützt unterstützt
Entsättigen nicht unterstützt unterstützt
Dunkler machen nicht unterstützt unterstützt
Aufhellen nicht unterstützt unterstützt
Transparenz nicht unterstützt unterstützt
Objektfarbe nicht unterstützt unterstützt
Komplementärfarbe nicht unterstützt unterstützt
Linienfarbe nicht unterstützt unterstützt
Füllfarbe nicht unterstützt unterstützt

Ausgänge:

Animationstyp Aspose.Slides PowerPoint
Verschwinden nicht unterstützt unterstützt
Ausblenden unterstützt unterstützt
Hinausfliegen unterstützt unterstützt
Hinausschweben unterstützt unterstützt
Teilen unterstützt unterstützt
Wischen unterstützt unterstützt
Form unterstützt unterstützt
Zufällige Balken unterstützt unterstützt
Schrumpfen & Drehen nicht unterstützt unterstützt
Zoom unterstützt unterstützt
Schwenken unterstützt unterstützt
Springen unterstützt unterstützt

Bewegungspfade:

Animationstyp Aspose.Slides PowerPoint
Linien unterstützt unterstützt
Bögen unterstützt unterstützt
Drehungen unterstützt unterstützt
Formen unterstützt unterstützt
Schleifen unterstützt unterstützt
Benutzerdefinierter Pfad unterstützt unterstützt

Unterstützte Folienübergangseffekte

Subtil:

Animationstyp Aspose.Slides PowerPoint
Morph nicht unterstützt unterstützt
Ausblenden unterstützt unterstützt
Drücken unterstützt unterstützt
Ziehen unterstützt unterstützt
Wischen unterstützt unterstützt
Teilen unterstützt unterstützt
Enthüllen nicht unterstützt unterstützt
Zufällige Balken unterstützt unterstützt
Form nicht unterstützt unterstützt
Enthüllen nicht unterstützt unterstützt
Abdeckung unterstützt unterstützt
Blitzen unterstützt unterstützt
Streifen unterstützt unterstützt

Aufregend:

Animationstyp Aspose.Slides PowerPoint
Umfallen nicht unterstützt unterstützt
Drapieren nicht unterstützt unterstützt
Vorhänge nicht unterstützt unterstützt
Wind nicht unterstützt unterstützt
Prestige nicht unterstützt unterstützt
Fraktur nicht unterstützt unterstützt
Zerdrücken nicht unterstützt unterstützt
Abziehen nicht unterstützt unterstützt
Seitenumblättern nicht unterstützt unterstützt
Flugzeug nicht unterstützt unterstützt
Origami nicht unterstützt unterstützt
Auflösen unterstützt unterstützt
Schachbrett nicht unterstützt unterstützt
Jalousien nicht unterstützt unterstützt
Uhr unterstützt unterstützt
Welle nicht unterstützt unterstützt
Honigwabe nicht unterstützt unterstützt
Glitzern nicht unterstützt unterstützt
Wirbel nicht unterstützt unterstützt
Schnipsel nicht unterstützt unterstützt
Umschalten nicht unterstützt unterstützt
Drehen nicht unterstützt unterstützt
Galerie nicht unterstützt unterstützt
Würfel nicht unterstützt unterstützt
Türen nicht unterstützt unterstützt
Box nicht unterstützt unterstützt
Kamm nicht unterstützt unterstützt
Zoom unterstützt unterstützt
Zufällig nicht unterstützt unterstützt

Dynamischer Inhalt:

Animationstyp Aspose.Slides PowerPoint
Pan nicht unterstützt unterstützt
Riesenrad unterstützt unterstützt
Förderband nicht unterstützt unterstützt
Drehen nicht unterstützt unterstützt
Umlaufbahn nicht unterstützt unterstützt
Durchfliegen unterstützt unterstützt