Videókeretek kezelése előadásokban Java használatával
Bevezetés
A megfelelően elhelyezett videó egy előadásban hatékonyabbá teheti az üzenetét, és növelheti a közönség elkötelezettségét.
A PowerPoint két módon teszi lehetővé a videók hozzáadását egy diára egy előadásban:
- Helyi videó hozzáadása vagy beágyazása (a gépén tárolt)
- Online videó hozzáadása (webes forrásból, például a YouTube-ról).
Az Aspose.Slides lehetővé teszi, hogy videókat (video objektumokat) adjunk egy előadáshoz, és biztosítja az IVideo interfészt, az IVideoFrame interfészt és egyéb releváns típusokat.
Beágyazott videókeretek létrehozása
Ha a diára felvenni kívánt videófájl helyileg van tárolva, létrehozhat egy videókeretet a videó előadásba való beágyazásához.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze be egy dia referenciaját az indexe alapján.
- Adjon hozzá egy IVideo objektumot, és adja meg a videófájl elérési útját a videó előadáshoz való beágyazásához.
- Adjon hozzá egy IVideoFrame objektumot a videó keretének létrehozásához.
- Mentse a módosított előadást.
Ez a Java kód megmutatja, hogyan adhat hozzá egy helyileg tárolt videót egy előadáshoz:
// Példányosítja a Presentation osztályt
Presentation pres = new Presentation("pres.pptx");
try {
// Betölti a videót
FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
IVideo 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);
// Mentse az előadást a lemezre
pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Alternatív megoldásként a videót közvetlenül a fájl útvonalának átadásával adhatja hozzá az addVideoFrame(float x, float y, float width, float height, IVideo video) metódusnak:
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
IVideoFrame vf = sld.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
if (pres != null) pres.dispose();
}
Videókeretek létrehozása webes forrásból származó videóval
A Microsoft PowerPoint 2013 és újabb verziók támogatják a YouTube videókat az előadásokban. Ha a felhasználni kívánt videó online elérhető (például a YouTube-on), hozzáadhatja előadásához a webes hivatkozásán keresztül.
- Hozzon létre egy példányt a Presentation osztályból
- Szerezze be egy dia referenciaját az indexe alapján.
- Adjon hozzá egy IVideo objektumot, és adja meg a videó linkjét.
- Állítson be bélyegképet a videókerethez.
- Mentse az előadást.
Ez a Java kód megmutatja, hogyan adhat hozzá egy webes videót egy dia PowerPoint előadásban:
// Példányosít egy Presentation objektumot, amely egy prezentációs fájlt képvisel
Presentation pres = new Presentation();
try {
addVideoFromYouTube(pres, "Tj75Arhq5ho");
pres.save("out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
// Hozzáad egy videókeretet
IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
videoFrame.setPlayMode(VideoPlayModePreset.Auto);
// Betölti a bélyegképet
String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
URL url;
try {
url = new URL(thumbnailUri);
videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Videókeret levágása
Az Aspose.Slides lehetővé teszi, hogy szabályozza, a videó mely része legyen lejátszva a trim-from-start és trim-from-end értékek beállításával a IVideoFrame.setTrimFromStart és a IVideoFrame.setTrimFromEnd segítségével. Mindkét érték ezredmásodpercben van megadva, és meghatározza, mennyi időt hagy el a videó elejéről és végéről. Ezek a beállítások a videó lejátszási beállításait módosítják az előadásban; nem vágják vagy módosítják a beágyazott videó bináris adatait.
Levágás beállítása
Videókeret létrehozásához és a levágási beállítások megadásához:
- Hozzon létre egy példányt a Presentation osztályból.
- Adjon hozzá egy IVideo objektumot az előadáshoz.
- Adjon hozzá egy IVideoFrame objektumot egy diára.
- Állítsa be a trim-from-start és trim-from-end értékeket a IVideoFrame.setTrimFromStart és a IVideoFrame.setTrimFromEnd segítségével.
- Mentse a módosított előadást.
A következő kódrészlet kihagyja az első 2,5 másodpercet és az utolsó másodpercet egy beágyazott videó lejátszása során:
Presentation presentation = new Presentation();
try {
FileInputStream videoStream = new FileInputStream("video.mp4");
try {
IVideo video = presentation.getVideos().addVideo(
videoStream, LoadingStreamBehavior.ReadStreamAndRelease);
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = slide.getShapes().addVideoFrame(50, 50, 640, 360, video);
videoFrame.setTrimFromStart(2500f);
videoFrame.setTrimFromEnd(1000f);
presentation.save("video_with_trim.pptx", SaveFormat.Pptx);
} finally {
videoStream.close();
}
} finally {
presentation.dispose();
}
Levágás beállításainak olvasása
A meglévő levágási beállítások megtekintéséhez töltse be az előadást, keresse meg az első dián lévő alakzatok között az IVideoFrame objektumot, és olvassa ki az értékeket a IVideoFrame.getTrimFromStart és a IVideoFrame.getTrimFromEnd segítségével.
A következő kódrészlet megtalálja az első videókeretet az első dián, és ezredmásodpercben jelzi a levágási beállításokat:
Presentation presentation = new Presentation("video_with_trim.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
for (IShape shape : slide.getShapes()) {
if (shape instanceof IVideoFrame) {
IVideoFrame videoFrame = (IVideoFrame) shape;
float trimFromStart = videoFrame.getTrimFromStart();
float trimFromEnd = videoFrame.getTrimFromEnd();
System.out.println("Trim from start: " + trimFromStart + " ms");
System.out.println("Trim from end: " + trimFromEnd + " ms");
break;
}
}
} finally {
presentation.dispose();
}
Videó feliratok kezelése
Az Aspose.Slides lehetővé teszi, hogy zárt feliratokat kezeljen a videókeretekhez PowerPoint előadásokban. A feliratok WebVTT formátumban vannak tárolva, és a IVideoFrame.getCaptionTracks metóduson keresztül érhetők el.
Feliratok hozzáadása egy videókerethez
Feliratok egy videókerethez való hozzáadásához:
- Hozzon létre egy példányt a Presentation osztályból.
- Adjon hozzá egy videót az előadáshoz.
- Adjon hozzá egy IVideoFrame objektumot egy diára.
- Használja a ICaptionsCollection gyűjteményt, amelyet a getCaptionTracks visszaad, egy WebVTT feliratsáv hozzáadásához.
- Mentse a módosított előadást.
A következő kód megmutatja, hogyan adhat feliratokat egy videókerethez:
Presentation presentation = new Presentation();
try {
byte[] videoData = Files.readAllBytes(Paths.get("video.mp4"));
IVideo video = presentation.getVideos().addVideo(videoData);
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = slide.getShapes().addVideoFrame(0, 0, 100, 100, video);
// Új feliratsáv hozzáadása egy WebVTT fájlból.
videoFrame.getCaptionTracks().add("English", "track.vtt");
presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az ICaptionsCollection interfész további túlterhelést is biztosít, amely lehetővé teszi feliratok hozzáadását egy adatfolyamból.
Feliratok kinyerése egy videókeretből
Feliratok egy videókeretből való kinyeréséhez:
- Töltse be azt az előadást, amely a videót tartalmazza.
- Keresse meg a cél IVideoFrame objektumot.
- Iteráljon a feliratsávokon az ICaptionsCollection gyűjteményben.
- Mentse el minden feliratsávot egy
.vttfájlba.
A következő kód megmutatja, hogyan nyerje ki a feliratokat egy videókeretből:
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
for (IShape shape : slide.getShapes()) {
if (shape instanceof IVideoFrame) {
IVideoFrame videoFrame = (IVideoFrame)shape;
for (ICaptions captionTrack : videoFrame.getCaptionTracks()) {
// Mentse a feliratsávot egy WebVTT fájlba.
String filePath = captionTrack.getCaptionId().toString() + ".vtt";
Files.write(Paths.get(filePath), captionTrack.getBinaryData());
}
}
}
} finally {
presentation.dispose();
}
Minden ICaptions objektum a felirat azonosítóját, címkéjét, bináris adatait és a felirat szövegét UTF-8 karakterláncként teszi elérhetővé.
Feliratok eltávolítása egy videókeretből
Feliratok egy videókeretből való eltávolításához:
- Töltse be azt az előadást, amely a videót tartalmazza.
- Szerezze meg a cél IVideoFrame objektumot.
- Távolítsa el a feliratsávokat az ICaptionsCollection gyűjteményből.
- Mentse a módosított előadást.
A következő kód megmutatja, hogyan távolíthatja el az összes feliratot egy videókeretből:
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);
// Eltávolítja az összes feliratot a videókeretről.
videoFrame.getCaptionTracks().clear();
presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Ha csak egy feliratsávot kíván eltávolítani, használja a remove vagy a removeAt metódust 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 beágyazott videók kinyerését az előadásokból.
- Hozzon létre egy példányt a Presentation osztályból a videót tartalmazó előadás betöltéséhez.
- Iteráljon az összes ISlide objektumon.
- Iteráljon az összes IShape objektumon, hogy megtalálja a VideoFrame elemet.
- Mentse a videót a lemezre.
Ez a Java kód megmutatja, hogyan nyerje ki a videót egy előadás diájáról:
// Példányosít egy Presentation objektumot, amely egy prezentációs fájlt képvisel
Presentation pres = new Presentation("VideoSample.pptx");
try {
for (ISlide slide : pres.getSlides())
{
for (IShape shape : slide.getShapes())
{
if (shape instanceof VideoFrame)
{
IVideoFrame vf = (IVideoFrame) shape;
String type = vf.getEmbeddedVideo().getContentType();
int ss = type.lastIndexOf('-');
byte[] buffer = vf.getEmbeddedVideo().getBinaryData();
// Lekéri a fájl kiterjesztését
int charIndex = type.indexOf("/");
type = type.substring(charIndex + 1);
FileOutputStream fop = new FileOutputStream("testing2." + type);
fop.write(buffer);
fop.flush();
fop.close();
}
}
}
} catch (IOException e) {
} finally {
if (pres != null) 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 szabályozhatja. Ezek az opciók 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 beágyaz egy helyi videót, a bináris adat a dokumentumba kerül, így az előadás mérete a fájl méretével arányosan nő. Ha online videót ad hozzá, egy hivatkozás és egy bélyegkép 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 keretben lévő video content cserélhető a forma geometriai adatait megőrizve; ez gyakori eset a média frissítésére egy meglévő elrendezésben.
Meghatározható-e egy beágyazott videó tartalomtípusa (MIME)?
Igen. Egy beágyazott videónak van content type tulajdonsága, amelyet kiolvashat és használhat, például a lemezre mentéskor.