有一张H.264的视频压缩卡, 
  开始录象函数StartVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
  停止录象函数StopVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
 正确调用时返回均为0,
  请问怎么把录的内容保存为视频文件。

解决方案 »

  1.   

    //开始视频
    procedure TALVideoForm.OpenVideoClick(Sender: TObject);
    begin
    hWndC := capCreateCaptureWindowA(
      'My Own Capture Window',
      WS_CHILD or WS_VISIBLE ,
      Panel6.Left+Image1.Left,
      Panel6.Top+Image1.Top,
      Image1.Width,
      Image1.Height,
      ALVideoForm.Handle,
      0);
    if hWndC <> 0 then
       SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
    SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
    //SendMessage(hWndC, WM_CAP_SEQUENCE_NOFILE, 1, 0);
    SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
    SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
    OpenVideo.Enabled :=false;
    CloseVideo.Enabled :=True;
    SaveBMP.Enabled :=True;
    StartAVI.Enabled :=True;
    end;
    //开始录象并保存
    procedure TALVideoForm.StartAVIClick(Sender: TObject);
    begin
    if hWndC <> 0 then
       begin
        SaveDialog1.DefaultExt := 'avi';
        SaveDialog1.Filter := 'AVI files (*.avi)|*.avi';
        if SaveDialog1.Execute then
           begin
          CapturingAVI := true;
          SendMessage(hWndC,
          WM_CAP_FILE_SET_CAPTURE_FILEA,
          0,
          Longint(pchar(SaveDialog1.FileName)));
          SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
          end;
          
        end;
    end;
      

  2.   

    说明上帖的定义
    ....
    private
    hWndC : THandle;
    CapturingAVI : bool;
    ....
    implementationconst WM_CAP_START = WM_USER;
    const WM_CAP_STOP = WM_CAP_START + 68;
    const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
    const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
    const WM_CAP_SAVEDIB = WM_CAP_START + 25;
    const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
    const WM_CAP_SEQUENCE = WM_CAP_START + 62;
    const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
    const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+  63 ;
    const WM_CAP_SET_OVERLAY =WM_CAP_START+  51 ;
    const WM_CAP_SET_PREVIEW =WM_CAP_START+  50 ;
    const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
    const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
    const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
    const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
    const WM_CAP_SET_SCALE=WM_CAP_START+  53 ;
    const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+  52 ;
    function capCreateCaptureWindowA(lpszWindowName : PCHAR;
        dwStyle : longint;
        x : integer;
        y : integer;
        nWidth : integer;
        nHeight : integer;
        ParentWin : HWND;
        nId : integer): HWND;
        STDCALL EXTERNAL 'AVICAP32.DLL';
      

  3.   

    我不是要保存avi格式视频,而是用他提供的函数录象,保存成.264格式