Как я добился эффекта “полного погружения” при работе приложений Sunshine и Moonlight в условиях локальной сети

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Недавно я уже публиковал на Хабре статью по одной нестандартно решенной мной проблеме в редком сценарии использования связки приложений удаленного доступа Sunshine и Moonlight в мультимониторной конфигурации. Так как я продолжаю активно использовать в работе эти уникальные приложения, позволяющие организовать один из самых приближенных к режиму реального времени удаленных доступов в мире, с трансляцией экрана удаленного устройства, у меня продолжаются “рождаться” необычные задачи и решения, связанные с этим. С одним из таких неожиданных решений при работе указанных приложений я и хотел бы сегодня поделиться. Заранее предупреждаю, что финальный “твист” будет невероятно простым, буквально до степени: “а что, так можно было?”.

Кратко напомню, что эти приложения способны “выжать” из Ваших видеокарты и процессора всё, на что они способны и реально выдать при удаленном доступе вплоть до 120FPS на 4K даже на не слишком “толстом” интернет-канале и предоставить Вам удаленную графическую сессию управления, в которой будет полное ощущение, что Вы работаете в конкретный момент не за удаленным рабочим столом, а просто локально.

И действительно, может возникнуть даже крайне забавная ситуация, если провести небольшой эксперимент с неподготовленным участником. Вы легко можете посадить такого человека за ноутбук или компьютер и попросить его за ним поработать. А потом спросить, почувствовал ли он что-нибудь необычное? И следом удивить его же, сообщив, что он всего лишь фактически дистанционно управлял удаленным мощным компьютером всё это время, а не работал локально за простеньким ноутбуком. Вам могут просто не поверить в это!

Однако, одно маленькое “но”, все-таки может моментально омрачить это чудо и разрушить весь комфорт от такой работы.

Всё дело в том, что при совместной работе приложений Moonlight и Sunshine легко можно добиться фактически “риалтайм” трансляции всего что происходит на экране в удаленной сессии, но невозможно добиться идеальной передачи движений курсора и идеального скроллинга страниц в браузерах, таблицах и документах, даже если на стороне условного клиента с Moonlight используется мышь Logitech серии Master в режиме безынерционного скролла с дополнительно включенным в фирменном ПО от Logitech специальным режимом плавного скроллинга.

И ладно когда Вы работаете на низкоскоростном интернет-канале между устройствами, с диким пингом, но когда то же самое происходит и в локальной сети, в одном помещении - это становится неприятно и обидно. Вы уже видите “картинку” фактически в режиме реального времени, но управлять ею идеально плавно не можете!

А особенно обидно это становится, например, в следующей ситуации. У Вас имеется дома мощный стационарный компьютер, к которому подключено огромное количество периферии, 4-5 мониторов, куча внешних устройств, и все это вместе со столом и креслом организовано в своего рода “кокпит”, Вашу рабочую зону, к которой Вы не хотите быть привязаны постоянно даже в условиях дома, но и перемещать эту зону никуда не можете. И при этом Вам очень хочется, например, в любой момент полежать на удобном диване с тонким и легким ультрабуком или планшетом с большим экраном и не потерять возможность использовать всю мощь Вашего стационара, помноженную на супер автономность этого ультрабука или планшета, с дополнительным “профитом” в виде разгрузки спины, позвоночника, да и просто “пятой точки”.

Но без адекватного скролла и перемещений курсора мыши этого не получится.

Понимая это и в полной мере это ощутив, я принялся “крутить” настройки Sunshine и Moonlight. Я перелопатил кучу настроек, пытаясь из них выжать всё, но реальность оставалась суровой. Как только я начинал активно скроллить страницы где угодно в удаленной сессии, сразу же “вспоминал”, что “царь то - ненастоящий”! И я уже почти смирился с этим, пока в один прекрасный день совершенно случайно … не перепутал компьютерные мыши! Дело в том, что я использую сразу две компьютерные мыши Logitech серии Master, каждая из которых через свой персональный USB премник-передачик (или по BT) подключена к конкретному устройству. Одна мышь управляет ультрабуком, а другая - стационаром. И чтобы постоянно не переключать всего одну мышь на разные устройства, я просто одну мышь держал на столе со стационаром (для управления только им), а с другой - перемещаюсь по дому, преимущественно используя её с ультрабуком и планшетом.

И что же в такой ситуации получалось при работе приложений Moonlight и Sunshine?

Стационар честно транслировал “картинку” в сторону ультрабука на “космической” скорости локальной сети, легко выдавая мне даже 120 FPS на 4k разрешении, но мышь, подключенная к ультрабуку фактически должна была пройти двойной маршрут, когда управляла мощным стационаром в удаленной сессии. Именно в этот момент и возникают неминуемые лаги и срывы синхронизации, из-за которых, невозможно было получить идеально плавный скроллинг. Ведь приложениям Moonlight и Sunshine надо не просто “синхронизировать” курсор и скроллинг с видеопотоком, но еще и невероятно четко рассчитать все эти “микро импульсы” с “рывками” безынерционного скролла у Logitech, которые по сути должны были стать непрерывными, что становится практически невыполнимой задачей.

Но тут я, как и писал выше, я случайно перепутал мыши местами…

Я немедленно увидел идеальный скроллинг с настоящим эффектом “полного погружения”. Удаленная сессия больше ничем себя не выдавала, и я потерял возможность понимать, что я работаю не локально.

Что же произошло на самом деле? Получилось следующее. Когда я в очередной раз, работая на диване с ультрабуком через Moonlight и Sunshine с мощным стационаром, перепутал мыши, получилось что мышь, которая была подключена к стационару, оказалась у меня в руках. И с этого момента стационару и приложениям Moonlight и Sunshine больше не было никакой необходимости “сходить с ума”, пытаясь выстроить идеальную синхронизацию видеопотока с движениями мыши и с колесом безынерционного скролла. Той самой мыши, что совершенно логично ранее была подключена к ультрабуку.

Я фактически искусственно создал ситуацию, при которой мне больше вообще не надо было передавать координаты мыши и синхронизировать колесо скролла с видеопотоком в удаленной сессии, потому что работа локальной мыши просто … встроилась в удаленный видеопоток, при этом физически управляя стационаром.

Звучит невероятно глупо и смешно, но проблема “последней мили” была решена самым идиотским образом :-)

В итоге я получил то, что хотел, и теперь “тиражирую” всю мощь стационара фактически на любое “устройство отображения” в настоящем режиме “полного погружения”, правда в условиях отдельного взятого помещения.

Конечно же этот трюк не пройдет при реальном физическом удалении от условного сервера, так как радиус действия USB приемника-передатчика мыши (или её BT-предачтика) ограничен. Но и тут можно извратиться, и начать использовать великое и могучее приложение VirtualHere, но это уже совсем другая история…

Источник: https://habr.com/ru/articles/1096454/


Интересные статьи

Интересные статьи

Привет, Хабр! На связи команда Рег.облака, а это третья статья про Free Tier. В первой мы считали, что помещается в один‑два гигабайта памяти, во второй перевозили сайт с...
Привет, Хабр! Меня зовут Анастасия Соколенко и с теми, кто читал мои предыдущие статьи, мы уже знакомы. Я отвечаю за безопасную разработку в Битрикс, а здесь рассказываю о том, как разработчикам делат...
Автор: Денис ЗакусилоПриветствую всех неравнодушных! Это заключительная статья цикла о переходе от модульной архитектуры к сервисам.[Записки тимлида] Битрикс: от модулей к сервисам[Записки тимлида] Би...
В данной статье я хотел бы привести пример практического кейса использования метода requestIdleCallback, который возник у меня на проекте. Кейс сам по себе небольшой, замеры времени отработки функции ...
Исследователи применяли анализ тональности для совершенно разных русскоязычных текстов: постов из соцсетей, отзывов, новостных статей и книг. Как следствие, результаты их исследов...