Добавление видео в презентации на Python
Правильно размещённое видео в презентации может сделать ваше сообщение более убедительным и повысить уровень вовлечённости аудитории.
PowerPoint позволяет добавлять видео на слайд презентации двумя способами:
- Добавить или встроить локальное видео (хранящееся на вашем компьютере)
- Добавить онлайн‑видео (из веб‑источника, например YouTube).
Чтобы вы могли добавлять видео‑объекты в презентацию, Aspose.Slides предоставляет интерфейсы IVideo, IVideoFrame и другие соответствующие типы.
Создать встроенный видеокадр
Если файл видео, который вы хотите добавить на слайд, хранится локально, вы можете создать видеокадр и встроить видео в презентацию.
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте объект IVideo и передайте путь к файлу видео, чтобы встроить его в презентацию.
- Добавьте объект IVideoFrame для создания кадра видео.
- Сохраните изменённую презентацию.
Этот код 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), вы можете добавить его в презентацию по веб‑ссылке.
- Создайте экземпляр класса Presentation
- Получите ссылку на слайд по его индексу.
- Добавьте объект IVideo и передайте ссылку на видео.
- Установите миниатюру для видеокадра.
- Сохраните презентацию.
Этот код 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 позволяет извлекать видео, встроенные в презентации.
- Создайте экземпляр класса Presentation для загрузки презентации, содержащей видео.
- Пройдитесь по всем объектам ISlide.
- Пройдитесь по всем объектам IShape в поиске VideoFrame.
- Сохраните видео на диск.
Этот код 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) встроенного видео?
Да. Встроенное видео имеет тип содержимого, который можно прочитать и использовать, например, при сохранении его на диск.