海康硬盘录像机,用delphi做实时监控,觉得已经登录上,为什么播放不出来,哪里有不对的地方,求大神指导
var MyNode,ChildNode:TTreeNode;
i:Byte;
P:Pbyte;
addform:Tform2;
m_hWnd:integer;
begin
Btn_Play_Wnd.Caption := 'Play!';
deviceIP := PAnsiChar(AnsiString(form1.Edit_IP.Text));
devicePort := StrtoInt(form1.Edit_Port.Text);
userName := PAnsiChar(AnsiString(form1.Edit_User.Text));
passWord := PAnsiChar(AnsiString(form1.Edit_Password.Text));
//登录设备
lUserID := NET_DVR_Login_V30(deviceIP, devicePort, userName, passWord, @struDeviceInfo);
if lUserID < 0 then
begin
dwRet := NET_DVR_GetLastError();
Showmessage('登录设备失败,错误号为'+ IntToStr(dwRet));
Exit;
end;
struPlayInfo.lChannel := StrtoInt(form1.Edit_ch_no.Text); //通道号
struPlayInfo.lLinkMode := 0; //最高位为1表示子码流,其他位值:0-TCP方式,1-UDP方式,2-多播方式
struPlayInfo.sMultiCastIP := '234.5.6.7'; //多播组地址
struPlayInfo.hPlayWnd := Panel1.Handle; //预览窗口
//struPlayInfo.hPlayWnd := 0;//不解码只取流
//开始预览
//lRealHandle := NET_DVR_RealPlay_V30(lUserID, @struPlayInfo, nil , pUser, TRUE);
lRealHandle := NET_DVR_RealPlay_V30(lUserID, @struPlayInfo, nil ,1 , FALSE);
//设置回调函数,在回调里面解码
//lRealHandle := NET_DVR_RealPlay_V30(lUserID, @struPlayInfo, @testRealDataCallBack_V30, pUser, TRUE);
if lRealHandle>=0 then
begin
Btn_Play.Enabled := False;
Btn_Stop.Enabled := True;
NET_DVR_MakeKeyFrame(lUserID,struPlayInfo.lChannel); /////
MyNode := TreeView1.Items.Add(nil,'device'); /////
MyNode.Data := Ptr(-1); /////
for i := 1 to {di.byChanNum }10 do /////
begin
ChildNode := TreeView1.Items.AddChild(MyNode, Format('Channel--%d',[i]));
GetMem(P,Sizeof(Byte));
p^ := i-1;
ChildNode.Data := Pointer(p);
end;
end
else
begin
dwRet := NET_DVR_GetLastError();
Showmessage('预览失败,错误号为'+ IntToStr(dwRet));
end;
Self.SetFocus;
end;