K9F1208UOM 容量为 64M×8 b 的 NAND FLASH 芯片;RAM 配备 2 片 HY57V561620BT—
H 组成 32 位数据总线的 SDRAM,适用监控终端处理庞大视频数据的需求。在 USB Host 接
口上外接一块基于
IEEE802.11 协议的无线网卡,通过无线 AP 端点接收监控前端视频数
据。液晶屏选用
TFT 真彩液晶屏,并配备相应的触摸屏实现人机交互的目的。
2 系统的软件设计
移动视频监控终端软件设计以嵌入式
Linux 操作系统为核心,作为一种开源操作系统,
Linux 具有支持多种硬件平台、丰富的设备驱动和良好的网络功能等特点。针对监控终端的
具体应用对内核进行配置,剪裁出合适的系统。监控终端应用软件是建立在操作系统之上,
为实现
RTP/UDP/IP 协议下接收 H.264 视频流和 ffmpeg 解码库实时解码视频流。
2.1 H.264 视频流的传输
2.1.1 传输方式选择
视频的实时传输要求较低的时间延迟,并且允许一定的丢包率。由于
TCP 协议的 3 次
握手以及丢包重传机制会造成一定的延时,在实时监控系统中有一定缺陷,而
UDP 协议是
面向无链接、不可靠的传输层协议,具有消耗资源小,传输速度快等特点,在视频传输过程
中偶尔丢包不会对监控画面产生较大影响。
UDP 协议不提供数据包分包、封装、数据包排序
等 缺 点 , 为 保 障 视 频 流 传 输 的 可 靠 性 , 网 络 传 输 部 分 采 用 建 立 在
UDP 协 议 之 上 的
RTP(Real-time Transport Protocol)实时传输协议来实现,通过套接字与前端建立连接,以接
收视频流数据。
RTP 提供带有实时特性的端对端数据传输服务,包括有效载荷类型的定义、
序列号、时间戳和传输检测控制。基于
RTP/UDP/IP 协议传输视频流封装格式如图 2 所示。
2.1.2 视频流传
输
采用
UDP 协议传输 RTP 包时会出现乱序的现象,所谓乱序就是监控终端接收到 RTP
包顺序可能前端发送的顺序不一致,因此,首先要对接收的
RTP 包排序。采用在内存中建
立一个双向链表来保存接收的
RTP 包,按照 RTP 报头的序列号(Sequence Number)顺序存放
到链表中,双向链表结构体定义如下,部分变量用于
RTP 分片封包模式。
每 当 接 收
到 一 个 新 的
RTP 包后,根
据序列号从链
表尾开始搜索
并插入到合适
的位置,比如,
接收到一个序