تحويل PPT إلى فيديو

مقارنة بعرض PowerPoint تقديمي (PPT أو PPTX) ، مقطع فيديو ( MP4) هو تنسيق ملف أكثر شيوعًا ويسهل فتحه على الغالبية العظمى من الأجهزة والنظام الأساسي. لذلك ، عندما تقوم بتحويل PowerPoint إلى فيديو ، يصبح المحتوى الخاص بك أكثر سهولة وقابلية للمشاركة بين جمهور أكبر.

تحويل PPT إلى فيديو في C++

في هذه المقالة ، نعتزم أن نوضح لك كيفية تحويل PPT إلى فيديو في C++.

احصل على اثنين من واجهات برمجة التطبيقات لتحويل PPT إلى فيديو

قم بإنشاء فيديو في PowerPoint

أولاً ، لتحويل عرض PowerPoint تقديمي إلى فيديو برمجيًا ، تحتاج إلى الحصول على واجهتي API:

  • Aspose.Slides لـ 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. تتيح لك واجهة برمجة التطبيقات هذه إنشاء مقطع فيديو بناءً على الشرائح التي تم إنشاؤها. قم بتنزيله هنا.

معلومات: قد ترغب في التحقق من Aspose free محول PowerPoint إلى فيديو لأنه تطبيق مباشر لعملية PowerPoint إلى الفيديو الموصوفة في هذه المقالة. يتيح المحول للمستخدمين إنشاء مقاطع فيديو مذهلة من العروض التقديمية.

تحويل PPT إلى فيديو في C++

  1. أضف مسارًا إلى “ffmpeg.exe” إلى متغير البيئة “PATH”.
  2. قم بتشغيل PowerPoint to video C++ code.

يوضح لك رمز C++ هذا كيفية تحويل PPT إلى فيديو:

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

    // يضيف شكل ابتسامة ثم ينشطها
    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();
}

تطبيق المؤثرات والرسوم المتحركة في الفيديو

تعمل الرسوم المتحركة والتأثيرات على تحسين معدلات الاستئناف والمشاركة في العروض التقديمية وعروض الشرائح. لديهم نفس التأثير على مقاطع الفيديو ، خاصة تلك التي تم إنشاؤها من عروض PowerPoint التقديمية ، لذلك قد ترغب في استخدام التأثيرات في مقاطع الفيديو. Aspose.Slides يسمح لك بالقيام بذلك بالضبط من خلال تقديم PresentationAnimationsGenerator ، [PresentationPlayer](https: // reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/) والفئات والأنواع الأخرى ذات الصلة.

على سبيل المثال ، إذا قررت استخدام الرسوم المتحركة والتأثيرات في مقطع فيديو ، فيمكنك إضافة شريحة أخرى والانتقال إلى رمز العرض التقديمي بهذه الطريقة:

// يضيف شكل الابتسامة وينعشها

// ...

// يضيف شريحة جديدة وانتقالًا متحركًا

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

ثم يمكنك تطبيق إعدادات الرسوم المتحركة على الفقرات الموجودة على الكائنات لجعل تلك الكائنات تظهر واحدة تلو الأخرى (مع ضبط التأخير بين المظاهر على ثانية):

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

    // يضيف النص والرسوم المتحركة
    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);

    // يحول الإطارات إلى فيديو
    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();
}

احصل على رخصة مجانية

إذا كنت تتطلع إلى تجربة ميزات Aspose.Slides دون قيود ، فننصحك بالحصول على ترخيص مؤقت مجاني.

خاتمة

بعد إطلاعك على العمليات في هذه المقالة ، نعتقد أنك تعرف الآن كيفية تحويل PPT إلى فيديو في C++

لمعرفة المزيد حول Aspose.Slides features ، راجع التوثيق.إذا كانت لديك أسئلة ، فيمكنك نشرها على المنتدى.

أنظر أيضا