(0) Автор, поправьте, пожалуйста, в названии понятие "вёб" на одно из общепринятых понятий: веб, вэб (или используйте его англоязычное написание /web/). Честно говоря, непривычно как-то. А так - тема интересная. Direct-X (DirectShow - это как раз тот набор компонентов, позволяющий работать с видео-потоками) - на данный момент, как мне кажется, самый функциональный набор решений для работы с ними в OS Windows.
Цена компоненты несколько завышена (imho). Есть более функциональные компоненты для работы с web-камерами, размещёнными на infostart.ru.
(1) premier, сейчас поправлю и описание и цену понижу.
Пример кода
Функция КартинкаИзСтроки(стрКартинка, УникальныйИдентификатор)
// Функция принимает изображение в base64 формата BMP.
ДвоичныеДанные = Base64Значение(стрКартинка); // Получаем двоичные данные.
мКартинка = Новый Картинка(ДвоичныеДанные, Ложь); // Создаем картинку
мКартинкаСжатая = мКартинка.Преобразовать(ФорматКартинки.PNG); // Преобразование в PNG но оно ни как не влияет
мАдресИзображения = ПоместитьВоВременноеХранилище(мКартинкаСжатая, УникальныйИдентификатор); // Поместить ссылку в реквизит формы
Возврат мАдресИзображения;
КонецФункции
.....
//Получение данных
резПодключения = ПодключитьВнешнююКомпоненту(АдресМакетКамера, "Компоненточка", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.Компоненточка.dsWebCam");
ВерсияДрайвера = Компонента.Версия;
//Список камер возвращается строкой через разделитель строки
рез = Компонента.СписокКамер();
муСтр = Новый ТекстовыйДокумент;
муСтр.УстановитьТекст(рез);
dsWebCam.ИмяКамеры = муСтр.ПолучитьСтроку( 0 );
dsWebCam.Старт();
Если dsWebCam.Успех Тогда
стрКартинка = dsWebCam.стрКартинка;
Если Не стрКартинка = Неопределено Тогда
// Вызовем процедуру преобразующую base64 в картинку PNG
АдресWebКартинкиХ = КартинкаИзСтроки(стрКартинка, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
13.
nsirotkin@mail.ru
7305.06.19 09:58 Сейчас в теме
Скачал компоненту. Окно с видео открывается, но в результате dsWebCam.Успех=Ложь Win7Sp1 (1C 8.3.14.1630), версия dll 2.2.1.6.
Что еще можно посмотреть/сделать?
ps: Тестовую обработку было бы полезно приложить в архив для скачивания... Версии x64 нет/не будет?
upd: убрал макет с компонентой
(13) в вашей обработке немного можно подправить код
Функция КартинкаИзСтроки(стрКартинка, УникальныйИдентификатор)
в стрКартинка уже двоичные данные приходят (если нет - постучите в личку).
--
В целом проверил - работает.
directX установлен ?
После вызова: dsWebCam.Старт(), открывается видео-окно, в нем нажимаю "сфотографировать" и далее по условию не проходит (Если dsWebCam.Успех Тогда ... ):
dsWebCam.Успех == Ложь
Подскажите в чем может быть проблема?
PS:
32бит, 8.3.12.1529. На более новых платформах не тестировал.
виртуальне веб камеры, вечером дома попробую на "железной" - отпишусь.
(16) не в курсе , что это за камеры.
Успеха нет видимо потому, что не выходит вывод с этой камеры из BMP в JPG запихнуть.
Опять же - с обычными камерами работает.
С пробросом в РДП средствами винды тоже работает.
От версии 1С не зависит - работает и на 8.3.15.1700.
Тут что-то специфическое в виртуальности.
(17) проверил на железной камере, на другой конфигурации ПК - результат тот-же :(
Видео с камеры транслируется. Но в строку ничего не приходит:
&НаКлиенте
Функция ПодключитьКамеру(ID) Экспорт
Если Не ПроинициализироватьКомпоненту() Тогда
Возврат НСтр("ru= 'Компонента не установлена'");
КонецЕсли;
dsWebCam.ИмяКамеры = ID;
dsWebCam.Старт();
Если dsWebCam.Успех Тогда
стрКартинка = dsWebCam.стрКартинка;
сообщить(dsWebCam.стрКартинка);
Если Не стрКартинка = Неопределено Тогда
АдресКартинки = КартинкаИзСтроки(стрКартинка, УникальныйИдентификатор);
КонецЕсли;
иначе
сообщить("Ничего не пришло") /// *** валится сюда *** ///
КонецЕсли;
КонецФункции
Показать
Возможно кокой-то "Дельфийской" компоненты не хватает. Конвертация BMP->JPG каким методом происходит? Эксепшены посмотреть нигде нельзя в логах каких-нибудь?