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

Анимации и переходы делают слайдшоу более увлекательными и интересными — и то же самое происходит с видео. Добавим еще один слайд и переход в коде для предыдущей презентации:

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

Акцентные:

Тип анимации 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

Выходные:

Тип анимации 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

Пути движения:

Тип анимации Aspose.Slides PowerPoint
Lines supported supported
Arcs supported supported
Turns supported supported
Shapes supported supported
Loops supported supported
Custom Path supported supported

Поддерживаемые эффекты переходов слайдов

Эффекты переходов слайдов играют важную роль в создании плавных и визуально привлекательных смен между слайдами в видео. Aspose.Slides for Python поддерживает разнообразные часто используемые эффекты переходов, помогая сохранить поток и стиль оригинальной презентации. Ниже перечислены поддерживаемые эффекты переходов.

Тонкие:

Тип анимации 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

Энергичные:

Тип анимации 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

Динамический контент:

Тип анимации 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

Часто задаваемые вопросы

Можно ли конвертировать презентации, защищённые паролем?

Да, Aspose.Slides for Python позволяет работать с презентациями, защищёнными паролем. При обработке таких файлов необходимо указать правильный пароль, чтобы библиотека смогла получить доступ к содержимому презентации.

Поддерживает ли Aspose.Slides for Python использование в облачных решениях?

Да, Aspose.Slides for Python может быть интегрирован в облачные приложения и сервисы. Библиотека спроектирована для работы в серверных средах, обеспечивая высокую производительность и масштабируемость при пакетной обработке файлов.

Есть ли ограничения по размеру презентаций при конвертации?

Aspose.Slides for Python способен обрабатывать презентации практически любого размера. Однако при работе с очень большими файлами могут потребоваться дополнительные системные ресурсы, и иногда рекомендуется оптимизировать презентацию для повышения производительности.