- PVSM.RU - https://www.pvsm.ru -
Всё началось с того, что кто-то постоянно брал мой планшет, причём без моего ведома. Планшет ASUS VivoTab Smart [1] с Windows 8 на борту. Было решено сделать на рабочем столе фейковый ярлык, запускающий скрипт, который сделает фотки с камеры, скриншот экрана, отправит всё это дело на мой e-mail, а потом, как ни в чем не бывало, запустит проводник.
Раз установлена полноценная Windows, значит можно обойтись возможностями WSH.
Для просмотра видео на аппарате установлен VLC [2]. Плеер умеет захватывать видео-сигнал с различных источников.
У планшета две камеры: задняя и передняя. Будем делать фото с обеих.
Каждая камера поддерживает определенные разрешения, их можно посмотреть в настройках приложения ASUS YouCam:
Протестировать выбранные параметры можно через батник:
C:\Progra~1\VideoLAN\VLC\vlc.exe dshow:// :dshow-vdev="камера" :dshow-size=разрешение
C:\Progra~1\VideoLAN\VLC\vlc.exe dshow:// :dshow-vdev="Vimicro USB Camera (Altair)" :dshow-size=640x480
C:\Progra~1\VideoLAN\VLC\vlc.exe dshow:// :dshow-vdev="IMX175" :dshow-size=1280x720
Если открылся плеер, транслируется видео и нет ошибок — отлично, камера и разрешение выбраны верно.
VLC и это умеет делать. Кстати, в их wiki [3] всё неплохо расписано.
C:\Progra~1\VideoLAN\VLC\vlc.exe "screen://"
Чтоб не появлялось окно командной строки, команды будем выполнять методом Exec:
var WSH = new ActiveXObject('WScript.Shell');
WSH.Exec('C:\Progra~1\VideoLAN\VLC\vlc.exe dshow:// :dshow-vdev="IMX175" :dshow-size=1280x720');
Отлично, но нам нужно сохранить изображение, а не выводить его. Для этого допишем необдходимые параметры [3]:
WSH.Exec('C:\Progra~1\VideoLAN\VLC\vlc.exe --dshow-vdev="IMX175" --dshow-size=1280x720 -V dummy --intf=dummy --dummy-quiet --video-filter=scene --no-audio --scene-path=C:\ --scene-format=jpg --scene-prefix=Shot --scene-replace --run-time=1 --scene-ratio=25 "dshow://" vlc://quit');
Изображение с камеры сохранится в файл C:\Shot.jpg
Аналогично для скриншота:
WSH.Exec('C:\Progra~1\VideoLAN\VLC\vlc.exe -V dummy --dshow-vdev=none --intf=dummy --dummy-quiet --video-filter=scene --no-audio --scene-path=C:\ --scene-format=jpg --scene-prefix=screen --scene-replace --run-time=1 --scene-ratio=25 "screen://" "dshow://" vlc://quit');
Вообще, решение с использованием VLC является кроссплатформенным. Я лишь показал реализацию под свои нужды.
Вот архив [4] с готовым скриптом.
Автор: TsSaltan
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/54579
Ссылки в тексте:
[1] ASUS VivoTab Smart: http://habrahabr.ru/company/asus/blog/179447/
[2] VLC: http://www.videolan.org/vlc/
[3] wiki: https://wiki.videolan.org/VLC_command-line_help/
[4] Вот архив: http://docs.google.com/file/d/0BxG_9AZqsNLZNDM2QzRuVkhHSnM
[5] Image: http://img-fotki.yandex.ru/get/9754/57336309.6/0_da5f8_b1734f53_orig
[6] Image: http://img-fotki.yandex.ru/get/9747/57336309.6/0_da5f7_904356a2_orig
[7] Источник: http://habrahabr.ru/post/211927/
Нажмите здесь для печати.