Konwertowanie prezentacji PowerPoint na wideo w Pythonie

Wprowadzenie

Konwertując swoją prezentację PowerPoint lub OpenDocument na wideo, zyskujesz:

Zwiększona dostępność: Wszystkie urządzenia, niezależnie od platformy, są domyślnie wyposażone w odtwarzacze wideo, co ułatwia użytkownikom otwieranie lub odtwarzanie filmów w porównaniu z tradycyjnymi aplikacjami do prezentacji.

Szerszy zasięg: Filmy pozwalają dotrzeć do większej liczby odbiorców i prezentować informacje w bardziej angażującym formacie. Badania i statystyki wskazują, że ludzie wolą oglądać i konsumować treści wideo niż inne formy, co zwiększa wpływ Twojego przekazu.

W Aspose.Slides for Python 24.4, wprowadziliśmy obsługę konwersji prezentacji na wideo.

  • Użyj Aspose.Slides for Python, aby generować klatki z slajdów prezentacji ze wskazaną liczbą klatek na sekundę (FPS).
  • Następnie użyj zewnętrznego narzędzia, takiego jak ffmpeg, aby złożyć te klatki w wideo.

Konwertuj prezentację PowerPoint na wideo

  1. Użyj polecenia pip install, aby dodać Aspose.Slides for Python do projektu: pip install aspose-slides==24.4.0
  2. Pobierz ffmpeg z tutaj lub zainstaluj go za pomocą menedżera pakietów.
  3. Upewnij się, że ffmpeg znajduje się w zmiennej PATH. W przeciwnym razie uruchom ffmpeg, podając pełną ścieżkę do pliku wykonywalnego (np. C:\ffmpeg\ffmpeg.exe w systemie Windows lub /opt/ffmpeg/ffmpeg w systemie Linux).
  4. Uruchom kod konwertujący PowerPoint na wideo.

Ten kod w Pythonie demonstruje, jak przekonwertować prezentację (zawierającą kształt i dwa efekty animacji) na wideo:

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)

Efekty wideo

Podczas konwertowania prezentacji PowerPoint na wideo przy użyciu Aspose.Slides for Python możesz zastosować różne efekty wideo, aby poprawić jakość wizualną rezultatu. Efekty te pozwalają kontrolować wygląd slajdów w finalnym wideo, dodając płynne przejścia, animacje i inne elementy wizualne. W tej sekcji wyjaśniono dostępne opcje efektów wideo oraz przedstawiono ich zastosowanie.

Animacje i przejścia sprawiają, że pokazy slajdów są bardziej angażujące i interesujące — to samo dotyczy wideo. Dodajmy kolejny slajd i przejście do kodu poprzedniej prezentacji:

import aspose.pydrawing as drawing

# Dodaj kształt uśmiechu i animuj go.
# ...

# Dodaj nowy slajd i animowane przejście.
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 obsługuje także animacje tekstu. W tym przykładzie animujemy akapity na obiektach tak, aby pojawiały się kolejno, z jednosekundowym opóźnieniem między nimi:

import aspose.slides as slides
import subprocess

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

    # Dodaj tekst i animacje.
    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

    # Konwertuj klatki na wideo.
    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)

Klasy konwersji wideo

Aby umożliwić zadania konwersji PowerPoint na wideo, Aspose.Slides for Python udostępnia PresentationEnumerableFramesGenerator.

PresentationEnumerableFramesGenerator pozwala ustawić rozmiar klatki wideo (która zostanie utworzona później) oraz wartość FPS (klatek na sekundę) poprzez konstruktor. Jeśli przekażesz instancję prezentacji, użyty zostanie jej Presentation.SlideSize.

Aby wszystkie animacje w prezentacji odtworzyły się jednocześnie, użyj metody PresentationEnumerableFramesGenerator.enumerate_frames. Metoda ta przyjmuje kolekcję slajdów i kolejno zwraca EnumerableFrameArgs. Następnie użyj EnumerableFrameArgs.get_frame() aby uzyskać każdą klatkę wideo.

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

Następnie wygenerowane klatki mogą być złożone w wideo. Po więcej szczegółów zobacz sekcję Convert PowerPoint to Video.

Obsługiwane animacje i efekty

Podczas konwertowania prezentacji PowerPoint na wideo przy użyciu Aspose.Slides for Python ważne jest zrozumienie, które animacje i efekty są obsługiwane w rezultacie. Aspose.Slides obsługuje szeroką gamę typowych efektów wejścia, wyjścia i podkreślenia, takich jak zanikanie, przelot, przybliżenie i obrót. Niektóre zaawansowane lub niestandardowe animacje mogą nie być w pełni zachowane lub mogą wyglądać inaczej w finalnym wideo. Poniżej przedstawiono obsługiwane animacje i efekty.

Wejście:

Typ animacji 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

Podkreślenie:

Typ animacji 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

Zakończenie:

Typ animacji 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

Ścieżki ruchu:

Typ animacji Aspose.Slides PowerPoint
Lines supported supported
Arcs supported supported
Turns supported supported
Shapes supported supported
Loops supported supported
Custom Path supported supported

Obsługiwane efekty przejść slajdów

Efekty przejść slajdów odgrywają ważną rolę w tworzeniu płynnych i atrakcyjnych wizualnie zmian pomiędzy slajdami w wideo. Aspose.Slides for Python obsługuje różnorodne, powszechnie używane efekty przejść, aby pomóc zachować przepływ i styl oryginalnej prezentacji. Poniżej zestawiono, które efekty przejść są wspierane podczas konwersji.

Delikatne:

Typ animacji 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

Ekscytujące:

Typ animacji 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

Dynamiczna zawartość:

Typ animacji 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

Czy możliwe jest konwertowanie prezentacji chronionych hasłem?

Tak, Aspose.Slides for Python pozwala pracować z prezentacjami zabezpieczonymi hasłem. Podczas przetwarzania takich plików należy podać prawidłowe hasło, aby biblioteka mogła uzyskać dostęp do zawartości prezentacji.

Czy Aspose.Slides for Python wspiera użycie w rozwiązaniach chmurowych?

Tak, Aspose.Slides for Python może być zintegrowany z aplikacjami i usługami chmurowymi. Biblioteka jest zaprojektowana z myślą o środowiskach serwerowych, zapewniając wysoką wydajność i skalowalność przy przetwarzaniu plików wsadowo.

Czy istnieją ograniczenia rozmiaru prezentacji podczas konwersji?

Aspose.Slides for Python jest w stanie obsłużyć prezentacje praktycznie dowolnego rozmiaru. Jednak przy pracy z bardzo dużymi plikami może być konieczne większe użycie zasobów systemowych i czasami zaleca się optymalizację prezentacji w celu poprawy wydajności.