Audio beheren in presentaties met JavaScript

Overzicht

Dit artikel legt uit hoe u met audio‑frames werkt in Aspose.Slides. Het laat zien hoe u ingesloten audio aan dia’s kunt toevoegen, de miniatuur van het audioframe kunt aanpassen, afspeelopties zoals volume, loopen, verbergen, trimmen en fade‑duur kunt configureren, en audio kunt extraheren die in diavoorstellingstransities wordt gebruikt.

Audioframes maken

Aspose.Slides voor Node.js via Java stelt u in staat om audiobestanden aan dia’s toe te voegen. De audiobestanden worden in de dia’s ingebed als audio‑frames.

  1. Maak een instantie van de Presentation klasse.
  2. Haal een referentie naar een dia op via de index.
  3. Laad de audiobestandsstroom die u in de dia wilt insluiten.
  4. Voeg het ingesloten audioframe (dat het audiobestand bevat) toe aan de dia.
  5. Stel PlayMode en Volume in die worden aangeboden door het AudioFrame object.
  6. Sla de gewijzigde presentatie op.

Deze JavaScript‑code laat zien hoe u een ingesloten audioframe aan een dia toevoegt:

// Instantieert een Presentation‑klasse die een presentatiebestand vertegenwoordigt
const pres = new aspose.slides.Presentation();
try {
    // Haal de eerste dia op
    const sld = pres.getSlides().get_Item(0);
    // Laadt het .wav‑geluidsbestand naar een stream
    const fstr = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "audio.wav"));
    // Voegt het audio‑frame toe
    const audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    // Stelt de afspeelmodus en het volume van de audio in
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.Auto);
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Loud);
    // Schrijft het PowerPoint‑bestand naar de schijf
    pres.save("AudioFrameEmbed_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Audioframe‑miniatuur wijzigen

Wanneer u een audiobestand aan een presentatie toevoegt, verschijnt de audio als een frame met een standaardafbeelding (zie de afbeelding in de onderstaande sectie). U kunt de voorbeeldafbeelding van het audioframe wijzigen (stel uw voorkeursafbeelding in).

Deze JavaScript‑code laat zien hoe u de miniatuur of voorbeeldafbeelding van een audioframe wijzigt:

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);
    // Voegt een audioframe toe aan de dia met een opgegeven positie en grootte.
    const audioStream = java.newInstanceSync("java.io.FileInputStream", "sample2.mp3");
    const audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();
    // Voegt een afbeelding toe aan de presentatieresources.
    let picture;
    const image = aspose.slides.Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) {
            image.dispose();
        }
    }
    // Stelt de afbeelding in voor het audioframe.
    audioFrame.getPictureFormat().getPicture().setImage(picture);// <-----
    // Slaat de gewijzigde presentatie op schijf
    presentation.save("example_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

Audio‑afspeelopties wijzigen

Aspose.Slides voor Node.js via Java stelt u in staat om opties te wijzigen die de weergave of eigenschappen van audio regelen. U kunt bijvoorbeeld het volume van audio aanpassen, de audio in een lus laten afspelen, of zelfs het audio‑icoon verbergen.

Het Audio Options‑paneel in Microsoft PowerPoint:

example1_image

PowerPoint Audio Options die overeenkomen met de AudioFrame‑eigenschappen van Aspose.Slides:

PowerPoint Editing‑opties die overeenkomen met de AudioFrame‑eigenschappen van Aspose.Slides:

De PowerPoint Volume controll op het audio‑bedieningspaneel komt overeen met de AudioFrame.setVolumeValue methode. Hiermee kunt u het audiovolume als percentage wijzigen.

Zo wijzigt u de audio‑afspeelopties:

  1. Maak of haal het Audio‑frame op.
  2. Stel nieuwe waarden in voor de Audio‑frame‑eigenschappen die u wilt aanpassen.
  3. Sla het gewijzigde PowerPoint‑bestand op.

Deze JavaScript‑code toont een bewerking waarbij de opties van een audio worden aangepast:

const pres = new aspose.slides.Presentation("AudioFrameEmbed_out.pptx");
try {
    // Haalt de AudioFrame‑vorm op
    const audioFrame = pres.getSlides().get_Item(0).getShapes().get_Item(0);
    // Stelt de afspeelmodus in op afspelen bij klikken
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.OnClick);
    // Stelt het volume in op Laag
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Low);
    // Stelt de audio in om over dia's heen af te spelen
    audioFrame.setPlayAcrossSlides(true);
    // Schakelt het loopen van de audio uit
    audioFrame.setPlayLoopMode(false);
    // Verbergt de AudioFrame tijdens de diavoorstelling
    audioFrame.setHideAtShowing(true);
    // Spoelt de audio terug naar het begin na het afspelen
    audioFrame.setRewindAudio(true);
    // Slaat het PowerPoint‑bestand op schijf
    pres.save("AudioFrameEmbed_changed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Dit JavaScript‑voorbeeld laat zien hoe u een nieuw audioframe met ingesloten audio toevoegt, het bijsnijdt, en de fade‑duur instelt:

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);

    // Stelt de trim‑begin offset in op 1.5 seconden
    audioFrame.setTrimFromStart(1500);
    // Stelt de trim‑eind offset in op 2 seconden
    audioFrame.setTrimFromEnd(2000);

    // Stelt de fade‑in duur in op 200 ms
    audioFrame.setFadeInDuration(200);
    // Stelt de fade‑out duur in op 500 ms
    audioFrame.setFadeOutDuration(500);

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

De volgende codevoorbeeld toont hoe u een audioframe met ingesloten audio ophaalt en het volume instelt op 85 %:

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

    // Haalt een audioframe-vorm op
    const audioFrame = slide.getShapes().get_Item(0);

    // Stelt het audio-volume in op 85%
    audioFrame.setVolumeValue(85.0);

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

Audio‑bijschriften beheren

Aspose.Slides maakt het mogelijk om ondertitelingen toe te voegen aan een audioframe via de getCaptionTracks methode. Deze methode retourneert een CaptionsCollection, waarmee u WebVTT‑ondertitel‑tracks kunt toevoegen, door bestaande tracks kunt itereren, en ze indien nodig kunt verwijderen.

Audio‑bijschriften toevoegen

Gebruik de getCaptionTracks methode om één of meerdere ondertitel‑tracks aan een audioframe toe te voegen. In het volgende voorbeeld wordt een audiobestand aan een dia toegevoegd, waarna een nieuwe ondertitel‑track wordt geladen uit een .vtt‑bestand.

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);

    // Voeg een nieuw ondertitel‑track toe vanuit een WebVTT‑bestand.
    audioFrame.getCaptionTracks().add("New track", "track.vtt");

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

Audio‑bijschriften extraheren

U kunt door de ondertitel‑tracks die aan een audioframe gekoppeld zijn itereren en ze opslaan als .vtt‑bestanden. Elke ondertitel‑track geeft zijn binaire gegevens en unieke identifier vrij, die gebruikt kan worden bij het exporteren van ondertitels.

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);
                // Sla het ondertitel‑track op als een .vtt‑bestand.
                let filePath = captionTrack.getCaptionId() + ".vtt";
                let captionData = Buffer.from(captionTrack.getBinaryData());
                fs.writeFileSync(filePath, captionData);
            }
        }
    }
} finally {
    presentation.dispose();
}

Audio‑bijschriften verwijderen

Om ondertitels van een audioframe te verwijderen, gebruikt u de methoden die worden aangeboden door CaptionsCollection, zoals clear, remove, of removeAt. Het volgende voorbeeld verwijdert alle ondertitel‑tracks van een audioframe.

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); // type: aspose.slides.AudioFrame

    // Verwijder alle ondertitel-tracks van het audioframe.
    audioFrame.getCaptionTracks().clear();

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

Audio extraheren

Aspose.Slides voor Node.js via Java maakt het mogelijk om het geluid dat wordt gebruikt in diavoorstelling‑overgangen te extraheren. Bijvoorbeeld, u kunt het geluid van een specifieke dia extraheren.

  1. Maak een instantie van de Presentation klasse en laad de presentatie die de audio bevat.
  2. Haal de referentie van de betreffende dia op via de index.
  3. Benader de slideshow transitions voor de dia.
  4. Extraheer het geluid als byte‑gegevens.

Deze JavaScript‑code laat zien hoe u de audio die in een dia wordt gebruikt, kunt extraheren:

// Instantieert een Presentation‑klasse die een presentatiebestand vertegenwoordigt
const pres = new aspose.slides.Presentation("AudioSlide.pptx");
try {
    // Benadert de gewenste dia
    const slide = pres.getSlides().get_Item(0);
    // Haalt de diavoorstellings‑overgangseffecten voor de dia op
    const transition = slide.getSlideShowTransition();
    // Extraheert het geluid als byte‑array
    const audio = transition.getSound().getBinaryData();
    console.log("Length: " + audio.length);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

FAQ

Kan ik dezelfde audio‑resource hergebruiken in meerdere dia’s zonder de bestandsgrootte te laten toenemen?

Ja. Voeg de audio één keer toe aan de gedeelde audio collection van de presentatie en maak extra audioframes die naar dat bestaande asset verwijzen. Dit voorkomt het dupliceren van mediagegevens en houdt de bestandsgrootte van de presentatie onder controle.

Kan ik het geluid in een bestaand audioframe vervangen zonder de vorm opnieuw te maken?

Ja. Voor een gekoppeld geluid werkt u het link path bij zodat het naar het nieuwe bestand wijst. Voor een ingebed geluid vervangt u het embedded audio object door een ander uit de audio collection van de presentatie. De opmaak van het frame en de meeste afspeelinstellingen blijven behouden.

Verandert trimmen de onderliggende audiogegevens die in de presentatie zijn opgeslagen?

Nee. Trimmen past alleen de afspeelgrenzen aan. De oorspronkelijke audiobytes blijven onaangeroerd en zijn toegankelijk via de ingebedde audio of de audio‑collectie van de presentatie.