تحويل عروض PowerPoint إلى فيديو باستخدام Python

نظرة عامة

من خلال تحويل عرض PowerPoint أو OpenDocument إلى فيديو، تحصل على:

تحسين الوصول: جميع الأجهزة، بغض النظر عن النظام الأساسي، مزودة بمشغلات فيديو بشكل افتراضي، مما يجعل من الأسهل على المستخدمين فتح أو تشغيل الفيديوهات مقارنةً بتطبيقات العروض التقليدية.

نطاق أوسع: تمكنك الفيديوهات من الوصول إلى جمهور أكبر وتقديم المعلومات بتنسيق أكثر جاذبية. وتشير الاستطلاعات والإحصاءات إلى أن الناس يفضلون مشاهدة واستهلاك المحتوى الفيديوي على غيره، مما يجعل رسالتك أكثر تأثيرًا.

في Aspose.Slides for Python 24.4، قمنا بتنفيذ دعم لتحويل العروض إلى فيديو.

  • استخدم Aspose.Slides for Python لتوليد إطارات من شرائح العرض بمعدل إطارات محدد (FPS).
  • بعد ذلك، استخدم أداة طرف ثالث مثل ffmpeg لتجميع هذه الإطارات في فيديو.

تحويل عرض PowerPoint إلى فيديو

  1. استخدم أمر pip install لإضافة Aspose.Slides for Python إلى مشروعك: pip install aspose-slides==24.4.0
  2. قم بتنزيل ffmpeg من هنا أو ثبّته عبر مدير الحزم.
  3. تأكد من أن ffmpeg موجود في PATH. وإلا، شغِّل ffmpeg باستخدام المسار الكامل إلى الملف التنفيذي (مثال: C:\ffmpeg\ffmpeg.exe على Windows أو /opt/ffmpeg/ffmpeg على Linux).
  4. نفِّذ كود تحويل PowerPoint إلى فيديو.

يُظهر هذا الكود Python كيفية تحويل عرض (يحتوي على شكل وتأثيري تحريك) إلى فيديو:

import aspose.slides as slides
import subprocess

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    smile_shape = slide.shapes.add_auto_shape(slides.ShapeType.SMILEY_FACE, 110, 20, 500, 500)

    effect_in = slide.timeline.main_sequence.add_effect(
        smile_shape,
        slides.animation.EffectType.FLY,
        slides.animation.EffectSubtype.TOP_LEFT,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect_out = slide.timeline.main_sequence.add_effect(
        smile_shape,
        slides.animation.EffectType.FLY,
        slides.animation.EffectSubtype.BOTTOM_RIGHT,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect_in.timing.duration = 2
    effect_out.preset_class_type = slides.animation.EffectPresetClassType.EXIT

    fps = 33
    with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
        for frame_args in frames_stream.enumerate_frames(presentation.slides):
            frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
            frame_args.get_frame().save(frame)

    cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p",
                "smile.webm"]
    subprocess.call(cmd_line)

تأثيرات الفيديو

عند تحويل عرض PowerPoint إلى فيديو باستخدام Aspose.Slides for Python، يمكنك تطبيق تأثيرات فيديو مختلفة لتحسين الجودة البصرية للمخرجات. تتيح لك هذه التأثيرات التحكم في مظهر الشرائح في الفيديو النهائي عبر إضافة انتقالات سلسة، تحريكات، وعناصر بصرية أخرى. يشرح هذا القسم خيارات تأثيرات الفيديو المتاحة ويظهر كيفية تطبيقها.

تجعل التحريكات والانتقالات العروض أكثر جاذبية وإثارة — وتفعل نفس الشيء للفيديوهات. لنضيف شريحة أخرى وانتقالًا إلى الكود للعرض السابق:

import aspose.pydrawing as drawing

# إضافة شكل بابتسامة وتحريكه.
# ...
# إضافة شريحة جديدة وانتقال متحرك.
new_slide = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide)
new_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
new_slide.background.fill_format.fill_type = slides.FillType.SOLID
new_slide.background.fill_format.solid_fill_color.color = drawing.Color.indigo
new_slide.slide_show_transition.type = slides.TransitionType.PUSH

يدعم Aspose.Slides for Python أيضًا تحريكات النص. في هذا المثال، نقوم بتحريك الفقرات على الكائنات بحيث تظهر واحدة تلو الأخرى، مع تأخير ثانية واحدة بينهما:

import aspose.slides as slides
import subprocess

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    # إضافة نص وتحريكات.
    auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 210, 120, 300, 300)
    para1 = slides.Paragraph()
    para1.portions.add(slides.Portion("Aspose.Slides for Python"))
    para2 = slides.Paragraph()
    para2.portions.add(slides.Portion("Convert a PowerPoint presentation with text to video"))

    para3 = slides.Paragraph()
    para3.portions.add(slides.Portion("paragraph by paragraph"))
    auto_shape.text_frame.paragraphs.add(para1)
    auto_shape.text_frame.paragraphs.add(para2)
    auto_shape.text_frame.paragraphs.add(para3)
    auto_shape.text_frame.paragraphs.add(slides.Paragraph())

    effect = slide.timeline.main_sequence.add_effect(
        para1,
        slides.animation.EffectType.APPEAR,
        slides.animation.EffectSubtype.NONE,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect2 = slide.timeline.main_sequence.add_effect(
        para2,
        slides.animation.EffectType.APPEAR,
        slides.animation.EffectSubtype.NONE,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect3 = slide.timeline.main_sequence.add_effect(
        para3,
        slides.animation.EffectType.APPEAR,
        slides.animation.EffectSubtype.NONE,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect4 = slide.timeline.main_sequence.add_effect(
        para3,
        slides.animation.EffectType.APPEAR,
        slides.animation.EffectSubtype.NONE,
        slides.animation.EffectTriggerType.AFTER_PREVIOUS)

    effect.timing.trigger_delay_time = 1
    effect2.timing.trigger_delay_time = 1
    effect3.timing.trigger_delay_time = 1
    effect4.timing.trigger_delay_time = 1

    # تحويل الإطارات إلى فيديو.
    fps = 33
    with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
        for frame_args in frames_stream.enumerate_frames(presentation.slides):
            frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
            frame_args.get_frame().save(frame)

    cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p", "text_animation.webm"]
    subprocess.call(cmd_line)

فئات تحويل الفيديو

لتمكين مهام تحويل PowerPoint إلى فيديو، يوفر Aspose.Slides for Python الفئة PresentationEnumerableAnimationsGenerator.

PresentationEnumerableAnimationsGenerator يسمح لك بتعيين حجم الإطار للفيديو (الذي سيُنشأ لاحقًا) وقيمة FPS (الإطارات في الثانية) عبر المُنشئ الخاص به. إذا مررت كائن عرض، سيتم استخدام Presentation.SlideSize الخاص به.

لجعل جميع التحريكات في عرض تُشغَّل مرة واحدة، استخدم الطريقة PresentationEnumerableAnimationsGenerator.enumerate_frames. تأخذ هذه الطريقة مجموعة من الشرائح وتعيد بشكل متسلسل EnumerableFrameArgs. ثم استخدم EnumerableFrameArgs.get_frame() للحصول على كل إطار فيديو.

import aspose.slides as slides

with slides.Presentation("animated.pptx") as presentation:
    fps = 33
    with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
        for frame_args in frames_stream.enumerate_frames(presentation.slides):
            frame_args.get_frame().save(f"frame_{frame_args.frames_generator.frame_index:04d}.png")

بعد ذلك يمكن تجميع الإطارات المُولدة في فيديو. لمزيد من التفاصيل، راجع قسم Convert PowerPoint to Video.

الحركات والتأثيرات المدعومة

عند تحويل عرض PowerPoint إلى فيديو باستخدام Aspose.Slides for Python، من المهم فهم أي الحركات والتأثيرات المدعومة في المخرجات. يدعم Aspose.Slides مجموعة واسعة من تأثيرات الدخول، الخروج، والتأكيد الشائعة مثل التلاشي، الطيران، التكبير، والدوران. ومع ذلك، قد لا تُحافظ بعض الحركات المتقدمة أو المخصصة بالكامل أو قد تظهر بشكل مختلف في الفيديو النهائي. يوضح هذا القسم الحركات والتأثيرات المدعومة.

الدخول:

نوع الحركة Aspose.Slides PowerPoint
Appear غير مدعوم مدعوم
Fade مدعوم مدعوم
Fly In مدعوم مدعوم
Float In مدعوم مدعوم
Split مدعوم مدعوم
Wipe مدعوم مدعوم
Shape مدعوم مدعوم
Wheel مدعوم مدعوم
Random Bars مدعوم مدعوم
Grow & Turn غير مدعوم مدعوم
Zoom مدعوم مدعوم
Swivel مدعوم مدعوم
Bounce مدعوم مدعوم

التأكيد:

نوع الحركة Aspose.Slides PowerPoint
Pulse غير مدعوم مدعوم
Color Pulse غير مدعوم مدعوم
Teeter مدعوم مدعوم
Spin مدعوم مدعوم
Grow/Shrink غير مدعوم مدعوم
Desaturate غير مدعوم مدعوم
Darken غير مدعوم مدعوم
Lighten غير مدعوم مدعوم
Transparency غير مدعوم مدعوم
Object Color غير مدعوم مدعوم
Complementary Color غير مدعوم مدعوم
Line Color غير مدعوم مدعوم
Fill Color غير مدعوم مدعوم

الخروج:

نوع الحركة Aspose.Slides PowerPoint
Disappear غير مدعوم مدعوم
Fade مدعوم مدعوم
Fly Out مدعوم مدعوم
Float Out مدعوم مدعوم
Split مدعوم مدعوم
Wipe مدعوم مدعوم
Shape مدعوم مدعوم
Random Bars مدعوم مدعوم
Shrink & Turn غير مدعوم مدعوم
Zoom مدعوم مدعوم
Swivel مدعوم مدعوم
Bounce مدعوم مدعوم

مسارات الحركة:

نوع الحركة Aspose.Slides PowerPoint
Lines مدعوم مدعوم
Arcs مدعوم مدعوم
Turns مدعوم مدعوم
Shapes مدعوم مدعوم
Loops مدعوم مدعوم
Custom Path مدعوم مدعوم

تأثيرات انتقال الشرائح المدعومة

تلعب تأثيرات انتقال الشرائح دورًا مهمًا في إنشاء تغييرات سلسة وجذابة بصريًا بين الشرائح في الفيديو. يدعم Aspose.Slides for Python مجموعة متنوعة من تأثيرات الانتقال الشائعة للمساعدة في الحفاظ على تدفق وعرض العرض الأصلي. يوضح هذا القسم أي من تأثيرات الانتقال مدعومة أثناء عملية التحويل.

دقيق:

نوع الحركة Aspose.Slides PowerPoint
Morph غير مدعوم مدعوم
Fade مدعوم مدعوم
Push مدعوم مدعوم
Pull مدعوم مدعوم
Wipe مدعوم مدعوم
Split مدعوم مدعوم
Reveal غير مدعوم مدعوم
Random Bars مدعوم مدعوم
Shape غير مدعوم مدعوم
Uncover غير مدعوم مدعوم
Cover مدعوم مدعوم
Flash مدعوم مدعوم
Strips مدعوم مدعوم

مثير:

نوع الحركة Aspose.Slides PowerPoint
Fall Over غير مدعوم مدعوم
Drape غير مدعوم مدعوم
Curtains غير مدعوم مدعوم
Wind غير مدعوم مدعوم
Prestige غير مدعوم مدعوم
Fracture غير مدعوم مدعوم
Crush غير مدعوم مدعوم
Peel Off غير مدعوم مدعوم
Page Curl غير مدعوم مدعوم
Airplane غير مدعوم مدعوم
Origami غير مدعوم مدعوم
Dissolve مدعوم مدعوم
Checkerboard غير مدعوم مدعوم
Blinds غير مدعوم مدعوم
Clock مدعوم مدعوم
Ripple غير مدعوم مدعوم
Honeycomb غير مدعوم مدعوم
Glitter غير مدعوم مدعوم
Vortex غير مدعوم مدعوم
Shred غير مدعوم مدعوم
Switch غير مدعوم مدعوم
Flip غير مدعوم مدعوم
Gallery غير مدعوم مدعوم
Cube غير مدعوم مدعوم
Doors غير مدعوم مدعوم
Box غير مدعوم مدعوم
Comb غير مدعوم مدعوم
Zoom مدعوم مدعوم
Random غير مدعوم مدعوم

محتوى ديناميكي:

نوع الحركة Aspose.Slides PowerPoint
Pan غير مدعوم مدعوم
Ferris Wheel مدعوم مدعوم
Conveyor غير مدعوم مدعوم
Rotate غير مدعوم مدعوم
Orbit غير مدعوم مدعوم
Fly Through مدعوم مدعوم

الأسئلة الشائعة

هل يمكن تحويل العروض التقديمية المحمية بكلمة مرور؟

نعم، يتيح Aspose.Slides for Python العمل مع العروض التقديمية المحمية بكلمة مرور. عند معالجة مثل هذه الملفات، تحتاج إلى توفير كلمة المرور الصحيحة حتى يتمكن المكتبة من الوصول إلى محتوى العرض.

هل يدعم Aspose.Slides for Python الاستخدام في حلول السحابة؟

نعم، يمكن دمج Aspose.Slides for Python في التطبيقات والخدمات السحابية. صُممت المكتبة للعمل في بيئات الخوادم، مع ضمان أداء عالي وقابلية توسعة لمعالجة دفعات الملفات.

هل هناك أي حدود لحجم العروض التقديمية أثناء التحويل؟

يمكن لـ Aspose.Slides for Python التعامل مع العروض التقديمية ذات الحجم الافتراضي تقريبًا. ومع ذلك، قد تتطلب الملفات الكبيرة موارد نظام إضافية، وقد يُنصح أحيانًا بتحسين العرض لتحسين الأداء.