Конвертация PowerPoint в Видео
Конвертируя вашу презентацию PowerPoint в видео, вы получаете
- Увеличение доступности: Все устройства (независимо от платформы) по умолчанию оснащены видеоплеерами по сравнению с приложениями для открытия презентаций, поэтому пользователям проще открывать или воспроизводить видео.
- Большее охваты: С помощью видео вы можете достичь широкой аудитории и донести до них информацию, которая в противном случае может показаться утомительной в презентации. Большинство опросов и статистики показывают, что люди смотрят и потребляют видео больше, чем другие формы контента, и они в целом предпочитают такой контент.
Конвертация PowerPoint в Видео в Aspose.Slides
В Aspose.Slides 22.11 мы реализовали поддержку конвертации презентации в видео.
- Используйте Aspose.Slides для генерации набора кадров (из слайдов презентации), которые соответствуют определенному FPS (кадров в секунду)
- Используйте стороннюю утилиту, такую как FFMpegCore (ffmpeg), чтобы создать видео на основе кадров.
Конвертация PowerPoint в Видео
- Используйте команду dotnet add package, чтобы добавить Aspose.Slides и библиотеку FFMpegCore в ваш проект:
- выполните
dotnet add package Aspose.Slides.NET --version 22.11.0
- выполните
dotnet add package FFMpegCore --version 4.8.0
- выполните
- Скачайте ffmpeg здесь.
- FFMpegCore требует указать путь к загруженному ffmpeg (например, распакованный в “C:\tools\ffmpeg”):
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
- Запустите код конвертации PowerPoint в видео.
Этот код на C# показывает, как конвертировать презентацию (содержащую фигуру и два анимационных эффекта) в видео:
using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // Будем использовать бинарные файлы FFmpeg, которые мы извлекли в "c:\tools\ffmpeg" ранее
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
// Добавляет форму смайлика и затем анимирует ее
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);
}
// Настройка папки с бинарными файлами ffmpeg. Смотрите эту страницу: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
// Конвертирует кадры в видео webm
FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Видеоеффекты
Вы можете применять анимации к объектам на слайдах и использовать переходы между слайдами.
Анимации и переходы делают слайд-шоу более увлекательными и интересными — и они делают то же самое для видео. Давайте добавим еще один слайд и переход к коду для предыдущей презентации:
// Добавляет форму смайлика и анимирует ее
// ...
// Добавляет новый слайд и анимированный переход
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 также поддерживает анимацию для текстов. Так что мы анимируем параграфы на объектах, которые появятся один за другим (с задержкой, установленной на секунду):
using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
// Добавляет текст и анимации
IAutoShape autoShape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
Paragraph para1 = new Paragraph();
para1.Portions.Add(new Portion("Aspose Slides для .NET"));
Paragraph para2 = new Paragraph();
para2.Portions.Add(new Portion("конвертировать презентацию PowerPoint с текстом в видео"));
Paragraph para3 = new Paragraph();
para3.Portions.Add(new Portion("параграф за параграфом"));
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;
// Конвертирует кадры в видео
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);
}
// Настройка папки с бинарными файлами ffmpeg. Смотрите эту страницу: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
// Конвертирует кадры в видео webm
FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
Классы конвертации видео
Для выполнения задач конвертации PowerPoint в видео Aspose.Slides предоставляет классы PresentationAnimationsGenerator и PresentationPlayer.
PresentationAnimationsGenerator позволяет вам установить размер кадра для видео (которое будет создано позже) через его конструктор. Если вы передадите экземпляр презентации, будет использован Presentation.SlideSize
, и он генерирует анимации, которые использует PresentationPlayer.
Когда анимации сгенерированы, для каждой последующей анимации генерируется событие NewAnimation
, которое имеет параметр IPresentationAnimationPlayer. Последний — это класс, представляющий игрока для отдельной анимации.
Для работы с IPresentationAnimationPlayer используются свойство Duration (общая длительность анимации) и метод SetTimePosition. Каждое положение анимации устанавливается в диапазоне от 0 до длительности, а затем метод GetFrame
вернет Bitmap, который соответствует состоянию анимации в этот момент.
using (Presentation presentation = new Presentation())
{
// Добавляет форму смайлика и анимирует ее
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($"Общая длительность анимации: {animationPlayer.Duration}");
animationPlayer.SetTimePosition(0); // начальное состояние анимации
Bitmap bitmap = animationPlayer.GetFrame(); // битмап начального состояния анимации
animationPlayer.SetTimePosition(animationPlayer.Duration); // конечное состояние анимации
Bitmap lastBitmap = animationPlayer.GetFrame(); // последний кадр анимации
lastBitmap.Save("last.png");
};
}
}
Чтобы все анимации в презентации воспроизводились одновременно, используется класс PresentationPlayer. Этот класс принимает экземпляр PresentationAnimationsGenerator и FPS для эффектов в своем конструкторе, а затем вызывает событие FrameTick
для всех анимаций, чтобы их воспроизвести:
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);
}
}
Затем сгенерированные кадры могут быть собраны, чтобы создать видео. Смотрите раздел Конвертация PowerPoint в Видео.
Поддерживаемые анимации и эффекты
Вход:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Появление | ||
Потускнение | ||
Вход с летящим эффектом | ||
Вход с плавным эффектом | ||
Разделение | ||
Смыв | ||
Форма | ||
Колесо | ||
Случайные полосы | ||
Рост и поворот | ||
Масштабирование | ||
Качание | ||
Отскок |
Акцент:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Пульсация | ||
Цветовая пульсация | ||
Качание | ||
Вращение | ||
Увеличение/уменьшение | ||
Обесцвечивание | ||
Потемнение | ||
Осветление | ||
Прозрачность | ||
Цвет объекта | ||
Дополнительный цвет | ||
Цвет линии | ||
Цвет заливки |
Выход:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Исчезновение | ||
Потускнение | ||
Выход с летящим эффектом | ||
Выход с плавным эффектом | ||
Разделение | ||
Смыв | ||
Форма | ||
Случайные полосы | ||
Уменьшение и поворот | ||
Масштабирование | ||
Качание | ||
Отскок |
Движения по траектории:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Линии | ||
Арки | ||
Повороты | ||
Формы | ||
Циклы | ||
Пользовательский путь |
Поддерживаемые эффекты переходов слайдов
Нежные:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Морфинг | ||
Потускнение | ||
Толчок | ||
Привлечение | ||
Смыв | ||
Разделение | ||
Открытие | ||
Случайные полосы | ||
Форма | ||
Скрытие | ||
Покрытие | ||
Мигает | ||
Полосы |
Возбуждающие:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Упадок | ||
Драпировка | ||
Занавес | ||
Ветер | ||
Престиж | ||
Фрактура | ||
Сжатие | ||
Снятие | ||
Сгибание страниц | ||
Самолет | ||
Оригами | ||
Растворение | ||
Шахматная доска | ||
Жалюзи | ||
Часы | ||
Волна | ||
Соты | ||
Искры | ||
Воронка | ||
Рубка | ||
Переключить | ||
Перевернуть | ||
Галерея | ||
Куб | ||
Дверцы | ||
Коробка | ||
Гребень | ||
Масштабирование | ||
Случайный |
Динамическое содержимое:
Тип анимации | Aspose.Slides | PowerPoint |
---|---|---|
Панорамирование | ||
Колесо обозрения | ||
Конвейер | ||
Вращение | ||
Орбита | ||
Полет сквозь |