发明内容
本发明实施例所要解决的技术问题在于,提供一种缓冲区中媒体流的管理方法及装置,可以减小底层硬件缓冲所造成的误差。
为了解决上述技术问题,本发明实施例提供了一种缓冲区中媒体流的管理方法,包括:
对媒体流进行解复用,得到对应的数据流,所述数据流包括:音频数据流和视频数据流;
获取每一路音频数据流及每一路视频数据流的时长信息;
当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,停止播放所述数据流;
当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放所述数据流。
其中,所述获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息包括:
获取缓冲区内每一路音频数据流及每一路视频数据流的首尾时间戳信息;
通过计算所述获取的首尾时间戳的差值,确定每一路音频数据流及每一路视频数据流的时长。
其中,所述获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息之后还包括:
当至少有一路音频数据流或视频数据流的时长高于预设的上限值时,播放所述数据流;
当每一路音频数据流及每一路视频数据流的时长均低于预设的上限值时,继续缓冲所述数据流。
其中,所述方法还包括:
当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,判断所述媒体流是否结束,若是,则播放完残留在缓冲区的数据流;若否,则停止播放数据流。
其中,所述方法还包括:当接收到用户的播放控制指示时,根据所述播放控制指示在缓冲区定位出用户所需要访问的关键帧,并对所述关键帧进行解码,得到用户所需访问的信息,其中所述播放控制指示包括在缓冲区查看快照指示、快进指示、快退指示中的任一项。
相应地,本发明实施例还提供了一种缓冲区中媒体流的管理装置,包括:
解复用模块,用于对媒体流进行解复用,得到对应地数据流,所述数据流包括:音频数据流和视频数据流;
时长信息获取模块,用于获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息;
第一控制模块,用于当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,停止播放所述数据流;当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放所述数据流。
其中,所述时长信息获取模块包括:
时间戳获取单元,用于获取缓冲区内每一路音频数据流及每一路视频数据流的首尾时间戳信息;
时长确定单元,用于通过计算所述获取的首尾时间戳的差值,确定每一路音频数据流及每一路视频数据流的时长。
其中,所述装置还包括:
第二控制模块,用于当至少有一路音频数据流或视频数据流的时长高于预设的上限值时,播放所述数据流;当每一路音频数据流及每一路视频数据流的时长均低于预设的上限值时,继续缓冲所述数据流。
其中,所述装置还包括:
判断模块,用于当缓冲区内每一路音频数据流及每一路视频数据流的时长均低于下限值时,判断所述媒体流是否结束,若是,则播放完残留在缓冲区的数据流;若否,则停止播放数据流。
其中,所述装置还包括:
关键帧提取模块,用于当接收到用户的播放控制指示时,根据所述播放控制指示在缓冲区定位出用户所需要访问的关键帧,并对所述关键帧进行解码,得到用户所需访问的信息,其中所述播放控制指示包括在缓冲区查看快照指示、快进指示、快退指示中的任一项。
实施本发明实施例,具有如下有益效果:
本发明的实施例将缓冲区内通过解复用得到的每一路的音频数据流和每一路的视频数据流的时长以及预设的下限值进行比较,确定是否播放或者停止播放相应的媒体数据,较大程度地避免由于数据尺寸误差所导致的过早停止播放相应的媒体数据的问题,更好地实现了缓冲区中媒体流的管理,提高了用户的使用体验。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,是本发明的缓冲区中媒体流的管理方法的第一实施例的流程示意图。所述管理方法包括:
步骤S11,对媒体流进行解复用,得到对应数据流,其中数据流包括:音频数据流和视频数据流。
步骤S12,获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS(Presentation Time Stamp,显示时间标签)和DTS(Decoding Time Stamp,解码时间标签)。
音频数据流的PTS和DTS是一样的,所以可以通过计算缓冲区内每一路音频数据流的首尾PTS或DTS的差值,来确定每一路音频数据流的时长。
视频数据流的DTS是连续的(PTS在一些情况下如在有前后参考的B帧时是不连续的,因此视频数据流的首尾时间戳的差值最好是通过DTS来获取),所以可以通过计算缓冲区内每一路视频数据流的首尾DTS的差值,来确定每一路视频数据流的时长。
步骤S13,当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,停止播放数据流。
步骤S14,当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
由于音视频数据流的格式不同,同样时长的音频数据和视频数据,音频数据尺寸小,视频数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据进入了底层硬件缓冲,留在缓冲区内的视频数据的时长远大于音频数据的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才会停止播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对数据流的播放,减少了底层硬件缓冲所带来的误差。
请参照图2,是本发明的缓冲区中媒体流的管理方法的第二实施例的流程示意图。所述方法包括:
步骤S21,对媒体流进行解复用,得到对应数据流,其中,数据流包括:音频数据流和视频数据流。。
步骤S22,获取缓冲区内每一路视频数据流及每一路音频数据流的时长信息。
获取缓冲区内每一路视频数据流及每一路音频数据流的时长信息包括以下两个步骤:
步骤A,获取缓冲区内每一路音频数据流及每一路视频数据流的首尾时间戳信息。
步骤B,通过计算获取的首尾时间戳的差值,确定每一路音频数据流及每一路视频数据流的时长。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。音频数据流的PTS和DTS是一样的,所以可以利用PTS或DTS来计算时长,但视频数据流的PTS在一般情况下是不连续的,所以采用DTS来计算时长。
步骤S23,当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
步骤S24,当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,进入步骤S27;
步骤S25,当至少有一路音频数据流或视频数据流的时长高于预设的上限值时,播放数据流。
步骤S26,当每一路音频数据流及每一路视频数据流的时长均低于预设的上限值时,继续缓冲数据流。
步骤S27,判断原始媒体流是否结束,若判断结果为是,则播放完残留在缓冲区的数据流,若判断结果为否,则缓冲数据流。
当缓冲区确定原始媒体流结束时,无论当前数据流的时长是否低于下限值,都需播放完缓冲区内残留的数据流。
与音视频数据流不同,字幕流是单独处理的,不将其拿来与上限值和下限值作比较,这是因为字幕流是一种特殊的流,并不是像音视频流一样是连续的流,有可能会存在间隔很长时间才出现一个字幕的情况。
由于音视频数据流的格式不同,同样时长的音频数据流和视频数据流,音频数据流数据尺寸小,视频数据流数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据流进入了底层硬件缓冲,留在缓冲区内的视频数据流的时长远大于音频数据流的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才停止播放媒体流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对媒体流的播放。本发明的实施例还将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与上限值进行比较,只要任一路的音频数据流或视频数据流的时长高于上限值时,就会继续播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长高于上限值就能继续对数据流进行播放。
相较于现有技术中:因未考虑底层硬件缓冲,而低估缓冲区内的媒体流的当前数据尺寸,最终导致缓冲区在将媒体流的数据尺寸与下水线进行比较时,过早的停止播放媒体流,以及将媒体流的数据尺寸与上水线进行比较时,过晚的开始播放媒体流而言,本发明的实施例在很大程度上缓解了底层硬件缓冲所带来的影响,减小了误差。
请参照图3,是本发明的缓冲区中媒体流的管理方法的第三实施例流程示意图。所述管理方法包括:
步骤S31,对媒体流进行解复用,得到对应数据流,其中,数据流包括:音频数据流和视频数据流。。
步骤S32,获取缓冲区内每一路视频数据流及每一路音频数据流的时长信息。
获取缓冲区内每一路视频数据流及每一路音频数据流的时长信息包括以下两个步骤:
步骤A,获取缓冲区内每一路音频数据流及每一路视频数据流的首尾时间戳信息。
步骤B,通过计算获取的首尾时间戳的差值,确定每一路音频数据流及每一路视频数据流的时长。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。音频数据流的PTS和DTS是一样的,所以可以利用PTS或DTS来计算时长,但视频数据流的PTS在一些情况下是不连续的,所以采用DTS来计算时长。
步骤S33,当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,进入步骤S38。
步骤S34,当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
步骤S35,当接收到用户的播放控制指示时,根据播放控制指示在缓冲区定位出用户所需要访问的关键帧,并对关键帧进行解码,得到用户所需访问的信息,其中播放控制指示包括在缓冲区查看快照指示、快进指示、快退指示中的任一项。
在缓冲区内实现查看快照,快进快退等操作,都需要获取关键帧信息,但这些关键帧的信息在媒体流中是无法获取的,只能对媒体流进行解复用后才能得到。
由于音视频数据的格式不同,同样时长的音频数据和视频数据,音频数据尺寸小,视频数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据进入了底层硬件缓冲,留在缓冲区内的视频数据的时长远大于音频数据的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才会停止播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对数据流的播放,减少了底层硬件缓冲所带来的误差。
图1至图3对本发明实施例的数字电视搜索节目的方法进行了详细的阐述,其执行的主体可以是诸如机顶盒、数字电视一体机和手机电视等数字电视接收终端。
上述对管理缓冲区的方法的实施例进行了详细阐述后,下面将继续结合附图,对相应于上述方法流程的装置进行说明。
请参照图4,是本发明的缓冲区中媒体流的管理装置的第一实施例的结构示意图。所述管理装置100包括:
解复用模块110,用于在媒体流进入缓冲区前,对媒体流进行解复用,得到数据流,所述数据流包括:音频数据流和视频数据流。
时长信息获取模块120,用于获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。
音频数据流的PTS和DTS是一样的,所以可以通过计算缓冲区内每一路音频数据流的首尾PTS或DTS的差值,来确定每一路音频数据流的时长。
视频数据流的DTS是连续的(PTS在一些情况如在有前后参考的B帧时是不连续的,因此视频数据流的首尾时间戳的差值最好是通过DTS来获取),所以可以通过计算缓冲区内每一路视频数据流的首尾DTS的差值,来确定每一路视频数据流的时长。
第一控制模块130,用于当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,停止播放数据流;当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
由于音视频数据流的格式不同,同样时长的音频数据和视频数据,音频数据尺寸小,视频数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据进入了底层硬件缓冲,留在缓冲区内的视频数据的时长远大于音频数据的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才会停止播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对数据流的播放,减少了底层硬件缓冲所带来的误差。
请参照图5,是图4所示的时长信息获取模块的实施例的结构示意图。所述时长信息获取模块120包括:
时间戳获取单元121,用于获取缓冲区内每一路音频数据流及每一路视频数据流的首尾时间戳信息;
时长确定单元122,用于通过计算获取的首尾时间戳的差值,确定每一路音视流及每一路视频数据流的时长。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。
音频数据流的PTS和DTS是一样的,所以可以通过计算缓冲区内每一路音频数据流的首尾PTS或DTS的差值,来确定每一路音频数据流的时长。
视频数据流的DTS是连续的,所以可以通过计算缓冲区内每一路视频数据流的首尾DTS的差值,来确定每一路视频数据流的时长。
请参照图6,是本发明本发明的缓冲区中媒体流的管理装置的第二实施例的结构示意图。所述管理装置100包括:
解复用模块110,用于在媒体流进入缓冲区前,对媒体流进行解复用,得到数据流,所述数据流包括:音频数据流和视频数据流。
时长信息获取模块120,用于获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。
音频数据流的PTS和DTS是一样的,所以可以通过计算缓冲区内每一路音频数据流的首尾PTS或DTS的差值,来确定每一路音频数据流的时长。
视频数据流的DTS是连续的,所以可以通过计算缓冲区内每一路视频数据流的首尾DTS的差值,来确定每一路视频数据流的时长。
第一控制模块130,用于当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,缓冲数据流;当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
第二控制模块140,用于当至少有一路音频数据流或视频数据流的时长高于预设的上限值时,播放数据流;当每一路音频数据流及每一路视频数据流的时长均低于预设的上限值时,继续缓冲数据流。
判断模块150,用于当缓冲区内每一路音频数据流及每一路视频数据流的时长均低于下限值时,判断所述媒体流是否结束,若是,则播放完残留在缓冲区的数据流;若否,则停止播放数据流。
当缓冲区确定原始媒体流数据结束时,此时无论当前数据流的时长是否低于下限值,都需播放完缓冲区内残留的数据流。
本发明实施例在缓冲区内为每一路视频数据流及每一路音频数据流都维护一个队列,用于保存解复用之后的音视频数据流。
与音视频数据流不同的,字幕流是单独处理的,不将其拿来与上限值和下限值作比较,这是因为字幕流是一种特殊的流,并不是像音视频流一样是连续的流,有可能会存在间隔很长时间才出现一个字幕的情况。
由于音视频数据流的格式不同,同样时长的音频数据流和视频数据流,音频数据流数据尺寸小,视频数据流数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据流进入了底层硬件缓冲,留在缓冲区内的视频数据流的时长远大于音频数据流的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才停止播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对数据流的播放。本发明的实施例还将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与上限值进行比较,只要任一路的音频数据流或视频数据流的时长高于上限值时,就会继续播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长高于上限值就能继续对数据流进行播放。
相较于现有技术中:因未考虑底层硬件缓冲,而低估缓冲区内的媒体流的当前数据尺寸,最终导致缓冲区在将媒体流的数据尺寸与下水线进行比较时,过早的停止播放媒体流,以及将媒体流的数据尺寸与上水线进行比较时,过晚的开始播放媒体流而言,本发明的实施例在很大程度上缓解了底层硬件缓冲所带来的影响,减小了误差。
请参照图7,是本发明本发明的缓冲区中媒体流管理装置的第三实施例的结构示意图。所述管理装置100包括:
解复用模块110,用于在媒体流进入缓冲区前,对媒体流进行解复用,得到数据流,所述数据流包括:音频数据流和视频数据流。
时长信息获取模块120,用于获取缓冲区内的每一路音频数据流及每一路视频数据流的时长信息。
从解复用得到的数据流中可以获取时间戳信息,时间戳包括:PTS和DTS。
音频数据流的PTS和DTS是一样的,所以可以通过计算缓冲区内每一路音频数据流的首尾PTS或DTS的差值,来确定每一路音频数据流的时长。
视频数据流的DTS是连续的(PTS在一些情况下如在有前后参考的B帧时,是不连续的,因此视频数据流的首尾时间戳的差值最好是通过DTS来获取),所以可以通过计算缓冲区内每一路视频数据流的首尾DTS的差值,来确定每一路视频数据流的时长。
第一控制模块130,用于当每一路音频数据流及每一路视频数据流的时长均低于预设的下限值时,缓冲数据流;当至少有一路音频数据流或视频数据流的时长高于预设的下限值时,继续播放数据流。
关键帧提取模块160,用于当接收到用户的播放控制指示时,根据播放控制指示在缓冲区定位出用户所需要访问的关键帧,并对关键帧进行解码,得到用户所需访问的信息,其中播放控制指示包括在缓冲区查看快照指示、快进指示、快退指示中的任一项。
在缓冲区内实现查看快照,快进快退等操作,都需要获取关键帧信息,但这些关键帧的信息在媒体流中是无法获取的,只能对媒体流进行解复用后才能得到。
由于音视频数据的格式不同,同样时长的音频数据和视频数据,音频数据尺寸小,视频数据尺寸大。当媒体流从缓冲区流入到底层硬件缓冲时,通常会出现的情况是,更多的音频数据进入了底层硬件缓冲,留在缓冲区内的视频数据的时长远大于音频数据的时长。
本发明的实施例将缓冲区内每一路的音频数据流和每一路的视频数据流的时长与下限值进行比较,只有当所有的音频数据流和视频数据流的时长均低于下限值时,才会停止播放数据流,这就使得当缓冲区内的音频数据流较少时,只要视频数据流的时长不低于下限值就不会停止对数据流的播放,减少了底层硬件缓冲所带来的误差。
本发明在图4至图7所述的缓冲区管理装置可以由诸如机顶盒、数字电视一体机和手机电视等数字电视接收终端来实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。