資源簡介
實現(xiàn)海康私有流分析為標(biāo)準(zhǔn)流
代碼片段和文件信息
//?Demo.cpp?:?Defines?the?entry?point?for?the?console?application.
//
#include?“afx.h“
#include?“stdafx.h“
#include?“windows.h“
#include?“stdio.h“
#include?“HCNetSDK.h“
#include?“AnalyzeDataInterface.h“
#pragma?comment?(lib?“AnalyzeData.lib“)
#pragma?comment?(lib?“HCNetSDK.lib“)
#define?BUFFER_SIZE??32?*?1024
#define?HEADER_SIZE??40
class?CSource
{
public:
CSource();
virtual?~CSource();
BOOL?OpenFile(char*?strFileName);
BOOL?OpenFileStream(char*?strFileName);
BOOL?OpenRealStream(char*?strIP);
void?Close();
BOOL?AnalyzeFileStream();
BOOL?AnalyzeRealStream(BYTE*?pData?DWORD?dwDataLen?DWORD?dwType);
BOOL?AnalyzeFile(char*?strFileName);
private:
HANDLE?m_hFile;
HANDLE?m_hThread;
BOOL???m_bStop;
BYTE*??m_pBuffer;
LONG???m_lPort;
LONG???m_lUser;
LONG???m_lPlay;
};
CSource::CSource()
{
m_hFile???=?INVALID_HANDLE_VALUE;
m_hThread?=?NULL;
m_bStop???=?FALSE;
m_pBuffer?=?NULL;
m_lPort???=?-1;
m_lUser???=?-1;
m_lPlay???=?-1;
}
CSource::~CSource()
{
Close();
}
void?CSource::Close()
{
if?(m_hThread)
{
m_bStop?=?TRUE;
WaitForSingleobject(m_hThread?INFINITE);
CloseHandle(m_hThread);
m_hThread?=?NULL;
}
if?(m_pBuffer)
{
delete[]?m_pBuffer;
m_pBuffer?=?NULL;
}
if?(m_hFile?!=?INVALID_HANDLE_VALUE)
{
CloseHandle(m_hFile);
m_hFile?=?INVALID_HANDLE_VALUE;
}
if?(m_lPlay?!=?-1)
{
NET_DVR_StopRealPlay(m_lPlay);
m_lPlay?=?-1;
}
if?(m_lUser?!=?-1)
{
NET_DVR_Logout(m_lUser);
m_lUser?=?-1;
}
NET_DVR_Cleanup();
if?(m_lPort?!=?-1)
{
AnalyzeDataClose(m_lPort);
m_lPort?=?-1;
}
}
DWORD?WINAPI?ReadFileThread(LPVOID?lpParam)
{
CSource*?pcSource?=?(CSource*)lpParam;
pcSource->AnalyzeFileStream();
return?1;
}
BOOL?CSource::AnalyzeFileStream()
{
DWORD?dwBytes?=?0;
ReadFile(m_hFile?m_pBuffer?HEADER_SIZE?&dwBytes?NULL);
if?(?!AnalyzeDataOpenStreamEx(m_lPort?m_pBuffer)?)
{
printf(“Demo:?open?stream?failed!\n“);
return?FALSE;
}
while?(TRUE)
{
if?(m_bStop)
{
break;
}
????ReadFile(m_hFile?m_pBuffer?BUFFER_SIZE?&dwBytes?NULL);
????if?(dwBytes?==?0)
{
Sleep(10);
continue;
}
????if?(?!AnalyzeDataInputData(m_lPort?m_pBuffer?dwBytes)?)
{
printf(“Demo:?buffer?overflow?lost?stream?data!\n“);
}
PACKET_INFO_EX?stPacket;
while?(AnalyzeDataGetPacketEx(m_lPort?&stPacket)?==?0)
{
if?(stPacket.nPacketType?==?VIDEO_I_frame)
{
printf(“Video?I?frame?framenum?=?%u?timestamp?=?%u?size?=?%dx%dglobaltime=%d-%d-%d-%d-%d-%d!\n“?
stPacket.dwframeNum?stPacket.dwTimeStamp?stPacket.uWidth?stPacket.uHeightstPacket.nYear
stPacket.nMonthstPacket.nDaystPacket.nHourstPacket.nMinutestPacket.nSecond);
}
else?if?(stPacket.nPacketType?==?VIDEO_P_frame)
{
printf(“Video?P?frame?framenum?=?%u?timestamp?=?%u?size?=?%dx%dglobaltime=%d-%d-%d-%d-%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2808??2009-08-17?10:09??AnalyzeDataNewInterface.h
?????文件???????2895??2009-04-20?08:06??Demo_Stream\AnalyzeDataInterface.h
?????文件???????9369??2009-08-18?12:26??Demo_Stream\Demo.cpp
?????文件???????4425??2009-07-27?13:44??Demo_Stream\Demo.dsp
?????文件????????533??2009-04-01?08:37??Demo_Stream\Demo.dsw
?????文件?????590848??2009-09-10?11:13??Demo_Stream\Demo.ncb
?????文件??????53760??2009-09-10?11:13??Demo_Stream\Demo.opt
?????文件?????405584??2009-07-06?11:14??Demo_Stream\HCNetSDK.dll
?????文件?????134922??2009-02-04?10:24??Demo_Stream\HCNetSDK.h
?????文件??????72128??2008-10-14?09:39??Demo_Stream\HCNetSDK.lib
?????文件????????291??2009-04-01?08:37??Demo_Stream\StdAfx.cpp
?????文件????????667??2009-04-01?08:37??Demo_Stream\StdAfx.h
?????文件??????76288??2009-09-10?13:48??AnalyzeData(3.0.0.01)使用說明.doc
?????文件?????127067??2009-09-01?14:45??AnalyzeData.dll
?????文件???????6478??2009-09-15?15:29??AnalyzeData.lib
?????文件?????173056??2009-09-15?15:29??AnalyzeData.pdb
?????文件???????2981??2009-08-18?09:06??AnalyzeDataInterface.h
?????目錄??????????0??2009-09-18?16:22??Demo_Stream\Debug
?????目錄??????????0??2019-06-27?11:10??Demo_Stream
-----------?---------??----------?-----??----
??????????????1664100????????????????????19
- 上一篇:VC6 USB開發(fā)源碼
- 下一篇:博士報警主機SDK調(diào)用
評論
共有 條評論