百分悬赏新人求助--海康SDK二次开发预览问题

lin0116 2013-03-25 01:51:17
我用MFC写的一个小程序,对海康SDK进行二次开发,但在预览的时候不到10秒钟就会卡屏,不知道是什么原因,悬赏100分求助,只给解决了问题的人,分不够可以在加,重要的是要能解决问题。以下是我添加的源代码,求各位大神帮忙啊。

BOOL CPTZTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
NET_DVR_Init();
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
m_lUserID = NET_DVR_Login_V30("192.168.0.250",8000,"admin","12345",&struDeviceInfo);
if(m_lUserID < 0)
{
printf("Login error, %d\n",NET_DVR_GetLastError());
NET_DVR_Cleanup();
return FALSE;
}

return TRUE; // return TRUE unless you set the focus to a control
}

void CPTZTestDlg::OnBtnPreview()
{
// TODO: Add your control notification handler code here
NET_DVR_CLIENTINFO ClientInfo = {0};
ClientInfo.hPlayWnd = GetDlgItem(IDC_STATIC_OUTPUT)->m_hWnd;
ClientInfo.lChannel = 1;
ClientInfo.lLinkMode = 0;
ClientInfo.sMultiCastIP = NULL;
BOOL bPreviewBlock = false;
m_lRealPlayHandle = NET_DVR_RealPlay_V30(m_lUserID, &ClientInfo, NULL, NULL, 0);
if(m_lRealPlayHandle < 0)
{
MessageBox("Play Error!", NULL, MB_OK);
}
}

void CPTZTestDlg::OnBtnStop()
{
// TODO: Add your control notification handler code here
BOOL bRet = NET_DVR_StopRealPlay(m_lRealPlayHandle);
if (!bRet)
{
CString strErr;
strErr.Format("NET_DVR_StopRealPlay ErrorCode = %d\n", NET_DVR_GetLastError());
MessageBox(strErr,NULL,MB_OK);
}
}

void CPTZTestDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default

NET_DVR_Logout(m_lUserID);
NET_DVR_Cleanup();
CDialog::OnClose();
}

注1:IDC_STATIC_OUTPUT为我在主窗口上添加的静态文本框ID,用来显示预览的图像。
注2:我的程序并不是不能预览,只是预览的时候隔10秒左右就会卡,有时会卡好多秒的时间。所以我要解决的是卡的问题,请看清楚。
...全文
336 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
么特里亚 2015-12-08
  • 打赏
  • 举报
回复
引用 8 楼 fron_csl 的回复:
首先谢谢各位的的帮助。 补充1:我监视过内存,并无内存泄露的问题出现。 补充2:监视网络也并未发现网络不好的状况。 补充3:已经咨询了hik了,他们已经提出了解决方案。 补充4:再一次感谢各位,虽然没有解决掉问题,但你们的热心帮助我很感谢,因已经与hik协商了解决方案,所以 将结贴。为了表示对各位的感谢,没人给予10分,以示感谢。
请问你是怎么解决卡顿的
lin0116 2013-03-26
  • 打赏
  • 举报
回复
首先谢谢各位的的帮助。 补充1:我监视过内存,并无内存泄露的问题出现。 补充2:监视网络也并未发现网络不好的状况。 补充3:已经咨询了hik了,他们已经提出了解决方案。 补充4:再一次感谢各位,虽然没有解决掉问题,但你们的热心帮助我很感谢,因已经与hik协商了解决方案,所以 将结贴。为了表示对各位的感谢,没人给予10分,以示感谢。
lgxing 2013-03-25
  • 打赏
  • 举报
回复
网络不好,就是用副码流吧,还可以选一下传输的质量 linkmode好像有一个值是选择码流的,记不清了
wtbike 2013-03-25
  • 打赏
  • 举报
回复
话说,hik的sdk不是都有demo的吗?
oyljerry 2013-03-25
  • 打赏
  • 举报
回复
^_^,估计找SDK开发商更快
wtbike 2013-03-25
  • 打赏
  • 举报
回复
把实时视频录制下来,然后用解码sdk播放,看会不会有卡顿现象。先得排除网络原因
jimette 2013-03-25
  • 打赏
  • 举报
回复
只是预览的时候隔10秒左右就会卡, ============================ 内存有泄漏么?
无言猪 2013-03-25
  • 打赏
  • 举报
回复
这种类型的问题,只能咨询sdk提供商,底层的网络,解码,显示都是他们做的,你只能提出现象.
lgstudyvc 2013-03-25
  • 打赏
  • 举报
回复
直接用NET_DVR_RealPlay,没发现卡 你可以直接咨询hik

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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