Переобразование презентаций PowerPoint в видео с помощью Python
Обзор
Преобразовав вашу презентацию PowerPoint или OpenDocument в видео, вы получаете:
Повышенная доступность: Все устройства, независимо от платформы, по умолчанию оснащены видеоплеерами, что упрощает пользователям открытие или воспроизведение видео по сравнению с традиционными приложениями для презентаций.
Широкий охват: Видео позволяют достичь более широкой аудитории и представить информацию в более увлекательном формате. Опросы и статистика показывают, что люди предпочитают просматривать и потреблять видеоконтент по сравнению с другими формами, делая ваше сообщение более воздействующим.
В Aspose.Slides for Python 24.4 мы реализовали поддержку преобразования презентаций в видео.
- Используйте Aspose.Slides for Python для генерации кадров из слайдов презентации с заданной частотой кадров (FPS).
- Затем используйте стороннюю утилиту, например ffmpeg, для объединения этих кадров в видео.
Преобразование презентации PowerPoint в видео
- Используйте команду pip install, чтобы добавить Aspose.Slides for Python в ваш проект:
pip install aspose-slides==24.4.0 - Скачайте ffmpeg с здесь или установите его через менеджер пакетов.
- Убедитесь, что ffmpeg находится в переменной
PATH. В противном случае запускайте ffmpeg, указав полный путь к исполняемому файлу (например,C:\ffmpeg\ffmpeg.exeв Windows или/opt/ffmpeg/ffmpegв Linux). - Запустите код преобразования 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 | ![]() |
![]() |
| 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 способен обрабатывать презентации практически любого размера. Однако при работе с очень большими файлами могут потребоваться дополнительные системные ресурсы, и иногда рекомендуется оптимизировать презентацию для повышения производительности.

