Convertir presentaciones de PowerPoint a vídeo en Python
Al convertir tu presentación de PowerPoint a video, obtienes
- Aumento en accesibilidad: Todos los dispositivos (independientemente de la plataforma) vienen equipados con reproductores de video por defecto en comparación con aplicaciones que abren presentaciones, por lo que a los usuarios les resulta más fácil abrir o reproducir videos.
- Mayor alcance: A través de videos, puedes alcanzar a una gran audiencia y brindarles información que de otro modo podría parecer tediosa en una presentación. La mayoría de las encuestas y estadísticas sugieren que las personas ven y consumen videos más que otras formas de contenido, y generalmente prefieren dicho contenido.
Conversión de PowerPoint a Video en Aspose.Slides
En Aspose.Slides 24.4, implementamos soporte para la conversión de presentaciones a video.
- Usa Aspose.Slides para generar un conjunto de cuadros (de las diapositivas de la presentación) que correspondan a cierta FPS (cuadros por segundo).
- Usa una utilidad de terceros como ffmpeg para crear un video basado en los cuadros.
Convertir PowerPoint a Video
- Usa el comando de instalación pip para agregar Aspose.Slides a tu proyecto:
- ejecuta
pip install Aspose.Slides==24.4.0
- ejecuta
- Descarga ffmpeg aquí o instala a través del administrador de paquetes.
- Asegúrate de que ffmpeg esté en el
PATH, de lo contrario, inicia ffmpeg utilizando la ruta completa al binario (por ejemplo,C:\ffmpeg\ffmpeg.exeen Windows o/opt/ffmpeg/ffmpegen Linux). - Ejecuta el código para convertir PowerPoint a video.
Este código Python muestra cómo convertir una presentación (que contiene una figura y dos efectos de animación) a un video:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
smile = presentation.slides[0].shapes.add_auto_shape(slides.ShapeType.SMILEY_FACE, 110, 20, 500, 500)
effect_in = presentation.slides[0].timeline.main_sequence.add_effect(smile, slides.animation.EffectType.FLY, slides.animation.EffectSubtype.TOP_LEFT, slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect_out = presentation.slides[0].timeline.main_sequence.add_effect(smile, 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
Puedes aplicar animaciones a objetos en las diapositivas y usar transiciones entre diapositivas.
Las animaciones y transiciones hacen que las presentaciones sean más atractivas e interesantes, y hacen lo mismo para los videos. Agreguemos otra diapositiva y una transición al código de la presentación anterior:
import aspose.pydrawing as drawing
# Agrega una forma de sonrisa y la anima
# ...
# Agrega una nueva diapositiva y 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 también soporta animaciones para textos. Así que animamos párrafos en objetos, que aparecerán uno tras otro (con el retraso configurado en un segundo):
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
# Agrega texto y animaciones
auto_shape = presentation.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 210, 120, 300, 300)
para1 = slides.Paragraph()
para1.portions.add(slides.Portion("Aspose Slides para .NET"))
para2 = slides.Paragraph()
para2.portions.add(slides.Portion("convertir presentación de PowerPoint con texto a video"))
para3 = slides.Paragraph()
para3.portions.add(slides.Portion("párrafo por párrafo"))
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 = presentation.slides[0].timeline.main_sequence.add_effect(para1, slides.animation.EffectType.APPEAR, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect2 = presentation.slides[0].timeline.main_sequence.add_effect(para2, slides.animation.EffectType.APPEAR, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect3 = presentation.slides[0].timeline.main_sequence.add_effect(para3, slides.animation.EffectType.APPEAR, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect4 = presentation.slides[0].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
# Convierte cuadros 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 permitirte realizar tareas de conversión de PowerPoint a video, Aspose.Slides proporciona el PresentationEnumerableAnimationsGenerator.
PresentationEnumerableAnimationsGenerator te permite establecer el tamaño del cuadro para el video (que se creará más tarde) y el valor de FPS (cuadros por segundo) a través de su constructor. Si pasas una instancia de la presentación, se usará Presentation.SlideSize.
Para que todas las animaciones en una presentación se reproduzcan a la vez, usa el método PresentationEnumerableAnimationsGenerator.enumerate_frames. Este método toma una colección de diapositivas y permite obtener secuencialmente EnumerableFrameArgs. Luego, EnumerableFrameArgs.get_frame() te permite obtener el cuadro de 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")
Luego, los cuadros generados pueden ser compilados para producir un video. Consulta la sección Convertir PowerPoint a Video.
Animaciones y Efectos Soportados
Entrada:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Aparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Entrar Volando | ![]() |
![]() |
| Entrar Flotando | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Rueda | ![]() |
![]() |
| Barras Aleatorias | ![]() |
![]() |
| Crecer y Girar | ![]() |
![]() |
| Acercar | ![]() |
![]() |
| Girar | ![]() |
![]() |
| Rebotar | ![]() |
![]() |
Énfasis:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulso | ![]() |
![]() |
| Pulso de Color | ![]() |
![]() |
| Balancearse | ![]() |
![]() |
| Girar | ![]() |
![]() |
| Crecer/Disminuir | ![]() |
![]() |
| Desaturar | ![]() |
![]() |
| Oscurecer | ![]() |
![]() |
| Aclarar | ![]() |
![]() |
| Transparencia | ![]() |
![]() |
| Color de Objeto | ![]() |
![]() |
| Color Complementario | ![]() |
![]() |
| Color de Línea | ![]() |
![]() |
| Color de Relleno | ![]() |
![]() |
Salida:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Desaparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Salir Volando | ![]() |
![]() |
| Salir Flotando | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Barras Aleatorias | ![]() |
![]() |
| Disminuir y Girar | ![]() |
![]() |
| Acercar | ![]() |
![]() |
| Girar | ![]() |
![]() |
| Rebotar | ![]() |
![]() |
Rutas de Movimiento:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Líneas | ![]() |
![]() |
| Arcos | ![]() |
![]() |
| Giros | ![]() |
![]() |
| Formas | ![]() |
![]() |
| Bucles | ![]() |
![]() |
| Ruta Personalizada | ![]() |
![]() |
Efectos de Transición de Diapositiva Soportados
Sutil:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Empujar | ![]() |
![]() |
| Tirar | ![]() |
![]() |
| Barrer | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Revelar | ![]() |
![]() |
| Barras Aleatorias | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Descubrir | ![]() |
![]() |
| Cubrir | ![]() |
![]() |
| Destello | ![]() |
![]() |
| Tiras | ![]() |
![]() |
Emocionante:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Caer | ![]() |
![]() |
| Drapeado | ![]() |
![]() |
| Cortinas | ![]() |
![]() |
| Viento | ![]() |
![]() |
| Prestigio | ![]() |
![]() |
| Fractura | ![]() |
![]() |
| Aplastar | ![]() |
![]() |
| Desprender | ![]() |
![]() |
| Papel Curl | ![]() |
![]() |
| Avión | ![]() |
![]() |
| Origami | ![]() |
![]() |
| Disolver | ![]() |
![]() |
| Damas | ![]() |
![]() |
| Persianas | ![]() |
![]() |
| Reloj | ![]() |
![]() |
| Olas | ![]() |
![]() |
| Panal | ![]() |
![]() |
| Brillo | ![]() |
![]() |
| Vórtice | ![]() |
![]() |
| Desgarrar | ![]() |
![]() |
| Cambiar | ![]() |
![]() |
| Girar | ![]() |
![]() |
| Galería | ![]() |
![]() |
| Cubo | ![]() |
![]() |
| Puertas | ![]() |
![]() |
| Caja | ![]() |
![]() |
| Peina | ![]() |
![]() |
| Acercar | ![]() |
![]() |
| Aleatorio | ![]() |
![]() |
Contenido Dinámico:
| Tipo de Animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Paneo | ![]() |
![]() |
| Rueda de la fortuna | ![]() |
![]() |
| Transportador | ![]() |
![]() |
| Rotar | ![]() |
![]() |
| Órbita | ![]() |
![]() |
| Volar a través | ![]() |
![]() |

