Управление аудио в презентациях с использованием PHP
Создание аудио‑кадров
Aspose.Slides for PHP via Java позволяет добавлять аудиофайлы на слайды. Аудиофайлы встраиваются в слайды как аудио‑кадры.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Загрузите поток аудиофайла, который вы хотите встроить в слайд.
- Добавьте встроенный аудио‑кадр (содержащий аудиофайл) на слайд.
- Установите PlayMode и
Volume, доступные через объект IAudioFrame. - Сохраните изменённую презентацию.
Этот PHP‑код демонстрирует, как добавить встроенный аудио‑кадр на слайд:
// Создаёт экземпляр класса Presentation, представляющего файл презентации
$pres = new Presentation();
try {
# Получает первый слайд
$sld = $pres->getSlides()->get_Item(0);
# Загружает wav звук в поток
$fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
# Добавляет аудио‑кадр
$audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
$fstr->close();
# Устанавливает режим воспроизведения и громкость аудио
$audioFrame->setPlayMode(AudioPlayModePreset->Auto);
$audioFrame->setVolume(AudioVolumeMode->Loud);
# Записывает файл PowerPoint на диск
$pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
if (!java_is_null($pres)) $pres.dispose();
}
Изменение миниатюры аудио‑кадра
Когда вы добавляете аудиофайл в презентацию, он отображается в виде кадра со стандартным изображением по умолчанию (см. изображение в разделе ниже). Вы можете изменить превью‑изображение аудио‑кадра (установить нужное вам изображение).
Этот PHP‑код демонстрирует, как изменить миниатюру или превью‑изображение аудио‑кадра:
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
# Добавляет аудио‑кадр на слайд с указанными позицией и размером.
$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
$audioStream->close();
# Добавляет изображение в ресурсы презентации.
$picture;
$image = Images->fromFile("eagle.jpeg");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Устанавливает изображение для аудио‑кадра.
$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----
# Сохраняет изменённую презентацию на диск
$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Изменение параметров воспроизведения аудио
Aspose.Slides for PHP via Java позволяет изменять параметры, управляющие воспроизведением аудио или его свойствами. Например, можно отрегулировать громкость аудио, установить воспроизведение в цикле или даже скрыть значок аудио.
Область Audio Options в Microsoft PowerPoint:

Опции Audio Options в PowerPoint, соответствующие свойствам Aspose.Slides AudioFrame :
- Start раскрывающийся список соответствует методу AudioFrame.setPlayMode
- Volume соответствует методу AudioFrame.setVolume
- Play Across Slides соответствует методу AudioFrame.setPlayAcrossSlides
- Loop until Stopped соответствует методу AudioFrame.setPlayLoopMode
- Hide During Show соответствует методу AudioFrame.setHideAtShowing
- Rewind after Playing соответствует методу AudioFrame.setRewindAudio
Опции Editing в PowerPoint, соответствующие свойствам Aspose.Slides AudioFrame :
- Fade In соответствует методу AudioFrame.setFadeInDuration
- Fade Out соответствует методу AudioFrame.setFadeOutDuration
- Trim Audio Start Time соответствует методу AudioFrame.setTrimFromStart
- Trim Audio End Time значение равно продолжительности аудио минус значение, установленное методом AudioFrame.setTrimFromEnd
Элемент управления Volume на аудио‑панели PowerPoint соответствует методу AudioFrame.setVolumeValue. Он позволяет менять громкость аудио в процентах.
Вот как изменить параметры воспроизведения аудио:
- Создать или получить Audio Frame.
- Установите новые значения свойств Audio Frame, которые вы хотите изменить.
- Сохраните изменённый файл PowerPoint.
Этот PHP‑код демонстрирует операцию, в которой изменяются параметры аудио:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
# Получает форму AudioFrame
$audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Устанавливает режим воспроизведения на воспроизведение по щелчку
$audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
# Устанавливает громкость на низкую
$audioFrame->setVolume(AudioVolumeMode->Low);
# Устанавливает воспроизведение аудио на всех слайдах
$audioFrame->setPlayAcrossSlides(true);
# Отключает зацикливание аудио
$audioFrame->setPlayLoopMode(false);
# Скрывает AudioFrame во время показа слайдов
$audioFrame->setHideAtShowing(true);
# Перематывает аудио к началу после воспроизведения
$audioFrame->setRewindAudio(true);
# Сохраняет файл PowerPoint на диск
$pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Этот пример PHP показывает, как добавить новый аудио‑кадр со встроенным аудио, обрезать его и установить длительности затухания:
$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);
// Устанавливает смещение начала обрезки в 1,5 секунды
$audioFrame->setTrimFromStart(1500);
// Устанавливает смещение конца обрезки в 2 секунды
$audioFrame->setTrimFromEnd(2000);
// Устанавливает длительность fade-in в 200 мс
$audioFrame->setFadeInDuration(200);
// Устанавливает длительность fade-out в 500 мс
$audioFrame->setFadeOutDuration(500);
$pres->save("AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Следующий пример кода показывает, как получить аудио‑кадр со встроенным аудио и установить его громкость на 85%:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
$slide = $pres->getSlides()->get_Item(0);
// Получает форму аудио‑кадра
$audioFrame = $slide->getShapes()->get_Item(0);
// Устанавливает громкость аудио на 85%
$audioFrame->setVolumeValue(85);
$pres->save("AudioFrameValue_out.pptx", SaveFormat::Pptx);
}
finally {
$pres->dispose();
}
Извлечение аудио
Aspose.Slides for PHP via Java позволяет извлекать звук, используемый в переходах слайд‑шоу. Например, можно извлечь звук, применённый к определённому слайду.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую аудио.
- Получите ссылку на соответствующий слайд по его индексу.
- Получите доступ к slideshow transitions для слайда.
- Извлеките звук в виде байтовых данных.
Этот код демонстрирует, как извлечь аудио, используемое в слайде:
# Создаёт экземпляр класса Presentation, представляющего файл презентации
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# Получает нужный слайд
$slide = $pres->getSlides()->get_Item(0);
# Получает эффекты перехода слайд-шоу для слайда
$transition = $slide->getSlideShowTransition();
# Извлекает звук в массив байтов
$audio = $transition->getSound()->getBinaryData();
echo("Length: " . $Array->getLength($audio));
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Можно ли повторно использовать один и тот же аудио‑ресурс на нескольких слайдах без увеличения размера файла?
Да. Добавьте аудио один раз в общую audio collection презентации и создайте дополнительные аудио‑кадры, которые ссылаются на этот существующий ресурс. Это предотвращает дублирование медиа‑данных и позволяет держать размер презентации под контролем.
Можно ли заменить звук в существующем аудио‑кадре без воссоздания формы?
Да. Для связанного звука обновите link path, указывающий на новый файл. Для встроенного звука замените объект embedded audio другим из audio collection презентации. Форматирование кадра и большинство настроек воспроизведения сохраняются.
Изменяет ли обрезка исходные аудио‑данные, хранящиеся в презентации?
Нет. Обрезка изменяет только границы воспроизведения. Исходные байты аудио остаются нетронутыми и доступны через встроенное аудио или [audio collection] презентации.