VideoForWindowsを使ってキャプチャー動画をプレビューするには

解決


いおり  2001-12-27 03:57:54  No: 405

現在、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);
で表示されると思ったんですが、うまくいきません。

どうかご教授お願いします。


にしの  2001-12-27 08:21:42  No: 406

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)

で表示されるのではないでしょうか。
-- 引用ここまで


いおり  2002-01-12 03:15:39  No: 407

ご連絡おくれましたが、現在使用しているDVのCODECライブラリが入っていないのが原因でPreviewできなかったことがわかりました。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加