2012-01-21 4 views
1

В настоящее время я работаю над некоторым программным обеспечением, которое захватывает изображение вашего монитора и отправляет его клиентам через Интернет. До сих пор я работаю в своей локальной сети, но когда я иду тестировать его через Интернет, вряд ли кто-нибудь из изображений перейдет к клиенту.Лучшее сжатие изображения для C#

Я использую Lidgren для своих сетей. На данный момент я получаю растровое изображение с экрана, конвертирую его в JPEG с 30 качеством, G-zip и отправляю его на своем пути. Каждое изображение имеет размер около 80 КБ, и я пытаюсь отправить 10 изображений в секунду клиенту. Теперь это похоже на 7-мегабитное соединение для загрузки, мин - всего 2 мбит.

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

Любая помощь очень ценится, спасибо!

+1

Вы пытались уменьшить размеры изображений? – ChrisF

+0

Нет, у меня нет, но я хотел бы попробовать отправить изображение в разрешении экрана, хотя я думаю, что это довольно сложно. Я мог бы немного уменьшить его. – Jamie

+0

Ну, я думаю, что это или получить лучшее соединение :) – ChrisF

ответ

4

Вам действительно нужно отправлять весь кадр каждый раз? Не могли бы вы просто отправить то, что изменилось между текущим и предыдущим кадром, а затем применить эти изменения к кадру клиента, чтобы обновить его? Это должно быть довольно быстро, если сервер не смотрит видео или что-то подобное. This answer предполагает, что оба RDP (Microsoft) и VNC используют для просмотра на удаленном рабочем столе.

Для получения некоторых идей о том, как это сделать, см. https://stackoverflow.com/a/4098515/171703 и https://stackoverflow.com/a/1876848/171703.

+0

Спасибо за вашу помощь :) – Jamie