📄 netsdkdemodlg.cpp
字号:
{
LastError();
}
}
//设置数据回调
// BOOL cbRec = CLIENT_SetRealDataCallBack(nChannelID, RealDataCallBack, (DWORD)this);
BOOL cbRec = CLIENT_SetRealDataCallBackEx(nChannelID, RealDataCallBackEx, (DWORD)this, 0x0000000f);
if (!cbRec)
{
LastError();
}
// BOOL bRet = CLIENT_DHPTZControl(nID,0, PTZ_UP_CONTROL, 2, 2,0, false);
// int iii = 0;
//this->SwitchMultiWnd(SPLIT1); //单画面
}
//接收播放进度状态处理
void CNetSDKDemoDlg::ReceivePlayPos(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize)
{
//取得窗口号
int nScreen = GetHandleSplit(lPlayHandle);
if(nScreen < 0)
{
return;
}
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(nScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
}
//更新播放进度值
if (siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *nParam = (SplitNetPlayParam *)siNode.Param;
if (nParam)
{
nParam->iPlayPos = dwDownLoadSize * 100 / dwTotalSize;
if (nParam->iPlayPos > 100)
{
int xyz = 0;
}
if(((int)dwDownLoadSize == -1) || (nParam->iPlayPos >= 100))
{
PlayStop(nScreen);
//m_playWnd[nScreen].ShowWindow(SW_HIDE);
//m_playWnd[nScreen].ShowWindow(SW_SHOW);
}
}
}
else if (siNode.Type == SPLIT_TYPE_PBBYTIME)
{
SplitPBByTimeParam *pbParam = (SplitPBByTimeParam *)siNode.Param;
if (pbParam)
{
pbParam->npos = dwDownLoadSize * 100 / dwTotalSize;
if(((int)dwDownLoadSize == -1) || (pbParam->npos >= 100))
{
PlayStop(nScreen);
//m_playWnd[nScreen].ShowWindow(SW_HIDE);
//m_playWnd[nScreen].ShowWindow(SW_SHOW);
}
}
}
}
//播放进度状态回调
void CALLBACK PlayCallBack(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser)
{
if(dwUser == 0)
{
return;
}
CNetSDKDemoDlg *dlg = (CNetSDKDemoDlg *)dwUser;
dlg->ReceivePlayPos(lPlayHandle, dwTotalSize, dwDownLoadSize);
}
//录像查询
void CNetSDKDemoDlg::SearchRecord()
{
m_SeachRecord_dlg.SetDevice((DeviceNode *)GetCurDeviceInfo());
m_SeachRecord_dlg.SetChannelNo(this->m_curScreen);
if(m_SeachRecord_dlg.DoModal() == IDOK) //打开回放时
{
if (!m_SeachRecord_dlg.m_playfile)
{
return;
}
if(!CheckCurSplitAndClose())
{
return;
}
// LONG nPlayID = CLIENT_PlayBackByRecordFile(dlg.m_playfile->pDevice->LoginID, &dlg.m_playfile->fileinfo,
// GetDlgItem(IDC_SCREEN1 + m_curScreen )->m_hWnd, PlayCallBack, (DWORD)this);
CWnd *plWnd = m_screenPannel.GetPage(m_curScreen);
if (!plWnd)
{
MessageBox("unexpected error!!!!");
return;
}
LONG lPlayHandle = CLIENT_PlayBackByRecordFileEx(m_SeachRecord_dlg.m_playfile->pDevice->LoginID, &m_SeachRecord_dlg.m_playfile->fileinfo,
plWnd->m_hWnd/*m_playWnd[m_curScreen].m_hWnd*/, PlayCallBack, (DWORD)this, PBDataCallBack, (DWORD)this);
if(!lPlayHandle)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYFAILED);
return;
}
else
{ //如果其它通道没有打开音频,则打开音频
if (m_curSoundSplit < 0)
{
if (FALSE == CLIENT_OpenSound(lPlayHandle))
{
LastError();
MessageBox(MSG_OPENSOUNDFAILED);
m_advanceBtnPannel.SetCheckSound(0);
}
else
{
m_advanceBtnPannel.SetCheckSound(1);
m_curSoundSplit = m_curScreen;
}
}
}
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
}
siNode.Type = SPLIT_TYPE_NETPLAY;
siNode.iHandle = lPlayHandle;
SplitNetPlayParam *nParam = new SplitNetPlayParam;
nParam->pFileInfo = new FileInfoNode;
memcpy(nParam->pFileInfo, m_SeachRecord_dlg.m_playfile, sizeof(FileInfoNode));
nParam->iPlayPos = 0;
nParam->iStatus = STATUS_PLAY;
siNode.Param = nParam;
ret = SetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
}
m_playctrlPannel.StartPlay();
UpdateCurScreenInfo();
}
}
//停止播放当前播放画面
BOOL CNetSDKDemoDlg::PlayCtrl_Stop()
{
int nRet = PlayStop(m_curScreen);
if (nRet < 0)
{
return FALSE;
}
else
{
// m_playWnd[curScreen].ShowWindow(SW_HIDE);
// m_playWnd[curScreen].ShowWindow(SW_NORMAL);
}
return TRUE;
}
//快放
BOOL CNetSDKDemoDlg::PlayCtrl_Fast()
{
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
return FALSE;
}
if(siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *pParam = (SplitNetPlayParam *)siNode.Param;
if(pParam->iStatus == STATUS_PAUSE)
{
goto e_exit;
}
if(pParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto e_exit;
}
pParam->iStatus = STATUS_STOP;
}
if (m_curSoundSplit == m_curScreen)
{
if (FALSE == CLIENT_CloseSound())
{
LastError();
MessageBox(MSG_CLOSESOUNDFAILED);
goto e_exit;
}
m_advanceBtnPannel.SetCheckSound(0);
m_curSoundSplit = -1;
}
ret = CLIENT_FastPlayBack(siNode.iHandle);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
}
pParam->iStatus = STATUS_PLAY;
}
else if (siNode.Type == SPLIT_TYPE_PBBYTIME)
{
SplitPBByTimeParam *pbParam = (SplitPBByTimeParam *)siNode.Param;
if(pbParam->iStatus == STATUS_PAUSE)
{
goto e_exit;
}
if(pbParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
}
else
{
pbParam->iStatus = STATUS_STOP;
}
}
if (m_curSoundSplit == m_curScreen)
{
if (FALSE == CLIENT_CloseSound())
{
LastError();
MessageBox(MSG_CLOSESOUNDFAILED);
goto e_exit;
}
m_advanceBtnPannel.SetCheckSound(0);
m_curSoundSplit = -1;
}
ret = CLIENT_FastPlayBack(siNode.iHandle);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto e_exit;
}
pbParam->iStatus = STATUS_PLAY;
}
else
{
MessageBox(MSG_DEMODLG_NOTPLAYING);
goto e_exit;
}
return TRUE;
e_exit:
return FALSE;
}
//慢放
BOOL CNetSDKDemoDlg::PlayCtrl_Slow()
{
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
return FALSE;
}
if(siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *pParam = (SplitNetPlayParam *)siNode.Param;
if(pParam->iStatus == STATUS_PAUSE)
{
goto e_exit;
}
if(pParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto e_exit;
}
pParam->iStatus = STATUS_STOP;
}
ret = CLIENT_SlowPlayBack(siNode.iHandle);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto e_exit;
}
pParam->iStatus = STATUS_PLAY;
}
else if (siNode.Type == SPLIT_TYPE_PBBYTIME)
{
SplitPBByTimeParam *pbParam = (SplitPBByTimeParam *)siNode.Param;
if(pbParam->iStatus == STATUS_PAUSE)
{
goto e_exit;
}
if(pbParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto e_exit;
}
pbParam->iStatus = STATUS_STOP;
}
ret = CLIENT_SlowPlayBack(siNode.iHandle);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto e_exit;
}
pbParam->iStatus = STATUS_PLAY;
}
else
{
MessageBox(MSG_DEMODLG_NOTPLAYING);
goto e_exit;
}
return TRUE;
e_exit:
return FALSE;
}
//单帧播放
BOOL CNetSDKDemoDlg::PlayCtrl_Step()
{
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
return FALSE;
}
if(siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *pParam = (SplitNetPlayParam *)siNode.Param;
if(pParam->iStatus == STATUS_PAUSE)
{
goto e_exit;
}
ret = CLIENT_StepPlayBack(siNode.iHandle, FALSE);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto e_exit;
}
pParam->iStatus = STATUS_STEP;
}
else if (siNode.Type == SPLIT_TYPE_PBBYTIME)
{
SplitPBByTimeParam *pbParam = (SplitPBByTimeParam *)siNode.Param;
if(pbParam->iStatus == STATUS_PAUSE)
{
MessageBox("paused");
goto e_exit;
}
ret = CLIENT_StepPlayBack(siNode.iHandle, FALSE);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto e_exit;
}
pbParam->iStatus = STATUS_STEP;
}
else
{
MessageBox(MSG_DEMODLG_NOTPLAYING);
goto e_exit;
}
return TRUE;
e_exit:
return FALSE;
}
BOOL CNetSDKDemoDlg::PlayCtrl_Frame(int frame)
{
// KillTimer(TIMER_KBPS);
if(!UpdateData(true))
{
return FALSE;
}
if ((frame <= 0) || (frame > 120))
{
MessageBox(MSG_SCHRECORD_ILLEGALFRAME);
return FALSE;
}
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
return FALSE;
}
ret = FALSE;
if(siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *pParam = (SplitNetPlayParam *)siNode.Param;
if(pParam->iStatus == STATUS_PAUSE)
{
goto out;
}
if(pParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto out;
}
pParam->iStatus = STATUS_STOP;
}
if (m_curSoundSplit == m_curScreen)
{
if (FALSE == CLIENT_CloseSound())
{
LastError();
MessageBox(MSG_CLOSESOUNDFAILED);
goto out;
}
m_advanceBtnPannel.SetCheckSound(0);
m_curSoundSplit = -1;
}
ret = CLIENT_SetFramePlayBack(siNode.iHandle, frame);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto out;
}
}
else if(siNode.Type == SPLIT_TYPE_PBBYTIME)
{
SplitPBByTimeParam *pbParam = (SplitPBByTimeParam *)siNode.Param;
if(pbParam->iStatus == STATUS_PAUSE)
{
goto out;
}
if(pbParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto out;
}
pbParam->iStatus = STATUS_STOP;
}
if (m_curSoundSplit == m_curScreen)
{
if (FALSE == CLIENT_CloseSound())
{
LastError();
MessageBox(MSG_CLOSESOUNDFAILED);
goto out;
}
m_advanceBtnPannel.SetCheckSound(0);
m_curSoundSplit = -1;
}
ret = CLIENT_SetFramePlayBack(siNode.iHandle, frame);
if(!ret)
{
LastError();
MessageBox(MSG_DEMODLG_PLAYCTRLFAILED);
goto out;
}
}
else
{
MessageBox(MSG_DEMODLG_NOTPLAYING);
goto out;
}
out:
// SetTimer(TIMER_KBPS, 1111,NULL);
return ret;
}
//播放/暂停切换
BOOL CNetSDKDemoDlg::PlayCtrl_Play()
{
BOOL isPause = false;
SplitInfoNode siNode;
memset(&siNode, 0, sizeof(siNode));
BOOL ret = GetSplitInfo_Main(m_curScreen, &siNode);
if (!ret)
{
MessageBox("error while getting split info");
return FALSE;
}
ret = FALSE;
if(siNode.Type == SPLIT_TYPE_NETPLAY)
{
SplitNetPlayParam *pParam = (SplitNetPlayParam *)siNode.Param;
if(pParam->iStatus == STATUS_STEP)
{
ret = CLIENT_StepPlayBack(siNode.iHandle, TRUE);
if (!ret)
{
LastError();
goto out;
}
pParam->iStatus = STATUS_STOP;
}
if(pParam->iStatus != STATUS_PAUSE)
{
isPause = true;
}
ret = CLIENT_PausePlayBack(siNode.iHandle, isPause);
if(!ret)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -