Бесшовная трансляция экрана: минимизация задержек

Для организации трансляции экрана с минимальной задержкой исследовались различные подходы, включая ffmpeg, GetDC и DirectX. Использование ffmpeg показало свою неэффективность из-за задержки, возможно, связанной с внутренней работой библиотеки. Прямой захват экрана через GetDC также не обеспечил требуемой скорости. Наилучшие результаты были достигнуты с использованием DirectX DXGI API через Desktop Duplicate Api, который позволяет получать 60-90 кадров в секунду с минимальной задержкой, что сравнимо с OBS Studio.
Бесшовная трансляция экрана: минимизация задержек
Изображение носит иллюстративный характер

Передача данных по сети оказалась узким местом. Передача несжатых кадров через WebSockets требует пропускной способности в несколько гигабит в секунду, что делает этот метод непригодным для большинства сетей. Сжатие кадров с использованием libpng и JPEG не привело к успеху, так как процесс сжатия вносил задержку.

Использование WebRTC с кодеком H264 показало лучшие результаты, однако вносит небольшую задержку из-за шифрования и буферизации. Альтернативный подход с использованием gstreamer RTP over UDP позволил снизить задержку. Оптимизация разрешения картинки через videoscale также улучшило восприятие задержки.

В качестве готовых решений были протестированы Spacedesk и Chrome Remote Desktop. Spacedesk демонстрирует неплохую задержку, но иногда вызывает фризы. Chrome Remote Desktop обеспечивает стабильную работу, но имеет задержку около 400 мс. В итоге, наилучшая производительность была достигнута при использовании gstreamer RTP over UDP в связке с WebRTC, что позволило приблизиться к реальному времени, но не полностью повторить опыт использования физического монитора.


Новое на сайте

20065[b]СПКЯ стало СПМЯ: почему переименование болезни, затрагивающей миллионы женщин, заняло... 20064[b]Почему великая пирамида Гизы пережила все землетрясения за 4500 лет[/b] 20063[b]Генетика Homo erectus: что зубная эмаль рассказала о наших предках[/b] 20062[b]Кости в бухте эребус: что кости моряков Франклина рассказывают спустя полтора века[/b] 20061[b]Крупнейший плавучий ветрогенератор в мире: Китай испытывает установку у берегов... 20060[b]Карие глаза младенца стали индиго после лечения от COVID-19[/b] 20058[b]Почему серебряная чаша с Афиной пролежала в немецком лесу две тысячи лет?[/b] 20057[b]Дыра в атмосфере солнца: вспышка достигла пика и может зажечь полярное сияние[/b] 20056[b]Динго возрастом 950 лет: кто и зачем кормил могилу животного сотни лет?[/b] 20055[b]Томоэ гозэн: женщина-самурай, которая существовала на самом деле[/b] 20054[b]Что видели астронавты «Аполлона-12» над лунным горизонтом?[/b] 20053[b]Восковой блокнот на латыни и шёлковая туалетная бумага: кто посещал средневековый... 20052[b]Хантавирус на борту: 41 человек под наблюдением после рейса MV Hondius[/b] 20051[b]Зелёные камни в пещере Пиренеев: четыре тысячи лет медной металлургии[/b]
Ссылка