Beheer videoframes in presentaties in .NET

Inleiding

Een goed geplaatste video in een presentatie kan uw boodschap overtuigender maken en de betrokkenheid van uw publiek verhogen.

PowerPoint stelt u in staat om video’s aan een dia in een presentatie toe te voegen op twee manieren:

  • Een lokale video toevoegen of insluiten (opgeslagen op uw computer)
  • Een online video toevoegen (van een webbron zoals YouTube).

Om u in staat te stellen video’s (videobjecten) aan een presentatie toe te voegen, biedt Aspose.Slides de IVideo interface, IVideoFrame interface en andere relevante types.

Maak een ingesloten videoframe

Als het videobestand dat u aan uw dia wilt toevoegen lokaal is opgeslagen, kunt u een videoframe maken om de video in uw presentatie in te sluiten.

  1. Maak een instantie van de Presentationklasse.
  2. Haal een referentie naar een dia op via de index.
  3. Voeg een IVideo‑object toe en geef het pad naar het videobestand door om de video in de presentatie in te sluiten.
  4. Voeg een IVideoFrame‑object toe om een frame voor de video te maken.
  5. Sla de aangepaste presentatie op.
// Instantieert de Presentation-klasse
using (Presentation pres = new Presentation("pres.pptx"))
{
    // Laadt de video
    using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
    {
        IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
        
        // Haalt de eerste dia op en voegt een videoframe toe
        pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
        
        // Slaat de presentatie op naar schijf
        pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
    }
}

U kunt ook een video toevoegen door het bestandspad rechtstreeks door te geven aan de AddVideoFrame‑methode:

using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}

Maak een videoframe met video van een webbron

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.

  1. Maak een instantie van de Presentationklasse.
  2. Haal een referentie naar een dia op via de index.
  3. Voeg een IVideo‑object toe en geef de link naar de video door.
  4. Stel een miniatuurafbeelding in voor het videoframe.
  5. Sla de presentatie op.
public static void Run()
{
    // Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt 
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
    // Voegt een VideoFrame toe
    IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
    videoFrame.PlayMode = VideoPlayModePreset.Auto;

    // Laadt miniatuurafbeelding
    using (WebClient client = new WebClient())
    {
        string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
        videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
    }
}

Beheer video‑ondertitels

Aspose.Slides stelt u in staat om gesloten ondertitels voor video‑frames in PowerPoint‑presentaties te beheren. Ondertitels worden opgeslagen in WebVTT‑formaat en zijn beschikbaar via de eigenschap IVideoFrame.CaptionTracks.

Voeg ondertitels toe aan een videoframe

Om ondertitels toe te voegen aan een videoframe:

  1. Maak een instantie van de Presentation‑klasse.
  2. Voeg een video toe aan de presentatie.
  3. Voeg een IVideoFrame‑object toe aan een dia.
  4. Gebruik de CaptionTracks‑collectie om een WebVTT‑ondertiteltrack toe te voegen.
  5. Sla de aangepaste presentatie op.
using (Presentation presentation = new Presentation())
{
    byte[] videoData = File.ReadAllBytes("video.mp4");
    IVideo video = presentation.Videos.AddVideo(videoData);

    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);

    // Voegt een nieuw ondertiteltrack toe vanuit een WebVTT-bestand.
    videoFrame.CaptionTracks.Add("English", "track.vtt");

    presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}

De interface ICaptionsCollection biedt ook een overload waarmee u ondertitels vanuit een stream kunt toevoegen.

Extraheer ondertitels uit een videoframe

Om ondertitels uit een videoframe te extraheren:

  1. Laad de presentatie die de video bevat.
  2. Zoek het gewenste IVideoFrame‑object.
  3. Doorloop de CaptionTracks‑collectie.
  4. Sla elke ondertiteltrack op naar een .vtt‑bestand.
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    foreach (IShape shape in slide.Shapes)
    {
        if (shape is IVideoFrame videoFrame)
        {
            foreach (ICaptions captionTrack in videoFrame.CaptionTracks)
            {
                // Slaat het ondertiteltrack op naar een WebVTT-bestand.
                string filePath = $"{captionTrack.CaptionId}.vtt";
                File.WriteAllBytes(filePath, captionTrack.BinaryData);
            }
        }
    }
}

Elk ICaptions‑object geeft de ondertitel‑identifier, het label, de binaire gegevens en de ondertiteltekst als een UTF‑8‑string weer.

Verwijder ondertitels uit een videoframe

Om ondertitels uit een videoframe te verwijderen:

  1. Laad de presentatie die de video bevat.
  2. Haal het gewenste IVideoFrame‑object op.
  3. Verwijder ondertitel‑tracks uit de CaptionTracks‑collectie.
  4. Sla de aangepaste presentatie op.
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;

    // Verwijdert alle ondertitels uit het videoframe.
    videoFrame.CaptionTracks.Clear();

    presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
}

Als u slechts één ondertiteltrack wilt verwijderen, gebruik dan de methoden Remove of RemoveAt in plaats van Clear.

Video extraheren van een dia

Naast het toevoegen van video’s aan dia’s stelt Aspose.Slides u in staat om video’s die in presentaties zijn ingesloten te extraheren.

  1. Maak een instantie van de Presentation‑klasse om de presentatie met de video te laden.
  2. Doorloop alle ISlide‑objecten.
  3. Doorloop alle IShape‑objecten om een VideoFrame te vinden.
  4. Sla de video op op schijf.
 // Instantieert een Presentation-object dat een presentatiebestand vertegenwoordigt 
 Presentation presentation = new Presentation("Video.pptx");

 // Doorloopt de dia's
 foreach (ISlide slide in presentation.Slides)
 {
     // Doorloopt de vormen
     foreach (IShape shape in presentation.Slides[0].Shapes)
     {
         // Slaat de video op naar schijf zodra een VideoFrame met video wordt gevonden
         if (shape is VideoFrame)
         {
             IVideoFrame vf = shape as IVideoFrame;
             String type = vf.EmbeddedVideo.ContentType;
             int ss = type.LastIndexOf('/');
             type = type.Remove(0, type.LastIndexOf('/') + 1);
             Byte[] buffer = vf.EmbeddedVideo.BinaryData;
             using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
             {                                                     
                 stream.Write(buffer, 0, buffer.Length);
             }
         }
     }
 }

FAQ

Welke afspeelparameters van een videoframe kunnen worden aangepast?

U kunt de afspeelmodus (automatisch of bij klik) en de loopmodus 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 insluit, worden de binaire gegevens in het document opgenomen, waardoor de presentatiegrootte evenredig toeneemt met de bestandsgrootte. Wanneer u een online video toevoegt, worden alleen een link en een miniatuurafbeelding ingesloten, waardoor de toename kleiner is.

Kan ik de video in een bestaande VideoFrame vervangen zonder de 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 inhoudstype (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.