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
- 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
- führen Sie
- Laden Sie ffmpeg hier herunter.
- 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",} );
- 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 | ||
Ausblenden | ||
Hineinfliegen | ||
Hineinschweben | ||
Teilen | ||
Wischen | ||
Form | ||
Rad | ||
Zufällige Balken | ||
Wachsen & Drehen | ||
Zoom | ||
Schwenken | ||
Springen |
Betonung:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Puls | ||
Farbpuls | ||
Wippen | ||
Drehen | ||
Wachsen/Schrumpfen | ||
Entsättigen | ||
Dunkler machen | ||
Aufhellen | ||
Transparenz | ||
Objektfarbe | ||
Komplementärfarbe | ||
Linienfarbe | ||
Füllfarbe |
Ausgänge:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Verschwinden | ||
Ausblenden | ||
Hinausfliegen | ||
Hinausschweben | ||
Teilen | ||
Wischen | ||
Form | ||
Zufällige Balken | ||
Schrumpfen & Drehen | ||
Zoom | ||
Schwenken | ||
Springen |
Bewegungspfade:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Linien | ||
Bögen | ||
Drehungen | ||
Formen | ||
Schleifen | ||
Benutzerdefinierter Pfad |
Unterstützte Folienübergangseffekte
Subtil:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Morph | ||
Ausblenden | ||
Drücken | ||
Ziehen | ||
Wischen | ||
Teilen | ||
Enthüllen | ||
Zufällige Balken | ||
Form | ||
Enthüllen | ||
Abdeckung | ||
Blitzen | ||
Streifen |
Aufregend:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Umfallen | ||
Drapieren | ||
Vorhänge | ||
Wind | ||
Prestige | ||
Fraktur | ||
Zerdrücken | ||
Abziehen | ||
Seitenumblättern | ||
Flugzeug | ||
Origami | ||
Auflösen | ||
Schachbrett | ||
Jalousien | ||
Uhr | ||
Welle | ||
Honigwabe | ||
Glitzern | ||
Wirbel | ||
Schnipsel | ||
Umschalten | ||
Drehen | ||
Galerie | ||
Würfel | ||
Türen | ||
Box | ||
Kamm | ||
Zoom | ||
Zufällig |
Dynamischer Inhalt:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Pan | ||
Riesenrad | ||
Förderband | ||
Drehen | ||
Umlaufbahn | ||
Durchfliegen |