目前安防摄像头基本都支持国标协议接入,本文提供一个国标sdk,可接入摄像头,目前支持预览,其他功能待开发
demo源码下载路径如下 https://download.csdn.net/download/zqw_4181/11986919
只有demo源码,不含gbsdk代码
sdk头文件如下
typedef void (__stdcall *pfngb_streamback)(unsigned char *pbuf, int len, char *pparam, int iparam, void* puser);
/**
* @brief 初始化函数
* @param in const char* pcServerId, 国标服务ID
* @param in const char *pcServerIp, 服务IP
* @param in int port,服务监听端口
* @param const char *pcRealm, 鉴权参数
* @return int,成功返回0, 失败返回非0
*/
int RR_GB_EXPORT RR_GB_Init(const char* pcServerId, const char *pcServerIp, int port, const char *pcRealm);
/**
* @brief 实时视频预览函数
* @param in const char* pcDevId, 国标设备ID
* @param in const char *pcChanId 设备通道国标ID
* @param in pfngb_streamback pfn, 码流回调函数, 码流类型为PS流
* @param in void *puser, 用户输入参数
* @return int,成功返回大于0,失败返回小于0
* @note 返回值为预览session,唯一性,后续操作关闭视频需要用到
*/
int RR_GB_EXPORT RR_GB_RealPlay(const char* pcDevId, const char *pcChanId, pfngb_streamback pfn, void *puser);
/**
* @brief 视频关闭函数
* @param in int session, 会话session,rr_gb_video_real_play返回值
* @return int,成功返回0 失败返回非0
*/
int RR_GB_EXPORT RR_GB_StopRealPlay(int session);
调用这几个接口即可实现摄像头国标预览。
demo代码如下
#include "stdio.h"
#include "windows.h"
#include "include/rr_gb_interface.h"
#include
void __stdcall streamback(unsigned char *pbuf, int len, char *pparam, int iparam, void* puser)
{
static FILE *fp = fopen("gbps.dav", "wb+");
fwrite(pbuf, 1, len , fp);
return;
}
int main()
{
printf("hello world\n");
int iret = 0;
std::string serid = "34010000002000000001";
std::string serip = "172.18.31.19";
int port = 5060;
std::string realm = "3401000000";
std::string strGbDevId = "34010000001320000001";
std::string strGbChanId = "34010000001320000002";
iret = RR_GB_Init(serid.c_str(), serip.c_str(), port, realm.c_str());
if(0 != iret)
{
printf("Faild to sip init err:%d\n", iret);
return -1;
}
int session = 0;
int op;
while(1)
{
op = getchar();
switch(op)
{
case 'q':
break;
case 'p':
{
session = RR_GB_RealPlay(strGbDevId.c_str(), strGbChanId.c_str(), streamback, NULL);
}
break;
case 'b':
{
RR_GB_StopRealPlay(session);
}
break;
default:
continue;
}
}
system("pause");
return 0;
}
设备需要配置设备ID和sip服务ID,如下是大华摄像头的配置。
配置完成之后,在build/debug里面启动test.exe,然后在设备界面注册使能,让设备注册到test,
注册上来之后,打印这些信息。
然后在控制台输入p,就可以拉流了,并会在当前目录生成ps.dav文件