國標28181Server開發,基於sip集成gbsdk,接入海康大華攝像頭

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

 

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