Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Окно WEB-камеры на форме

16K
08 февраля 2011 года
sav13
21 / / 01.10.2006
Здравствуйте

Имеется файл HTML, выводящий поток с WEB-камеры в браузер.
Каким образом я могу отобразить окно WEB-камеры на своей форме?
CppWebBrawser выдает кучу ошибок JavaScript и ничего не выводит :(
Может быть можно окно IE, Firefox или Chrome запихать как-то в свою форму?
33K
08 февраля 2011 года
hivewarrior
205 / / 16.11.2010
Цитата: sav13
Здравствуйте

Имеется файл HTML, выводящий поток с WEB-камеры в браузер.
Каким образом я могу отобразить окно WEB-камеры на своей форме?
CppWebBrawser выдает кучу ошибок JavaScript и ничего не выводит :(
Может быть можно окно IE, Firefox или Chrome запихать как-то в свою форму?



CppWebBrawser и есть IE, подключенный через OLE.
С FF тоже можно проделать подобный фокус -> тут
Про хром ничего не слышал, может и можно с ним работать так, но сомневаюсь.

16K
08 февраля 2011 года
sav13
21 / / 01.10.2006
Цитата: hivewarrior
CppWebBrawser и есть IE, подключенный через OLE.
С FF тоже можно проделать подобный фокус -> тут
Про хром ничего не слышал, может и можно с ним работать так, но сомневаюсь.



С CppWebBrawser разобрался. Был не установлен AXIS Media Player. После установки стало работать, но не долго :(
Окошечко выжерает память и примерно через полчаса вылетает с ошибкой памяти.
Видимо буду копать в сторону Firefox. Может есть простой способ запустить внешнее приложение, но в окне моей формы?

33K
09 февраля 2011 года
hivewarrior
205 / / 16.11.2010
Просто в нашей жизне ничего не бывает. Я тебе ссылку дал, как можно подключить FF себе в приложение.

Алсо, по коду посмотри, может в каком цикле иницируешь переменные, а потом забываешь их удалить или еще что. Не стоит сразу валить все на стороние приложения, ищи ошибку у себя. Скорее всего где-то delete забыл написать или [] забыл, когда освобождал массив.

Если выложишь код, то можно уже говорить, где ошибка.
277
09 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Вот тебе примерчик вебкамеры без всяких премудростей:
Инклюдишь webcam.h На форму кидаешь Panel ,создаешь webcam cam; потом cam->start(Panel1->handle); и на Panel1 у тебя будет показыватся вебка через directshow фильтры
16K
10 февраля 2011 года
sav13
21 / / 01.10.2006
Пытаюсь получать картину с камеры через IdHTTP
Делаю опрос таймером раз в секунду

 
Код:
TJPEGImage *img1        = new TJPEGImage;
   TMemoryStream *stream1  = new TMemoryStream;
   TIdHTTP *http1          = new TIdHTTP( this );
   http1->Get("http://webcam.perm.ru/img.php?camera_id=5&resolution=320x240", stream1);
   stream1->Position=NULL;
   img1->LoadFromStream(stream1);
   Image1->Picture->Assign( img1 );
   delete img1;
   delete stream1;
   delete http1;


Память все равно утекает :(
Где может быть утечка? Может Image1 тоже через new/delete работать?

Еще при каждой перерисовки картинка неприятно мигает. Не посоветуете, что можно сделать?
1
10 февраля 2011 года
kot_
7.3K / / 20.01.2000
Я бы убрал создание/удаление объектов из этого кода - это весьма затратная операция.
Кроме того, я бы отказался от использования компонентов Indy, и выделил бы получение данных в отдельный поток.
16K
10 февраля 2011 года
sav13
21 / / 01.10.2006
Цитата: kot_
Я бы убрал создание/удаление объектов из этого кода - это весьма затратная операция.
Кроме того, я бы отказался от использования компонентов Indy, и выделил бы получение данных в отдельный поток.



Заменил TIdHTTP на TNMHTTP. Утечка памяти уменьшилась, но не исчезла совсем. Пробовал компонент создавать/удалять - все равно кто-то память жрет :(
Черной завистью завидую Java-программистам с их сборщиком мусора.

C TImage полностью разобрался
Мерцание прекратилось, когда сделал прозрачную форму, а TImage поместил на панель.
Память TImage не кушает, если перед каждой загрузкой изображения делать Image1->Picture->Bitmap->FreeImage();

33K
10 февраля 2011 года
hivewarrior
205 / / 16.11.2010
2sav3
Попробуй создавать Indy объект не в цикле, а за его пределами где-то поближе к началу кода.
Да и вообще можно не создавать объекты, а просто их очищать, есть у потока функция clear(), loadfromstream и так очистит все, что надо.

Мигать может из-за того что не создан объект AntiFreeze. Indy сокеты синхронны, поэтому блокируют все вызовы в твоем приложении, пока не получат ответ, из-за этого может быть и передергивание.

2kot_
А альтернатива инди для борланда? Например, в XE уже ничего кроме Indy по сути не осталось. Indy фактически уже стандарт для builder и delphi и уходить от него глупо, если, конечно, не писать свои сокеты. Или не переходить на другую платформу.
33K
10 февраля 2011 года
hivewarrior
205 / / 16.11.2010
А ты уверен, что память кушается именно в этом модуле? Может еще есть где интересные места?
1
10 февраля 2011 года
kot_
7.3K / / 20.01.2000
Цитата: hivewarrior
2sav3
2kot_
А альтернатива инди для борланда? Например, в XE уже ничего кроме Indy по сути не осталось. Indy фактически уже стандарт для builder и delphi и уходить от него глупо, если, конечно, не писать свои сокеты. Или не переходить на другую платформу.


что страшного в работе с сокетами напрямую?
а "индийские" компоненты - это вполне веская причина сменить платформу разработки :) ИМХО.

33K
10 февраля 2011 года
hivewarrior
205 / / 16.11.2010
Цитата: kot_
что страшного в работе с сокетами напрямую?
а "индийские" компоненты - это вполне веская причина сменить платформу разработки :) ИМХО.



Ну в принципе ничего страшного нет, но все тогда придется реализовывать ручками. Это протокол TCP или HTTP не такие сложные. А попробуй HTTPS или еще что-то повеселее. А что если пакеты пришли не 1-2-3? Все писать ручками не есть гуд, особенно когда время поджимает. Это дома можно тихонько ковырять сокеты и писать свою библиотеку, но это опять таки время и не на работе... Да и в самих сокетах нюансов не оберешь.

А инди компоненты не так страшны (хотя крови пьют изрядно из-за идеологии, что все у них вызывает исключения). По началу жутко бесят и работают не правильно, но потом привыкаешь использовать 3х-4хуровневые катчи. Да и не тянут инди компоненты на причину смены платформы, местами они даже удобны иногда.

16K
10 февраля 2011 года
sav13
21 / / 01.10.2006
Цитата: hivewarrior
А ты уверен, что память кушается именно в этом модуле? Может еще есть где интересные места?



Проверял сейчас в отладчике
Память забирается, когда IdHTTP получает ответ из интернета. После передачу в картинку память не меняется.
Код стал такой:

 
Код:
IdHTTP1->Get("http://webcam.perm.ru/img.php?camera_id=5&resolution=320x240",stream1);
   stream1->Position=NULL;
   img1->LoadFromStream(stream1);
   stream1->Clear();
   Image1->Picture->Assign( img1 );


Все объекты создаю/уничтожаю вместе с формой
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог