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

Захват аудио 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. Сохраните файл для последующего использования или анализа