Добавление видео в презентации на Python

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

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

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

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

Создать встроенный видеокадр

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

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

Этот код Python демонстрирует, как добавить локальное видео в презентацию:

import aspose.slides as slides

with slides.Presentation(path + "pres.pptx") as pres:
    with open("Wildlife.mp4", "br") as fileStream:
        video = pres.videos.add_video(fileStream, slides.LoadingStreamBehavior.KEEP_LOCKED)

        # Получает первый слайд и добавляет видеокадр
        pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)

        # Сохраняет презентацию на диск
        pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)

В качестве альтернативы вы можете добавить видео, передав путь к файлу непосредственно в метод add_video_frame(x, y, width, height, fname):

import aspose.slides as slides

with slides.Presentation() as pres:
    sld = pres.slides[0]
    vf = sld.shapes.add_video_frame(50, 150, 300, 150, "video1.avi")

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

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

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

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

import aspose.slides as slides
from urllib.request import urlopen

def add_video_from_youyube(pres, videoId):
    # Добавляет видеокадр
    videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
    videoFrame.play_mode = slides.VideoPlayModePreset.AUTO

    # Загружает миниатюру
    thumbnail_uri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg"
    f = urlopen(thumbnail_uri)
    videoFrame.picture_format.picture.image = pres.images.add_image(f.read())


with slides.Presentation() as pres:
    add_video_from_youyube(pres, "s5JbfQZ5Cc0")
    pres.save("AddVideoFrameFromWebSource_out.pptx", slides.export.SaveFormat.PPTX)

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

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

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

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

import aspose.slides as slides

# Создаёт объект Presentation, представляющий файл презентации
with slides.Presentation(path + "Video.pptx") as presentation:
    for shape in presentation.slides[0].shapes:
        if type(shape) is slides.VideoFrame:
            type = shape.embedded_video.content_type
            buffer = shape.embedded_video.binary_data
            with open("NewVideo_out." + type[type.rfind('/') + 1:len(type)], "wb") as stream:
                stream.write(buffer)

FAQ

Какие параметры воспроизведения видео можно изменить для VideoFrame?

Вы можете управлять режимом воспроизведения (авто или по щелчку) и зацикливанием. Эти параметры доступны через свойства объекта VideoFrame.

Влияет ли добавление видео на размер файла PPTX?

Да. При встраивании локального видео бинарные данные включаются в документ, поэтому размер презентации растёт пропорционально размеру файла. При добавлении онлайн‑видео встраиваются только ссылка и миниатюра, поэтому увеличение размера меньше.

Можно ли заменить видео в существующем VideoFrame, не меняя его позицию и размеры?

Да. Вы можете заменить видеоконтент внутри кадра, сохранив геометрию формы; это распространённый сценарий обновления медиа в уже существующей раскладке.

Можно ли определить тип содержимого (MIME) встроенного видео?

Да. Встроенное видео имеет тип содержимого, который можно прочитать и использовать, например, при сохранении его на диск.