Converter apresentações PowerPoint em vídeo no .NET
Introdução
Ao converter sua apresentação PowerPoint ou OpenDocument em vídeo, você obtém:
Aumento da acessibilidade: Todos os dispositivos, independentemente da plataforma, vêm com reprodutores de vídeo por padrão, facilitando a abertura ou reprodução de vídeos em comparação com aplicativos de apresentação tradicionais.
Alcance mais amplo: Os vídeos permitem alcançar um público maior e apresentar informações de forma mais envolvente. Pesquisas e estatísticas indicam que as pessoas preferem assistir e consumir conteúdo em vídeo em vez de outras formas, tornando sua mensagem mais impactante.
No Aspose.Slides for .NET, implementamos suporte para converter apresentações em vídeo.
- Use Aspose.Slides for .NET para gerar quadros a partir dos slides da apresentação em uma taxa de quadros especificada (FPS).
- Em seguida, use uma ferramenta de terceiros como ffmpeg para compilar esses quadros em um vídeo.
Converter uma Apresentação PowerPoint em Vídeo
- Use o comando
dotnet add packagepara adicionar Aspose.Slides e a biblioteca FFMpegCore ao seu projeto:- execute
dotnet add package Aspose.Slides.NET --version 22.11.0 - execute
dotnet add package FFMpegCore --version 4.8.0
- execute
- Baixe ffmpeg de here.
- O FFMpegCore requer que você especifique o caminho para o ffmpeg baixado (por exemplo, extraído para “C:\tools\ffmpeg”):
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
- Execute o código de conversão de PowerPoint para vídeo.
Este código C# demonstra como converter uma apresentação (contendo uma forma e dois efeitos de animação) em um vídeo:
using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // usará os binários FFmpeg que extraímos para C:\tools\ffmpeg anteriormente.
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Adicione uma forma de sorriso e depois anime-a.
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);
}
// Configure a pasta dos binários ffmpeg. Veja esta página: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Converta os quadros em um vídeo webm.
FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Efeitos de Vídeo
Ao converter uma apresentação PowerPoint em vídeo usando Aspose.Slides for .NET, você pode aplicar vários efeitos de vídeo para melhorar a qualidade visual do resultado. Esses efeitos permitem controlar a aparência dos slides no vídeo final, adicionando transições suaves, animações e outros elementos visuais. Esta seção explica as opções de efeito de vídeo disponíveis e mostra como aplicá‑las.
Veja:
Animações e transições tornam apresentações de slides mais envolventes e interessantes — e o mesmo vale para vídeos. Vamos adicionar outro slide e transição ao código da apresentação anterior:
// Adicione uma forma de sorriso e anime-a.
// ...
// Adicione um novo slide e uma transição 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;
O Aspose.Slides também oferece suporte a animações de texto. Neste exemplo, animamos parágrafos em objetos para que eles apareçam um após o outro, com um atraso de um segundo entre eles:
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];
// Adicione texto e animações.
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);
}
// Configure a pasta dos binários ffmpeg. Veja esta página: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
// Converta os quadros em um vídeo webm.
FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Classes de Conversão de Vídeo
Para habilitar tarefas de conversão de PowerPoint para vídeo, o Aspose.Slides for .NET fornece as classes PresentationAnimationsGenerator e PresentationPlayer.
PresentationAnimationsGenerator permite definir o tamanho do quadro para o vídeo (que será criado posteriormente) e o valor FPS (quadros por segundo) através do seu construtor. Se você passar uma instância de apresentação, seu Presentation.SlideSize será usado e ele gera animações que o PresentationPlayer utiliza.
Quando as animações são geradas, um evento NewAnimation é disparado para cada animação subsequente, incluindo um parâmetro IPresentationAnimationPlayer. Essa classe representa um player para uma animação individual.
Para trabalhar com IPresentationAnimationPlayer, você usa a propriedade Duration (que fornece a duração total da animação) e o método SetTimePosition. Cada posição de animação é definida dentro do intervalo 0 a duration, e o método GetFrame então retorna um Bitmap que representa o estado da animação naquele instante.
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// Adicione uma forma de sorriso e anime-a.
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); // O estado inicial da animação.
Bitmap bitmap = animationPlayer.GetFrame(); // O bitmap do estado inicial da animação.
animationPlayer.SetTimePosition(animationPlayer.Duration); // O estado final da animação.
Bitmap lastBitmap = animationPlayer.GetFrame(); // O último quadro da animação.
lastBitmap.Save("last.png");
};
}
}
Para fazer com que todas as animações de uma apresentação sejam reproduzidas simultaneamente, utiliza‑se a classe PresentationPlayer. Essa classe recebe uma instância de PresentationAnimationsGenerator e um valor FPS para os efeitos em seu construtor, e então chama o evento FrameTick para todas as animações reproduzi‑las:
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);
}
}
Em seguida, os quadros gerados podem ser compilados para produzir um vídeo. Veja a seção Convert a PowerPoint Presentation to Video.
Animações e Efeitos Suportados
Ao converter uma apresentação PowerPoint em vídeo usando Aspose.Slides for .NET, é importante entender quais animações e efeitos são preservados no resultado. O Aspose.Slides oferece suporte a uma ampla gama de efeitos de entrada, saída e ênfase comuns, como fade, fly in, zoom e spin. Entretanto, algumas animações avançadas ou personalizadas podem não ser totalmente preservadas ou podem aparecer de forma diferente no vídeo final. Esta seção descreve as animações e efeitos suportados.
Entrada:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Aparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Voo para dentro | ![]() |
![]() |
| Flutuar para dentro | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Limpar | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Roda | ![]() |
![]() |
| Barras aleatórias | ![]() |
![]() |
| Crescer e girar | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Giratório | ![]() |
![]() |
| Quicar | ![]() |
![]() |
Ênfase:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulso | ![]() |
![]() |
| Pulso de cor | ![]() |
![]() |
| Oscilar | ![]() |
![]() |
| Girar | ![]() |
![]() |
| Crescer/Encolher | ![]() |
![]() |
| Dessaturar | ![]() |
![]() |
| Escurecer | ![]() |
![]() |
| Clarear | ![]() |
![]() |
| Transparência | ![]() |
![]() |
| Cor do objeto | ![]() |
![]() |
| Cor complementar | ![]() |
![]() |
| Cor da linha | ![]() |
![]() |
| Cor de preenchimento | ![]() |
![]() |
Saída:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Desaparecer | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Voo para fora | ![]() |
![]() |
| Flutuar para fora | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Limpar | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Barras aleatórias | ![]() |
![]() |
| Encolher e girar | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Giratório | ![]() |
![]() |
| Quicar | ![]() |
![]() |
Caminhos de Movimento:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Linhas | ![]() |
![]() |
| Arcos | ![]() |
![]() |
| Curvas | ![]() |
![]() |
| Formas | ![]() |
![]() |
| Loops | ![]() |
![]() |
| Caminho personalizado | ![]() |
![]() |
Efeitos de Transição de Slides Suportados
Os efeitos de transição de slides desempenham um papel importante na criação de mudanças suaves e visualmente atraentes entre slides em um vídeo. O Aspose.Slides for .NET oferece suporte a uma variedade de transições comumente usadas para ajudar a preservar o fluxo e o estilo da sua apresentação original. Esta seção destaca quais transições são suportadas durante o processo de conversão.
Sutil:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Morfose | ![]() |
![]() |
| Desvanecer | ![]() |
![]() |
| Empurrar | ![]() |
![]() |
| Puxar | ![]() |
![]() |
| Limpar | ![]() |
![]() |
| Dividir | ![]() |
![]() |
| Revelar | ![]() |
![]() |
| Barras aleatórias | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Descobrir | ![]() |
![]() |
| Cobrir | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Tiras | ![]() |
![]() |
Empolgante:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Cair | ![]() |
![]() |
| Cortina | ![]() |
![]() |
| Cortinas | ![]() |
![]() |
| Vento | ![]() |
![]() |
| Prestígio | ![]() |
![]() |
| Fratura | ![]() |
![]() |
| Esmagar | ![]() |
![]() |
| Descolar | ![]() |
![]() |
| Curvatura de página | ![]() |
![]() |
| Avião | ![]() |
![]() |
| Origami | ![]() |
![]() |
| Dissolver | ![]() |
![]() |
| Tabuleiro | ![]() |
![]() |
| Cortinas | ![]() |
![]() |
| Relógio | ![]() |
![]() |
| Ondulação | ![]() |
![]() |
| Favo | ![]() |
![]() |
| Brilho | ![]() |
![]() |
| Vórtice | ![]() |
![]() |
| Desfiar | ![]() |
![]() |
| Alternar | ![]() |
![]() |
| Virar | ![]() |
![]() |
| Galeria | ![]() |
![]() |
| Cubo | ![]() |
![]() |
| Portas | ![]() |
![]() |
| Caixa | ![]() |
![]() |
| Pente | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Aleatório | ![]() |
![]() |
Conteúdo Dinâmico:
| Tipo de Animação | Aspose.Slides | PowerPoint |
|---|---|---|
| Panorâmica | ![]() |
![]() |
| Roda‑gigante | ![]() |
![]() |
| Esteira | ![]() |
![]() |
| Rotacionar | ![]() |
![]() |
| Órbita | ![]() |
![]() |
| Voo através | ![]() |
![]() |
FAQ
É possível converter apresentações protegidas por senha?
Sim, o Aspose.Slides for .NET permite trabalhar com apresentações protegidas por senha. Ao processar esses arquivos, você precisa fornecer a senha correta para que a biblioteca possa acessar o conteúdo da apresentação.
O Aspose.Slides para .NET oferece suporte ao uso em soluções de nuvem?
Sim, o Aspose.Slides for .NET pode ser integrado em aplicações e serviços baseados em nuvem. A biblioteca foi projetada para funcionar em ambientes de servidor, garantindo alto desempenho e escalabilidade para o processamento em lote de arquivos.
Existem limitações de tamanho para apresentações durante a conversão?
O Aspose.Slides for .NET é capaz de lidar com apresentações de praticamente qualquer tamanho. Contudo, ao trabalhar com arquivos muito grandes, podem ser necessários recursos adicionais do sistema, e às vezes recomenda‑se otimizar a apresentação para melhorar o desempenho.

