Convertir presentaciones de PowerPoint a video con Python
Resumen
Al convertir su presentación de PowerPoint o OpenDocument a video, usted obtiene:
Accesibilidad mejorada: Todos los dispositivos, independientemente de la plataforma, vienen equipados con reproductores de video por defecto, lo que facilita a los usuarios abrir o reproducir videos en comparación con las aplicaciones tradicionales de presentación.
Alcance más amplio: Los videos le permiten llegar a una audiencia mayor y presentar la información en un formato más atractivo. Encuestas y estadísticas indican que la gente prefiere ver y consumir contenido de video sobre otras formas, haciendo su mensaje más impactante.
En Aspose.Slides for Python 24.4, implementamos soporte para convertir presentaciones a video.
- Utilice Aspose.Slides for Python para generar fotogramas a partir de las diapositivas de la presentación a una velocidad de cuadros especificada (FPS).
- Luego, use una utilidad de terceros como ffmpeg para compilar estos fotogramas en un video.
Convertir una presentación de PowerPoint a video
- Utilice el comando pip install para agregar 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, inicie ffmpeg usando la ruta completa al ejecutable (por ejemplo,C:\ffmpeg\ffmpeg.exeen Windows o/opt/ffmpeg/ffmpegen Linux). - Ejecute el código de conversión de PowerPoint a video.
Este código Python demuestra cómo convertir una presentación (que contiene una forma y dos efectos de animación) en un video:
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 video
Al convertir una presentación de PowerPoint a video usando Aspose.Slides for Python, puede aplicar varios efectos de video para mejorar la calidad visual del resultado. Estos efectos le permiten controlar la apariencia de las diapositivas en el video final añadiendo transiciones suaves, animaciones y otros elementos visuales. Esta sección explica las opciones de efectos de video disponibles y muestra cómo aplicarlos.
Las animaciones y transiciones hacen que las presentaciones sean más atractivas e interesantes — y lo mismo ocurre con los videos. Añadamos otra diapositiva y transición al código de la presentación anterior:
import aspose.pydrawing as drawing
# Añadir una forma de sonrisa 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 un retraso de un segundo entre ellos:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Agregar 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 video
Para habilitar tareas de conversión de PowerPoint a video, Aspose.Slides for Python ofrece el PresentationEnumerableAnimationsGenerator.
PresentationEnumerableAnimationsGenerator le permite establecer el tamaño del fotograma para el video (que se creará posteriormente) y el valor de FPS (cuadros por segundo) a través de su constructor. Si pasa una instancia de una presentación, se usará su Presentation.SlideSize.
Para que todas las animaciones en una presentación se reproduzcan a la vez, use el método PresentationEnumerableAnimationsGenerator.enumerate_frames. Este método toma una colección de diapositivas y devuelve secuencialmente EnumerableFrameArgs. Luego, utilice EnumerableFrameArgs.get_frame() para obtener cada fotograma del video.
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")
Después, los fotogramas generados pueden compilarse en un video. Para más detalles, consulte la sección Convertir PowerPoint a Video.
Animaciones y efectos compatibles
Al convertir una presentación de PowerPoint a video 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, vuelo, zoom y giro. Sin embargo, algunas animaciones avanzadas o personalizadas pueden no preservarse completamente o pueden aparecer de forma diferente en el video final. Esta sección describe las animaciones y efectos compatibles.
Entrada:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Aparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Entrar volando | ![]() |
![]() |
| Flotar al entrar | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Rueda | ![]() |
![]() |
| Barras aleatorias | ![]() |
![]() |
| Crecer y girar | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Giro | ![]() |
![]() |
| Rebote | ![]() |
![]() |
Énfasis:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulso | ![]() |
![]() |
| Pulso de color | ![]() |
![]() |
| Balanceo | ![]() |
![]() |
| Giro | ![]() |
![]() |
| Crecer/Encoger | ![]() |
![]() |
| Desaturar | ![]() |
![]() |
| Oscurecer | ![]() |
![]() |
| Aclarar | ![]() |
![]() |
| Transparencia | ![]() |
![]() |
| Color del objeto | ![]() |
![]() |
| Color complementario | ![]() |
![]() |
| Color de línea | ![]() |
![]() |
| Color de relleno | ![]() |
![]() |
Salida:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Desaparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Salir volando | ![]() |
![]() |
| Flotar al salir | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Barras aleatorias | ![]() |
![]() |
| Encoger y girar | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Giro | ![]() |
![]() |
| Rebote | ![]() |
![]() |
Rutas de movimiento:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Líneas | ![]() |
![]() |
| Arcos | ![]() |
![]() |
| Giros | ![]() |
![]() |
| Formas | ![]() |
![]() |
| Bucles | ![]() |
![]() |
| Ruta personalizada | ![]() |
![]() |
Efectos de transición de diapositivas compatibles
Los efectos de transición de diapositivas juegan un papel importante en crear cambios suaves y visualmente atractivos entre diapositivas en un video. Aspose.Slides for Python admite una variedad de efectos de transición de uso común para ayudar a preservar el flujo y estilo de su presentación original. Esta sección destaca qué efectos de transición son compatibles durante el proceso de conversión.
Sutil:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Transformar | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Empujar | ![]() |
![]() |
| Jalar | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Revelar | ![]() |
![]() |
| Barras aleatorias | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Descubrir | ![]() |
![]() |
| Cubrir | ![]() |
![]() |
| Destello | ![]() |
![]() |
| Tiras | ![]() |
![]() |
Emocionante:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Caerse | ![]() |
![]() |
| Capa | ![]() |
![]() |
| Cortinas | ![]() |
![]() |
| Viento | ![]() |
![]() |
| Prestigio | ![]() |
![]() |
| Fractura | ![]() |
![]() |
| Aplastar | ![]() |
![]() |
| Desprender | ![]() |
![]() |
| Curvado de página | ![]() |
![]() |
| Avión | ![]() |
![]() |
| Origami | ![]() |
![]() |
| Disolver | ![]() |
![]() |
| Tablero de damas | ![]() |
![]() |
| Persianas | ![]() |
![]() |
| Reloj | ![]() |
![]() |
| Ondulación | ![]() |
![]() |
| Panel de abeja | ![]() |
![]() |
| Brillo | ![]() |
![]() |
| Vórtice | ![]() |
![]() |
| Desgarrar | ![]() |
![]() |
| Cambiar | ![]() |
![]() |
| Voltear | ![]() |
![]() |
| Galería | ![]() |
![]() |
| Cubo | ![]() |
![]() |
| Puertas | ![]() |
![]() |
| Caja | ![]() |
![]() |
| Peine | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Aleatorio | ![]() |
![]() |
Contenido dinámico:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Paneo | ![]() |
![]() |
| Rueda de la fortuna | ![]() |
![]() |
| Cinta transportadora | ![]() |
![]() |
| Rotar | ![]() |
![]() |
| Órbita | ![]() |
![]() |
| Volar a través | ![]() |
![]() |
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, debe proporcionar la contraseña correcta para que la biblioteca pueda acceder al contenido de la presentación.
¿Aspose.Slides for Python admite 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. Sin embargo, al trabajar con archivos muy grandes, pueden requerirse recursos del sistema adicionales, y a veces se recomienda optimizar la presentación para mejorar el rendimiento.

