Gerenciar áudio em apresentações usando JavaScript

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

O Aspose.Slides para Node.js via Java permite adicionar arquivos de áudio aos slides. Os arquivos de áudio são incorporados aos slides como quadros de áudio.

  1. Crie uma instância da classe Presentation.
  2. Obtenha a referência de um slide através de seu índice.
  3. Carregue o fluxo do arquivo de áudio que deseja incorporar no slide.
  4. Adicione o quadro de áudio incorporado (contendo o arquivo de áudio) ao slide.
  5. Defina PlayMode e Volume expostos pelo objeto AudioFrame.
  6. Salve a apresentação modificada.
// Instancia uma classe Presentation que representa um arquivo de apresentação
const pres = new aspose.slides.Presentation();
try {
    // Obtém o primeiro slide
    const sld = pres.getSlides().get_Item(0);
    // Carrega o arquivo de som wav para stream
    const fstr = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "audio.wav"));
    // Adiciona o Quadro de Áudio
    const audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    // Define o modo de reprodução e o volume do áudio
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.Auto);
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Loud);
    // Grava o arquivo PowerPoint no disco
    pres.save("AudioFrameEmbed_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Alterar miniatura do quadro de áudio

Ao adicionar 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 imagem de visualização do quadro de áudio (defina sua imagem preferida).

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);
    // Adiciona um quadro de áudio ao slide com posição e tamanho especificados.
    const audioStream = java.newInstanceSync("java.io.FileInputStream", "sample2.mp3");
    const audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();
    // Adiciona uma imagem aos recursos da apresentação.
    let picture;
    const image = aspose.slides.Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) {
            image.dispose();
        }
    }
    // Define a imagem para o quadro de áudio.
    audioFrame.getPictureFormat().getPicture().setImage(picture);// <-----
    // Salva a apresentação modificada no disco
    presentation.save("example_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

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

O Aspose.Slides para Node.js via Java 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 o áudio para reprodução em loop ou até ocultar o ícone de áudio.

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

exemplo1_imagem

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

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

O controle de volume do PowerPoint no painel de controle de áudio corresponde ao método AudioFrame.setVolumeValue. Ele permite alterar o volume do áudio em porcentagem.

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

  1. Crie ou obtenha o Quadro de Áudio.
  2. Defina novos valores para as propriedades do Quadro de Áudio que deseja ajustar.
  3. Salve o arquivo PowerPoint modificado.
const pres = new aspose.slides.Presentation("AudioFrameEmbed_out.pptx");
try {
    // Obtém a forma AudioFrame
    const audioFrame = pres.getSlides().get_Item(0).getShapes().get_Item(0);
    // Define o modo de reprodução para reproduzir ao clicar
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.OnClick);
    // Define o volume como Baixo
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Low);
    // Define o áudio para reproduzir em todos os slides
    audioFrame.setPlayAcrossSlides(true);
    // Desativa o loop para o áudio
    audioFrame.setPlayLoopMode(false);
    // Oculta o AudioFrame durante a apresentação
    audioFrame.setHideAtShowing(true);
    // Rebobina o áudio para o início após a reprodução
    audioFrame.setRewindAudio(true);
    // Salva o arquivo PowerPoint no disco
    pres.save("AudioFrameEmbed_changed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

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

const pres = new aspose.slides.Presentation();
try {
    const slide = pres.getSlides().get_Item(0);
    
    const audioData = java.newArray("byte", Array.from(fs.readFileSync("sampleaudio.mp3")));
    const audio = pres.getAudios().addAudio(audioData);
    const audioFrame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio);

    // Define o deslocamento de início do corte para 1,5 segundos
    audioFrame.setTrimFromStart(1500);
    // Define o deslocamento de fim do corte para 2 segundos
    audioFrame.setTrimFromEnd(2000);

    // Define a duração do fade-in para 200 ms
    audioFrame.setFadeInDuration(200);
    // Define a duração do fade-out para 500 ms
    audioFrame.setFadeOutDuration(500);

    pres.save("AudioFrameTrimFade_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    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%:

const pres = new aspose.slides.Presentation("AudioFrameEmbed_out.pptx");
try {
    const slide = pres.getSlides().get_Item(0);

    // Obtém uma forma de quadro de áudio
    const audioFrame = slide.getShapes().get_Item(0);

    // Define o volume do áudio para 85%
    audioFrame.setVolumeValue(85.0);

    pres.save("AudioFrameValue_out.pptx", aspose.slides.SaveFormat.Pptx);
}
finally {
    pres.dispose();
}

Gerenciar legendas de áudio

O Aspose.Slides permite adicionar legendas fechadas a um quadro de áudio através do método getCaptionTracks. Esse método retorna uma CaptionsCollection, 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 getCaptionTracks 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 de um arquivo .vtt.

let presentation = new aspose.slides.Presentation();
try {
    let audioStream = java.newInstanceSync("java.io.FileInputStream", "audio.mp3");
    let audio = presentation.getAudios().addAudio(audioStream);
    audioStream.close();

    let slide = presentation.getSlides().get_Item(0);
    let audioFrame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio);

    // Adicionar uma nova faixa de legenda a partir de um arquivo WebVTT.
    presentation.save("audio_with_captions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    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.

let presentation = new aspose.slides.Presentation("audio_with_captions.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let shapeCount = slide.getShapes().size();
    for (let shapeIndex = 0; shapeIndex < shapeCount; shapeIndex++) {
        let shape = slide.getShapes().get_Item(shapeIndex);
        if (java.instanceOf(shape, "com.aspose.slides.AudioFrame")) {
            let audioFrame = shape;
            let trackCount = audioFrame.getCaptionTracks().getCount();
            for (let trackIndex = 0; trackIndex < trackCount; trackIndex++) {
                let captionTrack = audioFrame.getCaptionTracks().get_Item(trackIndex);
                // Salvar a faixa de legenda como um arquivo .vtt.
                let filePath = captionTrack.getCaptionId() + ".vtt";
                let captionData = Buffer.from(captionTrack.getBinaryData());
                fs.writeFileSync(filePath, captionData);
            }
        }
    }
} finally {
    presentation.dispose();
}

Remover legendas de áudio

Para remover legendas de um quadro de áudio, use os métodos fornecidos pela CaptionsCollection, como clear, remove ou removeAt. O exemplo a seguir remove todas as faixas de legenda de um quadro de áudio.

let presentation = new aspose.slides.Presentation("audio_with_captions.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let audioFrame = slide.getShapes().get_Item(0); // tipo: aspose.slides.AudioFrame

    // Remover todas as faixas de legenda do quadro de áudio.
    audioFrame.getCaptionTracks().clear();

    presentation.save("audio_without_captions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Extrair áudio

O Aspose.Slides para Node.js via Java permite extrair o som usado nas transições de apresentação 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 de seu índice.
  3. Acesse as transições de apresentação de slides do slide.
  4. Extraia o som em dados binários.
// Instancia uma classe Presentation que representa um arquivo de apresentação
const pres = new aspose.slides.Presentation("AudioSlide.pptx");
try {
    // Acessa o slide desejado
    const slide = pres.getSlides().get_Item(0);
    // Obtém os efeitos de transição da apresentação de slides para o slide
    const transition = slide.getSlideShowTransition();
    // Extrai o som em um array de bytes
    const audio = transition.getSound().getBinaryData();
    console.log("Length: " + audio.length);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Perguntas frequentes

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

Sim. Adicione o áudio uma única vez à coleção de áudio compartilhada da apresentação e crie quadros de áudio adicionais que façam referência a esse recurso existente. Isso evita duplicação de 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 caminho do link para apontar para o novo arquivo. Para um som incorporado, troque o objeto áudio incorporado 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 corte altera os dados de áudio subjacentes armazenados na apresentação?

Não. O corte 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.