Convertir presentaciones de PowerPoint a video en Python
Resumen
Al convertir su presentación de PowerPoint o OpenDocument a video, usted obtiene:
Accesibilidad mejorada: Todos los dispositivos, independientemente de la plataforma, incluyen reproductores de vídeo por defecto, lo que facilita a los usuarios abrir o reproducir vídeos en comparación con las aplicaciones tradicionales de presentaciones.
Alcance más amplio: Los vídeos le permiten llegar a una audiencia mayor y presentar la información de forma más atractiva. Encuestas y estadísticas indican que la gente prefiere ver y consumir contenido en vídeo frente a otros formatos, lo que hace su mensaje más impactante.
En Aspose.Slides for Python 24.4, implementamos soporte para convertir presentaciones a vídeo.
- Utilice Aspose.Slides for Python para generar fotogramas a partir de las diapositivas de la presentación a una velocidad de fotogramas especificada (FPS).
- Luego, utilice una herramienta de terceros como ffmpeg para compilar esos fotogramas en un vídeo.
Convertir una presentación PowerPoint a vídeo
- Utilice el comando pip install para añadir Aspose.Slides for Python a su proyecto:
pip install aspose-slides==24.4.0 - Descargue ffmpeg desde aquí o instálelo mediante el gestor de paquetes.
- Asegúrese de que ffmpeg esté en la
PATH. De lo contrario, lance ffmpeg usando la ruta completa al ejecutable (p. ej.,C:\ffmpeg\ffmpeg.exeen Windows o/opt/ffmpeg/ffmpegen Linux). - Ejecute el código de conversión de PowerPoint a vídeo.
Este código Python demuestra cómo convertir una presentación (que contiene una forma y dos efectos de animación) en un vídeo:
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)
Efectos de vídeo
Al convertir una presentación de PowerPoint a vídeo usando Aspose.Slides for Python, puede aplicar varios efectos de vídeo para mejorar la calidad visual del resultado. Estos efectos le permiten controlar la apariencia de las diapositivas en el vídeo final añadiendo transiciones suaves, animaciones y otros elementos visuales. Esta sección explica las opciones de efectos de vídeo disponibles y muestra cómo aplicarlas.
Las animaciones y transiciones hacen que las presentaciones sean más atractivas e interesantes — y lo mismo ocurre con los vídeos. Añadamos otra diapositiva y transición al código de la presentación anterior:
import aspose.pydrawing as drawing
# Añadir una forma sonriente y animarla.
# ...
# Añadir una nueva diapositiva y una transición animada.
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 también admite animaciones de texto. En este ejemplo, animamos párrafos en objetos para que aparezcan uno tras otro, con una demora de un segundo entre ellos:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Añadir texto y animaciones.
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
# Convertir fotogramas a 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)
Clases de conversión de vídeo
Para habilitar tareas de conversión de PowerPoint a vídeo, Aspose.Slides for Python proporciona el PresentationEnumerableFramesGenerator.
PresentationEnumerableFramesGenerator le permite establecer el tamaño del fotograma para el vídeo (que se creará más adelante) y el valor de FPS (fotogramas por segundo) a través de su constructor. Si pasa una instancia de una presentación, se utilizará su Presentation.SlideSize.
Para que todas las animaciones de una presentación se reproduzcan a la vez, use el método PresentationEnumerableFramesGenerator.enumerate_frames. Este método toma una colección de diapositivas y devuelve secuencialmente EnumerableFrameArgs. Luego, use EnumerableFrameArgs.get_frame() para obtener cada fotograma de vídeo.
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")
Luego, los fotogramas generados pueden compilarse en un vídeo. Para más detalles, consulte la sección Convert PowerPoint to Video.
Animaciones y efectos compatibles
Al convertir una presentación de PowerPoint a vídeo usando Aspose.Slides for Python, es importante comprender qué animaciones y efectos son compatibles en el resultado. Aspose.Slides admite una amplia gama de efectos comunes de entrada, salida y énfasis, como desvanecimiento, entrada en vuelo, zoom y rotación. Sin embargo, algunas animaciones avanzadas o personalizadas pueden no preservarse totalmente o pueden aparecer de forma diferente en el vídeo final. Esta sección describe las animaciones y efectos compatibles.
Entrada:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Appear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly In | ![]() |
![]() |
| Float In | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Wheel | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Grow & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
Énfasis:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulse | ![]() |
![]() |
| Color Pulse | ![]() |
![]() |
| Teeter | ![]() |
![]() |
| Spin | ![]() |
![]() |
| Grow/Shrink | ![]() |
![]() |
| Desaturate | ![]() |
![]() |
| Darken | ![]() |
![]() |
| Lighten | ![]() |
![]() |
| Transparency | ![]() |
![]() |
| Object Color | ![]() |
![]() |
| Complementary Color | ![]() |
![]() |
| Line Color | ![]() |
![]() |
| Fill Color | ![]() |
![]() |
Salida:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Disappear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly Out | ![]() |
![]() |
| Float Out | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shrink & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
Trayectorias de movimiento:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Lines | ![]() |
![]() |
| Arcs | ![]() |
![]() |
| Turns | ![]() |
![]() |
| Shapes | ![]() |
![]() |
| Loops | ![]() |
![]() |
| Custom Path | ![]() |
![]() |
Efectos de transición de diapositivas compatibles
Los efectos de transición de diapositivas juegan un papel importante en crear cambios fluidos y visualmente atractivos entre diapositivas en un vídeo. Aspose.Slides for Python admite una variedad de efectos de transición comunes para ayudar a preservar el flujo y estilo de su presentación original. Esta sección destaca los efectos de transición compatibles durante el proceso de conversión.
Sutil:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
Emocionante:
| Tipo de animación | 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 | ![]() |
![]() |
Contenido dinámico:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Pan | ![]() |
![]() |
| Ferris Wheel | ![]() |
![]() |
| Conveyor | ![]() |
![]() |
| Rotate | ![]() |
![]() |
| Orbit | ![]() |
![]() |
| Fly Through | ![]() |
![]() |
Preguntas frecuentes
¿Es posible convertir presentaciones protegidas con contraseña?
Sí, Aspose.Slides for Python permite trabajar con presentaciones protegidas con contraseña. Al procesar dichos archivos, es necesario proporcionar la contraseña correcta para que la biblioteca pueda acceder al contenido de la presentación.
¿Aspose.Slides for Python es compatible con su uso en soluciones en la nube?
Sí, Aspose.Slides for Python puede integrarse en aplicaciones y servicios en la nube. La biblioteca está diseñada para funcionar en entornos de servidor, garantizando alto rendimiento y escalabilidad para el procesamiento por lotes de archivos.
¿Existen limitaciones de tamaño para las presentaciones durante la conversión?
Aspose.Slides for Python es capaz de manejar presentaciones de prácticamente cualquier tamaño. No obstante, al trabajar con archivos muy grandes pueden ser necesarios recursos del sistema adicionales, y a veces se recomienda optimizar la presentación para mejorar el rendimiento.

