تحويل PowerPoint إلى فيديو
من خلال تحويل عرض PowerPoint الخاص بك إلى فيديو، تحصل على
- زيادة في الوصول: جميع الأجهزة (بغض النظر عن النظام الأساسي) مزودة بلاعبات فيديو بشكل افتراضي مقارنةً بتطبيقات فتح العروض، لذا يجد المستخدمون أنه من الأسهل فتح أو تشغيل مقاطع الفيديو.
- نطاق أوسع: يمكنك من خلال مقاطع الفيديو الوصول إلى جمهور كبير واستهدافهم بمعلومات قد تبدو مملة بخلاف ذلك في عرض. تشير معظم الاستطلاعات والإحصائيات إلى أن الناس يشاهدون ويستهلكون مقاطع الفيديو أكثر من أشكال المحتوى الأخرى، وعادةً ما يفضلون مثل هذا المحتوى.
تحويل PowerPoint إلى فيديو في Aspose.Slides
في Aspose.Slides 22.11، قمنا بتنفيذ دعم تحويل العرض إلى فيديو.
- استخدم Aspose.Slides لتوليد مجموعة من الإطارات (من شرائح العرض) التي تتوافق مع معدل إطارات معين (إطارات في الثانية)
- استخدم أداة خارجية مثل
ffmpeg
لإنشاء فيديو بناءً على الإطارات.
تحويل PowerPoint إلى فيديو
- قم بتنزيل ffmpeg هنا.
- أضف المسار إلى
ffmpeg.exe
إلى متغير البيئةPATH
. - قم بتشغيل كود تحويل PowerPoint إلى فيديو.
هذا الكود C++ يوضح لك كيفية تحويل عرض (يحتوي على شكل وصفتين متحركتين) إلى فيديو:
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();
}
تأثيرات الفيديو
يمكنك تطبيق الرسوم المتحركة على الكائنات على الشرائح واستخدام الانتقالات بين الشرائح.
تجعل الرسوم المتحركة والانتقالات العروض التقديمية أكثر جاذبية واهتمامًا—وهي تفعل نفس الشيء بالنسبة للفيديوهات. دعنا نضيف شريحة أخرى وانتقالًا إلى الكود الخاص بالعرض السابق:
// يضيف شكل مبتسم ثم يحركه
// ...
// يضيف شريحة جديدة وانتقال متحرك
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 أيضًا الرسوم المتحركة للنصوص. لذا نقوم بتحريك الفقرات على الكائنات، والتي ستظهر واحدة تلو الأخرى (مع التأخير المحدد إلى ثانية):
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"تحويل عرض PowerPoint مع نص إلى فيديو"));
System::SharedPtr<Paragraph> para3 = System::MakeObject<Paragraph>();
para3->get_Portions()->Add(System::MakeObject<Portion>(u"فقرة تلو الأخرى"));
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();
}
فئات تحويل الفيديو
لتتمكن من تنفيذ مهام تحويل PowerPoint إلى فيديو، توفر Aspose.Slides PresentationAnimationsGenerator وPresentationPlayer كلاس.
يتيح لك PresentationAnimationsGenerator تعيين حجم الإطار للفيديو (الذي سيتم إنشاؤه لاحقًا) من خلال مُنشئه. إذا قمت بتمرير مثيل العرض، فسيتم استخدام Presentation.SlideSize
وتوليد الرسوم المتحركة التي يستخدمها PresentationPlayer.
عند توليد الرسوم المتحركة، يتم إنشاء حدث NewAnimation
لكل رسوم متحركة تالية، والذي يحتوي على المعامل IPresentationAnimationPlayer. الأخير هو كلاس يمثل مشغلًا لرسوم متحركة منفصلة.
للاستفادة من IPresentationAnimationPlayer، يتم استخدام خاصية get_Duration (المدة الكاملة للرسوم المتحركة) وSetTimePosition الطريقة. يتم تعيين كل موضع رسوم متحركة ضمن نطاق 0 إلى المدة، ثم ستعيد GetFrame
طريقة صورة متجهة تتوافق مع حالة الرسوم المتحركة في تلك اللحظة.
void OnNewAnimation(System::SharedPtr<IPresentationAnimationPlayer> animationPlayer)
{
System::Console::WriteLine(u"المدة الإجمالية للرسوم المتحركة: {0}", animationPlayer->get_Duration());
animationPlayer->SetTimePosition(0);
// حالة الرسوم المتحركة الأولية
System::SharedPtr<System::Drawing::Bitmap> bitmap = animationPlayer->GetFrame();
// صورة حالة الرسوم المتحركة الأولية
animationPlayer->SetTimePosition(animationPlayer->get_Duration());
// الحالة النهائية للرسوم المتحركة
System::SharedPtr<System::Drawing::Bitmap> lastBitmap = animationPlayer->GetFrame();
// الإطار الأخير من الرسوم المتحركة
lastBitmap->Save(u"last.png");
}
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);
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
animationsGenerator->NewAnimation += OnNewAnimation;
}
لجعل جميع الرسوم المتحركة في العرض تلعب معًا، يتم استخدام PresentationPlayer كلاس. يستقبل هذا الكلاس مثيلًا من PresentationAnimationsGenerator وFPS للتأثيرات في مُنشئه، ثم يستدعي حدث FrameTick
لجميع الرسوم المتحركة لتشغيلها:
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());
}
ثم يمكن تجميع الإطارات الناتجة لإنتاج فيديو. انظر قسم تحويل PowerPoint إلى فيديو.
الرسوم المتحركة والتأثيرات المدعومة
الدخول:
نوع الرسوم المتحركة | Aspose.Slides | PowerPoint |
---|---|---|
ظهور | ||
تلاشي | ||
طيران داخلي | ||
عائم داخلي | ||
انقسام | ||
مسح | ||
شكل | ||
دائرة | ||
أشرطة عشوائية | ||
نمو وتدوير | ||
تكبير | ||
دوار | ||
ارتداد |
التأكيد:
نوع الرسوم المتحركة | Aspose.Slides | PowerPoint |
---|---|---|
نبضة | ||
نبضة اللون | ||
توازن | ||
دوران | ||
نمو/تقليص | ||
تتلاشى | ||
تعتيم | ||
تيسير | ||
شفافية | ||
لون الكائن | ||
لون مكمل | ||
لون الخط | ||
لون التعبئة |
الخروج:
نوع الرسوم المتحركة | Aspose.Slides | PowerPoint |
---|---|---|
اختفاء | ||
تلاشي | ||
طيران خارجي | ||
عائم خارجي | ||
انقسام | ||
مسح | ||
شكل | ||
أشرطة عشوائية | ||
تقليص وتدوير | ||
تكبير | ||
دوار | ||
ارتداد |
مسارات الحركة:
نوع الرسوم المتحركة | Aspose.Slides | PowerPoint |
---|---|---|
خطوط | ||
دوائر | ||
اللفات | ||
أشكال | ||
حلقات | ||
مسار مخصص |