Správa zvuku v prezentacích pomocí C++
Přehled
Tento článek vysvětluje, jak pracovat s audio rámci v Aspose.Slides. Ukazuje, jak přidat vložený zvuk do snímků, přizpůsobit miniaturu audio rámce, nakonfigurovat možnosti přehrávání, jako je hlasitost, opakování, skrytí, oříznutí a dobu přechodů, a získat zvuk použitý v přechodech prezentace.
Vytvoření audio rámců
Aspose.Slides pro C++ vám umožňuje přidávat zvukové soubory na snímky. Zvukové soubory jsou do snímků vloženy jako audio rámce.
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek přes jeho index.
- Načtěte stream zvukového souboru, který chcete do snímku vložit.
- Přidejte vložený audio rámec (obsahující zvukový soubor) na snímek.
- Nastavte PlayMode a
Volumeposkytované objektem IAudioFrame. - Uložte upravenou prezentaci.
// Vytvoří instanci třídy Presentation, která představuje soubor prezentace
auto pres = System::MakeObject<Presentation>();
// Získá první snímek
auto sld = pres->get_Slides()->idx_get(0);
// Načte wav zvukový soubor do streamu
auto fstr = System::MakeObject<FileStream>(u"sampleaudio.wav", FileMode::Open, FileAccess::Read);
// Přidá Audio Frame
auto audioFrame = sld->get_Shapes()->AddAudioFrameEmbedded(50.0f, 150.0f, 100.0f, 100.0f, fstr);
// Nastaví režim přehrávání a hlasitost zvuku
audioFrame->set_PlayMode(AudioPlayModePreset::Auto);
audioFrame->set_Volume(AudioVolumeMode::Loud);
// Zapíše soubor PowerPoint na disk
pres->Save(u"AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
Změna miniatury audio rámce
Když do prezentace přidáte zvukový soubor, zvuk se zobrazí jako rámec se standardním výchozím obrázkem (viz obrázek v následující sekci). Změníte miniaturu audio rámce (nastavíte svůj preferovaný obrázek).
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slides()->idx_get(0);
// Přidá audio rámec do snímku s určenou polohou a velikostí.
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);
// Přidá obrázek do zdrojů prezentace.
auto imageStream = System::IO::File::OpenRead(u"eagle.jpeg");
auto audioImage = presentation->get_Images()->AddImage(imageStream);
// Nastaví obrázek pro audio rámec.
audioFrame->get_PictureFormat()->get_Picture()->set_Image(audioImage); // <-----
//Uloží upravenou prezentaci na disk
presentation->Save(u"example_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
Změna možností přehrávání zvuku
Aspose.Slides pro C++ vám umožňuje měnit možnosti, které řídí přehrávání zvuku nebo jeho vlastnosti. Například můžete upravit hlasitost zvuku, nastavit přehrávání zvuku v cyklu nebo dokonce skrýt ikonu zvuku.
The Audio Options pane in Microsoft PowerPoint:

Možnosti Audio v PowerPointu, které odpovídají metodám Aspose.Slides AudioFrame:
- Spustit rozbalovací seznam odpovídá metodě AudioFrame::set_PlayMode
- Hlasitost odpovídá metodě AudioFrame::set_Volume
- Přehrát napříč snímky odpovídá metodě AudioFrame::set_PlayAcrossSlides
- Opakovat až do zastavení odpovídá metodě AudioFrame::set_PlayLoopMode
- Skrýt během prezentace odpovídá metodě AudioFrame::set_HideAtShowing
- Přetočit po přehrání odpovídá metodě AudioFrame::set_RewindAudio method
Možnosti Úpravy v PowerPointu, které odpovídají vlastnostem Aspose.Slides AudioFrame:
- Plynulé zesílení odpovídá metodě AudioFrame.set_FadeInDuration
- Postupné zeslabení odpovídá metodě AudioFrame.set_FadeOutDuration
- Zkrátit čas začátku zvuku odpovídá metodě AudioFrame.set_TrimFromStart
- Zkrátit čas konce zvuku hodnota se rovná délce zvuku minus hodnota metody AudioFrame.set_TrimFromEnd
Ovládání hlasitosti v panelu zvukové kontroly v PowerPointu odpovídá metodě AudioFrame.set_VolumeValue. Umožňuje vám změnit hlasitost zvuku v procentech.
- Vytvořit nebo získat Audio Frame.
- Nastavte nové hodnoty vlastností Audio Frame, které chcete upravit.
- Uložte upravený soubor PowerPoint.
auto pres = System::MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");
// Získá tvar
auto shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0);
// Přetypuje tvar na AudioFrame
auto audioFrame = System::ExplicitCast<AudioFrame>(shape);
// Nastaví režim přehrávání na přehrání při kliknutí
audioFrame->set_PlayMode(AudioPlayModePreset::OnClick);
// Nastaví hlasitost na nízkou
audioFrame->set_Volume(AudioVolumeMode::Low);
// Nastaví, aby se zvuk přehrával napříč snímky
audioFrame->set_PlayAcrossSlides(true);
// Zakáže opakování pro zvuk
audioFrame->set_PlayLoopMode(false);
// Skryje AudioFrame během prezentace
audioFrame->set_HideAtShowing(true);
// Přetočí zvuk na začátek po přehrání
audioFrame->set_RewindAudio(true);
// Uloží soubor PowerPoint na disk
pres->Save(u"AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
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);
// Sets the trimming start offset to 1.5 seconds
audioFrame->set_TrimFromStart(1500);
// Sets the trimming end offset to 2 seconds
audioFrame->set_TrimFromEnd(2000);
// Sets the fade-in duration to 200 ms
audioFrame->set_FadeInDuration(200);
// Sets the fade-out duration to 500 ms
audioFrame->set_FadeOutDuration(500);
pres->Save(u"AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
pres->Dispose();
auto pres = MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");
// Získá tvar audio rámce
auto audioFrame = ExplicitCast<IAudioFrame>(pres->get_Slide(0)->get_Shape(0));
// Nastaví hlasitost zvuku na 85%
audioFrame->set_VolumeValue(85);
pres->Save(u"AudioFrameValue_out.pptx", SaveFormat::Pptx);
pres->Dispose();
Správa titulků zvuku
Aspose.Slides vám umožňuje přidat uzavřené titulky k audio rámci pomocí metody get_CaptionTracks. Tato metoda vrací ICaptionsCollection, což vám umožňuje přidávat WebVTT stopy titulků, procházet existující stopy a odstraňovat je podle potřeby.
Přidání titulků zvuku
Použijte metodu get_CaptionTracks k připojení jedné nebo více stop titulků k audio rámci. V následujícím příkladu je zvukový soubor přidán na snímek a poté je načtena nová stopa titulků ze souboru .vtt.
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();
Extrahování titulků zvuku
Můžete procházet stopy titulků přidružené k audio rámci a ukládat je jako soubory .vtt. Každá stopa titulků poskytuje své binární údaje a jedinečný identifikátor, který lze použít při exportu titulků.
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())
{
// Uložte každou stopu titulků jako soubor .vtt.
auto fileName = captionTrack->get_CaptionId().ToString() + u".vtt";
File::WriteAllBytes(fileName, captionTrack->get_BinaryData());
}
}
}
presentation->Dispose();
Odstranění titulků zvuku
Pro odstranění titulků z audio rámce použijte metody poskytované rozhraním ICaptionsCollection, jako jsou Clear, Remove, nebo RemoveAt. Následující příklad odstraňuje všechny stopy titulků z audio rámce.
auto presentation = MakeObject<Presentation>(u"audio_with_captions.pptx");
auto slide = presentation->get_Slide(0);
auto audioFrame = ExplicitCast<IAudioFrame>(slide->get_Shape(0));
// Odstraní všechny stopy titulků z audio rámce.
audioFrame->get_CaptionTracks()->Clear();
presentation->Save(u"audio_without_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();
Extrahování zvuku
Aspose.Slides vám umožňuje extrahovat zvuk použitý v přechodech prezentace. Například můžete extrahovat zvuk použitý v konkrétním snímku.
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující zvuk.
- Získejte odkaz na příslušný snímek přes jeho index.
- Přistupte k přechodům prezentace pro daný snímek.
- Extrahujte zvuk jako sekvenci bajtů.
String presName = u"AudioSlide.pptx";
// Vytvoří instanci třídy Presentation, která představuje soubor prezentace
auto pres = System::MakeObject<Presentation>(presName);
// Získá požadovaný snímek
auto slide = pres->get_Slides()->idx_get(0);
// Získá efekty přechodu prezentace pro snímek
auto transition = slide->get_SlideShowTransition();
// Extrahuje zvuk do pole bajtů
auto audio = transition->get_Sound()->get_BinaryData();
Console::WriteLine(String(u"Length: ") + audio->get_Length());
Často kladené otázky
Mohu znovu použít stejný zvukový soubor na více snímcích, aniž by se zvětšila velikost souboru?
Ano. Přidejte zvuk jednou do sdílené audio kolekce prezentace a vytvořte další audio rámce, které odkazují na tento existující objekt. Tím se zabrání duplikaci mediálních dat a velikost prezentace zůstane pod kontrolou.
Mohu nahradit zvuk v existujícím audio rámci, aniž bych musel znovu vytvářet tvar?
Ano. U propojeného zvuku aktualizujte cestu odkazu tak, aby ukazovala na nový soubor. U vloženého zvuku vyměňte objekt embedded audio za jiný z audio kolekce prezentace. Formátování rámce a většina nastavení přehrávání zůstane beze změny.
Mění ořezávání podkladová zvuková data uložená v prezentaci?
Ne. Ořezávání upravuje pouze hranice přehrávání. Původní bajty zvuku zůstávají nedotčeny a jsou přístupné přes vložený zvuk nebo audio kolekci prezentace.