Gérer les cadres vidéo dans les présentations en .NET
Introduction
Les vidéos peuvent aider à expliquer des idées et à capter l’attention du public. Aspose.Slides for .NET vous permet d’ajouter des cadres vidéo aux diapositives, de régler les paramètres de lecture, de gérer les sous‑titres et d’extraire les données vidéo intégrées.
PowerPoint prend en charge les vidéos locales et les liens vers des vidéos en ligne, comme les vidéos YouTube.
Pour représenter les données vidéo et les cadres vidéo, Aspose.Slides fournit l’interface IVideo, l’interface IVideoFrame et d’autres types pertinents.
Créer un cadre vidéo intégré
Si le fichier vidéo que vous souhaitez ajouter à votre diapositive est stocké localement, vous pouvez créer un cadre vidéo pour intégrer la vidéo dans votre présentation.
Cet exemple intègre une vidéo locale sur la première diapositive d’une présentation existante et enregistre le résultat. Les coordonnées et les dimensions du cadre sont exprimées en points. Le flux reste ouvert jusqu’à la fin de l’enregistrement parce que LoadingStreamBehavior.KeepLocked le maintient verrouillé pendant que la présentation l’utilise.
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("presentation.pptx");
var slide = presentation.Slides[0];
using var videoStream = File.OpenRead("video.mp4");
var video = presentation.Videos.AddVideo(videoStream, LoadingStreamBehavior.KeepLocked);
slide.Shapes.AddVideoFrame(10, 10, 150, 250, video);
presentation.Save("embedded_video.pptx", SaveFormat.Pptx);
Vous pouvez également transmettre directement le chemin d’une vidéo locale à AddVideoFrame. Cet exemple intègre la vidéo sur la première diapositive d’une nouvelle présentation. La vidéo doit rester accessible jusqu’à ce que la présentation soit enregistrée.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
slide.Shapes.AddVideoFrame(50, 150, 300, 150, "video.avi");
presentation.Save("video_from_path.pptx", SaveFormat.Pptx);
Définir le volume vidéo avec précision
Dans Aspose.Slides for .NET 26.11 ou version ultérieure, IVideoFrame.VolumeValue définit un pourcentage à virgule flottante de 0 à 100. Utilisez‑le lorsque les préréglages Volume sont trop grossiers. Par exemple, 75.5f demande un volume de 75,5 %.
Cet exemple nécessite Aspose.Slides for .NET 26.11 ou version ultérieure et une vidéo locale video.mp4. Il intègre la vidéo, initialise explicitement la lecture, enregistre la présentation et lit le pourcentage stocké.
using System;
using System.IO;
using System.Linq;
using Aspose.Slides;
using Aspose.Slides.Export;
var volume = 75.5f;
if (float.IsNaN(volume) || float.IsInfinity(volume) || volume < 0 || volume > 100)
{
Console.WriteLine("Use a finite volume from 0 to 100.");
return;
}
using (var presentation = new Presentation())
{
var videoBytes = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoBytes);
var frame = presentation.Slides[0].Shapes.AddVideoFrame(50, 50, 320, 180, video);
frame.PlayMode = VideoPlayModePreset.Auto;
frame.VolumeValue = volume;
presentation.Save("video-volume.pptx", SaveFormat.Pptx);
}
using var saved = new Presentation("video-volume.pptx");
var savedFrame = saved.Slides[0].Shapes.OfType<IVideoFrame>().First();
Console.WriteLine(savedFrame.VolumeValue);
Validez vous‑même les entrées ; ne comptez pas sur le mutateur pour rejeter les valeurs en dehors de l’intervalle documenté. Les préréglages Low, Medium et Loud correspondent respectivement à 20, 50 et 80 dans la version 26.11. L’affectation d’un préréglage peut remplacer un pourcentage antérieur, il faut donc attribuer le pourcentage en dernier lorsque vous avez besoin d’une valeur exacte. Utilisez AudioVolumeMode.Mute pour le réglage de muet explicite ; un zéro numérique et l’énumération du préréglage ne sont pas des états interchangeables.
Définissez explicitement PlayMode lors de la configuration d’une vidéo liée également, et maintenez son fichier média disponible pour le visionneur. L’enregistrement et la réouverture vérifient le paramètre stocké ; la lecture réelle et le niveau sonore dépendent du lecteur de présentation et de ses paramètres audio.
Créer un cadre vidéo à partir d’une source Web
Microsoft PowerPoint prend en charge les vidéos en ligne dans les présentations. Vous pouvez créer un cadre vidéo qui lie à une vidéo en ligne, comme une vidéo YouTube.
Cet exemple ajoute un lien YouTube et une miniature à la première diapositive. Remplacez l’identifiant vidéo pour utiliser une autre vidéo. Le paramètre PlayMode demande une lecture automatique. Le téléchargement de la miniature et la lecture de la vidéo nécessitent un accès Internet. Le visionneur de présentation doit également prendre en charge la lecture de vidéos en ligne.
using System.Net.Http;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
using var httpClient = new HttpClient();
var videoId = "aqz-KE-bpKQ";
var videoUrl = $"https://www.youtube.com/embed/{videoId}";
var videoFrame = slide.Shapes.AddVideoFrame(10, 10, 427, 240, videoUrl);
videoFrame.PlayMode = VideoPlayModePreset.Auto;
var thumbnailUrl = $"https://img.youtube.com/vi/{videoId}/hqdefault.jpg";
var thumbnailData = httpClient.GetByteArrayAsync(thumbnailUrl).GetAwaiter().GetResult();
var thumbnail = presentation.Images.AddImage(thumbnailData);
videoFrame.PictureFormat.Picture.Image = thumbnail;
presentation.Save("online_video.pptx", SaveFormat.Pptx);
Lire une vidéo en mode plein écran
Dans une présentation de formation, vous pouvez lire une démonstration logicielle en plein écran afin que le public voie les détails. Réglez FullScreenMode sur true pour activer ce comportement pendant la lecture.
Cet exemple ouvre une présentation, trouve le premier IVideoFrame sur la première diapositive et active la lecture en plein écran. La présentation d’entrée doit contenir au moins une diapositive avec un cadre vidéo existant sur la première diapositive.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("training.pptx");
var slide = presentation.Slides[0];
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
videoFrame.FullScreenMode = true;
break;
}
}
presentation.Save("full_screen_video.pptx", SaveFormat.Pptx);
La lecture en plein écran contrôle la façon dont la vidéo est affichée. De façon indépendante, PlayMode détermine si elle démarre automatiquement ou au clic, et PlayLoopMode détermine si elle se répète. Pour choisir le comportement de démarrage, définissez le mode de lecture sur VideoPlayModePreset.Auto ou VideoPlayModePreset.OnClick. L’exemple préserve les réglages existants de démarrage et de boucle.
Rembobiner une vidéo après la lecture
Dans une présentation de formation, revenir le début d’une vidéo de démonstration la rend prête à être relancée par le présentateur. Réglez RewindVideo sur true pour ramener la vidéo au début après la fin de la lecture.
Cet exemple ouvre une présentation, trouve le premier IVideoFrame sur la première diapositive et active le rembobinage. Il désactive la boucle afin que la lecture puisse se terminer et configure le démarrage de la lecture au clic. La présentation d’entrée doit contenir au moins une diapositive avec un cadre vidéo existant sur la première diapositive.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("training.pptx");
var slide = presentation.Slides[0];
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
videoFrame.RewindVideo = true;
videoFrame.PlayLoopMode = false;
videoFrame.PlayMode = VideoPlayModePreset.OnClick;
break;
}
}
presentation.Save("rewind_video.pptx", SaveFormat.Pptx);
Le rembobinage ramène la vidéo à son début sans la relancer. En revanche, l’activation de PlayLoopMode répète la lecture automatiquement. Gardez la boucle désactivée lorsque vous voulez que la vidéo se termine et reste prête à être relancée. PlayMode contrôle indépendamment le démarrage automatique ou au clic ; cet exemple utilise VideoPlayModePreset.OnClick afin que le présentateur décide du moment du lancement. Réglez le mode de lecture après le paramètre de boucle, comme le montre l’exemple. Le rembobinage fonctionne indépendamment de FullScreenMode.
Rogner un cadre vidéo
Utilisez IVideoFrame.TrimFromStart et IVideoFrame.TrimFromEnd pour ignorer une partie du début ou de la fin d’une vidéo pendant la lecture. Les deux valeurs sont exprimées en millisecondes. Le rognage modifie les paramètres de lecture sans altérer les données vidéo intégrées.
Définir les paramètres de rognage
Cet exemple intègre une vidéo locale et saute les 2,5 secondes initiales ainsi que la dernière seconde pendant la lecture. Utilisez une vidéo d’une durée supérieure à 3,5 secondes afin qu’un segment lisible demeure.
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var videoData = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoData);
var videoFrame = slide.Shapes.AddVideoFrame(50, 50, 640, 360, video);
videoFrame.TrimFromStart = 2500f;
videoFrame.TrimFromEnd = 1000f;
presentation.Save("video_with_trim.pptx", SaveFormat.Pptx);
Lire les paramètres de rognage
Cet exemple affiche les valeurs de rognage du premier cadre vidéo sur la première diapositive, en millisecondes. La présentation doit contenir au moins une diapositive. Si cette diapositive ne possède aucun cadre vidéo, rien n’est affiché. L’exemple précédent génère les valeurs 2500 et 1000.
using System;
using Aspose.Slides;
using var presentation = new Presentation("video_with_trim.pptx");
var slide = presentation.Slides[0];
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
Console.WriteLine($"Trim from start: {videoFrame.TrimFromStart} ms");
Console.WriteLine($"Trim from end: {videoFrame.TrimFromEnd} ms");
break;
}
}
Gérer les sous‑titres 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 sous‑titres sont stockés au format WebVTT et sont exposés via la propriété IVideoFrame.CaptionTracks.
Ajouter des sous‑titres à un cadre vidéo
Cet exemple intègre une vidéo locale et ajoute une piste de sous‑titres WebVTT étiquetée English. Les horodatages des sous‑titres doivent correspondre à la vidéo. La présentation enregistrée comprend à la fois la vidéo et ses sous‑titres.
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var videoData = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoData);
var videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);
videoFrame.CaptionTracks.Add("English", "track.vtt");
presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
L’interface ICaptionsCollection propose également une surcharge qui vous permet d’ajouter des sous‑titres à partir d’un flux.
Extraire les sous‑titres d’un cadre vidéo
Cet exemple enregistre toutes les pistes de sous‑titres des cadres vidéo de la première diapositive en fichiers WebVTT séparés. Les numéros séquentiels maintiennent les fichiers de sortie distincts. La console indique le nombre de pistes extraites. La présentation doit contenir au moins une diapositive.
using System;
using System.IO;
using Aspose.Slides;
using var presentation = new Presentation("video_with_captions.pptx");
var slide = presentation.Slides[0];
var trackCount = 0;
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
foreach (var captionTrack in videoFrame.CaptionTracks)
{
trackCount++;
var outputPath = $"captions_{trackCount}.vtt";
File.WriteAllBytes(outputPath, captionTrack.BinaryData);
}
}
}
Console.WriteLine($"Caption tracks extracted: {trackCount}");
Chaque objet ICaptions expose l’identifiant du sous‑titre, le libellé, les données binaires et le texte du sous‑titre sous forme de chaîne UTF‑8.
Supprimer les sous‑titres d’un cadre vidéo
Cet exemple supprime tous les sous‑titres du cadre vidéo à la première position de forme sur la première diapositive et enregistre le résultat. Il suppose que la diapositive et la forme existent et que la forme soit un cadre vidéo.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("video_with_captions.pptx");
var slide = presentation.Slides[0];
var videoFrame = (IVideoFrame) slide.Shapes[0];
videoFrame.CaptionTracks.Clear();
presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
Si vous devez supprimer uniquement une piste de sous‑titres, utilisez les méthodes Remove ou RemoveAt au lieu de Clear.
Extraire la vidéo d’une diapositive
En plus d’ajouter des vidéos aux diapositives, Aspose.Slides vous permet d’extraire les vidéos intégrées aux présentations.
Cet exemple extrait les vidéos intégrées de chaque diapositive dans des fichiers binaires numérotés distincts. Les vidéos liées sont ignorées car elles ne contiennent aucune donnée intégrée. La console affiche le type MIME de chaque vidéo et le nombre total. La sortie utilise l’extension générique .bin ; modifiez‑la pour correspondre au type de média signalé si nécessaire.
using System;
using System.IO;
using Aspose.Slides;
using var presentation = new Presentation("presentation_with_videos.pptx");
var videoCount = 0;
foreach (var slide in presentation.Slides)
{
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
var video = videoFrame.EmbeddedVideo;
if (video == null)
{
Console.WriteLine("Skipped a linked video: no embedded data is available.");
continue;
}
videoCount++;
var outputPath = $"extracted_video_{videoCount}.bin";
File.WriteAllBytes(outputPath, video.BinaryData);
Console.WriteLine($"Video {videoCount}: {video.ContentType}");
}
}
}
Console.WriteLine($"Embedded videos extracted: {videoCount}");
FAQ
Quels paramètres de lecture vidéo peuvent être modifiés pour un cadre vidéo ?
Vous pouvez contrôler le mode de lecture (automatique ou au clic) et la 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 créez un lien vers une vidéo en ligne et ajoutez une miniature, la présentation ne stocke que le lien et l’image de prévisualisation, ce qui entraîne généralement une augmentation de taille moindre.
Puis‑je remplacer la vidéo dans un cadre vidéo 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 fréquent pour mettre à jour les médias dans une mise en page existante.
Le type de contenu (MIME) d’une vidéo intégrée peut‑il être déterminé ?
Oui. Une vidéo intégrée possède un type de contenu que vous pouvez lire et utiliser, par exemple lors de l’enregistrement sur disque.