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

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

Обзор​

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

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

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

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

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

Нода 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 node

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

Вот полный пример настройки захвата аудио для 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, и она будет работать с аудиовходом Pixel Streaming.

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

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

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