Hantera videorutor i presentationer på Android

Introduktion

En välplacerad video i en presentation kan göra ditt budskap mer övertygande och öka engagemangsgraden hos din publik.

PowerPoint låter dig lägga till videor på en bild i en presentation på två sätt:

  • Lägg till eller bädda in en lokal video (sparad på din dator)
  • Lägg till en online‑video (från en webbkälla såsom YouTube).

För att låta dig lägga till videor (videoobjekt) i en presentation tillhandahåller Aspose.Slides IVideo‑gränssnittet, IVideoFrame‑gränssnittet och andra relevanta typer.

Skapa en inbäddad videoruta

Om videofilen du vill lägga till på din bild lagras lokalt kan du skapa en videoruta för att bädda in videon i din presentation.

  1. Skapa en instans av Presentation klass.
  2. Hämta en bilds referens via dess index.
  3. Lägg till ett IVideo‑objekt och skicka videofilens sökväg för att bädda in videon i presentationen.
  4. Lägg till ett IVideoFrame‑objekt för att skapa en ram för videon.
  5. Spara den ändrade presentationen.

Denna Java‑kod visar hur du lägger till en lokalt lagrad video i en presentation:

// Instansierar Presentation-klassen
Presentation pres = new Presentation("pres.pptx");
try {
    // Laddar videon
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // Hämtar den första bilden och lägger till en videoruta
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // Sparar presentationen på disk
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Alternativt kan du lägga till en video genom att skicka dess filsökväg direkt till metoden 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();
}

Skapa en videoruta med video från en webbkälla

Nyare versioner av Microsoft PowerPoint stöder online‑videor i presentationer. Om videon du vill använda finns online (t.ex. på YouTube) kan du lägga till den i din presentation via dess webblänk.

  1. Skapa en instans av Presentation klass
  2. Hämta en bilds referens via dess index.
  3. Lägg till ett IVideo‑objekt och skicka länken till videon.
  4. Ställ in en miniatyrbild för videorutan.
  5. Spara presentationen.
// Instansierar ett Presentation-objekt som representerar en presentationsfil 
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)
{
    // Lägger till en videoruta
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

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

Trimma en videoruta

Aspose.Slides låter dig kontrollera vilken del av en video som spelas upp genom att ange värdena trim‑from‑start och trim‑from‑end via IVideoFrame.setTrimFromStart och IVideoFrame.setTrimFromEnd. Båda värdena anges i millisekunder och definierar hur mycket tid som hoppas över i början respektive slutet av videon. Dessa inställningar ändrar uppspelningsinställningarna i presentationen; de kapar inte eller modifierar den inbäddade videons binära data.

Ställ in triminställningar

För att skapa en videoruta och ange dess triminställningar:

  1. Skapa en instans av Presentationklass.
  2. Lägg till ett IVideo‑objekt i presentationen.
  3. Lägg till ett IVideoFrame‑objekt på en bild.
  4. Ange trim‑from‑start och trim‑from‑end via IVideoFrame.setTrimFromStart och IVideoFrame.setTrimFromEnd.
  5. Spara den ändrade presentationen.

Följande kodexempel hoppar över de första 2,5 sekunderna och den sista sekunden av en inbäddad video under uppspelning:

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

Läs triminställningar

För att inspektera befintliga triminställningar, ladda en presentation, hitta ett IVideoFrame‑objekt bland formerna på den första bilden och läs värdena via IVideoFrame.getTrimFromStart och IVideoFrame.getTrimFromEnd.

Följande kodexempel hittar den första videorutan på den första bilden och rapporterar dess triminställningar i millisekunder:

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

Hantera video‑textning

Aspose.Slides låter dig hantera closed captions för videorutor i PowerPoint‑presentationer. Textningarna lagras i WebVTT‑format och exponeras via metoden IVideoFrame.getCaptionTracks .

Lägg till textning till en videoruta

För att lägga till textning till en videoruta:

  1. Skapa en instans av Presentationklass.
  2. Lägg till en video i presentationen.
  3. Lägg till ett IVideoFrame‑objekt på en bild.
  4. Använd den ICaptionsCollection som returneras av getCaptionTracks för att lägga till ett WebVTT‑textningsspår.
  5. Spara den ändrade presentationen.

Följande kod visar hur du lägger till textning till en videoruta:

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

    // Lägger till ett nytt textningsspår från en WebVTT-fil.
    videoFrame.getCaptionTracks().add("English", "track.vtt");

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

ICaptionsCollection‑gränssnittet erbjuder också en överlagring som låter dig lägga till textning från en ström.

Extrahera textning från en videoruta

För att extrahera textning från en videoruta:

  1. Ladda presentationen som innehåller videon.
  2. Hitta mål‑IVideoFrame‑objektet.
  3. Iterera igenom de textningsspår som returneras av getCaptionTracks.
  4. Spara varje textningsspår till en .vtt‑fil.

Följande kod visar hur du extraherar textning från en videoruta:

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()) {
                // Sparar textningsspåret till en WebVTT-fil.
                FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
                outputStream.write(captionTrack.getBinaryData());
                outputStream.close();
            }
        }
    }
} finally {
    presentation.dispose();
}

Varje ICaptions‑objekt exponerar textnings‑identifieraren, etiketten, binärdata och textningsdata som en UTF‑8‑sträng.

Ta bort textning från en videoruta

För att ta bort textning från en videoruta:

  1. Ladda presentationen som innehåller videon.
  2. Hämta mål‑IVideoFrame‑objektet.
  3. Ta bort textningsspår från den samling som returneras av getCaptionTracks.
  4. Spara den ändrade presentationen.

Följande kod visar hur du tar bort all textning från en videoruta:

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

    // Tar bort all textning från videorutan.
    videoFrame.getCaptionTracks().clear();

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

Om du bara behöver ta bort ett enskilt textningsspår, använd remove eller removeAt i stället för clear .

Extrahera video från en bild

Förutom att lägga till videor på bilder låter Aspose.Slides dig extrahera videor som är inbäddade i presentationer.

  1. Skapa en instans av Presentationklass för att ladda presentationen som innehåller videon.
  2. Iterera genom alla ISlide‑objekt.
  3. Iterera genom alla IShape‑objekt för att hitta ett VideoFrame .
  4. Spara videon på disk.

Denna Java‑kod visar hur du extraherar videon från en presentationsbild:

// Instansierar ett Presentation-objekt som representerar en presentationsfil 
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();

                //Hämtar filändelsen
                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

Vilka videouppspelningsparametrar kan ändras för en VideoFrame?

Du kan kontrollera playback‑läget (auto eller vid klick) och loopning. Dessa alternativ är tillgängliga via egenskaperna på objektet VideoFrame .

Påverkar tillägg av en video PPTX‑filens storlek?

Ja. När du bäddar in en lokal video inkluderas binärdata i dokumentet, vilket gör att presentationens storlek ökar i proportion till videons filstorlek. När du lägger till en online‑video bäddas en länk och en miniatyrbild in, så ökningen blir mindre.

Kan jag ersätta videon i en befintlig VideoFrame utan att ändra dess position och storlek?

Ja. Du kan byta ut videoinnehållet i rutan samtidigt som du behåller formens geometri; detta är ett vanligt scenario för att uppdatera media i en befintlig layout.

Kan innehållstypen (MIME) för en inbäddad video bestämmas?

Ja. En inbäddad video har en content type som du kan läsa och använda, t.ex. när du sparar den till disk.