Hantera ljud i presentationer med PHP
Översikt
Denna artikel förklarar hur man arbetar med ljudramar i Aspose.Slides. Den visar hur man lägger till inbäddat ljud i bilder, anpassar miniatyrbilden för ljudramen, konfigurerar uppspelningsalternativ såsom volym, loopning, dölja, trimning och toningsvaraktigheter, samt extraherar ljud som används i bildspelsövergångar.
Skapa ljudramar
Aspose.Slides för PHP via Java låter dig lägga till ljudfiler i bilder. Ljudfilerna inbäddas i bilder som ljudramar.
- Skapa en instans av klassen Presentation.
- Hämta en bilds referens via dess index.
- Läs in ljudfilströmmen du vill inbädda i bilden.
- Lägg till den inbäddade ljudramen (som innehåller ljudfilen) till bilden.
- Ställ in PlayMode och
Volumesom exponeras av objektet AudioFrame. - Spara den ändrade presentationen.
Denna PHP‑kod visar hur du lägger till en inbäddad ljudram till en bild:
// Instansierar en Presentation-klass som representerar en presentationsfil
$pres = new Presentation();
try {
# Hämtar den första bilden
$sld = $pres->getSlides()->get_Item(0);
# Laddar wav‑ljudfilen till en ström
$fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
# Lägger till ljudramen
$audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
$fstr->close();
# Ställer in uppspelningsläge och volym för ljudet
$audioFrame->setPlayMode(AudioPlayModePreset->Auto);
$audioFrame->setVolume(AudioVolumeMode->Loud);
# Skriver PowerPoint‑filen till disk
$pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
if (!java_is_null($pres)) $pres.dispose();
}
Ändra ljudramens miniatyrbild
När du lägger till en ljudfil i en presentation visas ljudet som en ram med en standardförvald bild (se bilden i avsnittet nedan). Du kan ändra ljudramens förhandsbild (ange din föredragna bild).
Denna PHP‑kod visar hur du ändrar en ljudramens miniatyrbild eller förhandsbild:
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
# Lägger till en ljudram på bilden med en angiven position och storlek.
$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
$audioStream->close();
# Lägger till en bild i presentationens resurser.
$picture;
$image = Images->fromFile("eagle.jpeg");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Ställer in bilden för ljudramen.
$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----
# Sparar den ändrade presentationen till disk
$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Ändra ljuduppspelningsalternativ
Aspose.Slides för PHP via Java låter dig ändra alternativ som styr ett ljuds uppspelning eller egenskaper. Till exempel kan du justera ett ljuds volym, ställa in ljudet att spelas i loop, eller till och med dölja ljudikonen.
The Audio Options pane in Microsoft PowerPoint:

PowerPoint Audio Options som motsvarar Aspose.Slides AudioFrame egenskaper:
- Start‑rullgardinslistan matchar metoden AudioFrame::setPlayMode.
- Volume matchar metoden AudioFrame::setVolume.
- Play Across Slides matchar metoden AudioFrame::setPlayAcrossSlides.
- Loop until Stopped matchar metoden AudioFrame::setPlayLoopMode.
- Hide During Show matchar metoden AudioFrame::setHideAtShowing.
- Rewind after Playing matchar metoden AudioFrame::setRewindAudio.
PowerPoint Editing‑alternativ som motsvarar Aspose.Slides AudioFrame egenskaper:
- Fade In matchar metoden AudioFrame::setFadeInDuration.
- Fade Out matchar metoden AudioFrame::setFadeOutDuration.
- Trim Audio Start Time matchar metoden AudioFrame::setTrimFromStart.
- Trim Audio End Time värdet är ljudets varaktighet minus värdet från metoden AudioFrame::setTrimFromEnd.
PowerPoint Volume control på ljudkontrollpanelen motsvarar metoden AudioFrame::setVolumeValue. Den låter dig ändra ljudvolymen i procent.
Så här ändrar du ljuduppspelningsalternativen:
- Skapa eller hämta ljudramen.
- Ställ in nya värden för de Audio Frame‑egenskaper du vill justera.
- Spara den ändrade PowerPoint‑filen.
Denna PHP‑kod demonstrerar en operation där ett ljuds alternativ justeras:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
# Hämtar AudioFrame-formen
$audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Ställer in uppspelningsläget till att spela vid klick
$audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
# Ställer in volymen till Låg
$audioFrame->setVolume(AudioVolumeMode->Low);
# Ställer in ljudet att spelas över bilder
$audioFrame->setPlayAcrossSlides(true);
# Inaktiverar loop för ljudet
$audioFrame->setPlayLoopMode(false);
# Döljer AudioFrame under bildspelet
$audioFrame->setHideAtShowing(true);
# Spolar tillbaka ljudet till start efter uppspelning
$audioFrame->setRewindAudio(true);
# Sparar PowerPoint-filen till disk
$pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Detta PHP‑exempel visar hur man lägger till en ny ljudram med inbäddat ljud, trimmar den och anger toningsvaraktigheterna:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$audioData = file_get_contents("sampleaudio.mp3");
$audio = $pres->getAudios()->addAudio($audioData);
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(50, 50, 100, 100, $audio);
// Ställer in trimnings startoffset till 1,5 sekunder
$audioFrame->setTrimFromStart(1500);
// Ställer in trimnings slutoffset till 2 sekunder
$audioFrame->setTrimFromEnd(2000);
// Ställer in fade-in varaktighet till 200 ms
$audioFrame->setFadeInDuration(200);
// Ställer in fade-out varaktighet till 500 ms
$audioFrame->setFadeOutDuration(500);
$pres->save("AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Följande kodexempel visar hur man hämtar en ljudram med inbäddat ljud och sätter dess volym till 85 %:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
$slide = $pres->getSlides()->get_Item(0);
// Hämtar en ljudramform
$audioFrame = $slide->getShapes()->get_Item(0);
// Ställer in ljudvolymen till 85%
$audioFrame->setVolumeValue(85);
$pres->save("AudioFrameValue_out.pptx", SaveFormat::Pptx);
}
finally {
$pres->dispose();
}
Hantera ljudtextning
Aspose.Slides låter dig lägga till stängda undertexter till en ljudram via metoden getCaptionTracks. Denna metod returnerar en CaptionsCollection, som låter dig lägga till WebVTT‑undertextspår, iterera genom befintliga spår och ta bort dem vid behov.
Lägg till ljudundertexter
Använd metoden getCaptionTracks för att bifoga ett eller flera undertextspår till en ljudram. I följande exempel läggs en ljudfil till en bild och sedan laddas ett nytt undertextspår från en .vtt‑fil.
$presentation = new Presentation();
try {
$audioData = file_get_contents("audio.mp3");
$audio = $presentation->getAudios()->addAudio($audioData);
$slide = $presentation->getSlides()->get_Item(0);
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(10, 10, 50, 50, $audio);
// Lägg till ett nytt undertextspår från en WebVTT-fil.
$audioFrame->getCaptionTracks()->add("New track", "track.vtt");
$presentation->save("audio_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Extrahera ljudundertexter
Du kan iterera genom de undertextspår som är kopplade till en ljudram och spara dem som .vtt‑filer. Varje undertextspår exponerar sina binära data och unika identifierare, vilka kan användas vid export av undertexter.
$presentation = new Presentation("audio_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shapeCount = java_values($slide->getShapes()->size());
for ($shapeIndex = 0; $shapeIndex < $shapeCount; $shapeIndex++) {
$shape = $slide->getShapes()->get_Item($shapeIndex);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AudioFrame"))) {
$audioFrame = $shape;
$trackCount = java_values($audioFrame->getCaptionTracks()->getCount());
for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
$captionTrack = $audioFrame->getCaptionTracks()->get_Item($trackIndex);
// Spara varje undertextspår som en .vtt-fil.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
Ta bort ljudundertexter
För att ta bort undertexter från en ljudram, använd metoderna som erbjuds av CaptionsCollection, såsom clear, remove eller removeAt. Följande exempel tar bort alla undertextspår från en ljudram.
$presentation = new Presentation($folderPath . "audio_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$audioFrame = $slide->getShapes()->get_Item(0); // typ: AudioFrame
// Ta bort alla undertextspår från ljudramen.
$audioFrame->getCaptionTracks()->clear();
$presentation->save($folderPath . "audio_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Extrahera ljud
Aspose.Slides för PHP via Java låter dig extrahera ljudet som används i bildspelsövergångar. Till exempel kan du extrahera ljudet som används i en specifik bild.
- Skapa en instans av klassen Presentation och ladda presentationen som innehåller ljudet.
- Hämta den relevanta bildens referens via dess index.
- Åtkomst till slideshow transitions för bilden.
- Extrahera ljudet som byte‑data.
Denna kod visar hur du extraherar ljudet som används i en bild:
# Instansierar en Presentation-klass som representerar en presentationsfil
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# Kommer åt den önskade bilden
$slide = $pres->getSlides()->get_Item(0);
# Hämtar bildspelsövergångseffekterna för bilden
$transition = $slide->getSlideShowTransition();
# Extraherar ljudet i en byte-array
$audio = $transition->getSound()->getBinaryData();
echo("Length: " . $Array->getLength($audio));
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Kan jag återanvända samma ljudresurs på flera bilder utan att öka filstorleken?
Ja. Lägg till ljudet en gång i presentationens delade audio collection och skapa ytterligare ljudramar som refererar till den befintliga resursen. Detta undviker duplicering av mediadata och håller presentationens storlek under kontroll.
Kan jag ersätta ljudet i en befintlig ljudram utan att återskapa formen?
Ja. För ett länkat ljud, uppdatera link path så att det pekar på den nya filen. För ett inbäddat ljud, byt ut objektet embedded audio mot ett annat från presentationens audio collection. Ramens formatering och de flesta uppspelningsinställningar förblir intakta.
Ändrar trimning den underliggande ljuddata som lagras i presentationen?
Nej. Trimning justerar endast uppspelningsgränserna. De ursprungliga ljudbytena förblir orörda och är tillgängliga via det inbäddade ljudet eller presentationens ljudsamling.