Перейти к основному содержимому

Импорт аудио

Обзор

Процесс импорта аудио во время выполнения можно разбить на несколько этапов:

  1. Создание Runtime Audio Importer
  2. Привязка к необходимым делегатам (OnProgress и OnResult)
  3. Импорт аудио из файла или буфера
  4. Воспроизведение импортированного Sound Wave, полученного из делегата OnResult (подробнее здесь)
Важное замечание

Убедитесь, что экземпляры Runtime Audio Importer и Sound Wave не будут преждевременно удалены сборщиком мусора, сохраняя на них жёсткую ссылку. Это можно сделать, присвоив их отдельным переменным с использованием UPROPERTY(), TStrongObjectPtr или любого другого метода, предотвращающего уничтожение объекта.

Поддерживаемые аудиоформаты

Runtime Audio Importer поддерживает импорт следующих аудиоформатов:

ФорматОписание
MP3MPEG-1/2/2.5 Audio Layer I/II/III
WAVWaveform Audio File Format
FLACFree Lossless Audio Codec
OGG VORBISOgg-контейнер с аудио Vorbis
OGG OPUSOgg-контейнер с аудио Opus
BINKBink Audio
RAW (PCM)Несжатые аудиоданные в формате Pulse-Code Modulation (Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32)
подсказка

При импорте аудио вы можете явно указать формат или использовать автоматическое определение формата на основе расширения файла или его содержимого.

Потоковый импорт аудио

Для сценариев потоковой передачи, где аудиоданные поступают постепенно (например, с сервера, в реальном времени или из сетевых потоков), рассмотрите использование Streaming Sound Waves.

Этот метод предоставляет возможность непрерывного добавления аудиоданных в буфер одного и того же Sound Wave, что делает его подходящим для живых трансляций или больших файлов, обрабатываемых по частям. Подробнее см. в документации Streaming Sound Wave.

Основные шаги реализации

1. Создание Runtime Audio Importer

Сначала необходимо создать объект Runtime Audio Importer. Убедитесь, что он обрабатывается сборщиком мусора как сильная ссылка.

Узел Create Runtime Audio Importer

2. Привязка к делегату OnProgress

Для отслеживания прогресса импорта аудиоданных вы можете привязаться к делегату OnProgress (Blueprints) / OnProgressNative (C++).

Пример привязки к делегату On Progress

подсказка

Это позволит вам отслеживать прогресс и, например, реализовать экран загрузки.

3. Привязка к делегату OnResult

Чтобы получать уведомления о завершении процесса импорта аудиоданных и получить доступ к ссылке на результирующую звуковую волну, необходимо привязаться к делегату OnResult (Blueprints) / OnResultNative (C++).

Пример привязки к делегату On Result

warning

Убедитесь, что импортированная звуковая волна обрабатывается сборщиком мусора как сильная ссылка, чтобы предотвратить преждевременное удаление. Это можно сделать, поместив её в отдельную переменную в Blueprints.

4. Начало импорта аудио

Запустите процесс импорта аудио, вызвав соответствующую функцию, которая может обрабатывать как сжатые, так и несжатые форматы аудиоданных.

Примеры узлов Import Audio

Вспомогательные функции

Поиск аудиофайлов

Вы можете сканировать директорию на наличие поддерживаемых аудиофайлов:

Scan Directory For Audio Files node

Полный пример

Вот полный пример реализации для импорта аудио:

Полный пример