一种wmv文件的解码方法和装置的制造方法

文档序号:8514876阅读:397来源:国知局
一种wmv文件的解码方法和装置的制造方法
【技术领域】
[0001]本发明涉及音视频解码技术领域,特别涉及一种WMV文件的解码方法和装置。
【背景技术】
[0002]WMV(Windows Media Video)是微软公司开发的一组数字视频编解码格式的通称,它是Windows Media架构下的一部分。WMV可以使用如MPlayer或者Windows Media Player这样的播放器播放,Windows Media Player只能在微软视窗和Macintosh系统上使用,有许多用于如Linux这样不同平台上的使用FFmpeg实现WMV编解码的第三方播放器。
[0003]视频流通常与Windows Media Aud1音频流组合在一起并且使用扩展名为.wmv或者.asf的Advanced Streaming Format的文件进行封装。WMV通常使用AdvancedStreaming Format (ASF)封装,它也可以使用AVI或者Matroska格式封装。如果是AVI封装的文件结果文件可以是.avi,如果是ASF封装的话则是.wmv或者.asf,如果是MKV封装的话则是.mkvo
[0004]当使用VirtualDub编码器编码和WMV9VCM编解码实现的时候WMV可以存储在AVI文件中。用于Mac的微软公司媒体播放器不支持所有的WMV编码的文件,因为它只支持ASF文件封装,Flip4Mac和QuickTime或者用于MacOSX的MPlayer可以播放更多的文件。
[0005]在现有技术中,由于通常格式的数据包,一个数据包只包括一帧数据,但在对WMV文件进行解码时,数据包无法只解出一个帧,而是一个数据包可能包括多个帧。在WMV文件中,一个数据包可能包含多个视频帧或者音频帧,但是,在采用现有技术中的解码方法得到数据包时,无法得知原WMV文件中数据包中有多少帧,也不知道什么时候解码结束,给实际的解码操作和信息浏览带来了不便。

【发明内容】

[0006]本发明提供一种WMV文件的解码方法和装置,用以解决现有技术中存在的无法获知原WMV文件包含的帧数量及解码进度的问题,实现提高解码效率的目的。
[0007]本发明提供一种WMV文件的解码方法,包括:
[0008]步骤A:获取待解码的WMV文件的数据包描述信息,根据所述数据包描述信息获取数据包的数据总长度BI ;
[0009]步骤B:根据所述数据包描述信息中的数据格式,选择与所述数据包中的数据格式对应的解码方式;
[0010]步骤C:根据所述对应的解码方式对数据包的一个数据帧进行解码,获取解码后的第一个数据帧,计算所述第一个数据帧在数据包中的长度B2 ;
[0011]步骤D:判断所述数据的总长度BI与所述第一个数据帧在数据包中的长度B2之差是否小于或等于零,如果是,则结束解码;
[0012]如果不是,则重复所述步骤C。
[0013]本发明实施例的一些有益效果可以包括:
[0014]该实施例通过获取数据包的描述信息,进而获取数据包中数据的总长度和数据格式,根据数据格式,可以选择与该数据格式相对应的解码方式对WMV文件进行解码,保证了对WMV文件解码的快速和便捷。当解码出第一个数据帧时,将该数据帧在数据包中的长度与数据总长度进行比较,判断其是否大于或等于数据总长度,如果是,即说明数据包中已经全部解码,可以直接结束解码,节省了工作时间,提高了工作效率;如果该数据帧在数据包中的长度小于数据总长度,说明还有数据包未解码,应当继续对数据包进行解码。该方法对每次解码后的数据帧长度与数据总长度进行比较,可以实现在全部数据数据包解码完成时,及时结束解码。
[0015]在一个实施实施例中,在所述步骤C和所述步骤D之间还包括:
[0016]步骤E:监测当前数据包的解码速度,判断所述解码速度是否达到预设的解码速度;
[0017]步骤F:如果所述解码速度小于预设解码速度,则判断当前待解码数据帧的类型;
[0018]步骤G:若所述当前待解码数据帧为非预设类型的数据帧,则丢弃所述当前待解码数据帧。
[0019]该实施例对解码过程中的解码速度与预设的解码速度进行比较,如果达到解码速度,则可以正常继续解码;如果未达到预设的解码速度,则说明当前待解码的数据帧可能不是实际需要的WMV文件的数据帧,进而对当前待解码数据帧的类型进行判断是否属于预设类型的数据帧,如果不是,则直接将该数据帧丢弃,防止在解码过程对不必要数据帧进行解码,造成解码时间的浪费,降低解码效率。
[0020]在一个实施例中,所述步骤E具体包括:
[0021]获取解码状态参数,所述解码状态参数为解码过程中对处理器和内存的资源利用率;
[0022]判断所述资源利用率是否小于预设利用率,如果是则所述解码状态参数的数值不属于预设数值范围;
[0023]如果所述解码状态参数的数值不属于预设数值范围,则所述解码速度小于预设解码速度。
[0024]该实施例主要对如何确定解码速度小于预设解码速度的方法进行了限定,首先通过获取当前正在解码时的解码状态参数,该解码状态参数包含了对处理器和内存的资源利用率。判断该资源利用率是否小于预设的资源利用率,如果是则说明解码状态参数不在预设的数值范围内,进而说明解码速度小于预设的解码速度。因为解码速度本身并无具体参数表示,该实施例对如何判断当前解码速度小于预设解码速度进行了详细说明,为判断解码速度提供了便利,节省了工作时间,提高了工作效率。
[0025]在一个实施例中,所述步骤B具体包括:
[0026]根据所述数据包的描述信息包含的音视频标识位,确定所述数据包中数据为音频数据或视频数据;
[0027]根据确定后的数据包中的音频数据或视频数据,调取与所述音频数据或视频数据对应的解码方式。
[0028]该实施例中,由于WMV文件可能是视频文件也可能是音频文件,因此,提取数据包描述信息中包含的音视频标志位,判断WMV文件数据为视频文件还是音频文件,进而调用与该视频文件或音频文件相对应的解码方式进行解码,防止由于调取的解码方式与数据类型不一致,导致解码时间的浪费或解码过程中的错误解码,提高了解码的效率。
[0029]在一个实施例中,在所述步骤D中结束解码之前还包括:
[0030]对已完成解码的数据包个数A2进行统计,判断所述已完成解码的数据包个数A2是否达到预先获得的数据包总个数Al ;
[0031]如果B1-B2 ^ O, A2 < Al,则将所述全部数据包中未解码的数据包丢弃;
[0032]如果B1-B2彡0,A2 = Al,则结束解码。
[0033]该实施例中,在已解码数据帧长度大于等于数据总长度的同时,还对已经完成解码的数据包个数与数据包总个数进行比较,如果已完成解码的数据包个数小于数据包总个数,则说明后续未解码的数据包均为空,可以直接丢弃,节省了解码时间;如果已完成解码的数据包个数等于数据包总个数,说明已经解码完成,直接结束解码。该方法通过比较已完成解码的数据包个数与数据包总个数,为是否直接结束解码提供了依据,提高了解码效率。
[0034]一种WMV文件的解码装置,包括:
[0035]信息获取模块,用于获取待解码的WMV文件的数据包总个数Al和数据包描述信息,根据所述数据包描述信息获取全部数据包中数据总长度BI,所述描述信息包括数据格式和数据长
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1