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.
- Skapa en instans av klassen Presentation.
- Hämta en bilds referens via dess index.
- Läs in ljudfilens ström som du vill bädda in i bilden.
- Lägg till den inbäddade ljudramen (som innehåller ljudfilen) i bilden.
- Ställ in PlayMode och
Volumesom exponeras av objektet IAudioFrame. - 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:

PowerPoint Audio Options som motsvarar Aspose.Slides‑egenskaperna för AudioFrame:
- Start‑rullgardinslista matchar metoden AudioFrame.setPlayMode
- Volume matchar metoden AudioFrame.setVolume
- Play Across Slides matchar metoden AudioFrame.setPlayAcrossSlides
- Loop until Stopped matchar metoden AudioFrame.setPlayLoopMode
- Hide During Show matchar metoden AudioFrame.setHideAtShowing
- Rewind after Playing matchar metoden AudioFrame.setRewindAudio
PowerPoint Editing‑alternativ som motsvarar Aspose.Slides‑egenskaperna för AudioFrame:
- Fade In matchar metoden AudioFrame.setFadeInDuration
- Fade Out matchar metoden AudioFrame.setFadeOutDuration
- Trim Audio Start Time matchar metoden AudioFrame.setTrimFromStart
- Trim Audio End Time‑värdet motsvarar ljudets totala varaktighet minus värdet från metoden AudioFrame.setTrimFromEnd
PowerPoint Volume controll på ljudkontrollpanelen motsvarar metoden AudioFrame.setVolumeValue. Den låter dig ändra ljudvolymen i procent.
Så här ändrar du ljuduppspelningsalternativen:
- Сreate eller hämta ljudramen.
- Ställ in nya värden för de ljudramsegenskaper du vill justera.
- 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.
- Skapa en instans av klassen Presentation och ladda presentationen som innehåller ljudet.
- Hämta den relevanta bildens referens via dess index.
- Åtkomst till slideshow transitions för bilden.
- 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.