Videókeretek kezelése prezentációkban PHP használatával
Bevezetés
Egy jól elhelyezett videó a bemutatóban meggyőzőbbé teheti az üzenetedet és növelheti a közönséged elköteleződését.
A PowerPoint lehetővé teszi, hogy a prezentáció egy diájához videókat adj hozzá két módon:
- Helyi videó hozzáadása vagy beágyazása (a gépedre mentve)
- Online videó hozzáadása (webes forrásból, például a YouTube-ról).
Annak érdekében, hogy videókat (videoobjektumokat) adhass a prezentációhoz, az Aspose.Slides biztosítja a Video osztályt, a VideoFrame osztályt és a hozzá kapcsolódó típusokat.
Beágyazott videókeretek létrehozása
Ha a diához hozzáadni kívánt videofájl helyileg van tárolva, létrehozhatsz egy videókeretet, amelybe beágyazod a videót a prezentációban.
- Hozz létre egy példányt a Presentation osztályból.
- Szerezd meg a dia referenciáját az indexe alapján.
- Adj hozzá egy Video objektumot, és add meg a video fájl elérési útját a videó prezentációba való beágyazásához.
- Adj hozzá egy VideoFrame objektumot a videó számára keret létrehozásához.
- Mentsd el a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan adhatunk hozzá egy helyi videót a prezentációhoz:
# Létrehozza a Presentation osztályt
$pres = new Presentation("pres.pptx");
try {
# Betölti a videót
$fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
$video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
# Lekéri az első diát és hozzáad egy videókeretet
$pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
# Elmenti a prezentációt a lemezre
$pres->save("pres-with-video.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Alternatívaként a videót közvetlenül a addVideoFrame(float x, float y, float width, float height, Video video) metódusnak átadott fájlútvonal paraméterrel is hozzáadhatod:
$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();
}
}
Videókeretek létrehozása webes forrású videóval
A Microsoft PowerPoint 2013 és újabb verziói támogatják a YouTube videókat a prezentációkban. Ha a használni kívánt videó online elérhető (például a YouTube-on), hozzáadhatod a prezentációhoz a webes hivatkozásán keresztül.
- Hozz létre egy példányt a Presentation osztályból
- Szerezd meg a dia referenciáját az indexe alapján.
- Adj hozzá egy Video objektumot, és add meg a videó hivatkozását.
- Állíts be egy miniatűrt a videókerethez.
- Mentsd el a prezentációt.
Ez a PHP kód bemutatja, hogyan adhatunk hozzá egy webről származó videót egy PowerPoint diahoz:
# Létrehozza a Presentation objektumot, amely egy prezentációs fájlt képvisel
$pres = new Presentation();
try {
addVideoFromYouTube($pres, "Tj75Arhq5ho");
$pres->save("out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Videófeliratok kezelése
Az Aspose.Slides lehetővé teszi, hogy a PowerPoint prezentációk videókereteihez zárt feliratokat kezelj. A feliratok WebVTT formátumban vannak tárolva, és a VideoFrame::getCaptionTracks metóduson keresztül érhetők el.
Feliratok hozzáadása videókerethez
Feliratok videókerethez adásához:
- Hozz létre egy példányt a Presentation osztályból.
- Adj hozzá egy videót a prezentációhoz.
- Adj hozzá egy VideoFrame objektumot egy diára.
- Használd a CaptionsCollection gyűjteményt, amelyet a getCaptionTracks ad vissza, hogy WebVTT feliratrajon legyen hozzáadva.
- Mentsd el a módosított prezentációt.
Az alábbi kód bemutatja, hogyan adhatunk feliratokat egy videókerethez:
$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);
// Új feliratrácsot ad hozzá egy WebVTT fájlból.
$videoFrame->getCaptionTracks()->add("English", "track.vtt");
$presentation->save("video_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
A CaptionsCollection osztály további túlterhelést is biztosít, amely lehetővé teszi, hogy a feliratokat adatfolyamból adjuk hozzá.
Feliratok kinyerése videókeretből
Feliratok kinyeréséhez egy videókeretből:
- Töltsd be a videót tartalmazó prezentációt.
- Találd meg a célzott VideoFrame objektumot.
- Iteráld végig a getCaptionTracks gyűjteményt.
- Mentsd el minden feliratrajon egy
.vttfájlba.
Az alábbi kód bemutatja, hogyan nyerheted ki a feliratokat egy videókeretből:
$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);
// Elmenti a feliratrácsot egy WebVTT fájlba.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
Minden Captions objektum tartalmazza a felirat azonosítóját, címkéjét, bináris adatait és a felirat szövegét UTF-8 karakterláncként.
Feliratok eltávolítása videókeretből
Feliratok eltávolításához videókeretből:
- Töltsd be a videót tartalmazó prezentációt.
- Szerezd meg a célzott VideoFrame objektumot.
- Távolítsd el a feliratrajont a getCaptionTracks gyűjteményből.
- Mentsd el a módosított prezentációt.
Az alábbi kód bemutatja, hogyan távolíthatod el az összes feliratot egy videókeretből:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->get_Item(0); // típus: VideoFrame
// Eltávolítja az összes feliratot a videókeretből.
$videoFrame->getCaptionTracks()->clear();
$presentation->save("video_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Ha csak egy feliratrajont kell eltávolítani, a remove vagy a removeAt metódusokat használd a clear helyett.
Videó kinyerése diákból
A videók diákhoz való hozzáadása mellett az Aspose.Slides lehetővé teszi a prezentációkba beágyazott videók kinyerését.
- Hozz létre egy példányt a Presentation osztályból a videót tartalmazó prezentáció betöltéséhez.
- Iteráld végig az összes Slide objektumot.
- Iteráld végig az összes Shape objektumot, hogy megtaláld a VideoFrame elemet.
- Mentsd el a videót lemezre.
Ez a PHP kód bemutatja, hogyan nyerheted ki a videót egy prezentációs diárról:
# Létrehozza a Presentation objektumot, amely egy prezentációs fájlt képvisel
$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();
# Lekéri a fájl kiterjesztését
$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();
}
}
GYIK
Mely videó lejátszási paraméterek módosíthatók egy VideoFrame esetén?
A playback mode (automatikus vagy kattintásra) és a looping beállításait tudod szabályozni. Ezek a lehetőségek a VideoFrame objektum tulajdonságain keresztül érhetők el.
A videó hozzáadása befolyásolja a PPTX fájl méretét?
Igen. Ha helyi videót ágyazol be, a bináris adat a dokumentumba kerül, így a prezentáció mérete arányosan növekszik a fájlmérettel. Online videó hozzáadásakor csak egy hivatkozás és egy miniatűr kerül beágyazásra, ezért a méretnövekedés kisebb.
Lecserélhetem a videót egy meglévő VideoFrame-ben anélkül, hogy megváltoztatnám a pozícióját és méretét?
Igen. A kereten belül kicserélheted a video content elemet, miközben megőrzöd a forma geometriáját; ez gyakori eset a média frissítésére egy meglévő elrendezésben.
Megállapítható-e egy beágyazott videó tartalomtípusa (MIME)?
Igen. Egy beágyazott videó rendelkezik content type információval, amelyet kiolvashatsz és felhasználhatsz, például lemezre mentéskor.