Avi文件播放时切换多路音频流的av同步方法及装置的制作方法

文档序号:7975662阅读:372来源:国知局
专利名称:Avi文件播放时切换多路音频流的av同步方法及装置的制作方法
技术领域
本发明主要涉及音视频播放领域,尤其涉及一种应用于嵌入式系统中保 持含一路Divx视频编码数据、多路音频数据的AVI文件在切换播放的音频 数据时音视频(AV)同步的方法和装置。
背景技术
先对文中出现的相关技术术语进行解释I帧关键视频帧,无损压缩的视频图片,此文件中所有引用I帧的地 方,指的都是视频帧;Divx: —种纟见频编码格式;AV: Audio and Video,音频和视频;CBR:固定码流;VBR:可变码流;SPHE匪N: Sunplus Home Entertainment 1001N;STB:全称为Set-Top-Box即机顶盒;AVI: Audio Video Interleaved,音视频数据交叉存取。AVI (Audio Video Interleaved (交叉存取))是最常用的一种媒体文件 格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下, 一个 AVI文件可以包含多个不同类型的媒体流。通常AVI文件包含的媒体流为 含有一个视频流和一个音频流,但含有一个视频流和几个音频流的AVI文 件也是合法的。如图1所示,AVI文件结构主要包括三部分AVI文件头、音视频数据、 索引信息。
其中从AVI文件头,可获得的信息包括AVIMAINHEADER ( AVI主 文件头)信息、格式信息、音频流数、视频流时间尺度和速率指标、音视频 数据开始位置Movie一Offset、音视频数椐整体大小Movie—Size、 VBR音频 流的采样率或者CBR音频流的字节率等信息。其中,AVI文件中音频流通 常为两种编码格式VBR音频或者CBR音频,故根据情况解析相应参数。其中音视频数据部分为以数据块为单位依次交叉存放各路音视频实际 数据。如图2所示。其中INDEX由索引信息块列表组成,每个索引信息块对应AVI文件中 每个音频或视频数据块,该索引信息块依照AVI文件中音、视频数据块交 错排列形式依次排列形成列表,每个索引信息块包含数据块标志(是视频 数据块、音频数据块还是填充的空白数据块,对于音频数据块还包括属于哪 一路音频流的标志)、是否是关键帧标志(即I帧的标志)、是组合数据块 标志(即多个数据块组合为一个数据组合)或是单数据块(一个数据块,它 可以是一个帧,或者多个帧)、偏移量dwOffset (索引每路中每音/视频数 据块对应在文件中距离文件头或音视频数据头的偏移),以及对应音/视频 数据块的字节数。对于视频数据一般情况下一个数据块对应一帧;对于VBR的音频数据 来说, 一个数据块对应一个音频帧,对于CBR的音频数据,数据块和音频 帧之间没有绝对的对应关系。在AVI文件中会有少数的如下情况:几个音频 数据块组合为 一个组合数据块。由于AVI视频文件不含有精确的、均匀分布的时间戳信息。对于非切 换过程的AV同步,主要是在初始化解码器前,从音视频流头信息中读取每 个流的时间尺度参数和速率参数,根据这两类参数分别初始化音视频解码器 的解码速率,从而保持AV同步。而在播放含有一路Divx视频编码数据、 多路音频数据的AVI文件,当切换播放的音频数据时,就需要重新计算出 音频、视频播放的精确位置,以保证AV同步。本发明是基于嵌入式系统,解码工作由硬件芯片完成,数据传输控制由 软件完成,以降低嵌入式系统运行要求,加快解码速度。但采用硬件解码时,
数据传榆的位置信息及数据解码的位置信息等保持AV同步所需的信息需 要在各个单元之间传递,工作的控制和协调较难实现,目前还没有这样的一 种方法。发明内容本发明要解决的技术问题是提供一种AVI文件播放时切换多路音频流 的AV同步方法及装置,在播放含有一路Divx视频编码数据、多路音频数 据的AVI文件时,切换音频流后可保持AV同步。为了解决上述技术问题,本发明提供了一种AVI文件播放时切换多路 音频流的AV同步方法,应用于包括切换控制单元、数据传输单元、数据处 理单元和数据解码单元的系统,在播放含有多路音频流的AVI文件时,先 保存AVI文件头信息,当用户切换音频流后,执行以下步骤(a) 切换控制单元收到切换请求后,向数据处理单元和数据解码单元 发送切换指令;(b) 数据解码单元向切换控制单元回传当前解码的视频帧数;(c) 切换控制单元根据当前解码的视频帧数和保存的索引信息、文件 头信息计算得到重传位置和同步播放参数,将重传位置发送到数据传输单 元,将同步播放参数发送到数据解码单元;(d) 数据传输单元按指定重传位置重新传输AVI文件的音视频数据, 数据处理单元接收到音视频数据后分离出视频流和应切换到的那路音频流; 数据解码单元完成视频解码的重新初始化,并按要切换到的那路音频流的参数重新进行音频解码的初始化;(e) 数据解码单元接收到重新传输的音视频数据后,根据同步播放参 数决定是否将解码的音视频数据传输到数据显示单元进行同步播放。进一步地,上述音一见频同步方法还可具有以下特点步骤(c)中,切换控制单元得到的同步播放参数为计算出的音频跳过 数目Skip—audio和视频跳过数目Skip—Frame;
步骤(e )中,数据解码单元对重新传输的音^L频流开始部分的Skip—audio 个字节数或帧数以及Skip—Frame个视频帧,解码后不传输到数据显示单元, 之后解码的音视频数据再传输到数据显示单元进行同步播放,其中对固定码 流采用字节数,对可变码流采用帧数。进一步地,上述音视频同步方法还可具有以下特点所述数据解码单元在收到切换指令后,继续对緩存的视频数据进行解 码,在收到参数Skip一audio和Skip一Frame后,再清空緩存的视频数据,进 行^L频解码的重新初始化。进一步地,上述音^L频同步方法还可具有以下特点所述系统为嵌入式系统,所述数据解码单元用硬件实现,切换控制单元、 数据传输单元和数据处理单元则由CPU执行相应软件来实现。进一步地,上述音视频同步方法还可具有以下特点所述步骤(c)切 换控制单元进一步通过以下步骤完成计算(cl )根据切换音频数据流时正在解码的帧数A加上设定的帧数B,得 到本次切换的视频同步点Vc的帧序号,且根据解析的音视频数据开始位置 和其总大小,确定索引信息起始位置,读取索引信息并保存;(c2)从音视频数据索引开始位置累计视频帧的数目,以累计的视频帧 数最接近且小于Vc帧序号的I帧为Vc之前最近的I帧Vr,(c3)从索引信息中找到^对应的音频数据块AI5读取A!在AVI文件 中的偏移位置,以该位置为重传位置;(c4)计算Vc与V!之间的帧数差即视频跳过数目Skip—Frame,以及播 放Vc时要切换到的那路音频流应播过的音频字节数或帧数 Audio—accum—size与^之前累加得到的音频字节数或帧数Audio—TotalN—^ 的差值,即音频跳过数目Skip_audio。进一步地,上述音视频同步方法还可具有以下特点所述步骤(c3)中 V!对应的音频数据块A!按以下方式来查找(c31)计算播放V!之前要切换到的那路音频流应播过的音频字节数或
帧数Audio—TotalN—I,公式为对固定码流Audio一TotalNJ:V!的帧序号* (视频流时间尺度/视 频流速率指标)* CBR音频字节率对可变码流Audio—TotalN—I-V!的帧序号* (视频流时间尺度/视 频流速率指标)*¥811音频采样率/1152(c32)从音视频数据的起始位置,逐一累加要切换到的那路音频流数 据块的字节数或帧数,将累加值与上面得到的Audio_TotalN—I进行比较,如 杲小于Audio—TotalN一I,再进行下一次累加,如于大于等于Audio—TotalN_I,执行下一步;(c33)如累加值等于Audio_TotalN—I,则该路音频流的下一音频数据 块即为V!对应的音频数据块AI5如累加值大于Audio—TotalN—I,则该音频 数据块即为V!对应的音频数据块A!,同时记录A!之前累加得到的音频字节 数或帧数Audio一TotalN—入;(c34)从音频数据块A!对应的索引信息块中找到偏移位置dwOffset, 该位置即为重传位置。所述步骤(c4)中计算播放Vc时要切换到的那路音频流应播过的音频 字节数或帧数Audio—accum—size时,只需将步骤(c31)公式中的V!的帧序 号改成Vc的帧序号即可。进一步地,上述音视频同步方法还可具有以下特点所述帧数B取值范围为6~12个帧。进一步地,上述音视频同步方法还可具有以下特点步骤(a)中,切换控制单元收到切换请求后,还向所述数据传输单元 发送切换指令,所述数据传输单元收到切换指令后,立即停止对原音^L频流 的传输;同时,如AVI文件中包含三路及以上的音频流数据,则切换控制 单元发送到数据处理单元和数据解码单元的指令中,需要指示要切换到的是 哪一路音频流。本发明提供的AVI文件播放时切换多路音频流的AV同步装置包括
数氺居传输单元,用于读取AVI文件的音^见频数据传输到数据处理单元, 并在收到重传指令后按指定重传位置重新传输AVI文件的音视频数据;数振处理羊元,用亍对AVI文件头信息和索引信息进行解析和保存, 完成音频流和视频流的分离并传输给数据解码单元,在收到切换指令后,从 音视频数据中分离出视频流和应切换到的那路音频流;数据解码单元,包括音频解码子单元和视频解码子单元;在收到切换指 令后,向切换控制单元回传当前解码的视频帧数,并完成视频解码的重新初 始化以及按要切换到的那路音频流的参数重新进行音频解码的初始化;根据 接收的同步播放参数,决定是否将解码的音视频数据传输到数据显示单元进 行同步播放;切换控制单元,用于在收到切换请求后,向数据处理单元和数据解码单 元发送切换指令,然后根据当前解码的视频帧数和保存的索引信息、文件头 信息计算得到重传位置和同步播放参数,将重传位置发送到数据传输单元, 将同步播放参数发送到数据解码单元。进一步地,上述音视频同步装置还可具有以下特点所述切换控制单元 得到的同步播放参数为计算出的音频跳过数目Skip_audio和视频跳过数目 Skip—Frame j所述数据解码单元对重新传输的音视频流开始部分的Skip_audio个字 节数或帧数以及Skip—Frame个视频帧,解码后不传输到数据显示单元,之 后解码的音视频数据再传输到数据显示单元进行同步播放,其中对固定码流 采用字节数,对可变码流采用帧数。进一步地,上述音^f见频同步装置还可具有以下特点所述切换控制单元 进一步包括接口子单元,用于完成切换控制单元与其它单元之间的通信;信息提取子单元,用于从数据处理单元获取AVI文件头信息和索引信 息,供运算子单元使用。控制子单元,用于在收到用户接口单元的切换请求后,向数据解码单元、 数据处理单元和数据解码单元发送切换指令,发送到数据处理单元和解码单 元的指令应携带要切换到的音频流标识,从数据解码单元获取当前解码的视频帧序号传送到运算子单元;并在收到运算子羊元的重传位置、音频跳过数 目和视频跳过数目参数后,向数据传输单元发送重传指令,携带重传位置参 数,以及将音频跳过数目和视频跳过数目参数传输到数据解码单元。运算子单元,用于根据当前解码的视频帧序号和AVI文件头信息和索 引信息,计算出重传位置、音频跳过数目Skip_audio和视频跳过数目 Skip—Frame,传送到控制子单元。进一步地,上述音^L频同步装置还可具有以下特点所述数据解码单元在收到切换指令后,继续对緩存的视频数据进行解 码,在收到参数Skip一audio和Skip一Frame后,再清空緩存的视频数据,进 行-現频解码的重新初始化。进一步地,上述音视频同步装置还可具有以下特点所述运算子单元进 一步包括以下部分同步点计算及索引信息提取部分,根据切换音频数据流时正在解码的帧 数A加上设定的帧数B,得到本次切换的视频同步点Vc的帧序号,且根据 解析的音视频数据开始位置和其总大小,确定索引信息起始位置,读取索引 信息并保存;I帧确定部分,从音视频数据索引开始位置累计视频帧的数目,以累计 的视频帧数最接近且小于Vc帧序号的I帧为Vc之前最近的I帧重传位置计算部分,从索引信息中找到^对应的音频数据块A!,读取 Aj在AVI文件中的偏移位置,以该位置为重传位置;跳过数目计算部分,计算Vc与^之间的帧数差即视频跳过数目 Skip—Frame,以及播放Vc时要切换到的那路音频流应播过的音频字节数或 帧数Audio—accum—size与A〖之前累加得到的音频字节数或帧数 Audio—TotalN—Ar的差值,即音频跳过数目Skip—audio。进一步地,上述音视频同步装置还可具有以下特点
所述重传位置计算部分查找Vi对应的音频数据块A!时,先计算播》文V!之前要切换到的那路音频流应播过的音频字节数或帧数Audio_TotalN_I,公 式为对固定码流AudioJTotalN一I-^的帧序号* (视频流时间尺度/视 频流速率指标)* CBR音频字节率对可变码流Audio一TotalN一I-^的帧序号* (视频流时间尺度/视 频流速率指标)* VBR音频采样率/1152再从音视频数据的起始位置,逐一累加要切换到的那路音频流数据块的 字节数或帧数,将累加值与上面得到的Audio—TotalNJ进行比较,如果小于 Audio—TotalN—I,再进行下一次累加,如累加值等于Audio—TotalN—I,则该 路音频流的下一音频数据块即为Vt对应的音频数据块AP如累加值大于 Audio—TotalN一I,则该音频数据块即为V!对应的音频数据块AP同时记录 A,之前累加得到的音频字节数或帧数Audio一TotalN—Aj;最后,从音频数据块A!对应的索引信息块中找到偏移位置dwOffset, 该位置即为重传位置。所述跳过数目计算部分计算播放Vc时要切换到的那路音频流应播过的 音频字节数或帧数Audio—accum—size时,只需将上述计算Audio一TotalNJ 公式中的V!的帧序号改成Vc的帧序号即可。进一步地,上述音视频同步装置还可具有以下特点所述切换控制单元还用于在收到切换请求后,向所述数据传输单元发送切换指令;所述数据传输单元收到切换指令后,立即停止对原音视频流的传输;所述切换控制单元在播放的AVI文件中包含三路及以上的音频流数据时,发送到数据处理单元和数据解码单元的指令中,需要指示要切换到的是 哪一路音频流。进一步地,上述音^L频同步装置还可具有以下特点所述装置应用于嵌入式系统,所述数据解码单元用硬件实现,切换控制 单元、数据传输单元和数据处理单元由CPU执行相应软件来实现。
本发明保证了播放含一路Divx视频编码数据、多路音频数据的AVI文 件,在切换不同音频流数据时保持AV同步。进一步还可以尽可能维持视频 播放的连续性。特别可用于嵌入式系统的低配置条件下,实现AVI文件音 频数据切换时的AV同步,从而降低了对系统主频的要求,可实现Karaoke (卡拉OK)的原/伴唱切换等功能。


图1是AVI文件结构的示意图。图2是图1中的音视频数据部分的结构示意图。图3是本发明实施例系统的结构框图。图4是本发明实施例方法在切换原伴唱时的处理流程图。图5和图6分别是CBR音频流和VBR音频流的参数计算的示意图。
具体实施方式
本发明是播放含有一路Divx视频编码数据、多路音频数据的AVI文件 过程中,切换音频数据时保持AV同步的方法和系统,以下以播放Karaoke 系统时切换原伴唱为例,结合附图和实施例对本发明进行详细说明。由于从得到切换指令到行使多路音频切换期间需要一段时间进行计算, 为避免视频图像静止定格,视频会继续播放一段时间。在视频播放的情况下, 为了保证切换后的音频与视频的同步,就要选择一个音视频同时播放的一个 点,即视频同步点(即视频帧)C及其对应的音频数据块。该视频同步点应 在切换时解码的视频帧后的某个位置。另外根据解码的要求,视频的解码必须从I帧开始,音频可以从任何位 置开始,如果直接从C点视频解码,则会出现马赛克现象。所以确定切换 后重新解码的开始位置时,需找到视频同步点C (也用Vc表示)之前最近 的I帧(也用V!表示)所对应(指应同步播放)的音频数据块(以下用Aj 表示),从该音频数据块在AVI文件中的偏移位置Gotoj)ffset重新传输和 解码AVI文件数据。对于Vc之前的视频帧以及Vc对应的音频数据块(以 下用Ac表示)之前的音视频数据,只进行解码而不进行播放。 本文中的重新传输或重传,是指打破第一次传输次序,开始新的第二次 传输,这次传输的起始位置不再是原来的文件头。闺3是本发明实施例系统的结构框图,如图所示,包括数据传输单元、 数据处理单元、切换控制单元、数据解码单元、数据显示单元和用户接口单 元,其中数据传输单元用于将读取的AVI文件音视频数据传输到数据处理单元, 且数据传输单元在收到切换控制单元的切换指令后停止数据传输,在收到该 单元的重传指令后,按指令中指示的重转位置重新开始传输音视频数据。其 中视频数据采用Divx3.ll、 Divx4,x、 Divx5. x等编码格式,音频数据采用 MP1、 MP2、 MP3等编码格式。数据处理单元用于接收数据传输单元传输的音视频数据,对AVI文件 头信息、Index信息、音视频格式信息进行解析后保存,分离出要播放的音 视频数据并传输给数据解码单元,在收到切换指令后对重新传输的数据,需 要从音视频数据中分离出视频流和应切换到的那路音频流;切换控制单元进一步包括信息提取子单元,用于从数据处理单元获取保存的AVI文件头信息和 Index信息,供运算子单元使用;接口子单元,用于完成切换控制单元与其它单元之间的通信;控制子单元,用于在收到用户接口单元的切换请求后,向数据传输单元、数据处理单元和数据解码单元发送切换指令,发送到数据处理单元和解码单元的指令指示要切换到的是哪一路音频流(指示可以通过携带要切换到的音频流标识来实现,当然如果只有两路音频流也可以不指示),并从数据解码单元获取当前解码的视频帧数传送到运算子单元;以及在收到运算子单元的重传位置、音频跳过数目和视频跳过数目参数后,向数据传输单元发送重传指令,包含重传位置参数,并将音频跳过数目和视频跳过数目参数传输到数 据解码单元;运算子单元,用于根据当前解码的视频帧数和AVI文件头信息、Index 信息,计算出重传位置、音频跳过数目和视频跳过数目,传送到控制子单元。
该子单元可进行分为同步点计算及索引信息提取部分、I帧确定部分、重传 位置计算部分和跳过数目计算部分,各个部分的功能将在下文再介绍。数据解码单元,包括音频解码子单元和视频解码子单元,分别用于对数据处理单元传输的音视频数据分别进行解码,其中视频解码子单元还用于在收到切换控制单元的切换指令后,向其回传当 前视频解码的视频帧数,并继续解码緩存数据;在收到视频跳过数目后,清 空緩存并重新初始化,对重新传输的视频流开始部分该数目的视频帧只解 码,不传输到数据显示单元,之后的视频帧解码后输出到数据显示单元;音频解码子单元在收到切换控制单元的切换指令后停止对音频数据的 解码,按要切换到的音频流参数进行重新初始化设置;在收到音频跳过数目 后,对重新传输的音频流开始部分该数目的音频帧/字节数('7"表示"或" 关系,对CBR的音频数据为字节数,对VBR的音频数据为音频帧)只解码, 不传输到数据显示单元,之后的音频数据解码后输出到数据显示单元。数据显示单元,用于把解码后的音视频数据进行显示、播放,视频可以 在TV/VGA设备输出,音频在TV设备输出。用户接口单元是用户操作的接口,用户可通过该接口发送切换请求,其 中该切换请求在有三路以上音频流时,要包含要切换到的音频流标识,即指 示要切换到的是哪一路音频流。没有切换原伴唱时执行的流程包括以下步骤步骤一,STB加电,自动运行Karaoke播放系统,用户通过播放界面控 制此系统;步骤二,用户选择播放AVI文件格式的歌曲时,从AVI文件中的文件 头开始传输数据,如接收到的传输数据为AVI文件头,执行步骤三,若为 音视频数据,执行步骤五;步骤三,解析AVI文件头,保存其中包含的信息;其中解析且保存的AVI文件头信息包括音一见频流数,用以确认此文 件中有几路音视频流;视频流时间尺度和视频流速率指标;VBR数据对齐 值(固定值为1152, ) 、 VBR音频流的采样率或者CBR音频流的字节率; 音视频数据开始位置Movie—Offset及音视频数据整体大小Movie—Size;视频 图象的宽、高,即图象分辨率;视频解码器类型;视频解码器调色板;视频 解码器解码速率(通过^i频流时间尺度和^L频流速率指标这两个参数表示); 每路音频流音频解码器类型;每路音频流音频解码器码流类型(固定码率或 非固定码率);每路音频流音频解码器解码速率;音、视频解码器开始解码 时间。步骤四,根据从AVI文件头获取的信息进行解码的初始化设置操作;主要包括以下操作设置视频图象的宽、高,即图象分辨率;设置视频 解码器类型;设置视频解码器调色板;设置视频解码器解码速率;设置音频 解码器类型;设置音频解码器码流类型(固定码率或非固定码率);设置音 频解码器解码速率;设置音、^f见频解码器开始解码时间。其中AVI文件只含有一路视频数据,但可以含多路音频数据,所以初 始化音频解码器时使用默认播放的音频流参数进行初始化操作。步骤五,分离需要播放的音视频数据流;步骤六,对分离的音视频数据进行解码,通过AV接口把解码后的数据 输出到显示设备与扬声器进行播放。该流程只是常规的处理流程。如图4所示,在播放含有多路音频流的AVI文件的过程中,用户切换 原伴唱的处理流程包括以下步骤步骤IIO,用户切换原伴唱;步骤120,切换控制单元收到切换请求后,向数据传输单元、数据处理 单元和数据解码单元发送切换指令,其中发送到数据处理单元和数据解码单 元的指令需要携带要切换到的音频流标识;步骤130,数据传输单元停止对音视频流的传输,数据解码单元按要切 换到的那路音频流的参数重新进行音频解码的初始化设置,向切换控制单元 回传当前解码的视频帧数,同时继续对緩存的视频数据进行解码;
该步中的音频解码初始化r没置包4舌i殳置音频解码器类型;i殳置音频解码器码流类型(固定帧率或非固定帧率);设置音频解码器解码速率;设置 音、视频解码器开始解码时间。进行这些设置所需的参数是原来从AVI文件头获取的。步骤140,切换控制单元根据当前解码的视频帧数和保存的INDEX信 息、文件头信息,计算出重传位置、音频跳过数目Skip—audio和视频跳过数 目Skip—Frame等参数,向数据传输单元发送重传指令并包括重传位置参数, 并将参数Skip—audio和Skip_Frame传送到数据解码单元;步骤150,数据传输单元按指定重传位置重新传输AVI文件的音视频数 据,由数据处理单元从音视频数据中分离出视频流和应切换到的那路音频 流;数据解码单元先清空緩存的视频数据,重新初始化;步骤160,数据解码单元对重新传输的音视频流开始部分的Skip—audio 个音频字节勤帧数和Skip一Frame个视频帧,解码后不传输到数据显示单元, 之后解码的音视频数据再传输到数据显示单元以同步播放。至此A/V同步过程完成。要说明的是,数据解码单元(中的音频解码 子单元)也可以在收到切换指令后继续解码音频数据,在收到音频跳过数目 后再停止解码、完成要切换到的音频流的初始化。下面将详细地说明在步骤140中如何进行计算,请同时参照图5和图6 示出的CBR (固定码流)音频流和VBR (可变码流)音频流的参数计算的 示意图。图中"a"或'V,对应一个数据块。该步骤进一步分为以下步骤步骤1401,根据切换音频数据流时正在解码的视频帧数A加上设定的 帧数B,得到本次切换的视频同步点Vc的帧序号,同时根据解析的音视频 数据开始位置和其总大小确定INDEX信息起始位置,读取INDEX信息并保存;vc的帧序号即为从音视频数据开始位置到该帧累计得到的视频帧数 目。帧数B为经验值或计算出来,B如果大了,播放会有跳跃现象,如杲小 了,就会有重复现象,较佳取值范围为6~12个帧。该运算由运算子单元 的同步点计算及索引信息提取部分完成。步骤1402,先确定Vc之前最近的I帧K的帧序号;本实施例是从音视频数据索引开始位置,分別累计视频帧的数目、所要 切换到的音频数据流的每一音频数据块前所有本路音频数据块、字节数/帧 数,以及每一路音频流的每一音频数据块在AVI文件中的偏移位置;这样 可以一次得到每一个I帧的帧序号(即累计到该I帧的视频帧数),该I帧 之前的各路音频流数据块数、字节lt/帧数,该I帧对应的音频数据块在AVI 文件中的偏移位置等的信息。那么帧序号最接近且小于Vc帧序号的I帧即 为V!。由于在INDEX信息中并没有音频数据块或视频数据块的序号,因此可 以从头开始累计视频帧的数目,等于Vc的帧序号时即找到了 Vc,进而可确 定其之前最近的I帧。或者,也可以在累计过程中建立起每一个I帧帧序号 的集合,直接和Vc的帧序号比较,其中帧序号最接近且小于等于Vc的帧序 号的I帧即为要找的I帧。另外,由于每个I帧之间间隔的帧数是固定的, 只要知道第一个I帧的序号(如读取INDEX信息或为固定值),就可以直 接计算出每一I帧的帧序号,按同样方法可比较得到V!的帧序号。该运算由运算子单元的I帧确定部分完成。步骤1403,从INDEX信息中找到V!对应的音频数据块A,读取A在 AVI文件中的偏移位置,以该位置为重传位置Goto—offset;在INDEX中,V!对应的音频数据块A按以下方式来查找1)计算播放K之前要切换到的那路音频流应播过的音频字节数或帧数 AudioJTotalN一I,对CBR (固定码流)音频流计算的是音频数据字节数,对 于VBR(可变码流)音频流计算的是音频数据帧数,公式为对CBR: Audio一TotalNJ-V!的帧序号* (视频流时间尺度/视频流 速率指标)申CBR音频字节率对VBR: AudioJTotalN一I = ^的帧序号* (视频流时间尺度/视频流 速率指标)"^VBR音频采样率/1152应同步播放的音频数据块和视频数据块并不总是相邻,因此上面根据 AVI文件头中的相关参数来计算。2) 从音视频数据的起始位置,逐一累加要切换到的那路音频流数据块的字节lt/帧数,将累加值与上面得到的Audio一TotalN一I进行比较,如杲小 于Audio—TotalN一I,再进行下一次累加,如于大于等于Audio—TotalN—I,执 行下一步;3) 如累加值等于Audio—TotalN_I,则该路音频流的下一音频数据块即 为V!对应的音频数据块AI5如累加值大于Audio_TotalN_I,则该音频数据 块即为V!对应的音频数据块A!,同时记录A!之前累加得到的音频字节数/ 帧数Audio—TotalN一Aj;4) 从音频数据块A对应的索引信息块中找到偏移位置dwOffset,该位 置即为重传位置Goto—offset。在另一实施例中,也可以在读入INDEX信息后,先遍历INDEX信息, 记录要切换到的那路音频流的每一音频数据块对应的字节数或帧数及其偏 移位置,这样在计算出Audio—TotalN—I后,就可以直接比较得到重传位置 Goto_offset。该运算由运算子单元的重传位置计算部分完成。步骤1404,计算出Vc与V!之间的帧数差即视频跳过数目Skip—Frame, 以及播放Vc时要切换到的那路音频流应播过的音频字节数/帧数 Audio_accum—size与^之前累加得到的音频字节勤帧数Audio—TotallSL^ 的差值,即音频跳过数目Skip—audio;Skip_Frame就等于Vc与V〖的帧序号的差值。而Audio—accum一size的计 算方法与Audio_TotalN—I相同,公式如下对CBR: Audio—accum—size-Vc的帧序号* (视频流时间尺度/视频 流速率指标)* CBR音频字节率对VBR: Audio_accum—size = Vc的帧序号* (视频流时间尺度/视 频流速率指标)* VBR音频采样率/1152由于CBR音频流计算的是音频数据字节数,VBR音频流计算的是音频
数据帧数,故Audio—accum—size在CBR的组合数据块或者一个数据块(CBR 的音频数据块与音频帧是不对应关系)中可以是截至在一个帧中间,在VBR 的组合数据块中是截至在帧帧之间。该运算由运算子单元的跳过数目计算部分完成。综上所述,本发明可采用软、硬件结合的方式,播放含一路Divx视频 编码数据、多路音频数据的AVI文件,在切换不同音频流数据时保持AV 同步。保证了在嵌入式系统中低配置条件下,对AVI文件音频数据切换时 AV同步,从而降低了对系统主频的要求。本发明的另一实施例中,如果只需要实现同步,不考虑播放的连续性问 题,也可以省略与音频跳过数目和视频跳过数目相关的流程中的操作和装置 中的单元。
权利要求
1. 一种AVI文件播放时切换多路音频流的AV同步方法,应用于包括切换控制单元、数据传输单元、数据处理单元和数据解码单元的系统,在播放含有多路音频流的AVI文件时,先保存AVI文件头信息,当用户切换音频流后,执行以下步骤(a)切换控制单元收到切换请求后,向数据处理单元和数据解码单元发送切换指令;(b)数据解码单元向切换控制单元回传当前解码的视频帧数;(c)切换控制单元根据当前解码的视频帧数和保存的索引信息、文件头信息计算得到重传位置和同步播放参数,将重传位置发送到数据传输单元,将同步播放参数发送到数据解码单元;(d)数据传输单元按指定重传位置重新传输AVI文件的音视频数据,数据处理单元接收到音视频数据后分离出视频流和应切换到的那路音频流;数据解码单元完成视频解码的重新初始化,并按要切换到的那路音频流的参数重新进行音频解码的初始化;(e)数据解码单元接收到重新传输的音视频数据后,根据同步播放参数决定是否将解码的音视频数据传输到数据显示单元进行同步播放。
2、 如权利要求1所述的AV同步方法,其特征在于步骤(c)中,切换控制单元得到的同步播放参数为计算出的音频跳过 数目Skip_audio和视频跳过数目Skip—Frame;步骤(e )中,数据解码单元对重新传输的音视频流开始部分的Skip—audio 个字节数或帧数以及Skip—Frame个视频帧,解码后不传输到数据显示单元, 之后解码的音视频数据再传输到数据显示单元进行同步播放,其中对固定码 流采用字节数,对可变码流采用帧数。
3、 如权利要求2所述的AV同步方法,其特征在于所述数据解码单元在收到切换指令后,继续对緩存的视频数据进行解 码,在收到参数Skip—audio和Skip一Frame后,再清空緩存的视频数据,进 4亍i见频解码的重新初始^f匕。
4、 如权利要求1所述的AV同步方法,其特征在于所述系统为嵌入式系统,所述数据解码单元用硬件实现,切换控制单元、 数据传输单元和数据处理单元则由CPU执行相应软件来实现。
5、 如权利要求2所述的AV同步方法,其特征在于所述步骤(c)切 换控制单元进一步通过以下步骤完成计算(cl)根据切换音频数据流时正在解码的帧数A加上设定的帧数B,得 到本次切换的视频同步点Vc的帧序号,且根据解析的音视频数据开始位置 和其总大小,确定索引信息起始位置,读取索引信息并保存;(c2)从音视频数据索引开始位置累计视频帧的数目,以累计的视频帧 数最接近且小于Vc帧序号的I帧为Vc之前最近的I帧VI;(c3 )从索引信息中找到V!对应的音频数据块Ap读取At在AVI文件 中的偏移位置,以该位置为重传位置;(c4)计算Vc与Vz之间的帧数差即视频跳过数目Skip—Frame,以及播 放Vc时要切换到的那路音频流应播过的音频字节数或帧数 Audio_accum—size与A!之前累加得到的音频字节数或帧数Audio—TotalN—^ 的差值,即音频跳过数目Skip—audio。
6、 如权利要求5所述的AV同步方法,其特征在于所述步骤(c3) 中^对应的音频数据块A!按以下方式来查找(c31)计算播放V:之前要切换到的那路音频流应播过的音频字节数或 帧数Audio一TotalN一I,公式为对固定码流AudioJTotalNJ-V!的帧序号* (视频流时间尺度/视 频流速率指标)* CBR音频字节率对可变码流Audic^TotalN一I-K的帧序号* (视频流时间尺度/视 频流速率指标),VBR音频采样率/1152(c32)从音视频数据的起始位置,逐一累加要切换到的那路音频流数 据块的字节数或帧数,将累加值与上面得到的AudioJTotalNJ进行比较,如 果小于Audio—TotalN—I,再进行下一次累加,如于大于等于Audio—TotalN_I, 执行下一步;(c33)如累加值等于AudioJTotalNJ,则该路音频流的下一音频数据 块即为V!对应的音频数据块Ai,如累加值大于Audio一TotalN一I,则该音频 数据块即为^对应的音频数据块Ap同时记录A,之前累加得到的音频字节 数或帧数AudioJotalN一A^(c34)从音频数据块^对应的索引信息块中找到偏移位置dwOffset, 该位置即为重传位置。所述步骤(c4)中计算播放Vc时要切换到的那路音频流应播过的音频 字节数或帧数Audio—accum一size时,只需将步骤(c31)公式中的V!的帧序 号改成Vc的帧序号即可。
7、 如权利要求4所述的AV同步方法,其特征在于 所述帧数B取值范围为6~12个帧。
8、 如权利要求1所述的AV同步方法,其特征在于步骤(a)中,切换控制单元收到切换请求后,还向所述数据传输单元 发送切换指令,所述数据传输单元收到切换指令后,立即停止对原音视频流 的传输;同时,如AVI文件中包含三路及以上的音频流数据,则切换控制 单元发送到数据处理单元和数据解码单元的指令中,需要指示要切换到的是 哪一路音频流。
9、 一种AVI文件播放时切换多路音频流的AV同步装置,其特征在于, 包括数据传输单元,用于读取AVI文件的音视频数据传输到数据处理单元, 并在收到重传指令后按指定重传位置重新传输AVI文件的音视频数据;数据处理单元,用于对AVI文件头信息和索引信息进行解析后保存, 完成音频流和视频流的分离并传输给数据解码单元,在收到切换指令后,从 音视频数据中分离出视频流和应切换到的那路音频流;数据解码单元,包括音频解码子单元和视频解码子单元;在收到切换指 令后,向切换控制单元回传当前解码的视频帧数,并完成视频解码的重新初始化以及按要切换到的那路音频流的参数重新进行音频解码的初始化;冲艮据 接收的同步播放参数,决定是否将解码的音视频数据传输到数据显示单元进 行同步播放;切换控制单元,用于在收到切换请求后,向数据处理单元和数据解码单 元发送切换指令,然后根据当前解码的视频帧数和保存的索引信息、文件头 信息计算得到重传位置和同步播放参数,将重传位置发送到数据传输单元, 将同步播放参数发送到数据解码单元。
10、 如权利要求9所述的AV同步装置,其特征在于所述切换控制单元得到的同步播放参数为计算出的音频跳过数目 Skip—audio和视频跳过数目Skip—Frame;所迷数据解码单元对重新传输的音视频流开始部分的Skip_audio个字 节数或帧数以及Skip—Frame个视频帧,解码后不传输到数据显示单元,之 后解码的音视频数据再传输到数据显示单元进行同步播放,其中对固定码流 采用字节数,对可变码流采用帧数。
11、 如权利要求IO所述的AV同步装置,其特征在于所述切换控制 单元进一步包括接口子单元,用于完成切换控制单元与其它单元之间的通信;信息提取子单元,用于从数据处理单元获取AVI文件头信息和索引信 息,供运算子单元使用。控制子单元,用于在收到用户接口单元的切换请求后,向数据解码单元、 数据处理单元和数据解码单元发送切换指令,发送到数据处理单元和解码单 元的指令应携带要切换到的音频流标识,从数据解码单元获取当前解码的视 频帧序号传送到运算子单元;并在收到运算子单元的重传位置、音频跳过数 目和视频跳过数目参数后,向数据传输单元发送重传指令,携带重传位置参 数,以及将音频跳过数目和视频跳过数目参数传输到数据解码单元。运算子单元,用于根据当前解码的视频帧序号和AVI文件头信息和索 引信息,计算出重传位置、音频跳过数目Skip—audio和视频跳过数目 Skip—Frame,传送到控制子单元。
12、 如权利要求9所述的AV同步装置,其特征在于 所述数据解码单元在收到切换指令后,继续对緩存的视频数据进行解码,在收到参数Skip一audio和Skip—Frame后,再清空緩存的视频数据,进 行-f见频解码的重新初始化。
13、 如权利要求11所述的AV同步装置,其特征在于所述运算子单 元进一步包括以下部分同步点计算及索引信息提取部分,根据切换音频数据流时正在解码的帧 数A加上设定的帧数B,得到本次切换的视频同步点Vc的帧序号,且根据 解析的音视频数据开始位置和其总大小,确定索引信息起始位置,读取索引 信息并保存;I帧确定部分,从音视频数据索引开始位置累计视频帧的数目,以累计 的视频帧数最接近且小于Vc帧序号的I帧为Vc之前最近的I帧Vj;重传位置计算部分,从索引信息中找到^对应的音频数据块A!,读取 Aj在AVI文件中的偏移位置,以该位置为重传位置;跳过数目计算部分,计算Vc与V!之间的帧数差即视频跳过数目 Skip—Frame,以及播放Vc时要切换到的那路音频流应播过的音频字节数或 帧数Audio—accum—size与^之前累加得到的音频字节数或帧数 Audio—TotalN—^的差值,即音频跳过数目Skip一audio。
14、 如权利要求13所述的AV同步装置,其特征在于所述重传位置计算部分查找^对应的音频数据块A!时,先计算播放Vj 之前要切换到的那路音频流应播过的音频字节数或帧数Audio—TotalN—I,公 式为对固定码流Audio—TotalNj-Vi的帧序号* (视频流时间尺度/视 频流速率指标)* CBR音频字节率对可变码流AudioJTotalN—1 = ^的帧序号* (视频流时间尺度/视 频流速率指标)* VBR音频采样率/1152再从音视频数据的起始位置,逐一累加要切换到的那路音频流数据块的 字节数或帧数,将累加值与上面得到的Audio—TotalN—I进行比较,如果小于 Audio_TotalN—I,再进4亍下一次累力口,力口累力口值等于Audio—TotalN—I,则该 路音频流的下一音频数据块即为V!对应的音频数据块如累加值大于 Audio一TotalN一I,则该音频数据块即为^对应的音频数据块同时记录 A之前累加得到的音频字节数或帧数Audio_TotalN_Ar,最后,从音频数据块Ai对应的索引信息块中找到偏移位置dwOffset, 该位置即为重传位置。所述跳过数目计算部分计算播放Vc时要切换到的那路音频流应播过的 音频字节数或帧数Audio—accum_size时,只需将上述计算Audio—TotalN—I 公式中的V!的帧序号改成Vc的帧序号即可。
15、 如权利要求9所述的AV同步装置,其特征在于所述切换控制单元还用于在收到切换请求后,向所述数据传输单元发送 切换指令;所述数据传输单元收到切换指令后,立即停止对原音视频流的传 输;所述切换控制单元在播放的AVI文件中包含三路及以上的音频流数据 时,发送到数据处理单元和数据解码单元的指令中,需要指示要切换到的是 哪一路音频流。
16、 如权利要求9所述的AV同步装置,其特征在于所述装置应用于嵌入式系统,所述数据解码单元用硬件实现,切换控制 单元、数据传输单元和数据处理单元由CPU执行相应软件来实现。
全文摘要
一种AVI文件播放时切换多路音频流的AV同步方法,应用于包括切换控制单元、数据传输单元、数据处理单元和数据解码单元的系统,在播放AVI文件如用户切换音频流,切换控制单元向数据处理单元和数据解码单元发送切换指令;数据解码单元回传当前解码的视频帧数;切换控制单元根据该视频帧数和索引信息、文件头信息计算得到重传位置和同步播放参数,分别发送到数据传输单元和数据解码单元;数据解码单元完成音视频解码的重新初始化后,对重新传输的音视频数据解码,根据同步播放参数决定是否将解码的音视频数据传输到数据显示单元进行同步播放。本发明方法在播放含有一路Divx视频编码数据、多路音频数据的AVI文件时,切换音频流后可保持AV同步。
文档编号H04N7/26GK101212679SQ200610172268
公开日2008年7月2日 申请日期2006年12月30日 优先权日2006年12月30日
发明者勇 刘, 石学会 申请人:凌阳科技股份有限公司;北京北阳电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1