Управление аудио‑кадрами в презентациях на .NET
Создание аудио‑кадров
Aspose.Slides для .NET позволяет добавлять аудиофайлы на слайды. Аудиофайлы встраиваются в слайды в виде аудио‑кадров.
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Загрузите поток аудиофайла, который вы хотите встроить в слайд.
- Добавьте встроенный аудио‑кадр (содержит аудиофайл) на слайд.
- Установите PlayMode и
Volume, доступные через объект IAudioFrame. - Сохраните изменённую презентацию.
Этот код на C# показывает, как добавить встроенный аудио‑кадр на слайд:
// Создаёт экземпляр класса презентации, представляющего файл презентации
using (Presentation pres = new Presentation())
{
// Получает первый слайд
ISlide sld = pres.Slides[0];
// Загружает wav‑файл звука в поток
FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);
// Добавляет аудио‑кадр
IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);
// Устанавливает режим воспроизведения и громкость аудио
audioFrame.PlayMode = AudioPlayModePreset.Auto;
audioFrame.Volume = AudioVolumeMode.Loud;
// Записывает файл PowerPoint на диск
pres.Save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
}
Изменение миниатюры аудио‑кадра
Когда вы добавляете аудиофайл в презентацию, аудио отображается как кадр со стандартным изображением по умолчанию (см. изображение в разделе ниже). Вы можете изменить миниатюру аудио‑кадра (установить своё изображение).
Этот код на C# показывает, как изменить миниатюру или изображение предварительного просмотра аудио‑кадра:
using (var presentation = new Presentation())
{
var slide = presentation.Slides[0];
// Добавляет аудио‑кадр на слайд с указанным положением и размером.
var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
audioStream.Dispose();
// Добавляет изображение в ресурсы презентации.
var imageStream = File.OpenRead("eagle.jpeg");
var audioImage = presentation.Images.AddImage(imageStream);
imageStream.Dispose();
// Устанавливает изображение для аудио‑кадра.
audioFrame.PictureFormat.Picture.Image = audioImage; // <-----
// Сохраняет изменённую презентацию на диск
presentation.Save("example_out.pptx", SaveFormat.Pptx);
}
Изменение параметров воспроизведения аудио
Aspose.Slides для .NET позволяет изменять параметры, управляющие воспроизведением аудио или его свойствами. Например, можно отрегулировать громкость, установить цикл воспроизведения или скрыть значок аудио.
Панель Audio Options в Microsoft PowerPoint:

PowerPoint Audio Options, соответствующие свойствам Aspose.Slides AudioFrame:
- Start – выпадающий список соответствует свойству AudioFrame.PlayMode
- Volume соответствует свойству AudioFrame.Volume
- Play Across Slides соответствует свойству AudioFrame.PlayAcrossSlides
- Loop until Stopped соответствует свойству AudioFrame.PlayLoopMode
- Hide During Show соответствует свойству AudioFrame.HideAtShowing
- Rewind after Playing соответствует свойству AudioFrame.RewindAudio
PowerPoint Editing‑опции, соответствующие свойствам Aspose.Slides AudioFrame:
- Fade In соответствует свойству AudioFrame.FadeInDuration
- Fade Out соответствует свойству AudioFrame.FadeOutDuration
- Trim Audio Start Time соответствует свойству AudioFrame.TrimFromStart
- Trim Audio End Time значение равно продолжительности аудио минус значение свойства AudioFrame.TrimFromEnd
Контроллер Volume на панели управления аудио в PowerPoint соответствует свойству AudioFrame.VolumeValue. Он позволяет изменять громкость аудио в процентах.
Так меняются параметры воспроизведения аудио:
- Создать или получить аудио‑кадр.
- Установите новые значения свойств аудио‑кадра, которые вы хотите изменить.
- Сохраните изменённый файл PowerPoint.
Этот код на C# демонстрирует операцию, в которой настраиваются параметры аудио:
using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
// Получает форму AudioFrame
AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];
// Устанавливает режим воспроизведения на воспроизведение по щелчку
audioFrame.PlayMode = AudioPlayModePreset.OnClick;
// Устанавливает громкость в Low
audioFrame.Volume = AudioVolumeMode.Low;
// Устанавливает воспроизведение аудио на всех слайдах
audioFrame.PlayAcrossSlides = true;
// Отключает цикл воспроизведения для аудио
audioFrame.PlayLoopMode = false;
// Скрывает AudioFrame во время показа слайдов
audioFrame.HideAtShowing = true;
// Перематывает аудио к началу после воспроизведения
audioFrame.RewindAudio = true;
// Сохраняет файл PowerPoint на диск
pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}
Этот пример на C# показывает, как добавить новый аудио‑кадр с встроенным аудио, обрезать его и задать длительность затухания:
using (Presentation pres = new Presentation())
{
ISlide slide = pres.Slides[0];
byte[] audioData = File.ReadAllBytes("sampleaudio.mp3");
IAudio audio = pres.Audios.AddAudio(audioData);
IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(50, 50, 100, 100, audio);
// Устанавливает смещение начала обрезки в 1,5 секунды
audioFrame.TrimFromStart = 1500f;
// Устанавливает смещение конца обрезки в 2 секунды
audioFrame.TrimFromEnd = 2000f;
// Устанавливает длительность плавного появления в 200 мс
audioFrame.FadeInDuration = 200f;
// Устанавливает длительность плавного затухания в 500 мс
audioFrame.FadeOutDuration = 500f;
pres.Save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
}
Следующий образец кода показывает, как получить аудио‑кадр с встроенным аудио и установить его громкость на 85 %:
using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
// Получает форму аудио‑кадра
IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];
// Устанавливает громкость аудио в 85%
audioFrame.VolumeValue = 85f;
pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
Управление аудио‑подписями
Aspose.Slides позволяет добавлять закрытые субтитры к аудио‑кадру через свойство CaptionTracks. Это свойство возвращает ICaptionsCollection, позволяя добавлять дорожки WebVTT, перебирать существующие дорожки и удалять их при необходимости.
Добавить аудио‑подписи
Используйте свойство CaptionTracks для присоединения одной или нескольких дорожек субтитров к аудио‑кадру. В примере ниже аудиофайл добавляется на слайд, после чего новая дорожка субтитров загружается из файла .vtt.
using (Presentation presentation = new Presentation())
{
byte[] audioData = File.ReadAllBytes("audio.mp3");
IAudio audio = presentation.Audios.AddAudio(audioData);
ISlide slide = presentation.Slides[0];
IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(10, 10, 50, 50, audio);
// Добавьте новую дорожку субтитров из файла WebVTT.
audioFrame.CaptionTracks.Add("New track", "track.vtt");
presentation.Save("audio_with_captions.pptx", SaveFormat.Pptx);
}
Извлечение аудио‑субтитров
Можно перебрать дорожки субтитров, связанные с аудио‑кадром, и сохранить их как файлы .vtt. Каждая дорожка раскрывает свои двоичные данные и уникальный идентификатор, которые можно использовать при экспорте субтитров.
using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
foreach (IShape shape in slide.Shapes)
{
if (shape is IAudioFrame audioFrame)
{
foreach (ICaptions captionTrack in audioFrame.CaptionTracks)
{
// Сохраните дорожку субтитров в файл .vtt.
File.WriteAllBytes($"{captionTrack.CaptionId}.vtt", captionTrack.BinaryData);
}
}
}
}
Удаление аудио‑субтитров
Чтобы удалить субтитры из аудио‑кадра, используйте методы, предоставляемые ICaptionsCollection, такие как Clear, Remove или RemoveAt. Пример ниже удаляет все дорожки субтитров из аудио‑кадра.
using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
IAudioFrame audioFrame = slide.Shapes[0] as IAudioFrame;
// Удалить все дорожки субтитров из аудио‑кадра.
audioFrame.CaptionTracks.Clear();
presentation.Save("audio_without_captions.pptx", SaveFormat.Pptx);
}
Извлечение аудио
Aspose.Slides для .NET позволяет извлекать звук, используемый в переходах слайд‑шоу. Например, можно извлечь звук, использованный в конкретном слайде.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую аудио.
- Получите ссылку на соответствующий слайд по его индексу.
- Доступ к переходам слайд‑шоу для этого слайда.
- Извлеките звук в виде байтовых данных.
Этот код на C# показывает, как извлечь аудио, используемое в слайде:
string presName = "AudioSlide.pptx";
// Создаёт экземпляр класса Presentation, представляющего файл презентации
Presentation pres = new Presentation(presName);
// Accesses the slide
ISlide slide = pres.Slides[0];
// Gets the slideshow transition effects for the slide
ISlideShowTransition transition = slide.SlideShowTransition;
//Extracts the sound in byte array
byte[] audio = transition.Sound.BinaryData;
System.Console.WriteLine("Length: " + audio.Length);
FAQ
Можно ли использовать один и тот же аудио‑ресурс на нескольких слайдах без увеличения размера файла?
Да. Добавьте аудио один раз в общую audio collection презентации и создайте дополнительные аудио‑кадры, которые ссылаются на этот существующий ресурс. Это предотвращает дублирование медиа‑данных и сохраняет размер презентации под контролем.
Можно ли заменить звук в существующем аудио‑кадре без пересоздания формы?
Да. Для связанного звука обновите link path так, чтобы он указывал на новый файл. Для встроенного звука замените объект embedded audio другим из audio collection презентации. Форматирование кадра и большинство настроек воспроизведения сохраняются.
Изменяет ли обрезка фактические аудио‑данные, хранящиеся в презентации?
Нет. Обрезка меняет только границы воспроизведения. Исходные аудио‑байты остаются нетронутыми и доступны через встроенное аудио или коллекцию аудио презентации.