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

Захват аудио в Pixel Streaming

Pixel Streaming — это плагин для Unreal Engine, который транслирует отрендеренные кадры и синхронизирует ввод/вывод через WebRTC. Приложение работает на стороне сервера, тогда как клиентская сторона занимается рендерингом и взаимодействием с пользователем. Для получения более подробной информации о Pixel Streaming и его настройке обратитесь к документации Pixel Streaming.

Pixel Streaming vs Pixel Streaming 2

Этот плагин поддерживает обе версии Pixel Streaming, доступные в Unreal Engine:

  • Pixel Streaming — оригинальный плагин, доступный с UE 5.2 и до сих пор активно используемый в текущих версиях движка
  • Pixel Streaming 2 — представлен в UE 5.5 как реализация следующего поколения с улучшенной внутренней архитектурой. Узнайте больше о Pixel Streaming 2

Обе версии полностью поддерживаются и доступны в последних релизах Unreal Engine. Выберите версию, которая соответствует настройке Pixel Streaming в вашем проекте.

к сведению

API для обеих версий идентичен, с той лишь разницей, что классы и функции Pixel Streaming 2 включают "2" в своих названиях (например, UPixelStreamingCapturableSoundWave vs UPixelStreaming2CapturableSoundWave).

Совместимость

Данное решение работает с:

Реализация была протестирована в этих средах и функционирует корректно независимо от используемого решения для хостинга Pixel Streaming.

Установка плагина-расширения

Эта функция предоставляется как расширение для плагина Runtime Audio Importer. Чтобы использовать её, вам необходимо:

  1. Убедиться, что плагин Runtime Audio Importer уже установлен в вашем проекте
  2. Скачать плагин-расширение для вашей версии Pixel Streaming:
  3. Извлечь папку из загруженного архива в папку Plugins вашего проекта (создайте эту папку, если её не существует)
  4. Пересобрать ваш проект (это расширение требует проект на C++)
important
  • Эти расширения предоставляются в виде исходного кода и требуют проекта на C++ для использования
  • Расширение Pixel Streaming: Поддерживается в UE 5.2 и более поздних версиях
  • Расширение Pixel Streaming 2: Поддерживается в UE 5.5 и более поздних версиях
  • Для получения дополнительной информации о том, как собирать плагины вручную, см. руководство по сборке плагинов

Обзор

Pixel Streaming Capturable Sound Wave расширяет стандартную Capturable Sound Wave, позволяя захватывать аудио непосредственно с микрофонов клиентов Pixel Streaming. Эта функция позволяет вам:

  • Захватывать аудио из браузеров, подключенных через Pixel Streaming
  • Обрабатывать аудио от конкретных игроков/пиров
  • Реализовывать голосовой чат, голосовые команды или запись аудио от удаленных пользователей

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

Создание Pixel Streaming Capturable Sound Wave

Сначала вам нужно создать объект Pixel Streaming Capturable Sound Wave:

Узел Create Pixel Streaming Capturable Sound Wave

warning

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

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

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

Узлы Start and Stop Capture

примечание

Параметр DeviceId в StartCapture игнорируется для Pixel Streaming Capturable Sound Waves, так как источник захвата определяется автоматически или заданной вами информацией о плеере.

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

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

Узел Is Capturing

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

Вот полный пример настройки захвата аудио через Pixel Streaming:

Полный пример захвата Pixel Streaming

Работа с несколькими плеерами Pixel Streaming

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

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

Для идентификации подключенных плееров Pixel Streaming:

Узел Get Available Pixel Streaming Players

Настройка игрока для захвата

Когда вам нужно захватывать с конкретного игрока:

Узел Set Player To Capture From

к сведению

Если вы оставите Player ID пустым, звуковая волна будет автоматически прослушивать первого доступного игрока, который подключится. Это поведение по умолчанию, которое хорошо работает для сценариев с одним игроком.

Распространенные сценарии использования

Реализация голосового чата

Вы можете использовать Pixel Streaming Capturable Sound Waves для реализации голосового чата между удаленными пользователями и локальными игроками:

  1. Создайте Pixel Streaming Capturable Sound Wave для каждого подключенного игрока
  2. Настройте систему для управления тем, какие игроки в данный момент говорят
  3. Используйте систему Обнаружения голосовой активности для определения, когда пользователи говорят
  4. При необходимости пространственно обработайте аудио с помощью аудиосистемы Unreal Engine

Голосовые команды с распознаванием речи

Вы можете реализовать распознавание голосовых команд для удаленных пользователей, комбинируя эту функцию с плагином Runtime Speech Recognizer:

  1. Записывайте аудио от клиентов Pixel Streaming с помощью Pixel Streaming Capturable Sound Wave
  2. Передавайте записанное аудио напрямую в Runtime Speech Recognizer
  3. Обрабатывайте распознанный текст в вашей игровой логике

Просто замените стандартную Capturable Sound Wave на Pixel Streaming Capturable Sound Wave (или Pixel Streaming 2 Capturable Sound Wave) в примерах Runtime Speech Recognizer, и она будет работать seamlessly с аудиовводом Pixel Streaming.

Запись аудио удаленных пользователей

Вы можете записывать аудио от удаленных пользователей для последующего воспроизведения:

  1. Записывайте аудио с помощью Pixel Streaming Capturable Sound Wave
  2. Экспортируйте записанное аудио в файл с помощью Экспорт аудио
  3. Сохраните файл для последующего использования или анализа