Hantera ljud i presentationer med Python
Översikt
Den här artikeln förklarar hur man arbetar med ljudramar i Aspose.Slides. Den visar hur man lägger till inbäddat ljud till bilder, anpassar ljudramens miniatyr, konfigurerar uppspelningsalternativ såsom volym, loopning, döljning, trimning och toningslängder, samt extraherar ljud som används i bildspelsövergångar.
Skapa ljudramar
Aspose.Slides för Python via Java låter dig lägga till ljudfiler till bilder. Ljudfilerna bäddas in i bilder som ljudramar.
- Skapa en instans av klassen Presentation.
- Hämta en referens till en bild med dess index.
- Läs in ljudfilen som du vill bädda in i bilden.
- Lägg till den inbäddade ljudramen (som innehåller ljudfilen) på bilden.
- Använd setPlayMode och setVolume som exponeras av objektet AudioFrame.
- Spara den modifierade presentationen.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AudioPlayModePreset, AudioVolumeMode, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
audio_data = Path("audio.wav").read_bytes()
java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
audio = presentation.getAudios().addAudio(java_audio_data)
audio_frame = slide.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, audio)
audio_frame.setPlayMode(AudioPlayModePreset.Auto)
audio_frame.setVolume(AudioVolumeMode.Loud)
presentation.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Ändra ljudramens miniatyr
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 ljudramens förhandsbild till en bild du själv väljer.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Images, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
audio_data = Path("sample2.mp3").read_bytes()
java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
audio = presentation.getAudios().addAudio(java_audio_data)
audio_frame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audio)
image = Images.fromFile("eagle.jpeg")
try:
picture = presentation.getImages().addImage(image)
finally:
image.dispose()
audio_frame.getPictureFormat().getPicture().setImage(picture)
presentation.save("example_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Ändra uppspelningsalternativ för ljud
Aspose.Slides för Python via Java låter dig ändra alternativ som styr ljuduppspelning eller egenskaper. Till exempel kan du justera ljudvolymen, ställa in att ljudet ska loopas eller till och med dölja ljudikonen.
The Audio Options pane in Microsoft PowerPoint:

PowerPoint Audio Options som motsvarar Aspose.Slides AudioFrame egenskaper:
- Start rullgardinslistan matchar metoden [setPlayMode]
- Volume matchar metoden [setVolume]
- Play Across Slides matchar metoden [setPlayAcrossSlides]
- Loop until Stopped matchar metoden [setPlayLoopMode]
- Hide During Show matchar metoden [setHideAtShowing]
- Rewind after Playing matchar metoden [setRewindAudio]
PowerPoint Editing alternativ som motsvarar Aspose.Slides [AudioFrame] egenskaper:
- Fade In matchar metoden [setFadeInDuration]
- Fade Out matchar metoden [setFadeOutDuration]
- Trim Audio Start Time matchar metoden [setTrimFromStart]
- Trim Audio End Time värdet är lika med ljudets varaktighet minus värdet som anges av metoden [setTrimFromEnd]
PowerPoint Volume control på ljudkontrollpanelen motsvarar metoden [setVolumeValue]. Den låter dig ändra ljudvolymen i procent.
Så här ändrar du uppspelningsalternativen för ljud:
- Skapa eller hämta ljudramen.
- Ställ in nya värden för de ljudramsegenskaper du vill justera.
- Spara den modifierade PowerPoint-filen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AudioFrame, AudioPlayModePreset, AudioVolumeMode, Presentation, SaveFormat
presentation = Presentation("AudioFrameEmbed_out.pptx")
try:
audio_frame = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(audio_frame, AudioFrame):
# Spela vid klick med låg volym, över bilder, utan loopning.
audio_frame.setPlayMode(AudioPlayModePreset.OnClick)
audio_frame.setVolume(AudioVolumeMode.Low)
audio_frame.setPlayAcrossSlides(True)
audio_frame.setPlayLoopMode(False)
# Dölj ramen under bildspelet och spola tillbaka efter uppspelning.
audio_frame.setHideAtShowing(True)
audio_frame.setRewindAudio(True)
presentation.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx)
else:
print("The shape is not an audio frame.")
finally:
presentation.dispose()
Detta Python‑exempel visar hur man lägger till en ny ljudram med inbäddat ljud, trimmar den och ställer in toningslängderna:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
audio_data = Path("sampleaudio.mp3").read_bytes()
java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
audio = presentation.getAudios().addAudio(java_audio_data)
audio_frame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio)
# Trimma 1,5 sekunder från början och 2 sekunder från slutet.
audio_frame.setTrimFromStart(1500.0)
audio_frame.setTrimFromEnd(2000.0)
# Ställ in fade‑in till 200 ms och fade‑out till 500 ms.
audio_frame.setFadeInDuration(200.0)
audio_frame.setFadeOutDuration(500.0)
presentation.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Följande kodexempel visar hur man hämtar en ljudram med inbäddat ljud och ställer in dess volym till 85 %:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AudioFrame, Presentation, SaveFormat
presentation = Presentation("AudioFrameEmbed_out.pptx")
try:
slide = presentation.getSlides().get_Item(0)
audio_frame = slide.getShapes().get_Item(0)
if isinstance(audio_frame, AudioFrame):
audio_frame.setVolumeValue(85.0)
presentation.save("AudioFrameValue_out.pptx", SaveFormat.Pptx)
else:
print("The shape is not an audio frame.")
finally:
presentation.dispose()
Hantera ljudtextning
Aspose.Slides låter dig lägga till stängda undertexter till en ljudram via metoden [getCaptionTracks]. Denna metod returnerar en [CaptionsCollection], som låter dig lägga till WebVTT‑undertextspå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 undertextspår till en ljudram. I följande exempel läggs en ljudfil till en bild och sedan laddas ett nytt undertextspår från en .vtt‑fil.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
audio_data = Path("audio.mp3").read_bytes()
java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
audio = presentation.getAudios().addAudio(java_audio_data)
slide = presentation.getSlides().get_Item(0)
audio_frame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio)
# Lägg till ett nytt undertextspår från en WebVTT-fil.
audio_frame.getCaptionTracks().add("New track", "track.vtt")
presentation.save("audio_with_captions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Extrahera ljudtextning
Du kan iterera genom undertextspåren som är kopplade till en ljudram och spara dem som .vtt‑filer. Varje undertextspår exponerar sin binära data och unika identifierare, som kan användas vid export av undertexter.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpase.startJVM()
from asposeslides.api import AudioFrame, Presentation
presentation = Presentation("audio_with_captions.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, AudioFrame):
for caption_track in shape.getCaptionTracks():
# Spara undertextspåret som en .vtt-fil.
file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
caption_data = bytes(caption_track.getBinaryData())
file_path.write_bytes(caption_data)
finally:
presentation.dispose()
Ta bort ljudtextning
För att ta bort undertexter från en ljudram, använd metoderna som tillhandahålls av [CaptionsCollection], såsom [clear], [remove] eller [removeAt]. Följande exempel tar bort alla undertextspår från en ljudram.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AudioFrame, Presentation, SaveFormat
presentation = Presentation("audio_with_captions.pptx")
try:
slide = presentation.getSlides().get_Item(0)
audio_frame = slide.getShapes().get_Item(0)
if isinstance(audio_frame, AudioFrame):
audio_frame.getCaptionTracks().clear()
presentation.save("audio_without_captions.pptx", SaveFormat.Pptx)
else:
print("The shape is not an audio frame.")
finally:
presentation.dispose()
Extrahera ljud
Aspose.Slides för Python via 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 läs in presentationen som innehåller ljudet.
- Hämta en referens till den relevanta bilden med dess index.
- Åtkomst till [slideshow transitions] för bilden.
- Extrahera ljudet som byte‑data.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("AudioSlide.pptx")
try:
slide = presentation.getSlides().get_Item(0)
transition = slide.getSlideShowTransition()
sound = transition.getSound()
if sound is not None:
audio_data = sound.getBinaryData()
print("Length:", len(audio_data))
else:
print("The slide transition has no sound.")
finally:
presentation.dispose()
Vanliga frågor
Kan jag återanvända samma ljudresurs på flera bilder utan att öka filstorleken?
Ja. Lägg till ljudet en gång i presentationens delade 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 ljuddata som lagras i presentationen?
Nej. Trimning justerar endast uppspelningsgränserna. De ursprungliga ljudbyterna förblir orörda och kan nås via det inbäddade ljudet eller presentationens ljudsamling.