安防互聯網攝像頭視頻流媒體服務器EasyNVR對接海康流媒體V4.X客戶端實現方法

最近有開發者在對接海康流媒體 V4.X客戶端時遇到一些問題,平臺對外輸出的不是標準的rtsp流,希望尋求幫助,根據SDK包我們打算重構拉流庫來解決,經過簡單重構已經解決該問題,下面跟大家分享一下。

海康流媒體V4.X系列在網上的資料很少,可以說幾乎沒有,經過和海康總部溝通,得到開發版SDK,SDK包內也只是提供了頭文件、庫文件和簡單的接口說明。

先看下接口定義:

 

根據接口定義,我們理了理調用過程,如下圖:

 

下面看具體實現:

a、初始化流媒體客戶端

Easy_API int Easy_APICALL EasyStreamClient_InitModule()
{
	 int errCode = StreamClient_InitLib();
	 if (errCode != 0)
	 {
		 printf("初始化失敗.\n");
		 return -1;
	 }
	 return 0;
}

b、創建會話

Int HikStreamClient::Init()
{
	hikStream.sessionHandle = StreamClient_CreateSession();
	if (hikStream.sessionHandle < 0)
	{
		return -2;
	}
	if (NULL == hikStream.psDemuxHandle)
	{
		PSDemux_Init(&hikStream.psDemuxHandle, 1024*512, 1024*1024);
	}
	return 0;
}

c、設置回調實時預覽

int	HikStreamClient::OpenStream(char *url, int connectType, void *userPtr, int reconn, int timeoutSecs)
{
	if (NULL == url)				return -1;
	if ( (int)strlen(url) < 1)		return -1;
	if (hikStream.sessionHandle < 0)		return -2;
	memset(hikStream.url, 0x00, sizeof(hikStream.url));
	strcpy(hikStream.url, url);
	hikStream.connectType = connectType;
	hikStream.reconnect = reconn;
	hikStream.userPtr		= userPtr;
	hikStream.timeoutSecs = timeoutSecs;
	StreamClient_SetMsgCallBack(hikStream.sessionHandle, __pStreamClientMsgFunc, (void *)&hikStream);
	StreamClient_SetPsDataCallBack(hikStream.sessionHandle,__pStreamClientPsDataFunc,(void*)&hikStream);
	int tranMethod = RTPRTSP_TRANSMODE;
	char username[128] = {0};
	char password[128] = {0};
	int ret = StreamClient_Start( hikStream.sessionHandle,  NULL, url, "StreamClient", tranMethod, username, password);
	if (ret != 0)
	{
		_TRACE(TRACE_LOG_ERROR, (char *)"OpenStream fail. ErrCode[%d]\n", ret);
		return -10;
	}
	hikStream.playHandle = 1;
	return 0;
}

其中在設置PS碼流數據回調函數StreamClient_SetPsDataCallBack中,根據流數據類型,對EASY_MEDIA_INFO_T和EASY_FRAME_INFO進行賦值。請看以下效果圖:

 

基於AI視頻智能分析雲終端

EasyNVR智能雲終端是基於視頻智能傳輸技術、視頻AI分析技術、智能雲組網技術、邊緣計算技術、視頻大數據技術、窄帶通信技術、遠程監測技術以及智能語音融合等多種技術於一體,研究一種提供視頻流上雲、存儲、轉發、視頻AI功能的雲終端產品,旨在幫助視頻設備廠商、方案商與服務提供商,快速將存量或者新增的監控設備上雲。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章