Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] снятие скриншотов(для отправки по сети), помогите определиться с тактикой 
:(
    Опции темы
skyboy
Дата 14.11.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Задача: отправлять на удаленный ПК состояние экрана.
Про сеть упомянул в связи с желанием минимизировать объем передаваемых данных. Кроме того, при желании иметь на целевом компе комфортное кадрочередование(ну, не меньше 10 кадров в секунду) не хотел бы загружать мониторимый комп частыми вычислениями. Надумал три стратегии(метод мозгового штурма - сразу же ногами не пинать smile)
1. Съемка по таймеру.
Плюс: простота реализации.
Минусы: - нагрузка на сеть
              - нагрузка на процессор
2. Съемка по запросу клиента. Возможен вариант ответа "ничего не изменилось, используй предыдущую картинку".
Плюс: не требуют - не снимаем(меньше нагрузка на процессор мониторимой машины), меньше нагрузка на сеть(можно получать ответ "ничего не изменилось, рисуй, что было раньше")
Минусы: - необходимо как-то фиксировать, что "изменений не было" на мониториемой машине - либо побитовое сравнение образов, либо ещё как. 
             - при нескольких клиентах нагрузка на сеть нерационально высока(нельзя на запрос одного клиента бросить широковещательный запрос - остальным клиентам может не пригодиться)
3. Съемка по событию(перехват сообщения на перерисовку и подобное). 
Плюс: можем бросать при изменении широковещательный пакет, все остальное время не передавать ничего - нагрузка на сеть минимальна, процессор загружен только когда надо.
Минус: сложность реализации
---------------------
Вопрос: какие ещё возможны варианты?
PM MAIL   Вверх
dumb
Дата 14.11.2006, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 6
Всего: 158



очевидно, что 3 вариант оптимален. только вот думается, что без ограничения скорости "обновления" все равно не обойтись. и broadcast, наверное, лучше не делать - 2-3 секретарши, активно перебирающих претендентов на каких-нибудь "знакомства.ру", завалят сеть. smile
PM MAIL   Вверх
Akella
Дата 14.11.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 3
Всего: 329



тебе нужно сделать такую опцию, как в RAdmin (для регулировки нагрузки на сеть и на процессор):
1. количество снимков в минуту или секунду
2. глубина цвета.
PM MAIL   Вверх
skyboy
Дата 14.11.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



dumb, ну, некая "регистрация" клиентов все равно будет, и широковещение будет применяться только при количестве клиентов более 5-6, да и к секретаршам не попадет smile))
Цитата(Akella @  14.11.2006,  08:32 Найти цитируемый пост)
2. глубина цвета. 

некритично. сжимать буду JPEG - размеры вряд ли будут большие...
Цитата(Akella @  14.11.2006,  08:32 Найти цитируемый пост)
количество снимков в минуту или секунду

дык, если юзать вариант 2 или вариант 3 это вообще не надо - съемка будет инициироваться "когда надо" smile
PM MAIL   Вверх
artem1987
Дата 14.11.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 18.7.2006
Где: Калининград

Репутация: нет
Всего: нет



Цитата

3. Съемка по событию(перехват сообщения на перерисовку и подобное). 
Плюс: можем бросать при изменении широковещательный пакет, все остальное время не передавать ничего - нагрузка на сеть минимальна, процессор загружен только когда надо.
Минус: сложность реализации

если только на мониторимом компе проги со скромной графикой , представь у Picasa сколь WMPaint ходит.
--------------------
Don't ask me why, ask me how.
PM MAIL   Вверх
Alexeis
Дата 14.11.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Цитата(skyboy @  14.11.2006,  10:22 Найти цитируемый пост)
некритично. сжимать буду JPEG - размеры вряд ли будут большие...

 smile  smile 

Добавлено @ 18:10 
Еще бы в PNG жал smile .  Это же пол секунды кадр! + бешаная загрузка проца клиента.
Я бы вычитал два соседних кадра и жал все это в RLE, так хоть есть шанс, что машина успеет сжать. Да и разностная картинка будет иметь много черных полей, которые отлично и без нагрузки жмет это самое RLE. 

Это сообщение отредактировал(а) alexeis1 - 14.11.2006, 18:11


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Poseidon
Дата 15.11.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 5
Всего: 133



Я что-то не понял. skyboy, ты собираешься "фоткать" экран клиента и каждый раз отправлять картинку? Глупо. Я бы отправлял только то, что изменилось. Т.е. програма на "сервере" анализиует предыдущий "снимок" и сравнивает с нынешним. Разнице отправляет клиенту. Клиент принимет, анализиует что изменилось и отображает уже новую картинку, с учетом полученной разницы. Таким образом можно уменшить траффик в десятки раз, при этом не создавать эффект "кадрирования", как при "фотографировании" по таймеру.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
W1zArD
Дата 15.11.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: -1
Всего: 3



Poseidon если я не путаю... то gif работает на таком же принципе...
PM   Вверх
skyboy
Дата 15.11.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



ну, блин, маньяки %) я не спросил, что лучше, что - хуже... просто поинтересовался - имеются ли другие варианты... а вы сразу - в критику smile
Цитата(Poseidon @  14.11.2006,  23:03 Найти цитируемый пост)
Т.е. програма на "сервере" анализиует предыдущий "снимок" и сравнивает с нынешним. Разнице отправляет клиенту.

Ты об этом, Poseidon:
Цитата(alexeis1 @  14.11.2006,  17:06 Найти цитируемый пост)
Я бы вычитал два соседних кадра и жал все это в RLE, так хоть есть шанс, что машина успеет сжать. Да и разностная картинка будет иметь много черных полей, которые отлично и без нагрузки жмет это самое RLE. 

?

PM MAIL   Вверх
Poseidon
Дата 16.11.2006, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 5
Всего: 133



Цитата(skyboy @  15.11.2006,  23:31 Найти цитируемый пост)
Ты об этом, Poseidon:
 Скорее всего...



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
DelphiFun
Дата 1.1.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Хотелось всё-таки поднять этот вопрос...

Скажите, а в какой формат Вы бы порекомендовали сохранять кидаемый скриншот?
Чем потом жать или нет?
Видел тут RLE предлагали, это ли оптимальный вариант??
BMP, потом по нему RLE..?
PM MAIL   Вверх
skyboy
Дата 1.1.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



DelphiFun, если сам передаешь - зачем использовать какой-нить формат? сжимай в поток, распаковывай из потока... 
PM MAIL   Вверх
Alexeis
Дата 1.1.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



skyboy, конечно! Но кто мешает RLE самому написать, тем более, что у microsoft полностью описан алгоритм. Поскольку будет много черных полей, то RLE в этом случае подходит идеально. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
DelphiFun
Дата 2.1.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



А какие именно чёрные поля?
Мы отправляем ведь только изменённые куски..
PM MAIL   Вверх
skyboy
Дата 2.1.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



DelphiFun, в том-то и фишка: видимо ты просто неполностью прочитал посты. предлагается передавать только изменения: для этого делать между соседними кадрами попиксельный(можно пройтись по компонентам цвета) XOR - после этой операции одинаковые участки станут девственно( smile ) чёрными - и эти последовательности одинакового цвета RLE сожмет куда лучше jpeg.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.