Конвертировать презентации PowerPoint в видео на Python

Обзор

Преобразовав вашу презентацию PowerPoint или OpenDocument в видео, вы получаете:

Повышенная доступность: Все устройства, независимо от платформы, по умолчанию оснащены видеоплеерами, что упрощает открытие и воспроизведение видео по сравнению с традиционными приложениями для презентаций.

Более широкая аудитория: Видео позволяют охватить большую аудиторию и представить информацию в более увлекательном формате. Опросы и статистика показывают, что люди предпочитают смотреть и потреблять видеоконтент другим формам, делая ваше сообщение более впечатляющим.

В Aspose.Slides for Python 24.4 мы реализовали поддержку конвертации презентаций в видео.

  • Используйте Aspose.Slides for Python для генерации кадров из слайдов презентации с заданной частотой кадров (FPS).
  • Затем используйте стороннюю утилиту, такую как ffmpeg, для сборки этих кадров в видео.

Конвертировать презентацию PowerPoint в видео

  1. Добавьте Aspose.Slides for Python в проект с помощью команды pip install: 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 предоставляет PresentationEnumerableFramesGenerator.

PresentationEnumerableFramesGenerator позволяет задать размер кадра для будущего видео и значение FPS (кадров в секунду) через конструктор. Если передать экземпляр презентации, будет использовано её Presentation.SlideSize.

Чтобы все анимации в презентации воспроизводились одновременно, используйте метод PresentationEnumerableFramesGenerator.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")

Сгенерированные кадры затем можно собрать в видео. Подробнее см. раздел Конвертировать PowerPoint в Видео.

Поддерживаемые анимации и эффекты

При конвертации презентации 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 способна обрабатывать презентации практически любого размера. Однако при работе с очень большими файлами могут потребоваться дополнительные системные ресурсы, и иногда рекомендуется оптимизировать презентацию для повышения производительности.