Spravovat video snímky v prezentacích v .NET

Úvod

Dobře umístěné video v prezentaci může učinit vaši zprávu přesvědčivě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žnil přidávat videa (video objekty) do prezentace, Aspose.Slides poskytuje rozhraní IVideo , rozhraní IVideoFrame a další související typy.

Vytvořit vložený snímek videa

Pokud je video soubor, který chcete přidat na svůj snímek, uložen lokálně, můžete vytvořit snímek videa a vložit video do vaší prezentace.

  1. Vytvořte instanci třídy Presentation .
  2. Získejte referenci na snímek pomocí jeho indexu.
  3. Přidejte objekt IVideo a předávejte cestu k video souboru, aby se video vložilo do prezentace.
  4. Přidejte objekt IVideoFrame a vytvořte snímek 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 snímek
        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 video přidat 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řit snímek videa s videem z webového zdroje

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

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

Tento C# kód ukazuje, jak přidat video z webu na snímek 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));
    }
}

Oříznout snímek videa

Aspose.Slides vám umožňuje řídit, která část videa se přehrává, nastavením hodnot trim-from-start a trim-from-end pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd. Obě hodnoty jsou zadány v milisekundách a definují, kolik času se přeskočí od začátku a konce videa. Tato nastavení mění nastavení přehrávání videa v prezentaci; neprovádějí řezání ani jinou úpravu vložených binárních dat videa.

Nastavit nastavení ořezu

Pro vytvoření snímku videa a nastavení jeho ořezu:

  1. Vytvořte instanci třídy Presentation .
  2. Přidejte objekt IVideo do prezentace.
  3. Přidejte objekt IVideoFrame na snímek.
  4. Nastavte hodnoty trim-from-start a trim-from-end pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd .
  5. Uložte upravenou prezentaci.

Následující ukázka kódu přeskočí první 2,5 sekundy a poslední sekundu vloženého videa během přehrávání:

using var presentation = new Presentation();

var videoData = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoData);

var slide = presentation.Slides[0];
var videoFrame = slide.Shapes.AddVideoFrame(50, 50, 640, 360, video);

videoFrame.TrimFromStart = 2500f;
videoFrame.TrimFromEnd = 1000f;

presentation.Save("video_with_trim.pptx", SaveFormat.Pptx);

Přečíst nastavení ořezu

Pro zjištění existujících nastavení ořezu načtěte prezentaci, najděte objekt IVideoFrame mezi tvary na prvním snímku a přečtěte hodnoty pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd .

Následující ukázka kódu najde první snímek videa na prvním snímku a vypíše jeho nastavení ořezu v milisekundách:

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)
    {
        var trimFromStart = videoFrame.TrimFromStart;
        var trimFromEnd = videoFrame.TrimFromEnd;

        Console.WriteLine($"Trim from start: {trimFromStart} ms");
        Console.WriteLine($"Trim from end: {trimFromEnd} ms");

        break;
    }
}

Spravovat titulky videa

Aspose.Slides vám umožňuje spravovat uzavřené titulky pro snímky videa v PowerPoint prezentacích. Titulky jsou uloženy ve formátu WebVTT a jsou přístupné prostřednictvím vlastnosti IVideoFrame.CaptionTracks .

Přidat titulky do snímku videa

Pro přidání titulků do snímku videa:

  1. Vytvořte instanci třídy Presentation .
  2. Přidejte video do prezentace.
  3. Přidejte objekt IVideoFrame na snímek.
  4. Použijte kolekci CaptionTracks k přidání WebVTT stopy titulků.
  5. Uložte upravenou prezentaci.

Následující kód ukazuje, jak přidat titulky do snímku videa:

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ů ze souboru WebVTT.
    presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}

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

Extrahovat titulky ze snímku videa

Pro extrahování titulků ze snímku videa:

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

Následující kód ukazuje, jak extrahovat titulky ze snímku videa:

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 vystavuje identifikátor titulků, popisek, binární data a text titulků jako řetězec UTF-8.

Odstranit titulky ze snímku videa

Pro odstranění titulků ze snímku videa:

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

Následující kód ukazuje, jak odstranit všechny titulky ze snímku videa:

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

    // Odebere všechny titulky ze snímku videa.
    videoFrame.CaptionTracks.Clear();

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

Pokud potřebujete odstranit jen jednu stopu titulků, použijte metody Remove nebo RemoveAt místo Clear .

Extrahovat video ze snímku

Kromě přidávání videí do snímků Aspose.Slides umožňuje 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 na 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);
            }
        }
    }
}

FAQ

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

Můžete ovládat playback mode (automatické nebo po kliknutí) a looping. 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 místní video, binární data jsou zahrnuta v dokumentu, takže se velikost prezentace zvětší úměrně velikosti souboru. Když přidáte online video, jsou vloženy odkaz a miniatura, takže nárůst velikosti je menší.

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

Ano. Můžete vyměnit video content v rámci snímku a přitom zachovat geometrii tvaru; jedná se o běžný scénář pro aktualizaci médií v existujícím rozvrž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.