Konversikan PPT ke video

Dibandingkan dengan presentasi PowerPoint (PPT atau PPTX), video ( MP4) adalah format file yang lebih populer dan lebih mudah dibuka di sebagian besar perangkat dan platform. Oleh karena itu, saat Anda mengonversi PowerPoint ke video, konten Anda menjadi lebih mudah diakses dan dibagikan di antara audiens yang lebih besar.

Konversikan PPT ke Video dalam C++

Pada artikel ini, kami bermaksud menunjukkan kepada Anda cara mengonversi PPT ke video dalam C++.

Dapatkan Dua API untuk Mengonversi PPT ke Video

Buat video di PowerPoint

Pertama, untuk mengonversi presentasi PowerPoint menjadi video secara terprogram, Anda perlu mendapatkan dua API ini:

  • Aspose.Slide untuk 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. API ini memungkinkan Anda membuat video berdasarkan slide yang dihasilkan. Unduh di sini.

Info: Anda mungkin ingin memeriksa Aspose gratis PowerPoint to video converter karena ini adalah implementasi langsung dari operasi PowerPoint ke video yang dijelaskan dalam artikel ini. Konverter memungkinkan pengguna untuk membuat video yang menakjubkan dari presentasi.

Konversikan PPT ke Video dalam C++

  1. Tambahkan jalur ke ffmpeg.exe ke variabel lingkungan PATH.
  2. Jalankan kode PowerPoint ke video C++.

Kode C++ ini menunjukkan cara mengonversi PPT ke video:

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

    // Menambahkan bentuk senyuman lalu menganimasikannya
    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();
}

Terapkan Efek dan Animasi dalam Video

Animasi dan efek meningkatkan daya tarik dan daya tarik untuk presentasi dan tayangan slide. Mereka memiliki efek yang sama pada video, terutama yang dibuat dari presentasi PowerPoint, jadi Anda mungkin ingin menggunakan efek dalam video. Aspose.Slides memungkinkan Anda melakukannya dengan menyediakan PresentationAnimationsGenerator, [PresentationPlayer](https:// reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/), dan kelas serta jenis lain yang relevan.

Misalnya, jika Anda memutuskan untuk menggunakan animasi dan efek dalam video, Anda dapat menambahkan slide dan transisi lain ke kode untuk presentasi dengan cara ini:

// Menambahkan bentuk senyuman dan menganimasikannya

// ...

// Menambahkan slide baru dan transisi animasi

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

Kemudian Anda dapat menerapkan pengaturan animasi ke paragraf pada objek untuk membuat objek tersebut muncul satu demi satu (dengan penundaan antar tampilan diatur ke satu detik):

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

    // Menambahkan teks dan animasi
    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);

    // Mengubah bingkai menjadi 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();
}

Dapatkan Lisensi Gratis

Jika Anda ingin mencoba fitur Aspose.Slides tanpa batasan, sebaiknya dapatkan lisensi sementara gratis.

Kesimpulan

Setelah memandu Anda melalui operasi dalam artikel ini, kami yakin Anda sekarang tahu cara mengonversi PPT ke video dalam C++

Untuk mempelajari lebih lanjut Aspose.Slides fitur, lihat dokumentasi kami/). Jika ada pertanyaan, Anda dapat mempostingnya di forum kami.

Lihat juga