Adicionar Vídeos a Apresentações em Python
Introdução
Um vídeo bem colocado em uma apresentação pode tornar sua mensagem mais impactante e aumentar os níveis de engajamento com o seu 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 em 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 as classes Video , VideoFrame e outros tipos relevantes.
Criar Quadro de Vídeo Incorporado
Se o arquivo de vídeo que você deseja adicionar ao seu slide está armazenado localmente, você pode criar um quadro de vídeo para incorporar o vídeo em 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 incorporá-lo 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
O Microsoft PowerPoint 2013 e versões mais recentes suportam vídeos do YouTube em apresentações. Se o vídeo que você deseja usar está disponível online (por exemplo, no YouTube), você pode adicioná-lo à sua apresentação por meio de seu link 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 do 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 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)
Gerenciar Legendas de Vídeo
O Aspose.Slides permite que você gerencie legendas fechadas para quadros de vídeo em apresentações 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.
- Itere através da 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 o 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 de um Slide
Além de adicionar vídeos aos slides, o Aspose.Slides permite extrair vídeos incorporados em apresentações.
- Crie uma instância da classe Presentation para carregar a apresentação que contém o vídeo.
- Itere por todos os objetos Slide .
- Itere por 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 playback mode (automático ou ao clique) e o looping. Essas opções estão disponíveis por meio das 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 alterar sua posição e tamanho?
Sim. Você pode trocar o video content 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 tem um content type que pode ser lido e usado, por exemplo, ao salvá‑lo no disco.