Sunumlarda Ses Yönetimi C++ Kullanarak

Genel Bakış

Bu makale, Aspose.Slides’te ses çerçeveleriyle nasıl çalışılacağını açıklar. Slaytlara gömülü ses eklemeyi, ses çerçevesi küçük resmini özelleştirmeyi, ses seviyesi, döngü, gizleme, kırpma ve solma süreleri gibi oynatma seçeneklerini yapılandırmayı ve slayt gösterisi geçişlerinde kullanılan sesleri çıkarmayı gösterir.

Ses Çerçeveleri Oluşturma

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

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Bir slaydın referansını indeksine göre alın.
  3. Slayta 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. IAudioFrame nesnesi tarafından sunulan PlayMode ve Volume değerlerini ayarlayın.
  6. Değiştirilen sunumu kaydedin.

Bu C++ 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ı örnekleştirir
auto pres = System::MakeObject<Presentation>();

// İlk slaytı alır
auto sld = pres->get_Slides()->idx_get(0);

// wav ses dosyasını akışa yükler
auto fstr = System::MakeObject<FileStream>(u"sampleaudio.wav", FileMode::Open, FileAccess::Read);

// Ses Çerçevesini ekler
auto audioFrame = sld->get_Shapes()->AddAudioFrameEmbedded(50.0f, 150.0f, 100.0f, 100.0f, fstr);

// Sesin Oynatma Modu ve Ses Seviyesini ayarlar
audioFrame->set_PlayMode(AudioPlayModePreset::Auto);
audioFrame->set_Volume(AudioVolumeMode::Loud);

// PowerPoint dosyasını diske yazar
pres->Save(u"AudioFrameEmbed_out.pptx", SaveFormat::Pptx);

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

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

Bu C++ kodu, bir ses çerçevesinin küçük resmini veya önizleme görüntüsünü nasıl değiştireceğinizi gösterir:

auto presentation = System::MakeObject<Presentation>();
        
auto slide = presentation->get_Slides()->idx_get(0);
        
// Belirtilen konum ve boyutla slayta bir ses çerçevesi ekler.
auto audioStream = System::MakeObject<System::IO::FileStream>(u"sample2.mp3", 
    System::IO::FileMode::Open, System::IO::FileAccess::Read);
    
auto audioFrame = slide->get_Shapes()->AddAudioFrameEmbedded(150.0f, 100.0f, 50.0f, 50.0f, audioStream);
            
// Sunum kaynaklarına bir resim ekler.
auto imageStream = System::IO::File::OpenRead(u"eagle.jpeg");
auto audioImage = presentation->get_Images()->AddImage(imageStream);
            
// Ses çerçevesi için resmi ayarlar.
audioFrame->get_PictureFormat()->get_Picture()->set_Image(audioImage); // <-----
        
// Değiştirilmiş sunumu diske kaydeder
presentation->Save(u"example_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);

Ses Oynatma Seçeneklerini Değiştirme

Aspose.Slides for C++, bir sesin oynatma veya özelliklerini kontrol eden seçenekleri değiştirmenizi sağlar. Örneğin, sesin seviyesini ayarlayabilir, sesi döngü halinde çalacak şekilde ayarlayabilir veya ses simgesini gizleyebilirsiniz.

Microsoft PowerPoint içindeki Audio Options bölmesi:

example1_image

PowerPoint Audio Options öğeleri, Aspose.Slides AudioFrame metodlarına karşılık gelir:

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

PowerPoint ses kontrol panelindeki Volume denetimi, AudioFrame.set_VolumeValue metoduna karşılık gelir. Ses hacmini yüzde olarak değiştirmenizi sağlar.

Ses Oynatma seçeneklerini nasıl değiştireceğiniz aşağıda gösterilmiştir:

  1. Create veya Audio Frame’i alın.
  2. Ayarlamak istediğiniz Audio Frame özellikleri için yeni değerler belirleyin.
  3. Değiştirilen PowerPoint dosyasını kaydedin.

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

auto pres = System::MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");

// Bir şekil al
auto shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0);

// Şekli AudioFrame şekline dönüştürür
auto audioFrame = System::ExplicitCast<AudioFrame>(shape);

// Oynatma modunu tıklamayla çalmaya ayarlar
audioFrame->set_PlayMode(AudioPlayModePreset::OnClick);

// Ses seviyesini Düşük olarak ayarlar
audioFrame->set_Volume(AudioVolumeMode::Low);

// Sesin slaytlar arasında çalmasını ayarlar
audioFrame->set_PlayAcrossSlides(true);

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

// Slayt gösterisi sırasında AudioFrame'i gizler
audioFrame->set_HideAtShowing(true);

// Ses çaldıktan sonra başa sarmayı ayarlar
audioFrame->set_RewindAudio(true);

// PowerPoint dosyasını diske kaydeder
pres->Save(u"AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);

Bu C++ örneği, gömülü sesli yeni bir ses çerçevesi eklemeyi, kırpmayı ve solma sürelerini ayarlamayı gösterir:

auto pres = MakeObject<Presentation>();
auto slide = pres->get_Slide(0);

auto audioData = File::ReadAllBytes(u"sampleaudio.mp3");
auto audio = pres->get_Audios()->AddAudio(audioData);
auto audioFrame = slide->get_Shapes()->AddAudioFrameEmbedded(50, 50, 100, 100, audio);

// Kırpma başlangıç ofsetini 1,5 saniye olarak ayarlar
audioFrame->set_TrimFromStart(1500);
// Kırpma bitiş ofsetini 2 saniye olarak ayarlar
audioFrame->set_TrimFromEnd(2000);

// Fade-in süresini 200 ms olarak ayarlar
audioFrame->set_FadeInDuration(200);
// Fade-out süresini 500 ms olarak ayarlar
audioFrame->set_FadeOutDuration(500);

pres->Save(u"AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
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:

auto pres = MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");
    
// Bir ses çerçevesi şekli alır
auto audioFrame = ExplicitCast<IAudioFrame>(pres->get_Slide(0)->get_Shape(0));

// Ses seviyesini %85 olarak ayarlar
audioFrame->set_VolumeValue(85);

pres->Save(u"AudioFrameValue_out.pptx", SaveFormat::Pptx);
pres->Dispose();

Ses Altyazılarını Yönetme

Aspose.Slides, bir ses çerçevesine kapalı altyazı eklemenizi get_CaptionTracks metodu aracılığıyla sağlar. Bu metod, WebVTT altyazı izleri eklemenize, mevcut izleri dolaşmanıza ve gerektiğinde kaldırmanıza olanak tanıyan bir ICaptionsCollection döndürür.

Ses Altyazılarını Ekle

Bir ses çerçevesine bir veya daha fazla altyazı izi eklemek için get_CaptionTracks metodunu kullanın. Aşağıdaki örnekte, bir ses dosyası slayta eklenir ve ardından yeni bir altyazı izi .vtt dosyasından yüklenir.

auto presentation = MakeObject<Presentation>();

auto audioData = File::ReadAllBytes(u"audio.mp3");
auto audio = presentation->get_Audios()->AddAudio(audioData);

auto slide = presentation->get_Slide(0);
auto audioFrame = slide->get_Shapes()->AddAudioFrameEmbedded(10, 10, 50, 50, audio);

// Add a new caption track from a WebVTT file.
audioFrame->get_CaptionTracks()->Add(u"New track", u"track.vtt");

presentation->Save(u"audio_with_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();

Ses Altyazılarını Çıkarma

Bir ses çerçevesine ilişkilendirilmiş altyazı izlerini dolaşabilir ve .vtt dosyaları olarak kaydedebilirsiniz. Her altyazı izi, dışa aktarma sırasında kullanılabilecek ikili verisini ve benzersiz tanımlayıcısını sunar.

auto presentation = MakeObject<Presentation>(u"audio_with_captions.pptx");
auto slide = presentation->get_Slide(0);
for (auto&& shape : slide->get_Shapes())
{
    if (ObjectExt::Is<IAudioFrame>(shape))
    {
        auto audioFrame = ExplicitCast<IAudioFrame>(shape);
        for (auto&& captionTrack : audioFrame->get_CaptionTracks())
        {
            // Her altyazı izini .vtt dosyası olarak kaydet.
            auto fileName = captionTrack->get_CaptionId().ToString() + u".vtt";
            File::WriteAllBytes(fileName, captionTrack->get_BinaryData());
        }
    }
}
presentation->Dispose();

Ses Altyazılarını Kaldırma

Bir ses çerçevesinden altyazıları kaldırmak için, ICaptionsCollection tarafından sağlanan Clear, Remove, veya RemoveAt gibi metodları kullanın. Aşağıdaki örnek, bir ses çerçevesinden tüm altyazı izlerini kaldırır.

auto presentation = MakeObject<Presentation>(u"audio_with_captions.pptx");
auto slide = presentation->get_Slide(0);
auto audioFrame = ExplicitCast<IAudioFrame>(slide->get_Shape(0));

// Ses çerçevesinden tüm altyazı izlerini kaldır.
audioFrame->get_CaptionTracks()->Clear();

presentation->Save(u"audio_without_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();

Ses Çıkarma

Aspose.Slides, slayt gösterisi geçişlerinde kullanılan sesi çıkarmanıza olanak tanır. Örneğin, belirli bir slaytta kullanılan sesi çıkarabilirsiniz.

  1. Presentation sınıfının bir örneğini oluşturun ve ses içeren sunumu yükleyin.
  2. İlgili slaydın referansını indeksine göre alın.
  3. Slaydın slayt gösterisi geçişlerine erişin.
  4. Sesi bayt verisi olarak çıkarın.

Bu C++ kodu, bir slaytta kullanılan sesi nasıl çıkaracağınızı gösterir:

String presName = u"AudioSlide.pptx";

// Bir sunum dosyasını temsil eden Presentation sınıfını örnekleştirir
auto pres = System::MakeObject<Presentation>(presName);

// İstenen slayta erişir
auto slide = pres->get_Slides()->idx_get(0);

// Slayt için slayt gösterisi geçiş efektlerini alır
auto transition = slide->get_SlideShowTransition();

// Sesi bayt dizisi olarak çıkarır
auto audio = transition->get_Sound()->get_BinaryData();

Console::WriteLine(String(u"Length: ") + audio->get_Length());

SSS

Aynı ses öğesini birden çok slaytta dosya boyutunu artırmadan yeniden kullanabilir miyim?

Evet. Sesi, sunumun ortak audio collection bölümüne bir kez ekleyin ve mevcut varlığa referans veren 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 öğesini yeni dosyayı gösterecek şekilde güncelleyin. Gömülü bir ses için, embedded audio nesnesini sunumun audio collection bölümünden başka bir nesneyle 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ı değiştirilmez ve gömülü ses veya sunumun audio collection’ı aracılığıyla erişilebilir durumda kalır.