Adicionar vídeos a apresentações em Python
Introdução
Um vídeo bem posicionado em uma apresentação pode tornar sua mensagem mais atraente e aumentar os níveis de engajamento com o público.
O PowerPoint permite que você adicione vídeos a um slide em uma apresentação de duas maneiras:
- Adicionar ou incorporar um vídeo local (armazenado na sua máquina)
- Adicionar um vídeo online (de uma fonte web como o YouTube).
Para permitir que você adicione vídeos (objetos de vídeo) a uma apresentação, o Aspose.Slides fornece a classe Video , a classe VideoFrame e outros tipos relevantes.
Criar quadro de vídeo incorporado
Se o arquivo de vídeo que você deseja adicionar ao seu slide estiver armazenado localmente, você pode criar um quadro de vídeo para incorporar o vídeo na sua apresentação.
- Crie uma instância da classe Presentation .
- Obtenha a referência de um slide através de seu índice.
- Adicione um objeto Video e passe o caminho do arquivo de vídeo para incorporar o vídeo na apresentação.
- Adicione um objeto VideoFrame para criar um quadro para o vídeo.
- Salve a apresentação modificada.
Este código Python mostra como adicionar um vídeo armazenado localmente a uma apresentação:
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)
# Obtém o primeiro slide e adiciona um quadro de vídeo
pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)
# Salva a apresentação no disco
pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)
Alternativamente, você pode adicionar um vídeo passando seu caminho de arquivo diretamente para o método 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")
Criar quadro de vídeo com vídeo de fonte web
Versões mais recentes do Microsoft PowerPoint suportam vídeos online em apresentações. Se o vídeo que você deseja usar estiver disponível online (por exemplo, no YouTube), você pode adicioná‑lo à sua apresentação por meio do link da web.
- Crie uma instância da classe Presentation
- Obtenha a referência de um slide através de seu índice.
- Adicione um objeto Video e passe o link para o vídeo.
- Defina uma miniatura para o quadro de vídeo.
- Salve a apresentação.
Este código Python mostra como adicionar um vídeo da web a um slide em uma apresentação do PowerPoint:
import aspose.slides as slides
from urllib.request import urlopen
def add_video_from_youyube(pres, videoId):
# Adiciona um VideoFrame
videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
videoFrame.play_mode = slides.VideoPlayModePreset.AUTO
# Carrega a miniatura
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)
Cortar um quadro de vídeo
O Aspose.Slides permite que você controle qual parte de um vídeo é reproduzida definindo os valores trim‑from‑start e trim‑from‑end através de VideoFrame.trim_from_start e VideoFrame.trim_from_end. Ambos os valores são especificados em milissegundos e definem quanto tempo é pulado do início e do final do vídeo, respectivamente. Essas configurações alteram as opções de reprodução do vídeo na apresentação; elas não cortam nem modificam os dados binários do vídeo incorporado.
Definir configurações de corte
Para criar um quadro de vídeo e definir suas configurações de corte:
- Crie uma instância da classe Presentation .
- Adicione um objeto Video à apresentação.
- Adicione um objeto VideoFrame a um slide.
- Defina os valores trim‑from‑start e trim‑from‑end através de VideoFrame.trim_from_start e VideoFrame.trim_from_end .
- Salve a apresentação modificada.
O exemplo de código a seguir pula os primeiros 2,5 segundos e o último segundo de um vídeo incorporado durante a reprodução:
import aspose.slides as slides
with slides.Presentation() as presentation:
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
slide = presentation.slides[0]
video_frame = slide.shapes.add_video_frame(50, 50, 640, 360, video)
video_frame.trim_from_start = 2500.0
video_frame.trim_from_end = 1000.0
presentation.save("video_with_trim.pptx", slides.export.SaveFormat.PPTX)
Ler configurações de corte
Para inspecionar as configurações de corte existentes, carregue uma apresentação, encontre um objeto VideoFrame entre as formas no primeiro slide e leia os valores através de VideoFrame.trim_from_start e VideoFrame.trim_from_end .
O exemplo de código a seguir encontra o primeiro quadro de vídeo no primeiro slide e relata suas configurações de corte em milissegundos:
import aspose.slides as slides
with slides.Presentation("video_with_trim.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
video_frame = shape
trim_from_start = video_frame.trim_from_start
trim_from_end = video_frame.trim_from_end
print(f"Trim from start: {trim_from_start} ms")
print(f"Trim from end: {trim_from_end} ms")
break
Gerenciar legendas de vídeo
O Aspose.Slides permite que você gerencie legendas fechadas para quadros de vídeo em apresentações do PowerPoint. As legendas são armazenadas no formato WebVTT e são expostas por meio da propriedade VideoFrame.caption_tracks .
Adicionar legendas a um quadro de vídeo
Para adicionar legendas a um quadro de vídeo:
- Crie uma instância da classe Presentation .
- Adicione um vídeo à apresentação.
- Adicione um objeto VideoFrame a um slide.
- Use a CaptionsCollection retornada por caption_tracks para adicionar uma faixa de legenda WebVTT.
- Salve a apresentação modificada.
O código a seguir mostra como adicionar legendas a um quadro de vídeo:
import aspose.slides as slides
with slides.Presentation() as presentation:
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
slide = presentation.slides[0]
video_frame = slide.shapes.add_video_frame(0, 0, 100, 100, video)
# Adiciona uma nova faixa de legendas a partir de um arquivo WebVTT.
video_frame.caption_tracks.add("English", "track.vtt")
presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)
A classe CaptionsCollection também fornece uma sobrecarga que permite adicionar legendas a partir de um fluxo.
Extrair legendas de um quadro de vídeo
Para extrair legendas de um quadro de vídeo:
- Carregue a apresentação que contém o vídeo.
- Encontre o objeto VideoFrame alvo.
- Percorra a coleção caption_tracks .
- Salve cada faixa de legenda em um arquivo
.vtt.
O código a seguir mostra como extrair legendas de um quadro de vídeo:
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
for caption_track in shape.caption_tracks:
# Salva a faixa de legendas em um arquivo WebVTT.
file_path = f"{caption_track.caption_id}.vtt"
with open(file_path, "wb") as track_stream:
track_stream.write(bytes(caption_track.binary_data))
Cada objeto Captions expõe o identificador da legenda, rótulo, dados binários e texto da legenda como uma string UTF‑8.
Remover legendas de um quadro de vídeo
Para remover legendas de um quadro de vídeo:
- Carregue a apresentação que contém o vídeo.
- Obtenha o objeto VideoFrame alvo.
- Remova as faixas de legenda da CaptionsCollection .
- Salve a apresentação modificada.
O código a seguir mostra como remover todas as legendas de um quadro de vídeo:
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
video_frame = slide.shapes[0] # tipo: slides.VideoFrame
# Remove todas as legendas do quadro de vídeo.
video_frame.caption_tracks.clear()
presentation.save("video_without_captions.pptx", slides.export.SaveFormat.PPTX)
Se precisar remover apenas uma faixa de legenda, use os métodos remove ou remove_at em vez de clear .
Extrair vídeo do slide
Além de adicionar vídeos aos slides, o Aspose.Slides permite que você extraia vídeos incorporados em apresentações.
- Crie uma instância da classe Presentation para carregar a apresentação que contém o vídeo.
- Percorra todos os objetos Slide .
- Percorra todos os objetos Shape para encontrar um VideoFrame .
- Salve o vídeo no disco.
Este código Python mostra como extrair o vídeo de um slide de apresentação:
import aspose.slides as slides
# Instancia um objeto Presentation que representa um arquivo de apresentação
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
Quais parâmetros de reprodução de vídeo podem ser alterados para um VideoFrame?
Você pode controlar o modo de reprodução (automático ou ao clicar) e o looping. Essas opções estão disponíveis nas propriedades do objeto VideoFrame .
Adicionar um vídeo afeta o tamanho do arquivo PPTX?
Sim. Quando você incorpora um vídeo local, os dados binários são incluídos no documento, portanto o tamanho da apresentação cresce proporcionalmente ao tamanho do arquivo. Quando você adiciona um vídeo online, um link e uma miniatura são incorporados, de modo que o aumento de tamanho é menor.
Posso substituir o vídeo em um VideoFrame existente sem mudar sua posição e tamanho?
Sim. Você pode trocar o conteúdo de vídeo dentro do quadro mantendo a geometria da forma; esse é um cenário comum para atualizar mídia em um layout existente.
É possível determinar o tipo de conteúdo (MIME) de um vídeo incorporado?
Sim. Um vídeo incorporado possui um tipo de conteúdo que pode ser lido e usado, por exemplo ao salvá‑‑lo no disco.