Zarządzanie dźwiękiem w prezentacjach przy użyciu PHP
Przegląd
Ten artykuł wyjaśnia, jak pracować z ramkami audio w Aspose.Slides. Pokazuje, jak dodać osadzony dźwięk do slajdów, dostosować miniaturę ramki audio, skonfigurować opcje odtwarzania, takie jak głośność, pętla, ukrywanie, przycinanie i czasy zanikania, oraz wyodrębnić dźwięk używany w przejściach pokazu slajdów.
Tworzenie ramek audio
Aspose.Slides for PHP via Java umożliwia dodawanie plików audio do slajdów. Pliki audio są osadzane w slajdach jako ramki audio.
- Utwórz instancję klasy Presentation.
- Uzyskaj odniesienie do slajdu poprzez jego indeks.
- Wczytaj strumień pliku audio, który chcesz osadzić w slajdzie.
- Dodaj osadzoną ramkę audio (zawierającą plik audio) do slajdu.
- Ustaw PlayMode i
Volumeudostępniane przez obiekt AudioFrame. - Zapisz zmodyfikowaną prezentację.
Ten kod PHP pokazuje, jak dodać osadzoną ramkę audio do slajdu:
// Tworzy instancję klasy Presentation, która reprezentuje plik prezentacji
$pres = new Presentation();
try {
# Pobiera pierwszy slajd
$sld = $pres->getSlides()->get_Item(0);
# Wczytuje plik dźwiękowy wav do strumienia
$fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
# Dodaje ramkę audio
$audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
$fstr->close();
# Ustawia tryb odtwarzania i głośność audio
$audioFrame->setPlayMode(AudioPlayModePreset->Auto);
$audioFrame->setVolume(AudioVolumeMode->Loud);
# Zapisuje plik PowerPoint na dysku
$pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
if (!java_is_null($pres)) $pres.dispose();
}
Zmiana miniatury ramki audio
Po dodaniu pliku audio do prezentacji, audio wyświetlane jest jako ramka z domyślnym standardowym obrazem (zobacz obraz w poniższej sekcji). Możesz zmienić podgląd obrazu ramki audio (ustawić wybrany obraz).
Ten kod PHP pokazuje, jak zmienić miniaturę lub podgląd obrazu ramki audio:
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
# Dodaje ramkę audio do slajdu w określonej pozycji i rozmiarze.
$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
$audioStream->close();
# Dodaje obraz do zasobów prezentacji.
$picture;
$image = Images->fromFile("eagle.jpeg");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Ustawia obraz dla ramki audio.
$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----
# Zapisuje zmodyfikowaną prezentację na dysku
$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Zmiana opcji odtwarzania audio
Aspose.Slides for PHP via Java umożliwia zmianę ustawień kontrolujących odtwarzanie lub właściwości dźwięku. Na przykład możesz dostosować głośność audio, ustawić odtwarzanie w pętli lub ukryć ikonę audio.
Panel Opcje audio w programie Microsoft PowerPoint:

PowerPoint Opcje audio, które odpowiadają właściwościom Aspose.Slides AudioFrame :
- Start lista rozwijana odpowiada metodzie AudioFrame::setPlayMode
- Volume odpowiada metodzie AudioFrame::setVolume
- Play Across Slides odpowiada metodzie AudioFrame::setPlayAcrossSlides
- Loop until Stopped odpowiada metodzie AudioFrame::setPlayLoopMode
- Hide During Show odpowiada metodzie AudioFrame::setHideAtShowing
- Rewind after Playing odpowiada metodzie AudioFrame::setRewindAudio
Opcje Edycja w PowerPoint, które odpowiadają właściwościom Aspose.Slides AudioFrame :
- Fade In odpowiada metodzie AudioFrame::setFadeInDuration
- Fade Out odpowiada metodzie AudioFrame::setFadeOutDuration
- Trim Audio Start Time odpowiada metodzie AudioFrame::setTrimFromStart
- Trim Audio End Time wartość równa jest długości audio minus wartość metody AudioFrame::setTrimFromEnd
Pole Volume controll w panelu sterowania audio w PowerPoint odpowiada metodzie AudioFrame::setVolumeValue. Pozwala zmienić głośność audio w procentach.
Tak zmienisz opcje odtwarzania audio:
- Сreate lub pobierz ramkę audio.
- Ustaw nowe wartości właściwości ramki audio, które chcesz dostosować.
- Zapisz zmodyfikowany plik PowerPoint.
Ten kod PHP demonstruje operację, w której zmieniane są opcje audio:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
# Pobiera kształt AudioFrame
$audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Ustawia tryb odtwarzania na odtwarzanie po kliknięciu
$audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
# Ustawia głośność na niski poziom
$audioFrame->setVolume(AudioVolumeMode->Low);
# Ustawia odtwarzanie audio na wszystkie slajdy
$audioFrame->setPlayAcrossSlides(true);
# Wyłącza pętlę dla audio
$audioFrame->setPlayLoopMode(false);
# Ukrywa AudioFrame podczas pokazu slajdów
$audioFrame->setHideAtShowing(true);
# Przewija audio do początku po odtworzeniu
$audioFrame->setRewindAudio(true);
# Zapisuje plik PowerPoint na dysku
$pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Ten przykład PHP pokazuje, jak dodać nową ramkę audio z osadzonym dźwiękiem, przyciąć ją i ustawić czasy zanikania:
$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);
// Ustawia początkowe przesunięcie przycięcia na 1,5 sekundy
$audioFrame->setTrimFromStart(1500);
// Ustawia końcowe przesunięcie przycięcia na 2 sekundy
$audioFrame->setTrimFromEnd(2000);
// Ustawia czas trwania fade-in na 200 ms
$audioFrame->setFadeInDuration(200);
// Ustawia czas trwania fade-out na 500 ms
$audioFrame->setFadeOutDuration(500);
$pres->save("AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Poniższy przykład kodu pokazuje, jak pobrać ramkę audio z osadzonym dźwiękiem i ustawić jej głośność na 85%:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
$slide = $pres->getSlides()->get_Item(0);
// Pobiera kształt ramki audio
$audioFrame = $slide->getShapes()->get_Item(0);
// Ustawia głośność audio na 85%
$audioFrame->setVolumeValue(85);
$pres->save("AudioFrameValue_out.pptx", SaveFormat::Pptx);
}
finally {
$pres->dispose();
}
Zarządzanie napisami audio
Aspose.Slides umożliwia dodawanie zamkniętych napisów do ramki audio za pomocą metody getCaptionTracks. Metoda ta zwraca CaptionsCollection, co pozwala dodać ścieżki napisów WebVTT, iterować istniejące ścieżki i usuwać je w razie potrzeby.
Dodawanie napisów audio
Użyj metody getCaptionTracks aby dołączyć jedną lub więcej ścieżek napisów do ramki audio. W poniższym przykładzie plik audio jest dodawany do slajdu, a następnie nowa ścieżka napisów jest wczytywana z pliku .vtt.
$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);
// Dodaj nową ścieżkę napisów z pliku WebVTT.
$audioFrame->getCaptionTracks()->add("New track", "track.vtt");
$presentation->save("audio_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Wyodrębnianie napisów audio
Możesz iterować po ścieżkach napisów powiązanych z ramką audio i zapisywać je jako pliki .vtt. Każda ścieżka napisów udostępnia swoje dane binarne oraz unikalny identyfikator, które mogą być użyte przy eksporcie napisów.
$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);
// Zapisz każdą ścieżkę napisów jako plik .vtt.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
Usuwanie napisów audio
Aby usunąć napisy z ramki audio, użyj metod udostępnionych przez CaptionsCollection, takich jak clear, remove, lub removeAt. Poniższy przykład usuwa wszystkie ścieżki napisów z ramki audio.
$presentation = new Presentation($folderPath . "audio_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$audioFrame = $slide->getShapes()->get_Item(0); // typ: AudioFrame
// Usuń wszystkie ścieżki napisów z ramki audio.
$audioFrame->getCaptionTracks()->clear();
$presentation->save($folderPath . "audio_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Wyodrębnianie dźwięku
Aspose.Slides for PHP via Java umożliwia wyodrębnienie dźwięku używanego w przejściach pokazu slajdów. Na przykład możesz wyodrębnić dźwięk użyty w określonym slajdzie.
- Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą dźwięk.
- Uzyskaj odniesienie do odpowiedniego slajdu poprzez jego indeks.
- Uzyskaj dostęp do slideshow transitions dla slajdu.
- Wyodrębnij dźwięk jako dane bajtowe.
Ten kod pokazuje, jak wyodrębnić dźwięk użyty w slajdzie:
# Tworzy instancję klasy Presentation, która reprezentuje plik prezentacji
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# Uzyskuje dostęp do żądanego slajdu
$slide = $pres->getSlides()->get_Item(0);
# Pobiera efekty przejścia pokazu slajdów dla slajdu
$transition = $slide->getSlideShowTransition();
# Wyodrębnia dźwięk jako tablicę bajtów
$audio = $transition->getSound()->getBinaryData();
echo("Length: " . $Array->getLength($audio));
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Czy mogę ponownie używać tego samego zasobu audio na wielu slajdach bez zwiększania rozmiaru pliku?
Tak. Dodaj audio raz do wspólnej audio collection prezentacji i utwórz dodatkowe ramki audio, które odwołują się do istniejącego zasobu. Dzięki temu unikniesz duplikowania danych multimedialnych i utrzymasz rozmiar prezentacji pod kontrolą.
Czy mogę zastąpić dźwięk w istniejącej ramce audio bez ponownego tworzenia kształtu?
Tak. W przypadku dźwięku powiązanego, zaktualizuj link path tak, aby wskazywał na nowy plik. W przypadku dźwięku osadzonego, zamień obiekt embedded audio na inny z audio collection prezentacji. Formatowanie ramki oraz większość ustawień odtwarzania pozostanie niezmieniona.
Czy przycinanie zmienia podstawowe dane audio przechowywane w prezentacji?
Nie. Przycinanie zmienia jedynie granice odtwarzania. Oryginalne bajty audio pozostają niezmienione i są dostępne przez osadzony dźwięk lub kolekcję audio prezentacji.