Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.02.2012, 17:46
Goodle Goodle вне форума
Прохожий
 
Регистрация: 21.03.2011
Сообщения: 32
Репутация: 10
По умолчанию Без тормозов

Здравствуйте! Опишу ситуацию:
Есть 10 ip-камер получаю изображение отдельных кадров каждые 40мс по таймеру через idHTTP, потом пришедшие JPG'и отправляю в TImage'ы, то есть получается у меня:
Timage - 10шт (Strech=true)
Ttimer - 10шт(для каждой камеры)
TidHTTP - 10шт(создаются и удаляются динамически в таймере)
На форме свойство DoubleBuffered:=true
Ну и размер приходящих изображений 640х480
Вообщем вся эта канетель тормозит со страшной силой, я понимаю что столько таймеров и хттп не нужно, это вопрос решаемый, а вот как заставить Перерисовываться Image'ы так что бы картинка шла реально как видео ума не приложу... Уже копал в сторону DXDraw, но что-то не допонял как можно его применить в моей ситуации...
Очень нужен совет, помогите пожалуйста!
Ответить с цитированием
  #2  
Старый 28.02.2012, 19:11
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

ну как минимум можно обновлять все image в одном таймере...
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #3  
Старый 28.02.2012, 19:24
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Лучше все-таки копай в сторону DXDraw. Так будет намного быстрее именно с выводом изображений.
Ответить с цитированием
  #4  
Старый 28.02.2012, 20:53
Goodle Goodle вне форума
Прохожий
 
Регистрация: 21.03.2011
Сообщения: 32
Репутация: 10
По умолчанию

friz, я говорю, про таймеры я знаю))))
YVitaliy, да то что работать будет быстрее понятно, я просто никак не воткну как DX конкретно в моем случае можно применить, очень много про реализацию игр, а у меня скорее слайдшоу только очень быстрое, и что-то не могу пока придумать как DX применить...
Двиньте на путь истинный...
Ответить с цитированием
  #5  
Старый 29.02.2012, 13:09
Goodle Goodle вне форума
Прохожий
 
Регистрация: 21.03.2011
Сообщения: 32
Репутация: 10
По умолчанию

Я тут задумался может, если использовать не idHTTP, а TCPClient может получится принимать видео поток более продуктивно (не по кадру, а в MJPG), только не пойму как мне отправить ответ... для примера:
Код:
IdHTTP1.Request.BasicAuthentication := True;
IdHTTP1.Request.Username := 'uName';
IdHTTP1.Request.Password := '********';
Этим кодом я логинюсь к камере, а вот в компоненте TCPClient, ничего подобного не нашел...
Да и еще вопрос по DXPaintBox, используя его методом:
Код:
DXPaintBox.Canvas.StretchDraw(Rect(0,0,DXPaintBox.Width,DXPaintBox.Height),JpgImage);
я получаю более высокую производительность?
Ответить с цитированием
  #6  
Старый 29.02.2012, 16:34
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

По поводу TCP - просто надо вручную написать и отправить заголовок для логина. Его формат можно найти в интернете или мб как-нибудь вытащить из idHTTP.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 29.02.2012, 16:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

что-то я не совсем понял: в таймерах делаешь запросы к камерам, но ведь Get у TIdHTTP синхронный (блокируемый). пока выполняется 1 - остальные стоят...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 01.03.2012, 09:00
Goodle Goodle вне форума
Прохожий
 
Регистрация: 21.03.2011
Сообщения: 32
Репутация: 10
По умолчанию

Про синхрон я не знал... может это тоже является причиной тормозов, так и не могу пока найти оптимального решения(
Ответить с цитированием
  #9  
Старый 01.03.2012, 09:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если камер всего 10, то просто создай на каждую по потоку и через Synchronize обновляй соотв. картинку.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter