現在、VFWのライブラリを使って、DVのキャプチャソフトを作ろうとしています。
いろいろサンプルを見ながらコードを書いていますが、プレビューができません。DVで撮影した動画の保存はできます。
以下、見にくいですが、必要なところのコードを書きます。
uses vfw;
var
CapturingAVI: Boolean;
hWndC: THandle;
procedure TForm1.FormCreate(Sender: TObject);
begin
CapturingAVI:= False; //キャプチャを不可にする
hWndC:= 0;
SaveDialog1.Options:= [ofHideReadOnly,
ofNoChangeDir,
ofPathMustExist];
end;
//OpenVideoをクリック
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
flag: Boolean;
begin
hWndC:= capCreateCaptureWindow('Preview Window',
WS_CHILD or WS_VISIBLE,
Panel1.Left,
Panel1.Top,
Panel1.Width,
Panel1.Height,
Form1.Handle,
0);
flag:= False;
if hWndC <> 0 then
begin
for i:= 0 to 9 do
begin
flag:= capDriverConnect(hWndC, i);
if flag then
begin
//キャプチャウィンドウとキャプチャドライバを繋ぐ
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
capPreviewRate(hWndC, 15);
// capPreviewScale(hWndC, True);
capPreview(hWndC, True);
end
else
begin
break;
end;
end;
end;
end;
//CloseVideoをクリック
procedure TForm1.Button2Click(Sender: TObject);
begin
if hWndC <> 0 then
begin
//キャプチャドライバからキャプチャウィンドウを外す
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC:= 0;
end;
end;
cButton1ClickのcapPreview(hWndC, True);
で表示されると思ったんですが、うまくいきません。
どうかご教授お願いします。
Delphi-MLの過去ログに、こんなのがありました。
参考になればよいのですが。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=004551
-- 引用ここから
とりあえずおそらく使いたい機能はpreviewでしょうか。
その場合、初めにAPIを呼んで、
hwndc:=capCreateCaptureWindowA('capture',WS_CHILD or
WS_VISIBLE,0,0,capSizeWidth,capSizeHeight,CaptureWnd.handle,0);
つぎにコネクトして
SendMessage(WM_USER+10,0,0) ;
//#define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10)
次にpreview,
SendMessage(WM_USER+50,1,0);
//#define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50)
で表示されるのではないでしょうか。
-- 引用ここまで
ご連絡おくれましたが、現在使用しているDVのCODECライブラリが入っていないのが原因でPreviewできなかったことがわかりました。
どうもありがとうございました。
ツイート | ![]() |