⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 海康威视DVR基于Delphi下应用的例子,实现对Dvr的登陆,视频流的播放等.
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TfrmMain = class(TForm)
    Panel1: TPanel;
    btnPlay: TButton;
    btnStop: TButton;
    lbl1: TLabel;
    edtIP: TEdit;
    lbl2: TLabel;
    edtUser: TEdit;
    edtPassword: TEdit;
    lbl3: TLabel;
    lbl4: TLabel;
    cbb1: TComboBox;
    cmdUp: TButton;
    cmdLeft: TButton;
    cmdRight: TButton;
    cmdDown: TButton;
    cmdZoomIn: TButton;
    cmdZoomOut: TButton;
    cmdFocusNear: TButton;
    cmdFocusFar: TButton;
    cmdIRISOpen: TButton;
    cmdIRISClose: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button5: TButton;
    txtYZD: TEdit;
    Label5: TLabel;
    Button12: TButton;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnPlayClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmdUpMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure cmdUpMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button5Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;
  iPlayHwnd:Integer;
  iLoginID:Integer;
implementation

uses HikVisionSDK, UnitPlayBack;

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
    iPlayHwnd :=-1;
    iLoginID := -1;
    NET_DVR_Init;
    
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  NET_DVR_Cleanup;
end;

procedure TfrmMain.btnPlayClick(Sender: TObject);
var
//  lpDeviceInfo:LPNET_DVR_DEVICEINFO ;
  lpClientInfo :LPNET_DVR_CLIENTINFO ;
begin
  //lpDeviceInfo :=  new (LPNET_DVR_DEVICEINFO );
  //iLoginID :=NET_DVR_Login(PChar(edtIP.Text),8000,PChar(edtUser.text),PChar(edtPassword.text),lpDeviceInfo);
  if  iLoginID = -1 then
    begin
       Showmessage('未登录DVR,请先登录.');
    end
  else
    begin
       //播放
      lpClientInfo :=new(LPNET_DVR_CLIENTINFO);
      lpClientInfo.lChannel  := cbb1.ItemIndex+1;
      lpClientInfo.lLinkMode := 0;
      lpClientInfo.hPlayWnd  := Panel1.Handle ;
      lpClientInfo.sMultiCastIP :=nil;

      iPlayHwnd := NET_DVR_RealPlay(iLoginID,lpClientInfo);
      if iPlayHwnd<0 then
       begin
         Showmessage('错误:无法得到该通道的图像.');
       end;
      Dispose(lpClientInfo);
      btnPlay.Enabled:=false;
      btnStop.Enabled:=true;
    end;
   
   //dispose(lpDeviceInfo) ;

end;

procedure TfrmMain.btnStopClick(Sender: TObject);
begin
   if iPlayHwnd>=0 then
      begin
        NET_DVR_StopRealPlay(iPlayHwnd);
        //NET_DVR_Logout(iLoginID);
        iPlayHwnd :=-1;
        //iLoginID :=-1;
        btnPlay.Enabled:=true;
        btnStop.Enabled:=false;
      end;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  btnStop.Click;
end;

procedure TfrmMain.cmdUpMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //
  NET_DVR_PTZControl(iPlayHwnd,(Sender as TButton).Tag,0);
end;

procedure TfrmMain.cmdUpMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
//
  NET_DVR_PTZControl(iPlayHwnd,(Sender as TButton).Tag,1);
end;

procedure TfrmMain.Button5Click(Sender: TObject);
begin
   NET_DVR_PTZPreset(iPlayHwnd, GOTO_PRESET, StrToInt(txtYZD.Text));
end;

procedure TfrmMain.Button12Click(Sender: TObject);
begin
   //远和回放
   frmPlayBack.Show; 
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  lpDeviceInfo:LPNET_DVR_DEVICEINFO ; 
begin
  lpDeviceInfo :=  new (LPNET_DVR_DEVICEINFO );
  iLoginID :=NET_DVR_Login(PChar(edtIP.Text),8000,PChar(edtUser.text),PChar(edtPassword.text),lpDeviceInfo);
  if  iLoginID = -1 then
    begin
       Showmessage('登陆DVR失败,无法播放.');
       Dispose(lpDeviceInfo) ;       
       exit;
    end;
  Dispose(lpDeviceInfo) ;
  Button1.Enabled :=false;
  Button2.Enabled :=true;
end;

procedure TfrmMain.Button2Click(Sender: TObject);
begin
  NET_DVR_Logout(iLoginID);
  iLoginID :=-1;
  Button1.Enabled :=true;
  Button2.Enabled :=false;  
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -