Beheer audio in presentaties met Java

Overzicht

Dit artikel legt uit hoe u met audioframes in Aspose.Slides kunt werken. Het toont hoe u ingesloten audio aan dia’s kunt toevoegen, de miniatuur van het audioframe kunt aanpassen, afspeelopties zoals volume, herhalen, verbergen, bijsnijden en vervagingsduur kunt configureren, en hoe u audio die wordt gebruikt in diavoorstellingsovergangen kunt extraheren.

Audioframes maken

Aspose.Slides for Java maakt het mogelijk om audiobestanden aan dia’s toe te voegen. De audiobestanden worden als audioframes in de dia’s ingesloten.

  1. Maak een instantie van de Presentation klasse.
  2. Verkrijg een referentie naar een dia via de index.
  3. Laad de audiobestandsstroom die u in de dia wilt insluiten.
  4. Voeg het ingesloten audioframe (dat het audiobestand bevat) toe aan de dia.
  5. Stel PlayMode en Volume in die worden aangeboden door het IAudioFrame object.
  6. Sla de gewijzigde presentatie op.
// Instantieert een Presentation-klasse die een presentatiebestand voorstelt
Presentation pres = new Presentation();
try {
    // Haalt de eerste dia op
    ISlide sld = pres.getSlides().get_Item(0);

    // Laadt het wav-geluidsbestand naar een stream
    FileInputStream fstr = new FileInputStream(new File("audio.wav"));

    // Voegt het Audio Frame toe
    IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    
    // Stelt de afspeelmodus en het volume van de audio in
    audioFrame.setPlayMode(AudioPlayModePreset.Auto);
    audioFrame.setVolume(AudioVolumeMode.Loud);

    // Schrijft het PowerPoint-bestand naar schijf
    pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Miniatuur van audioframe wijzigen

Wanneer u een audiobestand aan een presentatie toevoegt, wordt de audio weergegeven als een frame met een standaard afbeelding (zie de afbeelding in de sectie hieronder). U kunt de voorbeeldafbeelding van het audioframe wijzigen (stel uw voorkeursafbeelding in).

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Voegt een audioframe toe aan de dia met een gespecificeerde positie en grootte.
    FileInputStream audioStream = new FileInputStream("sample2.mp3");
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();

    // Voegt een afbeelding toe aan de presentatiebronnen.
    IPPImage picture;
    IImage image = Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }

    // Stelt de afbeelding in voor het audioframe.
    audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----

    //Slaat de gewijzigde presentatie op schijf
    presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (presentation != null) presentation.dispose();
}

Audioweergaveopties wijzigen

Aspose.Slides for Java maakt het mogelijk om opties te wijzigen die de weergave of eigenschappen van audio sturen. U kunt bijvoorbeeld het volume van de audio aanpassen, de audio in een lus laten afspelen, of zelfs het audio‑icoon verbergen.

The Audio Options pane in Microsoft PowerPoint:

example1_image

PowerPoint Audio Options die overeenkomen met de eigenschappen van Aspose.Slides AudioFrame :

PowerPoint Editing opties die overeenkomen met de eigenschappen van Aspose.Slides AudioFrame :

De PowerPoint Volume control op het audio‑bedieningspaneel correspondeert met de AudioFrame.setVolumeValue methode. Hiermee kunt u het audio‑volume als percentage aanpassen.

Zo wijzigt u de audioweergave‑opties:

  1. Maak of haal het audioframe op.
  2. Stel nieuwe waarden in voor de audioframe‑eigenschappen die u wilt aanpassen.
  3. Sla het gewijzigde PowerPoint‑bestand op.
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    // Haalt de AudioFrame-vorm op
    AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    // Stelt de afspeelmodus in op afspelen bij klik
    audioFrame.setPlayMode(AudioPlayModePreset.OnClick);

    // Stelt het volume in op Laag
    audioFrame.setVolume(AudioVolumeMode.Low);

    // Stelt in dat de audio over dia's heen wordt afgespeeld
    audioFrame.setPlayAcrossSlides(true);

    // Schakelt het herhalen voor de audio uit
    audioFrame.setPlayLoopMode(false);

    // Verbergt de AudioFrame tijdens de diavoorstelling
    audioFrame.setHideAtShowing(true);

    // Spoelt de audio terug naar het begin na het afspelen
    audioFrame.setRewindAudio(true);

    // Slaat het PowerPoint-bestand op schijf
    pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Dit Java‑voorbeeld toont hoe u een nieuw audioframe met ingesloten audio kunt toevoegen, bijsnijden en de vervagingsduur kunt instellen:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    
    byte[] audioData = Files.readAllBytes(Paths.get("sampleaudio.mp3"));
    IAudio audio = pres.getAudios().addAudio(audioData);
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio);

    // Stelt de startverschuiving voor bijsnijden in op 1,5 seconden
    audioFrame.setTrimFromStart(1500f);
    // Stelt de eindverschuiving voor bijsnijden in op 2 seconden
    audioFrame.setTrimFromEnd(2000f);

    // Stelt de fade-in duur in op 200 ms
    audioFrame.setFadeInDuration(200f);
    // Stelt de fade-out duur in op 500 ms
    audioFrame.setFadeOutDuration(500f);

    pres.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

De volgende code‑voorbeeld laat zien hoe u een audioframe met ingesloten audio kunt ophalen en het volume op 85 % kunt instellen:

Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(0);

    // Haalt een audioframe-vorm op
    IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);

    // Stelt het audio-volume in op 85%
    audioFrame.setVolumeValue(85f);

    pres.save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
finally {
    pres.dispose();
}

Audiobijschriften beheren

Aspose.Slides maakt het mogelijk om ondertitels aan een audioframe toe te voegen via de getCaptionTracks methode. Deze methode retourneert een ICaptionsCollection, waarmee u WebVTT‑ondertitelsporen kunt toevoegen, door bestaande sporen kunt itereren en ze kunt verwijderen wanneer dat nodig is.

Audiobijschriften toevoegen

Gebruik de getCaptionTracks methode om één of meer ondertitelsporen aan een audioframe toe te voegen. In het volgende voorbeeld wordt een audiobestand aan een dia toegevoegd en vervolgens wordt een nieuw ondertitelspoor geladen uit een .vtt‑bestand.

Presentation presentation = new Presentation();
try {
    byte[] audioData = Files.readAllBytes(Paths.get("audio.mp3"));
    IAudio audio = presentation.getAudios().addAudio(audioData);

    ISlide slide = presentation.getSlides().get_Item(0);
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio);

    // Voeg een nieuw ondertitelingsspoor toe vanuit een WebVTT‑bestand.
    audioFrame.getCaptionTracks().add("New track", "track.vtt");

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

Audiobijschriften extraheren

U kunt door de ondertitelsporen die aan een audioframe zijn gekoppeld itereren en ze opslaan als .vtt‑bestanden. Elk ondertitelspoor geeft zijn binaire gegevens en unieke identifier vrij, die bij het exporteren van ondertitels gebruikt kunnen worden.

Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IAudioFrame ) {
            IAudioFrame audioFrame = (IAudioFrame) shape;
            for (ICaptions captionTrack : audioFrame.getCaptionTracks()) {
                // Bewaar het ondertitelingsspoor als een .vtt-bestand.
                Path filePath = Paths.get(captionTrack.getCaptionId() + ".vtt");
                Files.write(filePath, captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Audiobijschriften verwijderen

Om ondertitels van een audioframe te verwijderen, gebruikt u de methoden van ICaptionsCollection, zoals clear, remove, of removeAt. Het volgende voorbeeld verwijdert alle ondertitelsporen van een audioframe.

Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAudioFrame audioFrame = (IAudioFrame) slide.getShapes().get_Item(0);

    // Verwijder alle ondertitelingssporen van het audioframe.
    audioFrame.getCaptionTracks().clear();

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

Audio extraheren

Aspose.Slides for Java maakt het mogelijk om het geluid dat wordt gebruikt in diavoorstelling‑overgangen te extraheren. U kunt bijvoorbeeld het geluid van een specifieke dia extraheren.

  1. Maak een instantie van de Presentation klasse en laad de presentatie die de audio bevat.
  2. Verkrijg de referentie naar de betreffende dia via de index.
  3. Open de slideshow transitions voor de dia.
  4. Extraheer het geluid als byte‑gegevens.
// Instantieert een Presentation-klasse die een presentatiebestand voorstelt
Presentation pres = new Presentation("AudioSlide.pptx");
try {
    // Toegang tot de gewenste dia
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Haalt de diavoorstellingsovergangseffecten voor de dia op
    ISlideShowTransition transition = slide.getSlideShowTransition();
    
    // Extraheert het geluid in een byte-array
    byte[] audio = transition.getSound().getBinaryData();
    System.out.println("Length: " + audio.length);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Kan ik dezelfde audio‑asset op meerdere dia’s hergebruiken zonder de bestandsgrootte op te blazen?

Ja. Voeg de audio één keer toe aan de gedeelde audio collection van de presentatie en maak extra audioframes die naar die bestaande asset verwijzen. Dit voorkomt duplicatie van mediagegevens en houdt de presentiegrootte onder controle.

Kan ik het geluid in een bestaand audioframe vervangen zonder de vorm opnieuw te maken?

Ja. Voor een gekoppeld geluid werkt u het link path bij zodat het naar het nieuwe bestand wijst. Voor een ingesloten geluid verwisselt u het embedded audio object met een ander uit de audio collection van de presentatie. De opmaak van het frame en de meeste afspeelinstellingen blijven behouden.

Verandert bijsnijden de onderliggende audio‑gegevens die in de presentatie zijn opgeslagen?

Nee. Bijsnijden past alleen de afspeelgrenzen aan. De oorspronkelijke audiobytes blijven ongewijzigd en zijn toegankelijk via de ingesloten audio of de audio‑collectie van de presentatie.