Gestire i fotogrammi video nelle presentazioni usando PHP
Introduzione
Un video ben inserito in una presentazione può rendere il tuo messaggio più persuasivo e aumentare i livelli 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 sorgente 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.
Creare fotogrammi video incorporati
Se il file video che desideri aggiungere alla tua diapositiva è memorizzato localmente, puoi creare un fotogramma 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 fotogramma per il video.
- Salva la presentazione modificata.
Questo codice PHP mostra come aggiungere un video memorizzato localmente a una presentazione:
# Istanzia la classe Presentation
$pres = new Presentation("pres.pptx");
try {
# Carica il video
$fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
$video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
# Ottiene la prima diapositiva e aggiunge un fotogramma video
$pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
# Salva la presentazione su disco
$pres->save("pres-with-video.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
In alternativa, puoi aggiungere un video passando direttamente il suo percorso file al metodo addVideoFrame(float x, float y, float width, float height, Video video) :
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
$vf = $sld->getShapes()->addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Creare fotogrammi video con video da sorgenti web
Microsoft PowerPoint 2013 e versioni successive supporta 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 fotogramma video.
- Salva la presentazione.
Questo codice PHP mostra come aggiungere un video dal web a una diapositiva in una presentazione PowerPoint:
# Istanzia un oggetto Presentation che rappresenta un file di presentazione
$pres = new Presentation();
try {
addVideoFromYouTube($pres, "Tj75Arhq5ho");
$pres->save("out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Gestire i sottotitoli video
Aspose.Slides ti consente di gestire i sottotitoli chiusi per i fotogrammi video nelle presentazioni PowerPoint. I sottotitoli sono memorizzati nel formato WebVTT e sono accessibili tramite il metodo VideoFrame::getCaptionTracks .
Aggiungere sottotitoli a un fotogramma video
Per aggiungere sottotitoli a un fotogramma video:
- Crea un’istanza della classe Presentation .
- Aggiungi un video alla presentazione.
- Aggiungi un oggetto VideoFrame a una diapositiva.
- Utilizza la raccolta CaptionsCollection restituita da getCaptionTracks per aggiungere una traccia di sottotitoli WebVTT.
- Salva la presentazione modificata.
Il codice seguente mostra come aggiungere sottotitoli a un fotogramma video:
$presentation = new Presentation();
try {
$videoData = file_get_contents("video.mp4");
$video = $presentation->getVideos()->addVideo($videoData);
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->addVideoFrame(0, 0, 100, 100, $video);
// Aggiunge una nuova traccia di sottotitoli da un file WebVTT.
$videoFrame->getCaptionTracks()->add("English", "track.vtt");
$presentation->save("video_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
La classe CaptionsCollection fornisce anche un overload che consente di aggiungere sottotitoli da uno stream.
Estrarre i sottotitoli da un fotogramma video
Per estrarre i sottotitoli da un fotogramma video:
- Carica la presentazione che contiene il video.
- Trova l’oggetto VideoFrame target.
- Itera attraverso la raccolta getCaptionTracks .
- Salva ogni traccia di sottotitoli in un file
.vtt.
Il codice seguente mostra come estrarre i sottotitoli da un fotogramma video:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shapeCount = java_values($slide->getShapes()->size());
for ($shapeIndex = 0; $shapeIndex < $shapeCount; $shapeIndex++) {
$shape = $slide->getShapes()->get_Item($shapeIndex);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
$videoFrame = $shape;
$trackCount = java_values($videoFrame->getCaptionTracks()->getCount());
for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
$captionTrack = $videoFrame->getCaptionTracks()->get_Item($trackIndex);
// Salva la traccia di sottotitoli in un file WebVTT.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
Ogni oggetto Captions espone l’identificatore del sottotitolo, l’etichetta, i dati binari e il testo del sottotitolo come stringa UTF-8.
Rimuovere i sottotitoli da un fotogramma video
Per rimuovere i sottotitoli da un fotogramma video:
- Carica la presentazione che contiene il video.
- Ottieni l’oggetto VideoFrame target.
- Rimuovi le tracce di sottotitoli dalla raccolta getCaptionTracks .
- Salva la presentazione modificata.
Il codice seguente mostra come rimuovere tutti i sottotitoli da un fotogramma video:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->get_Item(0); // tipo: VideoFrame
// Rimuove tutti i sottotitoli dal fotogramma video.
$videoFrame->getCaptionTracks()->clear();
$presentation->save("video_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Se è necessario rimuovere solo una traccia di sottotitoli, usa i metodi remove o removeAt anziché clear.
Estrarre video dalle diapositive
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 PHP mostra come estrarre il video da una diapositiva di una presentazione:
# Istanzia un oggetto Presentation che rappresenta un file di presentazione
$pres = new Presentation("VideoSample.pptx");
try {
foreach($pres->getSlides() as $slide) {
foreach($slide->getShapes() as $shape) {
if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
$vf = $shape;
$type = $vf->getEmbeddedVideo()->getContentType();
$ss = $type->lastIndexOf('-');
$buffer = $vf->getEmbeddedVideo()->getBinaryData();
# Ottiene l'estensione del file
$charIndex = $type->indexOf("/");
$type = $type->substring($charIndex + 1);
$fop = new Java("java.io.FileOutputStream", "testing2." . $type);
$fop->write($buffer);
$fop->flush();
$fop->close();
}
}
}
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
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 sono inclusi nel documento, quindi la dimensione della presentazione cresce 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 modificare la sua posizione e dimensione?
Sì. Puoi scambiare il contenuto video all’interno del fotogramma 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 tipo di contenuto che puoi leggere e utilizzare, ad esempio quando lo salvi su disco.