Správa video rámců v prezentacích v .NET

Úvod

Dobře umístěné video v prezentaci může učinit vaši zprávu poutavější a zvýšit úroveň zapojení publika.

PowerPoint vám umožňuje přidávat videa do snímku v prezentaci dvěma způsoby:

  • Přidat nebo vložit místní video (uložené ve vašem počítači)
  • Přidat online video (z webového zdroje, například YouTube).

Aby vám umožnilo přidávat videa (video objekty) do prezentace, Aspose.Slides poskytuje rozhraní IVideo , rozhraní IVideoFrame a další související typy.

Vytvoření vloženého video rámce

Pokud je video soubor, který chcete přidat do snímku, uložen lokálně, můžete vytvořit video rámec pro vložení videa do vaší prezentace.

  1. Vytvořte instanci třídy Presentation .
  2. Získejte odkaz na snímek pomocí jeho indexu.
  3. Přidejte objekt IVideo a předávejte cestu k video souboru pro vložení videa do prezentace.
  4. Přidejte objekt IVideoFrame pro vytvoření rámce pro video.
  5. Uložte upravenou prezentaci.

Tento C# kód ukazuje, jak přidat lokálně uložené video do prezentace:

 // Vytvoří instanci třídy Presentation
 using (Presentation pres = new Presentation("pres.pptx"))
 {
     // Načte video
     using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
     {
         IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
         
         // Získá první snímek a přidá video rámec
         pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
         
         // Uloží prezentaci na disk
         pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
     }
 }

Alternativně můžete přidat video předáním jeho cesty k souboru přímo metodě AddVideoFrame:

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

Vytvoření video rámce s videem z webového zdroje

Microsoft PowerPoint 2013 a novější podporuje videa YouTube v prezentacích. Pokud je video, které chcete použít, dostupné online (např. na YouTube), můžete jej přidat do prezentace pomocí jeho webového odkazu.

  1. Vytvořte instanci třídy Presentation .
  2. Získejte odkaz na snímek pomocí jeho indexu.
  3. Přidejte objekt IVideo a předávejte odkaz na video.
  4. Nastavte miniaturu pro video rámec.
  5. Uložte prezentaci.

Tento C# kód ukazuje, jak přidat video z webu do snímku v PowerPoint prezentaci:

public static void Run()
{
    // Vytvoří objekt Presentation, který představuje soubor prezentace 
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

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

    // Načte miniaturu
    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));
    }
}

Správa titulků videa

Aspose.Slides vám umožňuje spravovat uzavřené titulky pro video rámečky v PowerPoint prezentacích. Titulky jsou uloženy ve formátu WebVTT a jsou dostupné přes vlastnost IVideoFrame.CaptionTracks.

Přidání titulků do video rámce

  1. Vytvořte instanci třídy Presentation .
  2. Přidejte video do prezentace.
  3. Přidejte objekt IVideoFrame do snímku.
  4. Použijte kolekci CaptionTracks k přidání WebVTT titulkového tracku.
  5. Uložte upravenou prezentaci.

Následující kód ukazuje, jak přidat titulky do video rámce:

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);

    // Přidá novou stopu titulků z WebVTT souboru.
    videoFrame.CaptionTracks.Add("English", "track.vtt");

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

Rozhraní ICaptionsCollection také poskytuje přetížení, které umožňuje přidávat titulky ze streamu.

Extrahování titulků z video rámce

  1. Načtěte prezentaci, která obsahuje video.
  2. Najděte cílový objekt IVideoFrame.
  3. Procházejte kolekci CaptionTracks.
  4. Uložte každý titulkový track do souboru .vtt.

Následující kód ukazuje, jak extrahovat titulky z video rámce:

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)
            {
                // Uloží stopu titulků do souboru WebVTT.
                string filePath = $"{captionTrack.CaptionId}.vtt";
                File.WriteAllBytes(filePath, captionTrack.BinaryData);
            }
        }
    }
}

Každý objekt ICaptions poskytuje identifikátor titulku, štítek, binární data a text titulku jako řetězec UTF‑8.

Odstranění titulků z video rámce

  1. Načtěte prezentaci, která obsahuje video.
  2. Získejte cílový objekt IVideoFrame.
  3. Odstraňte titulkové tracky z kolekce CaptionTracks.
  4. Uložte upravenou prezentaci.

Následující kód ukazuje, jak odstranit všechny titulky z video rámce:

using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;

    // Odstraní všechny titulky z video rámce.
    videoFrame.CaptionTracks.Clear();

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

Pokud potřebujete odstranit pouze jeden titulkový track, použijte metody Remove nebo RemoveAt místo Clear.

Extrahování videa ze snímku

Kromě přidávání videí do snímků umožňuje Aspose.Slides extrahovat videa vložená v prezentacích.

  1. Vytvořte instanci třídy Presentation pro načtení prezentace obsahující video.
  2. Procházejte všechny objekty ISlide.
  3. Procházejte všechny objekty IShape a najděte VideoFrame.
  4. Uložte video na disk.

Tento C# kód ukazuje, jak extrahovat video ze snímku prezentace:

 // Vytvoří objekt Presentation, který představuje soubor prezentace 
 Presentation presentation = new Presentation("Video.pptx");

 // Prochází snímky
 foreach (ISlide slide in presentation.Slides)
 {
     // Prochází tvary
     foreach (IShape shape in presentation.Slides[0].Shapes)
     {
         // Uloží video na disk, jakmile je nalezen VideoFrame obsahující video
         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);
             }
         }
     }
 }

Často kladené otázky

Které parametry přehrávání videa lze změnit pro VideoFrame?

Můžete ovládat režim přehrávání (automaticky nebo po kliknutí) a opakování. Tyto možnosti jsou k dispozici prostřednictvím vlastností objektu VideoFrame.

Ovlivňuje přidání videa velikost souboru PPTX?

Ano. Když vložíte lokální video, binární data jsou zahrnuta do dokumentu, takže se velikost prezentace zvětšuje úměrně velikosti souboru. Když přidáte online video, je vložen odkaz a miniatura, takže nárůst velikosti je menší.

Mohu nahradit video v existujícím VideoFrame, aniž bych změnil jeho polohu a velikost?

Ano. Můžete vyměnit video content v rámci rámce při zachování geometrie tvaru; toto je běžný scénář pro aktualizaci médií v existujícím rozložení.

Lze určit typ obsahu (MIME) vloženého videa?

Ano. Vložené video má content type, který můžete přečíst a použít, například při ukládání na disk.