PowerPoint in Video konvertieren
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 Video-Playern ausgestattet im Vergleich zu Anwendung, die Präsentationen öffnen, sodass es den Nutzern einfacher fällt, Videos zu öffnen oder abzuspielen.
- Größere Reichweite: Durch Videos können Sie ein breites Publikum erreichen und es mit Informationen ansprechen, die in einer Präsentation ansonsten möglicherweise langwierig erscheinen würden. Die meisten Umfragen und Statistiken deuten darauf hin, dass Menschen Videos mehr ansehen und konsumieren als andere Formen von Inhalten und solche Inhalte im Allgemeinen bevorzugen.
Konvertierung von PowerPoint in Video in Aspose.Slides
In Aspose.Slides 22.11 haben wir die Unterstützung für die Konvertierung von Präsentationen in Videos implementiert.
- Verwenden Sie Aspose.Slides, um ein Set von Frames (aus den Präsentationsfolien) zu generieren, die einer bestimmten FPS (Frames pro Sekunde) entsprechen.
- Verwenden Sie ein Drittanbieter-Tool wie
ffmpeg
, um ein Video basierend auf den Frames zu erstellen.
PowerPoint in Video konvertieren
- Laden Sie ffmpeg hier herunter.
- Fügen Sie den Pfad zu
ffmpeg.exe
der UmgebungsvariablePATH
hinzu. - Führen Sie den Code zur Konvertierung 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 konvertieren:
void OnFrameTick(System::SharedPtr<PresentationPlayer> sender, System::SharedPtr<FrameTickEventArgs> args)
{
System::String fileName = System::String::Format(u"frame_{0}.png", sender->get_FrameIndex());
args->GetFrame()->Save(fileName);
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Fügt eine Smiley-Form hinzu und animiert sie
System::SharedPtr<IAutoShape> smile = slide->get_Shapes()->AddAutoShape(ShapeType::SmileyFace, 110.0f, 20.0f, 500.0f, 500.0f);
auto sequence = slide->get_Timeline()->get_MainSequence();
System::SharedPtr<IEffect> effectIn = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::TopLeft, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effectOut = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::BottomRight, EffectTriggerType::AfterPrevious);
effectIn->get_Timing()->set_Duration(2.0f);
effectOut->set_PresetClassType(EffectPresetClassType::Exit);
const int32_t fps = 33;
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
auto player = System::MakeObject<PresentationPlayer>(animationsGenerator, fps);
player->FrameTick += OnFrameTick;
animationsGenerator->Run(presentation->get_Slides());
const System::String ffmpegParameters = System::String::Format(
u"-loglevel {0} -framerate {1} -i {2} -y -c:v {3} -pix_fmt {4} {5}",
u"warning", m_fps, "frame_%d.png", u"libx264", u"yuv420p", "video.mp4");
auto ffmpegProcess = System::Diagnostics::Process::Start(u"ffmpeg", ffmpegParameters);
ffmpegProcess->WaitForExit();
}
Videoeffekte
Sie können Animationen auf Objekte in Folien anwenden und Übergänge zwischen Folien verwenden.
Animationen und Übergänge machen Diashows ansprechender und interessanter – und sie tun dasselbe für Videos. Fügen wir dem Code der vorherigen Präsentation eine weitere Folie und einen Übergang hinzu:
// Fügt eine Smiley-Form hinzu und animiert sie
// ...
// Fügt eine neue Folie mit animiertem Übergang hinzu
System::SharedPtr<ISlide> newSlide = presentation->get_Slides()->AddEmptySlide(presentation->get_Slide(0)->get_LayoutSlide());
System::SharedPtr<IBackground> slideBackground = newSlide->get_Background();
slideBackground->set_Type(BackgroundType::OwnBackground);
auto fillFormat = slideBackground->get_FillFormat();
fillFormat->set_FillType(FillType::Solid);
fillFormat->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Indigo());
newSlide->get_SlideShowTransition()->set_Type(TransitionType::Push);
Aspose.Slides unterstützt auch Animationen für Texte. So animieren wir Absätze auf Objekten, die nacheinander erscheinen (mit einer Verzögerung von einer Sekunde):
void OnFrameTick(System::SharedPtr<PresentationPlayer> sender, System::SharedPtr<FrameTickEventArgs> args)
{
System::String fileName = System::String::Format(u"frame_{0}.png", sender->get_FrameIndex());
args->GetFrame()->Save(fileName);
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Fügt Text und Animationen hinzu
System::SharedPtr<IAutoShape> autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 210.0f, 120.0f, 300.0f, 300.0f);
System::SharedPtr<Paragraph> para1 = System::MakeObject<Paragraph>();
para1->get_Portions()->Add(System::MakeObject<Portion>(u"Aspose Slides für C++"));
System::SharedPtr<Paragraph> para2 = System::MakeObject<Paragraph>();
para2->get_Portions()->Add(System::MakeObject<Portion>(u"PowerPoint-Präsentation mit Text in Video konvertieren"));
System::SharedPtr<Paragraph> para3 = System::MakeObject<Paragraph>();
para3->get_Portions()->Add(System::MakeObject<Portion>(u"Absatz für Absatz"));
auto paragraphs = autoShape->get_TextFrame()->get_Paragraphs();
paragraphs->Add(para1);
paragraphs->Add(para2);
paragraphs->Add(para3);
paragraphs->Add(System::MakeObject<Paragraph>());
auto sequence = slide->get_Timeline()->get_MainSequence();
System::SharedPtr<IEffect> effect = sequence->AddEffect(para1, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect2 = sequence->AddEffect(para2, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect3 = sequence->AddEffect(para3, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect4 = sequence->AddEffect(para3, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
effect->get_Timing()->set_TriggerDelayTime(1.0f);
effect2->get_Timing()->set_TriggerDelayTime(1.0f);
effect3->get_Timing()->set_TriggerDelayTime(1.0f);
effect4->get_Timing()->set_TriggerDelayTime(1.0f);
// Konvertiert Frames zu Video
const int32_t fps = 33;
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
auto player = System::MakeObject<PresentationPlayer>(animationsGenerator, fps);
player->FrameTick += OnFrameTick;
animationsGenerator->Run(presentation->get_Slides());
const System::String ffmpegParameters = System::String::Format(
u"-loglevel {0} -framerate {1} -i {2} -y -c:v {3} -pix_fmt {4} {5}",
u"warning", m_fps, "frame_%d.png", u"libx264", u"yuv420p", "video.mp4");
auto ffmpegProcess = System::Diagnostics::Process::Start(u"ffmpeg", ffmpegParameters);
ffmpegProcess->WaitForExit();
}
Videokonvertierungsklassen
Um Ihnen die Durchführung von Aufgaben zur Konvertierung von PowerPoint in Video zu ermöglichen, bietet Aspose.Slides die Klassen PresentationAnimationsGenerator und PresentationPlayer an.
PresentationAnimationsGenerator ermöglicht es Ihnen, die Framegröß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 generiert Animationen, die von PresentationPlayer verwendet werden.
Wenn Animationen generiert werden, wird für jede nachfolgende Animation ein NewAnimation
-Ereignis erzeugt, 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 get_Duration (die Gesamtdauer der Animation) und die Methode SetTimePosition verwendet. Jede Animationsposition wird im Bereich 0 bis Dauer festgelegt, und dann gibt die Methode GetFrame
ein Bitmap zurück, das dem Animationszustand zu diesem Zeitpunkt entspricht.
void OnNewAnimation(System::SharedPtr<IPresentationAnimationPlayer> animationPlayer)
{
System::Console::WriteLine(u"Gesamtdauer der Animation: {0}", animationPlayer->get_Duration());
animationPlayer->SetTimePosition(0);
// ursprünglicher Animationszustand
System::SharedPtr<System::Drawing::Bitmap> bitmap = animationPlayer->GetFrame();
// Bitmap des ursprünglichen Animationszustands
animationPlayer->SetTimePosition(animationPlayer->get_Duration());
// endgültiger Zustand der Animation
System::SharedPtr<System::Drawing::Bitmap> lastBitmap = animationPlayer->GetFrame();
// letzter Frame der Animation
lastBitmap->Save(u"last.png");
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Fügt eine Smiley-Form hinzu und animiert sie
System::SharedPtr<IAutoShape> smile = slide->get_Shapes()->AddAutoShape(ShapeType::SmileyFace, 110.0f, 20.0f, 500.0f, 500.0f);
auto sequence = slide->get_Timeline()->get_MainSequence();
System::SharedPtr<IEffect> effectIn = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::TopLeft, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effectOut = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::BottomRight, EffectTriggerType::AfterPrevious);
effectIn->get_Timing()->set_Duration(2.0f);
effectOut->set_PresetClassType(EffectPresetClassType::Exit);
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
animationsGenerator->NewAnimation += OnNewAnimation;
}
Um alle Animationen in einer Präsentation gleichzeitig abzuspielen, wird die Klasse PresentationPlayer verwendet. Diese Klasse nimmt eine Instanz von PresentationAnimationsGenerator und FPS für Effekte in ihrem Konstruktor und ruft dann das FrameTick
-Ereignis für alle Animationen auf, um sie abzuspielen:
void OnFrameTick(System::SharedPtr<PresentationPlayer> sender, System::SharedPtr<FrameTickEventArgs> args)
{
System::String fileName = System::String::Format(u"frame_{0}.png", sender->get_FrameIndex());
args->GetFrame()->Save(fileName);
}
void Run()
{
auto presentation = System::MakeObject<Presentation>(u"animated.pptx");
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
auto player = System::MakeObject<PresentationPlayer>(animationsGenerator, 33);
player->FrameTick += OnFrameTick;
animationsGenerator->Run(presentation->get_Slides());
}
Dann können die generierten Frames zu einem Video zusammengestellt werden. Siehe den Abschnitt PowerPoint in Video konvertieren.
Unterstützte Animationen und Effekte
Eingangsanimationen:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Erscheinen | ||
Ausblenden | ||
Hineinfliegen | ||
Hineinschweben | ||
Teilen | ||
Wischen | ||
Form | ||
Rad | ||
Zufällige Balken | ||
Wachsen & Drehen | ||
Zoom | ||
Wenden | ||
Hüpfen |
Betonung:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Pulse | ||
Farbe Pulse | ||
Wippen | ||
Drehen | ||
Wachsen/Schrumpfen | ||
Entsättigen | ||
Dunkeln | ||
Aufhellen | ||
Transparenz | ||
Objektfarbe | ||
Komplementärfarbe | ||
Linienfarbe | ||
Füllfarbe |
Austrittsanimationen:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Verschwinden | ||
Ausblenden | ||
Hinausfliegen | ||
Hinausschweben | ||
Teilen | ||
Wischen | ||
Form | ||
Zufällige Balken | ||
Schrumpfen & Drehen | ||
Zoom | ||
Wenden | ||
Hüpfen |
Bewegungspfad:
Animationstyp | Aspose.Slides | PowerPoint |
---|---|---|
Linien | ||
Bögen | ||
Drehungen | ||
Formen | ||
Schleifen | ||
Benutzerdefinierter Pfad |