目前安防攝像頭基本都支持國標協議接入,本文提供一個國標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 <string>
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文件