Convertir presentaciones de PowerPoint a video en .NET
Descripción general
Al convertir su presentación de PowerPoint o OpenDocument a video, usted obtiene:
Mayor accesibilidad: Todos los dispositivos, sin importar la plataforma, incluyen reproductores de video por defecto, lo que facilita a los usuarios abrir o reproducir videos en comparación con las aplicaciones tradicionales de presentaciones.
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 las personas prefieren ver y consumir contenido en video sobre otras formas, haciendo que su mensaje sea más impactante.
En Aspose.Slides for .NET, implementamos soporte para convertir presentaciones a video.
- Utilice Aspose.Slides for .NET para generar fotogramas a partir de las diapositivas de la presentación a una tasa de fotogramas especificada (FPS).
- Luego, use una utilidad de terceros como ffmpeg para compilar esos fotogramas en un video.
Convertir una presentación de PowerPoint a video
- Utilice el comando
dotnet add packagepara añadir Aspose.Slides y la biblioteca FFMpegCore a su proyecto:- ejecute
dotnet add package Aspose.Slides.NET --version 22.11.0 - ejecute
dotnet add package FFMpegCore --version 4.8.0
- ejecute
- Descargue ffmpeg desde aquí.
- FFMpegCore requiere que indique la ruta al ffmpeg descargado (p. ej., extraído en “C:\tools\ffmpeg”):
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
- Ejecute el código de conversión de PowerPoint a video.
Este código C# demuestra cómo convertir una presentación (que contiene una forma y dos efectos de animación) en un video:
using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // utilizará los binarios de FFmpeg que extrajimos a C:\tools\ffmpeg anteriormente.
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Agregar una forma de sonrisa y luego animarla.
IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = slide.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);
}
// Configurar la carpeta de binarios de ffmpeg. Ver esta página: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Convertir los fotogramas a un video webm.
FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Efectos de video
Al convertir una presentación de PowerPoint a video usando Aspose.Slides for .NET, 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 aplicarlas.
Vea:
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:
// Agregar una forma de sonrisa y animarla.
// ...
// Agregar una nueva diapositiva y una 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 de texto. En este ejemplo, animamos párrafos en objetos para que aparezcan uno tras otro, con un retraso de un segundo entre ellos:
using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Agregar texto y animaciones.
IAutoShape autoShape = slide.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("Convert a PowerPoint presentation with text to video"));
Paragraph para3 = new Paragraph();
para3.Portions.Add(new Portion("paragraph by paragraph"));
autoShape.TextFrame.Paragraphs.Add(para1);
autoShape.TextFrame.Paragraphs.Add(para2);
autoShape.TextFrame.Paragraphs.Add(para3);
autoShape.TextFrame.Paragraphs.Add(new Paragraph());
IEffect effect1 = slide.Timeline.MainSequence.AddEffect(
para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect2 = slide.Timeline.MainSequence.AddEffect(
para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect3 = slide.Timeline.MainSequence.AddEffect(
para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect4 = slide.Timeline.MainSequence.AddEffect(
para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
effect1.Timing.TriggerDelayTime = 1f;
effect2.Timing.TriggerDelayTime = 1f;
effect3.Timing.TriggerDelayTime = 1f;
effect4.Timing.TriggerDelayTime = 1f;
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);
}
// Configurar la carpeta de binarios de ffmpeg. Ver esta página: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Convertir los fotogramas a un video webm.
FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Clases de conversión de video
Para habilitar tareas de conversión de PowerPoint a video, Aspose.Slides for .NET proporciona las clases PresentationAnimationsGenerator y PresentationPlayer.
PresentationAnimationsGenerator le permite establecer el tamaño del fotograma para el video (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 usará su Presentation.SlideSize y genera animaciones que PresentationPlayer utiliza.
Cuando se generan animaciones, se dispara un evento NewAnimation para cada animación subsiguiente, que incluye un parámetro IPresentationAnimationPlayer. Esta clase representa un reproductor para una animación individual.
Para trabajar con IPresentationAnimationPlayer, usa la propiedad Duration (que indica la duración total de la animación) y el método SetTimePosition. Cada posición de animación se establece dentro del rango 0 a duración, y el método GetFrame devuelve un Bitmap que representa el estado de la animación en ese momento.
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Agregar una forma de sonrisa y animarla.
IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = slide.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($"Total animation duration: {animationPlayer.Duration}");
animationPlayer.SetTimePosition(0); // El estado inicial de la animación.
Bitmap bitmap = animationPlayer.GetFrame(); // El mapa de bits del estado inicial de la animación.
animationPlayer.SetTimePosition(animationPlayer.Duration); // El estado final de la animación.
Bitmap lastBitmap = animationPlayer.GetFrame(); // El último fotograma de la animación.
lastBitmap.Save("last.png");
};
}
}
Para que todas las animaciones de una presentación se reproduzcan a la vez, se utiliza la clase PresentationPlayer. Esta clase recibe una instancia de PresentationAnimationsGenerator y un valor de FPS para los efectos en su constructor, y luego llama al evento FrameTick para todas las animaciones y reproducirlas:
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 fotogramas generados pueden compilarse para producir un video. Consulte la sección Convertir una presentación de PowerPoint a video.
Animaciones y efectos compatibles
Al convertir una presentación de PowerPoint a video usando Aspose.Slides for .NET, es importante entender qué animaciones y efectos son compatibles en el resultado. Aspose.Slides admite una amplia variedad de efectos comunes de entrada, salida y énfasis como desvanecimiento, entrada voladora, 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 |
|---|---|---|
| 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 al crear cambios suaves y visualmente atractivos entre diapositivas en un video. Aspose.Slides for .NET admite una variedad de efectos de transición de uso frecuente para ayudar a preservar el flujo y el estilo de su presentación original. Esta sección resalta qué efectos de transición son compatibles durante el proceso de conversión.
Sutiles:
| Tipo de animación | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
Emocionantes:
| 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 .NET 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 .NET admite su uso en soluciones en la nube?
Sí, Aspose.Slides for .NET 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 .NET es capaz de manejar presentaciones de prácticamente cualquier tamaño. Sin embargo, al trabajar con archivos muy grandes, pueden requerirse recursos de sistema adicionales, y a veces se recomienda optimizar la presentación para mejorar el rendimiento.

