VLCを使用してWebカメラのスナップショットとスクリーンショットを取得する

背景


それはすべて、誰かが私のタブレットを絶えず服用していたという事実から始まりました。 Windows 8搭載のASUS VivoTab Smartタブレット。 デスクトップで偽のショートカットを作成し、カメラから写真を撮るスクリプトを起動し、スクリーンショットを作成して、すべてをメールに送信し、何も起こらなかったようにExplorerを起動することにしました。

スクリプトを書く


完全なWindowsがインストールされると、WSHの機能を利用できます。
ビデオを見るには、 VLCがデバイスにインストールされています。 プレーヤーはさまざまなソースからビデオ信号をキャプチャできます。

ビデオソース


タブレットには、背面と前面の2つのカメラがあります。 両方から写真を撮ります。
画像

各カメラは特定の解像度をサポートしています。ASUSYouCamアプリケーションの設定でそれらを確認できます。
スクリーンショット
画像

画像


バッチファイルを使用して、選択したパラメーターをテストできます。
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とそれを行うことができます。 ところで、彼らのウィキでは、すべてがよく描かれています。
 C:\\Progra~1\\VideoLAN\\VLC\\vlc.exe "screen://" 


WSHへのアクセス


コマンドプロンプトウィンドウが表示されないように、Execメソッドを使用してコマンドを実行します。
 var WSH = new ActiveXObject('WScript.Shell'); WSH.Exec('C:\\Progra~1\\VideoLAN\\VLC\\vlc.exe dshow:// :dshow-vdev="IMX175" :dshow-size=1280x720'); 


素晴らしいですが、画像を表示するのではなく保存する必要があります。 これを行うには、必要なパラメーターを追加します
 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を使用するソリューションはクロスプラットフォームです。 ニーズに合わせて実装を示しました。
これが完成したスクリプトのアーカイブです。
どうした
ショートカット起動スクリプト
画像

写真はカメラとスクリーンショットの両方から撮影されます。
画像

そして、ここに手紙があります
画像

Source: https://habr.com/ru/post/J211927/


All Articles