Окно WEB-камеры на форме
Имеется файл HTML, выводящий поток с WEB-камеры в браузер.
Каким образом я могу отобразить окно WEB-камеры на своей форме?
CppWebBrawser выдает кучу ошибок JavaScript и ничего не выводит :(
Может быть можно окно IE, Firefox или Chrome запихать как-то в свою форму?
Имеется файл HTML, выводящий поток с WEB-камеры в браузер.
Каким образом я могу отобразить окно WEB-камеры на своей форме?
CppWebBrawser выдает кучу ошибок JavaScript и ничего не выводит :(
Может быть можно окно IE, Firefox или Chrome запихать как-то в свою форму?
CppWebBrawser и есть IE, подключенный через OLE.
С FF тоже можно проделать подобный фокус -> тут
Про хром ничего не слышал, может и можно с ним работать так, но сомневаюсь.
С FF тоже можно проделать подобный фокус -> тут
Про хром ничего не слышал, может и можно с ним работать так, но сомневаюсь.
С CppWebBrawser разобрался. Был не установлен AXIS Media Player. После установки стало работать, но не долго :(
Окошечко выжерает память и примерно через полчаса вылетает с ошибкой памяти.
Видимо буду копать в сторону Firefox. Может есть простой способ запустить внешнее приложение, но в окне моей формы?
Алсо, по коду посмотри, может в каком цикле иницируешь переменные, а потом забываешь их удалить или еще что. Не стоит сразу валить все на стороние приложения, ищи ошибку у себя. Скорее всего где-то delete забыл написать или [] забыл, когда освобождал массив.
Если выложишь код, то можно уже говорить, где ошибка.
Инклюдишь webcam.h На форму кидаешь Panel ,создаешь webcam cam; потом cam->start(Panel1->handle); и на Panel1 у тебя будет показыватся вебка через directshow фильтры
Делаю опрос таймером раз в секунду
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 работать?
Еще при каждой перерисовки картинка неприятно мигает. Не посоветуете, что можно сделать?
Кроме того, я бы отказался от использования компонентов Indy, и выделил бы получение данных в отдельный поток.
Кроме того, я бы отказался от использования компонентов Indy, и выделил бы получение данных в отдельный поток.
Заменил TIdHTTP на TNMHTTP. Утечка памяти уменьшилась, но не исчезла совсем. Пробовал компонент создавать/удалять - все равно кто-то память жрет :(
Черной завистью завидую Java-программистам с их сборщиком мусора.
C TImage полностью разобрался
Мерцание прекратилось, когда сделал прозрачную форму, а TImage поместил на панель.
Память TImage не кушает, если перед каждой загрузкой изображения делать Image1->Picture->Bitmap->FreeImage();
Попробуй создавать Indy объект не в цикле, а за его пределами где-то поближе к началу кода.
Да и вообще можно не создавать объекты, а просто их очищать, есть у потока функция clear(), loadfromstream и так очистит все, что надо.
Мигать может из-за того что не создан объект AntiFreeze. Indy сокеты синхронны, поэтому блокируют все вызовы в твоем приложении, пока не получат ответ, из-за этого может быть и передергивание.
2kot_
А альтернатива инди для борланда? Например, в XE уже ничего кроме Indy по сути не осталось. Indy фактически уже стандарт для builder и delphi и уходить от него глупо, если, конечно, не писать свои сокеты. Или не переходить на другую платформу.
2kot_
А альтернатива инди для борланда? Например, в XE уже ничего кроме Indy по сути не осталось. Indy фактически уже стандарт для builder и delphi и уходить от него глупо, если, конечно, не писать свои сокеты. Или не переходить на другую платформу.
что страшного в работе с сокетами напрямую?
а "индийские" компоненты - это вполне веская причина сменить платформу разработки :) ИМХО.
а "индийские" компоненты - это вполне веская причина сменить платформу разработки :) ИМХО.
Ну в принципе ничего страшного нет, но все тогда придется реализовывать ручками. Это протокол TCP или HTTP не такие сложные. А попробуй HTTPS или еще что-то повеселее. А что если пакеты пришли не 1-2-3? Все писать ручками не есть гуд, особенно когда время поджимает. Это дома можно тихонько ковырять сокеты и писать свою библиотеку, но это опять таки время и не на работе... Да и в самих сокетах нюансов не оберешь.
А инди компоненты не так страшны (хотя крови пьют изрядно из-за идеологии, что все у них вызывает исключения). По началу жутко бесят и работают не правильно, но потом привыкаешь использовать 3х-4хуровневые катчи. Да и не тянут инди компоненты на причину смены платформы, местами они даже удобны иногда.
Проверял сейчас в отладчике
Память забирается, когда IdHTTP получает ответ из интернета. После передачу в картинку память не меняется.
Код стал такой:
stream1->Position=NULL;
img1->LoadFromStream(stream1);
stream1->Clear();
Image1->Picture->Assign( img1 );
Все объекты создаю/уничтожаю вместе с формой