多路音视频同步回放系统及其方法

文档序号:6737000阅读:608来源:国知局
专利名称:多路音视频同步回放系统及其方法
技术领域
本发明涉及一种多路音视频同步回放技术,特别涉及一种多路音视频同步回放系统及其方法。
背景技术
多路视频回放软件基于Directshow开发,DirectShow是微软公司提供的一套在 Windows平台上进行多媒体处理的开发包,是目前windows上使用最广泛、结构最灵活的多媒体框架,为多媒体采集和编辑,播放提供了一整套解决方案。Directa10W提供的是一种开放式的开发环境,它基于Filter (滤镜)模块组成面向特定需求的多媒体处理的Filter Graph开发者可以根据自己的需要灵活定制,替换自己或者第三方的Filter。Directaiow中的Filter (滤镜)主要分为以下三类一、Source Filter (源滤镜)主要负责与外部媒体源交互,比如磁盘文件,网络流媒体,摄像头等,它将相关的媒体源的数据读写,IO查找封装在内部,暴露Directalow标准接口给下游Filter使用。二、Rendering Filter(表现滤镜)将最终数据渲染到终端,在多媒体回放的案例中,Rendering Filter是终端显卡和声卡的抽象,在数据采集(比如视频录制)中, Rendering Filter是存储介质的抽象。三、Transform Filter (变换滤镜)将Source Filter送入数据进一步处理并转换为最终Rendering Filter可接受的数据格式。在媒体回访案例中,Transform Filter 主要作用是将Source Filter读入的媒体的原始数据进行音频视频流分离和解码,后期处理转换为Rendering Filter可接受的视频帧图像(RGB,YUV)。开发者可以遵循^Transform Filter的基本框架开发出适应各种场合的应用。播放avi文件的过程如下(1)首先从一个文件中读取AVI数据,形成字节流(这个工作由源Filter完成)。(2)检查AVI数据流的头格式,然后通过AVI分割Filter将视频流和音频流分开。( 解码视频流,根据压缩格式的不同,选取不同的解码器(Decoder)。 (4)解码后的视频帧通过RenderingFilter送到显卡绘制视频图像。(5)音频流送到声卡进行播放。目前的播放器以及Filter (滤镜)的设计都是单路的视频音频播放,没有设计多路音视频播放。

发明内容
本发明所要解决的技术问题是提供一种多路音视频同步回放系统及其方法,其可以播放用户自定义格式的多路视频、音频数据,并使使同步误差控制在人眼觉察的范围内。为解决所述技术问题,本发明提供了一种多路音视频同步回放系统,其特征在于, 其包括应用程序模块,其用于发送命令和接收事件;
文件读取滤镜,其主要负责与外部媒体源交互,并从源文件读取数据;多路文件分离器滤镜,其根据将要播放的时间标志请求各路源文件中距离这个时间标志一定范围内的数据帧;解码器,其将多路文件分离器滤镜送入数据进一步处理并转换为文件读取滤镜可接受的视频帧图像;表现滤镜,其将最终数据渲染到显卡或声卡;显卡或声卡,其将最终数据播放。优选地,所述多路文件分离器滤镜、文件读取滤镜、解码器、表现滤镜构成滤镜管理器。优选地,所述应用程序模块通过发送命令控制滤镜管理器对播放进行暂停、开始、 停止、快进、快退、慢放的操作;滤镜管理器将播放中的事件传递给应用程序模块,使应用程序模块采用相应的操作。优选地,所述解码器的数量和文件读取滤镜的数量一致,并与其一一对应。优选地,所述表现滤镜的数量和文件读取滤镜的数量一致,同时与其一一对应。本发明还提供一种多路音视频同步回放方法,其采用上述的多路音视频同步回放系统,其特征在于,其包括以下步骤多路文件分离器滤镜通过文件读取滤镜同时读取源文件的数据,然后将这些数据经过解码器的解码和表现滤镜的渲染,最终输出到显卡或声卡上进行播放。本发明的积极进步效果在于本发明可以播放用户自定义格式的多路视频、音频数据,并使使同步误差控制在人眼觉察的范围内,即误差不超过1Λ4秒。


图1为本发明多路音视频同步回放系统的结构框图。图2为本发明多路文件分离器滤镜的工作原理示意图。图3为本发明保证音视频同步性的原理示意图。图4为本发明视频播放时数据的流向的示意图。
具体实施例方式下面举个较佳实施例,并结合附图来更清楚完整地说明本发明。在应用程序层,使用者可以通过播放软件同时打开几路机载数字视频记录仪 (DVR)记录的视/音频文件进行播放。因为DVR在记录这几路视/音频的时候,会给每一个数据帧(Sample)打上播放时间标志(PTS),所以播放软件在播放时会根据数据自身的时间标志进行异步读取和播放,从而使这几路视频在回放时的同步误差控制在人眼可以辨识的范围内。如图1所示,本发明多路音视频同步回放系统包括应用程序模块、多路文件分离器滤镜(Splitter Filter)、文件读取滤镜(Source Filter)、解码器(Decoder)、表现滤镜 (Rendering Filter)、显卡或声卡,多路文件分离器滤镜(Splitter Filter)、文件读取滤镜(Source Filter)、解码器(Decoder)、表现滤镜(Rendering Filter)构成滤镜管理器 (Filter Manager)。
本发明多路音视频同步回放方法包括以下步骤多路文件分离器滤镜(Splitter Filter)通过文件读取滤镜(Source Filter)可以同时读取几路源文件的数据(音视频数据),然后将这些数据经过解码器(Decoder)的解码和表现滤镜(Rendering Filter)的渲染,最终输出到显卡或声卡上进行播放。本发明可以播放用户自定义格式的多路视频、音频数据,并使使同步误差控制在人眼觉察的范围内,即误差不超过1Λ4秒。应用程序模块用于发送命令和接收事件,可以通过发送命令控制滤镜管理器对播放进行暂停、开始、停止、快进、快退、慢放等操作;而滤镜管理器可以将播放中的事件如文件结束等传递给应用程序模块,使应用程序模块可以采用相应的操作。文件读取滤镜(Source Filter)主要负责与外部媒体源交互,比如磁盘文件,网络流媒体,摄像头等,它将相关的媒体源的数据读写、IO查找封装在内部,暴露Directalow标准接口给下游Filter使用。在本系统中,Filter Graph会根据要播放的文件路数创建相应数量的Source Filter来对各源文件进行读取。如图2所示,多路文件分离器滤镜(Splitter Filter)根据将要播放的时间标志请求各路源文件中距离这个时间标志一定范围内的数据帧(Sample),如果某路没有相应数据就直接返回等待下一次读取,不影响其他路的读取。如果有数据,则将数据读取到内存分配器(Allocator)的空闲帧队列中,并将内存指针传给Splitter Filter。如此循环,直到接收到停止命令。内存分配器(Allocator)可以根据帧的大小动态分配内存。多路文件分离器滤镜(Splitter Filter)根据接收到的内存指针,从数据帧队列中读取Sample并进行相应处理后向下游传递。解码器(Decoder)将多路文件分离器滤镜(Splitter Filter)送入数据进一步处理并转换为最终表现滤镜(Rendering Filter)可接受的视频帧图像(RGB,YUV等)。在本系统中,解码器(Decoder)的数量和文件读取滤镜(Source Filter)的数量一致,并与其
--对应。表现滤镜(Rendering Filter)将最终数据渲染到终端(显卡或声卡),它是终端显卡和声卡的抽象,显卡或声卡将最终数据播放。与解码器(Decoder) —样,在本系统中, 表现滤镜(Rendering Filter)的数量和文件读取滤镜(Source Filter)的数量一致,同时与其——对应。因为处于同一个Filter Graph中,所以这些表现滤镜(Rendering Filter) 所用的参考时钟(Reference Time)是同一个,这是保证同步播放的基础。此系统保证音视频同步性的原理如图3所示。在播放中,表现滤镜在渲染时标为 PTS的数据帧,解码器在解码时标为PTS+tl的数据帧(时标为PTS到PTS+tl之间的数据帧已经解码完毕,在帧队列中等待表现滤镜的渲染),而此时,多路文件分离器滤镜向文件读取滤镜请求距离时标PTS+tl+t2不大于t3的下一个数据帧(时标PTS+tl到PTS+tl+t2内的数据帧已经处理完毕,在帧队列中等待解码器解码),如果各路数据中有请求的数据,则读取到内存分配器中等待多路文件分离器滤镜处理,如果没有相应数据,则直接返回,等待下一次读取,这样就音视频同步性。数据流以帧(Sample)为单位,每个Sample中包含了视频的内存指针(pointer to the underlying buffer),时标(time stamp),各禾中标志(various flags),媒体类型(a media type)(可选)。时标定义了播放时间,表现滤镜(Rendering Filter)根据这个时间来安排显示。标志用来标识数据流的一些特殊状态,例如数据流有无中断。可以通过重新指定媒体类型来中途改变数据流的格式,通常帧是没有媒体类型的,也就表示格式和前一帧没有变化。视频播放时帧的流向如图4所示。这样的数据处理方式既可以保证不耗费太多的系统资源,又可以有足够的数据缓冲保证播放的流畅性,避免卡顿和丢帧现象,为播放的同步性提供保障。因为所有的表现滤镜都处于同一个滤镜管理器中,所以它们的参考时钟是相同的,从而表现滤镜根据数据帧上的时间标志播放时可以达到较好的同步的效果。
虽然以上描述了本发明的具体实施方式
,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改。因此,本发明的保护范围由所附权利要求书限定。
权利要求
1.一种多路音视频同步回放系统,其特征在于,其包括应用程序模块,其用于发送命令和接收事件;文件读取滤镜,其主要负责与外部媒体源交互,并从源文件读取数据;多路文件分离器滤镜,其根据将要播放的时间标志请求各路源文件中距离这个时间标志一定范围内的数据帧;解码器,其将多路文件分离器滤镜送入数据进一步处理并转换为文件读取滤镜可接受的视频帧图像;表现滤镜,其将最终数据渲染到显卡或声卡;显卡或声卡,其将最终数据播放。
2.如权利要求1所述的多路音视频同步回放系统,其特征在于,所述多路文件分离器滤镜、文件读取滤镜、解码器、表现滤镜构成滤镜管理器。
3.如权利要求2所述的多路音视频同步回放系统,其特征在于,所述应用程序模块通过发送命令控制滤镜管理器对播放进行暂停、开始、停止、快进、快退、慢放的操作;滤镜管理器将播放中的事件传递给应用程序模块,使应用程序模块采用相应的操作。
4.如权利要求1所述的多路音视频同步回放系统,其特征在于,所述解码器的数量和文件读取滤镜的数量一致,并与其一一对应。
5.如权利要求1所述的多路音视频同步回放系统,其特征在于,所述表现滤镜的数量和文件读取滤镜的数量一致,同时与其一一对应。
6.一种多路音视频同步回放方法,其采用如权利要求1所述的多路音视频同步回放系统,其特征在于,其包括以下步骤多路文件分离器滤镜通过文件读取滤镜同时读取源文件的数据,然后将这些数据经过解码器的解码和表现滤镜的渲染,最终输出到显卡或声卡上进行播放。
全文摘要
本发明公开了一种多路音视频同步回放系统及其方法,多路音视频同步回放系统,其包括应用程序模块,其用于发送命令和接收事件;文件读取滤镜,其主要负责与外部媒体源交互,并从源文件读取数据;多路文件分离器滤镜,其根据将要播放的时间标志请求各路源文件中距离这个时间标志一定范围内的数据帧;解码器,其将多路文件分离器滤镜送入数据进一步处理并转换为文件读取滤镜可接受的视频帧图像;表现滤镜,其将最终数据渲染到显卡或声卡;显卡或声卡,其将最终数据播放。本发明可以播放用户自定义格式的多路视频、音频数据,并使使同步误差控制在人眼觉察的范围内。
文档编号G11B27/10GK102522096SQ201110404218
公开日2012年6月27日 申请日期2011年12月7日 优先权日2011年12月7日
发明者姜文毅, 巩来源, 张继豪, 肖忠炳 申请人:中国航空无线电电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1