Správa video rámců v prezentacích na Androidu

Introduction

Dobře umístěné video v prezentaci může učinit vaši zprávu přesvědčivější a zvýšit míru 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 lokální video (uložené ve vašem počítači)
  • Přidat online video (z webového zdroje, jako je YouTube).

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

Create an Embedded Video Frame

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 class.
  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 Java kód ukazuje, jak přidat lokálně uložené video do prezentace:

// Vytvoří instanci třídy Presentation
Presentation pres = new Presentation("pres.pptx");
try {
    // Načte video
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // Získá první snímek a přidá video rámec
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // Uloží prezentaci na disk
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Alternativně můžete video přidat předáním jeho cesty k souboru přímo metodě addVideoFrame(float x, float y, float width, float height, IVideo video) :

Presentation pres = new Presentation();
try {
	ISlide sld = pres.getSlides().get_Item(0);
	IVideoFrame vf = sld.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
	if (pres != null) pres.dispose();
}

Create a Video Frame with Video from a Web Source

Microsoft PowerPoint 2013 and newer podporuje videa z YouTube 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 class
  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 Java kód ukazuje, jak přidat video z webu do snímku v PowerPoint prezentaci:

// Vytvoří objekt Presentation, který představuje soubor prezentace 
Presentation pres = new Presentation();
try {
    addVideoFromYouTube(pres, "Tj75Arhq5ho");
    pres.save("out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
    // Přidá video rámec
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // Načte miniaturu
    String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
    URL url;

    try {
        url = new URL(thumbnailUri);
        videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Manage Video Captions

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

Add Captions to a Video Frame

Pro 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 na snímek.
  4. Použijte ICaptionsCollection vrácený metodou getCaptionTracks k přidání WebVTT stopy titulků.
  5. Uložte upravenou prezentaci.

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

Presentation presentation = new Presentation();
try {
    byte[] videoData = // "video.mp4";
    IVideo video = presentation.getVideos().addVideo(videoData);

    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = slide.getShapes().addVideoFrame(0, 0, 100, 100, video);

    // Přidá novou stopu titulků ze souboru WebVTT.
    videoFrame.getCaptionTracks().add("English", "track.vtt");

    presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

Extract Captions from a Video Frame

Pro 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 titulkové stopy vrácené metodou getCaptionTracks.
  4. Uložte každou titulkovou stopu do souboru .vtt.

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

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame) shape;
            for (ICaptions captionTrack : videoFrame.getCaptionTracks()) {
                // Uloží stopu titulků do souboru WebVTT.
                FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
                outputStream.write(captionTrack.getBinaryData());
                outputStream.close();
            }
        }
    }
} finally {
    presentation.dispose();
}

Každý ICaptions objekt vystavuje identifikátor titulků, štítek, binární data a data titulků jako řetězec UTF-8.

Remove Captions from a Video Frame

Pro 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é stopy ze sbírky vrácené metodou getCaptionTracks.
  4. Uložte upravenou prezentaci.

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

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = (IVideoFrame) slide.getShapes().get_Item(0);

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

    presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Pokud potřebujete odstranit jen jednu stopu titulků, použijte metody remove nebo removeAt místo clear .

Extract Video from a Slide

Kromě přidávání videí do snímků umožňuje Aspose.Slides také 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 Java kód ukazuje, jak extrahovat video ze snímku v prezentaci:

// Vytvoří objekt Presentation, který představuje soubor prezentace 
Presentation pres = new Presentation("VideoSample.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        for (IShape shape : slide.getShapes()) 
        {
            if (shape instanceof VideoFrame) 
            {
                IVideoFrame vf = (IVideoFrame) shape;
                String type = vf.getEmbeddedVideo().getContentType();
                int ss = type.lastIndexOf('-');
                byte[] buffer = vf.getEmbeddedVideo().getBinaryData();

                // Získá příponu souboru
                int charIndex = type.indexOf("/");
                type = type.substring(charIndex + 1);

                FileOutputStream fop = new FileOutputStream("testing2." + type);
                fop.write(buffer);
                fop.flush();
                fop.close();
            }
        }
    }
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Which video playback parameters can be changed for a VideoFrame?

Můžete nastavit playback mode (automaticky nebo po kliknutí) a looping. Tyto možnosti jsou dostupné prostřednictvím vlastností objektu VideoFrame .

Does adding a video affect the PPTX file size?

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

Can I replace the video in an existing VideoFrame without changing its position and size?

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

Can the content type (MIME) of an embedded video be determined?

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.