Správa video rámců v prezentacích pomocí PHP
Úvod
Dobře umístěné video v prezentaci může učinit vaši zprávu přesvědčivější a zvýšit úroveň zapojení publika.
PowerPoint vám umožňuje přidat videa na snímek v prezentaci dvěma způsoby:
- Přidat nebo vložit místní video (uložené ve vašem počítači)
- Přidat online video (z webového zdroje, například YouTube).
Aby vám umožnil přidávat videa (video objekty) do prezentace, Aspose.Slides poskytuje třídu Video , třídu VideoFrame a další související typy.
Vytvoření vložených video rámců
Pokud je video soubor, který chcete přidat na snímek, uložen lokálně, můžete vytvořit video rámec pro vložení videa do vaší prezentace.
- Vytvořte instance třídy Presentation .
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte objekt Video a předávejte cestu k video souboru k vložení videa do prezentace.
- Přidejte objekt VideoFrame , aby se vytvořil rámec pro video.
- Uložte upravenou prezentaci.
Tento PHP kód ukazuje, jak přidat lokálně uložené video do prezentace:
# Vytváří instanci třídy Presentation
$pres = new Presentation("pres.pptx");
try {
# Načte video
$fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
$video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
# Získá první snímek a přidá video rámec
$pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
# Uloží prezentaci na disk
$pres->save("pres-with-video.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Alternativně můžete přidat video předáním cesty k souboru přímo metodě 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();
}
}
Vytvoření video rámců s videem z webových zdrojů
Microsoft PowerPoint 2013 a novější podporuje videa z YouTube v prezentacích. Pokud je video, které chcete použít, dostupné online (např. na YouTube), můžete jej do prezentace přidat prostřednictvím jeho webového odkazu.
- Vytvořte instance třídy Presentation .
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte objekt Video a předávejte odkaz na video.
- Nastavte miniaturu pro video rámec.
- Uložte prezentaci.
Tento PHP kód ukazuje, jak přidat video z webu na snímek v PowerPoint prezentaci:
# Vytvoří objekt Presentation, který představuje soubor prezentace
$pres = new Presentation();
try {
addVideoFromYouTube($pres, "Tj75Arhq5ho");
$pres->save("out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Správa titulků videa
Aspose.Slides vám umožňuje spravovat skryté titulky pro video rámy v PowerPoint prezentacích. Titulky jsou ukládány ve formátu WebVTT a jsou přístupné prostřednictvím metody VideoFrame::getCaptionTracks .
Přidání titulků do video rámce
Jak přidat titulky do video rámce:
- Vytvořte instance třídy Presentation .
- Přidejte video do prezentace.
- Přidejte objekt VideoFrame na snímek.
- Použijte kolekci CaptionsCollection , vrácenou metodou getCaptionTracks , k přidání WebVTT titulkového stopy.
- Uložte upravenou prezentaci.
Následující kód ukazuje, jak přidat titulky do video rámce:
$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);
// Přidá novou titulkovou stopu ze souboru WebVTT.
$videoFrame->getCaptionTracks()->add("English", "track.vtt");
$presentation->save("video_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Třída CaptionsCollection také poskytuje přetížení, které vám umožní přidat titulky ze streamu.
Extrahování titulků z video rámce
Jak extrahovat titulky z video rámce:
- Načtěte prezentaci, která obsahuje video.
- Najděte cílový objekt VideoFrame .
- Iterujte přes kolekci getCaptionTracks .
- Uložte každou titulkovou stopu do souboru
.vtt.
Následující kód ukazuje, jak extrahovat titulky z video rámce:
$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);
// Uloží titulkovou stopu do souboru WebVTT.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
Každý objekt Captions poskytuje identifikátor titulku, popisek, binární data a text titulku jako řetězec UTF-8.
Odstranění titulků z video rámce
Jak odstranit titulky z video rámce:
- Načtěte prezentaci, která obsahuje video.
- Získejte cílový objekt VideoFrame .
- Odstraňte titulkové stopy z kolekce getCaptionTracks .
- Uložte upravenou prezentaci.
Následující kód ukazuje, jak odstranit všechny titulky z video rámce:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->get_Item(0); // typ: VideoFrame
// Odstraní všechny titulky z video rámce.
$videoFrame->getCaptionTracks()->clear();
$presentation->save("video_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Pokud potřebujete odstranit pouze jednu titulkovou stopu, použijte metodu remove nebo removeAt místo clear.
Extrahování videa ze snímků
Kromě přidávání videí na snímky vám Aspose.Slides umožňuje extrahovat videa vložená v prezentacích.
- Vytvořte instance třídy Presentation , abyste načetli prezentaci obsahující video.
- Iterujte přes všechny objekty Slide .
- Iterujte přes všechny objekty Shape , abyste našli VideoFrame .
- Uložte video na disk.
Tento PHP kód ukazuje, jak extrahovat video ze snímku prezentace:
# Vytvoří objekt Presentation, který představuje soubor prezentace
$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();
# Získá příponu souboru
$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();
}
}
Často kladené otázky
Které parametry přehrávání videa lze změnit pro VideoFrame?
Můžete řídit režim přehrávání (automaticky nebo při kliknutí) a opakování. Tyto možnosti jsou k dispozici prostřednictvím vlastností objektu VideoFrame .
Má přidání videa vliv na velikost souboru PPTX?
Ano. Když vložíte místní video, binární data jsou zahrnuta do dokumentu, takže velikost prezentace roste úměrně velikosti souboru. Když přidáte online video, jsou vloženy pouze odkaz a miniatura, takže nárůst velikosti je menší.
Mohu nahradit video ve stávajícím VideoFrame bez změny jeho polohy a velikosti?
Ano. Můžete vyměnit obsah videa uvnitř rámce, při zachování geometrie tvaru; jedná se o běžný scénář pro aktualizaci médií v existujícím rozvržení.
Lze určit typ obsahu (MIME) vloženého videa?
Ano. Vložené video má typ obsahu , který můžete číst a použít, například při ukládání na disk.