Správa video rámců v prezentacích na Androidu
Ú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 lokální video (uložené ve vašem počítači)
- Přidat online video (z webového zdroje, např. YouTube).
Aspose.Slides poskytuje rozhraní IVideo, rozhraní IVideoFrame a další relevantní typy, aby bylo možné přidávat videa (video objekty) do prezentace.
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 prezentace.
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek podle jeho indexu.
- Přidejte objekt IVideo a předávejte cestu k video souboru pro vložení videa do prezentace.
- Přidejte objekt IVideoFrame pro vytvoření rámce videa.
- 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 přidat video předáním 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();
}
Vytvoření video rámce 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 přidat do prezentace pomocí jeho webového odkazu.
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek podle jeho indexu.
- Přidejte objekt IVideo a předávejte odkaz na video.
- Nastavte miniaturu pro video rámec.
- 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();
}
}
Ořezání video rámce
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.setTrimFromStart a IVideoFrame.setTrimFromEnd. Obě hodnoty jsou zadány v milisekundách a určují, kolik času se přeskočí od začátku a konce videa. Tato nastavení mění nastavení přehrávání videa v prezentaci; nevyříznou ani jinak nemění binární data vloženého videa.
Nastavení ořezu
- Vytvořte instanci třídy Presentation.
- Přidejte objekt IVideo do prezentace.
- Přidejte objekt IVideoFrame na snímek.
- Nastavte hodnoty trim-from-start a trim-from-end pomocí IVideoFrame.setTrimFromStart a IVideoFrame.setTrimFromEnd.
- Uložte upravenou prezentaci.
Následující příklad kódu přeskočí první 2,5 sekundy a poslední sekundu vloženého videa během přehrává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();
}
Čtení nastavení ořezu
Pro kontrolu 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.getTrimFromStart a IVideoFrame.getTrimFromEnd.
Následující příklad kódu najde první video rámec na prvním snímku a vypíše jeho nastavení ořezu v milisekundách:
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();
}
Správa titulků videa
Aspose.Slides vám umožňuje spravovat uzavřené titulky pro video rámy v PowerPoint prezentacích. Titulky jsou uloženy ve formátu WebVTT a jsou dostupné přes metodu IVideoFrame.getCaptionTracks.
Přidání titulků do video rámce
Pro přidání titulků do video rámce:
- Vytvořte instanci třídy Presentation.
- Přidejte video do prezentace.
- Přidejte objekt IVideoFrame na snímek.
- Použijte kolekci ICaptionsCollection vrácenou metodou getCaptionTracks pro přidání WebVTT stopy titulků.
- 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ů z WebVTT souboru.
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é umožňuje přidat titulky ze streamu.
Extrahování titulků z video rámce
Pro extrahování titulků z video rámce:
- Načtěte prezentaci, která obsahuje video.
- Najděte cílový objekt IVideoFrame.
- Procházejte titulkové stopy vrácené metodou getCaptionTracks.
- 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ý objekt ICaptions vystavuje identifikátor titulků, štítek, binární data a data titulků jako řetězec UTF-8.
Odstranění titulků z video rámce
Pro odstranění titulků z video rámce:
- Načtěte prezentaci, která obsahuje video.
- Získejte cílový objekt IVideoFrame.
- Odstraňte titulkové stopy z kolekce vrácené metodou getCaptionTracks.
- 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 pouze jednu titulkovou stopu, použijte metodu 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 také extrahovat videa vložená v prezentacích.
- Vytvořte instanci třídy Presentation pro načtení prezentace obsahující video.
- Projděte všechny objekty ISlide.
- Projděte všechny objekty IShape a najděte VideoFrame.
- 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();
}
Často kladené otázky
Které parametry přehrávání videa lze změnit u VideoFrame?
Můžete řídit režim přehrávání (automaticky nebo při kliknutí) a opakování. Tyto možnosti jsou dostupné přes vlastnosti objektu VideoFrame.
Zvyšuje přidání videa velikost souboru PPTX?
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ší.
Mohu nahradit video v existujícím VideoFrame, aniž bych změnil jeho polohu a velikost?
Ano. Můžete vyměnit video obsah v rámci zachovávaje geometrii tvaru; jedná se o běžný scénář aktualizace médií v existujícím rozvržení.
Lze určit typ obsahu (MIME) vloženého videa?
Ano. Vložené video má typ obsahu který můžete přečíst a použít, například při ukládání na disk.