PPT'yi videoya dönüştür

Bir PowerPoint sunumuyla (PPT veya PPTX) karşılaştırıldığında, bir video ( MP4) daha popüler bir dosya biçimidir ve cihazların ve platformun büyük çoğunluğunda açılması daha kolaydır. Bu nedenle, PowerPoint’inizi videoya dönüştürdüğünüzde, içeriğiniz daha geniş bir kitle için daha erişilebilir ve paylaşılabilir hale gelir.

C++ ile PPT’yi Videoya Dönüştür

Bu yazıda, size C ++ ‘da PPT’yi videoya nasıl dönüştüreceğinizi göstermeyi amaçlıyoruz.

PPT’yi Videoya Dönüştürmek için İki API Alın

PowerPoint'te video oluşturma

İlk olarak, bir PowerPoint sunumunu programlı olarak bir videoya dönüştürmek için şu iki API’yi edinmeniz gerekir:

  • C++ için Aspose.Slides. 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. Bu API, oluşturulan slaytlara dayalı bir video oluşturmanıza olanak tanır. İndir buradan.

Bilgi: Aspose free PowerPoint’ten videoya dönüştürücü‘ye göz atmak isteyebilirsiniz çünkü bu, PowerPoint’ten videoya işlemin canlı bir uygulamasıdır. Bu makalede. Dönüştürücü, kullanıcıların sunumlardan çarpıcı videolar oluşturmasına olanak tanır.

C++‘da PPT’yi Videoya Dönüştür

  1. “PATH” ortam değişkenine “ffmpeg.exe” yolunu ekleyin.
  2. PowerPoint to video C++ kodunu çalıştırın.

Bu C++ kodu, PPT’yi videoya nasıl dönüştüreceğinizi gösterir:

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

    // Bir gülümseme şekli ekler ve ardından onu canlandırır
    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();
}

Videoda Efektler ve Animasyonlar Uygulayın

Animasyonlar ve efektler, sunumlar ve slayt gösterileri için çekiciliği ve ilgi oranlarını artırır. Videolarda, özellikle PowerPoint sunumlarından oluşturulanlarda aynı etkiye sahiptirler, bu nedenle videolarda efekt kullanmak isteyebilirsiniz. Aspose.Slides, PresentationAnimationsGenerator, PresentationPlayer sağlayarak tam olarak bunu yapmanızı sağlar reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/) ve diğer ilgili sınıflar ve türler.

Örneğin, bir videoda animasyon ve efekt kullanmaya karar verirseniz, sunum için koda şu şekilde başka bir slayt ve geçiş ekleyebilirsiniz:

// Bir gülümseme şekli ekler ve onu canlandırır

// ...

// Yeni bir slayt ve animasyonlu geçiş ekler

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

Ardından, nesnelerin birbiri ardına görünmesini sağlamak için nesnelerdeki paragraflara bir animasyon ayarı uygulayabilirsiniz (görünümler arasındaki gecikme bir saniyeye ayarlanmış olarak):

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

    // Metin ve animasyonlar ekler
    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);

    // Çerçeveleri videoya dönüştürür
    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();
}

Ücretsiz Lisans Alın

Aspose.Slides özelliklerini sınırsız bir şekilde denemek istiyorsanız ücretsiz bir geçici lisans almanızı öneririz.

Çözüm

Bu makaledeki işlemlerde size rehberlik ettikten sonra, artık PPT’yi C++‘da videoya nasıl dönüştüreceğinizi bildiğinize inanıyoruz.

Aspose.Slides özellikleri hakkında daha fazla bilgi edinmek için belgelerimize bakın/). Sorularınız varsa forumumuza gönderebilirsiniz.

Ayrıca bakınız