Convertir PowerPoint a Video

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 las aplicaciones para abrir presentaciones, por lo que a los usuarios les resulta más fácil abrir o reproducir videos.
  • Mayor alcance: A través de los videos, puedes alcanzar a una gran audiencia y dirigirla con 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 22.11, implementamos soporte para la conversión de presentación a video.

  • Usa Aspose.Slides para generar un conjunto de cuadros (de las diapositivas de la presentación) que correspondan a un cierto FPS (cuadros por segundo).
  • Usa una utilidad de terceros como FFMpegCore (ffmpeg) para crear un video basado en los cuadros.

Convertir PowerPoint a Video

  1. Usa el comando dotnet add package para agregar Aspose.Slides y la biblioteca FFMpegCore a tu proyecto:
    • ejecuta dotnet add package Aspose.Slides.NET --version 22.11.0
    • ejecuta dotnet add package FFMpegCore --version 4.8.0
  2. Descarga ffmpeg aquí.
  3. FFMpegCore requiere que especifiques la ruta al ffmpeg descargado (por ejemplo, extraído a “C:\tools\ffmpeg”): GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
  4. Ejecuta el código de PowerPoint a video.

Este código C# te muestra cómo convertir una presentación (que contiene una figura y dos efectos de animación) a un video:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // Usará los binarios de FFmpeg que extrajimos a "c:\tools\ffmpeg" anteriormente
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())

{
    // Agrega una forma de sonrisa y luego la anima
    IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
    effectIn.Timing.Duration = 2f;
    effectOut.PresetClassType = EffectPresetClassType.Exit;

   const int Fps = 33;
   List<string> frames = new List<string>();

   using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, Fps))
    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };
        animationsGenerator.Run(presentation.Slides);
    }

    // Configura la carpeta de binarios de ffmpeg. Consulta esta página: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Convierte los cuadros a video webm
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

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 por los videos. Agreguemos otra diapositiva y transición al código de la presentación anterior:

// Agrega una forma de sonrisa y la anima

// ...

// Agrega una nueva diapositiva y transición animada

ISlide newSlide = presentation.Slides.AddEmptySlide(presentation.Slides[0].LayoutSlide);

newSlide.Background.Type = BackgroundType.OwnBackground;

newSlide.Background.FillFormat.FillType = FillType.Solid;

newSlide.Background.FillFormat.SolidFillColor.Color = Color.Indigo;

newSlide.SlideShowTransition.Type = TransitionType.Push;

Aspose.Slides también admite animaciones para textos. Así que animamos párrafos en objetos, que aparecerán uno tras otro (con el retraso establecido en un segundo):

using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    // Agrega texto y animaciones
    IAutoShape autoShape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
    Paragraph para1 = new Paragraph();
    para1.Portions.Add(new Portion("Aspose Slides for .NET"));
    Paragraph para2 = new Paragraph();
    para2.Portions.Add(new Portion("convertir la Presentación de PowerPoint con texto a video"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("párrafo por párrafo"));
    autoShape.TextFrame.Paragraphs.Add(para1);
    autoShape.TextFrame.Paragraphs.Add(para2);
    autoShape.TextFrame.Paragraphs.Add(para3);
    autoShape.TextFrame.Paragraphs.Add(new Paragraph());

    IEffect effect = presentation.Slides[0].Timeline.MainSequence.AddEffect(para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect2 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect3 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect4 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect.Timing.TriggerDelayTime = 1f;
    effect2.Timing.TriggerDelayTime = 1f;
    effect3.Timing.TriggerDelayTime = 1f;
    effect4.Timing.TriggerDelayTime = 1f;

    // Convierte los cuadros a video
    const int Fps = 33;
    List<string> frames = new List<string>();
    
    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))

    using (var player = new PresentationPlayer(animationsGenerator, Fps))

    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };
        animationsGenerator.Run(presentation.Slides);
    }
    // Configura la carpeta de binarios de ffmpeg. Consulta esta página: https://github.com/rosenbjerg/FFMpegCore#installation

    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
    // Convierte los cuadros a video webm
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());

}

Clases de Conversión de Video

Para permitirte realizar tareas de conversión de PowerPoint a video, Aspose.Slides proporciona las clases PresentationAnimationsGenerator y PresentationPlayer.

PresentationAnimationsGenerator permite establecer el tamaño del cuadro para el video (que se creará más tarde) a través de su constructor. Si pasas una instancia de la presentación, Presentation.SlideSize se utilizará y genera animaciones que PresentationPlayer usa.

Cuando se generan animaciones, se genera un evento NewAnimation para cada animación subsiguiente, que tiene el parámetro IPresentationAnimationPlayer. Este último es una clase que representa un reproductor para una animación separada.

Para trabajar con IPresentationAnimationPlayer, se utilizan la propiedad Duration (la duración total de la animación) y el método SetTimePosition. Se establece cada posición de animación dentro del rango 0 a duración, y luego el método GetFrame devolverá un Bitmap que corresponde al estado de la animación en ese momento.

using (Presentation presentation = new Presentation())
{
    // Agrega una forma de sonrisa y la anima
    IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
    effectIn.Timing.Duration = 2f;
    effectOut.PresetClassType = EffectPresetClassType.Exit;

    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    {
        animationsGenerator.NewAnimation += animationPlayer =>
        {
            Console.WriteLine($"Duración total de la animación: {animationPlayer.Duration}");
            
            animationPlayer.SetTimePosition(0); // estado inicial de la animación
            Bitmap bitmap = animationPlayer.GetFrame(); // bitmap del estado inicial de la animación

            animationPlayer.SetTimePosition(animationPlayer.Duration); // estado final de la animación
            Bitmap lastBitmap = animationPlayer.GetFrame(); // último cuadro de la animación
            lastBitmap.Save("last.png");
        };
    }
}

Para hacer que todas las animaciones en una presentación se reproduzcan a la vez, se utiliza la clase PresentationPlayer. Esta clase toma una instancia de PresentationAnimationsGenerator y FPS para efectos en su constructor y luego llama al evento FrameTick para todas las animaciones para que se reproduzcan:

using (Presentation presentation = new Presentation("animated.pptx"))
{
    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, 33))
    {
        player.FrameTick += (sender, args) =>
        {
            args.GetFrame().Save($"frame_{sender.FrameIndex}.png");
        };
        animationsGenerator.Run(presentation.Slides);
    }
}

Luego, los cuadros generados pueden compilarse 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 no soportado soportado
Desvanecer soportado soportado
Entrar volando soportado soportado
Entrar flotando soportado soportado
Dividir soportado soportado
Barrer soportado soportado
Forma soportado soportado
Rueda soportado soportado
Barras aleatorias soportado soportado
Crecer y girar no soportado soportado
Zoom soportado soportado
Girar soportado soportado
Rebotar soportado soportado

Énfasis:

Tipo de Animación Aspose.Slides PowerPoint
Latido no soportado soportado
Latido de Color no soportado soportado
Balancín soportado soportado
Giro soportado soportado
Crecer/Encoger no soportado soportado
Desaturar no soportado soportado
Oscurecer no soportado soportado
Aclarar no soportado soportado
Transparencia no soportado soportado
Color de Objeto no soportado soportado
Color Complementario no soportado soportado
Color de Línea no soportado soportado
Color de Relleno no soportado soportado

Salida:

Tipo de Animación Aspose.Slides PowerPoint
Desaparecer no soportado soportado
Desvanecer soportado soportado
Saliendo volando soportado soportado
Saliendo flotando soportado soportado
Dividir soportado soportado
Barrer soportado soportado
Forma soportado soportado
Barras aleatorias soportado soportado
Encoger y girar no soportado soportado
Zoom soportado soportado
Girar soportado soportado
Rebotar soportado soportado

Rutas de Movimiento:

Tipo de Animación Aspose.Slides PowerPoint
Líneas soportado soportado
Arcos soportado soportado
Giros soportado soportado
Formas soportado soportado
Bucles soportado soportado
Ruta Personalizada soportado soportado

Efectos de Transición de Diapositivas Soportados

Sutil:

Tipo de Animación Aspose.Slides PowerPoint
Morfología no soportado soportado
Desvanecer soportado soportado
Empujar soportado soportado
Tirar soportado soportado
Barrer soportado soportado
Dividir soportado soportado
Revelar no soportado soportado
Barras aleatorias soportado soportado
Forma no soportado soportado
Descubrir no soportado soportado
Cubrir soportado soportado
Destello soportado soportado
Tiras soportado soportado

Emocionante:

Tipo de Animación Aspose.Slides PowerPoint
Caer no soportado soportado
Cortina no soportado soportado
Cortinas no soportado soportado
Viento no soportado soportado
Prestigio no soportado soportado
Fractura no soportado soportado
Aplastar no soportado soportado
Despegar no soportado soportado
Curva de Página no soportado soportado
Avión no soportado soportado
Origami no soportado soportado
Disolver soportado soportado
Tablero de Ajedrez no soportado soportado
Persianas no soportado soportado
Reloj soportado soportado
Ripple no soportado soportado
Panal no soportado soportado
Brillo no soportado soportado
Vórtice no soportado soportado
Rasgar no soportado soportado
Cambiar no soportado soportado
Girar no soportado soportado
Galería no soportado soportado
Cubo no soportado soportado
Puertas no soportado soportado
Caja no soportado soportado
Peina no soportado soportado
Zoom soportado soportado
Aleatorio no soportado soportado

Contenido Dinámico:

Tipo de Animación Aspose.Slides PowerPoint
Paneo no soportado soportado
Noria soportado soportado
Cinta Transportadora no soportado soportado
Rotar no soportado soportado
Órbita no soportado soportado
Voladura soportado soportado