应用软件设计及功能实现说明文档.doc_第1页
应用软件设计及功能实现说明文档.doc_第2页
应用软件设计及功能实现说明文档.doc_第3页
应用软件设计及功能实现说明文档.doc_第4页
应用软件设计及功能实现说明文档.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 车载监控系统概述整套监控系统将包括车载设备、网络服务器、客户端三大组成部分。客户端通过服务器的中转与车载设备间接通信,以实现从车载设备接收监控信息和向车载设备发送控制指令等。所预计的主要功能将包括视频音频监控,酒精检测,传感器报警,语音对讲,远程云台控制等。车载设备通过3G无线数据模块无线接入网络,以实现车载移动监控。系统部署图整个系统部署结构如图,其中: 车载设备连接模拟摄像机,并通过3G数据模块拨号连接网络。实现视频音频采集,可以把实时音频视频发送至服务器。并且可以挂接硬盘存储设备,把采集的视频和音频存储至硬盘。存储的视频可通过网络点播,并可以通过模拟输出端口直接把存储的视频音频输出到电视机进行播放,播放时有图形操作界面。 车载设备的通过带酒精度传感器的外接设备进行酒精检测。酒精检测后将检测数值传到服务器,并发送提醒短信到用户手机。在本地对酒精值进行分析和声音播报。 车载设备的报警传感器安装在需要的位置,检测到非法入侵时,可通过3G模块以发送手机短信的方法通知用户。 车载设备可从服务器接收音频数据并且进行播放。 服务器可将车载设备的视频音频数据转发至客户端,可以把来自客户端的指令信息和音频数据转发至车载设备。 客户端可接收视频音频数据并进行播放,可以控制车载设备的摄像机云台,可以通过话筒向车载设备讲话。客户端与网络服务器逻辑分开,服务器可以同时连接多个车载设备和多个客户端。并把每个客户端与该客户的若干设备对应。根据实际需要,PC客户端也可以并入服务器系统。4.1 1.1 系统功能流程1. 服务器监听连接请求,服务器分别通过针对双方的TCP控制端口监听来自监控前端和来自客户端的TCP连接。2. 前端设备注册,当有监控前端连接到服务器后,监控前端会发送注册指令信息到服务器,指令信息中的数据区包含设备号信息。并连接到语音流转发TCP端口。服务器将该设备注册为在线设备。3. 客户端登陆,当客户端连接到服务器后,客户端会发送指令信息到服务器,指令信息中的数据区包含用户名和密码。服务器需对登陆请求进行处理,发送应答信息,接受或者拒绝。若拒绝,应答指令中数据区包含错误信息,用户名密码错误或者设备被占用等。登陆成功后向服务器连接视音频流接收TCP端口,此端口校验成功后连接。并开启一个UDP端口监听来自该客户端的语音流。4. 用户设备列表,用户成功登陆后,服务器需对该用户有权限访问的在线设备列表,并将列表发送至客户端。指令信息中的数据区中存放设备列表信息。5. 用户指令转发,用户对某个前端发送控制指令时,将指令转发到对应的监控前端。6. 视音频传输,当服务器接收到视频请求指令后,服务器开启TCP端口监听来自前端的连接请求。前端设备通过此TCP端口连接服务器,服务器接收到来自监控前端的音频、视频流时,通过视频音频流转发专用TCP端口,将数据转发至对应的客户端。7. 用户指令处理,当从客户端对服务器发送指令时,服务器接收并处理。例如用户修改密码,数据区会包括新的密码,服务器需要进行数据库更新。8. 语音对讲,当收到语音对讲指令时,服务器开启一个UDP端口监听来自客户端的数据流,并通过语音流转发专用TCP端口转发至对应的前端。9. 断开连接,TCP连接断开后,注销设备,并通过该端口继续监听。4.2 1.2 数据流程图灰色底纹字体表示的数据服务器不做处理,只转发数据。监控前端服务器设备ID 前端交互发送注册信息接收控制指令监控前端注册转发控制指令TCP转发语音流接收语音流TCPTCP接收视频流音频流输出视频流音频流客户端客户端交互登陆服务器发送用户指令接收设备列表发送控制指令用户校验登陆用户管理发送设备列表接收控制指令TCPTCP接收视频流音频流转发视频流音频流发送语音流UDP 接收 语音流数据库用户信息:用户ID登陆密码所有权限车载视频监控系统的数据流程图2 车载前端方案概述车载设备配备视音频处理芯片,可以连接最多4路摄像机,可连接GPS设备和报警传感器等设备,在Linux系统上运行车载监控端的应用程序,实现各功能模块。通过3G无线数据模块联网,与服务器进行连接。并通过服务器把与客户端进行数据交互,包括音视频流的发送,指令消息的收发,音频数据的接收。车载设备在客户端请求任一路或多路实时视频音频时,将视频音频编码后进行封装,通过服务器转发给客户端;也可应客户端请求查找并调用本地存储的视频音频数据,发送至客户端。客户端可接收来自客户端的音频数据并解码播放。设备启动时或接受到客户端指令时,会进行酒精检测。车载设备系统架构图3 前端软件功能模块1. 视频处理模块,实现多路实时视频数据采集、图像处理、基于H.264技术的编解码压缩与数据存储;可进行存储数据的查找和调用。可通过模拟视频输出端口对存储的视频进行播放。车载设备从摄像机采集视频音频数据,并将每一个摄像机获取的视频数据缩放为2种分辨率视频流,一路高清视频数据压缩后的数据保存在本地硬盘,另外一路较低分辨率的可压缩后通过网络传输到服务器。2. 音频处理模块,实现多路实时音频数据采集,基于G.711-u技术的编解码压缩,编码后的数据进行本地存储,也可通过网络传输;存储数据的查找和调用。可通过模拟音频输出端口对存储的音频进行播放。3. 网络通信模块,设备启动时通过3G数据模块使用ppp协议拨号接入网络,与网络服务器进行连接。把数据进行封装,通过服务器与客户端间接通信,进行数据交互。并可通过AT指令发送手机短信。4. 网络指令处理模块,系统启动后采用TCP协议向服务器连接,建立TCP指令通道,通道建立后先向服务器发送注册信息。之后进行监听,从服务器接收转发自客户端的指令,并进行处理。5. 云台控制模块,接受到云台控制指令后,进行处理。采用RS485通信接口通信控制云台,实现云台控制。6. 酒精检测模块,在设备启动后或接到客户端的指令后,进行酒精检测。酒精检测后将检测数值传到服务器,并发送提醒短信到用户手机。并在本地对酒精值进行分析和声音播报。7. 自动报警模块,红外传感器被触发后,系统可检测到并经由3G模块发送报警手机短信。8. 语音对讲模块,可接收来自客户端的语音流,采用G.711-u算法解码并实现播放。4. 软件结构与功能实现说明4.1 PC客户端功能概述应用软件采用多线程实现,Xxx_tsk.c中包含每个独立线程。1. int xxx_tskCreate( CAPTURE_CreatePrm *prm) 创建线程结构,为线程分配内存。OSA_cmemAlloc()申请内存空间。OSA_cmemAllocCached () 申请内存空间(缓存模式)。OSA_cmemGetPhysAddr() 映射物理地址。2. int xxx_tskDelete()清除线程占用的内存。OSA_cmemFree() 释放内存区。3. int xxx_tskRun()线程处理入口函数Int xxx_tskMain()线程的主函数OSA_msgGetPrm()读取指令存储队列OSA_tskWaitMsg() 监听线程控制指令OSA_tskAckOrFreeMsg() 清空指令存储区当前指令4. Int xxx_sendCmd()发送线程控制指令OSA_mbxSendMsg() 发送指令到指令存储区5. int xxx_create(xxx_CreatePrm *prm)创建线程OSA_tskCreate() 创建线程,运行处理主函数OSA_mbxCreate() 创建线程指令存储队列6. int xxx_delete()删除线程OSA_tskDelete() 删除线程OSA_mbxDelete() 删除线程指令存储区4.2 视频采集视频处理的实现涉及3个线程。视频采集线程、视频编码线程和存储处理线程。图 4-1 视频处理模块流程图Capture_tsk.c中是视频采集线程的实现,包括视频数据采集和缩放。1. 通过MCVIP_getBuf(),MCVIP_getBufInfo()两个函数获取经tvp5158芯片采集得到的yuv422图像数据。实现VIDIOC_DQBUF,出队列以取得已采集数据的帧缓冲,取得原始采集数据。2. 再通过MCVIP_putBuf()实现VIDIOC_QBUF,将缓冲重新入队列尾,这样可以循环采集。3. CAPTURE_tskProcessFrame()中做的是视频图像的缩放。通过ENCODE_getEmptyBuf()申请视频编码缓冲队列中的空buffer,将输出buffer设置为编码压缩的输入区。ENCODE_putFullBuf()将存储有处理后数据的buffer入视频编码队列。4. 支持2路输出缩放,可做双码流输出。5. CAPTURE_tskCalcReszClkDiv()传入参数。6. DRV_reszRun()进行缩放。缩放后的数据在ENCODE_getEmptyBuf()申请的buffer中等待压缩。4.3 视频压缩Encode_tsk.c中为视频压缩线程的实现。Encode_tsk.c中采集缩放后通过Encode_sendCmd()发送ENCODE_CMD_RUN指令,控制压缩函数的执行压缩多帧图像。1. 设置压缩分辨率vidEncCreatePrm.width = vidEncCreatePrm.height = vidEncCreatePrm.offsetH = vidEncCreatePrm.offsetV = 2. 设置压缩比特率,即编码码率pChInfo-newBitrate =3. 通过OSA_bufGetFull()和OSA_bufGetBufInfo()申请视频编码缓冲队列内的一个buffer出队列,作为编码器输入buffer。编码后OSA_bufPutEmpty()将缓冲区入编码缓冲队列。4. WRITER_getEmptyBuf()申请存储缓冲队列中的空buffer,将输出buffer设置为存储的输入区。WRITER_putFullBuf()将存储有处理后数据的buffer入存储队列。5. ALG_vidEncRun()进行压缩。压缩后的数据在WRITER_getEmptyBuf()申请的buffer中等待存储和网传。4.4 音频采集压缩图4-2 音频处理流程图音频采用G.711-方式编码。在Audio_tsk.c中为音频采集编码线程。1. gAUDIO_ctrl.pCreatePrm()为 MCVIP_CreatePrm()类型的结构体,其中包含了声音参数设置。2. AUDIO_Record()调用MCVIP_audioRecord()获取音频数据。3. AudioWRITER_getEmptyBuf()申请音频存储缓冲队列中的空buffer,将输出buffer设置为存储的输入区。AudioWRITER_putFullBuf()将存储有处理后数据的buffer入音频存储队列。4. AUDIO_audioEncode()压缩音频数据。编码后的数据在AudioWRITER _getEmptyBuf()申请的buffer中等待压缩。4.5 流媒体存储Writer_tsk.c中为视频和音频的存储线程的实现。Encode_tsk.c中编码结束后通过WRITER_sendCmd()发送WRITER_CMD_RUN和AUDWRITER_CMD_RUN指令控制流媒体存储线程中存储函数的执行。1. 每一帧视频编码后WRITER_putFullBuf()调用WRITER_sendCmd()发送指令WRITER_CMD_RUN到指令队列。WRITER_tskRun()中通过OSA_bufGetFull()和OSA_bufGetBufInfo()申请视频存储缓冲队列内的一个buffer出队列,存储后调用OSA_bufPutEmpty()将存储缓冲区入视频存储队列。2. 每一帧视频编码后AudioWRITER_putFullBuf()调用WRITER_sendCmd()发送指令AUDWRITER_CMD_RUN到指令队列。AudWRITER_tskRun()中通过OSA_bufGetFull()和OSA_bufGetBufInfo()申请音频存储缓冲队列内的一个buffer出队列,存储后调用OSA_bufPutEmpty()将存储缓冲区入音频存储队列。3. WRITER_fileSaveRun()进行流媒体存储。在存储的同时,调用函数videostreamFunc()进行网络视频传输,audiostreamFunc()进行网络音频传输。4.6 网络通信图5-4 指令通信处理流程图Rawsockio.c中是网络通信的实现。LSOCK为指令通信通道。CSOCK为语音接收通道。DSOCK为流媒体发送通道。1. MainSocketConnect()中创建了3个TCP套接字。设置3个套接字的参数。connect_to_server()中实现了本地向服务器的连接。2. ReadSocketData()为建立连接后对数据接收处理的实现。LSOCK对接收的数据进行处理,通过*msgfunccmd函数指针调用指令处理函数。CSOCK调用AUDIO_tskTalkBack()对语音流数据进行循环接收,解码播放。DSOCK不做接受,建立后等待通过该通道发送流媒体数据。4.7 指令处理Msghandler.c中定义了网络指令与指令处理入口函数的映射表。通过*msgfunccmd调用指令对应的指令处理函数。Process.c中是各指令处理函数的实现。4.8 流媒体传输1. Vstream.c文件中videostreamFunc()为视频网络传输的实现。SystemInfo.StreamEnable为视频网络传输的标识开关。当接受到视频网络传输的指令并建立传输通道口,变开启视频传输。2. Astream.c文件中audiostreamFunc()为音频网络传输的实现。SystemInfo.aStreamEnable为音频网络传输的标识开关。当接受到音频网络传输的指令并建立传输通道口,便开启音频传输。3. 数据包格式数据包头为3字节:typedef struct _TEST_PACK_HEADunsigned char FrameType;/帧格式 视频I帧、P帧、音频帧unsigned short PackLoadLength;/载荷数据长度TEST_PACK_HEAD;载荷数据长度最大为1024字节。载荷数据超过1021字节的话进行帧切割操作。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论