Beheer videoframes in presentaties met Java
Introductie
Een goed geplaatste video in een presentatie kan uw boodschap krachtiger maken en de betrokkenheid van uw publiek verhogen.
PowerPoint biedt twee manieren om video’s aan een dia in een presentatie toe te voegen:
- Voeg een lokale video toe of embed deze (opgeslagen op uw computer)
- Voeg een online video toe (van een webbron zoals YouTube).
Om u in staat te stellen video’s (video‑objecten) aan een presentatie toe te voegen, levert Aspose.Slides de IVideo interface, de IVideoFrame interface en andere relevante typen.
Maak ingesloten videoframes
Als het videobestand dat u aan uw dia wilt toevoegen lokaal is opgeslagen, kunt u een videoframe maken om de video in uw presentatie te embedden.
- Maak een instantie van de Presentation class.
- Verkrijg een referentie naar een dia via de index.
- Voeg een IVideo object toe en geef het pad naar het videobestand door om de video in de presentatie te embedden.
- Voeg een IVideoFrame object toe om een frame voor de video te maken.
- Sla de gewijzigde presentatie op.
Deze Java‑code laat zien hoe u een lokaal opgeslagen video aan een presentatie toevoegt:
// Instantieert de Presentation-klasse
Presentation pres = new Presentation("pres.pptx");
try {
// Laadt de video
FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// Haalt de eerste dia op en voegt een videoframe toe
pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);
// Slaat de presentatie op naar schijf
pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
U kunt ook een video toevoegen door het bestandspad rechtstreeks door te geven aan de addVideoFrame(float x, float y, float width, float height, IVideo video) methode:
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();
}
Maak videoframes met video van webbronnen
Microsoft PowerPoint 2013 en nieuwer ondersteunt YouTube‑video’s in presentaties. Als de video die u wilt gebruiken online beschikbaar is (bijv. op YouTube), kunt u deze aan uw presentatie toevoegen via de web‑link.
- Maak een instantie van Presentation class
- Verkrijg een referentie naar een dia via de index.
- Voeg een IVideo object toe en geef de link naar de video door.
- Stel een miniatuurafbeelding in voor het videoframe.
- Sla de presentatie op.
Deze Java‑code laat zien hoe u een video van het web aan een dia in een PowerPoint‑presentatie toevoegt:
// Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt
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)
{
// Voegt een videoframe toe
IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
videoFrame.setPlayMode(VideoPlayModePreset.Auto);
// Laadt miniatuurafbeelding
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();
}
}
Beheer video‑onderschriften
Aspose.Slides maakt het mogelijk om ondertitels (closed captions) voor videoframes in PowerPoint‑presentaties te beheren. Ondertitels worden opgeslagen in WebVTT‑formaat en zijn toegankelijk via de IVideoFrame.getCaptionTracks methode.
Ondertitels aan een videoframe toevoegen
Om ondertitels aan een videoframe toe te voegen:
- Maak een instantie van de Presentation class.
- Voeg een video toe aan de presentatie.
- Voeg een IVideoFrame object toe aan een dia.
- Gebruik de ICaptionsCollection die wordt geretourneerd door getCaptionTracks om een WebVTT‑ondertiteltrack toe te voegen.
- Sla de gewijzigde presentatie op.
De volgende code toont hoe u ondertitels aan een videoframe toevoegt:
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);
// Voegt een nieuw ondertiteltrack toe vanuit een WebVTT-bestand.
videoFrame.getCaptionTracks().add("English", "track.vtt");
presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
De ICaptionsCollection interface biedt ook een overload waarmee u ondertitels vanuit een stream kunt toevoegen.
Ondertitels uit een videoframe extraheren
Om ondertitels uit een videoframe te extraheren:
- Laad de presentatie die de video bevat.
- Zoek het doel-IVideoFrame object.
- Loop door de ondertitel‑tracks in de ICaptionsCollection.
- Sla elke ondertitel‑track op als een
.vtt‑bestand.
De volgende code toont hoe u ondertitels uit een videoframe extrahert:
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()) {
// Slaat het ondertiteltrack op als een WebVTT-bestand.
String filePath = captionTrack.getCaptionId().toString() + ".vtt";
Files.write(Paths.get(filePath), captionTrack.getBinaryData());
}
}
}
} finally {
presentation.dispose();
}
Elk ICaptions object geeft de ondertitel‑identifier, het label, de binaire data en de ondertiteltekst als een UTF‑8‑string weer.
Ondertitels uit een videoframe verwijderen
Om ondertitels uit een videoframe te verwijderen:
- Laad de presentatie die de video bevat.
- Verkrijg het doel-IVideoFrame object.
- Verwijder ondertitel‑tracks uit de ICaptionsCollection.
- Sla de gewijzigde presentatie op.
De volgende code toont hoe u alle ondertitels uit een videoframe verwijdert:
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);
// Verwijdert alle ondertitels uit het videoframe.
videoFrame.getCaptionTracks().clear();
presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Als u slechts één ondertitel‑track wilt verwijderen, gebruik dan de remove of removeAt methode in plaats van clear.
Video extraheren uit dia’s
Naast het toevoegen van video’s aan dia’s, maakt Aspose.Slides het mogelijk om video’s die in presentaties zijn ingesloten te extraheren.
- Maak een instantie van de Presentation class om de presentatie met de video te laden.
- Loop door alle ISlide objecten.
- Loop door alle IShape objecten om een VideoFrame te vinden.
- Sla de video op schijf.
Deze Java‑code laat zien hoe u de video uit een presentatiedia extrahert:
// Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt
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();
// Haalt de bestandsextensie op
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
Welke afspeel‑parameters kunnen voor een VideoFrame worden aangepast?
U kunt de afspeelmodus (automatisch of bij klik) en de herhaalmodus regelen. Deze opties zijn beschikbaar via de eigenschappen van het VideoFrame object.
Heeft het toevoegen van een video invloed op de bestandsgrootte van de PPTX?
Ja. Wanneer u een lokale video embedt, worden de binaire gegevens in het document opgenomen, waardoor de presentatiesize evenredig toeneemt met de bestandsgrootte. Wanneer u een online video toevoegt, worden alleen een link en een miniatuur‑afbeelding ingebed, waardoor de toename kleiner is.
Kan ik de video in een bestaand VideoFrame vervangen zonder positie en grootte te wijzigen?
Ja. U kunt de video‑inhoud binnen het frame verwisselen terwijl u de geometrie van de vorm behoudt; dit is een veelvoorkomend scenario voor het bijwerken van media in een bestaande lay-out.
Kan het content‑type (MIME) van een ingesloten video worden bepaald?
Ja. Een ingesloten video heeft een content type dat u kunt uitlezen en gebruiken, bijvoorbeeld bij het opslaan op schijf.