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.

  1. Bir Presentation sınıfının bir örneğini oluşturun.
  2. İndeksine göre bir slayta referans alın.
  3. Slayta gömmek istediğiniz ses dosyasını okuyun.
  4. Gömülü ses çerçevesini (ses dosyasını içeren) slayta ekleyin.
  5. AudioFrame nesnesi tarafından sunulan setPlayMode ve setVolume yöntemlerini kullanın.
  6. 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:

example1_image

PowerPoint Audio Options bölmesi Aspose.Slides AudioFrame özelliklerine karşılık gelir:

PowerPoint Editing seçenekleri Aspose.Slides AudioFrame özelliklerine karşılık gelir:

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:

  1. Create veya ses çerçevesini alın.
  2. Ayarlamak istediğiniz ses çerçevesi özellikleri için yeni değerler atayın.
  3. 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.

  1. Ses içeren sunumu yükleyerek bir Presentation sınıfının bir örneğini oluşturun.
  2. İndeksine göre ilgili slayta referans alın.
  3. Slayt için slideshow transitions özelliklerine erişin.
  4. 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.