基于WinCE的ARM视频监控系统
4 视频传输部分 4.1 配置无线网卡 图像传输模块主要是通过USB接口的无线网卡来实现的。该无线网卡可与S3C2410集成的USB主机接口直接相连,工作在2.4 GHz的ISM频段,采用直接序列扩频通信方式,遵从802.11g协议,传输速度可达54Mbps,室内有效距离为100 m,能够满足局域网内视频传输的要求。本系统通过开发板和主机之间的无线网卡构建无线局域网络,能够实现点对点的无缝连接,用户通过此无线网络可以实现文件传输、视频通信等应用。 开发板端的无线网卡也需要加载驱动才能运行。本系统在定制WinCE操作系统时,首先将无线网卡的驱动程序复制到\WINDOWS文件夹下,然后向注册表中写入无线网卡的驱动信息。WinCE操作系统启动后会自动检测无线网卡是否连接好,并加载驱动程序,此时,就可以通过应用程序调用此无线网卡了。在无线传输时,注意要把开发板和主机设置在同一IP网段。 4.2 传输视频数据 实时传输协议RTP(Real time Transport Protocol)是一种实时流式传输协议,能够保证媒体信号带宽与当前网络状况相匹配,在一对一(umcast,单播)或者一对多(multicast,多播)的网络环境中实现流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输。整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTCP控制协议。 针对系统数据的收发要求,采用了开源代码JRT-PLIB提供的RTP协议栈。JRTPLIB是一个面向对象的RTP库,完全遵循RFC1889设计。开发人员只要初步了解RTP协议就可以开发出高质量的音/视频传输程序。把它移植到EVC上,稍作修改就可以应用在WinCE操作系统的ARM开发板上了。 4.2.1 建立RTP的数据发送和接收 JRTPLIB提供的RTPSession类可以实现RTP的数据发送和接收。RTP数据发送和接收的初始化步骤基本相同。首先设置时间戳、最大的RTP包尺寸、数据超时等会话参数,然后设置基端口(注意这个端口必须是偶数,默认值为5000)。在设置好这些参数之后,就可以使用RTPSession的Create方法建立RTP数据接收和发送了。 数据发送端使用RTPIPv4Address(intIP,PORT_DATA)建立一个新的地址,再使用AddDestination将这个地址增加到发送的地址列表中。然后,调用SendPacket函数发送RTP数据。 在数据接收端建立RTP会话并且增加了目标地址后,就可以从目标地址接收数据了。此时将调用OnRtpPacket函数接收RTP数据,在这个函数里取得装载数据并使用。在OnRTPPacket函数中,调用函数zc030x_OutPicture(&m_pDlg->frame),对接收到的数据进行解码。最后,调用函数StretchDIBits(),在当前窗口中显示视频图像。 4.2.2 RTP的控制协议--RTCP RTCP(Real-time Transport Control Protocol)和RTP一起提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这砦信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,以有效的反馈和最小的开销使传输效率达到最佳效果。 本系统基于S3C2410平台和WinCE操作系统,通过USB摄像头采集现场实时视频信息,并对其进行压缩。然后,用两块无线网卡在开发板与上位机之间构建无线局域网络,使用实时流式传输方式实现了视频数据的无线传输。整个系统具有稳定可靠、安装简便、成本低廉等特点,可以应用在远程监控、工业控制、视频会议、可视电活等诸多领域。
rtpSessiorl. SendPacket(sendBuf,length,26,true,0UL);
void RTPAppSession::OnRTPPacket (RTPPacket *
pack,const RTPTime & receivetime,const RTPAddress
*senderaddress)
JRTPLIB是一个高度封装的RTP库,调用PollData()或者SendPacket()方法后,JRTPLIB能够自动对到达的RTCP数据报进行处理,并在需要时发送RTCP数据报,从而确保整个RTP会话过程的正确性。在RTP数据收发中,也可以通过调用RTPSession类提供的方法选择当前RTP会话需要发送的控制信息,并对控制信息进行设置。
结语
- 基于s3c2410的CramFS根文件系统的移植(07-13)
- AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现(11-06)
- 基于WinCE的I2C驱动程序设计(04-24)
- WinCE下光电编码器的驱动程序设计(04-12)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- 基于S3C2410A的嵌入式系统的U-Boot移植(01-24)