Hantera videoramar i presentationer med Java
Introduktion
En välplacerad video i en presentation kan göra ditt budskap mer övertygande och öka engagemangsnivåerna hos din publik.
PowerPoint låter dig lägga till videor på en bild i en presentation på två sätt:
- Lägg till eller bädda in en lokal video (lagrad på din dator)
- Lägg till en online-video (från en webbkälla såsom YouTube).
För att du ska kunna lägga till videor (videoobjekt) i en presentation tillhandahåller Aspose.Slides gränssnitten IVideo och IVideoFrame, samt andra relevanta typer.
Skapa inbäddade videoramar
Om videofilen du vill lägga till på din bild är lagrad lokalt kan du skapa en videoram för att bädda in videon i din presentation.
- Skapa en instans av klassen Presentation .
- Hämta en bilds referens via dess index.
- Lägg till ett IVideo‑objekt och skicka videofilens sökväg för att bädda in videon i presentationen.
- Lägg till ett IVideoFrame‑objekt för att skapa en ram för videon.
- Spara den modifierade presentationen.
Denna Java‑kod visar hur du lägger till en lokalt lagrad video i en presentation:
// Skapar en instans av Presentation-klassen
Presentation pres = new Presentation("pres.pptx");
try {
// Läser in videon
FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// Hämtar den första bilden och lägger till en videoram
pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);
// Sparar presentationen till disken
pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Alternativt kan du lägga till en video genom att skicka dess filsökväg direkt till metoden addVideoFrame(float x, float y, float width, float height, IVideo video):
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();
}
Skapa videoramar med video från webbkällor
Microsoft PowerPoint 2013 och nyare stöder YouTube‑videor i presentationer. Om den video du vill använda är tillgänglig online (t.ex. på YouTube) kan du lägga till den i din presentation via dess webblänk.
- Skapa en instans av klassen Presentation .
- Hämta en bilds referens via dess index.
- Lägg till ett IVideo‑objekt och skicka länken till videon.
- Ställ in en miniatyrebild för videoramen.
- Spara presentationen.
Denna Java‑kod visar hur du lägger till en video från webben på en bild i en PowerPoint‑presentation:
// Instansierar ett Presentation-objekt som representerar en presentationsfil
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)
{
// Lägger till en videoram
IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
videoFrame.setPlayMode(VideoPlayModePreset.Auto);
// Laddar miniatyrebild
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();
}
}
Hantera videobeskrivningar
Aspose.Slides låter dig hantera slutna bildtexter för videoramar i PowerPoint‑presentationer. Bildtexter lagras i WebVTT-format och exponeras via metoden IVideoFrame.getCaptionTracks.
Lägg till bildtexter till en videoram
För att lägga till bildtexter till en videoram:
- Skapa en instans av klassen Presentation .
- Lägg till en video i presentationen.
- Lägg till ett IVideoFrame‑objekt på en bild.
- Använd den ICaptionsCollection som returneras av getCaptionTracks för att lägga till ett WebVTT‑bildspår.
- Spara den modifierade presentationen.
Följande kod visar hur du lägger till bildtexter till en videoram:
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);
// Lägger till ett nytt bildtextspår från en WebVTT-fil.
videoFrame.getCaptionTracks().add("English", "track.vtt");
presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Gränssnittet ICaptionsCollection erbjuder också en överlagring som låter dig lägga till bildtexter från en ström.
Extrahera bildtexter från en videoram
För att extrahera bildtexter från en videoram:
- Läs in presentationen som innehåller videon.
- Hitta mål‑objektet IVideoFrame.
- Iterera igenom bildspåren i ICaptionsCollection.
- Spara varje bildspår till en
.vtt‑fil.
Följande kod visar hur du extraherar bildtexter från en videoram:
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()) {
// Sparar bildspåret till en WebVTT-fil.
String filePath = captionTrack.getCaptionId().toString() + ".vtt";
Files.write(Paths.get(filePath), captionTrack.getBinaryData());
}
}
}
} finally {
presentation.dispose();
}
Varje ICaptions‑objekt visar bildidentifieraren, etiketten, binära data och bildtexten som en UTF‑8‑sträng.
Ta bort bildtexter från en videoram
För att ta bort bildtexter från en videoram:
- Läs in presentationen som innehåller videon.
- Hämta mål‑objektet IVideoFrame.
- Ta bort bildspår från ICaptionsCollection.
- Spara den modifierade presentationen.
Följande kod visar hur du tar bort alla bildtexter från en videoram:
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);
// Tar bort alla bildtexter från videoramen.
videoFrame.getCaptionTracks().clear();
presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Om du bara behöver ta bort ett bildspår, använd metoderna remove eller removeAt istället för clear.
Extrahera video från bilder
Förutom att lägga till videor på bilder låter Aspose.Slides dig extrahera videor som är inbäddade i presentationer.
- Skapa en instans av klassen Presentation för att läsa in presentationen som innehåller videon.
- Iterera genom alla ISlide‑objekt.
- Iterera genom alla IShape‑objekt för att hitta en VideoFrame.
- Spara videon till disk.
Denna Java‑kod visar hur du extraherar videon på en presentationsbild:
// Instansierar ett Presentation-objekt som representerar en presentationsfil
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();
//Hämtar filändelsen
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();
}
FAQ
Vilka videouppspelningsparametrar kan ändras för en VideoFrame?
Du kan kontrollera uppspelningsläget (automatiskt eller vid klick) och loopning. Dessa alternativ finns tillgängliga via egenskaperna för VideoFrame-objektet.
Påverkar tillägg av en video PPTX‑filens storlek?
Ja. När du bäddar in en lokal video inkluderas de binära data i dokumentet, så presentationens storlek växer proportionellt mot filens storlek. När du lägger till en online‑video bäddas en länk och en miniatyrebild in, så storleksökningen blir mindre.
Kan jag ersätta videon i en befintlig VideoFrame utan att ändra dess position och storlek?
Ja. Du kan byta ut videoinnehållet i ramen samtidigt som du bevarar formens geometri; detta är ett vanligt scenario för att uppdatera media i en befintlig layout.
Kan innehållstypen (MIME) för en inbäddad video bestämmas?
Ja. En inbäddad video har en innehållstyp som du kan läsa och använda, exempelvis när du sparar den till disk.