Я пытаюсь создать приложение для удаленного рабочего стола, в котором пользователь управляет своим компьютером из веб-приложения (как в logmein). Я добился этого с помощью C# для настольной части и NodeJS для веб-приложения, связь осуществлялась с помощью Socket.IO.
Моя первая попытка заключалась в том, чтобы сделать снимок экрана (всего 5 кадров в секунду), затем сравнить его с предыдущим снимком экрана и отправить только разницу в 8-битном цвете изображения, что привело к виртуальному рабочему столу с разрешением 800 * 600 - к первому изображению размером 100 КБ, затем от 5кб до 60кб в зависимости от изменений на экране.
С моей локальной машиной, управляющей виртуальным боксом, все было идеально, но когда я разместил веб-приложение онлайн, результат был катастрофическим, имело место невероятное отставание.
После нескольких исследований выяснилось, что такого рода приложение невозможно создать моим способом, и что мне приходится использовать протокол реального времени и вести прямую трансляцию с экрана клиента.
Мои вопросы:
Существуют ли готовые к использованию бесплатные RTP-библиотеки с открытым исходным кодом?
Как бы я передал прямую трансляцию из настольного приложения в веб-приложение, поскольку оно исходит со стороны клиента, у которого нет открытого порта? Я думал о другом настольном приложении, которое будет работать на сервере (размещающем веб-приложение), а затем снова будет транслировать тот же контент, а затем веб-приложение может просто отображать контент, подключившись к локальному IP-адресу с портом RTP, но это не решает загадку передачи прямой трансляции с клиента на сервер?