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

Записываемая Звуковая Волна

Обзор

Записываемая звуковая волна является производной от потоковой звуковой волны. Она поддерживает захват аудиоданных с входных устройств, таких как микрофон, и их воспроизведение, с теми же возможностями, что и импортированная звуковая волна (включая перемотку, использование в SoundCues и т.д.). Вы даже можете одновременно записывать и воспроизводить аудио без каких-либо ограничений.

подсказка

Для обнаружения голосовой активности (VAD) обратитесь к этой странице.

примечание

Записываемая звуковая волна автоматически запрашивает разрешения на использование микрофона на iOS и Android, как только начинается запись.

Базовое Использование

Создание Записываемой Звуковой Волны

Сначала вам следует создать записываемую звуковую волну.

Узел Create Capturable Sound Wave

warning

Вы должны рассматривать захватываемую звуковую волну как сильную ссылку, чтобы предотвратить преждевременное уничтожение (например, присвоив её отдельной переменной в Blueprints или используя UPROPERTY() в C++).

Получение доступных входных устройств

Чтобы использовать эту функцию, вам нужно сначала получить все доступные аудио входные устройства, которые можно использовать для захвата.

Get Available Audio Input Devices node

Запуск и остановка захвата

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

Узлы запуска и остановки захвата

к сведению

DeviceId - это индекс устройства в массиве доступных устройств, полученных на предыдущем шаге. Чтобы использовать устройство аудиоввода по умолчанию, передайте -1 в Blueprints или Audio::DefaultDeviceIndex в C++ (что равно INDEX_NONE), так как иногда нулевой индекс не является устройством по умолчанию.

Проверка статуса захвата

Вы можете проверить, захватывает ли звуковая волна аудио в данный момент:

Is Capturing node

Расширенные возможности

Отключение и включение захвата звука

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

Toggle Mute nodes

Различия версий движка

UE 5.3 и новее: Запуск и остановка захвата больше не вызывают задержек, поэтому ToggleMute имеет тот же эффект, что и StartCapture/StopCapture. Возможно, вам вообще не потребуется использовать ToggleMute для оптимизации производительности.

UE 5.2 и более ранние: Запуск захвата через StartCapture может вызывать незначительные задержки. В этих версиях рекомендуется использовать ToggleMute для частого переключения захвата. Сначала следует запустить сам захват в менее критичное время (например, на экране загрузки), а затем использовать mute/unmute для управления моментом фактического накопления аудиоданных.

Оптимизация производительности для более ранних версий движка

Если вы используете UE 5.2 или более раннюю версию и хотите устранить небольшие замирания, рассмотрите возможность запуска захвата в момент, когда это замирание может быть незначительным. Например, вы можете запустить захват во время экрана загрузки вашей игры, сразу после этого заглушить capturable sound wave, а затем включить звук capturable sound wave, когда потребуется захват аудиоданных без каких-либо задержек.

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

Вот полный пример реализации использования capturable sound wave:

Пример использования capturable sound wave