Aggiungere video alle presentazioni in Python
Introduzione
Un video ben posizionato in una presentazione può rendere il tuo messaggio più accattivante e aumentare il livello di coinvolgimento del pubblico.
PowerPoint consente di aggiungere video a una diapositiva in una presentazione in due modi:
- Aggiungere o incorporare un video locale (memorizzato sul tuo computer)
- Aggiungere 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 , la classe VideoFrame e altri tipi pertinenti.
Crea frame video incorporato
Se il file video che desideri aggiungere alla diapositiva è memorizzato localmente, puoi creare un frame video per incorporare il video nella 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 memorizzato 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 sorgente web
Le versioni più recenti di Microsoft PowerPoint supportano i video online nelle presentazioni. Se il video che desideri utilizzare è disponibile online (ad esempio su YouTube), puoi aggiungerlo alla tua presentazione tramite il suo collegamento web.
- Crea un’istanza della classe Presentation
- Ottieni il riferimento a una diapositiva tramite il suo indice.
- Aggiungi un oggetto Video e passa il collegamento 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)
Ritaglia un frame video
Aspose.Slides consente di controllare quale parte di un video viene riprodotta impostando i valori trim-from-start e trim-from-end tramite VideoFrame.trim_from_start e VideoFrame.trim_from_end. Entrambi i valori sono specificati in millisecondi e definiscono quanto tempo viene saltato dall’inizio e dalla fine del video, rispettivamente. queste impostazioni modificano le impostazioni di riproduzione del video nella presentazione; non tagliano né modificano i dati binari del video incorporato.
Imposta le impostazioni di ritaglio
Per creare un frame video e impostarne le impostazioni di ritaglio:
- Crea un’istanza della classe Presentation .
- Aggiungi un oggetto Video alla presentazione.
- Aggiungi un oggetto VideoFrame a una diapositiva.
- Imposta i valori trim-from-start e trim-from-end tramite VideoFrame.trim_from_start e VideoFrame.trim_from_end .
- Salva la presentazione modificata.
Il seguente esempio di codice salta i primi 2,5 secondi e l’ultimo secondo di un video incorporato durante la riproduzione:
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)
Leggi le impostazioni di ritaglio
Per ispezionare le impostazioni di ritaglio esistenti, carica una presentazione, trova un oggetto VideoFrame tra le forme della prima diapositiva e leggi i valori tramite VideoFrame.trim_from_start e VideoFrame.trim_from_end .
Il seguente esempio di codice trova il primo frame video sulla prima diapositiva e riporta le sue impostazioni di ritaglio in millisecondi:
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
Gestisci i sottotitoli video
Aspose.Slides consente di gestire i sottotitoli chiusi per i frame video nelle presentazioni PowerPoint. I sottotitoli sono memorizzati in formato WebVTT e sono esposti 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.
- Usa la CaptionsCollection restituita da caption_tracks per aggiungere una traccia di sottotitoli WebVTT.
- Salva la presentazione modificata.
Il seguente codice mostra come aggiungere sottotitoli a un frame video:
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.
video_frame.caption_tracks.add("English", "track.vtt")
presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)
La classe CaptionsCollection fornisce anche un overload che consente di aggiungere sottotitoli da uno stream.
Estrai i 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.
Il seguente codice mostra come estrarre i sottotitoli da un frame video:
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.
Il seguente codice mostra come rimuovere tutti i sottotitoli da un frame video:
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 devi 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.
Questo codice Python mostra come estrarre il video da una diapositiva della presentazione:
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 cresce in proporzione alla dimensione del file. Quando aggiungi un video online, vengono incorporati un collegamento e una miniatura, quindi l’aumento di dimensione è minore.
Posso sostituire il video in un VideoFrame esistente senza cambiare posizione e dimensione?
Sì. Puoi scambiare il contenuto video all’interno del frame mantenendo la geometria della forma; è 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 tipo di contenuto che puoi leggere e utilizzare, ad esempio quando lo salvi su disco.