Java Kullanarak Sunumlarda Ses Yönetimi

Genel Bakış

Bu makale, Aspose.Slides içinde ses çerçeveleriyle nasıl çalışılacağını açıklar. Gömülü sesi slaytlara eklemenin, ses çerçevesi küçük resmini özelleştirmenin, ses seviyesini, döngüyü, gizlemeyi, kırpmayı ve geçiş sürelerini yapılandırmanın ve slayt gösterisi geçişlerinde kullanılan sesin çıkarılmasının nasıl yapılacağını gösterir.

Ses Çerçeveleri Oluşturma

Aspose.Slides for Java, slaytlara ses dosyaları eklemenizi sağlar. Ses dosyaları slaytlara ses çerçeveleri olarak gömülür.

  1. Bir Sunum sınıfının bir örneğini oluşturun.
  2. Bir slaydın referansını, indeksini kullanarak alın.
  3. Slayda gömmek istediğiniz ses dosyası akışını yükleyin.
  4. Gömülü ses çerçevesini (ses dosyasını içeren) slayta ekleyin.
  5. PlayMode ve IAudioFrame nesnesi tarafından sunulan Volume değerini ayarlayın.
  6. Değiştirilmiş sunumu kaydedin.

Bu Java kodu, bir slayta gömülü ses çerçevesi eklemenin nasıl yapılacağını gösterir:

// Bir sunum dosyasını temsil eden Presentation sınıfını örnekler
Presentation pres = new Presentation();
try {
    // İlk slaytı alır
    ISlide sld = pres.getSlides().get_Item(0);

    // wav ses dosyasını akışa yükler
    FileInputStream fstr = new FileInputStream(new File("audio.wav"));

    // Ses Çerçevesini ekler
    IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    
    // Sesin Oynatma Modunu ve Ses seviyesini ayarlar
    audioFrame.setPlayMode(AudioPlayModePreset.Auto);
    audioFrame.setVolume(AudioVolumeMode.Loud);

    // PowerPoint dosyasını diske yazar
    pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Ses Çerçevesi Küçük Resmini Değiştirme

Bir sunuma ses dosyası eklediğinizde, ses standart bir varsayılan resimle bir çerçeve olarak görünür (aşağıdaki bölümdeki resme bakın). Ses çerçevesinin ön izleme resmini (istediğiniz resmi ayarlayarak) değiştirirsiniz.

Bu Java kodu, bir ses çerçevesinin küçük resmini veya ön izleme resmini nasıl değiştireceğinizi gösterir:

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Belirtilen konum ve boyutla slayta bir ses çerçevesi ekler.
    FileInputStream audioStream = new FileInputStream("sample2.mp3");
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();

    // Sunum kaynaklarına bir resim ekler.
    IPPImage picture;
    IImage image = Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }

    // Ses çerçevesi için resmi ayarlar.
    audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----

    // Değiştirilmiş sunumu diske kaydeder
    presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (presentation != null) presentation.dispose();
}

Ses Oynatma Seçeneklerini Değiştirme

Aspose.Slides for Java, bir sesin oynatılmasını veya özelliklerini kontrol eden seçenekleri değiştirmenize olanak tanır. Örneğin, sesin seviyesini ayarlayabilir, sesi döngü halinde çalacak şekilde yapılandırabilir ya da ses simgesini gizleyebilirsiniz.

The Audio Options pane in Microsoft PowerPoint:

example1_image

PowerPoint Ses Seçenekleri, Aspose.Slides AudioFrame özelliklerine karşılık gelir:

PowerPoint Düzenleme seçenekleri, Aspose.Slides AudioFrame özelliklerine karşılık gelir:

PowerPoint ses kontrol panelindeki Ses Kontrolü, AudioFrame.setVolumeValue metoduna karşılık gelir. Ses seviyesini yüzde olarak değiştirmenizi sağlar.

Ses Oynatma seçeneklerini değiştirmenin yolu şudur:

  1. Oluştur veya Ses Çerçevesini alın.
  2. Ayarlamak istediğiniz Ses Çerçevesi özellikleri için yeni değerler belirleyin.
  3. Değiştirilmiş PowerPoint dosyasını kaydedin.

Bu Java kodu, bir sesin seçeneklerinin ayarlandığı bir işlemi gösterir:

Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    // AudioFrame şekli alınır
    AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    // Oynatma modunu tıklamayla oynatacak şekilde ayarlar
    audioFrame.setPlayMode(AudioPlayModePreset.OnClick);

    // Ses seviyesini Düşük olarak ayarlar
    audioFrame.setVolume(AudioVolumeMode.Low);

    // Sesin slaytlar arasında çalmasını ayarlar
    audioFrame.setPlayAcrossSlides(true);

    // Ses için döngüyü devre dışı bırakır
    audioFrame.setPlayLoopMode(false);

    // Ses Çerçevesini slayt gösterisi sırasında gizler
    audioFrame.setHideAtShowing(true);

    // Sesin çalındıktan sonra başa sarmasını ayarlar
    audioFrame.setRewindAudio(true);

    // PowerPoint dosyasını diske kaydeder
    pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Bu Java örneği, gömülü sesli yeni bir ses çerçevesi eklemeyi, kırpmayı ve yumuşak geçiş sürelerini ayarlamayı göstermektedir:

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);

    // Kırpma başlangıç ofsetini 1.5 saniyeye ayarlar
    audioFrame.setTrimFromStart(1500f);
    // Kırpma bitiş ofsetini 2 saniyeye ayarlar
    audioFrame.setTrimFromEnd(2000f);

    // Yumuşak giriş süresini 200 ms olarak ayarlar
    audioFrame.setFadeInDuration(200f);
    // Yumuşak çıkış süresini 500 ms olarak ayarlar
    audioFrame.setFadeOutDuration(500f);

    pres.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

Aşağıdaki kod örneği, gömülü sesli bir ses çerçevesini nasıl alacağınızı ve ses seviyesini %85 olarak nasıl ayarlayacağınızı gösterir:

Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(0);

    // Bir ses çerçevesi şekli alır
    IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);

    // Ses seviyesini %85 olarak ayarlar
    audioFrame.setVolumeValue(85f);

    pres.save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
finally {
    pres.dispose();
}

Ses Altyazılarını Yönetme

Aspose.Slides, bir ses çerçevesine kapalı altyazı eklemenizi getCaptionTracks yöntemiyle sağlar. Bu yöntem, WebVTT altyazı izleri eklemenize, mevcut izler arasında dolaşmanıza ve gerektiğinde kaldırmanıza olanak tanıyan bir ICaptionsCollection döndürür.

Ses Altyazılarını Ekle

getCaptionTracks yöntemini kullanarak bir ses çerçevesine bir veya daha fazla altyazı izi ekleyin. Aşağıdaki örnekte, bir ses dosyası slayta eklenir ve ardından yeni bir altyazı izi .vtt dosyasından yüklenir.

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);

    // WebVTT dosyasından yeni bir altyazı izi ekle.
    audioFrame.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ı izlerini dolaşabilir ve bunları .vtt dosyaları olarak kaydedebilirsiniz. Her altyazı izi ikili verisini ve benzersiz tanımlayıcısını ortaya çıkarır; bu, altyazıları dışa aktarırken kullanılabilir.

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()) {
                // Altyazı izini .vtt dosyası olarak kaydet.
                Path filePath = Paths.get(captionTrack.getCaptionId() + ".vtt");
                Files.write(filePath, captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Ses Altyazılarını Kaldırma

Bir ses çerçevesinden altyazıları kaldırmak için ICaptionsCollection tarafından sağlanan yöntemleri, örneğin clear, remove, veya removeAt kullanın. Aşağıdaki örnek, bir ses çerçevesindeki tüm altyazı izlerini kaldırır.

Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAudioFrame audioFrame = (IAudioFrame) slide.getShapes().get_Item(0);

    // Ses çerçevesindeki tüm altyazı izlerini kaldır.
    audioFrame.getCaptionTracks().clear();

    presentation.save("audio_without_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Ses Çıkarma

Aspose.Slides for 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 bir sunumu yüklemek için bir Sunum sınıfının örneğini oluşturun.
  2. İlgili slaydın referansını indeksini kullanarak alın.
  3. Slayt için slideshow transitions öğelerine erişin.
  4. Sesi bayt verisi olarak çıkarın.

Bu Java kodu, bir slaytta kullanılan sesin nasıl çıkarılacağını gösterir:

// Bir sunum dosyasını temsil eden Presentation sınıfını örnekler
Presentation pres = new Presentation("AudioSlide.pptx");
try {
    // İstenen slayta erişir
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Slayt için slayt gösterisi geçiş efektlerini alır
    ISlideShowTransition transition = slide.getSlideShowTransition();
    
    // Sesi bayt dizisi olarak çıkarır
    byte[] audio = transition.getSound().getBinaryData();
    System.out.println("Length: " + audio.length);
} finally {
    if (pres != null) pres.dispose();
}

SSS

Aynı ses varlığını birden fazla slaytta dosya boyutunu artırmadan yeniden kullanabilir miyim?

Evet. Sesi, sunumun ortak audio collection‘ına bir kez 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.

Varolan bir ses çerçevesindeki sesi şekli yeniden oluşturmadan değiştirebilir miyim?

Evet. Bağlantılı bir ses için, link path değerini yeni dosyaya işaret edecek şekilde güncelleyin. Gömülü bir ses için, embedded audio nesnesini sunumun audio collection‘ındaki başka bir sesle değiştirin. Çerçevenin biçimlendirmesi ve çoğu oynatma ayarı aynı kalır.

Kırpma, sunumda depolanan 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.