Convertir PowerPoint en Vidéo
En convertissant votre présentation PowerPoint en vidéo, vous obtenez
- Augmentation de l’accessibilité : Tous les appareils (quel que soit le système d’exploitation) sont équipés par défaut de lecteurs vidéo par rapport aux applications d’ouverture de présentations, ce qui facilite l’ouverture ou la lecture de vidéos pour les utilisateurs.
- Meilleure portée : Grâce aux vidéos, vous pouvez atteindre un large public et le cibler avec des informations qui pourraient autrement sembler ennuyeuses dans une présentation. La plupart des enquêtes et des statistiques suggèrent que les gens regardent et consomment des vidéos plus que d’autres formes de contenu, et ils préfèrent généralement ce type de contenu.
Conversion PowerPoint en Vidéo dans Aspose.Slides
Dans Aspose.Slides 22.11, nous avons implémenté la prise en charge de la conversion de présentation en vidéo.
- Utilisez Aspose.Slides pour générer un ensemble d’images (des diapositives de la présentation) qui correspondent à une certaine FPS (images par seconde)
- Utilisez un utilitaire tiers comme
ffmpeg
pour créer une vidéo basée sur les images.
Convertir PowerPoint en Vidéo
- Téléchargez ffmpeg ici.
- Ajoutez le chemin vers
ffmpeg.exe
à la variable d’environnementPATH
. - Exécutez le code de conversion PowerPoint en vidéo.
Ce code C++ vous montre comment convertir une présentation (contenant une figure et deux effets d’animation) en une vidéo :
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);
// Ajoute une forme de sourire puis l'anime
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();
}
Effets Vidéo
Vous pouvez appliquer des animations aux objets sur les diapositives et utiliser des transitions entre les diapositives.
Les animations et les transitions rendent les diaporamas plus engageants et intéressants - et ils font la même chose pour les vidéos. Ajoutons une autre diapositive et une transition au code de la présentation précédente :
// Ajoute une forme de sourire et l'anime
// ...
// Ajoute une nouvelle diapositive et une transition animée
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 prend également en charge l’animation des textes. Nous animons donc des paragraphes sur des objets, qui apparaîtront les uns après les autres (avec un délai réglé à une seconde) :
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);
// Ajoute du texte et des animations
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 pour C++"));
System::SharedPtr<Paragraph> para2 = System::MakeObject<Paragraph>();
para2->get_Portions()->Add(System::MakeObject<Portion>(u"convertir la présentation PowerPoint avec du texte en vidéo"));
System::SharedPtr<Paragraph> para3 = System::MakeObject<Paragraph>();
para3->get_Portions()->Add(System::MakeObject<Portion>(u"paragraphe par paragraphe"));
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);
// Convertit les images en vidéo
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();
}
Classes de Conversion Vidéo
Pour vous permettre d’effectuer des tâches de conversion PowerPoint en vidéo, Aspose.Slides fournit les classes PresentationAnimationsGenerator et PresentationPlayer.
PresentationAnimationsGenerator vous permet de définir la taille de la frame pour la vidéo (qui sera créée plus tard) via son constructeur. Si vous passez une instance de la présentation, Presentation.SlideSize
sera utilisée et elle génère des animations que PresentationPlayer utilise.
Lorsque les animations sont générées, un événement NewAnimation
est généré pour chaque animation suivante, qui a le paramètre IPresentationAnimationPlayer. Ce dernier est une classe qui représente un lecteur pour une animation distincte.
Pour travailler avec IPresentationAnimationPlayer, la propriété get_Duration (la durée totale de l’animation) et la méthode SetTimePosition sont utilisées. Chaque position d’animation est définie dans la plage 0 à durée, puis la méthode GetFrame
renverra un Bitmap qui correspond à l’état de l’animation à ce moment-là.
void OnNewAnimation(System::SharedPtr<IPresentationAnimationPlayer> animationPlayer)
{
System::Console::WriteLine(u"Durée totale de l'animation : {0}", animationPlayer->get_Duration());
animationPlayer->SetTimePosition(0);
// état initial de l'animation
System::SharedPtr<System::Drawing::Bitmap> bitmap = animationPlayer->GetFrame();
// bitmap de l'état initial de l'animation
animationPlayer->SetTimePosition(animationPlayer->get_Duration());
// état final de l'animation
System::SharedPtr<System::Drawing::Bitmap> lastBitmap = animationPlayer->GetFrame();
// dernière image de l'animation
lastBitmap->Save(u"last.png");
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Ajoute une forme de sourire et l'anime
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;
}
Pour faire jouer toutes les animations d’une présentation en même temps, la classe PresentationPlayer est utilisée. Cette classe prend une instance de PresentationAnimationsGenerator et FPS pour les effets dans son constructeur, puis appelle l’événement FrameTick
pour toutes les animations afin de les faire jouer :
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());
}
Ensuite, les images générées peuvent être compilées pour produire une vidéo. Consultez la section Convertir PowerPoint en Vidéo.
Animations et Effets Pris en Charge
Entrée:
Type d’Animation | Aspose.Slides | PowerPoint |
---|---|---|
Apparaître | ||
Estomper | ||
Voler | ||
Flotter | ||
Diviser | ||
Essuyer | ||
Forme | ||
Roue | ||
Barres Aléatoires | ||
Grandir & Tourner | ||
Zoom | ||
Pivot | ||
Rebondir |
Accentuation:
Type d’Animation | Aspose.Slides | PowerPoint |
---|---|---|
Pouls | ||
Pouls de Couleur | ||
Balançoire | ||
Tourner | ||
Grandir/Réduire | ||
Désaturer | ||
Obscurcir | ||
Éclaircir | ||
Transparence | ||
Couleur d’Objet | ||
Couleur Complémentaire | ||
Couleur de Ligne | ||
Couleur de Remplissage |
Sortie:
Type d’Animation | Aspose.Slides | PowerPoint |
---|---|---|
Disparaître | ||
Estomper | ||
Voler Hors | ||
Flotter Hors | ||
Diviser | ||
Essuyer | ||
Forme | ||
Barres Aléatoires | ||
Réduire & Tourner | ||
Zoom | ||
Pivot | ||
Rebondir |
Chemins de Mouvement :
Type d’Animation | Aspose.Slides | PowerPoint |
---|---|---|
Lignes | ||
Arcs | ||
Tours | ||
Formes | ||
Boucles | ||
Chemin Personnalisé |