Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 16:21   #1
strbb
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию аналог радмина, сжатие скрина

Пишу аналог радмина по локальной сети, необходимо быстро сжать скриншот до 1.5 - 2 метров (как минимум), jpg, gif, png не подходят, слишком долго сжимают ... Есть ли форматы для быстрого сжатия изображения?
strbb вне форума Ответить с цитированием
Старый 20.12.2010, 16:51   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Не замечал, чтобы пересохранение в JPG или PNG происходило долго. В какой именно интервал времени необходимо уложиться?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.12.2010, 17:22   #3
strbb
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Не замечал, чтобы пересохранение в JPG или PNG происходило долго. В какой именно интервал времени необходимо уложиться?
Сейчас на это уходит 200-230 мсек, желательно уменьшить это время до 100-150.
strbb вне форума Ответить с цитированием
Старый 20.12.2010, 19:03   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вы видео транслируете или радмин делаете? Зачем такая частота обновления? Раза в секунду хватит с головой, максимум (если прям уж видео хочется) 2 Гц.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.12.2010, 19:36   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

и учитесь слать не весь экран а только нужную область.(измененную к примеру)
так тоже можно уменьшить трафик.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2010, 19:53   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Трафик, насколько я понимаю, здесь безграничен -
Цитата:
Пишу аналог радмина по локальной сети
, но замечание полезное.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.12.2010, 03:29   #7
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

а почему не TBitMap передоват?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 21.12.2010, 08:03   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
а почему не TBitMap передоват?
О_о а вы представляете, сколько будет передаваться битмап размером в пару десятков мегабайт?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.12.2010, 08:22   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Когда то делал типа радмина и передавал в Jpeg с интервалом в 1 сек. сеть при этом загружалась на 1-2%. (с битмапом 15-20%). использовал Indy 10
Код:
Procedure SendScreen(SSConnection:TIdContext);
var dc:HDC;
    ScreenCanvas:TCanvas;
    ScreenStream:TMemoryStream;
    ScreenRect:TRect;
    ScreenBM:TBitMap;
    SendJPEG:TJPEGImage;
begin
 ScreenRect:=Screen.DesktopRect;
 ScreenCanvas:=TCanvas.Create;
 ScreenCanvas.Handle:=GetDC(0);
 ScreenBM:=TBitMap.Create;
 SendJPEG:=TJPEGImage.Create;
 ScreenBM.Width:=Screen.Width;
 ScreenBM.Height:=Screen.Height;
 ScreenBM.Canvas.CopyRect(ScreenRect,ScreenCanvas,ScreenRect);
 ReleaseDC(0,ScreenCanvas.Handle);
 ScreenStream:=TMemoryStream.Create;
 SendJPEG.Assign(ScreenBM);
 //SendJPEG.CompressionQuality:=50;  //степень сжатия от 1 до 100
 //SendJPEG.Compress;
 SendJPEG.SaveToStream(ScreenStream);
 //ScreenBM.SaveToStream(ScreenStream);
 ScreenStream.Position:=0;
 try
  SSConnection.Connection.IOHandler.Write(ScreenStream,ScreenStream.Size,true);
 finally
  SSConnection.Connection.Disconnect;
 end;
 SendJPEG.Free;
 ScreenStream.Clear;
 ScreenStream.Free;
 ScreenBM.Free;
end;
SERG1980 вне форума Ответить с цитированием
Старый 21.12.2010, 08:23   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от strbb Посмотреть сообщение
Пишу аналог радмина по локальной сети, необходимо быстро сжать скриншот до 1.5 - 2 метров (как минимум), jpg, gif, png не подходят, слишком долго сжимают ... Есть ли форматы для быстрого сжатия изображения?
Вам надо не сжимать и слать "файлы" (изображения), а именно создать потоковое видео. Алгоритмы создания потокового видео существуют различные. (сам не вникал). К примеру, первое что в голову приходит, слать пиксели только те, которые изменились с предыдущего кадра. Как пример, можно создать битовую карту для строки изображения (bitmap'a) где будет указаны какие пиксели будут присланы, далее слать последовательно только новые пиксели, на стороне клиента принимать и отображать в соответствии со строкой и битовой картой куда какие новые пиксели выводить.

Ну это я так, полет фантазии, этот "пакет" еще можно сжать каким нибудь LZMA к примеру, для полного счастья.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить с видеофайла 3 скрина ? kakawkin Мультимедиа в Delphi 1 31.05.2010 21:05
Сжатие данных Horknee Свободное общение 18 10.05.2010 11:21
Производительность и сжатие изображений (аналог Radmin) elja_1989 Win Api 2 22.03.2010 14:44
сжатие фотографий AnKor94 Общие вопросы Delphi 1 15.03.2010 00:18
Сжатие строК! prizrak1390 Общие вопросы Delphi 16 02.01.2008 17:15