Hantera ljud i presentationer med Java

Översikt

Den här artikeln förklarar hur du arbetar med ljudramar i Aspose.Slides. Den visar hur du lägger till inbäddat ljud i bilder, anpassar miniatyrbilden för ljudramen, konfigurerar uppspelningsalternativ som volym, loopning, dölja, trimma och fade-tider, samt extraherar ljud som används i bildspelsövergångar.

Skapa ljudramar

Aspose.Slides för Java låter dig lägga till ljudfiler i bilder. Ljudfilerna bäddas in i bilder som ljudramar.

  1. Skapa en instans av klassen Presentation.
  2. Hämta en bilds referens via dess index.
  3. Läs in ljudfilens ström som du vill bädda in i bilden.
  4. Lägg till den inbäddade ljudramen (som innehåller ljudfilen) i bilden.
  5. Ställ in PlayMode och Volume som exponeras av objektet IAudioFrame.
  6. Spara den modifierade presentationen.

Denna Java‑kod visar hur du lägger till en inbäddad ljudram i en bild:

// Instansierar en Presentation-klass som representerar en presentationsfil
Presentation pres = new Presentation();
try {
    // Hämtar den första bilden
    ISlide sld = pres.getSlides().get_Item(0);

    // Laddar wav-ljudfilen till en ström
    FileInputStream fstr = new FileInputStream(new File("audio.wav"));

    // Lägger till ljudramen
    IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    
    // Ställer in uppspelningsläge och volym för ljudet
    audioFrame.setPlayMode(AudioPlayModePreset.Auto);
    audioFrame.setVolume(AudioVolumeMode.Loud);

    // Skriver PowerPoint-filen till disk
    pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Ändra miniatyrbild för ljudramen

När du lägger till en ljudfil i en presentation visas ljudet som en ram med en standardstandardbild (se bilden i avsnittet nedan). Du kan ändra ramens förhandsgranskningsbild (ange din föredragna bild).

Denna Java‑kod visar hur du ändrar en ljudramens miniatyrbild eller förhandsgranskningsbild:

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

    // Lägger till en ljudram på bilden med en specificerad position och storlek.
    FileInputStream audioStream = new FileInputStream("sample2.mp3");
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();

    // Lägger till en bild i presentationens resurser.
    IPPImage picture;
    IImage image = Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }

    // Ställer in bilden för ljudramen.
    audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----

    //Sparar den ändrade presentationen till disk
    presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (presentation != null) presentation.dispose();
}

Ändra ljuduppspelningsalternativ

Aspose.Slides för Java låter dig ändra alternativ som styr uppspelning eller egenskaper för ett ljud. Till exempel kan du justera ett ljuds volym, ställa in att ljudet spelas i loop, eller till och med dölja ljudikonen.

Panelen Audio Options i Microsoft PowerPoint:

example1_image

PowerPoint Audio Options som motsvarar Aspose.Slides‑egenskaperna för AudioFrame:

PowerPoint Editing‑alternativ som motsvarar Aspose.Slides‑egenskaperna för AudioFrame:

PowerPoint Volume controll på ljudkontrollpanelen motsvarar metoden AudioFrame.setVolumeValue. Den låter dig ändra ljudvolymen i procent.

Så här ändrar du ljuduppspelningsalternativen:

  1. Сreate eller hämta ljudramen.
  2. Ställ in nya värden för de ljudramsegenskaper du vill justera.
  3. Spara den modifierade PowerPoint‑filen.

Denna Java‑kod demonstrerar en operation där ett ljuds alternativ justeras:

Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    // Hämtar AudioFrame-formen
    AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    // Ställer in uppspelningsläget till att spela vid klick
    audioFrame.setPlayMode(AudioPlayModePreset.OnClick);

    // Ställer in volymen till Låg
    audioFrame.setVolume(AudioVolumeMode.Low);

    // Ställer in ljudet att spelas över bilder
    audioFrame.setPlayAcrossSlides(true);

    // Inaktiverar loop för ljudet
    audioFrame.setPlayLoopMode(false);

    // Döljer AudioFrame under bildspelet
    audioFrame.setHideAtShowing(true);

    // Spolar tillbaka ljudet till början efter uppspelning
    audioFrame.setRewindAudio(true);

    // Sparar PowerPoint-filen till disk
    pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Detta Java‑exempel visar hur du lägger till en ny ljudram med inbäddat ljud, trimmar den och anger fade‑tiderna:

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

    // Ställer in trimningsstartoffset till 1.5 sekunder
    audioFrame.setTrimFromStart(1500f);
    // Ställer in trimningsslutoffset till 2 sekunder
    audioFrame.setTrimFromEnd(2000f);

    // Ställer in fade-in-tiden till 200 ms
    audioFrame.setFadeInDuration(200f);
    // Ställer in fade-out-tiden till 500 ms
    audioFrame.setFadeOutDuration(500f);

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

Följande kodexempel visar hur du hämtar en ljudram med inbäddat ljud och sätter dess volym till 85 %:

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

    // Hämtar en ljudramform
    IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);

    // Ställer in ljudvolymen till 85%
    audioFrame.setVolumeValue(85f);

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

Hantera ljudtextning

Aspose.Slides låter dig lägga till stängda undertexter till en ljudram via metoden getCaptionTracks. Denna metod returnerar en ICaptionsCollection, som låter dig lägga till WebVTT‑textspår, iterera genom befintliga spår och ta bort dem vid behov.

Lägg till ljudtextning

Använd metoden getCaptionTracks för att fästa ett eller flera textspår till en ljudram. I följande exempel läggs en ljudfil till en bild och sedan laddas ett nytt textspår från en .vtt‑fil.

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

    // Lägg till ett nytt textspår från en WebVTT-fil.
    audioFrame.getCaptionTracks().add("New track", "track.vtt");

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

Extrahera ljudtextning

Du kan iterera genom de textspår som är associerade med en ljudram och spara dem som .vtt‑filer. Varje textspår exponerar sina binära data och unika identifierare, vilket kan användas vid export av undertexter.

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()) {
                // Spara textspåret som en .vtt-fil.
                Path filePath = Paths.get(captionTrack.getCaptionId() + ".vtt");
                Files.write(filePath, captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Ta bort ljudtextning

För att ta bort undertexter från en ljudram, använd metoderna som tillhandahålls av ICaptionsCollection, såsom clear, remove, eller removeAt. Följande exempel tar bort alla textspår från en ljudram.

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

    // Ta bort alla textspår från ljudramen.
    audioFrame.getCaptionTracks().clear();

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

Extrahera ljud

Aspose.Slides för Java låter dig extrahera ljudet som används i bildspelsövergångar. Till exempel kan du extrahera ljudet som används i en specifik bild.

  1. Skapa en instans av klassen Presentation och ladda presentationen som innehåller ljudet.
  2. Hämta den relevanta bildens referens via dess index.
  3. Åtkomst till slideshow transitions för bilden.
  4. Extrahera ljudet i byte‑data.

Denna Java‑kod visar hur du extraherar ljudet som används i en bild:

// Instansierar en Presentation-klass som representerar en presentationsfil
Presentation pres = new Presentation("AudioSlide.pptx");
try {
    // Hämtar önskad bild
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Hämtar bildspelsövergångseffekterna för bilden
    ISlideShowTransition transition = slide.getSlideShowTransition();
    
    // Extraherar ljudet i en byte-array
    byte[] audio = transition.getSound().getBinaryData();
    System.out.println("Length: " + audio.length);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Kan jag återanvända samma ljudresurs i flera bilder utan att öka filens storlek?

Ja. Lägg till ljudet en gång i presentationens gemensamma audio collection och skapa ytterligare ljudramar som refererar till den befintliga resursen. Detta undviker duplicering av mediedata och håller presentationens storlek under kontroll.

Kan jag ersätta ljudet i en befintlig ljudram utan att återskapa formen?

Ja. För ett länkat ljud, uppdatera link path så att det pekar på den nya filen. För ett inbäddat ljud, byt ut objektet embedded audio mot ett annat från presentationens audio collection. Ramens formatering och de flesta uppspelningsinställningar förblir intakta.

Ändrar trimning den underliggande ljuddatan som lagras i presentationen?

Nej. Trimning justerar endast uppspelningsgränserna. De ursprungliga ljudbytarna förblir orörda och är åtkomliga via det inbäddade ljudet eller presentationens ljudsamling.