现场视频数据上报通讯协议
清远市环境保护污染源在线监控、监测平台使用的是有别于其他
地区的历史图片上报模式。该模式要求现场视频服务器(或摄像枪)以5分钟为间隔,上报一张现场端实时高清图片(4CIF)及远程实时视频结合,现场端不保存历史数据。 1、
摄像枪要求:
具备D1、4CIF、CIF多种实时视频效果; 具备定时抓拍及上报功能;
安装位置能涵盖环保部门日常监管要求;
2、 现场视频服务器(或摄像枪)至少每天一次,向中国国家授时中心进行对时,确保视频服务器时间正确; 3、
5分钟历史图片上报
历史图片定时5分钟抓拍一张具有4CIF效果的现场图片,要求图片内标注有排污企业名称、抓拍时间、排放口名称信息;历史图片采用FTP方式实时上报到清远市环境保护局平台 ,上报时只需按固定的用户名、密码上报即可。图片文件名无须特别格式化,平台收到文件后将自动按照上报的用户名(MN码)及平台时间统一生成新的文件名予以保存。图片文件格式为4CIF大小的JPG文件。
4、 实时视频
我局平台采用WEB方式结合现场数据显示现场视频。现场端
必须按照特定的函数接口与平台对接。
4.1、供应商须向清远市环境保护局监察分局提供基于WEB接口的OCX插件;
4.2、OCX插件必须满足以下要求: 属性(Property)(参数性质:RW-可读写,RO-只读)
名称 Width Height WidthBS HeightBS 参数类型 long long long long 参数性质 RW RW RO RO OCX宽度 OCX高度 接收到的视频的宽度 接收到的视频的高度 视频源,有三种格式: 1. 只有IP地址和端口号,如:“192.168.1.128:553”,连接播放相应设备的第一个码流是音视频数据; 2. “ltsp:// 1. 函 数: long VSTPlay() 参 数: 无 返回值: 1:调用成功,-1:Source 未设置 说 明: 播放视频(包括实时播放和录像回放),Source必须先设置 2 函 数: long VSTStop() 参 数: 无 返回值: 1:调用成功, 说 明: 停止播放视频 3 函 数: long VSTSnapShot(long lFileType, long lAddTimeLabel, long ulColor, LPCTSTR strPathname) 参 数: lFileType:生成的图片文件格式,0:BMP;1:JPG strPathname:生成的文件名(包含文件路径) lAddTimeLabel,ulColor暂未使用 返回值: 0:调用成功 说 明: 对当前画面进行截图,生成BMP或JPG的图片文件 4 函 数: long VSTRecord(long lDoRecord, LPCTSTR strFilename, long lDurationTime) 参 数: lDoRecord:开始或停止录像,0:停止;1:开始 strFilename:生成的录像文件名(包含文件路径) lDurationTime:每个录像文件的时长,即录像文件达到指定时长时会自动生成一个新的文件,单位为秒,如果为0表示不分割 返回值: 0:调用成功 说 明: 把音视频数据保存到磁盘,文件名是否增加日期时间由属性RecFileTimeExt决定 5 函 数: long VSTRecord2(long lDoRecord, LPCTSTR strFilename, long lDurationTime , long lAddTimeToFileName) 参 数: lDoRecord:开始或停止录像,0:停止;1:开始 strFilename:生成的录像文件名(包含文件路径) lDurationTime:每个录像文件的时长,即录像文件达到指定时长时会自动生成一个新的文件,单位为秒,如果为0表示不分割 lAddTimeToFileName:文件名是否自动增加日期时间,0:否;1:是 返回值: 1:调用成功, 说 明: 把音视频数据保存到磁盘,增加一个参数,不受属性RecFileTimeExt影响 6 函 数: void VSTShowTime(long lEnable, long ulColor) 参 数: lEnable:是否显示时间,0:否;1:是 ulColor:字体颜色,其数值是蓝、绿、红3色相加,即0xBBGGRR,其中BB是蓝色的数值,GG是绿色的数值,RR是红色的数值,例如0xFF0000表示蓝色,0x00FF00表示绿色,0x0000FF表示红色 返回值: 无 说 明: 在画面上显示时间,如果是实时播放则显示PC当前时间,如果是录像回放,则显示录像时的时间(从录像文件里获取) 7 函 数: void VSTShowOcx(long lShow) 参 数: lShow:是否显示,0:否;1:是 返回值: 无 说 明: 是否显示OCX控件 8 函 数: void VSTSetStopState(long lState) 参 数: lState: 停止时是保留最后一幅画面还是黑屏 0: 黑屏 1: 保留最后一幅画面 返回值: 无 说 明: 停止时是保留最后一幅画面还是黑屏 9 函 数:参 数:返回值:说 明: 10 函 数:参 数:返回值:说 明: 11 函 数:参 数:返回值:说 明: 12 函 数:参 数:返回值:说 明: 13 函 数:参 数:返回值:说 明: 14 函 数:参 数:返回值: void VSTFilePause() 无 无 回放录像时暂停 void VSTFileContinue () 无 无 在回放录像暂停时恢复播放 long VSTStartInterPhone(LPCTSTR peerip) peerip:暂未使用 0:调用成功 启动对讲,PC端麦克风的声音在板端播放 long StopInterPhone() 无 0:调用成功 停止对讲 long IsInterPhoneRun() 无 是否正在对讲,0:否,1:是 是否正在对讲 long GetRecTotalTime () 无 录像文件的总时长,单位是秒 说 明: 获取录像文件的录像总时长,调用前必须在在Source里设置录像文件名 15 函 数: long GetCurPlaybackTime () 参 数: 无 返回值: 返回从开始回放录像到当前的时长(单位为秒) 说 明: 查询从开始回放录像到当前的时长 16 函 数:参 数:返回值:说 明: 17 函 数:参 数:返回值:说 明: 18 函 数:参 数:返回值:说 明: 19 函 数:参 数:返回值:说 明: 20 void SetPlaybackLoop(long loop) loop:是否循环回放,0:否,1:是 无 回放录像时是否循环回放 void FileJump(long pos) pos:跳转的指定位置,单位是秒 无 回放录像时跳转到指定位置 long FileForward(long speed) speed:回放的速度,speed数值与播放速度对应如下: 1:正常播放 2:2倍速度 3:4倍速度 4:8倍速度 5:16倍速度 6:32倍速度 7:1/2倍速度 8:1/4倍速度 9:1/8倍速度 10:1/16倍速度 11:逐帧播放,调用一次前进一帧 0:调用成功 回放录像时改变回放速度 long FileRewind(long speed) speed:倒播时跳过的关键帧数,数值越大播放速度越快 0:调用成功 倒播回放录像 函 数: void SetMDRegionBegin(long col) 参 数: col:进入设置后显示的已经设置的边框颜色, 其数值可参考方法ShowTime中参数ulColor的说明 返回值: 无 说 明: 进入移动侦测区域设置 21 函 数: short SetEditMDRegionIndex(long nIndex) 参 数: nIndex:要设置的区域号,数值范围:0~4 返回值:说 明: 22 函 数:参 数:返回值:说 明: 23 函 数:参 数:返回值:说 明: 24 函 数:参 数:返回值:说 明: 25 函 数:参 数:返回值:说 明: 26 函 数:参 数:返回值:说 明:0:调用成功 指定要设置的区域,调用该方法后可以用鼠标在画面上画区域边框 void RemoveMDRegion(long nIndex) nIndex:要删除的区域号,数值范围:0~4 无 删除指定的侦测区域 void SetMDRegionEnd() 无 无 结束移动侦测区域设置并把设置的区域信息发送到前端设备 void ShowMDRegion(long show) show: 0=发生移动侦测时不显示边框 1=发生移动侦测时显示边框 2=无论是否发生移动侦测都显示边框 无 发生移动侦测时是否显示边框 long AddNewMDRegion() 无 1:调用成功;0:超过最大侦测区域数范围(最多只能5个) 增加一个移动侦测区域 long GetMDCount() 无 当前设置的移动侦测区域数 获取当前设置的移动侦测区域数 27 函 数: long SetMotionRegion(long Region, long l, long t, long r, long b) 参 数: Region:移动侦测区域号,数值范围:0~4 l,t,r,b:侦测区域框左,上,右,下4个位置的坐标 返回值: 0:调用成功 说 明: 设置移动侦测区域,调用该方法将把相应数据发送到前端设备 28 函 数:参 数:返回值:说 明: 29 函 数:参 数:返回值:说 明:生效 30 函 数:参 数:返回值:说 明: 31 函 数:参 数:返回值:说 明: 32 函 数:参 数:返回值:说 明: 33 函 数:参 数: long GetMDSensitivity() 无 移动侦测灵敏度 获取移动侦测的灵敏度 long SetMDSensitivity(long nSensitivity) nSensitivity:要设置的灵敏度数值,范围是0-100 1:调用成功,0:参数超出范围(0-100) 设置移动侦测的灵敏度,设置后需要调用SetMDRegionEnd才能发送到前端设备 void SetAccountsPassword(LPCTSTR accounts, LPCTSTR password) accounts:用户名,password:密码 无 设置连接设备的用户名和密码,其功能与设置属性UserAndPwd是一样的 void MoveOcx(long left, long top, long right, long bottom) left,top,right,bottom分别表示显示的方框左,上,右,下4个位置的坐标 无 指定OCX的大小和位置 void RotateImage(long rotateFlag) rotateFlag,0:正常,180:180度垂直翻转 无 图像翻转 void PtzControl(LPCTSTR szPtzCtlCmd) szPtzCtlCmd:要发送的内容 格式:ptzcmd&baud=2400n81&cmd=ff010004200025&pause=2000&cmd=ff010000000 001 其中“baud=2400n81”是设置RS485串口的参数,“2400”是串口的波特率,可改为其他数值,包括:1200、2400、4800、9600、19200,“n81”分别表示串口的校验位,数据位和停止位,一般情况不需要更改; “&cmd=ff010004200025”是向RS485发送的数据,每两个字符表示一个数据,以16进制表示,“ff010004200025”表示向RS485发送FF 01 00 04 20 00 25这7个16进制的数据; “&pause=2000”表示向RS485发送下一串数据的间隔时间,单位是毫秒; “&cmd=ff010000000001”是指间隔pause时间后发送的下一串数据。 以上命令表示串口以2400bps的波特率先发送FF 01 00 04 20 00 25这7个16进制的数据,等待2000毫秒后再发送FF 01 00 00 00 00 01这7个16进制的数据; 注:“&pause=2000&cmd=ff010000000001”是为了方便某些云台的设置才增加的,如果所用云台控制正常,可以不增加,只需要前面的命令就可以。 返回值: 无 说 明: 把指定的内容发送到设备的485串口(PTZ) 34 函 数: void DrawRect(long Index, long lEnable, long LX, long Ly, long RX, long Ry, long ulColor, long PenWidth) 参 数: Index:方框序号,数值范围0-4 lEnable:是否显示该序号的方框 LX,Ly:方框的左上角坐标 RX,Ry:方框的右下角坐标 ulColor:方框边沿线颜色,其数值可参考方法ShowTime中参数ulColor的说明 PenWidth:方框边沿线宽度 返回值: 无 说 明: 在画面上显示方框 35 函 数: long AlarmRecord(long lDoRecord, LPCTSTR strFileName, long lDurativeTime, long lAddTimeToFileName) 参 数: lDoRecord:0=停止录像,1=开始录像 strFileName:录像文件名 lDurativeTime:录像时长 lAddTimeToFileName:文件名是否自动增加日期时间,0=否;1=是 返回值: 1:调用成功;-1:正在录像 说 明: 进行报警录像 36 函 数: long RebootServer() 参 数: 无 返回值: 1:调用成功 说 明: 重启前端设备 37 函 数: long SyncServer() 参 数: 无 返回值: 1:调用成功 说 明: 把前端设备的时间调整为当前计算机的时间 38 函 数: long SetPlayMode(long nPlayMode, long nModeParam) 参 数: nPlayMode:播放模式,0=正常播放,3=只录不播,此时前端设备会有音视频 数据传送过来,但是计算机不会解码播放,用于只录像不播放; nModeParam:暂未使用 返回值: 1:调用成功 说 明: 设置播放模式 39 函 数: long GetCamColor(long nType) 参 数: nType:需获取参数类型,0=亮度,1=对比度,2=色度,3=饱和度 返回值: 相应类型的参数值 说 明: 获取前端设备亮度、对比度、色度和饱和度的数值 40 函 数: long SetCamColor(long nType, long nValue) 参 数: nType:需获取参数类型,0=亮度,1=对比度,2=色度,3=饱和度 nValue:相应类型的参数值 返回值: 1:调用成功 说 明: 设置前端设备亮度、对比度、色度和饱和度的数值 41 函 数: void ShowOSD(LONG lEnable, LONG lX, LONG lY, ULONG ulColor, LONG nFontSize, BSTR strData); 参 数: lEnable: [in] whether enable OSD Set 1: 显示 Set 0: 不显示 lX: [in] 显示字符串的X坐标 lY: [in] 显示字符串的Y坐标 ulColor: [in] 用于显示OSD字符串的颜色,颜色值从0到16777215 nFontSize: [in] 字体大小 strData: [in] 要显示的字符串内容 ulColor = r | g << 8 | b << 16 返回值: 无 说 明: 显示OSD 42 函 数: void ShowOSD2(LONG Index, LONG lEnable, LONG Lx, LONG Ly, ULONG ulColor, LONG nFontSize, BSTR strData) 参 数: Index: OSD的个数,范围:0~4 lEnable: 1: 显示 0: 不显示 Lx: X坐标 Ly: Y坐标 ulColor: 用于显示OSD字符串的颜色 nFontSize: 字体大小 strData: 要显示的字符串内容 返回值: 无 说 明: 显示OSD,同一时间可以显示5串字符 43 函 数: void SetCutPixels(USHORT nD1Left, USHORT nD1Right, USHORT nCIFLeft, USHORT nCIFRight, USHORT nFIELDLeft, USHORT nFIELDRight, USHORT nQCIFLeft, USHORT nQCIFRight); 参 数: nD1Left: [in] 需裁剪的D1的左侧宽度 nD1Right: [in] 需裁剪的D1的右侧宽度 nCIFLeft: [in] 需裁剪的CIF的左侧宽度 nCIFRight: [in] 需裁剪的CIF的右侧宽度 nFIELDleft: [in] 需裁剪的FIELD的左侧宽度 nFIELDRight: [in] 需裁剪的FIELD的右侧宽度 nQCIFLeft: [in] 需裁剪的QCIF的左侧宽度 nQCIFRight: [in]需裁剪的QCIF的右侧宽度 返回值: 无 说 明: 切掉部分边框 44 函 数: LONG GetRecTotalTime() 参 数: 无 返回值: 返回总的录像时间 说 明: 查询从开始录像到当前的时长(单位为秒),该数值会一直累加到停止录像为止,就是说如果是分割录像也不会影响该数值。 45 函 数: LONG GetCurPlaybackTime() 参 数: 无 返回值: 返回-1为失败(如不是在回放状态) 说 明: 查询从开始回放录像到当前的时长(单位为秒) 46 函 数: LONG GetFileRecTime(LPCTSTR fname) 参 数: 无 返回值: 说 明: 获取指定录像文件的总时长,单位为秒 47 函 数: void DrawRect(LONG Index, LONG lEnable, LONG LX, LONG LY, LONG RX, LONG RY, ULONG ulColor, LONG PenWidth); 参 数: Index: 框的个数,范围: 0~4 lEnable: 1: 画框 0: 不画框 LX: 左上角的X坐标 Ly: 左上角的Y坐标 Rx: 右上角的X坐标 Ry: 右上角的Y坐标 ulColor: 框的颜色 PenWidth: 画笔的宽度 返回值: 无 说 明: 在画面显示边框,最多显示5个 事件(Event) 48 函 数: void CreateFinish() 参 数: 无 返回值: 无 说 明: OCX创建完成 49 函 数: void EmdMotion(LPCTSTR desc) 参 数: desc:事件信息的内容,其格式如下: ALARM:<流水号>\\r\\n Type: <信息类型>\\r\\n Time: <产生时间>\\r\\n Describe: <信息描述>\\r\\n 其中: <流水号>表示是第几条告警信息,以10进制数字表示,用户可以通过该数值来判断每次查询到的信息是不是同一条; <信息类型>表示该条告警信息的类型,以字符串表示,其中“md”表示该条信息是移动侦测报警的信息; <产生时间>表示产生该条信息时的时间,以10进制数字表示,单位是秒,是指从1970年1月1日 0:0:00到信息产生时所经过的秒数; <信息描述>是对该告警信息的详细描述,以字符串表示,每一项以逗号相隔,不同的信息类型有不同的内容格式; 返回值:说 明: 50 函 数:参 数:返回值:说 明: 51 函 数:参 数:返回值:说 明: 52 函 数:参 数:返回值:说 明: 53 函 数:参 数:返回值:说 明: 54 函 数:参 数:返回值:说 明: 55 函 数:<信息描述>的格式是: Channel=<通道号>,Stream=<码流号>,AreaId=<侦测区域号>,Area{ <通道号>是指视频输入的通道号,以10进制数字表示,由于本摄像机只有一路视频输入,所以该值恒为0;<码流号>是指哪一路码流发生移动侦测报警,以10进制数字表示,从0开始,如果是第一路码流,该数值为0,如果是第二路码流,该数值为1;<侦测区域号>是指发生报警的侦测区域号,其数值范围是0~4; 无 发生移动侦测事件时上报 void LButtonDblClk() 无 无 鼠标左键双击 void LButtonDown() 无 无 鼠标左键按下 void LButtonUp() 无 无 鼠标左键弹起 void RButtonDblClk() 无 无 鼠标右键双击 void RButtonDown() 无 无 鼠标右键按下 void RButtonUp() 参 数: 无 返回值: 无 说 明: 鼠标右键弹起 56 函 数: void ReceiveFirstVOL() 参 数: 无 返回值: 无 说 明: 打开前端设备的音视频通道成功,此时可以获取音视频信息,如WidthBS,HeightBS 57 函 数: void PlayStop() 参 数: 无 返回值: 无 说 明: 播放停止 58 函 数: void RecordAlarmBegin(LPCTSTR filename) 参 数: filename:报警录像的文件名 返回值: 无 说 明: 开始报警录像 59 函 数: void RecordAlarmStop() 参 数: 无 返回值: 无 说 明: 停止报警录像 60 函 数: void RecordBegin (LPCTSTR filename) 参 数: filename:录像文件名 返回值: 无 说 明: 开始录像 增加的函数 61 函 数: void Invalidate(long bErase) 参 数: bErase: 返回值: 无 说 明: 62 函 数: void ShowTime2(long lEnable, long Lx, long Ly, long ulColor, long lFontSize) 参 数: lEnable: Lx:显示的X坐标 Ly:显示的Y坐标 ulColor:颜色 lFontSize:字体的大小 返回值: 无 说 明: 设置显示时间 63 函 数: void StartOnlyConnect(); 参 数: 无 返回值: 无 说 明: 仅接收音视频数据,不作解码和播放,调用Record或Record2可录像,调用Stop可断开连接,调用前必须设置Source属性。 64 函 数: short GetOcxInfo(BSTR* ver, BSTR* time, BSTR* name) 参 数: ver:存放OCX的版本信息 time:时间 name: 返回值: 1:调用成功 说 明: 获取OCX的信息 65 函 数: void SetSlaveControlAddress(short idx, long address) 参 数: idx: address: 返回值: 无 说 明: 设置子空件地址//本身是父,子销毁的时候要通知父 设置父播放器的句柄,句柄存放于nParam1 66 函 数: long ResetServer() 参 数: 无 返回值: 0:调用成功 说 明: 将服务器恢复到出厂时的设置 67 函 数: long UpdateServer() 参 数: 无 返回值: 1:调用成功,0:调用不成功 说 明: 更新前端服务器 68 函 数: long DoServerSet(BSTR tsServSet) 参 数: tsServSet:要发送的命令 返回值: 1:调用成功 说 明: 给IPCam发送参数如[MAIN]\\r\\nAudioInType=%d\\r\\n,并执行该操作 69 函 数: BSTR GetDVSetup() 参 数: 无 返回值:说 明: 70 函 数:参 数:返回值:说 明: 71 函 数:参 数: 返回值:说 明: 72 函 数:参 数: 返回值:说 明: 73 函 数:参 数:返回值:说 明: 74 函 数:参 数:返回值: 获取DV设置//如果子获取不到,就从父里面得到,用户点选中的播放器 short SearchCam(short bSearch) bSearch: 0:调用成功 搜索IPcam long RecordEx(BSTR lpszName, long nType, long nTotalSeconds, long nFlags) lpszName:录像保存的文件名 nType:录像类型 nTotalSeconds:录像总时间长度 nFlags:录像标志 录像 boolean StopRecord(BSTR lpszFileName, long nType) lpszFileName: nType: 0:调用失败 停止录像 long SetAudioInputType(long nInputType) nInputType:音频输入类型,0--linein, 1--mic差分,2--mic单声道 0:调用成功 设置音频输入类型 BSTR GetDevCfgDirect() 无 返回设备的配置参数 说 明: 直接单独获取设备的配置参数(无需连接视频,注意是同步执行), 用于设备端无法启动编码器时校正设备参数 75 函 数: long SetDevCfgDirect(BSTR lpszDevCfg) 参 数: lpszDevCfg:设备参数文件的指针 返回值: FALSE:调用失败,TRUE:调用成功 说 明: 直接单独设置设备的参数(无需连接视频,注意是同步执行), 用于设备端无法启动编码器时校正设备参数 76 函 数: BSTR GetUriByName(BSTR pszName) 参 数: pszName: 返回值: 说 明: 通过名称获取URI 77 函 数: BSTR GetServerDevList(BSTR lpszServerAddr, long nPort, BSTR lpszUser, BSTR lpszPwd) 参 数: lpszServerAddr:IPCam的IP地址 nPort:IPCam的端口号 lpszUser:用户名 lpszPwd:密码 返回值: 返回列表 说 明: 获取服务设备列表 78 函 数: boolean SetRtspOptions(long nTransMethod, long nOptions) 参 数: nTransMethod: nOptions: 返回值: TRUE:调用成功 说 明: 设置rtsp的传输选项, 79 函 数: boolean SetUseVideoRender(BSTR lpszRenderName) 参 数: lpszRenderName:视频渲染器的名称 返回值: FALSE:调用失败,TRUE:调用成功 说 明: 设置指定使用的视频渲染器 80 函 数: BSTR GetUseVideoRender() 参 数: 无 返回值: 返回当前使用的视频渲染器 说 明: 获取当前使用的视频渲染器 81 函 数: boolean SetUseAudioRender(BSTR lpszRenderName) 参 数: lpszRenderName:音频渲染器的名称 返回值: FALSE:调用失败,TRUE:调用成功 说 明: 设置指定使用的音频渲染器 82 函 数: BSTR GetUseAudioRender() 参 数: 无 返回值: 返回当前使用的音频渲染器 说 明: 获取当前使用的音频渲染器 增加的事件 83 函 数: void AlarmRecordCreateFileFailed(BSTR filename) 参 数: filename:存放录像的文件名 返回值: 无 说 明: 报警录像文件创建失败 84 函 数: void BeginPlayFile(BSTR desc) 参 数: desc: 返回值: 无 说 明: 开始播放文件 85 函 数: void CanRewind() 参 数: 无 返回值: 无 说 明: 后退 86 函 数: void EmdGpio(BSTR desc) 参 数: desc: 返回值: 无 说 明: 打开移动侦测报警输入输出 87 函 数: void EventBadAvFile() 参 数: 返回值: 无 说 明: 88 函 数: void EventTwoWayBusy() 参 数: 返回值: 无 说 明: 89 函 数:参 数:返回值:说 明: 90 函 数:参 数:返回值:说 明: 91 函 数:参 数: 返回值:说 明: 92 函 数:参 数:返回值:说 明: 93 函 数:参 数:返回值:说 明: void EventValidateFailed() 无 void ReceiveVOLData() 无 无 接收音频数据 void PlayState(long nState, BSTR tsDiscrip) nState: tsDiscrip: 无 播放状态 void SearchResult(BSTR tsCam) tsCam: 无 搜索的结果 void RecordFinishFile(BSTR lpszFileName) lpszFileName: 无 因篇幅问题不能全部显示,请点此查看更多更全内容