Zarządzanie ramkami wideo w prezentacjach przy użyciu Javy

Wprowadzenie

Odpowiednio umieszczone wideo w prezentacji może uczynić twoją wiadomość bardziej przekonującą i zwiększyć poziom zaangażowania odbiorców.

PowerPoint pozwala dodać wideo do slajdu w prezentacji na dwa sposoby:

  • Dodaj lub osadź wideo lokalne (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 powiązane typy.

Utwórz osadzone ramki wideo

Jeśli plik wideo, który chcesz dodać do slajdu, jest przechowywany lokalnie, możesz utworzyć ramkę wideo, aby osadzić wideo w prezentacji.

  1. Utwórz instancję klasy Presentation class.
  2. Pobierz referencję do slajdu przez jego indeks.
  3. Dodaj obiekt IVideo i przekaż ścieżkę pliku wideo, aby osadzić wideo w prezentacji.
  4. Dodaj obiekt IVideoFrame aby utworzyć ramkę dla wideo.
  5. Zapisz zmodyfikowaną prezentację.

Ten kod w języku 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 dysk
    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();
}

Utwórz ramki wideo z wideo z źródeł internetowych

Microsoft PowerPoint 2013 and newer obsługuje wideo z YouTube w prezentacjach. Jeśli wideo, którego chcesz użyć, jest dostępne online (np. na YouTube), możesz dodać je do prezentacji za pomocą jego linku internetowego.

  1. Utwórz instancję klasy Presentation class
  2. Pobierz referencję do slajdu przez jego indeks.
  3. Dodaj obiekt IVideo i przekaż link do wideo.
  4. Ustaw miniaturę dla ramki wideo.
  5. Zapisz prezentację.

Ten kod w języku 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();
    }
}

Zarządzaj napisami wideo

Aspose.Slides umożliwia zarządzanie zamkniętymi napisami dla ramek wideo w prezentacjach PowerPoint. Napisy są przechowywane w formacie WebVTT i udostępniane poprzez metodę IVideoFrame.getCaptionTracks .

Dodaj napisy do ramki wideo

Aby dodać napisy do ramki wideo:

  1. Utwórz instancję klasy Presentation .
  2. Dodaj wideo do prezentacji.
  3. Dodaj obiekt IVideoFrame do slajdu.
  4. Użyj ICaptionsCollection zwróconego przez getCaptionTracks aby dodać ścieżkę napisów WebVTT.
  5. Zapisz zmodyfikowaną prezentację.

Poniższy kod pokazuje, jak dodać napisy do ramki wideo:

Presentation presentation = new Presentation();
try {
    byte[] videoData = Files.readAllBytes(Paths.get("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 także przeciążenie, które pozwala dodać napisy z strumienia.

Wyodrębnij napisy z ramki wideo

Aby wyodrębnić napisy z ramki wideo:

  1. Wczytaj prezentację zawierającą wideo.
  2. Znajdź docelowy obiekt IVideoFrame .
  3. Przejdź przez wszystkie ścieżki napisów w ICaptionsCollection .
  4. 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.
                String filePath = captionTrack.getCaptionId().toString() + ".vtt";
                Files.write(Paths.get(filePath), captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Każdy obiekt ICaptions udostępnia identyfikator napisu, etykietę, dane binarne oraz tekst napisu jako ciąg UTF‑8.

Usuń napisy z ramki wideo

Aby usunąć napisy z ramki wideo:

  1. Wczytaj prezentację zawierającą wideo.
  2. Pobierz docelowy obiekt IVideoFrame .
  3. Usuń ścieżki napisów z ICaptionsCollection .
  4. 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ębnij wideo ze slajdów

Poza dodawaniem wideo do slajdów, Aspose.Slides umożliwia wyodrębnianie wideo osadzonego w prezentacjach.

  1. Utwórz instancję klasy Presentation aby wczytać prezentację zawierającą wideo.
  2. Przejdź przez wszystkie obiekty ISlide .
  3. Przejdź przez wszystkie obiekty IShape aby znaleźć VideoFrame .
  4. Zapisz wideo na dysku.

Ten kod w języku Java pokazuje, jak wyodrębnić wideo ze slajdu 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ć w VideoFrame?

Możesz kontrolować tryb odtwarzania (automatyczny lub po kliknięciu) oraz pętlę odtwarzania. 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ą włączane do dokumentu, więc rozmiar prezentacji rośnie proporcjonalnie do rozmiaru pliku. Gdy dodasz wideo online, osadzany jest jedynie link i miniatura, więc przyrost rozmiaru jest mniejszy.

Czy mogę zastąpić wideo w istniejącej VideoFrame bez zmiany jej położenia i rozmiaru?

Tak. Możesz wymienić zawartość wideo w ramce, zachowując geometrię kształtu; jest to typowy scenariusz aktualizacji mediów w istniejącym układzie.

Czy można określić typ zawartości (MIME) osadzonego wideo?

Tak. Osadzone wideo posiada typ zawartości , który możesz odczytać i wykorzystać, na przykład przy zapisie na dysk.