|
#1
|
|||
|
|||
Без тормозов
Здравствуйте! Опишу ситуацию:
Есть 10 ip-камер получаю изображение отдельных кадров каждые 40мс по таймеру через idHTTP, потом пришедшие JPG'и отправляю в TImage'ы, то есть получается у меня: Timage - 10шт (Strech=true) Ttimer - 10шт(для каждой камеры) TidHTTP - 10шт(создаются и удаляются динамически в таймере) На форме свойство DoubleBuffered:=true Ну и размер приходящих изображений 640х480 Вообщем вся эта канетель тормозит со страшной силой, я понимаю что столько таймеров и хттп не нужно, это вопрос решаемый, а вот как заставить Перерисовываться Image'ы так что бы картинка шла реально как видео ума не приложу... Уже копал в сторону DXDraw, но что-то не допонял как можно его применить в моей ситуации... Очень нужен совет, помогите пожалуйста! |
#2
|
||||
|
||||
ну как минимум можно обновлять все image в одном таймере...
Последний раз редактировалось Admin, Сегодня в 10:32. |
#3
|
||||
|
||||
Лучше все-таки копай в сторону DXDraw. Так будет намного быстрее именно с выводом изображений.
|
#4
|
|||
|
|||
friz, я говорю, про таймеры я знаю))))
YVitaliy, да то что работать будет быстрее понятно, я просто никак не воткну как DX конкретно в моем случае можно применить, очень много про реализацию игр, а у меня скорее слайдшоу только очень быстрое, и что-то не могу пока придумать как DX применить... Двиньте на путь истинный... |
#5
|
|||
|
|||
Я тут задумался может, если использовать не idHTTP, а TCPClient может получится принимать видео поток более продуктивно (не по кадру, а в MJPG), только не пойму как мне отправить ответ... для примера:
Код:
IdHTTP1.Request.BasicAuthentication := True; IdHTTP1.Request.Username := 'uName'; IdHTTP1.Request.Password := '********'; Да и еще вопрос по DXPaintBox, используя его методом: Код:
DXPaintBox.Canvas.StretchDraw(Rect(0,0,DXPaintBox.Width,DXPaintBox.Height),JpgImage); |
#6
|
||||
|
||||
По поводу TCP - просто надо вручную написать и отправить заголовок для логина. Его формат можно найти в интернете или мб как-нибудь вытащить из idHTTP.
jmp $ ; Happy End! The Cake Is A Lie. |
#7
|
||||
|
||||
что-то я не совсем понял: в таймерах делаешь запросы к камерам, но ведь Get у TIdHTTP синхронный (блокируемый). пока выполняется 1 - остальные стоят...
Пишу программы за еду. __________________ |
#8
|
|||
|
|||
Про синхрон я не знал... может это тоже является причиной тормозов, так и не могу пока найти оптимального решения(
|
#9
|
|||
|
|||
Если камер всего 10, то просто создай на каждую по потоку и через Synchronize обновляй соотв. картинку.
|