Convertir PPT en vidéo

Par rapport à une présentation PowerPoint (PPT ou PPTX), une vidéo ( MP4) est un format de fichier plus populaire et plus facile à ouvrir sur la grande majorité des appareils et des plates-formes. Par conséquent, lorsque vous convertissez votre PowerPoint en vidéo, votre contenu devient plus accessible et partageable avec un public plus large.

Convertir PPT en vidéo en C++

Dans cet article, nous avons l’intention de vous montrer comment convertir PPT en vidéo en C++.

Obtenez deux API pour convertir PPT en vidéo

Créer une vidéo dans PowerPoint

Tout d’abord, pour convertir une présentation PowerPoint en vidéo par programmation, vous devez obtenir ces deux API :

  • Aspose.Slides for C++. This API allows you to generate a set of frames based on the slides in your PowerPoint presentation. Aspose.Slides for C++ is a popular API for creating, editing, converting, and manipulating PowerPoint presentations (without Microsoft PowerPoint or Office). See this Installation article to install it.
  • ffmpeg. Cette API vous permet de créer une vidéo basée sur les diapositives générées. Téléchargez-le ici.

Info : Vous voudrez peut-être consulter Aspose gratuitement convertisseur PowerPoint en vidéo car il s’agit d’une implémentation en direct de l’opération PowerPoint en vidéo décrite dans cet article. Le convertisseur permet aux utilisateurs de créer de superbes vidéos à partir de présentations.

Convertir PPT en vidéo en C++

  1. Ajoutez le chemin d’accès à ffmpeg.exe à la variable d’environnement PATH.
  2. Exécutez le code PowerPoint vers vidéo C++.

Ce code C++ vous montre comment convertir PPT en 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();
}

Appliquer des effets et des animations dans la vidéo

Les animations et les effets améliorent l’attrait et les taux d’intérêt pour les présentations et les diaporamas. Ils ont le même effet sur les vidéos, en particulier celles créées à partir de présentations PowerPoint, vous pouvez donc utiliser des effets dans les vidéos. Aspose.Slides vous permet de faire précisément cela en fournissant le PresentationAnimationsGenerator, [PresentationPlayer](https:// reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/), et d’autres classes et types pertinents.

Par exemple, si vous décidez d’utiliser des animations et des effets dans une vidéo, vous pouvez ajouter une autre diapositive et effectuer une transition vers le code de la présentation de cette manière :

// 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);

Ensuite, vous pouvez appliquer des paramètres d’animation aux paragraphes sur les objets pour faire apparaître ces objets les uns après les autres (avec le délai entre les apparitions défini sur 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 for C++"));
    System::SharedPtr<Paragraph> para2 = System::MakeObject<Paragraph>();
    para2->get_Portions()->Add(System::MakeObject<Portion>(u"convert PowerPoint Presentation with text to video"));

    System::SharedPtr<Paragraph> para3 = System::MakeObject<Paragraph>();
    para3->get_Portions()->Add(System::MakeObject<Portion>(u"paragraph by paragraph"));
    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();
}

Obtenez une licence gratuite

Si vous souhaitez essayer les fonctionnalités d’Aspose.Slides sans limitation, nous vous recommandons d’obtenir une licence temporaire gratuite.

Conclusion

Après vous avoir guidé à travers les opérations de cet article, nous pensons que vous savez maintenant comment convertir PPT en vidéo en C++

Pour en savoir plus sur Aspose.Slides fonctionnalités, consultez notre documentation. Si vous avez des questions, vous pouvez les poster sur notre forum.

Voir également