Видеокадр

Правильно размещенное видео в презентации может сделать ваше сообщение более убедительным и повысить уровень вовлеченности вашей аудитории.

PowerPoint позволяет добавлять видео на слайд в презентации двумя способами:

  • Добавить или встроить локальное видео (сохраненное на вашем компьютере)
  • Добавить онлайн-видео (из веб-источника, такого как YouTube).

Чтобы предоставить возможность добавления видео (видеобъектов) в презентацию, Aspose.Slides предоставляет интерфейс IVideo, интерфейс IVideoFrame и другие соответствующие типы.

Создание встроенного видеокадра

Если файл видео, который вы хотите добавить на свой слайд, хранится локально, вы можете создать видеокадр для встраивания видео в вашу презентацию.

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд через его индекс.
  3. Добавьте объект IVideo и передайте путь к видеофайлу, чтобы встроить видео в презентацию.
  4. Добавьте объект IVideoFrame, чтобы создать рамку для видео.
  5. Сохраните измененную презентацию.

Этот код C# показывает, как добавить видео, хранящееся локально, в презентацию:

// Создает экземпляр класса Presentation
using (Presentation pres = new Presentation("pres.pptx"))
{
    // Загружает видео
    using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
    {
        IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
        
        // Получает первый слайд и добавляет видеокадр
        pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
        
        // Сохраняет презентацию на диск
        pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
    }
}

В качестве альтернативы вы можете добавить видео, передав его путь к файлу напрямую в метод AddVideoFrame:

using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}

Создание видеокадра с видео из веб-источника

Microsoft PowerPoint 2013 и новее поддерживают видео YouTube в презентациях. Если видео, которое вы хотите использовать, доступно онлайн (например, на YouTube), вы можете добавить его в свою презентацию через его веб-ссылку.

  1. Создайте экземпляр класса Presentation
  2. Получите ссылку на слайд через его индекс.
  3. Добавьте объект IVideo и передайте ссылку на видео.
  4. Установите миниатюру для видеокадра.
  5. Сохраните презентацию.

Этот код C# показывает, как добавить видео из интернета на слайд в презентации PowerPoint:

public static void Run()
{
    // Создает экземпляр объекта Presentation, который представляет файл презентации 
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
    // Добавляет видеокадр
    IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
    videoFrame.PlayMode = VideoPlayModePreset.Auto;

    // Загружает миниатюру
    using (WebClient client = new WebClient())
    {
        string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
        videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
    }
}

Извлечение видео из слайда

Кроме добавления видео на слайды, Aspose.Slides позволяет извлекать видео, встроенные в презентации.

  1. Создайте экземпляр класса Presentation, чтобы загрузить презентацию, содержащую видео.
  2. Пройдите через все объекты ISlide.
  3. Пройдите через все объекты IShape, чтобы найти VideoFrame.
  4. Сохраните видео на диск.

Этот код C# показывает, как извлечь видео со слайда презентации:

// Создает экземпляр объекта Presentation, который представляет файл презентации 
Presentation presentation = new Presentation("Video.pptx");

// Проходит через слайды
foreach (ISlide slide in presentation.Slides)
{
    // Проходит через фигуры
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Сохраняет видео на диск, как только найден VideoFrame, содержащий видео
        if (shape is VideoFrame)
        {
            IVideoFrame vf = shape as IVideoFrame;
            String type = vf.EmbeddedVideo.ContentType;
            int ss = type.LastIndexOf('/');
            type = type.Remove(0, type.LastIndexOf('/') + 1);
            Byte[] buffer = vf.EmbeddedVideo.BinaryData;
            using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
            {                                                     
                stream.Write(buffer, 0, buffer.Length);
            }
        }
    }
}