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

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


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


Для начала отмечу следующее — идея встроить поддержку Интернет вещания возникла из другого моего проекта — CaptureManager SDK. Я эксперементировал с вещанием с веб-камеры и получил работоспособный код. И «пришла» идея — встроить этот код в эмулятор игровой приставки!

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

Интерестно! Оригинально!

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

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

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

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


Настройка стриминга начинается с выбора режима захвата — «Стриминг». В этом режиме можно настроить скорость данных для видео и аудио потоков в соответствии с доступной скоростью Интернет соединения. Отдельно можно выбрать стриминговый сервис или НАБРАТЬ В РУЧНУЮ полный адрес стримингового сервера — к примеру СОБСТВЕННОГО сервера на базе 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 — плеваться в экран не надо — не поможет.

Комментарии (5)


  1. Vyaza
    24.06.2019 09:34

    Вам же уже наверняка не раз указывали на абсолютную вырвиглазность интерфейса. Вы действительно не понимаете, что цвета типа rgb(255,0,0), прямые их переходы из одного в другой на фоне жутких градиентов и прочие проявления карательного дизайна оттолкнут от вашего продукта 99,9% потенциальной аудитории, каким бы замечательным функционалом он не обладал?


    1. ice2heart
      24.06.2019 10:58

      Полностью поддежриваю. Есть же хорошие готовые цветовые схемы для интерфейсов. Бери и пользуйся.


  1. tolstooo
    24.06.2019 11:16

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


    1. vladkorotnev
      24.06.2019 11:16

      Главное чтобы тёмная тема не была комбинацией цветов #FF0000 и #000000 :-)


  1. MonkeyD
    24.06.2019 18:47

    Шел 2019 год, Alien Hominid все еще блин не поиграть(((( И это печально. Я понимаю что одна игра, это не показатель, ибо это как андройд, для всех не оптимизируешь. Но все равно досада.