当前位置:   article > 正文

国标GB28181设备终端(国标摄像机、国标单兵设备)实现方案流程概述_gb28181模拟终端

gb28181模拟终端

国标GB/T 28181协议的逐步普及,解决了海康、大华、宇视等各大厂家设备协议统一的问题,尤其是在主动注册到平台这一块的协议上,非常好地解决了所有有线、无线、4G、5G设备的统一接入协议的问题,GB/T 28181设备的普及反向带动了国标28181平台的发展。

国标GB/T 28181协议从2011年协议拟定以来,分别迭代发展了2014版和最新的2016版,国标GB/T 28181协议在各个方面已经非常完善,基本上能够满足目前互联网各种网络环境的基本要求,注意,是基本要求,哈哈,尤其是走公网的国标GB28181流,效果都一般般。。。

GB28181采用的是SIP信令+RTP流的方式进行传输,基本上大部分的即时通信也采用的是这种信令+流媒体的协议组合方式,所以,信令本身是没有太多问题的,主要还是各个摄像机厂家由于早期协议的不明确以及平台的实现,导致国标效果的一般。

国标GB28181协议目前不但可以应用于公安行业,还可以用在很多互联网直播的场景,例如平安工地(工地没法拉网线,最好就是国标+4G)、车载监控(车载NVR+4G)、单兵设备(手持终端+4G无线网络),那么,如果实现一套有效的国标GB28181协议的终端,是开发终端设备非常必须的。

国标GB28181设备端的实现方案目前公开的还不是很多,但国标GB28181终端设备支持将会越来越多的,尤其是安卓Android终端支持GB28181,引用CSDN另一位博主的大概思路,可以非常明确地表达整个国标GB28181设备端的实现流程:
国标GB28181设备端

图引自https://blog.csdn.net/Zhu__/article/details/90967400

按照上面的思路,可以实现一套完善的国标GB28181设备协议流程,包括信令和流媒体,主要的功能包括:

  • 支持GB28181 2016版;
  • 支持H.264 / H.265 PS打包过程;
  • 支持音频;
  • 支持对讲;
  • 支持订阅、通知;
  • 支持录像回放、录像下载;
  • 支持音频广播;
  • 支持跨平台;
  • 支持嵌入式设备;

Github(https://github.com/tsingsee/EasyGBD)接口定义:

#ifndef __GB28181_DEVICE_API_H__
#define __GB28181_DEVICE_API_H__


#ifdef _WIN32
#include <winsock2.h>
#define GB28181DEVICE_API  __declspec(dllexport)
#define GB28181DEVICE_APICALL  __stdcall
#define WIN32_LEAN_AND_MEAN
#else
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define GB28181DEVICE_API __attribute__ ((visibility("default")))
#define GB28181DEVICE_APICALL 
#define CALLBACK
#endif

typedef enum __GB28181_DEVICE_EVENT_TYPE_ENUM_T
{
	GB28181_DEVICE_EVENT_CONNECTING = 1,		//连接中
	GB28181_DEVICE_EVENT_REGISTER_ING,			//注册中
	GB28181_DEVICE_EVENT_REGISTER_OK,			//注册成功
	GB28181_DEVICE_EVENT_REGISTER_AUTH_FAIL,	//用户验证失败
	GB28181_DEVICE_EVENT_START_AUDIO_VIDEO,		//请求推送音视频
	GB28181_DEVICE_EVENT_STOP_AUDIO_VIDEO,		//请求停止推送音视频
	GB28181_DEVICE_EVENT_TALK_AUDIO_DATA,		//对端对讲数据

	GB28181_DEVICE_EVENT_DISCONNECT				//已断线
}GB28181_DEVICE_EVENT_TYPE_ENUM_T;

#define MAX_CH_NUMS     8
typedef struct __GB28181_DEVICE_INFO_T
{
	char	server_ip[128];     // server ip
	int		server_port;        // server port
	char    server_id[32];      // server id
	char	server_domain[64];  // server domain
	char	device_id[32];      // device id
	int     channel_nums;       // channel numbers
	char    channel_id[MAX_CH_NUMS][32]; // channel id
	char	password[32];	    // password
	int		protocol;			// 0 - udp; 1 - tcp
	int		reg_expires;        // sip reg user expires, unit is second
	int		heartbeat_interval; // gb28181 heartbeat interval, unit is second
	int		heartbeat_count;    // gb28181 heartbeat count
	int     log_enable;         // log enable flag
	int     log_level;          // log level(0:TRACE,1:DEBUG,2:INFO,3:WARNING,4:ERROR,5:FATAL)
}GB28181_DEVICE_INFO_T;

typedef int (CALLBACK* GB28181DeviceCALLBACK)(void *userPtr, int eventType, char *eventParams, int paramLength);

//激活
#ifdef ANDROID
int GB28181DEVICE_API	libGB28181Device_Activate(char* license, char* userPtr);
#else
int GB28181DEVICE_API	libGB28181Device_Activate(char* license);
#endif

//创建GB28181设备端资源
/*
pDeviceInfo:		设备端信息, 为NULL则从当前目录中读取config.xml
callbackPtr:		回调函数
userPtr:			用户自定义指针,用于在回调函数中回调给调用者
*/
int GB28181DEVICE_API	libGB28181Device_Create(GB28181_DEVICE_INFO_T *pDeviceInfo, GB28181DeviceCALLBACK callbackPtr, void *userPtr);

int GB28181DEVICE_API	libGB28181Device_Create2(char* serverIP, int serverPort, char* serverId, char* serverDomain,
													char* deviceId, char* channelId, char* password, int protocol,
													int regExpires, int heartbeatInterval, int heartbeatCount,
													GB28181DeviceCALLBACK callbackPtr, void* userPtr);

//指定视频格式
/*
codec:
		#define EASY_SDK_VIDEO_CODEC_H264	0x1C		//H264
		#define EASY_SDK_VIDEO_CODEC_H265	0xAE		//H265
width:	可选
height:	可选
framerate: 可选
*/
int GB28181DEVICE_API	libGB28181Device_SetVideoFormat(int codec, int width, int height, int framerate);

//指定音频格式
/*
audioDstCodec:
		#define EASY_SDK_AUDIO_CODEC_AAC	0x15002		// AAC
		#define EASY_SDK_AUDIO_CODEC_G711U	0x10006		// G711 ulaw
		#define EASY_SDK_AUDIO_CODEC_G711A	0x10007		// G711 alaw
samplerate:		采样率
channels:		声道数
bitPerSample:	采样精度
*/
int GB28181DEVICE_API	libGB28181Device_SetAudioFormat(int audioDstCodec, int samplerate, int channels, int bitPerSamples);


//推送视频数据
/*
framedata:	视频帧数据
framesize:	视频帧大小
keyframe:	关键帧填1, 否则填0
*/
int GB28181DEVICE_API	libGB28181Device_AddVideoData(char* framedata, int framesize, int keyframe);

//推送音频数据
/*
audioSrcCodec:	当前音频源格式
		#define EASY_SDK_AUDIO_CODEC_G711U	0x10006		// G711 ulaw
		#define EASY_SDK_AUDIO_CODEC_G711A	0x10007		// G711 alaw

		如果audioSrcCodec和libGB28181Device_SetAudioFormat中指定的audioDstCodec不一致时, 则会自动进行转换, 
		但仅限于从PCM转为G711,即此处的audioSrcCodec为PCM, 而audioSrcCodec为G711
framedata:	音频帧数据
framesize:  音频帧大小
nbsamples:	同音频帧大小
*/
int GB28181DEVICE_API	libGB28181Device_AddAudioData(int audioSrcCodec, char* framedata, int framesize, int nbsamples);


//释放资源
int GB28181DEVICE_API	libGB28181Device_Release();


#ifdef ANDROID
#include <jni.h>
extern JavaVM *g_vm;
#endif

#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129

EasyGBD安卓Android国标GB28181终端效果:

EasyGBD国标GB28181安卓端
EasyGBS

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/943986
推荐阅读
相关标签
  

闽ICP备14008679号