Видеокадр

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

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

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

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

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

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

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

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

// Создает экземпляр класса Presentation
Presentation pres = new Presentation("pres.pptx");
try {
    // Загружает видео
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // Получает первый слайд и добавляет видеокадр
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // Сохраняет презентацию на диск
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

В качестве альтернативы вы можете добавить видео, передав его путь к файлу напрямую в метод addVideoFrame(float x, float y, float width, float height, IVideo video):

Presentation pres = new Presentation();
try {
	ISlide sld = pres.getSlides().get_Item(0);
	IVideoFrame vf = sld.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
	if (pres != null) pres.dispose();
}

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

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

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

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

// Создает объект Presentation, представляющий файл презентации 
Presentation pres = new Presentation();
try {
    addVideoFromYouTube(pres, "Tj75Arhq5ho");
    pres.save("out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
    // Добавляет видеокадр
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // Загружает миниатюру
    String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
    URL url;

    try {
        url = new URL(thumbnailUri);
        videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

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

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

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

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

// Создает объект Presentation, представляющий файл презентации 
Presentation pres = new Presentation("VideoSample.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        for (IShape shape : slide.getShapes()) 
        {
            if (shape instanceof VideoFrame) 
            {
                IVideoFrame vf = (IVideoFrame) shape;
                String type = vf.getEmbeddedVideo().getContentType();
                int ss = type.lastIndexOf('-');
                byte[] buffer = vf.getEmbeddedVideo().getBinaryData();

                // Получает расширение файла
                int charIndex = type.indexOf("/");
                type = type.substring(charIndex + 1);

                FileOutputStream fop = new FileOutputStream("testing2." + type);
                fop.write(buffer);
                fop.flush();
                fop.close();
            }
        }
    }
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}