37
基基 DirectShow 基 RTP 基基基基基SC07023122 基基基 SA07011114 基基基 SC07023122 基 基

基于 DirectShow 的 RTP 视频监控系统

  • Upload
    erasto

  • View
    138

  • Download
    5

Embed Size (px)

DESCRIPTION

基于 DirectShow 的 RTP 视频监控系统. SC07023122 王靖琰 SA07011114 李娜娜 SC07023122 郭 静. 内容提要. 项目介绍 视频监控系统关键技术 视频监控系统总体设计 视频监控系统实现 总结与收获. 项目介绍. 视频监控是安全防范系统的重要组成部分,它是一种防范能力较强的综合系统。 它是以计算机技术为核心,结合先进的多媒体技术、网络通信技术、数字视频压缩技术的一种监控技术。 视频监控以其直观、准确、及时和信息内容丰富而广泛应用于生产管理、保安等许多场合。. 视频捕捉. 视频压缩. 视频发送. 网络. - PowerPoint PPT Presentation

Citation preview

基于 DirectShow 的 RTP 视频监控系统SC07023122 王靖琰SA07011114 李娜娜SC07023122 郭 静

[email protected] 2/41

内容提要• 项目介绍• 视频监控系统关键技术• 视频监控系统总体设计• 视频监控系统实现• 总结与收获

[email protected] 3/41

项目介绍• 视频监控是安全防范系统的重要组成部分,它是一种防范能力较强的综合系统。• 它是以计算机技术为核心,结合先进的多媒体技术、网络通信技术、数字视频压缩技术的一种监控技术。• 视频监控以其直观、准确、及时和信息内容丰富而广泛应用于生产管理、保安等许多场合。

[email protected] 4/41

项目介绍• 本课题组采用可扩展性好的 DirectShow 实现媒体流的数据管理 , 采用先进的视频压缩标准 MPEG-4 对视频进行编解码,采用 RT

P/RTCP 实现视频流的实时传输 , 设计实现了一种基于 DirectShow 和 RTP/RTCP 传输的 MPEG-4 视频的实时视频监控系统。网络

视频捕捉 视频压缩 视频发送

视频播放 视频解压 视频接收

李娜娜 郭静 王靖琰

[email protected] 5/41

视频监控系统关键技术• COM 技术• DirectShow 技术• MPEG-4 视频压缩标准• 实时传输协议 RTP/RTCP

[email protected] 6/41

COM 技术• COM 组件是具有一定功能的、可以单独开发模块,它可以通过接口相互协同工作以完成某项任务,应用程序直接使用这些接口来实现对媒体流的控制。• 本文用到的 COM 组件是基于 COM 技术的

DirectShow 过滤器 (Filter) 。

[email protected] 7/41

DirectShow 技术• Direct Show 是 Microsoft 公司为了简化流媒体处理而提供的基于 Windows 平台的开发包。• Direct Show 为多媒体的捕捉、处理和回放提供了强有力的支持。 • DirectShow 提供的是一种开放式的开发环境 , 用户可以根据自己的需要定制自己的组件。

[email protected] 8/41

DirectShow 技术• Direct Show 使用一种称为 Filter Graph 的模型来管理整个数据流的处理过程 , 参与数据处理的各个功能模块称为 Filter ,Filter 之间的数据接口称为 Pin 。 Direct Show 的结构如图所示。

[email protected] 9/41

DirectShow 技术• Direct Show Direct Show 是建立是建立在在 COM COM 组件技术基组件技术基础上的础上的 ,, 它的所有部件它的所有部件和功能都是由和功能都是由 COM COM 接口来构造和实现的接口来构造和实现的 , ,

Filter Filter 和和 Pin Pin 都是都是 COCOM M 对象。对象。

• Filter Filter 之间的数据交换之间的数据交换是通过是通过 COM COM 对象对象 MeMedia Sample dia Sample 实现实现 , , 它它封装了一段媒体流数封装了一段媒体流数据以及该段数据的属据以及该段数据的属性。性。

[email protected] 10/41

MPEG-4 标准• MPEG-4 的最大的特点就是以对象为基础的空间可分级性 , 所谓的对象是在一个场景中能够访问和操纵的实体。• MPEG-4 编码把图像和视频分割成不同的对象 , 对每一个对象的编码形成一个对象码流层 , 码流中包含着对象的形状、位置、纹理等属性。对一幅图像编码所形成的码流由一系列对象层码流构成 , 用户可直接对“对象层”进行存取操作。

[email protected] 11/41

MPEG-4 的语法结构• 一个视频系列由若干个 视频会话 VS 构成 .• VO 是场景中的具体对象,是由时间上连续的帧画面系列组成的,是用户能够存取和操作的实体。• VOL 是表明 VO 的空间和时间分辨率的一个类型。• GOV 在视频中提供标记用于记录视频平面单独编码的时域,空域位置,即实现了对视频流数据任意访问的可能• VOP 是 VO 在某一时刻的表象,即某一帧 VO 。

[email protected] 12/41

MPEG-4 的语法结构• VOP 有三种相应的帧格式 :IVOP, PVOP 和 BVO

P.• IVOP 在编码时只用到它自己的信息 ;PVOP 在编码时要用到先前的 VOP 作为参考进行运动估计和补偿 ;BVOP 在编码时则要用到先前和后续的 VO

P 作为参考进行运动估计和补偿。• VOP 可以分解为若干个宏块 ( 大小为 16 X 16) ,每个宏块又被分成 4 个的块 (8X8 大小 ) 。任何一个编码序列都是从 I 帧 ( 称为“关键帧”或“同步帧” ) 开始,后面可以有多个 P 帧或 B 帧 .

[email protected] 13/41

基于对象的视频编码过程• (1)从原始视频流中分割视频对象。• (2) 对输入的任意形状的 VOP 序列,用基于块的预测编码、形状编码和离散余弦变换的混合编码技术编码,处理顺序是先 IV

OP后 PVOP, BVOP 。 • (3) 对各个视频对象的码流进行复合,每个视频对象的形状、运动和纹理信息复合成 V

OL比特流,各视频对象视频流复合成统一的码流输出。

[email protected] 14/41

基于对象的视频编码过程• 在对 VOP 的形状信息编码后,取得任意形状 VO

P 的采样,每个 VOP划分为不相交的宏块,每个宏块含有 4 个 8X8 象素块,以进行运动估计和补偿以及纹理编码,己编码的 VOP 帧保存在帧存中,在当前 VOP 帧和己编码 VOP 帧之间计算运动矢量• 对将编码的块和宏块,计算他们的运动补偿预测误差 ;运动补偿预测后的 IVOP 及误差用 8X8 块

DCT变换,并进行 DCT 系数的量化,然后是游程编码和嫡编码。

[email protected] 15/41

实时传输协议 RTP/RTCP• 实时传输协议( Real-time Transport Protocol ,

PRT)是在 Internet 上实时传输多媒体数据流的一种网络协议。 RTP 通常使用 UDP 来进行多媒体数据的传输,但如果需要可以使用 其它协议。• RTP/RTCP 协议族由两个相关的协议构成 :• 1) 实时传输协议 RTP 用来传输具有实时特点的数据。• 2) 实时传输控制协议 RTCP 用于统计、管理和控制 RTP 传输。

[email protected] 16/41

实时传输协议 RTP/RTCP• RTP 数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个 RTP 数据报都由头部和负载两个部分组成。RTP 数据报的头部格式• RTP 数据报的头部格式包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。

[email protected] 17/41

RTCP 控制协议 • RTCP 数据报携带有服务质量监控的必要信息,能够对服务质量进行动态的调整,并能够对网络拥塞进行有效的控制。• RTCP 协议的功能是通过不同的 RTCP 数据报来实现的,主要有如下几种类型: • SR( 发送端报告 )   RR( 接收端报告 )• SDES(源描述 )   BYE( 通知离开 )• APP( 由应用程序自己定义 )

[email protected] 18/41

RTCP 控制协议 • 媒体流发送端将周期性地产生发送端报告 SR ,含有不同媒体流间的同步信息、已发送的数据报和字节的计数,接收端根据这些信息可以估计出实际的数据传输速率。• 接收端会向所有已知的发送端发送接收端报告 R

R ,含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况,或者根据网络状况平滑地调整应用程序的服务质量。

[email protected] 19/41

视频监控系统总体设计• 系统采用 Client/Server 结构 , 其中服务器端主要任务是视频捕捉、视频压缩、视频存储、视频网络发送和视频实时预览;客户端的主要任务是视频网络接收、视频解码、视频存储和视频回放。系统功能流程结构如图所示:

[email protected] 20/41

系统软件总体结构

[email protected] 21/41

视频实时捕捉模块• DirectShow 捕捉视频技术是在 VFW 基础上发展起来的新一代基于 COM 的开放式多媒体开发平台,它对不依赖于硬件的实时视频捕捉系统的开发具有极其重要的意义。• DirectShow 提供了一个叫做 Capture Grap

h Builder 的对象,提供 CaptureGraphBuilder2 接口,该接口可以建立和控制 Capture Graph 。

[email protected] 22/41

视频实时捕捉模块• 建立视频捕捉程序,必须首先获取并初始化 ICaptureGr

aphBuilder2 接口,然后通过枚举选择一个适当的视频捕捉设备,为该设备创建 Capture Filter ,然后调用 addFilter 把 Capture Filter添加到 Filter Graph 。

[email protected] 23/41

视频编码模块• 本系统采用符合 MPE

G-4 标准的 XviD 作为视频编解码器。• XviD主要优点在于:开放源码;图像压缩后质量接近于 DVD 画质,数据量只有 DVD的 1 /8;目前最快的视频编解码器。• XviD 编码器运行状态图如图所示:

[email protected] 24/41

视频编码模块• 在过滤器图中添加用来实现视频编码的过滤器。具体采用 XVID 编解码器 (XVID Codec) 。• 在调用 XVID Codec 的时候,对编码器进行枚举,直到找到需要的视频编码器为止,并将其绑定成一个 Filter ,加入到过滤器图表中。

[email protected] 25/41

视频解码模块• 视频解码部分主要由 MPEG-4 解码过滤器

XviD MPEG-4 Video Decoder 实现,它包括一个输入 Pin 和一个输出 Pin ,在接收 Filter 的后面接上该解码 Filter 的输入 Pin即可,最后输出 Pin 接上 Video Renderer Filter 就可以把接收到的数据回放出来。

[email protected] 26/41

视频播放模块• 视频回放体系中各个模块实现后,为了实现视频的实时回放,就要将客户端系统运行起来 .

[email protected] 27/41

视频传输与服务质量控制• 实现视频流实时传输的核心是网络发送过滤器和网络接收过滤器的实现,本系统定义为 RTPSender 和 RTPReceiver.• RTP/RTCP 协议功能在这两个过滤器中实现 , RTPSender 用于把从压缩过滤器传来的媒体数据封装成 RTP 包,将MPEG-4 数据作为 RTP 数据包的净负荷,设置 RTP包头,标记顺序号,打上时间戳等,形成

RTP 数据包,然后根据视频帧发送时间间隔发送到网络中去。

[email protected] 28/41

网络传输过滤器的实现• RTPReceiver负责从网络接收媒体数据包、对视频数据包解封装、读取包的序列号、对包进行分析排序并写入接收端缓冲区。• 两个传输过滤器都是结合微软 SDK 示例 D

SNetwork 和开源代码 JRTPLIB 开发的。• JRTPLIB 是一个用 C++语言写的面向对象的 RTP库,这个库使用 socket 机制实现网络通讯,通过使用这个库可以很好地用 RT

P 发送和接收数据。

[email protected] 29/41

网络传输过滤器的实现• 使用 JRTPLIB 时,只需要通过继承 RTPSession类实现以下几步就可以完成数据的发送和接收。• (1)首先实现 RTP初始化• (2) 数据发送 :首先需要设置目标地址 ,然后就可以调用 RTPSession类的 SendPacket()方法,向目标地址发送流媒体数据。• (3) 数据接收 :首先需要调用 RTPSession类的 Jo

inMulticastGroup()加入组播组,然后用 polldata()方法来接收发送过来的 rtp或者 rtcp 数据包。

[email protected] 30/41

视频服务质量控制• 视频服务质量控制是根据网络状况自适应地控制视频质量 ,主要目的是保证在视频传输过程中改善视频质量。• 由于网络带宽有限,一旦传输速度过快,就可能引起网络拥塞、抖动和丢包。• 本系统采用如下的服务质量控制策略 : 一方面发送方服务器在接收到客户端的服务质量报告后动态地调整发送速率,另一方面客户端设置环形缓冲区来弥补网络延迟和抖动的影响。

[email protected] 31/41

基于 RTCP 的自适应传输控制• 本系统采用某段时间内数据包丢失率作为拥塞状态的反馈信息。• 丢包数 ( ,时刻 t 之前的丢包数 ):

• 丢包率 ( , t 时刻和 k 时刻之间发生的丢包率 ):

tLost Re 1 Ret t tSend ceive SMAX SBASE ceive

t,kLRate

k,t t kLRate =(Lost -Lost )/( - )t kSend Send

tLost

[email protected] 32/41

基于 RTCP 的自适应传输控制• 接收用户终端不断并通过 RTCP 的接收方报告 (R

R) 把测量丢包率反馈给发送端 .• 发送端反馈控制算法如下 :• if ( >Puthreahold){// 网络拥塞• RateCurrent = max{a*RateCurrent , LRat

e};}• else if ( <Plthreahold){// 网络空闲• RateCurrent=min{(RateCurrent+step) , U

Rate};}• else RateCurrent=RateCurrent;// 网络负载均衡适中

t,kLRate

t,kLRate

[email protected] 33/41

系统对抖动的处理• 缓冲区使用先进先出的环形链表队列 ,Read 的时候读链表头, AddBuffer 时就加到队列尾部。• 目的端根据接收视频流缓冲区状况实时管理环形缓冲区,力图使输出节奏均匀。• 环形缓冲区的设计平滑了时延抖动对回放质量造成的冲击,能够较好地满足视频回放的要求。

出队 入队使用方向

空闲空间

[email protected] 34/41

视频传输与服务质量控制• 所有 Filter 实现后,在 GraphEdit 中连接,运行效果图如图

[email protected] 35/41

总结• 视频监控系统是一个非常有意义又十分困难的综合性课题。 本组深入研究了 DirectS

how, MPEG-4, RTP/RTCP 等技术 , 提出了视频服务质量控制策略,在此基础上设计并实现了一个视频监控系统。• 目前,本系统的设计、编码已经基本完成,系统在测试过程中取得了较好的效果。

[email protected] 36/41

收获• 通过长期努力,本系统基本达到了设计要求,通过本项目,本组人员分析问题和解决问题的能力大大提高,同时对多媒体数据的采集、压缩、链路管理、实时传输协议等技术有了较深入的理解。• 但由于直播系统本身具有的复杂性,同时由于条件限制,目前的成果距离实际应用还有一段相当长的路要走。本系统还有较多需要完善的地方,比如对音频的支持,以及组播功能。

[email protected] 37/41