设备sdk--海康,大华SDK

   海康SDK包可以从海康的官网上下载到。

    海康SDK可用于开发海康相机,海康DVR等,主要分两块,取码流模块,解码模块;大华的SDK跟海康的类似。

1 取码流模块。

主要函数解释如下:

// 打开
NET_DVR_Init :初始化SDK,初始化SOCKET等。
NET_DVR_Login_V30 :登陆,建立业务链路。
NET_DVR_SetAudioMode:设置声卡模式,是独占,还是共享。
NET_DVR_RealPlay:开始点播视频。
NET_DVR_OpenSoundShare:共享模式下开启声音。
NET_DVR_SetRealDataCallBack:设置码流回调,在回调函数里就能得到码流。

NET_DVR_SetStandardDataCallBack用于捕获实时码流数据(标准码流)。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是标准码流(含12字节的RTP头)。此函数目前仅支持对于支持RTSP协议取流的设备的标准码流回调。
NET_DVR_GetDVRConfig:登陆以后可以获取设备的配置信息。
//关闭
NET_DVR_StopRealPlay:关闭视频点播。
NET_DVR_Logout_V30:退出登陆。
NET_DVR_Cleanup:反初始化。
NET_DVR_GetLastError:得到错误号。

设备sdk--海康,大华SDK_第1张图片

2 解码模块

解码后的分辨率主要为yuv420,yv12.

主要函数的解码如下:

PlayM4_GetPort:获取未使用的通道号,起始位101,上限为500,估计是支持同时解码400路。
PlayM4_SetStreamOpenMode:设置流播放模式。有流模式(会尽量保证实时性,防止数据阻塞,而且数据检查严格),文件模式(跟流模式相反)。
PlayM4_FreePort:释放已使用的通道号。
PlayM4_CloseStream:关闭流,估计是释放为解码准备的BUF。
PlayM4_SetDecCallBack:设置解码后的回调。
PlayM4_Play:开始解码。
PlayM4_PlaySoundShare:以共享方式打开声音。
PlayM4_InputData:输入数据。
AnalyzeDataInputData:分析码流根式。
PlayM4_Stop:停止解码。
PlayM4_CloseStream:关闭流,估计是释放BUF。
PlayM4_StopSoundShare:关闭声音。

3 调用DEMO 

参见海康SDK的DEMO。

4遇到的问题 

1.录像有音频,但解码后没有音频回调。
答:
可能1:确保配置成音视频混合。
可能2: PlayM4_PlaySoundShare(lPort); PlayM4_Play(lPort, NULL);改成: PlayM4_Play(lPort, NULL);PlayM4_PlaySoundShare(lPort);
2.用解码前回调录的视频,解码后有跳帧。
答:解码前加上  PlayM4_CheckDiscontinuousFrameNum(m_nChannelID,FALSE);
3.PlayM4_InputData()之后出现错误“buffer is overflow”。
答:设置的buf过小,PlayM4_OpenStream设置BUF的大小改成6*1024*1024。

4.时间戳是什么时候打的?

答:实时流,解码前数据可能是多包,打时间戳不合适,解码后的时间戳是数据编码时的时间戳;如果是录像,解码后的时间戳是打的相对时间戳。

附:

 /*******************海康全局错误码 begin**********************/ 
#define NET_DVR_NOERROR      0 //没有错误
#define NET_DVR_PASSWORD_ERROR     1 //用户名密码错误
#define NET_DVR_NOENOUGHPRI     2 //权限不足
#define NET_DVR_NOINIT       3 //没有初始化
#define NET_DVR_CHANNEL_ERROR     4 //通道号错误,比如输入-1通道
#define NET_DVR_OVER_MAXLINK     5 //连接到DVR的客户端个数超过最大
#define NET_DVR_VERSIONNOMATCH    6 //版本不匹配
#define NET_DVR_NETWORK_FAIL_CONNECT  7 //连接服务器失败
#define NET_DVR_NETWORK_SEND_ERROR   8 //向服务器发送失败
#define NET_DVR_NETWORK_RECV_ERROR   9 //从服务器接收数据失败
#define NET_DVR_NETWORK_RECV_TIMEOUT  10 //从服务器接收数据超时
#define NET_DVR_NETWORK_ERRORDATA   11 //传送的数据有误
#define NET_DVR_ORDER_ERROR     12 //调用次序错误
#define NET_DVR_OPERNOPERMIT    13 //无此权限
#define NET_DVR_COMMANDTIMEOUT    14 //DVR命令执行超时
#define NET_DVR_ERRORSERIALPORT    15 //串口号错误
#define NET_DVR_ERRORALARMPORT    16 //报警端口错误
#define NET_DVR_PARAMETER_ERROR    17  //参数错误
#define NET_DVR_CHAN_EXCEPTION    18 //服务器通道处于错误状态
#define NET_DVR_NODISK      19 //没有硬盘
#define NET_DVR_ERRORDISKNUM    20 //硬盘号错误
#define NET_DVR_DISK_FULL     21 //服务器硬盘满
#define NET_DVR_DISK_ERROR     22 //服务器硬盘出错
#define NET_DVR_NOSUPPORT     23 //服务器不支持
#define NET_DVR_BUSY      24 //服务器忙
#define NET_DVR_MODIFY_FAIL     25 //服务器修改不成功
#define NET_DVR_PASSWORD_FORMAT_ERROR  26 //密码输入格式不正确
#define NET_DVR_DISK_FORMATING    27 //硬盘正在格式化,不能启动操作
#define NET_DVR_DVRNORESOURCE    28 //DVR资源不足
#define NET_DVR_DVROPRATEFAILED    29  //DVR操作失败
#define NET_DVR_OPENHOSTSOUND_FAIL    30  //打开PC声音失败
#define NET_DVR_DVRVOICEOPENED     31  //服务器语音对讲被占用
#define NET_DVR_TIMEINPUTERROR    32  //时间输入不正确
#define NET_DVR_NOSPECFILE     33  //回放时服务器没有指定的文件
#define NET_DVR_CREATEFILE_ERROR   34 //创建文件出错
#define NET_DVR_FILEOPENFAIL    35  //打开文件出错
#define NET_DVR_OPERNOTFINISH    36  //上次的操作还没有完成
#define NET_DVR_GETPLAYTIMEFAIL    37  //获取当前播放的时间出错
#define NET_DVR_PLAYFAIL     38  //播放出错
#define NET_DVR_FILEFORMAT_ERROR   39  //文件格式不正确
#define NET_DVR_DIR_ERROR     40 //路径错误
#define NET_DVR_ALLOC_RESOURCE_ERROR  41  //资源分配错误
#define NET_DVR_AUDIO_MODE_ERROR   42 //声卡模式错误
#define NET_DVR_NOENOUGH_BUF    43 //缓冲区太小
#define NET_DVR_CREATESOCKET_ERROR    44 //创建SOCKET出错
#define NET_DVR_SETSOCKET_ERROR    45 //设置SOCKET出错
#define NET_DVR_MAX_NUM      46 //个数达到最大
#define NET_DVR_USERNOTEXIST    47 //用户不存在
#define NET_DVR_WRITEFLASHERROR    48  //写FLASH出错
#define NET_DVR_UPGRADEFAIL     49  //DVR升级失败
#define NET_DVR_CARDHAVEINIT    50  //解码卡已经初始化过
#define NET_DVR_PLAYERFAILED    51 //调用播放库中某个函数失败
#define NET_DVR_MAX_USERNUM     52  //设备端用户数达到最大
#define NET_DVR_GETLOCALIPANDMACFAIL  53  //获得客户端的IP地址或物理地址失败
#define NET_DVR_NOENCODEING     54 //该通道没有编码
#define NET_DVR_IPMISMATCH     55 //IP地址不匹配
#define NET_DVR_MACMISMATCH     56 //MAC地址不匹配
#define NET_DVR_UPGRADELANGMISMATCH   57 //升级文件语言不匹配
#define NET_DVR_MAX_PLAYERPORT    58 //播放器路数达到最大
#define NET_DVR_NOSPACEBACKUP    59 //备份设备中没有足够空间进行备份
#define NET_DVR_NODEVICEBACKUP    60 //没有找到指定的备份设备
#define NET_DVR_PICTURE_BITS_ERROR   61 //图像素位数不符,限24色
#define NET_DVR_PICTURE_DIMENSION_ERROR  62 //图片高*宽超限, 限128*256
#define NET_DVR_PICTURE_SIZ_ERROR   63 //图片大小超限,限100K
#define NET_DVR_LOADPLAYERSDKFAILED   64 //载入当前目录下Player Sdk出错
#define NET_DVR_LOADPLAYERSDKPROC_ERROR  65 //找不到Player Sdk中某个函数入口
#define NET_DVR_LOADDSSDKFAILED    66 //载入当前目录下DSsdk出错
#define NET_DVR_LOADDSSDKPROC_ERROR      67 //找不到DsSdk中某个函数入口
#define NET_DVR_DSSDK_ERROR     68 //调用硬解码库DsSdk中某个函数失败
#define NET_DVR_VOICEMONOPOLIZE    69 //声卡被独占
#define NET_DVR_JOINMULTICASTFAILED   70 //加入多播组失败
#define NET_DVR_CREATEDIR_ERROR    71 //建立日志文件目录失败
#define NET_DVR_BINDSOCKET_ERROR   72 //绑定套接字失败
#define NET_DVR_SOCKETCLOSE_ERROR   73 //socket连接中断,此错误通常是由于连接中断或目的地不可达
#define NET_DVR_USERID_ISUSING       74 //注销时用户ID正在进行某操作
#define NET_DVR_SOCKETLISTEN_ERROR   75 //监听失败
#define NET_DVR_PROGRAM_EXCEPTION   76 //程序异常
#define NET_DVR_WRITEFILE_FAILED   77 //写文件失败
#define NET_DVR_FORMAT_READONLY    78  //禁止格式化只读硬盘
#define NET_DVR_WITHSAMEUSERNAME      79  //用户配置结构中存在相同的用户名
#define NET_DVR_DEVICETYPE_ERROR            80  /*导入参数时设备型号不匹配*/
#define NET_DVR_LANGUAGE_ERROR              81  /*导入参数时语言不匹配*/
#define NET_DVR_PARAVERSION_ERROR           82  /*导入参数时软件版本不匹配*/
#define NET_DVR_IPCHAN_NOTALIVE             83  /*预览时外接IP通道不在线*/
#define NET_DVR_RTSP_SDK_ERROR    84 /*加载高清IPC通讯库StreamTransClient.dll失败*/
#define NET_DVR_CONVERT_SDK_ERROR   85 /*加载转码库失败*/
#define NET_DVR_IPC_COUNT_OVERFLOW   86  /*超出最大的ip接入通道数*/
#define NET_DVR_MAX_ADD_NUM                 87  /*添加标签(一个文件片段64)等个数达到最大*/
#define NET_DVR_PARAMMODE_ERROR             88 //图像增强仪,参数模式错误(用于硬件设置时,客户端进行软件设置时错误值)
#define NET_DVR_CODESPITTER_OFFLINE   89 //视频综合平台,码分器不在线
#define NET_DVR_BACKUP_COPYING    90  //设备正在备份
#define NET_DVR_CHAN_NOTSUPPORT             91  // 通道不支持该操作
#define NET_DVR_CALLINEINVALID              92  // 高度线位置太集中或长度线不够倾斜
#define NET_DVR_CALCANCELCONFLICT           93  // 取消标定冲突,如果设置了规则及全局的实际大小尺寸过滤
#define NET_DVR_CALPOINTOUTRANGE            94  // 标定点超出范围
#define NET_DVR_FILTERRECTINVALID           95  // 尺寸过滤器不符合要求
#define NET_DVR_DDNS_DEVOFFLINE             96  //设备没有注册到ddns上
#define NET_DVR_DDNS_INTER_ERROR            97  //DDNS 服务器内部错误
#define NET_DVR_ALIAS_DUPLICATE    150 //别名重复  //2011-08-31 通过别名或者序列号来访问设备的新版本ddns的配置

你可能感兴趣的:(socket,login)