前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安防互联网摄像头视频流媒体服务器EasyNVR对接海康流媒体V4.X客户端实现方法

安防互联网摄像头视频流媒体服务器EasyNVR对接海康流媒体V4.X客户端实现方法

作者头像
EasyNVR
发布2020-04-23 16:48:58
8640
发布2020-04-23 16:48:58
举报
文章被收录于专栏:EasyNVR

最近有开发者在对接海康流媒体 V4.X客户端时遇到一些问题,平台对外输出的不是标准的rtsp流,希望寻求帮助,根据SDK包我们打算重构拉流库来解决,经过简单重构已经解决该问题,下面跟大家分享一下。

海康流媒体V4.X系列在网上的资料很少,可以说几乎没有,经过和海康总部沟通,得到开发版SDK,SDK包内也只是提供了头文件、库文件和简单的接口说明。

先看下接口定义:

根据接口定义,我们理了理调用过程,如下图:

下面看具体实现:

a、初始化流媒体客户端
代码语言:javascript
复制
Easy_API int Easy_APICALL EasyStreamClient_InitModule()
{
	 int errCode = StreamClient_InitLib();
	 if (errCode != 0)
	 {
		 printf("初始化失败.\n");
		 return -1;
	 }
	 return 0;
}
b、创建会话
代码语言:javascript
复制
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、设置回调实时预览
代码语言:javascript
复制
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功能的云终端产品,旨在帮助视频设备厂商、方案商与服务提供商,快速将存量或者新增的监控设备上云。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • a、初始化流媒体客户端
  • b、创建会话
  • c、设置回调实时预览
  • 基于AI视频智能分析云终端
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档