>
Содержание

Назначение

По сути – это инструмент, который позволяет применять внешнюю компоненту во многих самых различных отраслях.

Что может наша внешняя компонента?

Приведем примеры далеко не всех возможностей внешней компоненты:

 

·         Контроль продавцов и покупателей, запись видео с камер и привязкой к документам 1С;

·         Создание фотографий сотрудников в отделе кадров при приеме на работу из 1С;

·         Создание скриншотов (снимков рабочего стола) из 1С;

·         Помимо записи видео, наложение дополнительной текстовой информации на видео.

 

Важно понимать, что мы предоставляем лишь инструмент, с помощью которого можно все это реализовать. Так же, в комплект поставки включена демо-конфигурация, которая иллюстрирует работу с внешней компонентой.

Основные возможности

1)      Поддержка различных web-камер:

a.       Поддержка стандартных и HD-веб камер (Axis, Bowya, Bosch, Canon, Convision, Digicom, EasyN, D-Link, Panasonic, Sanyo, Silicon, Sony, Surecom, TP-Link и многие другие);

b.      Профессиональные HD-карты видео-захвата, (например, BlackMagic Decklink);

c.       GigE камеры (PointGrey cameras);

2)      Поддержка устройств видео захвата:

a.       PCI/PCIe аналоговые композитные карты видео захвата (например, OsPrey 210, OsPrey 440)

b.      аналоговый композитный захват USB (например, Easycap);

c.       Различные устройства видео захвата, в том числе в формате H264 или MPEG аппаратного кодирования (например, AverMedia Live Gamer Portable);

d.      Экспресс-карты видео захвата (например, TimeLeak HD capture);

3)      Поддержка различных IP-камер:

a.       В режиме RTSP H264/AAC и MPEG4;

b.      В режиме HTTP/MPEG, JPEG или ASF;

c.       Камер с аутентификацией (логин/пароль);

d.      Прямая потоковая передача по протоколу RTSP, или потоковая передача по RTSP, RTMP или HTTP с медиа сервера;

4)      Создание фото с поддерживаемых устройств как с пред просмотром, так и без.

5)      Запись видео/аудио и сжатие записанного видео/аудио на лету с использованием видео/аудиокодеков в форматы AVI, MP4, MOV, WMV/ASF, MKV, FLV, AVI, Ogg/Theora, WebM, как с пред просмотром, так и без.

6)      Создание скриншотов и запись с рабочего стола фото и видео;

7)      Размещение на изображениях и видео собственных оверлейных данных:

a.       Логотипов;

b.      Текста;

8)      Обрезка изображений;

Ограничения

Поддерживаемые ОС: MS Windows XP/2000/2003/Vista/7/8/8.1/10.

Версия 1С: 8.2/8.3/8.4 обычные или управляемые формы.

В демо-версии имеются следующее ограничения по созданию фото и видео:

-          Создание фото происходит с 15 секундной задержкой, и иногда вместо фото появляется изображение с надписью: «Это демо-версия внешней компоненты!».

-          Создание видео происходит продолжительностью 60 секунд. После чего запись останавливается.

-          Создание скриншотов происходит с 15 секундной задержкой.

Какие web-камеры поддерживаются?

Нашей внешней компонентой поддерживаются все современные видеокамеры. Как правило, они идут с USB-входом, а также содержат комплект драйверов, которые позволяют захватывать фото и видео.

В режиме записи видео поддерживается запись звука. Для этого необходимо дополнительно к камере к системному блоку подсоединить микрофон и установить для него драйвера. Так же есть видеокамеры, которые сразу содержат микрофон.

Качество записи фото и видео зависит от видео камеры. При создании фото и видео с камеры, программно можно изменять характеристики записываемого фото и видео (разрешение фото и видео, используемые кодеки и свойства).

Какие IP-камеры поддерживаются?

Ответ прост: почти все современные!

Конкретней: все ip-камеры, которые поддерживают работу Motion JPEG (MJPG) или JPG режиме, а также ip-камеры с поддержкой H264/MPEG4 режима после установки RTSP/RTMP фильтра, который идет в комплекте с решением.

Но тут важно понимать, что компонента работает не с IP-адресом камеры, а с потоком. Для разных ip-камер, строка подключения будет разная.

Например, для камер Axis:
Для порта 80, строка подключения будет: А для порта 10120:
Ниже строки подключения к конкретным моделям камер (не забудьте добавлять ip-адрес, камеры в начале).
Если вашей камеры нет в списке указанных, то Вам необходимо найти в документации к камере RTSP-поток вашей камеры и подключиться к нему, если же этого нет, то пробуйте комбинации от других камер.

A-Linking
/GetData.cgi

Airlink
/mjpeg.cgi
/cgi/mjpg/mjpeg.cgi
/cgi/jpg/image.cgi

Airlive
/video.mjpg
/mjpg/video.mjpg

Airwave
/cgi-bin/pusher.cgi

Arecont
/mjpeg?res=full&x0=0&y0=0&x1=100%&y1=100%&quality=12&doublescan=0&fps=1&ver=HTTP/1.1
/image?res=half&x0=0&y0=0&x1=1600&y1=1200&quality=15&doublescan=0


Aviosys
/GetData.cgi

Aviosys 9060-I
/cgi-bin/Stream?Video?Authorization=

Axis IP camera in MJPEG format
/axis-cgi/mjpg/video.cgi
/axis-cgi/mjpg/video.cgi?resolution=352x240 (the resolution specified must be available on the IP camera, look at the camera video settings panel)

Axis (IP video server, several cameras) in MJPEG format
/axis-cgi/mjpg/video.cgi?camera=1&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=2&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=3&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=4&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=quad&resolution=704x576 (4 x 4 layout of the 4 inputs)

Bowya (here)
/video.cgi

Bosch
/snap.jpg

Canon (VB-C50, VB-C60, etc...)
/-wvhttp-01-/
/-wvhttp-01-/GetOneShot
/-wvhttp-01-/GetOneShot?frame_count=no_limit
/-wvhttp-01-/GetStillImage

Convision
/fullsize.push?camera=1&sleep=15

Digicom
/mjpeg.cgi

D-Link (DSC2121)
/video/mjpg.cgi

D-Link
/video/mjpg.cgi
/video.cgi
/mjpeg.cgi
/cgi-bin/video.jpg
/IMAGE.jpg
/cgi-bin/video.vam
/_gCVimage.jpg

EasyN
/video.cgi
/videostream.cgi
/videostream.cgi?resolution=8
/videostream.cgi?resolution=8&rate=13
/videostream.cgi?user=username&pwd=password

Edimax
/jpg/image.jpg
/mjpg/video.mjpg
/snapshot.cgi

Ego PT-200
/cgi-bin/sf.cgi

Foscam
/videostream.cgi
/snapshot.cgi

Fulicom FC-CR1060
/cgi-bin/sf.cgi

Gadspot
/Jpeg/CamImg.jpg
/GetData.cgi?Status=0

Goscam
/cgi-bin/Stream?Video?Acc=USER?Pwd=PASSWORD?webcamPWD=RootCookies00000
(replace USER and PASSWORD by their respective values)

Kingnow PT200
/cgi-bin/sf.cgi

Hamlet
http://www.hamletcom.com/ProductDetails.aspx?ProductCode_EQ_HNIPC30W
/mjpeg.cgi

Intellinet
/jpg/image.jpg
or
/temp/image.jpg
(you may have to enable the direct HTTP image access in the setup of the camera)
Intellinet NCS18
/jpg/image.jpg

IP Cam waterproof Infrared IP Camera: http://ipcam.en.ecplaza.net/11.asp
/snapshot.cgi

IQeye
/now.jpg?snap=spush

JVC (e.g. VN-X35U/235U)
/api/video?encode=jpeg&framerate=15&boundary=on

Linksys
/img/snapshot.cgi?size=2
/img/video.mjpeg
/img/mjpeg.cgi
(MJPEG mode activated with SendIPCameraCommand ("/adm/file.cgi?h_videotype=mjpeg&todo=save")

mms://x.x.x.x/img/video.asf
(ASF mode activated with SendIPCameraCommand ("/adm/file.cgi?h_videotype=mpeg4&todo=save")

Linudix
/cgi-bin/nph-update_4ch.cgi?ch=1

Lumenera
/cgi-bin/nph-video

Marmitek
/cgi/mjpg/mjpeg.cgi

Predefined positions:
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=Position1');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=Position2');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=home');
...
Pan/tilt control:
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=up');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=right');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=down');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=left');

Mobotix
/record/current.jpg
/control/faststream.jpg?stream=full
/faststream.jpg?stream=full&fps=1.0 (1 fps)
/faststream.jpg?stream=full&fps=3.0 (1 fps)
/faststream.jpg?stream=full&fps=0 (max frame rate)

Moxa
//cgi-bin/video.jpg

Panasonic
/nphMotionJpeg?Resolution=640x480&Quality=Clarity
/cgi-bin/nphContinuousServerPush
/SnapshotJPEG?mode=Refresh
/cgi-bin/camera

Pixord
/Getimage.cgi
/Getimage?camera=1&fmt=full (full size)
/Getimage?camera=1&fmt=qsif (half size)
/Getimage?camera=1&fmt=sif (quarter size)

PLANET ICA-108
/jpg/image.jpg

Qnap
/cgi/mjpg/mjpeg.cgi

Samsung SNB
/video?submenu=mjpg
/video?submenu=jpg

Sanyo
/liveimg.cgi?serverpush=1 (MJPEG mode)
/liveimg.cgi (Jpeg mode)

Sharkx
/stream.jpg

Silicon
/snapshot.cgi

Skyway Security
/GetData.cgi?Status=0
/Jpeg/CamImg.jpg

Sony
/image
/image?speed=0
/oneshotimage.jpg

Shenzen Sunsky S-NC-0201: http://www.sun-usb.com/product/details/S-NC-0201.htm
/cgi-bin/sf.cgi

Surecom
/mjpeg.cgi

Swann IP-3G ConnectCam 1000
/cgi/jpg/image.cgi

Topcom
http://www.topcom.net/fiche.asp?p_EQ_wirelessipcam2000
/mjpeg.cgi

Toshiba
/__live.jpg?&&&
getstream.cgi?10&10&&&10&0&0&0&0

TP-Link
/jpg/image.jpg
/video.mjpg
(the "/video.mjpg" MJPEG streaming is available only after disabling the RTSP streaming and rebooting the camera)

Trendnet: http://trendnet.com/products/products.asp?cat=48
/goform/video (e.g. TV-IP201W)
/goform/video2 (e.g. TV-IP201W)
/cgi/mjpg/mjpg.cgi (e.g. TV-IP410)
/GetData.cgi
/image.jpg

Vilar
/cgi-bin/sf.cgi

Vivotek
/video.mjpg (IP71.., IP 73.., VS71.. cameras. Be sure to enable the MJPG mode in the video settings)
/cgi-bin/video.jpg
/cgi-bin/viewer/video.jpg

Y-Cam
/stream.jpg

Zavio
/jpg/image.jpg

 


Возможности RTSP/RTMP/HTTP фильтра

- Получать аудио / видео источников в RTSP, RTMP, HTTP, UDP, MMSh форматов потоково,

- Получить webradios источников в RTSP / RealAudio или форматов потокового Shoutcast,

- Подключить асинхронно к URL, не блокируя основной поток (фильтр граф получает уведомление, когда соединение завершается),

- Декодировать потоки с низкой задержкой и выставить несжатое видео и / или аудио выходных контактов,

- Применять несколько текстовых наложений над декодированные кадры,

- Настроить яркость, тон, насыщенность,

- Запись в то же время видеопотоков в своем родном формате без перекодирования, непосредственно в файл (MP4, FLV, MOV, AVI, MKV или файл),

- Захват снимков в растр памяти или в файл,

- Кодировать аудио потоки в PCM, MP3 или AAC, в зависимости от имени файла записи (например, H264 / AAC для записи MP4),

- Во время записи, создавать новые файлы на лету без потери кадров и без паузы / остановки / перезагрузки график.

Фильтр содержит примеры возможности обратного вызова. Она включает в себя внутренне необходимые мультиплексоры (MP4, FLV, MOV, AVI и MKV MUX) и не перекодировать в H264, он сохраняет непосредственно родные образцы H264 в файл.

Если аудио запись включена аудио поток кодируется в PCM, MP3 или AAC, в зависимости от формата записывается (например, H264 / AAC для MP4).

Установка RTSP/RTMP/HTTP фильтра для IP-камер

В папке с дистрибутивом присутствует файл:

«RTSP, RTMP, HTTP DirectShow Source Filter\DatasteadRTSPFilterInstaller.exe»

Который является само-распаковывающимся архивом и содержит фильтр.

- На 32-битных ОС, устанавливаются и регистрируются x86 бинарные файлы.

- На 64-битных ОС, устанавливаются и регистрируются x86 и x64 бинарные файлы.

 

Чтобы автоматически установить фильтр из собственного установщика без вмешательства пользователя, запустите файл DatasteadRTSPFilterInstaller.exe и установите его.

Активация

Следует с осторожностью относится к активации внешней компоненты. Активация внешней компоненты «привязывается» к тому компьютеру, на котором она была запущена. Полученный код активации может быть активирован ровно столько раз, сколько было куплено лицензий.

 

Активация можно произвести несколькими способами.

Способ 1. Активируем из 1С

Шаг 1. Получение ключа активации используя полученный код активации и идентификатор компьютера из окна активации.

Это можно сделать несколькими способами:

Вызывать программно форму фотографирования и в левом нижнем углу в открывшейся форме в подменю нажать «Регистрация». Вот как это выглядит:


000001.jpg

Шаг 2. После нажатия откроется вот это окно:

000002.jpg

Шаг 3. Обратите внимание указан ID компьютера. Он будет разным для каждого из компьютеров, где будет активация. После нажатия на ссылку «Выполнить активацию» откроется сайт, где необходимо активировать решение.

000003.jpg

Шаг 4. После копирования необходимо вставить обратно в программу и нажать «Зарегистрировать».

00004.jpg

Шаг 5. Перезапустите конфигурацию для того, чтобы закончить процесс активации.

Обратите внимание! В конфигурации должна присутствовать обработка событий (процедура ВнешнееСобытие) как в демо-версии у основной формы обработки «МediaBuild_Демонстрация». Каждый такой ключ сохраняется отдельно в регистр сведений с настройками и присваивается на том компьютере, где был активирован при загрузке настроек ВК. Для каждого компьютера, где происходит активация ключ разный!

Способ 2. Регистрация через программный вызов окна регистрации из 1С

В демо-конфигурации есть кнопка «Активация».

000005.jpg

Посмотрите, как она работает в демо-версии и вызовите ее самостоятельно в своем решении.


Проверка лицензии

После регистрации возможно открыть окно регистрации и проверить на кого зарегистрирована лицензия и ее параметры.

000006.jpg

После нажатия гиперссылки:

000007.jpg


Работа с внешней компонентой

Опишем все свойства и методы внешней компоненты.

События из внешней компоненты в 1С

Во время работы во внешней компоненте могут срабатывать определенные события, которые не зависят от 1С. Обработка таких событий осуществляется на стороне 1С в предопределенной процедуре формы или модуля приложения. В первом параметре процедуры передается параметр «Источник», он всегда равен: «MediaBuild» и говорит о том, что событие пришло от ВК. Вторым параметром идет тип события «Событие[Число]» (тип Строка обязателен), которые отвечает на вопрос, а что это за событие и от какой камеры оно пришло. И, наконец, третьим параметром идет параметр «Данные» (тип Строка не обязателен). Он хранит данные, которые может передать ВК.

Для того, чтобы можно было принимать события от ВК в открытой форме определите встроенное событие формы ВнешнееСобытие:

000008.jpg

А вот описание процедуры:

&НаКлиенте 
Процедура ВнешнееСобытие(Источник, СобытиеИКамера, Данные) 
         // Обработка событие от внешней компоненты MediaBuild 
Если Источник = "MediaBuild" Тогда 
      Событие = Лев(СобытиеИКамера, Найти(СобытиеИКамера, "[") - 1); // Что за событие 
    НомерКамерыСобытия = Число(Сред(СобытиеИКамера, Найти(СобытиеИКамера, "[") + 1, 
      Найти(СобытиеИКамера, "]") - Найти(СобытиеИКамера, "[") - 1)); // От какой камеры 
      Если Событие = "Activation" Тогда 
        // Программа активирована надо записать "Данные" и 
      // присвоить ВК 
      ИначеЕсли Событие = "Frame" Тогда 
        // Получен кадр из ВК созданный методом GetFrames        
    ИначеЕсли Событие = "Error" Тогда 
        // Сообщение об ошибке 
      ИначеЕсли Событие = "DiskFull" Тогда 
        // Тут можно остановить запись и присвоить новый ПутьКХранилищу для записи видео 
      ИначеЕсли Событие = "…" ТогдаКонецЕсли; 
  КонецЕсли; 
  КонецПроцедуры  

Опишем все события, которые возникают.

Событие Activation

Это событие возникает после активации в ВК и в параметре Данные возвращается ключ активации, который необходимо записать в ИБ и присваивать ВК в будущем. Ключ активации генерируется для каждого компьютера, работающего с ВК отдельно. Активация происходит онлайн.

Событие Frame

Возникает если запустили процедуру ПолучитьКадры (GetFrames) и нажали на кнопку в открывшейся форме «Получить». В данных возвращается имя файла, куда был сохранен полученный кадр. Рекомендуется после обработки кадра удалять его.

Событие Error

Возникает, при ошибке в ВК. В данных передается строка с ошибкой.

Событие DiskFull

Возникает, когда диск заполняется во время записи. Необходимо программно тут же либо остановить запись, либо присвоить переменной ПутьКХранилищу (StoragePath) новый путь и выполнить НачатьЗаписьВНовыйФайл (RecordToNewFileNow), это позволит остановить запись в старом месте и продолжить запись в новом.

Событие RecordingStart

Событие возникает при начале записи ВК. Вторым параметром передается имя файла в который будет происходить запись

Событие RecordingCompleted

Камера окончила запись файла, начатого методом НачатьЗапись (StartRecording). В параметре Данные возвращает имя файла куда шла запись.

Событие RecordingPaused

Возникает во время программной установки паузы.

Событие MotionDetected

Событие возникает при включенном свойстве ДетекторДвиженияВключен и указывает на то, что камера зафиксировала движение

Событие MotionNotDetected

Событие возникает при включенном свойстве ДетекторДвиженияВключен и указывает на то, что камера НЕ зафиксировала движение.

Событие DeviceLost

Событие возникает, когда устройство захвата отключено во время предварительного просмотра или записи.

Событие NoVideoDevices

Возникает, если не было обнаружено видео устройств.

Событие PreviewStarted

Возникает при начале просмотра.

Свойства

Почти все свойства доступны для чтения и записи, для свойств, которые поддерживают только чтение об этом указано отдельно.

ОверлейноеИзображениеВерх (OverlayImageTop)

Верхняя координата вывода оверлейного изображения. Число. По умолчанию 10.

ИмяЛогФайла (LogFileName)

Хранит имя файла, куда делается запись, если ведется логирование (журналирование) всех событий внешней компоненты (ВестиЛог = Истина).

ПаузаМс (PauseMs)

Пауза в миллисекундах используется при создании фото и применяется для создания фото без визуальной формы. Необходима для того, чтобы стабилизировалась картинка на веб-камере. После того, как мы инициализируем web-камеру она может не точно передавать картинку (картинка может быть слишком светлая и т.п.). Задержка и стабилизация позволяет картинке принять нормальный вид. Число. По умолчанию 1500 мс. (1,5 секунды).

ПоверхВсехОкон (StayOnTop)

Окна с предварительным просмотром фото и видео выводить поверх всех окон. Булево. По умолчанию Ложь.

ТаймерЗаписи (RecordingTimer)

Используется для включения записи по таймеру. Число. Принимает следующие значения:

0 – отключено

1 – запись нового файла генерируется каждый ИнтервалТаймераЗаписи (RecordingTimerInterval) секунд

2 – запись прекращается после ИнтервалТаймераЗаписи (RecordingTimerInterval) секунд

3 – начать запись в режиме предварительного просмотра после ИнтервалТаймераЗаписи (RecordingTimerInterval) секунд.

ИнтервалТаймераЗаписи (RecordingTimerInterval)

Интервал времени для таймера записи. Число. Определяет интервал времени между каждым действием свойства ТаймерЗаписи (RecordingTimer) (генерирует новый файл или останавливает запись).

СоздаватьНовыйФайлПриПаузеВЗаписи (RecordingPauseCreatesNewFile)

Создает новый файл каждый раз, когда запись приостановлена. Булево. По умолчанию Ложь. Имя нового файла записи генерируется автоматически. Новый файл будет создан, когда запись приостановлена путем вызова паузы записи. Таким образом, файл уже создан и открыт при вызове ПродолжитьЗапись (ResumeRecording), поэтому никакие кадры не теряются в это время. Если запись останавливается перед вызовом ПродолжитьЗапись (ResumeRecording), новый пустой файл (который только что был создан, когда Пауза записи была вызвана) удаляется.

ОверлейныйТекстВидимость (OverlayTextVisible)

Указывает на то, необходимо ли вставлять поверх видео произвольный текст. Булево. По умолчанию Ложь.

ОверлейныйТекст (OverlayText)

Указывает текст, который будет вставлен в видео. Текст может быть изменен в процессе создания видео. Строка.

Также текст может содержать формулы (без кавычек).

"%sys_time[dd.mm.yy hh:nn:ss]%" : текущая системная дата

"%frame_count%" : количество кадров (фреймов)

"%time_full%" : время в текущем фрейме в формате hh:mm:ss:cc

"%time_sec%" : time of the current frame, in seconds with 2 decimals

"%time_100ns%" : time of the current frame, in 100 nano-seconds units

ОверлейныйТекстШрифт (OverlayTextFontName)

Наименование шрифта для оверлейного текста. Строка. По умолчанию используется шрифт «Verdana».

ОверлейныйТекстРазмерШрифта (OverlayTextFontSize)

Размер шрифта оверлейного текста. Число. По умолчанию 14.

ОверлейныйТекстЦветШрифта (OverlayTextFontColor)

Цвет оверлейного текста. Строка. Формат записи шрифта: #RRGGBB (где RR обозначение красной составляющей цвета в шестнадцатеричном виде, GG – зеленого, BB – синего). Примеры цветов:

#FF0000 – красный;

#00FF00 – зеленый;

#0000FF – синий;

#FFE97F – желтый;

#000000 – черный;

#FFFFFF – белый;

И т.д.

ОверлейныйТекстЛево (OverlayTextLeft)

Левое положение оверлейного текста. Число. По умолчанию 0. Оверлейный текст по умолчанию выводится в левом верхнем углу видео.

ОверлейныйТекстВерх (OverlayTextTop)

Верхнее положение оверлейного текста. Число. По умолчанию 0. Оверлейный текст по умолчанию выводится в левом верхнем углу видео.

ОверлейноеИзображениеВидимость (OverlayImageVisible)

Выводить или нет оверлейное изображение (логотип). Булево. По умолчанию Ложь. Оверлейное изображение можно использовать для вывода логотипов или водяных знаков.

ОверлейноеИзображениеЛево (OverlayImageLeft)

Левая координата вывода оверлейного изображения. Число. По умолчанию 10.

ВестиЛог (UseLog)

Указывает вести лог событий компонентой или нет. Может понадобиться если по какой-то причине внешняя компонента не работает. Тип Булево. По умолчанию Ложь.

ОверлейноеИзображениеШирина (OverlayImageWidth)

Ширина вывода оверлейного изображения от верхней координаты. Число. По умолчанию 100.

ОверлейноеИзображениеВысота (OverlayImageHeight)

Высота вывода оверлейного изображения от верхней координаты. Число. По умолчанию 100.

ОверлейноеИзображениеПрозрачность (OverlayImageAlphaBlend)

Прозрачно ли оверлейное изображение. Булево. По умолчанию Ложь.

ОверлейноеИзображениеЗначениеПрозрачности (OverlayImageAlphaBlendValue)

Если оверлейное изображения прозрачно, то устанавливает степень прозрачности. Число от 0 до 255. 0 - не прозрачно 255 - максимально прозрачно.

ОверлейноеИзображениеУголПоворота (OverlayImageRotationAngle)

Угол поворота логотипа. Вещественное число. Указывается в градусах от 0.0 до 360.0.

ОверлейноеИзображениеРастягиватьПоВидеоРазмеру (OverlayImageStretchToVideoSize)

Оверлейное изображение будет растянуто по ширине и высоте всего изображения/видео. Булево. По умолчанию Ложь. Используйте совместно со свойством ОверлейноеИзображениеПрозрачность и ОверлейноеИзображениеЗначениеПрозрачности.

ЭкранМонитораЗаписи (ScreenRecordingMonitor)

Номер экрана монитора для записи при выполнении записи экрана. Число. По умолчанию 0.

Указывает монитор для записи при использовании записи экрана и рабочего стола распространяется на несколько мониторов.

Просто укажите номер монитора (0 для 1-го монитора, 1 для 2-го монитора, и т.д.) ...

Если установить значение в -1, то это будет записывать весь расширенный рабочий стол на всех мониторах.

Обрезка (Cropping)

Включает/отключает обрезку фото и видео кадров. Булево. По умолчанию Ложь.

ОбрезкаВерх (CroppingTop)

При включенной обрезке фото и видео кадров отвечает за верхнюю координату точки обрезки. Все что выше не попадает в результат. Число. По умолчанию 0.

ОбрезкаЛево (CroppingLeft)

При включенной обрезке фото и видео кадров отвечает за левую координату точки обрезки. Все что левее не попадает в результат. Число. По умолчанию 0.

ОбрезкаШирина (CroppingWidth)

При включенной обрезке фото и видео кадров отвечает за ширину обрезки, начиная от точки ОбрезкаЛево (CroppingLeft). Все что левее не попадает в результат. Число.

ОбрезкаВысота (CroppingHeight)

При включенной обрезке фото и видео кадров отвечает за высоту обрезки, начиная от точки ОбрезкаВерх (CroppingTop). Все что ниже не попадает в результат. Число.

ДетекторДвиженияВключен (MotionDetectorEnabled)

Включает или отключает детектор движения в текущей камере ВК. Булево. По умолчанию Ложь.

ДетекторДвиженияСетка (MotionDetectorGrid)

Устанавливает или возвращает структуру сетки детектора движения, выраженное в виде простой строки. Сетка представляет собой матрицу вида:

0 0 0 0 0 4 4 4 4 1

5 5 5 5 5 5 5 5 5 1

4 4 4 4 4 4 4 4 4 1

5 5 5 5 5 5 5 5 5 1

6 6 6 6 6 6 6 6 6 1

6 6 6 6 6 6 6 6 6 1

6 6 6 6 6 6 6 6 6 1

3 3 3 3 3 3 3 3 3 1

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

 

Для примера выше строка, которая передается в ВК:

"0000044441 5555555551 4444444441 5555555551 6666666661 66666666661 6666666661 3333333331 0000000000 0000000000"

Изображение разбивается этой сеткой на равные прямоугольники, а число отвечает за чувствительность прямоугольника, это число должно быть целым и находиться в диапазоне от 0 (без обнаружения движения) до 9 (максимальной чувствительности к движению). Чем число выше, тем выше чувствительность. Например, если размер видеокадра составляет 320х240, и вы указываете размер сетки из 32x24, каждая ячейка будет иметь размер 10x10. Соответственно, каждая из ячеек будет обрабатываться отдельно и проверяться есть ли в ней движение.

Примеры сеток:

2x2

0 6

6 6

Кадры будут разбиваться на 4 равных участка, причем в левом верхнем кадре детектор движения не будет срабатывать. Для примера выше строка, которая передается в ВК:

"06 66"

ДетекторДвиженияМакисмумДвиженийОбнаруженныхВСекунду (MotionDetectorMaxDetectionsPerSecond)

Устанавливает максимально допустимое количество движений, обнаруженных в секунду. Число.

АдресIPКамеры (IPCameraURL)

При выборе ТипаУстройства «IPCAMERA» позволяет задать адрес IP-камеры http/rtsp/rtmp. Строка с полным адресом.

Примеры адресов:

http://cam001.ethz.ch/jpg/image.jpg

http://webcam2.schobess.info:8012/mjpg/video.mjpg

http://178.34.230.28/liveimg.cgi

rtsp://admin:123456@192.168.0.24/live/main

НачатьАктивацию (StartActivation)

Функция выполняет запуск окна активации внешней компоненты. Возвращает КлючАктивации (ActivationKey), который необходимо устанавливать для того, чтобы снять ограничения.

Внимание! Необходимо выполнять активацию на том компьютере, на котором будет в будущем будет работать ВК. Ключ активации привязываются к компьютеру, на котором запускается ВК.

ТекущаяКамера (CurrentCamera)

Номер текущей камеры. Число. По умолчанию 0. После инициализации ВК одна камера создается автоматически и с ней можно сразу работать. Если необходимо работать одновременно с несколькими камерами, то необходимо вызывать функцию ДобавитьКамеру (AddCamera), а далее можно переключаться между камерами и управлять свойствами или вызывать методы.

ТипУстройства (DeviceType)

Тип текущего устройства. Внешняя компонента будет пытаться работать с указанным типом устройства. Строка. Принимает и возвращает следующее типы (строкой):

1)      VIDEODEVICE – все устройства, которые обнаружатся в Windows (web-камеры, сканеры и т.д.). Синонимы: VIDEO, WEBCAMERA, WEB.

2)      IPCAMERA – работа с IP-камерами, IP-веб камеры, IP-видео серверы, или RTSP-потоком данных. Синонимы: IP.

3)      SCREEN – видео источником является экран монитора. Можно сделать фото (скриншот) и записать видео того, что происходит на мониторе пользователя. Синонимы: SCREEN, SCREENRECORDING, SCREENREC.

Одно из основных свойств, которое указывает с каким типом изображений/видео будет работать внешняя компонента. Регистр значения не имеет.

ВидеоУстройство (VideoDevice)

При выборе ТипаУстройства «VIDEODEVICE» устанавливает (получает) видео устройство, с которого будут получены фото и видео. Выбирается из списка, полученного методом ВидеоУстройства (VideoDevices) и является порядковым номером видео устройства. Число.

ВидеоУстройствоСтрокой (VideoDeviceString)

Работает аналогично свойству ВидеоУстройство (VideoDevice) за тем исключением, что это не порядковый номер, а строка описывающая устройство. Строка.

АудиоУстройство (AudioDevice)

Выбирает текущее устройство для захвата звука. Число. Выбирается из списка, полученного методом АудиоУстройства (AudioDevices) и является порядковым номером видео устройства.

АудиоУстройствоСтрокой (AudioDeviceString)

Работает аналогично свойству АудиоУстройство (AudioDevice) за тем исключением, что это не порядковый номер, а строка описывающая устройство. Строка.

ВидеоРазмер (VideoSize)

Устанавливает (получает) видео размер изображения и видео. Выбирается из списка, полученного методом ВидеоРазмеры (VideoSizes) и является порядковым номером размера изображения и видео. Число.

ВидеоРазмерСтрокой(VideoSizeString)

Работает аналогично свойству ВидеоРазмер (VideoSize) за тем исключением, что это не порядковый номер, а строка описывающая размер получаемого фото и видео. Строка.

ВидеоКомпрессор (VideoCompressor)

Устанавливает (получает) видео компрессор (кодек), который будет сжимать видео. Выбирается из списка, полученного методом ВидеоКомпрессоры (VideoCompressors) и является порядковым номером компрессора видео. Число.

ВидеоКомпрессорСтрокой (VideoCompressorString)

Работает аналогично свойству ВидеоКомпрессор (VideoCompressor) за тем исключением, что это не порядковый номер, а строка описывающая компрессор для видео. Строка.

АудиоКомпрессор (AudioCompressor)

Устанавливает (получает) аудио компрессор (кодек), который будет сжимать аудио при записи видео. Выбирается из списка, полученного методом АудиоКомпрессоры (AudioCompressors) и является порядковым номером компрессора аудио. Число.

АудиоКомпрессорСтрокой (AudioCompressorString)

Работает аналогично свойству АудиоКомпрессор (AudioCompressor) за тем исключением, что это не порядковый номер, а строка описывающая компрессор для аудио. Строка.

АудиоИсточник (AudioSource)

Тип источника аудио. Число. Может принимать значения 0 или 1.

0 – использует аудио выход видео устройства захвата, если таковые имеются, в противном случае используется текущее устройство для записи звука.

1 – использовать внешнее устройство записи звука.

ФорматИзображения (ImageFormat)

Формат изображения, которое будет возвращено внешней компонентой в файл или через двоичные данные. Строка. Может принимать значения:

1)      BMP

2)      PNG

3)      JPEG

4)      GIF

По умолчанию «PNG».

КлючАктивации (ActivationKey)

Ключ активации. В паре со свойством ИдентификаторКомпьютера (HardwareID) позволяет активировать внешнюю компоненту. Строка. Подробнее про активацию смотри в соответствующей главе.

ТипАутентификацииIPКамеры (IPCameraAuthenticationType)

Тип аутентификации для доступа к IP-камере или потоковому видео. Число.

0 – Публичная точка Windows media server;

1 – IP-камера;

2 – Потоковое видео.

По умолчанию равно 1.

ИмяПользователяIPКамеры (IPCameraUserName)

Имя пользователя для аутентификации на IP-камере или для доступа к потоковому видео, если доступ к IP-камере защищен логином и паролем. Строка.

ПарольIPКамеры (IPCameraPassword)

Пароль для аутентификации на IP-камере или для доступа к потоковому видео, если доступ к IP-камере защищен логином и паролем. Строка.

ЗаписыватьЗвук (AudioRecording)

Записывать ли при записи видео звук. Булево. По умолчанию Ложь.

ВизуализироватьЗвуковойПоток (AudioDeviceRendering)

Если это свойство включено, звуковой поток визуализируется во время предварительного просмотра или записи. Булево. По умолчанию Ложь.

АудиоГромкость (AudioVolume)

Громкость звука, текущего аудио устройства захвата. Число от 1 до 65536.

ПредварительныйПросмотр (Preview)

Использовать предварительный просмотр для создания фото или записи видео. Булево. По умолчанию Истина. Применяется совместно с методом ПолучитьКадр. Если без пред просмотра, то перед созданием фото делается Пауза между стартом и созданием фото на ПаузаМс миллисекунд для стабилизации картинки.

ИмяФайла (FileName)

Свойство, которое, предназначено для хранения того имени файла, куда будет делаться запись изображений и видео, а также, производиться чтение и т.д. Для подробного использования см. Примеры. Строка.

При записи видео используется для установки или извлечения имени файла записи, созданного с помощью НачатьЗапись (StartRecording).

Если файл существует, он будет перезаписан при запуске.

Если ИмяФайла (FileName) оставлено пустым, при вызове НачатьЗапись (StartRecording) или выполнена функция RecordToNewFileNow имя файла генерируется автоматически в соответствии с ПутьКХранилищу (StoragePath), АвтоИмяФайла (AutoFileName), АвтоПрефиксФайла (AutoFilePrefix) и свойства РасширениеФайлаЗахвата (CaptureFileExt)

АвтоИмяФайла (AutoFileName)

Указывает, что формат имен файлов генерируется автоматически. Число. По умолчанию равно 0. Описание значений:

0 – Имя файла на основе порядкового номера c префиксом АвтоПрефиксФайла (AutoFilePrefix), начиная с 000001. Например, если автопрефикс равен «file», то будут создаваться файлы вида: file000001.avi, file000002 и т.д.

1 – Имя файла основано на формате yymmdd_hhmmss_zzz даты и времени с префиксом AutoFilePrefix. Например, если префикс равен «file» file030616_090603_904.jpg и т.д.

2 – Эквивалентно предыдущему значение, но существующие файлы будут перезаписаны.

АвтоПрефиксФайла (AutoFilePrefix)

Приставка (префикс) имен файлов для генерирования имен файлов автоматически. Строка. По умолчанию равно: «file» без кавычек.

АвтоФорматДатаВремяФайла (AutoFileNameDateTimeFormat)

Указывает формат даты/времени для записи имени файла. Строка. Позволяет настроить формат даты/времени, когда имена файлов записи генерируются автоматически и АвтоИмяФайла (AutoFileName) равно 1. По умолчанию равно «yymmdd_hhmmss», что соответствует: если дата равна 01.04.2016 10:24:53, то файл созданный автоматически будет называется 160401_102453.

АвтоФорматМинимальноеЧислоЦифрФайла (AutoFileNameMinDigits)

Задает число от 0 до количества цифр в имение файлов автоматически сгенерированных. Число. По умолчанию равно 6. Позволяет настроить формат файла, когда имена файлов записи генерируются автоматически и АвтоИмяФайла (AutoFileName) равно 0. Например, если АвтоПрефиксФайла = «file», АвтоИмяФайла = 0, а АвтоФорматМинимальноеЧислоЦифрФайла = 6, то файлы будут создаваться в следующем формате: file000001.avi, file000002.avi, file000003.avi

РасширениеФайлаЗахвата (CaptureFileExt)

Расширение по умолчанию используется для создания видео, когда имя файла генерируется автоматически. Строка. По умолчанию «avi».

Оставьте это поле пустым, если вы хотите, чтобы сгенерировать идентификатор автоматически. В этом случае будет присвоено:

- «AVI» для стандартных AVI файлов,

- «MPG» для MPEG файлов.

ПутьКХранилищу (StoragePath)

Путь к хранилищу файлов для записи фото и видео, когда результат может быть не один. Если результат один, то используется ИмяФайла.

КачествоJPEG (QualityJPEG)

Отвечает за качество сохраняемого JPEG при работе с изображениями, если свойство ФорматИзображения указан как JPEG, Число от 1 до 100 (чем больше, тем выше качество). По умолчанию 85.

Функции

КоличествоАудиоКомпрессоров (AudioCompressorsCount)

Возвращает количество аудио компрессоров (кодеков), установленных в системе для сжатия аудио. Число.

ДетекторДвиженияСеткаЯвляетсяПравильной (MotionDetectorIsGridValid)

Для текущей сетки установленной свойством ДетекторДвиженияСетка (MotionDetectorGrid) сетки детектора движений определяет корректна ли данная сетка. Булево. Возвращает Истина, если сетка корректна.

ДетекторДвиженияГлобальноеСоотношениеДвижения (MotionDetectorGlobalMotionRatio)

Используется для получения последнего соотношения движения (количество измененных пикселей / общее количество пикселей) ячеек сетки включая их чувствительность. Число с плавающей точкой в диапазоне от 0,0 до 1,0 диапазон (например, 0,5776).

Это значение является результатом обнаружения движения последнего видеокадра.

Это значение также возвращается в движение обнаружено событие. Чем оно больше, тем сильнее изменено изображение от предыдущего, и наоборот, если оно равно 0, то движение в кадрах не зафиксировано.

НачатьПросмотр (StartPreview)

Начинает просмотр онлайн-видео с текущего устройства без записи. Просмотр Булево. Возвращает Истина если просмотр был запущен. ВК внутри запускает на просмотр видео поток. Эту функцию можно использовать совместно с детектором движения.

Статус (Status)

Возвращает статус текущей камеры. Число. Параметров нет.

Описание значений:

0: ничего с текущей камерой не происходит.

1: идет пред просмотр видео.

2: идет запись.

3: проигрывается видео в режиме плеера.

НачатьЗаписьВНовыйФайл (RecordToNewFileNow)

Во время записи и вызова функции закрывается текущий файл записи, и создает новый файл записи согласно свойству ИмяФайла (FileName). Возвращает Булево. Истина, если успешно создан новый файл, ложь в противном случае. Параметров функции – 1. Описание:

ИмяНовогоФайла. Строка. Имя файла куда начать запись снова.

- Если ИмяФайла (FileName) пусто, новое имя файла генерируется автоматически в соответствии с ПутьКХранилищу (StoragePath), АвтоИмяФайла (AutoFileName) и АвтоПрефиксФайла (AutoFilePrefix).

- Если запись ИмяФайла (FileName) указывает имя файла, это имя файла будет использоваться для создания нового файла.

ПолучитьКБЗаписанныеНаДиск (RecordingKBytesWrittenToDisk)

Возвращает размер файла в килобайтах, записываемого в текущий момент. Число.

Можно запускать после того, как была вызвана функция НачатьЗапись.

ПродолжитьЗапись (ResumeRecording)

Продолжаем запись после паузы, вызванной функцией ПаузаЗаписи (PauseRecording) при записи видео. Возвращает Истина, если действие было выполнено успешно.

ПаузаЗаписи (PauseRecording)

Включаем паузу при записи видео. Возвращает Истина, если действие было выполнено успешно.

НачатьЗапись (StartRecording)

Начать запись видео. Возвращает Истина, если запись началась.

ПолучитьСкриншотИзПамяти (GetScreenShotFromMemory)

Получает скриншот, который был сделан с помощью кнопки PntScr и возвращает ДвоичныеДанные, если картинки в памяти нет, то возвращает Неопределено.

ПолучитьСкриншот (GetScreenShot)

Получает скриншот и возвращает ДвоичныеДанные.

ПолучитьКадр (GetFrame)

Получения фото с выбранного устройства с предпросмотром или без него. Если предпросмотр включен, то в результате вызова полностью блокируется интерфейс 1С и предлагается сделать одиночное фото с выбранного видео устройства. Если необходимо не блокировать интерфейс 1С используйте процедуру ПолучитьКадры.

АудиоКомпрессоры (AudioCompressors)

Возвращает строку с аудио компрессорами, где каждый кодек начинается с новой строки. Строка. Пример строки с видео кодеками:

PCM

IMA ADPCM

Microsoft ADPCM

LAME Audio Encoder

 

Функция АудиоКомпрессоры вернет эту строку, а функция КоличествоАудиоКомпрессоров вернет для данного списка результат равный 4.

Версия (Version)

Возвращает версию внешней компоненты. Строка.

ВидеоКомпрессоры (VideoCompressors)

Возвращает строку с видео компрессорами, где каждый кодек начинается с новой строки. Строка. Пример строки с видео кодеками:

Xvid MPEG-4 Codec

MJPEG Compressor

Кодек Intel IYUV

Microsoft RLE

Microsoft Video 1

КоличествоВидеоКомпрессоров (VideoCompressorsCount)

Возвращает количество видео компрессоров (кодеков), установленных в системе для сжатия видео. Число.

ВидеоРазмеры (VideoSizes)

Возвращает строку с размерами видео, поддерживаемых выбранным видеоустройством, где каждый новый размер начинается с новой строки. Строка. Пример:

160x120

320x240

640x480

800x600

Функция ВидеоРазмеры вернет эту строку, а функция КоличествоВидеоРазмеров вернет для данного списка результат равный 4.

КоличествоВидеоРазмеров (VideoSizesCount)

Возвращает количество размеров видео, поддерживаемых выбранным видеоустройством. Число.

АудиоУстройства (AudioDevices)

Возвращает строку с наименованиями устройств, найденными в системе, где каждое новое устройство с новой строки. Строка. Получить конкретное устройство можно так:

СтрПолучитьСтроку(АудиоУстройства, 1);

 

Где 1 номер устройства, нумерация с 1.

КоличествоАудиоУстройств (AudioDevicesCount)

Возвращает количество аудио устройств, подключенных к компьютеру (веб-камер, микрофонов и т.д.). Число.

УдалитьКамеру (DeleteCamera)

Удаляет камеру из списка камер. Параметр один с типом число - номер удаляемой камеры, нумерация с нуля. Если удаление произошло успешно, то возвращается Истина, иначе Ложь.

ДобавитьКамеру (AddCamera)

Добавить одну камеру в список камер. Параметров нет. Возвращает число – номер текущей добавленной камеры. Так при вызове этой функции происходит установка свойства ТекущаяКамера (CurrentCamera) на добавленную камеру. Поэтому после добавления камеры, с ней сразу можно работать.

ВидеоУстройства (VideoDevices)

Возвращает строку с наименованиями устройств, найденными в системе, где каждое новое устройство с новой строки. Строка. Получить конкретное устройство можно так:

СтрПолучитьСтроку(ВидеоУстройства, 1);


Где 1 номер устройства, нумерация с 1.

КоличествоВидеоУстройств (VideoDevicesCount)

Возвращает количество видео устройств, подключенных к компьютеру (веб-камер и т.д.). Число.

ВладалецЛицензии (LicenseOwner)

Функция, которая указывает кому принадлежит лицензия на экземпляр внешней компоненты. Строка.

ИдентификаторКомпьютера (HardwareID)

Функция, возвращающая идентификатор компьютера для активации. Уникальный ключ оборудования, который будет разным для разных компьютеров. Данный идентификатор используется для активации внешней компоненты и привязывается к конкретному компьютеру. Увидеть свой идентификатор можно вызвав любую визуальную форму внешней компоненты и в нижнем левом углу щелкнуть «Регистрация».

ДемоРежим (DemoMode)

Функция, которая возвращает Истина/Ложь в зависимости от того используется ли внешняя компонента в демо-режиме или нет.

Процедуры

ПолучитьКадры (GetFrames)

Аналог функции ПолучитьКадр, за тем исключением, что при создании фото внешняя компонента сохраняет данные в свойство ИмяФайла и в 1С срабатывает внешнее событие, где Источник = "MediaBuild", Событие = "GetFrame", а в реквизите Данные передается имя временного файла, куда сохранено изображение из внешней компоненты. При этом после создания фото форма не закрывается, так же созданные файлы не удаляются. Форма получения кадра, вызванная этой процедурой, не блокирует интерфейс 1С, что иногда более удобно для работы – можно переключаться между 1С и окном создания кадров.

ОстановитьЗапись (StopRecording)

Остановить запись видео, запись которого было начато функцией НачатьЗапись.

ОстановитьПросмотр (StopPreview)

Остановить просмотр с текущего устройства. Метод останавливает просмотр, который был начат функцией НачатьПросмотр.

УстановитьОверлейноеИзображение (SetOverlayImage)

Процедура устанавливает оверлейное изображение (логотип) из файла. Имя файла передается первым и единственным параметром.

УстановитьНастройкиИзИсточника (SetSettingsFromSource)

Процедура копирует настройки в текущую камеру из другой камеры. Параметр один – индекс камеры с которой надо скопировать настройки. Пример:


ИндексКамеры1 = MediaBuildКлиент.ВнешняяКомпонента().ДобавитьКамеру();
// Устанавливаем настройки камеры 1
// ...
ИндексКамеры2 = MediaBuildКлиент.ВнешняяКомпонента().ДобавитьКамеру();
// ТекущаяКамера = ИндексКамеры2
MediaBuildКлиент.ВнешняяКомпонента().УстановитьНастройкиИзИсточника(ИндексКамеры1);



В этом примере все настройка второй камеры будут скопированы из первой добавленной.

Примеры использования

Установка и подключение внешней компоненты

// При открытии формы подключим ВК для работы с камерой
Если НЕ ПодключитьВнешнююКомпоненту("ОбщийМакет.MediaBuild", "Компонента", ТипВнешнейКомпоненты.Native) Тогда
    //Если не удалось подключить ВК, предложим установить её 
    УстановитьВнешнююКомпоненту("ОбщийМакет.MediaBuild");
    ПодключитьВнешнююКомпоненту("ОбщийМакет.MediaBuild", "MB", ТипВнешнейКомпоненты.Native);
КонецЕсли;

Попытка
    MediaBuild = Новый("AddIn.MB.MediaExtention ");
Исключение
    Сообщить("Не могу создать объект из компоненты");
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;

Создать скриншот (снимок экрана) рабочего стола

&НаСервере
Процедура ОтобразитьСкриншотИзДвоичныхДанных(ДвоичныеДанные)	
    ХЗ = Новый ХранилищеЗначения(ДвоичныеДанные);
    АдресСШ = ПоместитьВоВременноеХранилище(ХЗ.Получить());
КонецПроцедуры
...
#Если НЕ ВебКлиент Тогда
    // от 1 до 100 при условии, что скриншот делаем в JPEG
    MediaBuild.КачествоСжатияСкриншота = КачествоСкриншота; 
    ДвоичныеДанные = MediaBuild.ПолучитьСкриншот(); // 

Дополнительные сведения

Если у Вас появились дополнительные пожелания или замечания по работе внешней компоненты просим Вас обратиться к нам, мы всегда будем рады Вам помочь и обсудим все, что Вы предложите. Для партнеров действуют специальные скидки!

Контакты

ИП Барилко Виталий Викторович ©

Сайт: http://softonit.ru

E-mail: support@softonit.ru

ICQ: 335-655-187

Skype: barilkovetal

Телефон: +7 (861) 203-39-44


 Начать курс обучения1