Gerenciar Quadros de Vídeo em Apresentações em Python
Introdução
Os vídeos podem ajudar a explicar ideias e envolver o público. Aspose.Slides for Python via .NET permite adicionar quadros de vídeo a slides, ajustar configurações de reprodução, gerenciar legendas e extrair dados de vídeo incorporados.
O PowerPoint suporta vídeos locais e links para vídeos online, como vídeos do YouTube.
Para representar dados de vídeo e quadros de vídeo, Aspose.Slides fornece a classe Video , a classe VideoFrame e outros tipos relevantes.
Criar um Quadro de Vídeo Incorporado
Se o arquivo de vídeo que você deseja adicionar ao slide estiver armazenado localmente, você pode criar um quadro de vídeo para incorporar o vídeo na sua apresentação.
Este exemplo incorpora um vídeo local no primeiro slide de uma apresentação existente e salva o resultado. As coordenadas e dimensões do quadro estão em pontos. O fluxo permanece aberto até que a gravação termine porque LoadingStreamBehavior.KEEP_LOCKED o mantém bloqueado enquanto a apresentação o utiliza.
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video = presentation.videos.add_video(video_stream, slides.LoadingStreamBehavior.KEEP_LOCKED)
slide.shapes.add_video_frame(10, 10, 150, 250, video)
presentation.save("embedded_video.pptx", slides.export.SaveFormat.PPTX)
Você também pode passar um caminho de vídeo local diretamente para add_video_frame. Este exemplo incorpora o vídeo no primeiro slide de uma nova apresentação. O vídeo deve permanecer acessível até que a apresentação seja salva.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
slide.shapes.add_video_frame(50, 150, 300, 150, "video.avi")
presentation.save("video_from_path.pptx", slides.export.SaveFormat.PPTX)
Criar um Quadro de Vídeo com Vídeo de uma Fonte Web
O Microsoft PowerPoint suporta vídeos online em apresentações. Você pode criar um quadro de vídeo que vincula a um vídeo online, como um vídeo do YouTube.
Este exemplo adiciona um link de vídeo do YouTube e miniatura ao primeiro slide. Substitua o identificador do vídeo para usar outro vídeo. A configuração play_mode solicita reprodução automática. Baixar a miniatura e reproduzir o vídeo exigem acesso à internet. O visualizador da apresentação também deve oferecer suporte à reprodução de vídeo online.
from urllib.request import urlopen
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
video_id = "aqz-KE-bpKQ"
video_url = f"https://www.youtube.com/embed/{video_id}"
video_frame = slide.shapes.add_video_frame(10, 10, 427, 240, video_url)
video_frame.play_mode = slides.VideoPlayModePreset.AUTO
thumbnail_url = f"https://img.youtube.com/vi/{video_id}/hqdefault.jpg"
with urlopen(thumbnail_url) as response:
thumbnail_data = response.read()
thumbnail = presentation.images.add_image(thumbnail_data)
video_frame.picture_format.picture.image = thumbnail
presentation.save("online_video.pptx", slides.export.SaveFormat.PPTX)
Reproduzir um Vídeo em Modo de Tela Cheia
Em uma apresentação de treinamento, você pode reproduzir uma demonstração de software em modo de tela cheia para que o público veja os detalhes. Defina full_screen_mode como True para habilitar esse comportamento durante a reprodução.
Este exemplo abre uma apresentação, encontra o primeiro VideoFrame no primeiro slide e habilita a reprodução em tela cheia. A apresentação de entrada deve conter ao menos um slide com um quadro de vídeo existente no primeiro slide.
import aspose.slides as slides
with slides.Presentation("training.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
shape.full_screen_mode = True
break
presentation.save("full_screen_video.pptx", slides.export.SaveFormat.PPTX)
A reprodução em tela cheia controla como o vídeo é exibido. Independentemente, o play_mode controla se ele inicia automaticamente ou ao clicar, e o play_loop_mode controla se ele repete. Para escolher o comportamento de início, defina o modo de reprodução para VideoPlayModePreset.AUTO or VideoPlayModePreset.ON_CLICK. O exemplo preserva as configurações existentes de início e loop.
Rebobinar um Vídeo Após a Reprodução
Em uma apresentação de treinamento, retornar um vídeo de demonstração ao seu início o deixa pronto para o apresentador reproduzi‑lo novamente. Defina rewind_video como True para retornar o vídeo ao início após a reprodução terminar.
Este exemplo abre uma apresentação, encontra o primeiro VideoFrame no primeiro slide e habilita o rebobinamento. Ele desabilita o loop para que a reprodução possa terminar e define a reprodução para iniciar ao clicar. A apresentação de entrada deve conter ao menos um slide com um quadro de vídeo existente no primeiro slide.
import aspose.slides as slides
with slides.Presentation("training.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
shape.rewind_video = True
shape.play_loop_mode = False
shape.play_mode = slides.VideoPlayModePreset.ON_CLICK
break
presentation.save("rewind_video.pptx", slides.export.SaveFormat.PPTX)
O rebobinamento devolve o vídeo ao início sem iniciá‑lo novamente. Em contraste, habilitar o play_loop_mode repete a reprodução automaticamente. Mantenha o loop desativado quando desejar que o vídeo termine e permaneça pronto para ser reproduzido novamente. O play_mode controla independentemente o início automático ou ao clicar; este exemplo usa VideoPlayModePreset.ON_CLICK para que o apresentador decida quando a reprodução começa. Defina o modo de reprodução após a configuração de loop, como mostrado no exemplo. O rebobinamento funciona independentemente de full_screen_mode.
Cortar um Quadro de Vídeo
Use VideoFrame.trim_from_start e VideoFrame.trim_from_end para pular parte do início ou do fim de um vídeo durante a reprodução. Ambos os valores estão em milissegundos. O corte altera as configurações de reprodução sem modificar os dados de vídeo incorporados.
Definir Configurações de Corte
Este exemplo incorpora um vídeo local e pula os primeiros 2,5 segundos e o último segundo durante a reprodução. Use um vídeo com mais de 3,5 segundos para que reste um segmento reproduzível.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
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
Este exemplo exibe os valores de corte do primeiro quadro de vídeo no primeiro slide em milissegundos. A apresentação deve conter ao menos um slide. Se esse slide não tiver quadro de vídeo, nada será exibido. O exemplo anterior produz valores de 2500 e 1000.
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):
print(f"Trim from start: {shape.trim_from_start} ms")
print(f"Trim from end: {shape.trim_from_end} ms")
break
Gerenciar Legendas de Vídeo
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 através da propriedade VideoFrame.caption_tracks.
Adicionar Legendas a um Quadro de Vídeo
Este exemplo incorpora um vídeo local e adiciona uma trilha de legenda WebVTT rotulada como English. Os timestamps das legendas devem corresponder ao vídeo. A apresentação salva inclui tanto o vídeo quanto suas legendas.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
video_frame = slide.shapes.add_video_frame(0, 0, 100, 100, video)
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
Este exemplo salva todas as trilhas de legenda dos quadros de vídeo no primeiro slide como arquivos WebVTT separados. Números sequenciais mantêm os arquivos de saída distintos. O console relata o número de trilhas extraídas. A apresentação deve conter ao menos um slide.
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
track_count = 0
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
for caption_track in shape.caption_tracks:
track_count += 1
output_path = f"captions_{track_count}.vtt"
with open(output_path, "wb") as track_stream:
track_stream.write(bytes(caption_track.binary_data))
print(f"Caption tracks extracted: {track_count}")
Cada objeto Captions expõe o identificador da legenda, o rótulo, os dados binários e o texto da legenda como uma string UTF‑8.
Remover Legendas de um Quadro de Vídeo
Este exemplo remove todas as legendas do quadro de vídeo na primeira posição de forma no primeiro slide e salva o resultado. Ele assume que o slide e a forma existem e que a forma é 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]
video_frame.caption_tracks.clear()
presentation.save("video_without_captions.pptx", slides.export.SaveFormat.PPTX)
Se precisar remover apenas uma trilha 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 a slides, Aspose.Slides permite extrair vídeos incorporados em apresentações.
Este exemplo extrai vídeos incorporados de cada slide em arquivos binários separados e numerados. Vídeos vinculados são ignorados porque não possuem dados incorporados. O console imprime o tipo MIME de cada vídeo e a contagem total. A saída usa a extensão genérica .bin; altere-a para corresponder ao tipo de mídia informado quando necessário.
import aspose.slides as slides
with slides.Presentation("presentation_with_videos.pptx") as presentation:
video_count = 0
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
video = shape.embedded_video
if video is None:
print("Skipped a linked video: no embedded data is available.")
continue
video_count += 1
output_path = f"extracted_video_{video_count}.bin"
with open(output_path, "wb") as video_stream:
video_stream.write(bytes(video.binary_data))
print(f"Video {video_count}: {video.content_type}")
print(f"Embedded videos extracted: {video_count}")
Perguntas Frequentes
Quais parâmetros de reprodução de vídeo podem ser alterados para um quadro de vídeo?
Você pode controlar o playback mode (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, de modo que o tamanho da apresentação cresce proporcionalmente ao tamanho do arquivo. Quando você vincula a um vídeo online e adiciona uma miniatura, a apresentação armazena o link e a imagem de pré‑visualização em vez dos dados do vídeo, portanto o aumento de tamanho costuma ser menor.
Posso substituir o vídeo em um quadro de vídeo 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 a 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 em disco.