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

  1. Utilice el comando pip install para agregar Aspose.Slides for Python a su proyecto: pip install aspose-slides==24.4.0
  2. Descargue ffmpeg desde aquí o instálelo mediante el gestor de paquetes.
  3. 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.exe en Windows o /opt/ffmpeg/ffmpeg en Linux).
  4. 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 not supported supported
Desvanecer supported supported
Entrar volando supported supported
Flotar al entrar supported supported
Dividir supported supported
Barrer supported supported
Forma supported supported
Rueda supported supported
Barras aleatorias supported supported
Crecer y girar not supported supported
Zoom supported supported
Giro supported supported
Rebote supported supported

Énfasis:

Tipo de animación Aspose.Slides PowerPoint
Pulso not supported supported
Pulso de color not supported supported
Balanceo supported supported
Giro supported supported
Crecer/Encoger not supported supported
Desaturar not supported supported
Oscurecer not supported supported
Aclarar not supported supported
Transparencia not supported supported
Color del objeto not supported supported
Color complementario not supported supported
Color de línea not supported supported
Color de relleno not supported supported

Salida:

Tipo de animación Aspose.Slides PowerPoint
Desaparecer not supported supported
Desvanecer supported supported
Salir volando supported supported
Flotar al salir supported supported
Dividir supported supported
Barrer supported supported
Forma supported supported
Barras aleatorias supported supported
Encoger y girar not supported supported
Zoom supported supported
Giro supported supported
Rebote supported supported

Rutas de movimiento:

Tipo de animación Aspose.Slides PowerPoint
Líneas supported supported
Arcos supported supported
Giros supported supported
Formas supported supported
Bucles supported supported
Ruta personalizada supported supported

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 not supported supported
Desvanecer supported supported
Empujar supported supported
Jalar supported supported
Barrer supported supported
Dividir supported supported
Revelar not supported supported
Barras aleatorias supported supported
Forma not supported supported
Descubrir not supported supported
Cubrir supported supported
Destello supported supported
Tiras supported supported

Emocionante:

Tipo de animación Aspose.Slides PowerPoint
Caerse not supported supported
Capa not supported supported
Cortinas not supported supported
Viento not supported supported
Prestigio not supported supported
Fractura not supported supported
Aplastar not supported supported
Desprender not supported supported
Curvado de página not supported supported
Avión not supported supported
Origami not supported supported
Disolver supported supported
Tablero de damas not supported supported
Persianas not supported supported
Reloj supported supported
Ondulación not supported supported
Panel de abeja not supported supported
Brillo not supported supported
Vórtice not supported supported
Desgarrar not supported supported
Cambiar not supported supported
Voltear not supported supported
Galería not supported supported
Cubo not supported supported
Puertas not supported supported
Caja not supported supported
Peine not supported supported
Zoom supported supported
Aleatorio not supported supported

Contenido dinámico:

Tipo de animación Aspose.Slides PowerPoint
Paneo not supported supported
Rueda de la fortuna supported supported
Cinta transportadora not supported supported
Rotar not supported supported
Órbita not supported supported
Volar a través supported supported

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.