Zarządzanie ramkami wideo w prezentacjach na Androidzie
Wprowadzenie
Odpowiednio umieszczone wideo w prezentacji może uczynić Twoją wiadomość bardziej przekonującą i zwiększyć poziom zaangażowania odbiorców.
PowerPoint umożliwia dodawanie wideo do slajdu w prezentacji na dwa sposoby:
- Dodaj lub osadź lokalne wideo (przechowywane na Twoim komputerze)
- Dodaj wideo online (z źródła internetowego, takiego jak YouTube).
Aby umożliwić dodawanie wideo (obiektów wideo) do prezentacji, Aspose.Slides udostępnia interfejs IVideo , interfejs IVideoFrame oraz inne odpowiednie typy.
Utworzenie osadzonej ramki wideo
Jeśli plik wideo, który chcesz dodać do slajdu, jest przechowywany lokalnie, możesz utworzyć ramkę wideo, aby osadzić wideo w swojej prezentacji.
- Utwórz instancję klasy Presentation .
- Uzyskaj odniesienie do slajdu za pomocą jego indeksu.
- Dodaj obiekt IVideo i przekaż ścieżkę do pliku wideo, aby osadzić wideo w prezentacji.
- Dodaj obiekt IVideoFrame w celu utworzenia ramki dla wideo.
- Zapisz zmodyfikowaną prezentację.
Ten kod Java pokazuje, jak dodać lokalnie przechowywane wideo do prezentacji:
// Tworzy instancję klasy Presentation
Presentation pres = new Presentation("pres.pptx");
try {
// Ładuje wideo
FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// Pobiera pierwszy slajd i dodaje ramkę wideo
pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);
// Zapisuje prezentację na dysku
pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Alternatywnie, możesz dodać wideo, przekazując jego ścieżkę pliku bezpośrednio do metody 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();
}
Utworzenie ramki wideo z wideo ze źródła internetowego
Nowsze wersje Microsoft PowerPoint obsługują wideo online w prezentacjach. Jeśli wideo, którego chcesz użyć, jest dostępne w Internecie (np. na YouTube), możesz dodać je do prezentacji za pomocą linku internetowego.
- Utwórz instancję klasy Presentation .
- Uzyskaj odniesienie do slajdu za pomocą jego indeksu.
- Dodaj obiekt IVideo i przekaż link do wideo.
- Ustaw miniaturę dla ramki wideo.
- Zapisz prezentację.
Ten kod Java pokazuje, jak dodać wideo z Internetu do slajdu w prezentacji PowerPoint:
// Tworzy obiekt Presentation, który reprezentuje plik prezentacji
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)
{
// Dodaje ramkę wideo
IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
videoFrame.setPlayMode(VideoPlayModePreset.Auto);
// Ładuje miniaturę
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();
}
}
Przycięcie ramki wideo
Aspose.Slides umożliwia kontrolowanie, która część wideo jest odtwarzana, poprzez ustawienie wartości trim-from-start i trim-from-end za pomocą IVideoFrame.setTrimFromStart i IVideoFrame.setTrimFromEnd. Obie wartości podawane są w milisekundach i określają, ile czasu zostaje pominięte na początku i końcu wideo. Te ustawienia zmieniają sposób odtwarzania wideo w prezentacji; nie przycinają ani nie modyfikują binarnych danych osadzonego wideo.
Ustawienia przycięcia
Aby utworzyć ramkę wideo i ustawić jej przycięcie:
- Utwórz instancję klasy Presentation.
- Dodaj obiekt IVideo do prezentacji.
- Dodaj obiekt IVideoFrame do slajdu.
- Ustaw wartości trim-from-start i trim-from-end za pomocą IVideoFrame.setTrimFromStart i IVideoFrame.setTrimFromEnd.
- Zapisz zmodyfikowaną prezentację.
Poniższy przykład kodu pomija pierwsze 2,5 sekundy oraz ostatnią sekundę osadzonego wideo podczas odtwarzania:
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();
}
Odczyt ustawień przycięcia
Aby sprawdzić istniejące ustawienia przycięcia, załaduj prezentację, znajdź obiekt IVideoFrame wśród kształtów na pierwszym slajdzie i odczytaj wartości za pomocą IVideoFrame.getTrimFromStart oraz IVideoFrame.getTrimFromEnd.
Poniższy przykład kodu znajduje pierwszą ramkę wideo na pierwszym slajdzie i zgłasza jej ustawienia przycięcia w milisekundach:
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();
}
Zarządzanie napisami wideo
Aspose.Slides umożliwia zarządzanie zamkniętymi napisami dla ramek wideo w prezentacjach PowerPoint. Napisy przechowywane są w formacie WebVTT i udostępniane są za pomocą metody IVideoFrame.getCaptionTracks .
Dodawanie napisów do ramki wideo
Aby dodać napisy do ramki wideo:
- Utwórz instancję klasy Presentation .
- Dodaj wideo do prezentacji.
- Dodaj obiekt IVideoFrame do slajdu.
- Użyj ICaptionsCollection zwróconego przez getCaptionTracks , aby dodać ścieżkę napisów WebVTT.
- Zapisz zmodyfikowaną prezentację.
Poniższy kod pokazuje, jak dodać napisy do ramki wideo:
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);
// Dodaje nową ścieżkę napisów z pliku WebVTT.
videoFrame.getCaptionTracks().add("English", "track.vtt");
presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Interfejs ICaptionsCollection udostępnia również przeciążenie, które pozwala dodać napisy z strumienia.
Wyodrębnianie napisów z ramki wideo
Aby wyodrębnić napisy z ramki wideo:
- Załaduj prezentację zawierającą wideo.
- Znajdź docelowy obiekt IVideoFrame .
- Iteruj przez ścieżki napisów zwrócone przez getCaptionTracks .
- Zapisz każdą ścieżkę napisów do pliku
.vtt.
Poniższy kod pokazuje, jak wyodrębnić napisy z ramki wideo:
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()) {
// Zapisuje ścieżkę napisów do pliku WebVTT.
FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
outputStream.write(captionTrack.getBinaryData());
outputStream.close();
}
}
}
} finally {
presentation.dispose();
}
Każdy ICaptions udostępnia identyfikator napisu, etykietę, dane binarne oraz dane napisu jako ciąg UTF-8.
Usuwanie napisów z ramki wideo
Aby usunąć napisy z ramki wideo:
- Załaduj prezentację zawierającą wideo.
- Uzyskaj docelowy obiekt IVideoFrame .
- Usuń ścieżki napisów z kolekcji zwróconej przez getCaptionTracks .
- Zapisz zmodyfikowaną prezentację.
Poniższy kod pokazuje, jak usunąć wszystkie napisy z ramki wideo:
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IVideoFrame videoFrame = (IVideoFrame) slide.getShapes().get_Item(0);
// Usuwa wszystkie napisy z ramki wideo.
videoFrame.getCaptionTracks().clear();
presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Jeśli potrzebujesz usunąć tylko jedną ścieżkę napisów, użyj metod remove lub removeAt zamiast clear .
Wyodrębnianie wideo ze slajdu
Oprócz dodawania wideo do slajdów, Aspose.Slides umożliwia wyodrębnianie wideo osadzonego w prezentacjach.
- Utwórz instancję klasy Presentation w celu załadowania prezentacji zawierającej wideo.
- Iteruj przez wszystkie obiekty ISlide .
- Iteruj przez wszystkie obiekty IShape , aby znaleźć VideoFrame .
- Zapisz wideo na dysku.
Ten kod Java pokazuje, jak wyodrębnić wideo ze slajdu w prezentacji:
// Tworzy obiekt Presentation, który reprezentuje plik prezentacji
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();
//Pobiera rozszerzenie pliku
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
Jakie parametry odtwarzania wideo można zmienić dla VideoFrame?
Możesz kontrolować tryb odtwarzania (automatyczny lub po kliknięciu) oraz pętlę. Opcje te są dostępne poprzez właściwości obiektu VideoFrame .
Czy dodanie wideo wpływa na rozmiar pliku PPTX?
Tak. Gdy osadzisz lokalne wideo, dane binarne są zawarte w dokumencie, więc rozmiar prezentacji rośnie proporcjonalnie do rozmiaru pliku. Gdy dodasz wideo online, osadzany jest jedynie link i miniatura, więc wzrost rozmiaru jest mniejszy.
Czy mogę wymienić wideo w istniejącej VideoFrame bez zmiany jej położenia i rozmiaru?
Tak. Możesz wymienić zawartość wideo w ramce, zachowując geometryczne właściwości kształtu; jest to częsty scenariusz aktualizacji mediów w istniejącym układzie.
Czy można określić typ zawartości (MIME) osadzonego wideo?
Tak. Osadzone wideo ma typ zawartości , który możesz odczytać i wykorzystać, na przykład przy zapisywaniu go na dysk.