Konversi Presentasi PowerPoint ke Video dengan Python

Introduction

Dengan mengonversi presentasi PowerPoint atau OpenDocument Anda ke video, Anda mendapatkan:

Aksesibilitas yang meningkat: Semua perangkat, terlepas dari platformnya, dilengkapi dengan pemutar video secara default, sehingga lebih mudah bagi pengguna untuk membuka atau memutar video dibandingkan aplikasi presentasi tradisional.

Jangkauan yang lebih luas: Video memungkinkan Anda menjangkau audiens yang lebih besar dan menyajikan informasi dalam format yang lebih menarik. Survei dan statistik menunjukkan bahwa orang lebih menyukai menonton dan mengonsumsi konten video dibandingkan bentuk lain, menjadikan pesan Anda lebih berdampak.

Di Aspose.Slides for Python 24.4, kami menambahkan dukungan untuk mengonversi presentasi ke video.

  • Gunakan Aspose.Slides for Python untuk menghasilkan frame dari slide presentasi dengan kecepatan frame (FPS) yang ditentukan.
  • Kemudian, gunakan utilitas pihak ketiga seperti ffmpeg untuk mengompilasi frame tersebut menjadi video.

Mengonversi Presentasi PowerPoint ke Video

  1. Gunakan perintah pip install untuk menambahkan Aspose.Slides for Python ke proyek Anda: pip install aspose-slides==24.4.0
  2. Unduh ffmpeg dari sini atau instal melalui manajer paket.
  3. Pastikan ffmpeg berada di dalam PATH. Jika tidak, jalankan ffmpeg dengan menggunakan path lengkap ke binary (misalnya C:\ffmpeg\ffmpeg.exe di Windows atau /opt/ffmpeg/ffmpeg di Linux).
  4. Jalankan kode konversi PowerPoint ke video.

Kode Python ini memperlihatkan cara mengonversi presentasi (yang berisi bentuk dan dua efek animasi) menjadi video:

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)

Efek Video

Saat mengonversi presentasi PowerPoint ke video menggunakan Aspose.Slides for Python, Anda dapat menerapkan berbagai efek video untuk meningkatkan kualitas visual output. Efek-efek ini memungkinkan Anda mengontrol tampilan slide dalam video akhir dengan menambahkan transisi halus, animasi, dan elemen visual lainnya. Bagian ini menjelaskan opsi efek video yang tersedia dan cara menerapkannya.

Animasi dan transisi membuat slide lebih menarik dan menarik — dan hal yang sama berlaku untuk video. Mari tambahkan slide dan transisi lain ke kode untuk presentasi sebelumnya:

import aspose.pydrawing as drawing

# Tambahkan bentuk senyum dan animasikan.
# ...

# Tambahkan slide baru dan transisi animasi.
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 juga mendukung animasi teks. Dalam contoh ini, kami menganimasikan paragraf pada objek sehingga muncul satu per satu, dengan jeda satu detik di antara mereka:

import aspose.slides as slides
import subprocess

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

    # Tambahkan teks dan animasi.
    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

    # Konversi frame ke video.
    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)

Kelas Konversi Video

Untuk memungkinkan tugas konversi PowerPoint ke video, Aspose.Slides for Python menyediakan PresentationEnumerableFramesGenerator.

PresentationEnumerableFramesGenerator memungkinkan Anda mengatur ukuran frame untuk video (yang akan dibuat kemudian) dan nilai FPS (frame per detik) melalui konstruktor-nya. Jika Anda memberikan instance presentasi, Presentation.SlideSize-nya yang akan digunakan.

Untuk membuat semua animasi dalam presentasi diputar sekaligus, gunakan metode PresentationEnumerableFramesGenerator.enumerate_frames. Metode ini menerima kumpulan slide dan secara berurutan mengembalikan EnumerableFrameArgs. Kemudian, gunakan EnumerableFrameArgs.get_frame() untuk mendapatkan setiap frame video.

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

Kemudian frame yang dihasilkan dapat dikompilasi menjadi video. Untuk detail lebih lanjut, lihat bagian Convert PowerPoint to Video.

Animasi dan Efek yang Didukung

Saat mengonversi presentasi PowerPoint ke video menggunakan Aspose.Slides for Python, penting untuk memahami animasi dan efek mana yang didukung dalam output. Aspose.Slides mendukung beragam efek masuk, keluar, dan penekanan umum seperti fade, fly in, zoom, dan spin. Namun, beberapa animasi lanjutan atau kustom mungkin tidak sepenuhnya dipertahankan atau dapat muncul berbeda dalam video akhir. Bagian ini merangkum animasi dan efek yang didukung.

Masuk:

Jenis Animasi Aspose.Slides PowerPoint
Appear not supported supported
Fade supported supported
Fly In supported supported
Float In supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Wheel supported supported
Random Bars supported supported
Grow & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Penekanan:

Jenis Animasi Aspose.Slides PowerPoint
Pulse not supported supported
Color Pulse not supported supported
Teeter supported supported
Spin supported supported
Grow/Shrink not supported supported
Desaturate not supported supported
Darken not supported supported
Lighten not supported supported
Transparency not supported supported
Object Color not supported supported
Complementary Color not supported supported
Line Color not supported supported
Fill Color not supported supported

Keluar:

Jenis Animasi Aspose.Slides PowerPoint
Disappear not supported supported
Fade supported supported
Fly Out supported supported
Float Out supported supported
Split supported supported
Wipe supported supported
Shape supported supported
Random Bars supported supported
Shrink & Turn not supported supported
Zoom supported supported
Swivel supported supported
Bounce supported supported

Jalur Gerakan:

Jenis Animasi Aspose.Slides PowerPoint
Lines supported supported
Arcs supported supported
Turns supported supported
Shapes supported supported
Loops supported supported
Custom Path supported supported

Efek Transisi Slide yang Didukung

Efek transisi slide memainkan peran penting dalam menciptakan perubahan yang mulus dan menarik secara visual antara slide dalam video. Aspose.Slides for Python mendukung berbagai efek transisi yang umum digunakan untuk membantu mempertahankan alur dan gaya presentasi asli Anda. Bagian ini menyoroti efek transisi mana yang didukung selama proses konversi.

Halus:

Jenis Animasi Aspose.Slides PowerPoint
Morph not supported supported
Fade supported supported
Push supported supported
Pull supported supported
Wipe supported supported
Split supported supported
Reveal not supported supported
Random Bars supported supported
Shape not supported supported
Uncover not supported supported
Cover supported supported
Flash supported supported
Strips supported supported

Menarik:

Jenis Animasi Aspose.Slides PowerPoint
Fall Over not supported supported
Drape not supported supported
Curtains not supported supported
Wind not supported supported
Prestige not supported supported
Fracture not supported supported
Crush not supported supported
Peel Off not supported supported
Page Curl not supported supported
Airplane not supported supported
Origami not supported supported
Dissolve supported supported
Checkerboard not supported supported
Blinds not supported supported
Clock supported supported
Ripple not supported supported
Honeycomb not supported supported
Glitter not supported supported
Vortex not supported supported
Shred not supported supported
Switch not supported supported
Flip not supported supported
Gallery not supported supported
Cube not supported supported
Doors not supported supported
Box not supported supported
Comb not supported supported
Zoom supported supported
Random not supported supported

Konten Dinamis:

Jenis Animasi Aspose.Slides PowerPoint
Pan not supported supported
Ferris Wheel supported supported
Conveyor not supported supported
Rotate not supported supported
Orbit not supported supported
Fly Through supported supported

FAQ

Apakah memungkinkan mengonversi presentasi yang dilindungi kata sandi?

Ya, Aspose.Slides for Python memungkinkan bekerja dengan presentasi yang dilindungi kata sandi. Saat memproses file semacam itu, Anda perlu menyediakan kata sandi yang benar agar perpustakaan dapat mengakses isi presentasi.

Apakah Aspose.Slides for Python mendukung penggunaan dalam solusi cloud?

Ya, Aspose.Slides for Python dapat diintegrasikan ke dalam aplikasi dan layanan cloud. Perpustakaan ini dirancang untuk bekerja di lingkungan server, memastikan kinerja tinggi dan skalabilitas untuk pemrosesan batch file.

Apakah ada batasan ukuran untuk presentasi selama konversi?

Aspose.Slides for Python mampu menangani presentasi dengan ukuran apa pun secara praktis. Namun, saat bekerja dengan file yang sangat besar, mungkin diperlukan sumber daya sistem tambahan, dan terkadang disarankan untuk mengoptimalkan presentasi guna meningkatkan kinerja.