VCapt
動画ファイルから静止画像をキャプチャするプログラムです。
一度に複数のフレームをキャプチャするのでフレームの比較や確認作業にも使えます。
動画ファイルを読み込んでキャプチャボタン
を押すことで複数フレームの画像をキャプチャします。
目次
動画ファイルから静止画をキャプチャするためのプログラムです。
キャプチャのタイミングにシビアにならずに済むように複数のフレームを一度にキャプチャしてベストショットを選べるようにしています。
このプログラムはDirectShowを利用しています。
キャプチャ可能なメディアは大体WindowsMediaPlayerと同じです。
WMPで再生できればこのプログラムでもOK(のはず)ということです。
ただしDVDには対応していません。
ffdshowやFLVSplitter、MP4SplitterなどをインストールしてDivXやflv、mp4などを再生できるようにすればそれらもキャプチャできるようになります。
詳しくはそれぞれ
をどうぞ。
ffdshowはビデオデコーダの設定で「オーバーレイ」の「出力」の「RGB24」にチェックが入っていないとスムーズにキャプチャできません。
「オーバーレイ」の「出力」の「RGB24」にチェックが入っていることを確認します。
動作確認
Windows XP SP3、Windows 7 SP1でのみ動作確認。
95や98、meでは動きません。
インストール
専用のフォルダを作りvcapt.exeをコピーするだけでOKです。
vcapt.exeと同じフォルダに設定ファイルのvcapt.iniを作ります。
レジストリは何も書き込みません。
アンインストール
専用フォルダを作ってコピーした場合は専用フォルダごと削除すればOKです。
専用フォルダを作らなかった場合はvcapt.exeとvcapt.iniの二つのファイルを削除します。
レジストリには何も書き込まないのでこの二つのファイルを削除するだけでOKです。
VCapt
vcapt.exe 2012-06-20:Ver 0.1.6.18
プログラムは圧縮していません。
そのままダウンロードして実行できます。
ソースコード
ソースコードは公開しているというよりもバックアップ目的なので見通しはよくありませんし、これらとは別に汎用ライブラリも全部ダウンロードしてセットアップしないとコンパイルできません。
※このプログラム自体が他のプログラムから利用されるような作りになっているため更に見通しは悪くなっています。
- ffdshowのインストールが必要です。
- キャプチャした画像の加工や修正などはこのプログラムではできません。
- ファイルへの保存はBMPとGIF、JPEGに対応していますが細かいオプションの設定はできません。
- 非力なPCだとビデオの表示が音声に対して遅れることがあります。
デコーダとスプリッタの組み合わせによってはフレーム落ちが激しくカクカクした動きになることもあります。
- 高解像度で長い動画ファイルをシークバーであちこち移動させようとするとしばらく無反応になることがあります。
シーク操作は非力なPCには荷が重い処理のようです。
- エラーを吐いて落ちることがあります。
- プレイリストには対応していません。
画面情報
- 左のビデオ画面の下の数値はビデオの幅x高さ、フレームレート、フレーム間の時間です。
フレーム間の時間はミリ秒なので上図では0.033秒になります。
- 右のプレビュー画面の下の数値は縮尺率です。
- キャプチャしたフレーム画像の下の数値はキャプチャしたフレームの位置(秒)を小数点以下3桁まで表示したものです。
一つ一つのフレーム画像の間隔はおおよそフレーム間の時間になります。
1枚目のフレームの位置にフレーム間の時間を足すと(多少の誤差はありますが)2枚目のフレームの位置になります。
上図で言うと1枚目の42.633秒にフレーム間の0.033秒を足すと42.666秒となり、2枚目の42.667秒にほぼ一致します。
- 右下の数値は左から以下のようになっています。
- 音声と映像の時間差。
音声に対して映像が何秒遅れているかを表します。
非力なPCだと映像の表示が音声に追いつけずに遅れることがあります。
ATOMなネットブックでおおよそ800x600の30fpsくらいの動画が遅れることなく再生できる限度のようです。
上図では音声に対して映像が0.168秒遅れています。
- 映像の位置。
数値の頭にVをつけています。
この数値を静止画のキャプチャのタイミングの目安に使います。
- 音声の位置。
数値の頭にAをつけています。
- 動画ファイルの長さ。
動画ファイルの最後のフレームの位置は動画ファイルの長さから1フレームの間隔分を引いた値になるようです。
上図では最後のフレームの位置は34:02.001秒あたりになります。
キャプチャの流れ
- 「ファイル」メニューの「開く」で動画ファイルを選択して開きます。
- 開いたら動画ファイルが再生されるので左のビデオ画面を見ながらタイミングを見計らって下のキャプチャボタン
を押します。
- ボタンを押した時点から5フレーム分がキャプチャされ各フレーム画面に表示され、最初のフレーム画像を右の静止画プレビュー画面に表示します。
※キャプチャするフレーム数はウィンドウの幅によって増減します。
- キャプチャした5フレームの画像をクリックしてプレビュー画面に表示させベストショットを選びます。
上図のようにキャプチャしたフレームの画像をクリックすることでプレビュー画像が切り替わります。
この中からベストなショットを選びます。
右の静止画プレビュー画面をダブルクリックすると等倍表示と縮尺表示の切り替えができます。
- 必要に応じてフレーム画面の両脇のキャプチャボタンを押して前後の5フレームを再キャプチャします。
フレーム画像をダブルクリックするとそのフレームを先頭にした5フレームを再キャプチャします。
- ベストショットが取れたらファイルへ保存するかクリップボードへコピーするかします。
キャプチャを行うとキャプチャした最初のフレームの画像をクリップボードへコピーします。
またキャプチャしたフレームをクリックすることでもそのフレームの画像をクリップボードへコピーします。
つまり右側の静止画プレビューに表示される画像がクリップボードへコピーされます。
キャプチャボタン
フレームバーの説明にもあるように、フレームバーの両脇のキャプチャボタンとコントロールバーのキャプチャボタンはキャプチャの対象となるフレームのタイミングが違います。
フレームバーの両脇のキャプチャボタンはキャプチャされたフレームの前後の表示フレーム数分を再キャプチャします。
そのため再生開始時のまだキャプチャを行っていない段階ではグレーアウトして押せない状態になっています。
それに対してコントロールバーのキャプチャボタンは現在再生中のビデオのフレーム(時間表示の左から2番目、頭にVをつけている時間のもの)からキャプチャします。
ツールバー
ファイル/開く
ファイルを選択して開きます。
矢印をクリックすると履歴メニューをドロップダウン表示します。
ファイル/画像を保存
キャプチャ画像をファイルへ保存します。
矢印をクリックするとフォーマットを指定して保存します。
編集/画像をコピー
キャプチャ画像をクリップボードへコピーします。
ビデオ/拡大
キャプチャのプレビュー画像の表示倍率を上げます。
ビデオ/縮小
キャプチャのプレビュー画像の表示倍率を下げます。
ビデオ/実寸表示
キャプチャのプレビュー画像を実寸で表示します。
ビデオ/オートサイズ
キャプチャのプレビュー画像を表示領域に合わせて自動調整します。
プログラム/プログラムリスト
登録したプログラムをドロップダウンメニューから選択して起動します。
このプログラムでは画像の加工や修正などはできないのでグラフィックソフトを登録しておき必要に応じて起動させることを念頭に置いています。
プログラム/リストに追加
リストにプログラムを登録します。
プログラム/前面に移動のみ
リスト中のプログラムを起動するとき既に起動済みであれば新たに起動させず起動済みのプログラムを前面に表示するだけにします。
表示/ツールバー
ツールバーの表示のON/OFF。
表示/ステータスバー
ステータスバーの表示のON/OFF。
ステータスバーにはプレビュー画像やツールバーのボタンなどのコントロールにマウスカーソルが乗ったときにそのコントロールのヒントを表示します。
表示/ポップアップヒント
ツールチップヒントの表示のON/OFF。
コントロールバー
再生/再生・一時停止
矢印をクリックすると再生速度メニューをドロップダウン表示します。
再生/1秒前のフレーム
1秒前のフレームを表示して一時停止します。
Shiftキー併用で0.5秒前のフレームを表示します。
再生/前のフレーム
1つ前のフレームを表示して一時停止します。
Shiftキー併用で5フレーム前のフレームを表示します。
再生/次のフレーム
1つ後のフレームを表示して一時停止します。
Shiftキー併用で5フレーム後のフレームを表示します。
再生/1秒後のフレーム
1秒後のフレームを表示して一時停止します。
Shiftキー併用で0.5秒後のフレームを表示します。
再生/ミュート
キャプチャ/ビデオ映像をキャプチャ
現在ビデオ画面に表示されているフレームから5フレームをキャプチャします。
- 時間表示
映像と音声のズレ、映像の時間、音声の時間、メディアの長さの順で表示します。
前の表示フレーム数をキャプチャ
キャプチャしたフレームの表示フレーム数分をさかのぼって再キャプチャします。
次の表示フレーム数をキャプチャ
キャプチャしたフレームの次の表示フレーム数を再キャプチャします。
キャプチャしたフレームをプレビュー画面に表示
各フレームをダブルクリックするとそのフレームを先頭にして表示フレーム数をキャプチャし直します。
フレームバーの左右のキャプチャボタンは現在の再生位置に関わらず、キャプチャ済みのフレームの前後の表示フレーム数分のフレームを再キャプチャするものです。
現在の再生位置からキャプチャするにはコントロールバーのキャプチャボタンを押します。
- ファイル
- 開く
動画ファイルを開きます。
- 画像を保存
取得した画像を保存します。
- フォーマットを指定して保存
- メディアを閉じる
開いている動画ファイルを閉じます。
キャプチャしたフレーム画像も削除されます。
- プログラム
プログラムランチャのリストを管理します。
- リストに追加
プログラムランチャのリストにプログラムを登録します。
- リストから削除
登録済みのプログラムをリストから削除します。
- 前面に移動のみ
リストから選択してプログラムを起動する時に既に起動済みであれば新たに起動させずに起動済みのプログラムを前面に表示させます。
- 終了
- 編集
- 画像をコピー
取得した画像をクリップボードへコピーします。
- ビデオ映像をキャプチャ
現在ビデオ画面に表示されているフレームから表示フレーム数をキャプチャします。
- 前のフレームをキャプチャ。
取得したフレームの表示フレーム数分さかのぼってキャプチャし直します。
- 次のフレームをキャプチャ。
取得したフレームの次の表示フレーム数分をキャプチャします。
- 再生
- 再生/一時停止
- リプレイ
最初から再生を始めます。
- 先頭へ
- 末尾へ
- 30秒戻る
- 30秒進む
- 1秒前のフレーム
- 1秒後のフレーム
- 前のフレーム
- 次のフレーム
- 再生速度
再生速度を変更します。
wmvファイルの再生速度変更はできません。
- ミュート
- 画像
- オプション
- サンプルグラバを使う
- ツールバー
- ステータスバー
- ヒントをポップアップ表示
- 時間を詳細表示
- ヘルプ
2012-06-20:Ver 0.1.6.18
- 時間の表示をシンプルなものにした。
- 「時間を詳細表示」オプションを追加して以前の時間表示に対応。
- ビデオ表示画面をダブルクリックのイベントを「ファイルを開く」から「現在のフレームをキャプチャ」に変更。
2012-06-16:Ver 0.1.5.18
- 「サンプルグラバを使う」オプションを追加。
- サンプルグラバを使わずタイマーを使ってキャプチャする場合に画像をキャプチャする毎にイメージを表示するようにした。
2012-05-12:Ver 0.1.4.14
- サンプルグラバフィルタがうまく繋がらなかった場合にタイマーを使ってキャプチャするようにした。
- ffdshow_rev3760_20110218_clsid.exe以前のものでなくてもビデオデコーダの設定でうまくいくようになった。
「オーバーレイ」の「出力」で「RGB24」にチェックがついていないとうまくいかない。
2012-04-22:Ver 0.1.3.13
- Windows 7で動作するようにした。
ただしffdshowのffdshow_rev3760_20110218_clsid.exe以前のものをインストールする必要あり。
2011-10-10:Ver 0.1.2.12
- 起動時の引数で時間とファイルの指定をできるようにした。
2011-09-22:Ver 0.1.1.12
- 壁紙設定を再び廃止。
必要ならプログラムリストに登録すればいいだけだろうということで。
- 合わせてGDI+利用を取りやめ。
PNG,TIFF非対応に。
- フォームの幅を増やしてキャプチャフレーム数を増やしたときにキャプチャ時間の表示がおかしなものになる不具合を修正。
- 最大化した時にキャプチャフレーム数が変化しない不具合を修正。
2011-09-19:Ver 0.1.0.12
- キャプチャするフレーム数をフォームの幅に合わせての増減に対応。
マイナーバージョンアップ。
2011-08-22:Ver 0.1.1.12
- 壁紙設定を再び廃止。
必要ならプログラムリストに登録すればいいだけだろうということで。
- 合わせてGDI+利用を取りやめ。
PNG,TIFF非対応に。
- フォームの幅を増やしてキャプチャフレーム数を増やしたときにキャプチャ時間の表示がおかしなものになる不具合を修正。
- 最大化した時にキャプチャフレーム数が変化しない不具合を修正。
2011-09-19:Ver 0.1.0.12
- キャプチャするフレーム数をフォームの幅に合わせての増減に対応。
マイナーバージョンアップ。
2011-09-14:Ver 0.0.11.12
- 再生速度の1倍より上を削除。
静止画キャプチャには必要なかろうということで。
- 壁紙設定の復活。
あった方が楽しいので。
2011-09-12:Ver 0.0.10.12
- 壁紙設定の廃止。
シンプルに。
- ツールバーにプログラム起動のコンボボックスを置いていたのをツールボタンのドロップダウンメニューで選択する方法に変更。
コンボボックスは非表示に。
- キャプチャ画像のプレビュー画面の任意倍率での拡大・縮小に対応。
- キャプチャ後コピーも行うように変更。
キャプチャフレーム画像のクリックでもコピーを行うようにした。
- 再生速度の0.1倍を削除。
ビデオの再生位置の取得がうまくいかないため。
2011-09-09:Ver 0.0.9.12
- 壁紙設定フォームのアップデートによる更新。
- プログラム起動で起動済みなら前面に移動の処理で大文字と小文字の区別をしていたため起動済みであっても新規に起動してしまうことがあった不具合を修正。
2011-09-06:Ver 0.0.8.10
- 壁紙設定ウィンドウの貼り付けの不具合を修正。
PSP6のコピー画像を貼り付けると256色になってしまうのを修正。
2011-09-03:Ver 0.0.7.10
- プライマリモニター以外の画像がずれてしまうことがある不具合を修正。
2011-08-27:Ver 0.0.6.10
- 「前の5フレームをキャプチャ」と「次のフレームをキャプチャ」でShiftキー併用時の動作を1フレーム前or後からキャプチャから10フレーム前or後からキャプチャに変更。
- キャプチャしたフレーム画像をShiftキー併用でダブルクリックした場合そのフレームの前から5フレームをキャプチャするようにした。
ダブルクリックしたフレームがキャプチャフレームの最後になるようにキャプチャする。
- 壁紙設定ウィンドウの操作性を色々調整。
2011-08-19:Ver 0.0.5.10
- 開くの履歴機能を追加。
- 壁紙設定機能に各モニターに合わせるオプションを追加。
2011-08-18:Ver 0.0.4.10
- 壁紙設定機能のオプションを選べるようにした。
単純な拡大だけでなくアスペクト比を固定しての拡大と隙間を作らずに拡大の二通りのオプションを独自実装。
単にモニターに合わせて拡大・縮小したファイルを作っているだけ。
各モニター毎に合わせた拡大縮小は未実装。
2011-08-14:Ver 0.0.3.7
- ツールバー実装。
- 音声メディアを開くとエラーが出る不具合を修正。
- シフトを押しながらダイアログを出しても初期フォルダにならないことがあった不具合を修正。
ファイル名がセットされているとそちらを優先してしまうようだ。
- キャプチャが完了するまでシークバーを動かせないよう変更。
- 書込み禁止のディスクに書き込もうとした時のエラーに対処。
- GIFとJPEGの書き込みに対応。
PNGとTIFFに対応するにはGDIPLUSの$DEFINEのコメントアウトを外す。
但しその場合XP以降の対応となる。
- 壁紙設定機能搭載。
単にキャプチャした静止画像を保存して壁紙にセットするだけ。
並べ方や位置、サイズなどの調整は一切行わない単純なもの。
2011-08-13:Ver 0.0.2.6
- 設定ファイルを作成。
- 登録したプログラムをリストから選んで起動する機能を実装。
- シフトを押しながらダイアログを出すと初期フォルダを表示するようにした。
開く→マイビデオ
保存→マイピクチャ
プログラム追加→Program Files
2011-08-11:Ver 0.0.1.6
- 「前の5フレームをキャプチャ」と「次の5フレームをキャプチャ」のフレームのキャプチャが正しく5フレームになっていなかった不具合を修正。
- サムネイルのダブルクリックでそのフレームから5フレームをキャプチャできるようにした。
2011-08-10:Ver 0.0.0.6
- リリース。
左に動画、右に静止画、その下に5フレームのキャプチャしたサムネイル画像というUI。