Správa zvuku v prezentacích pomocí Pythonu
Přehled
Tento článek vysvětluje, jak pracovat s audio rámci v Aspose.Slides. Ukazuje, jak přidat vložený zvuk do snímků, přizpůsobit miniaturu audio rámce, nakonfigurovat možnosti přehrávání, jako je hlasitost, smyčkování, skrývání, ořezávání a dobu proslábnutí, a extrahovat zvuk použité v přechodech prezentace.
Vytvoření audio rámců
Aspose.Slides pro Python přes Java umožňuje přidávat zvukové soubory do snímků. Zvukové soubory jsou vkládány do snímků jako audio rámce.
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek podle jeho indexu.
- Přečtěte zvukový soubor, který chcete vložit do snímku.
- Přidejte vložený audio rámec (obsahující zvukový soubor) do snímku.
- Použijte setPlayMode a setVolume vystavené objektem AudioFrame.
- Uložte upravenou prezentaci.
Tento kód v Pythonu ukazuje, jak přidat vložený audio rámec do snímku:
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()
Změna miniatury audio rámce
Když do prezentace přidáte zvukový soubor, zvuk se zobrazí jako rámec se standardním výchozím obrázkem (viz obrázek v následující sekci). Můžete změnit náhledový obrázek audio rámce na obrázek dle vašeho výběru.
Tento kód v Pythonu ukazuje, jak změnit miniaturu nebo náhledový obrázek audio rámce:
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()
Změna možností přehrávání zvuku
Aspose.Slides pro Python přes Java umožňuje měnit možnosti, které řídí přehrávání zvuku nebo jeho vlastnosti. Například můžete upravit hlasitost zvuku, nastavit smyčkování zvuku nebo dokonce skrýt ikonu zvuku.
Panel Audio Options v Microsoft PowerPoint:

PowerPoint Audio Options, které odpovídají vlastnostem Aspose.Slides AudioFrame:
- Start rozbalovací seznam odpovídá metodě setPlayMode
- Volume odpovídá metodě setVolume
- Play Across Slides odpovídá metodě setPlayAcrossSlides
- Loop until Stopped odpovídá metodě setPlayLoopMode
- Hide During Show odpovídá metodě setHideAtShowing
- Rewind after Playing odpovídá metodě setRewindAudio
Možnosti Editing v PowerPointu, které odpovídají vlastnostem Aspose.Slides AudioFrame :
- Fade In odpovídá metodě setFadeInDuration
- Fade Out odpovídá metodě setFadeOutDuration
- Trim Audio Start Time odpovídá metodě setTrimFromStart
- Trim Audio End Time hodnota se rovná délce zvuku minus hodnota nastavená metodou setTrimFromEnd
Ovládání Volume v PowerPointu na panelu pro audio odpovídá metodě setVolumeValue. Umožňuje vám změnit hlasitost zvuku v procentech.
Takto měníte možnosti přehrávání zvuku:
- Vytvořit nebo získejte audio rámec.
- Nastavte nové hodnoty pro vlastnosti audio rámce, které chcete upravit.
- Uložte upravený soubor PowerPoint.
Tento kód v Pythonu demonstruje operaci, při které jsou upraveny možnosti zvuku:
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):
# Přehrát po kliknutí s nízkou hlasitostí, napříč snímky, bez smyčkování.
audio_frame.setPlayMode(AudioPlayModePreset.OnClick)
audio_frame.setVolume(AudioVolumeMode.Low)
audio_frame.setPlayAcrossSlides(True)
audio_frame.setPlayLoopMode(False)
# Skrýt rámec během prezentace a přetočit po přehrání.
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()
Tento příklad v Pythonu ukazuje, jak přidat nový audio rámec s vloženým zvukem, oříznout jej a nastavit dobu proslábnutí:
from pathlib import Path
import jpype
import asposeslides
if not jpage.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)
# Oříznout 1,5 sekundy od začátku a 2 sekundy od konce.
audio_frame.setTrimFromStart(1500.0)
audio_frame.setTrimFromEnd(2000.0)
# Nastavit fade-in na 200 ms a fade-out na 500 ms.
audio_frame.setFadeInDuration(200.0)
audio_frame.setFadeOutDuration(500.0)
presentation.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Níže uvedený ukázkový kód ukazuje, jak získat audio rámec s vloženým zvukem a nastavit jeho hlasitost na 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()
Správa titulků zvuku
Aspose.Slides vám umožňuje přidávat uzavřené titulky k audio rámci pomocí metody getCaptionTracks. Tato metoda vrací CaptionsCollection, který vám umožňuje přidávat WebVTT stopy titulků, procházet existující stopy a odstraňovat je podle potřeby.
Přidání titulků zvuku
Použijte metodu getCaptionTracks, abyste připojili jednu nebo více stop titulků k audio rámci. V následujícím příkladu je zvukový soubor přidán do snímku a poté je nová stopa titulků načtena ze souboru .vtt.
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)
# Přidat novou stopu titulků ze souboru WebVTT.
audio_frame.getCaptionTracks().add("New track", "track.vtt")
presentation.save("audio_with_captions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Extrahování titulků zvuku
Můžete procházet stopy titulků přiřazené k audio rámci a uložit je jako soubory .vtt. Každá stopa titulků poskytuje svá binární data a jedinečný identifikátor, který lze použít při exportu titulků.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.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():
# Uložit stopu titulků jako soubor .vtt.
file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
caption_data = bytes(caption_track.getBinaryData())
file_path.write_bytes(caption_data)
finally:
presentation.dispose()
Odstranění titulků zvuku
Chcete-li odstranit titulky z audio rámce, použijte metody poskytované CaptionsCollection, např. clear, remove, nebo removeAt. Následující příklad odstraňuje všechny stopy titulků z audio rámce.
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()
Extrahování zvuku
Aspose.Slides pro Python přes Java vám umožňuje extrahovat zvuk použitý v přechodech prezentace. Například můžete extrahovat zvuk použitý v konkrétním snímku.
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující zvuk.
- Získejte odkaz na příslušný snímek podle jeho indexu.
- Přistupte k slideshow transitions pro snímek.
- Extrahujte zvuk jako bajtová data.
Tento kód v Pythonu ukazuje, jak extrahovat zvuk použitý v snímku:
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()
Často kladené otázky
Mohu znovu použít stejný zvukový zdroj na více snímcích, aniž by se zvětšila velikost souboru?
Ano. Přidejte zvuk jednou do sdílené audio collection prezentace a vytvořte další audio rámce, které odkazují na tento existující zdroj. Tím se zabrání duplikaci multimediálních dat a velikost prezentace zůstane pod kontrolou.
Mohu nahradit zvuk v existujícím audio rámci, aniž bych znovu vytvářel tvar?
Ano. U propojeného zvuku aktualizujte link path, aby ukazoval na nový soubor. U vloženého zvuku vyměňte objekt embedded audio za jiný z audio collection prezentace. Formátování rámce a většina nastavení přehrávání zůstane nedotčena.
Mění ořezávání podkladová audio data uložená v prezentaci?
Ne. Ořezávání upravuje pouze hranice přehrávání. Původní audio bajty zůstávají nedotčeny a jsou přístupné přes vložený zvuk nebo audio kolekci prezentace.