对安卓系统硬件视频解码的时间戳进行纠错的方法及系统的利记博彩app
【技术领域】
[0001] 本申请涉及多媒体信息处理技术领域,具体地说,涉及一种对安卓系统硬件视频 解码的时间戳进行纠错的方法及系统。
【背景技术】
[0002] 当前,移动手机操作系统的诞生引发了手机等移动终端的智能化,其中有代表性 的是安卓(Android)系统以及苹果的IOS系统。安卓系统在近几年内得到了迅速发展。
[0003] OMX Codec是安卓系统底层提供的进行视频解码的硬件加速接口。由于市面上的 Android系统的实施除了依赖于Android系统的版本,还依赖于各个手机厂家的实现。现有 技术在采用OMX Codec开发的媒体播放器时,通常对OMX Codec输出的视频显示时间戳不 做处理,直接使用。这就造成了部分Android系统对OMX Codec接口实现有误差,甚至有错 误。其中采用OMX Codec解码视频后输出了错误的视频显示时间戳是最常见的错误,这给 采用OMX Codec开发的媒体播放器带来了极大的适配难度。上述显示时间戳Pts被用来与 音频显示时间戳同步,来保证媒体播放中的音画同步。
[0004] 另外,由于视频编码通常会采用前后帧参考的预测策略,造成部分视频码流中,压 缩帧的解码顺序与显示顺序不一致。而且,由于安卓手机厂商很多,对视频来说,解码输出 有的是按解码序输出,有的是显示序输出。有很大部分厂商的手机无论按解码序输出还是 按显示序输出,其时间戳都是错误的,无法实现正常的音视频同步处理。上述解码顺序是指 压缩帧在解码器中被正确解码的顺序;显示顺序是指压缩帧在被解码器正确解码成无压缩 帧后,无压缩帧正确显示输出的顺序。
[0005] 因此,现有技术的缺陷在于:现有技术在采用OMX Codec开发媒体播放器时,对 OMX Codec输出的视频显示时间戳没有进行错误判断处理,直接与音频显示时间戳同步,进 行媒体内容播放。这造成对OMX Codec输出错误显示时间戳的Android系统上,采用OMX Codec开发的媒体播放器无法正常播放媒体内容。
【发明内容】
[0006] 有鉴于此,本申请所要解决的技术问题是提供了一种对安卓系统硬件视频解码的 时间戳进行纠错的方法及系统,解决现有技术中采用OMX Codec开发媒体播放器时,无法实 现正常的音视频同步处理的问题。
[0007] 为了解决上述技术问题,本申请有如下技术方案:
[0008] -种对安卓系统硬件视频解码的时间戳进行纠错的方法,其特征在于,包括:
[0009] 正确的显示时间戳计算步骤:对每个视频压缩帧,在将其输入到OMX Codec (开放 多媒体加速层编码器)进行视频解码前,对其头信息进行解析,得到每个视频压缩帧对应 的正确的显示时间戳;
[0010] 显示时间戳对应处理步骤:按照解码顺序,将每个视频压缩帧进行顺序编号,并将 计算出的正确的显示时间戳和与其对应的视频压缩帧的顺序号组成数对,记为(Pts n,η), 并将各数对保存到由数对组成的数对列表中;
[0011] 视频解码步骤:将视频压缩帧输入到OMX Codec进行视频解码;
[0012] 显示时间戳替换处理步骤:对OMX Codec输出解码后的无压缩帧进行处理,若为 按照解码序输出,则按照解码序输出时的替换方法用正确的显示时间戳替换由OMX Codec 输出的显示时间戳;若为按照显示序输出,则按照显示序输出时的替换方法用正确的显示 时间戳替换由OMX Codec输出的显示时间戳。
[0013] 优选地,其中,所述显示时间戳替换步骤中,OMX Codec输出解码后的无压缩帧,若 按照解码序输出,则按照解码序输出时的替换方法用正确的显示时间戳替换由OMX Codec 输出的显示时间戳,进一步为:
[0014] 若OMX Codec是按照解码序输出解码后的无压缩帧的,则对于第m个输出的帧,通 过在数对列表中查找顺序号为m的数对(Ptsni, m),得到该第m个输出的帧正确的显示时间 戳Ptsni,替换由OMX Codec输出的显示时间戳,时间戳的数对维持在一个窗口范围内,超出 部分从时间戳数对列表中去掉。
[0015] 优选地,其中,所述显示时间戳替换步骤中,OMX Codec输出解码后的无压缩帧, 若为按照显示序输出,则按照显示序输出时的替换方法用正确的显示时间戳替换由OMX Codec输出的显示时间戳,进一步为:
[0016] 若OMX Codec是按照显示序输出解码后的无压缩帧的,则对于第1个输出的帧, 通过在数对列表中查找显示时间戳最小的数对(/X,,.S 1 ),得到此帧正确的显示时间 戳心,,,替换由OMX Codec输出的显示时间戳,然后将此数对.(/Xy1 )从数对列表中 去掉;对于第2个输出的帧,通过在数对列表中查找剩余数对中显示时间戳最小的数对 (Λλ'.,,λ'::),得到此帧正确的显示时间戳/?? ,替换由OMX Codec输出的显示时间戳,然 后将此数Xt( /?%,? )再从数对列表中去掉;以此类推,对于第η个输出的帧,通过在数对 列表中查找剩余数对中显示时间戳最小的数对(尸Wy\ ),得到此帧正确的显示时间戳 ,替换由OMX Codec输出的显示时间戳,然后将此数对().从数对列表中去掉。
[0017] 为了解决上述技术问题,本申请还有如下技术方案:
[0018] -种安卓系统中对视频解码过程中产生的错误时间戳进行纠正的系统,其特征在 于,包括:正确的显示时间戳计算模块、显示时间戳对应处理模块、视频解码模块、显示时间 戳替换处理模块,其中,
[0019] 所述正确的显示时间戳计算模块,用于对每个视频压缩帧,在将其输入到OMX Codec进行视频解码前,对其头信息进行解析,得到每个视频压缩帧对应的正确的显示时间 戳;
[0020] 所述显示时间戳对应处理模块,用于按照解码顺序,将每个视频压缩帧进行顺序 编号,并将计算出的正确的显示时间戳和与其对应的视频压缩帧的顺序号组成数对,记为 (Pts n,η),并将各数对保存到由数对组成的数对列表中;
[0021 ] 所述视频解码模块,用于将视频压缩帧输入到OMX Codec进行视频解码;
[0022] 所述显示时间戳替换处理模块,用于对OMX Codec输出解码后的无压缩帧进行处 理,若为按照解码序输出,则按照解码序输出时的替换方法用正确的显示时间戳替换由OMX Codec输出的显示时间戳;若为按照显示序输出,则按照显示序输出时的替换方法用正确 的显示时间戳替换由OMX Codec输出的显示时间戳。
[0023] 与现有技术相比,本申请所述的方法和系统,达到了如下效果:
[0024] 第一,本发明中,对视频压缩帧的头信息进行解析,得到每个视频压缩帧对应的正 确的显示时间戳,并能够用正确的显示时间戳替换由OMX Codec输出的显示时间戳,从而能 够实现正常的音视频同步处理,使得采用OMX Codec开发的媒体播放器能够正常播放媒体 内容。
[0025] 第二,本发明由于能够正确获取每帧视频的显示时间戳,因而大大提升了采用OMX Codec开发的视频播放器在各版本的安卓平台上的适配能力。
[0026] 第三,本发明并不受OMX Codec输出解码后的无压缩帧的方式的限制,无论是按照 解码序输出,还是按照显示序输出,均能够将由OMX Codec输出的显示时间戳替换为正确的 显示时间戳,均能实现音视频的同步播放。
【附图说明】
[0027] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0028