191764 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

ひでちゃんの健康生活 ・いいことしてる?

動画の自動静止画キャプチャー

Windows Script Host 5.6のインストール方法やスクリプト作成・保存などの詳細はググって見れば即決。(‘)以降の2バイト文字列は注釈なので書かなくても良い。

先ずは、下のようにメモ帳などに書き、デスクトップにでも保存する。拡張子はvbsとする。なお、Playerのショートカットキーはデフォルトではなく、適当に変えてあるので注意。それぞれショーカットキーに合ったコードを書く。キーに対応するコードはネットでググろう。
このスクリプトを実行すると、GOM Playerウインドウとキャプチャーするファイル数を入力するボックスが表示される。
最初にキャプチャーしたいフォルダーをPlayerにドラグ&ドロップして、10秒以内に一時停止する(ここがポイント)。その後は、Playerのウインドウが邪魔であるならば最小化しておいても良い。

次いで、フォルダー内のファイル数を調べ、ボックスの入力欄にその数を入力してOKを押すとキャプチャーを開始する。キャプチャーが全部終わるとPlayerのウィンドウが閉じて終了する。

このスクリプトでは、キーコードを確実に送るためExce関数を使ってProcessIDを取得している。
各所に記述してある休み時間設定はなければないに越したことはないが、PC環境によっては誤動作をする場合があるので、実際に動かしてみて最小限の時間をセットした方が良い。誤動作するようであれば時間を長くする。
一方、最後の方の「未キャプチャーファイル数を表示する部分は無くても良い(Playerウインドウのタイトルバーにファイルのロード状況(ファイル数)が刻々表示されるので)。
なお、キャプチャー時はPCを操作しない方が無難かもしれない。また、キャプチャーする時はGOM Playerの映像の色調をデフォルトにしておいた方が良い。
下の例では1ファイル当たり5秒前後でキャプチャーできた。とても楽チンだ。

作成したスクリプト(改行はテキトーです。スクリプトの記述は半角、全角のスペースなどが入るとエラーになる。コメントを書く場合は先頭に(‘)をつける)
*GOM Player 静止画自動キャプチャー*
'お決まりのおまじない
Option Explicit
Dim objWshShell
Dim objExec
Dim intNumber,I
Dim fileNo
Dim nokori
Set objWshShell = WScript.CreateObject("WScript.Shell")

‘GOM Playerの起動
Set objExec = objWshShell.Exec("C:\Program
Files\GRETECH\GomPlayer\GOM.exe") ‘“ ”内はGOM Player.exeのパス

'GOM PlayerのProcessID取得
 Do Until objWshShell.AppActivate(objExec.ProcessID)
WScript.Sleep 500 '0.5秒間お休み
 Loop

'キャプチャーするファイル数の入力BOXを表示
Const TITLE = "ファイルの数"
fileNo = InputBox("ファイルの数入力してください。", TITLE)
intNumber=0

'未キャプチャーファイル数を求める準備
nokori=fileNo

'キャプチャープロセス開始
set objWshShell = WScript.CreateObject("WScript.Shell")

For I=1 To fileNo
intNumber=intNumber+1

objWshShell.AppActivate(objExec.ProcessID) 'GOM PlayerのProcessID取得
objWshShell.Sendkeys("{LEFT}") '巻き戻しをしてトップフレームを表示
   WScript.Sleep 300

  objWshShell.AppActivate(objExec.ProcessID) ‘上記のダメ押し
objWshShell.Sendkeys("{LEFT}")

  WScript.Sleep 300

objWshShell.AppActivate(objExec.ProcessID)
objWshShell.Sendkeys("+Z") '静止画キャプチャーのキーコード(Shift+Z)を送る

WScript.Sleep 2000

objWshShell.AppActivate(objExec.ProcessID)
objWshShell.Sendkeys("{PGDN}") '次のファイルを再生するキーコード(PgDn)を送る

WScript.Sleep 1000
objWshShell.AppActivate(objExec.ProcessID)
objWshShell.Sendkeys("%Z") '一時停止のキーコード(Alt+Z)を送る
WScript.Sleep 100

'未キャプチャー数をポップアップする
nokori=nokori-1
objWshshell.Popup nokori, 1, "残り", vbInformation '1秒間だけ未キャプチャーファイル数をポップアップする

If intNumber>fileNo Then Exit For
Next

'全てキャプチャーが終わったらPlayerを閉じる
If objExec.Status = 0 Then
objExec.Terminate
End If

'これでお終い
Set objWshShell = Nothing


Back


home






Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.