zoukankan      html  css  js  c++  java
  • 安防互联网摄像头视频流媒体服务器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("初始化失败.
    ");
    		 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]
    ", ret);
    		return -10;
    	}
    	hikStream.playHandle = 1;
    	return 0;
    }
    

    其中在设置PS码流数据回调函数StreamClient_SetPsDataCallBack中,根据流数据类型,对EASY_MEDIA_INFO_T和EASY_FRAME_INFO进行赋值。请看以下效果图:

    基于AI视频智能分析云终端

    EasyNVR智能云终端是基于视频智能传输技术、视频AI分析技术、智能云组网技术、边缘计算技术、视频大数据技术、窄带通信技术、远程监测技术以及智能语音融合等多种技术于一体,研究一种提供视频流上云、存储、转发、视频AI功能的云终端产品,旨在帮助视频设备厂商、方案商与服务提供商,快速将存量或者新增的监控设备上云。

  • 相关阅读:
    "Automation 服务器不能创建对象" 的解决方法
    让DataGrid拥有单击回传事件并带回指定字段的值
    SQL 和TSQL学习(一)
    数据写入XML
    DATALIST分页存储过程
    The target assembly contains no service types. You may need to adjust the Code Access Security policy of this assembly." 目标程序集不包含服务类型。可能需要调整此程序集的代码访问
    字符串转日期
    C# 日期和时间正则表达式
    js根据输入日期显示该月的最后一天的日期[转]
    JavaScript试题【解析+答案】
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/12418583.html
Copyright © 2011-2022 走看看