
Собственный протокол экрана в Ремотик: только изменившиеся области, адаптивный FPS и экономия трафика
Разбираем, почему удалённый рабочий стол не обязан слать картинку целиком: dirty regions, частота кадров по активности и многопоточная передача в протоколе Ремотик.
Удалённый рабочий стол часто представляют так: каждую секунду по сети летит целый экран, как видеозвонок в высоком разрешении. Отсюда и страх: "на слабом интернете будет мыло", "месячный трафик съест за вечер", "открыл IDE и всё встало". В Ремотик другая модель. Собственный протокол передачи экрана шлёт не картинку целиком, а только то, что реально изменилось, подстраивает частоту кадров под активность и разносит тяжёлые обновления по нескольким сетевым потокам.
Почему "весь экран целиком" это плохая привычка
На типичном рабочем столе за секунду меняется мало. Курсор сдвинулся. Мигнул курсор в редакторе. Дописалась строка в терминале. Открылось меню. Фон, панели, соседние окна стоят на месте. Если каждый кадр кодировать и отправлять как полный кадр видео, вы платите трафиком и процессором за неизменённые пиксели.
Для удалённой помощи родителям, работы с документами или правки кода это особенно заметно: сцена почти статичная, а канал всё равно нагружают "как будто там фильм". Протокол Ремотик заточен под рабочий стол, а не под непрерывный видеопоток.
Dirty regions: обновляются только изменившиеся области
Экран делится на блоки. Хост сравнивает новый захват с предыдущим и помечает блоки, где пиксели реально отличаются. Соседние изменённые блоки склеиваются в прямоугольники, и в сеть уходят только эти области (dirty regions), закодированные как тайлы.
Если ничего не изменилось, новый видеокадр можно не слать вовсе. Если изменилась большая часть экрана, протокол переключается на полное обновление: так быстрее, чем собирать экран из сотен мелких кусков. Первый кадр сессии и периодический refresh тоже идут полным обновлением, чтобы картинка не "плыла" со временем.
Практический смысл простой. Печатаете в Word или листаете код: по сети идут узкие полоски вокруг текста и курсора. Перетащили окно на весь монитор: уйдёт более крупное обновление. Не надо вручную выбирать "качество" ради экономии, когда сцена и так спокойная.
Адаптивный FPS: частота кадров по активности, не мыло вместо чёткости
Второй рычаг: частота захвата. Когда канал успевает за картинкой, Ремотик держит более высокую частоту кадров. Если сеть не успевает и кадры начинают вытесняться в очереди отправки, частота шагает вниз по лестнице примерно так: 30 → 20 → 15 → 10 → 5 кадров в секунду. Когда отправка снова стабильна, частота постепенно поднимается обратно.
Важный нюанс: снижается именно частота обновлений, а не "качество кодирования ради экономии любой ценой". Цель: сохранить читаемый текст и чёткие края окон на рабочем столе, даже если канал узкий. Плавность может стать скромнее. Мыло вместо букв: не стратегия по умолчанию.
Если экран не меняется несколько секунд, захват уходит в режим покоя с очень низкой частотой опроса. Достаточно движения мыши, клавиши или буфера обмена на удалённой стороне: частота снова поднимается. Для IDE, таблиц и документации это как раз типичный ритм работы: долго смотрите, потом коротко действуете.
Многопоточность сети: тяжёлые обновления идут параллельно
Полное обновление экрана: самый тяжёлый пакет в сессии. В протоколе Ремотик такие refresh-кадры можно разнести по нескольким видео-потокам и собрать на стороне зрителя целиком, прежде чем показать. Инкрементальные dirty-пакеты при этом остаются упорядоченными: иначе кусок экрана мог бы застрять "старым", пока соседний уже обновился.
На быстрой сети вы это почти не замечаете. На среднем канале и при больших разрешениях разница ощущается как "первый кадр и крупные смены сцены приходят быстрее", без ощущения, что удалёнка ждёт один толстый файл.
Что это даёт на практике
- Меньше лишнего трафика на спокойном рабочем столе: не гоняем фон и неподвижные окна каждый кадр.
- Живее сессия на неидеальном интернете: протокол сначала режет частоту кадров, а не превращает текст в кашу.
- Понятнее поведение в паузах: смотрите документ без движения: канал отдыхает. Вернулись к вводу: обновления снова активны.
- Быстрее тяжёлые refresh за счёт параллельной передачи полного кадра по нескольким потокам.
Это не заменяет хороший канал и не делает магию из 3G в подвале. Но убирает типичную расточительность "видеострима рабочего стола", из-за которой удалёнка кажется тяжёлой ещё до того, как вы что-то сделали.
Для кого это особенно важно
- Работа из дома и в поездках: ноутбук в кафе, планшет в дороге, домашний ПК с IDE и браузером.
- ИТ-поддержка и фриланс: долгие сессии с документами, настройками и терминалом, где экран чаще стоит, чем "дышит" как видео.
- Помощь родственникам: слабый домашний интернет у второй стороны переносится спокойнее, когда протокол не шлёт лишнее.
Кратко
- Ремотик использует собственный протокол передачи экрана под рабочий стол.
- В сеть уходят изменившиеся области, а не каждый раз весь монитор.
- Частота кадров подстраивается под активность и состояние канала.
- Полные обновления можно передавать параллельно по нескольким потокам.
- Итог: меньше лишнего трафика и более предсказуемая удалёнка на реальном интернете.
Попробуйте сами: откройте сессию Ремотик на привычном рабочем столе и поработайте с текстом, браузером или IDE. Протокол как раз для таких сценариев, а не для "фильма с вашего монитора".