海康录像机视频预览问题

libin2524 2014-01-21 10:25:58
使用海康SDK开发MFC工程,窗口中使用STATIC TEXT来显示视频,编译通过,但是窗口中无视频显示
// 初始化
if (!NET_DVR_Init()) AfxMessageBox(_T("初始化错误"));

//设置连接时间与重连时间
NET_DVR_SetConnectTime(2000, 1);
NET_DVR_SetReconnect(10000, true);
// 注册设备
NET_DVR_DEVICEINFO_V30 DeviceInfo;
LONG lUserID = NET_DVR_Login_V30("192.0.0.64",8000,"admin","12345",&DeviceInfo);

if (lUserID <0)
{
//用户名密码错误
if (NET_DVR_GetLastError() == NET_DVR_PASSWORD_ERROR)
{
//处理错误信息
AfxMessageBox(_T("连接的用户名或者密码有错误\n"));
}
//连接到DVR的客户端达到最大
else if(NET_DVR_GetLastError() == NET_DVR_OVER_MAXLINK)
{
//处理错误信息
AfxMessageBox(_T("连接到DVR的客户端达到最大\n"));
}
}

//启动预览并设置回调数据流
LONG lRealPlayHandle = -1;
NET_DVR_CLIENTINFO clientInfo;
clientInfo.hPlayWnd = GetDlgItem(IDC_STATIC_PREVIEWBG)->GetSafeHwnd();
clientInfo.lChannel = 1; //预览通道号
clientInfo.lLinkMode = 0; //表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式;
clientInfo.sMultiCastIP =" "; //多播地址,需要多播预览时配置
BOOL bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是
lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID,&clientInfo,NULL,NULL,bPreviewBlock);

if (lRealPlayHandle<0)
{
MessageBox("Play Error");
NET_DVR_Logout(lUserID);
NET_DVR_Cleanup();
return;
}
...全文
1127 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
joannasy 2014-06-07
  • 打赏
  • 举报
回复
引用 12 楼 libin2524 的回复:
执行之后STATIC TEXT中不显示视频
请问您是怎么解决的 我现在也是不显示视频
Zorion_9 2014-04-24
  • 打赏
  • 举报
回复
楼主您好,我想跟您问个比较傻的问题, char* IPAddr = "114.212.119.80"; char* Admin = "admin"; char* PSW = "admin"; IUserID = NET_DVR_Login_V30(IPAddr, 37777, Admin, PSW, &struDeviceInfo); 每次运行到最后一步都会返回-1,剩下的程序就跑不起来了,我想跟您问下,是怎么取到设备信息的啊?就是struDeviceInfo的内容是怎么填进去啊?IP地址和端口号还有用用户密码都是对的,但就是跑不出来,不晓得为什么?
lijianli9 2014-01-22
  • 打赏
  • 举报
回复
1: NET_DVR_Init(); 2: NET_DVR_DEVICEINFO_V30 struDeviceInfo; memset(&struDeviceInfo, 0, sizeof(NET_DVR_DEVICEINFO_V30)); int nLoginid = NET_DVR_Login_V30(szBufferIp, ::atoi(szBufferPort),szBufferAdmin,szBufferPassword,&struDeviceInfo); 3 NET_DVR_CLIENTINFO struPlayInfo; struPlayInfo.hPlayWnd = pStatic->GetSafeHwnd(); struPlayInfo.lChannel = pStatic->GetChannel(); struPlayInfo.lLinkMode = 0; struPlayInfo.sMultiCastIP = ""; long m_lPlayHandle = NET_DVR_RealPlay_V30(nLoginid , &struPlayInfo); 4: NET_DVR_Cleanup();
libin2524 2014-01-21
  • 打赏
  • 举报
回复
执行之后STATIC TEXT中不显示视频
shuishenyanfu 2014-01-21
  • 打赏
  • 举报
回复
引用 6 楼 m617105 的回复:
你这个是直接用网络库来播放的。跟我说的模式不一样。 BOOL bPreviewBlock = true; //请求码流过程是否阻塞,0:否,1:是 lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID,&clientInfo,NULL,NULL,bPreviewBlock); 你可以用一下阻塞的模式,看看码流请求成功没。
+1
_船长_ 2014-01-21
  • 打赏
  • 举报
回复
跑不起来是什么意思?多给点信息
libin2524 2014-01-21
  • 打赏
  • 举报
回复
demo程序太大了,正在看。这个是用他提供的SDK写的预览程序。想知道为什么跑不起。
libin2524 2014-01-21
  • 打赏
  • 举报
回复
请求成功了,单步调试过。而且基本相同的console程序可以预览的。
lgstudyvc 2014-01-21
  • 打赏
  • 举报
回复
海康有demo 比较和你写的
浩南_哥 2014-01-21
  • 打赏
  • 举报
回复
你这个是直接用网络库来播放的。跟我说的模式不一样。 BOOL bPreviewBlock = true; //请求码流过程是否阻塞,0:否,1:是 lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID,&clientInfo,NULL,NULL,bPreviewBlock); 你可以用一下阻塞的模式,看看码流请求成功没。
libin2524 2014-01-21
  • 打赏
  • 举报
回复
在预览接口NET_DVR_RealPlay_V30中预览参数的播放窗口句柄赋成有效句柄,则由SDK实现解码功能,可直接预览播放。
弱水垂钓 2014-01-21
  • 打赏
  • 举报
回复
在前单位弄过一阶段海康的录像卡,记得当时是新建了一个类继承自CWnd,然后在要显示的窗体中,实例化这个CWndXXX,然后定义一个ClientInfo(结构体怎么拼写忘了),把CWndXXX的m_hWnd传递到hPlayWnd,然后启动Capture,录像卡采集的第x路视频信号就显示到了CWndXXX上,只记得这么多了,没有备份源代码...
浩南_哥 2014-01-21
  • 打赏
  • 举报
回复
网络库应该会有个回调视频数据的函数,在这个回调函数里你自己需要往播放库放视频数据
libin2524 2014-01-21
  • 打赏
  • 举报
回复
能不能具体点呢?
弱水垂钓 2014-01-21
  • 打赏
  • 举报
回复
好像得有一个空回调。。记不太清楚了
libin2524 2014-01-21
  • 打赏
  • 举报
回复
自己再顶
libin2524 2014-01-21
  • 打赏
  • 举报
回复
顶起,,别沉啊!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧