图 1 系统示意图
1. 视频数据包识别捕获
1. 从媒体服务器上获取媒体;
2. 邀请媒体服务器加入会议;RTSP协议一般与RTP/RTCP和RSVP等底层协议一起协同工作,提供基于Internet的整套的流服务。它可以选择发送通道如UDP、组播UDP和TCP和基于RTP的发送机制。它可以应用于组播和点播。
客户机在向视频服务器请求视频服务之前,首先通过HTTP协议从Web服务器获取所请求视频服务的演示描述文件,利用该文件提供的信息定位视频服务地址包括视频服务器地址和端口号,及视频服务的编码方式等信息。然后客户机根据上述信息向视频服务器请求视频服务。视频服务初始化完毕,视频服务器为该客户建立一个新的视频服务流,客户端与服务器运行实时流控制协议RTCP,以对该流进行各种VCR控制信号的交 换,如播放、暂停、快进、快退等。当服务完毕,客户端提出拆线请求,需要说明的是,服务器使用RTP/UDP协议将媒体数据传输给客户端,一旦数据抵达客户端,客户端应用程序即可播放输出。在流式传输中,使用RTP/RTCP/UDP和RTSP/TCP两种不同的通信协议在客户端和服务器间建立联系。
Microsoft公司的Windows Media的核心是ASF(Advanced Stream Format)。微软将ASF 定义为同步媒体的统一容器文件格式。ASF是一种数据格式,音频、视频、图像以及控制命令脚本等多媒体信息通过这种格式,以网络数据包的形式传输,实现流 式多媒体内容发布。
ASF最大优点就是体积小,因此适合网络传输,使用微软公司的最新媒体播放器可以直接播放该格式的文件。用户可以将图形、声音和动画数据组合成一个ASF格式的文件,当然也可以将其他格式的视频和音频转换为ASF格 式,而且用户还可以通过声卡和视频捕获卡将诸如麦克风、录像机等等外设的数据保存为ASF格式
ASF具有可扩展的媒体类型,ASF文件允许制作者很容易地定义新的媒体类型。ASF格式提供了非常有效的灵活地定义符合ASF文件格式定义的新的媒体流类型。任一存储的媒体流逻辑上都是独立于其他媒体流的,除非在文件头部分明显地定义了其与另一媒体流的关系。ASF是设计用来表示可伸缩的媒体类型的带宽之间的依赖关系。ASF存储各个带宽就像一个单独的媒体流。媒体流之间的依赖关系存储在文件头部分,为客户机以一个独立于压缩的方式解释可伸缩的选项提供了丰富的信息流的优先级,现代的多媒体传输系统能够动态地调整以适应网络资源紧张的情况如带宽不足。多媒体内容的制作者要能够根据流的优先级表达他们的参考信息,如最低保证音频流的传输。随着可伸缩媒体类型的出现,流的优先级的安排变得复杂起来,因为在制作的时候很难决定各媒体流的顺序。
ASF提供可继续扩展的目录信息的功能,该功能的扩展性和灵活性都非常好。所有的目录信息都以无格式编码的形式存储在文件头部分,并且支持多语言,如果需要,目录信息既可预先定义如作者和标题,也可以是制作者自定义。目录信息功能既可以用于整个文件也可以用于单个媒体流。
ASF文件主要有三种数据对象组成Header Object,Data Object,Index Object。Header Object包括ASF文件的主要信息,必须位于文件首部。Data Object包含数据信息,紧跟在Header Object之后,Index Object是非必须,提供跳跃索引,位于文件结尾。RTSP协议中,ASF的Header Object用Base64编码加密以后放在SDP(Session Description Protocol)数据包中。
在系统中,我们采用了移植在eBox-4300上的WinCE作为系统的嵌入式操作系统,为了解码器的工作效率和移植方便,我们采用ASF流媒体文件格式。根据搭建的基于RTSP协议的流媒体服务器,可以校验在网络中截取到数据包的特定协议字段,如果应用层协议有RTSP的协议字段,就将数据包取出,按协议进行对包的卸载,提取出ASF文件,再将ASF文件按序列传输到下一处理单元进行视频解码,并提取出关键帧。
2.网络视频关键帧提取
图3 视频层次结构示意图
关键帧是反映一组镜头中主要信息内容的一帧或若干帧图像,可以简洁地表达镜头内容。因为每个镜头都是在同一场景下拍摄的,同一个镜头中的各帧图像有相当大的重复信息。考虑到存储容量和处理效率的因素,仅需要存储镜头关键帧,可达到降低系统存储容量和减少处理器冗余工作的效果。其次,从关键帧的匹配效率考虑,用关键帧来代表镜头,作用类似于入侵检测系统中的匹配规则,这样对网络视频流可用图像匹配技术进行处理。
针对关键帧的特点,选取时有两个基本要求:第一,所选帧必须能够反映镜头中的主要事件,描述应尽可能准确完全,所以一般采用保守原则,宁可错选,也不能少提取;第二,为了减少系统存储设备,提高处理数据包的效率,数据处理量应尽量小,计算不宜过于复杂,因此关键帧的抽取应尽量少而精确。
早期的提取关键帧的尝试主要是采用颜色特征。一个简单的提取关键帧的想法是选择镜头片段的第一帧作为关键帧。当然这样提取的关键帧是很不准确的。在基于镜头的方法中,比较经典的有帧平均法和直方图平均法。帧平均法是从镜头中取所有帧在某个位置上像素值的平均值,然后将镜头中该点位置的像素值最接近平均值的帧作为关键帧。直方图平均法则是将镜头中所有帧的统计直方图取平均,然后选择与该平均直方图最接近的帧作为关键帧。这些方法的优点是计算比较简单,所选取的帧具有平均代表意义。缺点是只从一个镜头中选取一个关键帧,无法处理运动强度较高的镜头。一般说来,从镜头中选取一帧或固定数目的关键帧的方法并不是很好,因为当处理变化很少的镜头时,这样选取的关键帧过多,而对于运动较多的镜头,用一两个关键帧又无法充分描述其内容。所以有人提出了基于内容分析的方法。综合前人的研究成果,我们在本系统采用渐变控制的方法。首先选取每个镜头的第一帧作为关键帧,同时作为其他候选关键帧的参考帧,将后续每帧和参考帧比较,当其差别大于预定的阀值时,即将当前帧作为新的关键帧,同时将此帧作为新的参考帧。
3. 视频关键帧匹配
颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。
颜色直方图是最常用的表达颜色特征的方法,其优点是不受图像旋转和平移变化的影响,进一步借助归一化还可不受图像尺度变化的影响,基缺点是没有表达出颜色空间分布的信息。颜色直方图简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。
纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。
通常情况下,形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征。图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法。
空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接或邻接关系、交叠或重叠关系和包含包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间位置,但表达相对空间位置信息常比较简单。空间关系特征的使用可加强对图像内容的描述区分能力,但空间关系特征常对图像或目标的旋转、反转、尺度变化等比较敏感。另外,实际应用中,仅仅利用空间信息往往是不够的,不能有效准确地表达场景信息。
优秀的匹配算法是系统工作效率和辨识能力的保证,而高效的匹配算法需要准确地描述出关键帧的特征。在本系统中,我们考虑到系统计算能力和稳定性的要求,采用颜色直方图和形状特征相结合的描述算法。当提取出当前网络视频流的关键帧序列后,将关键帧以流水线作业的方式后匹配规则库中的匹配图像做比较,若相似率大于预定的阀值时,我们就有理由相信当前视频流是垃圾视频。如果相似率低于预定的阀值,但落在了一个预定的有嫌疑的区间中,我们可以提取当前关键帧的颜色直方图和轮廓特征,与匹配图像的颜色直方图和轮廓特征相比较,如果其匹配概率大于预警阀值,系统可向管理员提出告警,再通过人工识别的方式来判断当前视频流是否非法。
4. 告警响应和处理
基于系统特有的预警机制,可以降低误报率和提高监测效率。当系统检测到垃圾视频信息时,将提取出该视频数据包的源IP地址和端口等信息,并将信息显示在系统报警页面通知系统管理员的同时,也会将信息传输到网络安全保障体系结构中的其他相关安全设备,如防火墙等。防火墙将第一时间将此非法IP地址和端口列入黑名单中,禁止该IP地址的视频数据包通过防火墙。
由于系统本身的匹配校验和预警机制,同时结合网络安全保障体系中其他安全设备的资源来对视频流进行监测,可以保障视频信息的干净和安全,同时不影响用户对视频服务的享受。
视频数据包识别捕获单元由FPGA Spartan 3E板卡来实现。FPGA具有高速并行处理的逻辑编程结构,可以实现流水线识别源IP地址、源端口和目的IP地址、目的端口,以及协议类型、视频标志字段等信息的处理。
根据用户特定需要监测的视频类型和流媒体协议,用户可以自定义视频特定位置的标志字段。识别捕获数据包单元过滤到相应的视频数据包时,将按照特定的流媒体协议对数据包进行卸载,提取出视频信息后传输到后继视频解码单元,提取出视频的关键帧。
视频解码关键帧提取单元在eBox-4300上的Wince操作系统上实现。Wince是微软公司开发的嵌入式操作系统,具有很好的移植性和视频处理库,开发容易上手等优点。同时考虑到当前视频格式标准多样,为了提高系统的功能,以后一定会不断向系统添加新的解码器。而Wince上软件的兼容性相对其他的操作系统较强,当用户添加其他解码器时更简单。
关键帧的查询是为了方便系统管理员对系统的工作效能进行控制。在系统管理过程中,管理员可以通过身份验证登录到系统管理页面,查看当前时间段的告警信息和相应的关键帧,并可根据人为识别的方法,决定是否向关键帧匹配库中添加新的匹配图像。
视频关键帧的匹配是系统的主要部分,系统监测的准确性主要取决于关键帧的匹配算法和模式。FPGA中,与RAM存储单元相关的资源有三类:Block RAM、LUT、寄存器。这三类资源可以通过配置和粘合逻辑实现为不同类型和位宽大小的单端口/双端口RAM、ROM、CAM、FIFO等。FPGA中CAM的实现和配置非常灵活,CAM是实现模式匹配的核心资源。
CAM即内容可寻址存储器。CAM这种存储器在其每个存储单元都包含了一个内嵌的比较逻辑,CAM基于内容寻址,通过硬件电路并行查找,实现快速匹配。一般来说在一个时钟周期内,写入CAM的待比较数据和其内部存储的每一个数据进行比较,并返回与端口数据相同的内部数据存储的地址和是否匹配的标识符。CAM的这种并行处理特性使得它在数据分选领域倍受青睐,被广泛应用在以太网网址搜寻、路由器中的地址交换表、高速数据处理等方面。
基于CAM在模式匹配方面的良好特性,我们将关键帧的匹配单元在FPGA中实现。由于Spartan 3E的BRAM资源有限,所以系统存储的关键帧数据不会很多。将匹配图像的颜色直方图和形状轮廓信息存储在CAM中后,提取关键帧的颜色直方图和形状轮廓信息进行匹配。用这种方法可以提高关键帧匹配的速率,避免了系统的瓶颈。
视频关键帧匹配规则库的更新是提高视频监测准确性的关键。因此,视频匹配规则库良好的接口设计是用户交互的重要方面,在本系统中,我们将关键帧信息存储在CAM中,当用户根据自己的需求,提取出自定义图像的颜色直方图和形状轮廓特征信息后,可在线写入CAM中,作为新的匹配规则。
鉴于当前网络攻击方式的多种多样和系统本身的处理能力有限,我们建议将此系统和其它网络安全设备相结合构成网络安全保障体系结构。综合各种安全监测设备自身的优点和不足,合理利用有限的资源,全方位保障内部网络的安全。
在此系统中,我们可以提取出视频源的IP地址和端口号,如果确定当前视频含有垃圾信息,系统将其IP地址和端口号传输到体系中的防火墙等设备,由防火墙截断其数据包的传输,并将其列入黑名单重点监测。同时,提取出的关键帧还将由病毒扫描系统等安全审计设备进行检查,防止视频中捆绑有病毒和木马等攻击信息。
Lwip是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。Lwip既可以移植到操作系统上,又可以在无操作系统的情况下独立运行.
在Xilinx公司提供的ISE 10.1开发套件中,EDK开发软件支持Lwip的应用,同时软件自身包含Lwip的库。因此,系统中的网络接口我们全部基于Lwip的RAW IP模式开发。
FFmpeg是用于制作和转化流媒体音频和视频的完整解决方案, 包括 libavcodec ,一套先进的的音视频编解码类库。FFmpeg 在Linux上开发,当可以在大多数操作系统下编译,包括Windows。
Ffmpeg开源项目由以下几部分组成:
FFmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件;
FFserver 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器.也支持时间平移;
FFplay 用 SDL和FFmpeg库开发的一个简单的媒体播放器;
libavcodec 一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的;
libavformat 一个包含了所有的普通音视格式的解析器和产生器的库.
在系统中的网络视频解码和关键帧提取单元,解码器的实现是在开源音视频解码器库libavccodec的开发上实现的。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |