Gerenciar áudio em apresentações usando C++
Visão geral
Este artigo explica como trabalhar com quadros de áudio no Aspose.Slides. Ele mostra como adicionar áudio incorporado aos slides, personalizar a miniatura do quadro de áudio, configurar opções de reprodução como volume, repetição, ocultação, corte e durações de fade, e extrair o áudio usado nas transições de apresentação de slides.
Criar quadros de áudio
Aspose.Slides para C++ permite adicionar arquivos de áudio aos slides. Os arquivos de áudio são incorporados nos slides como quadros de áudio.
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide por meio do seu índice.
- Carregue o fluxo do arquivo de áudio que você deseja incorporar no slide.
- Adicione o quadro de áudio incorporado (contendo o arquivo de áudio) ao slide.
- Defina PlayMode e
Volumeexpostos pelo objeto IAudioFrame. - Salve a apresentação modificada.
Este código C++ mostra como adicionar um quadro de áudio incorporado a um slide:
// Instancia uma classe Presentation que representa um arquivo de apresentação
auto pres = System::MakeObject<Presentation>();
// Obtém o primeiro slide
auto sld = pres->get_Slides()->idx_get(0);
// Carrega o arquivo de áudio wav para o stream
auto fstr = System::MakeObject<FileStream>(u"sampleaudio.wav", FileMode::Open, FileAccess::Read);
// Adiciona o Quadro de Áudio
auto audioFrame = sld->get_Shapes()->AddAudioFrameEmbedded(50.0f, 150.0f, 100.0f, 100.0f, fstr);
// Define o modo de reprodução e o volume do áudio
audioFrame->set_PlayMode(AudioPlayModePreset::Auto);
audioFrame->set_Volume(AudioVolumeMode::Loud);
// Grava o arquivo PowerPoint no disco
pres->Save(u"AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
Alterar a miniatura do quadro de áudio
Quando você adiciona um arquivo de áudio a uma apresentação, o áudio aparece como um quadro com uma imagem padrão (veja a imagem na seção abaixo). Você pode alterar a miniatura do quadro de áudio (definir a imagem de sua preferência).
Este código C++ mostra como alterar a miniatura ou a imagem de visualização de um quadro de áudio:
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slides()->idx_get(0);
// Adiciona um quadro de áudio ao slide com posição e tamanho especificados.
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);
// Adiciona uma imagem aos recursos da apresentação.
auto imageStream = System::IO::File::OpenRead(u"eagle.jpeg");
auto audioImage = presentation->get_Images()->AddImage(imageStream);
// Define a imagem para o quadro de áudio.
audioFrame->get_PictureFormat()->get_Picture()->set_Image(audioImage); // <-----
//Salva a apresentação modificada no disco
presentation->Save(u"example_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
Alterar opções de reprodução de áudio
Aspose.Slides para C++ permite alterar opções que controlam a reprodução ou propriedades de um áudio. Por exemplo, você pode ajustar o volume de um áudio, definir que o áudio seja reproduzido em loop ou até ocultar o ícone do áudio.
The Audio Options pane in Microsoft PowerPoint:

PowerPoint Audio Options that correspond to Aspose.Slides AudioFrame methods:
- Start drop-down list matches the AudioFrame::set_PlayMode method
- Volume matches the AudioFrame::set_Volume method
- Play Across Slides matches the AudioFrame::set_PlayAcrossSlides method
- Loop until Stopped matches the AudioFrame::set_PlayLoopMode method
- Hide During Show matches the AudioFrame::set_HideAtShowing method
- Rewind after Playing matches the AudioFrame::set_RewindAudio method
PowerPoint Editing options that correspond to Aspose.Slides AudioFrame properties:
- Fade In matches the AudioFrame.set_FadeInDuration method
- Fade Out matches the AudioFrame.set_FadeOutDuration method
- Trim Audio Start Time matches the AudioFrame.set_TrimFromStart method
- Trim Audio End Time value equals the audio duration minus the value of AudioFrame.set_TrimFromEnd method
The PowerPoint Volume controll on the audio control panel corresponds to the AudioFrame.set_VolumeValue method. It lets you change the audio volume as a percentage.
Veja como alterar as opções de reprodução de áudio:
- Crie ou obtenha o Quadro de Áudio.
- Defina novos valores para as propriedades do quadro de áudio que você deseja ajustar.
- Salve o arquivo PowerPoint modificado.
Este código C++ demonstra uma operação na qual as opções de um áudio são ajustadas:
auto pres = System::MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");
// Obtém uma forma
auto shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0);
// Converte a forma para um AudioFrame
auto audioFrame = System::ExplicitCast<AudioFrame>(shape);
// Define o modo de reprodução para tocar ao clicar
audioFrame->set_PlayMode(AudioPlayModePreset::OnClick);
// Define o volume como Baixo
audioFrame->set_Volume(AudioVolumeMode::Low);
// Define que o áudio será reproduzido em todos os slides
audioFrame->set_PlayAcrossSlides(true);
// Desabilita o loop para o áudio
audioFrame->set_PlayLoopMode(false);
// Oculta o AudioFrame durante a apresentação
audioFrame->set_HideAtShowing(true);
// Rebobina o áudio para o início após a reprodução
audioFrame->set_RewindAudio(true);
// Salva o arquivo PowerPoint no disco
pres->Save(u"AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
Este exemplo C++ mostra como adicionar um novo quadro de áudio com áudio incorporado, recortá‑lo e definir as durações de fade:
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);
// Define o deslocamento de início do corte para 1,5 segundos
audioFrame->set_TrimFromStart(1500);
// Define o deslocamento de fim do corte para 2 segundos
audioFrame->set_TrimFromEnd(2000);
// Define a duração do fade-in para 200 ms
audioFrame->set_FadeInDuration(200);
// Define a duração do fade-out para 500 ms
audioFrame->set_FadeOutDuration(500);
pres->Save(u"AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
pres->Dispose();
O exemplo de código a seguir mostra como recuperar um quadro de áudio com áudio incorporado e definir seu volume para 85%:
auto pres = MakeObject<Presentation>(u"AudioFrameEmbed_out.pptx");
// Obtém uma forma de quadro de áudio
auto audioFrame = ExplicitCast<IAudioFrame>(pres->get_Slide(0)->get_Shape(0));
// Define o volume do áudio para 85%
audioFrame->set_VolumeValue(85);
pres->Save(u"AudioFrameValue_out.pptx", SaveFormat::Pptx);
pres->Dispose();
Gerenciar legendas de áudio
Aspose.Slides permite adicionar legendas fechadas a um quadro de áudio através do método get_CaptionTracks. Esse método retorna um ICaptionsCollection, que permite adicionar faixas de legenda WebVTT, iterar pelas faixas existentes e removê‑las quando necessário.
Adicionar legendas de áudio
Use o método get_CaptionTracks para anexar uma ou mais faixas de legenda a um quadro de áudio. No exemplo a seguir, um arquivo de áudio é adicionado a um slide e, em seguida, uma nova faixa de legenda é carregada a partir de um arquivo .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);
// Adiciona uma nova faixa de legenda a partir de um arquivo WebVTT.
audioFrame->get_CaptionTracks()->Add(u"New track", u"track.vtt");
presentation->Save(u"audio_with_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();
Extrair legendas de áudio
Você pode iterar pelas faixas de legenda associadas a um quadro de áudio e salvá‑las como arquivos .vtt. Cada faixa de legenda expõe seus dados binários e identificador exclusivo, que podem ser usados ao exportar legendas.
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())
{
// Salvar cada faixa de legenda como um arquivo .vtt.
auto fileName = captionTrack->get_CaptionId().ToString() + u".vtt";
File::WriteAllBytes(fileName, captionTrack->get_BinaryData());
}
}
}
presentation->Dispose();
Remover legendas de áudio
Para remover legendas de um quadro de áudio, use os métodos fornecidos por ICaptionsCollection, como Clear, Remove, ou RemoveAt. O exemplo a seguir remove todas as faixas de legenda de um quadro de áudio.
auto presentation = MakeObject<Presentation>(u"audio_with_captions.pptx");
auto slide = presentation->get_Slide(0);
auto audioFrame = ExplicitCast<IAudioFrame>(slide->get_Shape(0));
// Remover todas as faixas de legenda do quadro de áudio.
audioFrame->get_CaptionTracks()->Clear();
presentation->Save(u"audio_without_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();
Extrair áudio
Aspose.Slides permite extrair o som usado nas transições da apresentação de slides. Por exemplo, você pode extrair o som usado em um slide específico.
- Crie uma instância da classe Presentation e carregue a apresentação que contém o áudio.
- Obtenha a referência do slide relevante por meio do seu índice.
- Acesse as transições de apresentação de slides para o slide.
- Extraia o som em dados binários.
Este código C++ mostra como extrair o áudio usado em um slide:
String presName = u"AudioSlide.pptx";
// Instancia uma classe Presentation que representa um arquivo de apresentação
auto pres = System::MakeObject<Presentation>(presName);
// Acessa o slide desejado
auto slide = pres->get_Slides()->idx_get(0);
// Obtém os efeitos de transição de apresentação de slides para o slide
auto transition = slide->get_SlideShowTransition();
// Extrai o som em um array de bytes
auto audio = transition->get_Sound()->get_BinaryData();
Console::WriteLine(String(u"Length: ") + audio->get_Length());
FAQ
Posso reutilizar o mesmo recurso de áudio em vários slides sem aumentar o tamanho do arquivo?
Sim. Adicione o áudio uma vez à coleção de áudio compartilhada da apresentação e crie quadros de áudio adicionais que referenciem esse recurso existente. Isso evita duplicar os dados de mídia e mantém o tamanho da apresentação sob controle.
Posso substituir o som em um quadro de áudio existente sem recriar a forma?
Sim. Para um som vinculado, atualize o link path para apontar para o novo arquivo. Para um som incorporado, troque o objeto embedded audio por outro da coleção de áudio da apresentação. A formatação do quadro e a maioria das configurações de reprodução permanecem intactas.
O recorte altera os dados de áudio subjacentes armazenados na apresentação?
Não. O recorte ajusta apenas os limites de reprodução. Os bytes originais do áudio permanecem inalterados e acessíveis através do áudio incorporado ou da coleção de áudio da apresentação.