Gerenciar quadros de áudio em apresentações no .NET

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, reprodução em loop, 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 for .NET permite que você adicione arquivos de áudio aos slides. Os arquivos de áudio são incorporados nos slides como quadros de áudio.

  1. Crie uma instância da classe Presentation class.
  2. Obtenha a referência de um slide através do seu índice.
  3. Carregue o fluxo do arquivo de áudio que você deseja incorporar no slide.
  4. Adicione o quadro de áudio incorporado (contendo o arquivo de áudio) ao slide.
  5. Defina o PlayMode e Volume expostos pelo objeto IAudioFrame.
  6. Salve a apresentação modificada.

Este código C# mostra como adicionar um quadro de áudio incorporado a um slide:

 // Instancia uma classe de apresentação que representa um arquivo de apresentação
using (Presentation pres = new Presentation())
{
    // Obtém o primeiro slide
    ISlide sld = pres.Slides[0];
    
    // Carrega o arquivo de som wav para o fluxo
    FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);

    // Adiciona o Quadro de Áudio
    IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);

    // Define o Modo de Reprodução e o Volume do Áudio
    audioFrame.PlayMode = AudioPlayModePreset.Auto;
    audioFrame.Volume = AudioVolumeMode.Loud;

    // Grava o arquivo PowerPoint no disco
    pres.Save("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 padrão (veja a imagem na seção abaixo). Você pode mudar a miniatura do quadro de áudio (definir sua imagem preferida).

Este código C# mostra como alterar a miniatura ou a imagem de visualização de um quadro de áudio:

using (var presentation = new Presentation())
{
    var slide = presentation.Slides[0];

    // Adiciona um quadro de áudio ao slide com posição e tamanho especificados.
    var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
    var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.Dispose();

    // Adiciona uma imagem aos recursos da apresentação.
    var imageStream = File.OpenRead("eagle.jpeg");
    var audioImage = presentation.Images.AddImage(imageStream);
    imageStream.Dispose();

    // Define a imagem para o quadro de áudio.
    audioFrame.PictureFormat.Picture.Image = audioImage; // <-----

	//Salva a apresentação modificada no disco
    presentation.Save("example_out.pptx", SaveFormat.Pptx);
}

Alterar opções de reprodução de áudio

Aspose.Slides for .NET permite que você altere opções que controlam a reprodução ou propriedades de um áudio. Por exemplo, você pode ajustar o volume de um áudio, definir a reprodução em loop ou até ocultar o ícone de áudio.

O painel Opções de áudio no Microsoft PowerPoint:

example1_image

Opções de Áudio do PowerPoint que correspondem às propriedades Aspose.Slides AudioFrame:

Opções de Edição do PowerPoint que correspondem às propriedades Aspose.Slides AudioFrame:

O controle de volume do PowerPoint no painel de controle de áudio corresponde à propriedade AudioFrame.VolumeValue . Ele permite alterar o volume do áudio como porcentagem.

É assim que você altera as opções de reprodução de áudio:

  1. Сreate ou obtenha o Quadro de Áudio.
  2. Defina novos valores para as propriedades do Quadro de Áudio que você deseja ajustar.
  3. Salve o arquivo PowerPoint modificado.

Este código C# demonstra uma operação na qual as opções de um áudio são ajustadas:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Obtém a forma AudioFrame
    AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];

    // Define o modo de reprodução para tocar ao clicar
    audioFrame.PlayMode = AudioPlayModePreset.OnClick;

    // Define o volume para Baixo
    audioFrame.Volume = AudioVolumeMode.Low;

    // Define o áudio para reproduzir nos slides
    audioFrame.PlayAcrossSlides = true;

    // Desabilita o loop para o áudio
    audioFrame.PlayLoopMode = false;

    // Oculta o AudioFrame durante a apresentação de slides
    audioFrame.HideAtShowing = true;

    // Retrocede o áudio ao início após a reprodução
    audioFrame.RewindAudio = true;

    // Salva o arquivo PowerPoint no disco
    pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}

Este exemplo C# mostra como adicionar um novo quadro de áudio com áudio incorporado, cortá‑lo e definir as durações de fade:

using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides[0];

    byte[] audioData = File.ReadAllBytes("sampleaudio.mp3");
    IAudio audio = pres.Audios.AddAudio(audioData);
    IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(50, 50, 100, 100, audio);

    // Define o deslocamento inicial de corte para 1,5 segundos
    audioFrame.TrimFromStart = 1500f;
    // Define o deslocamento final de corte para 2 segundos
    audioFrame.TrimFromEnd = 2000f;

    // Define a duração do fade-in para 200 ms
    audioFrame.FadeInDuration = 200f;
    // Define a duração do fade-out para 500 ms
    audioFrame.FadeOutDuration = 500f;

    pres.Save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
}

O código a seguir mostra como recuperar um quadro de áudio incorporado e definir seu volume para 85 %:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Obtém uma forma de quadro de áudio
    IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];

    // Define o volume do áudio para 85%
    audioFrame.VolumeValue = 85f;
    
    pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}

Gerenciar legendas de áudio

Aspose.Slides permite que você adicione legendas fechadas a um quadro de áudio por meio da propriedade CaptionTracks . Essa propriedade devolve um ICaptionsCollection , que permite adicionar faixas de legenda WebVTT, percorrer faixas existentes e removê‑las quando necessário.

Adicionar legendas de áudio

Use a propriedade 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.

using (Presentation presentation = new Presentation())
{
    byte[] audioData = File.ReadAllBytes("audio.mp3");
    IAudio audio = presentation.Audios.AddAudio(audioData);

    ISlide slide = presentation.Slides[0];
    IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(10, 10, 50, 50, audio);

    // Adiciona uma nova faixa de legenda a partir de um arquivo WebVTT.
    presentation.Save("audio_with_captions.pptx", SaveFormat.Pptx);
}

Extrair legendas de áudio

Você pode percorrer as 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.

using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    foreach (IShape shape in slide.Shapes)
    {
        if (shape is IAudioFrame audioFrame)
        {
            foreach (ICaptions captionTrack in audioFrame.CaptionTracks)
            {
                // Salve a faixa de legenda como um arquivo .vtt.
                File.WriteAllBytes($"{captionTrack.CaptionId}.vtt", captionTrack.BinaryData);
            }
        }
    }
}

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.

using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IAudioFrame audioFrame = slide.Shapes[0] as IAudioFrame;

    // Remove todas as faixas de legenda do quadro de áudio.
    audioFrame.CaptionTracks.Clear();

    presentation.Save("audio_without_captions.pptx", SaveFormat.Pptx);
}

Extrair áudio

Aspose.Slides for .NET permite que você extraia o som usado nas transições de apresentações de slides. Por exemplo, você pode extrair o som usado em um slide específico.

  1. Crie uma instância da classe Presentation e carregue a apresentação que contém o áudio.
  2. Obtenha a referência do slide relevante através do seu índice.
  3. Acesse as transições da apresentação de slides para o slide.
  4. Extraia o som em dados de bytes.

Este código C# mostra como extrair o áudio usado em um slide:

string presName = "AudioSlide.pptx";

// Instancia uma classe Presentation que representa um arquivo de apresentação
Presentation pres = new Presentation(presName);

// Acessa o slide
ISlide slide = pres.Slides[0];

// Obtém os efeitos de transição de apresentação de slides para o slide
ISlideShowTransition transition = slide.SlideShowTransition;

//Extrai o som em um array de bytes
byte[] audio = transition.Sound.BinaryData;

System.Console.WriteLine("Length: " + audio.Length);

FAQ

Posso reutilizar o mesmo recurso de áudio em vários slides sem inflar o tamanho do arquivo?

Sim. Adicione o áudio uma vez à audio collection 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 audio collection da apresentação. A formatação do quadro e a maioria das configurações de reprodução permanecem intactas.

A edição altera os dados de áudio subjacentes armazenados na apresentação?

Não. O trim ajusta apenas os limites de reprodução. Os bytes originais do áudio permanecem intactos e acessíveis através do áudio incorporado ou da coleção de áudio da apresentação.