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

Импорт аудио

Обзор

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

  1. Создать Runtime Audio Importer
  2. Привязаться к необходимым делегатам (OnProgress и OnResult)
  3. Импортировать аудио из файла или буфера
  4. Воспроизвести импортированную звуковую волну, полученную из делегата 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 VORBISКонтейнер Ogg с аудио Vorbis
OGG OPUSКонтейнер Ogg с аудио Opus
BINKBink Audio
RAW (PCM)Несжатые аудиоданные импульсно-кодовой модуляции (Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32)
подсказка

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

Импорт аудио с потоковой передачей

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

Этот метод предоставляет непрерывный способ добавления аудиоданных в буфер одной и той же звуковой волны, что делает его подходящим для прямых трансляций или больших файлов, обрабатываемых частями. Подробнее см. в документации по 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

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

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

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