Aggiungi video alle presentazioni in Python
Introduzione
Un video posizionato in modo appropriato in una presentazione può rendere il tuo messaggio più coinvolgente e aumentare il livello di coinvolgimento del pubblico.
PowerPoint consente di aggiungere video a una diapositiva di una presentazione in due modi:
- Aggiungi o incorpora un video locale (archiviato sul tuo computer)
- Aggiungi un video online (da una fonte web come YouTube).
Per consentirti di aggiungere video (oggetti video) a una presentazione, Aspose.Slides fornisce la classe Video e la classe VideoFrame e altri tipi pertinenti.
Crea Frame Video Incorporato
Se il file video che desideri aggiungere alla diapositiva è archiviato localmente, puoi creare un frame video per incorporare il video nella tua presentazione.
- Crea un’istanza della classe Presentation.
- Ottieni il riferimento a una diapositiva tramite il suo indice.
- Aggiungi un oggetto Video e passa il percorso del file video per incorporare il video nella presentazione.
- Aggiungi un oggetto VideoFrame per creare un frame per il video.
- Salva la presentazione modificata.
Questo codice Python mostra come aggiungere un video archiviato localmente a una presentazione:
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)
# Ottiene la prima diapositiva e aggiunge un videoframe
pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)
# Salva la presentazione su disco
pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)
In alternativa, puoi aggiungere un video passando direttamente il percorso del file al metodo 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")
Crea Frame Video con Video da Fonte Web
Microsoft PowerPoint 2013 e versioni successive supportano i video di YouTube nelle presentazioni. Se il video che desideri utilizzare è disponibile online (ad esempio su YouTube), puoi aggiungerlo alla tua presentazione tramite il suo link web.
- Crea un’istanza della classe Presentation
- Ottieni il riferimento a una diapositiva tramite il suo indice.
- Aggiungi un oggetto Video e passa il link al video.
- Imposta una miniatura per il frame video.
- Salva la presentazione.
Questo codice Python mostra come aggiungere un video dal web a una diapositiva in una presentazione PowerPoint:
import aspose.slides as slides
from urllib.request import urlopen
def add_video_from_youyube(pres, videoId):
# Aggiunge un 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
# Carica la 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)
Gestisci i Sottotitoli dei Video
Aspose.Slides consente di gestire i sottotitoli chiusi per i frame video nelle presentazioni PowerPoint. I sottotitoli sono archiviati nel formato WebVTT e sono disponibili tramite la proprietà VideoFrame.caption_tracks.
Aggiungi Sottotitoli a un Frame Video
Per aggiungere sottotitoli a un frame video:
- Crea un’istanza della classe Presentation.
- Aggiungi un video alla presentazione.
- Aggiungi un oggetto VideoFrame a una diapositiva.
- Utilizza la CaptionsCollection restituita da caption_tracks per aggiungere una traccia di sottotitoli WebVTT.
- Salva la presentazione modificata.
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)
# Aggiunge una nuova traccia di sottotitoli da un file WebVTT.
presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)
La classe CaptionsCollection fornisce anche una overload che consente di aggiungere sottotitoli da uno stream.
Estrai Sottotitoli da un Frame Video
Per estrarre i sottotitoli da un frame video:
- Carica la presentazione che contiene il video.
- Trova l’oggetto VideoFrame target.
- Itera attraverso la collezione caption_tracks.
- Salva ogni traccia di sottotitoli in un file
.vtt.
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 la traccia di sottotitoli in un file 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))
Ogni oggetto Captions espone l’identificatore del sottotitolo, l’etichetta, i dati binari e il testo del sottotitolo come stringa UTF-8.
Rimuovi i Sottotitoli da un Frame Video
Per rimuovere i sottotitoli da un frame video:
- Carica la presentazione che contiene il video.
- Ottieni l’oggetto VideoFrame target.
- Rimuovi le tracce di sottotitoli dalla CaptionsCollection.
- Salva la presentazione modificata.
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
video_frame = slide.shapes[0] # type: slides.VideoFrame
# Rimuove tutti i sottotitoli dal frame video.
video_frame.caption_tracks.clear()
presentation.save("video_without_captions.pptx", slides.export.SaveFormat.PPTX)
Se è necessario rimuovere solo una traccia di sottotitoli, utilizza i metodi remove o remove_at invece di clear.
Estrai Video da Diapositiva
Oltre ad aggiungere video alle diapositive, Aspose.Slides consente di estrarre i video incorporati nelle presentazioni.
- Crea un’istanza della classe Presentation per caricare la presentazione contenente il video.
- Itera attraverso tutti gli oggetti Slide.
- Itera attraverso tutti gli oggetti Shape per trovare un VideoFrame.
- Salva il video su disco.
import aspose.slides as slides
# Istanzia un oggetto Presentation che rappresenta un file di presentazione
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
Quali parametri di riproduzione video possono essere modificati per un VideoFrame?
Puoi controllare la modalità di riproduzione (automatica o al clic) e il looping. Queste opzioni sono disponibili tramite le proprietà dell’oggetto VideoFrame.
L’aggiunta di un video influisce sulla dimensione del file PPTX?
Sì. Quando incorpori un video locale, i dati binari vengono inclusi nel documento, quindi la dimensione della presentazione aumenta proporzionalmente alle dimensioni del file. Quando aggiungi un video online, viene incorporato un link e una miniatura, quindi l’aumento di dimensione è minore.
Posso sostituire il video in un VideoFrame esistente senza modificarne posizione e dimensione?
Sì. Puoi scambiare il contenuto video all’interno del frame mantenendo la geometria della forma; questo è uno scenario comune per aggiornare i media in un layout esistente.
È possibile determinare il tipo di contenuto (MIME) di un video incorporato?
Sì. Un video incorporato ha un content type che è possibile leggere e utilizzare, ad esempio quando lo si salva su disco.