BOOL CPlayerHik::Stop() { //RemoveDisplayCallback(m_nPort); PlayM4_Stop(m_nPort); PlayM4_CloseFile(m_nPort); return PlayM4_FreePort(m_nPort); }
void CSingleCamDlg::OnBnClickedBtnStopcam()//停止 { NET_DVR_StopRealPlay(lRealHandle1); NET_DVR_StopRealPlay(lRealHandle2); //释放播放库资源 PlayM4_Stop(nPort1); PlayM4_CloseStream(nPort1); PlayM4_FreePort(nPort1); PlayM4_Stop(nPort2); PlayM4_CloseStream(nPort2); PlayM4_FreePort(nPort2); GetDlgItem(IDC_BTN_Login)->EnableWindow(TRUE); //登录按钮失效 GetDlgItem(IDC_BTN_PlayCam)->EnableWindow(TRUE); //播放按钮 有效 GetDlgItem(IDC_BTN_StopCam)->EnableWindow(FALSE); //停止按钮 失效 GetDlgItem(IDC_BTN_SavePicture)->EnableWindow(FALSE); // 抓图按钮 失效 GetDlgItem(IDC_BTN_SavePicture2)->EnableWindow(FALSE); // 抓图按钮 失效 GetDlgItem(IDC_BTN_StopSave)->EnableWindow(FALSE); // 停止抓图按钮 失效 }
DevChannelHK::~DevChannelHK() { InfoL << endl; if (m_i64PreviewHandle >= 0) { NET_DVR_StopRealPlay(m_i64PreviewHandle); m_i64PreviewHandle = -1; } if (m_iPlayHandle >= 0) { PlayM4_StopSoundShare(m_iPlayHandle); PlayM4_Stop(m_iPlayHandle); m_iPlayHandle = -1; } }
void _XHIKCamera::release() { if(!m_isInited) return; PlayM4_Stop(lPort); PlayM4_CloseFile(lPort); NET_DVR_Logout(m_lUserID); NET_DVR_Cleanup(); XDELETE_ARRAY(m_dataRGB); XDELETE_ARRAY(m_dataRGBOut); //下面需要删除资源 m_isInited = XFalse; }
MainWindow::~MainWindow() { // 停止解码 PlayM4_Stop(lPort); //关闭流,回收源数据缓冲 PlayM4_CloseStream(lPort); //释放播放库端口号 PlayM4_FreePort(lPort); NET_DVR_StopRealPlay(lRealPlayHandle); //注销用户 NET_DVR_Logout(lUserID); //释放SDK资源 NET_DVR_Cleanup(); delete ui; }
VOID CPlayer::StopMonitor( ) { TRACE(_T("(MTVideo)停止监视 开始\r\n")); m_exit = true; m_comSocket.Close(); //TRACE(_T("(MTVideo)停止监视 将执行WaitForSingleObject dvrIP = %s channel = %d m_PlayHandle = %d m_index_MTManager = %d\r\n", // m_UniSDKCltInfo.connInfo.ip, m_UniSDKCltInfo.channel, m_PlayHandle, m_index_MTManager); DWORD dwret = WaitForSingleObject( m_hExitEvent, WAIT_THREAD_EXIT_MAX_TIME ); if(dwret == WAIT_TIMEOUT) { TRACE(_T("(MTVideo)!!!!!停止监视时 WaitFor退出信号超时 \r\n")); } BOOL bret = PlayM4_Stop(m_index); int nErr = 0; if (!bret) { nErr = PlayM4_GetLastError(m_index); //string strErr = GetPlayMp4LastErrorStr( nErr ); //TRACE_SDK_ERROR("执行 CHKSeries::CloseStream 中 PlayM4_Stop 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() ); //return -nErr; } bret = PlayM4_CloseStream( m_index); if (!bret) { nErr = PlayM4_GetLastError(m_index); //string strErr = GetPlayMp4LastErrorStr( nErr ); //TRACE_SDK_ERROR("执行 CHKSeries::CloseStream 中 PlayM4_CloseStream 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() ); //return -nErr; } //TRACE(_T("(MTVideo)停止监视成功 DvrIP = %s channnel = %d m_PlayHandle = %d m_index_MTManager = %d\r\n", // m_UniSDKCltInfo.connInfo.ip, m_UniSDKCltInfo.channel, m_PlayHandle, m_index_MTManager); NAME(PlayM4_FreePort)(m_index); m_index = -1; m_PlayHandle = -1; memset(&m_rcRenderRect, 0, sizeof(RECT)); m_hRenderWnd = NULL; }
void CHaikangSDK::StopPlay(int screenNo) { //关闭预览 NET_DVR_StopRealPlay(m_RealHandle[screenNo]); //注销用户 NET_DVR_Logout_V30(m_LoginHandle[screenNo]); PlayM4_Stop(m_lPort[screenNo]); PlayM4_CloseStream(m_lPort[screenNo]); PlayM4_FreePort(m_lPort[screenNo]); m_LoginHandle[screenNo] = -1; m_lPort[screenNo]=-1; #if OPEN_CARDETECT_CODE //停止识别 if(false == DlgMain->DlgScreen.m_videoInfo[screenNo].enableDetect) DlgMain->DlgScreen.CarDetect[screenNo].Stop(); #endif }
int CPlayer::ReStartMonitor() { m_comSocket.Close(); m_streamParser.ClearBuf();//清除缓冲 memset(&m_rcRenderRect, 0, sizeof(RECT)); if( m_comSocket.Connect(m_clientInfo.connInfo.ip, m_clientInfo.connInfo.port) < 0 ) { m_comSocket.Close(); return HHV_ERROR_CONNECT; } int streamHeaderSize = 4*1024; memset( m_streamHeader, 0x00, sizeof(m_streamHeader) ); int ret = MonitorStartCmdMT(m_comSocket.m_hSocket, &m_clientInfo, m_streamHeader, streamHeaderSize); if( ret < 0 ) { m_comSocket.Close(); return ret; } PlayM4_Stop(m_index); PlayM4_CloseStream( m_index); ResetBuf(); //mode- 流模式(1-实时流/2-文件流) int nErr = 0; m_playType = STREAME_REALTIME; BOOL bret = PlayM4_SetStreamOpenMode(m_index, m_playType); bret = PlayM4_OpenStream( m_index, (BYTE*)m_streamHeader, streamHeaderSize, 600*1024); if (!bret) { m_comSocket.Close(); nErr = PlayM4_GetLastError(m_index); return -nErr; } m_disconnection = false; if( ! PlayM4_RigisterDrawFun( m_index, MP4SDKDrawFun, (DWORD)this) ) { m_comSocket.Close(); nErr = PlayM4_GetLastError(m_index); //TRACE_SDK_ERROR("执行 CHKSeries::RegisterDrawFun 中 PlayM4_RigisterDrawFun 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() ); return -nErr; } bret = PlayM4_Play(m_index, m_hWnd); if (!bret) { nErr = PlayM4_GetLastError(m_index); //string strErr = GetPlayMp4LastErrorStr( nErr ); //TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中 PlayM4_Play 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() ); return -nErr; } m_hRenderWnd = m_hWnd; ResizeMonitorWindow(); //memcpy(&m_clientInfo, clientInfo, sizeof(UNISDK_CLIENT_INFO)); //开启线程, 接收视频流 m_exit = false; UINT threadid(0); m_Thread = (HANDLE)_beginthreadex( NULL, 4*1024*1024, DecoderRoutine, this, 0, &threadid ); if(m_Thread <= 0) { TRACE(_T("(MTVideo)!!!!!!开辟接受数据线程失败!m_Thread:%d errno:%d _doserrno:%d \r\n"), m_Thread, errno, _doserrno); SetEvent( m_hExitEvent ); } CloseHandle( m_Thread ); // // TRACE(_T("(MTVideo)监视成功结束 m_PlayHandle = %d dvrIP = %s channel = %d\r\n"), //m_PlayHandle, m_clientInfo.connInfo.ip, clientInfo->channel); return m_index; }