Python Kullanarak Sunumlarda Sesi Yönetme
Genel Bakış
Bu makale, Aspose.Slides içinde ses çerçeveleriyle nasıl çalışılacağını açıklar. Gömülü sesin slaytlara eklenmesi, ses çerçevesi küçük resminin özelleştirilmesi, ses seviyesinin, döngünün, gizlenmenin, kırpmanın ve solma sürelerinin yapılandırılması ve slayt gösterisi geçişlerinde kullanılan sesin çıkarılması konularını gösterir.
Ses Çerçeveleri Oluşturma
Aspose.Slides for Python via Java, ses dosyalarını slaytlara eklemenizi sağlar. Ses dosyaları slaytlara ses çerçeveleri olarak gömülür.
- Bir Presentation sınıfının bir örneğini oluşturun.
- İndeksine göre bir slayta referans alın.
- Slayta gömmek istediğiniz ses dosyasını okuyun.
- Gömülü ses çerçevesini (ses dosyasını içeren) slayta ekleyin.
- AudioFrame nesnesi tarafından sunulan setPlayMode ve setVolume yöntemlerini kullanın.
- Değiştirilmiş sunumu kaydedin.
Bu Python kodu, bir slayta gömülü ses çerçevesi eklemenin nasıl yapılacağını gösterir:
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()
Ses Çerçevesi Küçük Resmini Değiştirme
Bir ses dosyasını bir sunuma eklediğinizde, ses standart bir varsayılan görüntü ile bir çerçeve olarak görünür (aşağıdaki bölümdeki görsele bakın). Ses çerçevesinin önizleme görüntüsünü istediğiniz bir resimle değiştirebilirsiniz.
Bu Python kodu, bir ses çerçevesinin küçük resmini veya önizleme görüntüsünü nasıl değiştireceğinizi gösterir:
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()
Ses Oynatma Seçeneklerini Değiştirme
Aspose.Slides for Python via Java, ses oynatmasını kontrol eden seçenekleri veya özellikleri değiştirmenizi sağlar. Örneğin, ses seviyesini ayarlayabilir, sesi döngüye alabilir veya ses simgesini gizleyebilirsiniz.
Microsoft PowerPoint’teki Audio Options bölmesi:

PowerPoint Audio Options bölmesi Aspose.Slides AudioFrame özelliklerine karşılık gelir:
- Start açılır listesi setPlayMode metoduna karşılık gelir
- Volume setVolume metoduna karşılık gelir
- Play Across Slides setPlayAcrossSlides metoduna karşılık gelir
- Loop until Stopped setPlayLoopMode metoduna karşılık gelir
- Hide During Show setHideAtShowing metoduna karşılık gelir
- Rewind after Playing setRewindAudio metoduna karşılık gelir
PowerPoint Editing seçenekleri Aspose.Slides AudioFrame özelliklerine karşılık gelir:
- Fade In setFadeInDuration metoduna karşılık gelir
- Fade Out setFadeOutDuration metoduna karşılık gelir
- Trim Audio Start Time setTrimFromStart metoduna karşılık gelir
- Trim Audio End Time değeri, ses süresinden setTrimFromEnd metoduyla ayarlanan değerin çıkarılmasıyla elde edilir
PowerPoint ses kontrol panelindeki Volume control setVolumeValue metoduna karşılık gelir. Ses seviyesini yüzde olarak değiştirmenizi sağlar.
Ses Oynatma seçeneklerini nasıl değiştireceğiniz aşağıdadır:
- Create veya ses çerçevesini alın.
- Ayarlamak istediğiniz ses çerçevesi özellikleri için yeni değerler atayın.
- Değiştirilmiş PowerPoint dosyasını kaydedin.
Bu Python kodu, ses seçeneklerinin ayarlandığı bir işlemi gösterir:
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):
# Tıklama ile düşük ses seviyesinde, slaytlar boyunca, döngüsüz oynat.
audio_frame.setPlayMode(AudioPlayModePreset.OnClick)
audio_frame.setVolume(AudioVolumeMode.Low)
audio_frame.setPlayAcrossSlides(True)
audio_frame.setPlayLoopMode(False)
# Sunum sırasında çerçeveyi gizle ve oynattıktan sonra geri sar.
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()
Bu Python örneği, gömülü sesli yeni bir ses çerçevesi eklemeyi, kesmeyi ve solma sürelerini ayarlamayı gösterir:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpide.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)
# Başlangıçtan 1.5 saniye ve sondan 2 saniye kırp.
audio_frame.setTrimFromStart(1500.0)
audio_frame.setTrimFromEnd(2000.0)
# Fade-in'i 200 ms, fade-out'u 500 ms olarak ayarla.
audio_frame.setFadeInDuration(200.0)
audio_frame.setFadeOutDuration(500.0)
presentation.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Aşağıdaki kod örneği, gömülü sesli bir ses çerçevesini alıp ses seviyesini %85 olarak ayarlamayı gösterir:
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()
Ses Altyazılarını Yönetme
Aspose.Slides, bir ses çerçevesine kapalı altyazı eklemenizi getCaptionTracks yöntemi ile sağlar. Bu yöntem bir CaptionsCollection döndürür; bu sayede WebVTT altyazı izleri ekleyebilir, mevcut izler arasında dolaşabilir ve gerektiğinde silebilirsiniz.
Ses Altyazılarını Ekle
Bir veya daha fazla altyazı izini bir ses çerçevesine eklemek için getCaptionTracks yöntemini kullanın. Aşağıdaki örnekte bir ses dosyası bir slayta eklenir ve ardından yeni bir altyazı izi bir .vtt dosyasından yüklenir.
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)
# WebVTT dosyasından yeni bir altyazı izi ekle.
audio_frame.getCaptionTracks().add("New track", "track.vtt")
presentation.save("audio_with_captions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Ses Altyazılarını Çıkarma
Bir ses çerçevesine bağlı altyazı izleri arasında dolaşabilir ve bunları .vtt dosyaları olarak kaydedebilirsiniz. Her altyazı izi ikili verisini ve benzersiz tanımlayıcısını dışa aktarırken kullanmanıza olanak tanır.
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():
# Altyazı izini .vtt dosyası olarak kaydet.
file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
caption_data = bytes(caption_track.getBinaryData())
file_path.write_bytes(caption_data)
finally:
presentation.dispose()
Ses Altyazılarını Kaldırma
Bir ses çerçevesinden altyazıları kaldırmak için CaptionsCollection tarafından sağlanan clear, remove veya removeAt gibi yöntemleri kullanın. Aşağıdaki örnek, bir ses çerçevesinden tüm altyazı izlerini kaldırır.
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()
Ses Çıkarma
Aspose.Slides for Python via Java, slayt gösterisi geçişlerinde kullanılan sesi çıkarmanıza olanak tanır. Örneğin, belirli bir slaytta kullanılan sesi çıkarabilirsiniz.
- Ses içeren sunumu yükleyerek bir Presentation sınıfının bir örneğini oluşturun.
- İndeksine göre ilgili slayta referans alın.
- Slayt için slideshow transitions özelliklerine erişin.
- Sesi bayt verisi olarak çıkarın.
Bu Python kodu, bir slaytta kullanılan sesi nasıl çıkaracağınızı gösterir:
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()
SSS
Aynı ses varlığını birden çok slaytta dosya boyutunu artırmadan yeniden kullanabilir miyim?
Evet. Ses varlığını bir kez sunumun ortak audio collection içine ekleyin ve mevcut varlığı referans alan ek ses çerçeveleri oluşturun. Bu, medya verisinin çoğaltılmasını önler ve sunum boyutunun kontrol altında kalmasını sağlar.
Mevcut bir ses çerçevesindeki sesi şekli yeniden oluşturmadan değiştirebilir miyim?
Evet. Bağlantılı bir ses için link path i yeni dosyayı gösterecek şekilde güncelleyin. Gömülü bir ses için, sunumun audio collection içindeki farklı bir embedded audio nesnesiyle değiştirin. Çerçevenin biçimlendirmesi ve çoğu oynatma ayarı aynı kalır.
Kırpma, sunumda saklanan temel ses verisini değiştirir mi?
Hayır. Kırpma yalnızca oynatma sınırlarını ayarlar. Orijinal ses baytları dokunulmadan kalır ve gömülü ses ya da sunumun ses koleksiyonu aracılığıyla erişilebilir.