1 Linux中流数据的操作
在本设计中,数据在整个系统中是以流数据的形式存在的,Linux内核为流数据提供了一个标准的编程接口,这种接口为数据从外部设备经内核到达用户进程提供了一个全双工通道。
在这个通道中,数据的处理模块是作为可选的中间件由用户动态加载的,上面设计的视频压缩模块就是这样的一个中间件。
2 ASF流式文件格式
本系统主要是用于实时视频应用,所以需要系统提供对流式文件格式的支持,这样在接收方利用标准的流视频播放软件,如MMedia Player就可以观看实时传输的视频。在本系统中采用了开放的ASF流格式。压缩后的视频数据在传输前需要对其进行ASF编码。ASF文件的基本组织单元为ASF对象,每个对象由三个域组成:对象标识符域、对象大小域和对象数据域。ASF文件的高层逻辑结构也包含三部分:头对象、数据对象和索引对象。其中,头对象包含了许多全局信息,数据对象则包含了所有待播放的数据,头对象必须在数据对象之间被接收方接收并解释。在哪里都需要接收,那么就更加离不开接收头了。
流视频协议是为了在客户机和视频服务器之间进行通信而设计和标准化的。根据它们的功能,与网络上流视频相关的协议分为三类。
网络层协议:网络层协议提供了基本的网络服务支持。IP就是网络上流视频使用的网络协议。
传输协议:传输协议为流服务提供端对端的网络传输功能。TCP、UDP、RTP和RTCP就是网络上流视频使用的传输协议。
话路控制协议:话路控制协议定义消息和程序。RTSP就是一种话路控制协议。
为流视频设计的协议栈。在发送方的数据面,压缩且经过ASF编码的视频数据被读出并在RTP/RTCP/RTSP层上打包,以提供定时和同步信息以及包的序列号。然后把这些打包的RTP数据流发送到UDP/TCP层和IP层,得到的IP包在网络上传输。在接收方则按照相反的方向处理。在控制面,RTCP包和RTSP包在UDP/TCP层上复用,并且被送到IP层,以便通过网络传输。
小结
本文提出了一种基于Intel PXA255嵌入式微处理器和嵌入式Linux网络摄像机的设计方案,系统采用先进的MPEG-4编码标准,得到了较高的压缩比。经测试、在50Kbps~100Kbps的带宽下,对CIF(352×288,30fps)格式的视频有较好的表现能力。满足了在目前宽带环境中的网络视频会议以及视频监控的要求,其应用十分广泛。