Dev ›
Вывод видео с IP видеокамеры на неуправляемую форму. ›
#1
07.02.15 9:30
Доброго времени суток!
Интересуют способы вывода вывода видео на неуправляемую форму.
На данный момент времени сделал через таймер из самописной ВК - при получении внешнего события от таймера, получается картинка с IP камеры, которая затем обновляет картинку на форме. В принципе работает. Частоту кадров в секунду регулирую частотой срабатывания таймера. Но возникает проблема отжирания оперативки. Чем дольше такое видео на форме, тем больше жрет оперативки. На компе в 8 гигами 1С отжирает при простое (при таком способе вывода видео) до 3 гиг. Через некоторое время сбрасывает до 1 гига и так по циклу - отожрало, сбросило, отожрало сбросила.
Как-то можно по другому это реализовать? ВК MediaBuild не предлагать.
Приветствуются как подсказки вывода штатными средствами 1С (если таковые имеются), так и использование ВК. Особенно приветствуется помощь в направлении написания ВК на Delphi по этому вопросу.
P.S. За код прошу сильно не ругать)
Код |
---|
Процедура ПриОткрытии()
КПП = Комп.КПП.Ссылка;
IPВъезд = СокрЛП(Комп.КПП.КамераВъезда.IPАдресКамеры);
ПутьВъезд = СокрЛП(Комп.КПП.КамераВъезда.ПутьИзображения);
ЛогинВъезд = СокрЛП(Комп.КПП.КамераВъезда.Логин);
ПарольВъезд = СокрЛП(Комп.КПП.КамераВъезда.Пароль);
Попытка
HTTPСоединениеВъезд = Новый HTTPСоединение(IPВъезд,,ЛогинВъезд,ПарольВъезд,,ложь);
HTTPЗапросВъезд = Новый HTTPЗапрос(ПутьВъезд);
Исключение
Состояние("ошибка соединения с IP камерой");
КонецПопытки;
КонецПроцедуры
Процедура ПолучитьКартинку_Въезда()
Попытка
ЭлементыФормы.КартинкаВъезд.Картинка = Новый Картинка;
Ответ = HTTPСоединениеВъезд.Получить(HTTPЗапросВъезд);
ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();
ЭлементыФормы.КартинкаВъезд.Картинка = Новый Картинка(ДвоичныеДанныеКартинки);
Исключение
Состояние("ошибка получение изображения с IP камеры");
КонецПопытки;
КонецПроцедуры
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "Laurent" Тогда
Если Событие = "Таймер" Тогда
ПолучитьКартинку_Въезда();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
|