Video‑Frames in Präsentationen auf Android verwalten

Ein gut platziertes Video in einer Präsentation kann Ihre Botschaft überzeugender machen und das Engagement‑Level Ihres Publikums erhöhen.

PowerPoint ermöglicht das Hinzufügen von Videos zu einer Folie in einer Präsentation auf zwei Arten:

  • Ein lokales Video hinzufügen oder einbetten (auf Ihrem Rechner gespeichert)
  • Ein Online‑Video hinzufügen (aus einer Web‑Quelle wie YouTube).

Um Ihnen das Hinzufügen von Videos (Video‑Objekten) zu einer Präsentation zu ermöglichen, stellt Aspose.Slides die Schnittstelle IVideo , die Schnittstelle IVideoFrame und weitere relevante Typen bereit.

Erstellen eines eingebetteten Video‑Frames

Wenn die Videodatei, die Sie Ihrer Folie hinzufügen möchten, lokal gespeichert ist, können Sie einen Video‑Frame erstellen, um das Video in Ihre Präsentation einzubetten.

  1. Erstellen Sie eine Instanz der Klasse Presentation class.
  2. Holen Sie die Referenz einer Folie über ihren Index.
  3. Fügen Sie ein IVideo‑Objekt hinzu und übergeben Sie den Pfad der Videodatei, um das Video in die Präsentation einzubetten.
  4. Fügen Sie ein IVideoFrame‑Objekt hinzu, um einen Frame für das Video zu erstellen.
  5. Speichern Sie die modifizierte Präsentation.
// Instanziert die Presentation-Klasse
Presentation pres = new Presentation("pres.pptx");
try {
    // Lädt das Video
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // Holt die erste Folie und fügt einen Video-Frame hinzu
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // Speichert die Präsentation auf dem Datenträger
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Alternativ können Sie ein Video hinzufügen, indem Sie dessen Dateipfad direkt an die Methode addVideoFrame(float x, float y, float width, float height, IVideo video) übergeben:

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

Erstellen eines Video‑Frames mit Video aus einer Web‑Quelle

Microsoft PowerPoint 2013 und neuer unterstützt YouTube‑Videos in Präsentationen. Wenn das Video, das Sie verwenden möchten, online verfügbar ist (z. B. auf YouTube), können Sie es über seinen Web‑Link zu Ihrer Präsentation hinzufügen.

  1. Erstellen Sie eine Instanz der Klasse Presentation class
  2. Holen Sie die Referenz einer Folie über ihren Index.
  3. Fügen Sie ein IVideo‑Objekt hinzu und übergeben Sie den Link zum Video.
  4. Legen Sie ein Miniaturbild für den Video‑Frame fest.
  5. Speichern Sie die Präsentation.
// Instanziert ein Presentation-Objekt, das eine Präsentationsdatei darstellt
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)
{
    // Fügt einen Video-Frame hinzu
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // Lädt das Miniaturbild
    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();
    }
}

Video‑Untertitel verwalten

Aspose.Slides ermöglicht die Verwaltung von Closed Captions für Video‑Frames in PowerPoint‑Präsentationen. Untertitel werden im WebVTT‑Format gespeichert und über die Methode IVideoFrame.getCaptionTracks bereitgestellt.

Untertitel zu einem Video‑Frame hinzufügen

  1. Erstellen Sie eine Instanz der Klasse Presentation class.
  2. Fügen Sie ein Video zur Präsentation hinzu.
  3. Fügen Sie ein IVideoFrame‑Objekt zu einer Folie hinzu.
  4. Verwenden Sie die von getCaptionTracks zurückgegebene ICaptionsCollection , um eine WebVTT‑Untertitelspur hinzuzufügen.
  5. Speichern Sie die modifizierte Präsentation.
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);

    // Fügt eine neue Untertitelspur aus einer WebVTT-Datei hinzu.
    videoFrame.getCaptionTracks().add("English", "track.vtt");

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

Das Interface ICaptionsCollection bietet außerdem eine Überladung, mit der Sie Untertitel aus einem Stream hinzufügen können.

Untertitel aus einem Video‑Frame extrahieren

  1. Laden Sie die Präsentation, die das Video enthält.
  2. Suchen Sie das Ziel‑IVideoFrame‑Objekt.
  3. Iterieren Sie über die von getCaptionTracks zurückgegebenen Untertitelspuren.
  4. Speichern Sie jede Untertitelspur in einer .vtt‑Datei.
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()) {
                // Speichert die Untertitelspur in einer WebVTT-Datei.
                FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
                outputStream.write(captionTrack.getBinaryData());
                outputStream.close();
            }
        }
    }
} finally {
    presentation.dispose();
}

Jedes ICaptions‑Objekt stellt die Untertitel‑Kennung, das Label, die Binärdaten und die Untertitel‑Daten als UTF‑8‑String bereit.

Untertitel von einem Video‑Frame entfernen

  1. Laden Sie die Präsentation, die das Video enthält.
  2. Holen Sie das Ziel‑IVideoFrame‑Objekt.
  3. Entfernen Sie Untertitelspuren aus der von getCaptionTracks zurückgegebenen Sammlung.
  4. Speichern Sie die modifizierte Präsentation.
Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = (IVideoFrame) slide.getShapes().get_Item(0);

    // Entfernt alle Untertitel vom Video-Frame.
    videoFrame.getCaptionTracks().clear();

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

Wenn Sie nur eine Untertitelspur entfernen müssen, verwenden Sie die Methoden remove oder removeAt , anstelle von clear.

Video von einer Folie extrahieren

Neben dem Hinzufügen von Videos zu Folien ermöglicht Aspose.Slides das Extrahieren von in Präsentationen eingebetteten Videos.

  1. Erstellen Sie eine Instanz der Klasse Presentation , um die Präsentation zu laden, die das Video enthält.
  2. Iterieren Sie über alle ISlide‑Objekte.
  3. Iterieren Sie über alle IShape‑Objekte, um ein VideoFrame‑Objekt zu finden.
  4. Speichern Sie das Video auf dem Datenträger.
// Instanziert ein Presentation-Objekt, das eine Präsentationsdatei darstellt 
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();

                // Ermittelt die Dateierweiterung
                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

Welche Video‑Wiedergabeparameter können für einen VideoFrame geändert werden?

Sie können den playback mode (automatisch oder bei Klick) und das looping steuern. Diese Optionen sind über die Eigenschaften des VideoFrame‑Objekts verfügbar.

Wirkt sich das Hinzufügen eines Videos auf die PPTX-Dateigröße aus?

Ja. Wenn Sie ein lokales Video einbetten, werden die Binärdaten in das Dokument aufgenommen, sodass die Präsentationsgröße proportional zur Dateigröße wächst. Wenn Sie ein Online‑Video hinzufügen, werden ein Link und ein Miniaturbild eingebettet, sodass die Größen‑zunahme geringer ausfällt.

Kann ich das Video in einem bestehenden VideoFrame ersetzen, ohne Position und Größe zu ändern?

Ja. Sie können den video content innerhalb des Frames austauschen, wobei die Geometrie der Form erhalten bleibt; dies ist ein gängiges Szenario zum Aktualisieren von Medien in einem bestehenden Layout.

Lässt sich der Inhaltstyp (MIME) eines eingebetteten Videos bestimmen?

Ja. Ein eingebettetes Video besitzt einen content type , den Sie auslesen und verwenden können, zum Beispiel beim Speichern auf dem Datenträger.