Gérer les cadres vidéo dans les présentations avec Java
Une vidéo bien placée dans une présentation peut rendre votre message plus convaincant et augmenter le niveau d’engagement de votre audience.
PowerPoint vous permet d’ajouter des vidéos à une diapositive d’une présentation de deux manières :
- Ajouter ou incorporer une vidéo locale (stockée sur votre machine)
- Ajouter une vidéo en ligne (provenant d’une source web telle que YouTube).
Pour vous permettre d’ajouter des vidéos (objets vidéo) à une présentation, Aspose.Slides fournit l’interface IVideo, l’interface IVideoFrame et d’autres types pertinents.
Créer des cadres vidéo intégrés
Si le fichier vidéo que vous souhaitez ajouter à votre diapositive est stocké localement, vous pouvez créer un cadre vidéo pour incorporer la vidéo dans votre présentation.
- Créer une instance de la classe Presentation class.
- Obtenir la référence d’une diapositive via son indice.
- Ajouter un objet IVideo et fournir le chemin du fichier vidéo pour incorporer la vidéo à la présentation.
- Ajouter un objet IVideoFrame pour créer un cadre pour la vidéo.
- Enregistrer la présentation modifiée.
Ce code Java vous montre comment ajouter une vidéo stockée localement à une présentation :
// Instancie la classe Presentation
Presentation pres = new Presentation("pres.pptx");
try {
// Charge la vidéo
FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// Récupère la première diapositive et ajoute un cadre vidéo
pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);
// Enregistre la présentation sur le disque
pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Alternativement, vous pouvez ajouter une vidéo en transmettant directement son chemin de fichier à la méthode 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();
}
Créer des cadres vidéo avec des vidéos provenant de sources web
Microsoft PowerPoint 2013 and newer prend en charge les vidéos YouTube dans les présentations. Si la vidéo que vous souhaitez utiliser est disponible en ligne (par exemple sur YouTube), vous pouvez l’ajouter à votre présentation via son lien web.
- Créer une instance de la classe Presentation class
- Obtenir la référence d’une diapositive via son indice.
- Ajouter un objet IVideo et fournir le lien vers la vidéo.
- Définir une vignette pour le cadre vidéo.
- Enregistrer la présentation.
Ce code Java vous montre comment ajouter une vidéo depuis le web à une diapositive d’une présentation PowerPoint :
// Instancie un objet Presentation qui représente un fichier de présentation
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)
{
// Ajoute un cadre vidéo
IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
videoFrame.setPlayMode(VideoPlayModePreset.Auto);
// Charge la vignette
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();
}
}
Gérer les légendes vidéo
Aspose.Slides vous permet de gérer les sous‑titres fermés pour les cadres vidéo dans les présentations PowerPoint. Les légendes sont stockées au format WebVTT et sont exposées via la méthode IVideoFrame.getCaptionTracks .
Ajouter des légendes à un cadre vidéo
Pour ajouter des légendes à un cadre vidéo :
- Créer une instance de la classe Presentation .
- Ajouter une vidéo à la présentation.
- Ajouter un objet IVideoFrame à une diapositive.
- Utiliser la ICaptionsCollection renvoyée par getCaptionTracks pour ajouter une piste de légende WebVTT.
- Enregistrer la présentation modifiée.
Le code suivant vous montre comment ajouter des légendes à un cadre vidéo :
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);
// Ajoute une nouvelle piste de sous-titres depuis un fichier WebVTT.
presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
L’interface ICaptionsCollection propose également une surcharge qui vous permet d’ajouter des légendes à partir d’un flux.
Extraire des légendes d’un cadre vidéo
Pour extraire des légendes d’un cadre vidéo :
- Charger la présentation qui contient la vidéo.
- Trouver l’objet IVideoFrame cible.
- Parcourir les pistes de légendes dans la ICaptionsCollection.
- Enregistrer chaque piste de légende dans un fichier
.vtt.
Le code suivant vous montre comment extraire des légendes d’un cadre vidéo :
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()) {
// Enregistre la piste de sous-titres dans un fichier WebVTT.
String filePath = captionTrack.getCaptionId().toString() + ".vtt";
Files.write(Paths.get(filePath), captionTrack.getBinaryData());
}
}
}
} finally {
presentation.dispose();
}
Chaque objet ICaptions expose l’identifiant de la légende, le libellé, les données binaires et le texte de la légende sous forme de chaîne UTF‑8.
Supprimer des légendes d’un cadre vidéo
Pour supprimer des légendes d’un cadre vidéo :
- Charger la présentation qui contient la vidéo.
- Obtenir l’objet IVideoFrame cible.
- Supprimer les pistes de légendes de la ICaptionsCollection .
- Enregistrer la présentation modifiée.
Le code suivant vous montre comment supprimer toutes les légendes d’un cadre vidéo :
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);
// Supprime toutes les légendes du cadre vidéo.
videoFrame.getCaptionTracks().clear();
presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Si vous devez supprimer uniquement une piste de légende, utilisez les méthodes remove ou removeAt au lieu de clear .
Extraire des vidéos des diapositives
En plus d’ajouter des vidéos aux diapositives, Aspose.Slides vous permet d’extraire les vidéos incorporées dans les présentations.
- Créer une instance de la classe Presentation pour charger la présentation contenant la vidéo.
- Parcourir tous les objets ISlide.
- Parcourir tous les objets IShape afin de trouver un VideoFrame.
- Enregistrer la vidéo sur le disque.
Ce code Java vous montre comment extraire la vidéo d’une diapositive de présentation :
// Instancie un objet Presentation qui représente un fichier de présentation
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();
//Obtient l'extension du fichier
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
Quels paramètres de lecture vidéo peuvent être modifiés pour un VideoFrame ?
Vous pouvez contrôler le mode de lecture (automatique ou au clic) et la lecture en boucle. Ces options sont disponibles via les propriétés de l’objet VideoFrame .
L’ajout d’une vidéo affecte-t‑il la taille du fichier PPTX ?
Oui. Lorsque vous intégrez une vidéo locale, les données binaires sont incluses dans le document, ce qui augmente la taille de la présentation proportionnellement à la taille du fichier. Lorsque vous ajoutez une vidéo en ligne, un lien et une vignette sont incorporés, ce qui entraîne une augmentation de taille moindre.
Puis‑je remplacer la vidéo d’un VideoFrame existant sans modifier sa position et sa taille ?
Oui. Vous pouvez échanger le contenu vidéo à l’intérieur du cadre tout en conservant la géométrie de la forme ; c’est un scénario courant pour mettre à jour des médias dans une mise en page existante.
Le type de contenu (MIME) d’une vidéo incorporée peut‑il être déterminé ?
Oui. Une vidéo incorporée possède un type de contenu que vous pouvez lire et utiliser, par exemple lors de son enregistrement sur le disque.