PowerPoint-Präsentationen in .NET zu Video konvertieren

Übersicht

Erhöhte Barrierefreiheit: Alle Geräte, unabhängig vom Betriebssystem, verfügen standardmäßig über Videoplayer, sodass es für Benutzer einfacher ist, Videos zu öffnen oder abzuspielen im Vergleich zu herkömmlichen Präsentationsanwendungen.

Größere Reichweite: Videos ermöglichen es Ihnen, ein größeres Publikum zu erreichen und Informationen in einem ansprechenderen Format zu präsentieren. Umfragen und Statistiken zeigen, dass Menschen Video‑Inhalte lieber ansehen und konsumieren als andere Formate, wodurch Ihre Botschaft wirkungsvoller wird.

In Aspose.Slides für .NET haben wir die Unterstützung für die Konvertierung von Präsentationen in Video implementiert.

  • Verwenden Sie Aspose.Slides für .NET, um Frames aus den Präsentationsfolien mit einer angegebenen Bildrate (FPS) zu erzeugen.
  • Verwenden Sie anschließend ein Drittanbieter‑Tool wie ffmpeg, um diese Frames zu einem Video zu bündeln.

PowerPoint‑Präsentation in Video konvertieren

  1. Verwenden Sie den dotnet add package‑Befehl, 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 von hier herunter.
  3. FFMpegCore erfordert, dass Sie den Pfad zum heruntergeladenen ffmpeg angeben (z. B. extrahiert nach “C:\tools\ffmpeg”):
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
  1. Führen Sie den PowerPoint‑zu‑Video‑Konvertierungscode aus.

Dieser C#‑Code demonstriert, wie man eine Präsentation (die eine Form und zwei Animationseffekte enthält) in ein Video konvertiert:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // verwendet die FFmpeg-Binärdateien, die wir zuvor nach C:\tools\ffmpeg extrahiert haben.
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Füge eine Smiley-Form hinzu und animiere sie anschließend.
    IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);

    IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);

    IEffect effectOut = slide.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);
    }

    // Konfiguriere den ffmpeg-Binärordner. Siehe diese Seite: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konvertiere die Frames zu einem WebM-Video.
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Video‑Effekte

Beim Konvertieren einer PowerPoint‑Präsentation in ein Video mit Aspose.Slides für .NET können Sie verschiedene Video‑Effekte anwenden, um die visuelle Qualität des Ausgabematerials zu verbessern. Diese Effekte ermöglichen die Steuerung des Erscheinungsbildes der Folien im finalen Video durch sanfte Übergänge, Animationen und weitere visuelle Elemente. In diesem Abschnitt werden die verfügbaren Video‑Effekt‑Optionen erklärt und deren Anwendung gezeigt.

Animationen und Übergänge machen Diashows ansprechender und interessanter – das Gleiche gilt für Videos. Fügen wir der vorherigen Präsentation einen weiteren Folien‑ und Übergangseffekt im Code hinzu:

// Füge eine Smiley-Form hinzu und animiere sie.
// ...

// Füge 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 zudem Textanimationen. In diesem Beispiel animieren wir Absätze auf Objekten, sodass sie nacheinander mit einer Sekunde Verzögerung erscheinen:

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

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Text und Animationen hinzufügen.
    IAutoShape autoShape = slide.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 a 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 effect1 = slide.Timeline.MainSequence.AddEffect(
        para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect2 = slide.Timeline.MainSequence.AddEffect(
        para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect3 = slide.Timeline.MainSequence.AddEffect(
        para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect4 = slide.Timeline.MainSequence.AddEffect(
        para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect1.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);
    }

    // Konfiguriere den ffmpeg-Binärordner. Siehe diese Seite: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // Konvertiere die Frames zu einem WebM-Video.
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

Video‑Konvertierungs‑Klassen

Um PowerPoint‑zu‑Video‑Aufgaben zu ermöglichen, stellt Aspose.Slides für .NET die Klassen PresentationAnimationsGenerator und PresentationPlayer bereit.

PresentationAnimationsGenerator ermöglicht das Festlegen der Frame‑Größe für das später zu erstellende Video sowie des FPS‑Werts über den Konstruktor. Wird eine Präsentationsinstanz übergeben, wird deren Presentation.SlideSize verwendet und es werden Animationen erzeugt, die PresentationPlayer nutzt.

Beim Erzeugen von Animationen wird für jede nachfolgende Animation ein NewAnimation‑Ereignis ausgelöst, das einen IPresentationAnimationPlayer‑Parameter enthält. Diese Klasse repräsentiert einen Player für eine einzelne Animation.

Zur Arbeit mit IPresentationAnimationPlayer verwenden Sie die Eigenschaft Duration (die die Gesamtdauer der Animation angibt) und die Methode SetTimePosition. Jede Positionsangabe liegt im Bereich 0 bis Duration, und die Methode GetFrame liefert ein Bitmap, das den Animationszustand zu diesem Zeitpunkt darstellt.

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Füge eine Smiley-Form hinzu und animiere sie.
    IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);

    IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);

    IEffect effectOut = slide.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($"Total animation duration: {animationPlayer.Duration}");

            animationPlayer.SetTimePosition(0);          // Der Anfangszustand der Animation.
            Bitmap bitmap = animationPlayer.GetFrame();  // Bitmap des Anfangszustands der Animation.

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

Um alle Animationen einer Präsentation gleichzeitig abzuspielen, wird die Klasse PresentationPlayer verwendet. Sie übernimmt eine Instanz von PresentationAnimationsGenerator und einen FPS‑Wert für die Effekte im Konstruktor und ruft dann das FrameTick‑Ereignis 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);
    }
}

Anschließend können die erzeugten Frames zu einem Video zusammengefügt werden. Siehe den Abschnitt Convert a PowerPoint Presentation to Video.

Unterstützte Animationen und Effekte

Beim Konvertieren einer PowerPoint‑Präsentation in ein Video mit Aspose.Slides für .NET ist es wichtig zu wissen, welche Animationen und Effekte im Ergebnis unterstützt werden. Aspose.Slides unterstützt ein breites Spektrum gängiger Eingangs‑, Ausgangs‑ und Betonungseffekte wie Einblenden, Hereinfliegen, Zoomen und Drehen. Einige fortgeschrittene oder benutzerdefinierte Animationen werden jedoch eventuell nicht vollständig erhalten oder erscheinen im finalen Video anders. Dieser Abschnitt gibt einen Überblick über die unterstützten Animationen und Effekte.

Eingang:

Animationsart Aspose.Slides PowerPoint
Appear not supported supported
Fade supported supported
Fly In supported supported
Float In supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Wheel supported supported
Random Bars supported supported
Grow & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Betonung:

Animationsart Aspose.Slides PowerPoint
Pulse not supported supported
Color Pulse not supported supported
Teeter supported supported
Spin supported supported
Grow/Shrink not supported supported
Desaturate not supported supported
Darken not supported supported
Lighten not supported supported
Transparency not supported supported
Object Color not supported supported
Complementary Color not supported supported
Line Color not supported supported
Fill Color not supported supported

Ausgang:

Animationsart Aspose.Slides PowerPoint
Disappear not supported supported
Fade supported supported
Fly Out supported supported
Float Out supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Random Bars supported supported
Shrink & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Bewegungspfade:

Animationsart Aspose.Slides PowerPoint
Lines supported supported
Arcs supported supported
Turns supported supported
Shapes supported supported
Loops supported supported
Custom Path supported supported

Unterstützte Folienübergangseffekte

Folienübergangseffekte tragen wesentlich zu reibungslosen und visuell ansprechenden Wechseln zwischen Folien in einem Video bei. Aspose.Slides für .NET unterstützt eine Vielzahl gängiger Übergangseffekte, um den Fluss und Stil Ihrer ursprünglichen Präsentation zu erhalten. Dieser Abschnitt zeigt, welche Übergangseffekte während der Konvertierung unterstützt werden.

Dezent:

Animationsart Aspose.Slides PowerPoint
Morph not supported supported
Fade supported supported
Push supported supported
Pull supported supported
Wipe supported supported
Split supported supported
Reveal not supported supported
Random Bars supported supported
Shape not supported supported
Uncover not supported supported
Cover supported supported
Flash supported supported
Strips supported supported

Aufregend:

Animationsart Aspose.Slides PowerPoint
Fall Over not supported supported
Drape not supported supported
Curtains not supported supported
Wind not supported supported
Prestige not supported supported
Fracture not supported supported
Crush not supported supported
Peel Off not supported supported
Page Curl not supported supported
Airplane not supported supported
Origami not supported supported
Dissolve supported supported
Checkerboard not supported supported
Blinds not supported supported
Clock supported supported
Ripple not supported supported
Honeycomb not supported supported
Glitter not supported supported
Vortex not supported supported
Shred not supported supported
Switch not supported supported
Flip not supported supported
Gallery not supported supported
Cube not supported supported
Doors not supported supported
Box not supported supported
Comb not supported supported
Zoom supported supported
Random not supported supported

Dynamischer Inhalt:

Animationsart Aspose.Slides PowerPoint
Pan not supported supported
Ferris Wheel supported supported
Conveyor not supported supported
Rotate not supported supported
Orbit not supported supported
Fly Through supported supported

FAQ

Ist es möglich, passwortgeschützte Präsentationen zu konvertieren?

Ja, Aspose.Slides für .NET unterstützt die Arbeit mit passwortgeschützten Präsentationen. Beim Verarbeiten solcher Dateien muss das korrekte Passwort angegeben werden, damit die Bibliothek auf den Inhalt der Präsentation zugreifen kann.

Unterstützt Aspose.Slides für .NET die Verwendung in Cloud‑Lösungen?

Ja, Aspose.Slides für .NET kann in Cloud‑Anwendungen und -Diensten integriert werden. Die Bibliothek ist für den Einsatz in Server‑Umgebungen ausgelegt und bietet hohe Leistung sowie Skalierbarkeit für die Stapelverarbeitung von Dateien.

Gibt es Größenbeschränkungen für Präsentationen während der Konvertierung?

Aspose.Slides für .NET kann praktisch Präsentationen jeder Größe verarbeiten. Bei sehr großen Dateien können jedoch zusätzliche Systemressourcen erforderlich sein, und es wird gelegentlich empfohlen, die Präsentation zu optimieren, um die Performance zu verbessern.