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.
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaydın referansını indeksine göre alın.
- Slayta gömmek istediğiniz ses dosyası akışını yükleyin.
- Gömülü ses çerçevesini (ses dosyasını içeren) slayta ekleyin.
- IAudioFrame nesnesi tarafından sunulan PlayMode ve
Volumedeğerlerini ayarlayın. - 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:

PowerPoint Audio Options öğeleri, Aspose.Slides AudioFrame metodlarına karşılık gelir:
- Start açılır listesi, AudioFrame::set_PlayMode metoduna karşılık gelir
- Volume AudioFrame::set_Volume metoduna karşılık gelir
- Play Across Slides AudioFrame::set_PlayAcrossSlides metoduna karşılık gelir
- Loop until Stopped AudioFrame::set_PlayLoopMode metoduna karşılık gelir
- Hide During Show AudioFrame::set_HideAtShowing metoduna karşılık gelir
- Rewind after Playing AudioFrame::set_RewindAudio metoduna karşılık gelir
PowerPoint Editing seçenekleri, Aspose.Slides AudioFrame özelliklerine karşılık gelir:
- Fade In AudioFrame.set_FadeInDuration metoduna karşılık gelir
- Fade Out AudioFrame.set_FadeOutDuration metoduna karşılık gelir
- Trim Audio Start Time AudioFrame.set_TrimFromStart metoduna karşılık gelir
- Trim Audio End Time değeri, ses süresinden AudioFrame.set_TrimFromEnd metodunun değeri çıkarılarak elde edilir
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:
- Create veya Audio Frame’i alın.
- Ayarlamak istediğiniz Audio Frame özellikleri için yeni değerler belirleyin.
- 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.
- Presentation sınıfının bir örneğini oluşturun ve ses içeren sunumu yükleyin.
- İlgili slaydın referansını indeksine göre alın.
- Slaydın slayt gösterisi geçişlerine erişin.
- 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.