Gestire i fotogrammi video nelle presentazioni in .NET

Introduzione

Un video ben posizionato in una presentazione può rendere il tuo messaggio più coinvolgente e aumentare i livelli di partecipazione del pubblico.

PowerPoint consente di aggiungere video a una diapositiva in una presentazione in due modi:

  • Aggiungere o incorporare un video locale (memorizzato sul tuo computer)
  • Aggiungere un video online (da una fonte web come YouTube).

Per consentirti di aggiungere video (oggetti video) a una presentazione, Aspose.Slides fornisce l’interfaccia IVideo , l’interfaccia IVideoFrame e altri tipi pertinenti.

Crea un fotogramma video incorporato

Se il file video che desideri aggiungere alla diapositiva è memorizzato localmente, puoi creare un fotogramma video per incorporare il video nella tua presentazione.

  1. Crea un’istanza della classe Presentation .
  2. Ottieni il riferimento di una diapositiva tramite il suo indice.
  3. Aggiungi un oggetto IVideo e passa il percorso del file video per incorporare il video nella presentazione.
  4. Aggiungi un oggetto IVideoFrame per creare un fotogramma per il video.
  5. Salva la presentazione modificata.
 // Istanzia la classe Presentation
 using (Presentation pres = new Presentation("pres.pptx"))
 {
     // Carica il video
     using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
     {
         IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
         
         // Ottiene la prima diapositiva e aggiunge un videoframe
         pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
         
         // Salva la presentazione su disco
         pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
     }
 }

In alternativa, puoi aggiungere un video passando direttamente il percorso del file al metodo AddVideoFrame :

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

Crea un fotogramma video con video da una fonte web

Microsoft PowerPoint 2013 e versioni successive supporta i video di YouTube nelle presentazioni. Se il video che desideri utilizzare è disponibile online (ad esempio su YouTube), puoi aggiungerlo alla tua presentazione tramite il suo collegamento web.

  1. Crea un’istanza della classe Presentation .
  2. Ottieni il riferimento di una diapositiva tramite il suo indice.
  3. Aggiungi un oggetto IVideo e passa il collegamento al video.
  4. Imposta una miniatura per il fotogramma video.
  5. Salva la presentazione.
public static void Run()
{
    // Istanzia un oggetto Presentation che rappresenta un file di presentazione 
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

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

    // Carica la miniatura
    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));
    }
}

Gestisci i sottotitoli video

Aspose.Slides consente di gestire i sottotitoli chiusi per i fotogrammi video nelle presentazioni PowerPoint. I sottotitoli sono memorizzati nel formato WebVTT e sono accessibili tramite la proprietà IVideoFrame.CaptionTracks .

Aggiungi sottotitoli a un fotogramma video

Per aggiungere sottotitoli a un fotogramma video:

  1. Crea un’istanza della classe Presentation .
  2. Aggiungi un video alla presentazione.
  3. Aggiungi un oggetto IVideoFrame a una diapositiva.
  4. Usa la raccolta CaptionTracks per aggiungere una traccia di sottotitoli WebVTT.
  5. Salva la presentazione modificata.
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);

    // Aggiunge una nuova traccia di sottotitoli da un file WebVTT.
    presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}

L’interfaccia ICaptionsCollection fornisce anche una sovraccarico che consente di aggiungere sottotitoli da uno stream.

Estrai i sottotitoli da un fotogramma video

Per estrarre i sottotitoli da un fotogramma video:

  1. Carica la presentazione che contiene il video.
  2. Trova l’oggetto IVideoFrame di destinazione.
  3. Itera attraverso la raccolta CaptionTracks .
  4. Salva ogni traccia di sottotitoli in un file .vtt .
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)
            {
                // Salva la traccia di sottotitoli in un file WebVTT.
                string filePath = $"{captionTrack.CaptionId}.vtt";
                File.WriteAllBytes(filePath, captionTrack.BinaryData);
            }
        }
    }
}

Ogni oggetto ICaptions espone l’identificatore del sottotitolo, l’etichetta, i dati binari e il testo del sottotitolo come stringa UTF-8.

Rimuovi i sottotitoli da un fotogramma video

Per rimuovere i sottotitoli da un fotogramma video:

  1. Carica la presentazione che contiene il video.
  2. Ottieni l’oggetto IVideoFrame di destinazione.
  3. Rimuovi le tracce di sottotitoli dalla raccolta CaptionTracks .
  4. Salva la presentazione modificata.
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;

    // Rimuove tutti i sottotitoli dal fotogramma video.
    videoFrame.CaptionTracks.Clear();

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

Se devi rimuovere solo una traccia di sottotitoli, usa i metodi Remove o RemoveAt invece di Clear .

Estrai video da una diapositiva

Oltre ad aggiungere video alle diapositive, Aspose.Slides consente di estrarre i video incorporati nelle presentazioni.

  1. Crea un’istanza della classe Presentation per caricare la presentazione contenente il video.
  2. Itera attraverso tutti gli oggetti ISlide .
  3. Itera attraverso tutti gli oggetti IShape per trovare un VideoFrame .
  4. Salva il video su disco.
// Instanzia un oggetto Presentation che rappresenta un file di presentazione 
Presentation presentation = new Presentation("Video.pptx");

// Itera attraverso le diapositive
foreach (ISlide slide in presentation.Slides)
{
    // Itera attraverso le forme
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Salva il video su disco una volta trovato VideoFrame contenente il 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

Quali parametri di riproduzione video possono essere modificati per un VideoFrame?

Puoi controllare la modalità di riproduzione (auto o al clic) e il looping . Queste opzioni sono disponibili tramite le proprietà dell’oggetto VideoFrame .

L’aggiunta di un video influisce sulla dimensione del file PPTX?

Sì. Quando incorpori un video locale, i dati binari sono inclusi nel documento, quindi la dimensione della presentazione aumenta proporzionalmente alla dimensione del file. Quando aggiungi un video online, vengono incorporati un collegamento e una miniatura, quindi l’aumento di dimensione è minore.

Posso sostituire il video in un VideoFrame esistente senza modificare posizione e dimensione?

Sì. Puoi scambiare il contenuto video all’interno del fotogramma mantenendo la geometria della forma; questo è uno scenario comune per aggiornare i media in un layout esistente.

È possibile determinare il tipo di contenuto (MIME) di un video incorporato?

Sì. Un video incorporato ha un tipo di contenuto che puoi leggere e utilizzare, ad esempio quando lo salvi su disco.