PS2/PSP эмулятор + game play streaming (YouTube, Facebook, Twitch) = новая версия Omega Red

Привет всем читателям!

Я продолжаю тему программного эмулятора для PlayStation 2 и PlayStation Portable — Omega Red. Более подробно:

Данную публикацию я написал в связи с новым функционалом, добавленным мной в проект — стриминговое вещание живого видео и аудио игрового процесса с эмулятора на известные стриминговые сервисы Интернета.
Добро пожаловать по «кат».

PS2/PSP эмулятор + game play streaming (YouTube, Facebook, Twitch) = новая версия Omega Red

Для начала отмечу следующее — идея встроить поддержку Интернет вещания возникла из другого моего проекта — CaptureManager SDK. Я эксперементировал с вещанием с веб-камеры и получил работоспособный код. И «пришла» идея — встроить этот код в эмулятор игровой приставки!
Задача интерестна следующими аспектами: захват видео и аудио. Захват с камеры достаточно прост, но что делать с захватом видео с рендерера эмулятора!?! Можно найти код для захвата всего рабочего стола — но это так ПРОСТО. А что, если захватывать графику напрямую с графического рендерера! Подобная идея и с захватом аудио — обычно захват аудио проводится с системного микшера как дубликация аудио потока на акустику-спикеры. А что, если захватывать аудио напрямую с аудио рендерера ДО системного микшера!
Интерестно! Оригинально!

Как это реализовано: добавлен код захвата в DirectX 11 рендерер и DirectSound рендерер. Результат отрисовки графики напрямую передаётся в Н264 видео кодировщик через DirectX 11 видео текстуру — это позволяет использовать аппаратное ускорение кодирования видео на графическом ускорителе. Аудио поток направляется в аудио кодировщик ААС встроенный в Windows.

Управление захвата состоит из двух частей:

  • настройка кодирования и выбора стримингового сервиса Интернета для трансляции живого видео;
  • настройка микшера — смешивание живого видео с дополнительными источниками (веб-камера, JPG/PNG/GIF(анимированые) файлов).

Настройка кодирования:

PS2/PSP эмулятор + game play streaming (YouTube, Facebook, Twitch) = новая версия Omega Red

Настройка стриминга начинается с выбора режима захвата — «Стриминг». В этом режиме можно настроить скорость данных для видео и аудио потоков в соответствии с доступной скоростью Интернет соединения. Отдельно можно выбрать стриминговый сервис или НАБРАТЬ В РУЧНУЮ полный адрес стримингового сервера — к примеру СОБСТВЕННОГО сервера на базе MonaServer. Важно отметить, что поддерживается не только открытое соединение, но и защищенное подключение (SSL)! Стриминговый сервис Facebook (да, есть такое) опубликовал следующее объявление:
«С 1 ноября 2019 г. мы прекращаем поддержку URL-адресов RTMP-сервера. После этого незащищенные URL не смогут использоваться для видеотрансляций. Обновите настройки устройства видеокодирования и используйте защищенные URL RTMPS» — я решил что поддержка RTMPS перспективна и потратил время на «прикручивание» OpenSSL к RTMP библиотеке. И код РАБОТАЕТ!!! Facebook принимает стрим по защищённому соединению!

Стрим начинается с нажатия на кнопку записи/стриминга:

Настройка микшера становится доступной после начала записи/стриминга:

На панели «Медиа» становится доступной вкладка «Медиа источники» — эта вкладка включает источники видео и аудио потоков доступные для микширования. Дополнительно к веб-камерам и микрофонам можно добавить JPG/PNG/GIF(анимированые) файлы.
Для микрофонов можно управлять пропорцией смешивания аудио потоков. Выбор микрофона осуществляется нажатием на check button, управление смешиванием производится слайдером.

Для видео источника можно управлять смешиванием видео потоков. Выбор камеры осуществляется нажатием на check button, выбор размера изображения с камеры выбирается через выподающее меню.

Прозрачностью (или не прозрачностью) смешивания можно управлять через отдельный слайдер.

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

Демонстрация стриминга:

В настоящий момент программа доступна по ссылке: Omega Red и представлена на GitHub: OmegaRed.

P.S. Качество видео на стриме фиговое — у меня Интернет по ADSL — устойчивый стрим на YouTube только при скорости видео потока до 256 Kbit — плеваться в экран не надо — не поможет.

 
Источник

Читайте также