Videókeretek kezelése Android prezentációkban

Bevezetés

Egy jól elhelyezett videó egy prezentációban hatékonyabbá teheti az üzenetet, és növelheti a közönség elköteleződését.

PowerPoint lehetővé teszi, hogy videókat adjunk hozzá egy diára a prezentációban két módon:

  • Helyi videó hozzáadása vagy beágyazása (a gépen tárolt)
  • Online videó hozzáadása (webes forrásból, például a YouTubeból).

Az Aspose.Slides lehetővé teszi, hogy videókat (video objektumokat) adjunk a prezentációhoz, és biztosítja az IVideo interfészt, a IVideoFrame interfészt, valamint egyéb kapcsolódó típusokat.

Beágyazott videókeret létrehozása

Ha a diára felvenni kívánt videófájl helyileg van tárolva, létrehozhat egy videókeretet a videó prezentációba történő beágyazásához.

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze meg egy dia referenciáját az indexe alapján.
  3. Adjon hozzá egy IVideo objektumot, és adja át a videófájl útvonalát a videó prezentációba történő beágyazásához.
  4. Adjon hozzá egy IVideoFrame objektumot a videó keret létrehozásához.
  5. Mentse el a módosított prezentációt.

Ez a Java kód bemutatja, hogyan adjon hozzá egy helyileg tárolt videót a prezentációhoz:

// Létrehozza a Presentation osztályt
Presentation pres = new Presentation("pres.pptx");
try {
    // Betölti a videót
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // Lekéri az első diát és hozzáad egy videókeretet
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // Mentse a prezentációt lemezre
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Alternatív megoldásként videót is hozzáadhat a fájl útvonalát közvetlenül a addVideoFrame(float x, float y, float width, float height, IVideo video) metódusnak átadva:

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

Webforrásból származó videóval rendelkező videókeret létrehozása

Az újabb Microsoft PowerPoint verziók támogatják az online videókat a prezentációkban. Ha a használandó videó online elérhető (például a YouTube-on), hozzáadhatja azt a prezentációhoz a webes hivatkozásán keresztül.

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze meg egy dia referenciáját az indexe alapján.
  3. Adjon hozzá egy IVideo objektumot, és adja át a videó hivatkozását.
  4. Állítson be bélyegképet a videókerethez.
  5. Mentse el a prezentációt.

Ez a Java kód bemutatja, hogyan adjon hozzá egy webes videót egy diára a PowerPoint prezentációban:

// Létrehozza a Presentation objektumot, amely egy prezentációs fájlt képvisel
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)
{
    // Videókeretet ad hozzá
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // Betölti a bélyegképet
    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();
    }
}

Videókeret vágása

Az Aspose.Slides lehetővé teszi, hogy a videó lejátszott részét a IVideoFrame.setTrimFromStart és a IVideoFrame.setTrimFromEnd metódusokkal beállított trim-from-start és trim-from-end értékekkel szabályozza. Mindkét érték ezredmásodpercben van megadva, és meghatározza, mennyi időt hagyunk ki a videó elejéről illetve végéről. Ezek a beállítások a videó lejátszási paramétereit változtatják a prezentációban; a beágyazott videó bináris adatait nem vágják vagy módosítják.

Vágási beállítások megadása

A videókeret létrehozásához és vágási beállításainak megadásához:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Adjon hozzá egy IVideo objektumot a prezentációhoz.
  3. Adjon hozzá egy IVideoFrame objektumot egy diára.
  4. Állítsa be a trim-from-start és trim-from-end értékeket a IVideoFrame.setTrimFromStart és a IVideoFrame.setTrimFromEnd segítségével.
  5. Mentse el a módosított prezentációt.

Az alábbi kódrészlet kihagyja az első 2,5 másodpercet és az utolsó másodpercet egy beágyazott videó lejátszása során:

Presentation presentation = new Presentation();
try {
    FileInputStream videoStream = new FileInputStream("video.mp4");
    try {
        IVideo video = presentation.getVideos().addVideo(
                videoStream, LoadingStreamBehavior.ReadStreamAndRelease);
        ISlide slide = presentation.getSlides().get_Item(0);
        IVideoFrame videoFrame = slide.getShapes().addVideoFrame(50, 50, 640, 360, video);

        videoFrame.setTrimFromStart(2500f);
        videoFrame.setTrimFromEnd(1000f);

        presentation.save("video_with_trim.pptx", SaveFormat.Pptx);
    } finally {
        videoStream.close();
    }
} finally {
    presentation.dispose();
}

Vágási beállítások olvasása

A meglévő vágási beállítások megtekintéséhez töltse be a prezentációt, keresse meg az első dián az IVideoFrame objektumot, és olvassa ki az értékeket a IVideoFrame.getTrimFromStart és a IVideoFrame.getTrimFromEnd metódusokkal.

Az alábbi kódrészlet megtalálja az első videókeretet az első dián, és ezredmásodpercben jelzi a vágási beállításait:

Presentation presentation = new Presentation("video_with_trim.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame) shape;
            float trimFromStart = videoFrame.getTrimFromStart();
            float trimFromEnd = videoFrame.getTrimFromEnd();

            System.out.println("Trim from start: " + trimFromStart + " ms");
            System.out.println("Trim from end: " + trimFromEnd + " ms");
            break;
        }
    }
} finally {
    presentation.dispose();
}

Videó feliratok kezelése

Az Aspose.Slides lehetővé teszi, hogy a PowerPoint prezentációkban lévő videókeretekhez zárt feliratokat kezeljünk. A feliratok WebVTT formátumban vannak tárolva, és a IVideoFrame.getCaptionTracks metóduson keresztül érhetők el.

Feliratok hozzáadása videókerethez

A feliratok hozzáadásához egy videókerethez:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Adjon hozzá egy videót a prezentációhoz.
  3. Adjon hozzá egy IVideoFrame objektumot egy diára.
  4. Használja a ICaptionsCollection objektumot, amelyet a getCaptionTracks ad vissza, egy WebVTT feliratsp track hozzáadásához.
  5. Mentse el a módosított prezentációt.

Az alábbi kód bemutatja, hogyan adjon feliratokat egy videókerethez:

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

    // Új feliratsáv hozzáadása egy WebVTT fájlból.
    videoFrame.getCaptionTracks().add("English", "track.vtt");

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

Az ICaptionsCollection felület további túlterhelést biztosít, amely lehetővé teszi feliratok hozzáadását adatfolyamból.

Feliratok kinyerése videókeretből

A feliratok kinyeréséhez egy videókeretből:

  1. Töltse be a videót tartalmazó prezentációt.
  2. Keresse meg a cél IVideoFrame objektumot.
  3. Iteráljon a getCaptionTracks által visszaadott feliratsp trackeken.
  4. Mentse el minden feliratsp tracket egy .vtt fájlba.

Az alábbi kód bemutatja, hogyan kinyerje a feliratokat egy videókeretből:

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()) {
                // Mentse a feliratsávot egy WebVTT fájlba.
                FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
                outputStream.write(captionTrack.getBinaryData());
                outputStream.close();
            }
        }
    }
} finally {
    presentation.dispose();
}

Minden ICaptions objektum tartalmazza a felirat azonosítóját, címkéjét, bináris adatait, valamint a felirat adatát UTF-8 karakterláncként.

Feliratok eltávolítása videókeretből

A feliratok eltávolításához egy videókeretből:

  1. Töltse be a videót tartalmazó prezentációt.
  2. Szerezze meg a cél IVideoFrame objektumot.
  3. Távolítsa el a feliratsp trackeket a getCaptionTracks által visszaadott gyűjteményből.
  4. Mentse el a módosított prezentációt.

Az alábbi kód bemutatja, hogyan távolítsa el az összes feliratot egy videókeretből:

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

    // Eltávolítja az összes feliratot a videókeretből.
    videoFrame.getCaptionTracks().clear();

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

Ha csak egy feliratsp tracket szeretne eltávolítani, használja a remove vagy a removeAt metódust a clear helyett.

Videó kinyerése diából

A videók diákhoz való hozzáadása mellett az Aspose.Slides lehetővé teszi a prezentációkba beágyazott videók kinyerését is.

  1. Hozzon létre egy példányt a Presentation osztályból a videót tartalmazó prezentáció betöltéséhez.
  2. Iteráljon végig az összes ISlide objektumon.
  3. Iteráljon végig az összes IShape objektumon, hogy megtalálja a VideoFrame elemet.
  4. Mentse el a videót lemezre.

Ez a Java kód bemutatja, hogyan nyerje ki a videót egy prezentációs diáról:

// Létrehozza a Presentation objektumot, amely egy prezentációs fájlt képvisel 
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();

                //Lekéri a fájlkiterjesztést
                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

Mely videolejátszási paraméterek módosíthatók egy VideoFrame esetén?

A lejátszási módot (automatikus vagy kattintásra) és a hurok beállítását szabályozhatja. Ezek az opciók a VideoFrame objektum tulajdonságain keresztül érhetők el.

A videó hozzáadása befolyásolja a PPTX fájl méretét?

Igen. Ha helyi videót ágyaz be, a bináris adat a dokumentumba kerül, így a prezentáció mérete arányosan nő a fájlmérettel. Ha online videót ad hozzá, egy hivatkozás és egy bélyegkép kerül beágyazásra, így a méretnövekedés kisebb.

Lecserélhetem a videót egy meglévő VideoFrame-ben anélkül, hogy megváltoztatnám a pozícióját és méretét?

Igen. A video content cseréjével a kereten belül megőrizheti a forma geometriai adatát; ez gyakori eset a média frissítésére egy meglévő elrendezésben.

Meg lehet határozni egy beágyazott videó tartalomtípusát (MIME)?

Igen. Egy beágyazott videónak van content type attribútuma, amelyet olvashat és felhasználhat, például a lemezre mentéskor.