本发明涉及网络通信
技术领域:
,尤其涉及一种rtp包处理方法、装置及播放终端。
背景技术:
:rtp(real-timetransportprotocol,实时传输协议)是一种网络传输协议,用于在互联网上传输音视频数据。播放终端接收到rtp包后,从rtp包中解析音视频数据进行播放。播放终端按照rtp包的序号顺序解析rtp包。若接收的rtp包不满足顺序要求,则存入缓存队列。播放终端向视频服务器请求重传未接收到的rtp包。若在缓存队列满时仍未接收到重传的rtp包,则播放终端从缓存队列中读取rtp包继续播放,以避免因长时间接收不到重传的rtp包而出现播放卡顿。即,通过限定缓存队列的长度来避免出现播放卡顿。缓存队列的长度通常按照标清节目的播放要求进行设置。当播放终端播放高清或超清节目时,由于数据量较大,rtp包较集中,在等待重传的过程中,缓存队列会很快被填满,从而触发播放终端读取缓存队列中的rtp包继续播放。即,在接收到正常重传的rtp包之前,播放终端已读取后续rtp包播放,导致播放画面出现花屏或马赛克,影响播放质量。技术实现要素:有鉴于此,本发明为了解决现有rtp包处理影响播放质量的问题,提出一种rtp包处理方法、装置及播放终端,用以提升播放质量。为实现上述发明目的,本发明提供了如下技术方案:第一方面,本发明提供一种rtp包处理方法,应用于播放终端,所述播放终端记录有上一次基于rtp包中音视频数据进行播放的第一时间戳,所述方法包括:获取第二时间戳,所述第二时间戳为当前时间;若所述第二时间戳与所述第一时间戳的差值达到预设的第一时间阈值,则从缓存队列中,读取第一rtp包,所述第一rtp包包括第一音视频数据;播放所述第一音视频数据,并利用当前播放时间更新所述第一时间戳。可选的,所述方法还包括:接收视频服务器发送的第二rtp包,所述第二rtp包包括第二音视频数据;判断所述第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号是否连续;若连续,则播放所述第二音视频数据,并利用当前播放时间更新所述第一时间戳;若不连续,则将所述第二rtp包存入所述缓存队列。可选的,所述播放终端还记录有上一次向视频服务器发送重传请求的第三时间戳,所述方法还包括:若所述第二时间戳与所述第三时间戳的差值达到预设的第二时间阈值,则遍历所述缓存队列中的rtp包,确定待重传的rtp包的序号;向所述视频服务器发送重传请求,所述重传请求中包括所述待重传的rtp包的序号。可选的,所述遍历所述缓存队列中的rtp包,确定待重传的rtp包的序号,包括:遍历所述缓存队列中预设数量个rtp包;根据所述预设数量个rtp包的序号,确定待重传的rtp包的序号。第二方面,本发明提供一种rtp包处理装置,应用于播放终端,所述播放终端记录有上一次基于rtp包中音视频数据进行播放的第一时间戳,所述装置包括:获取单元,用于获取第二时间戳,所述第二时间戳为当前时间;读取单元,用于若所述第二时间戳与所述第一时间戳的差值达到预设的第一时间阈值,则从缓存队列中,读取第一rtp包,所述第一rtp包包括第一音视频数据;播放单元,用于播放所述第一音视频数据,并利用当前播放时间更新所述第一时间戳。可选的,所述装置还包括:接收单元,用于接收视频服务器发送的第二rtp包,所述第二rtp包包括第二音视频数据;判断单元,用于判断所述第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号是否连续;所述播放单元,用于若连续,则播放所述第二音视频数据,并利用当前播放时间更新所述第一时间戳;缓存单元,用于若不连续,则将所述第二rtp包存入所述缓存队列。可选的,所述播放终端还记录有上一次向视频服务器发送重传请求的第三时间戳,所述装置还包括:确定单元,用于若所述第二时间戳与所述第三时间戳的差值达到预设的第二时间阈值,则遍历所述缓存队列中的rtp包,确定待重传的rtp包的序号;发送单元,用于向所述视频服务器发送重传请求,所述重传请求中包括所述待重传的rtp包的序号。可选的,所述确定单元,用于遍历所述缓存队列中预设数量个rtp包;根据所述预设数量个rtp包的序号,确定待重传的rtp包的序号。第三方面,本发明提供一种播放终端,所述终端包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述机器可执行指令被所述处理器执行时实现上述rtp包处理方法。第四方面,本发明提供一种机器可读存储介质,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上述rtp包处理方法。由以上描述可以看出,本发明通过预设超时时间(第一时间阈值),在距离上一次播放音视频数据的时间间隔达到超时时间时,播放终端从缓存队列中读取rtp包,基于该rtp包中的音视频数据进行播放,以避免播放画面卡顿。此外,在网络状态正常的情况下,播放终端接收到重传的rtp包的时间会小于超时时间,因此,可保证rtp包的处理顺序,降低播放画面出现花屏或马赛克的概率,提升播放质量。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例示出的一种rtp包处理方法流程图;图2是本发明实施例示出的另一rtp包处理流程;图3是本发明实施例示出的一种rtp包重传处理流程图;图4是本发明实施例示出的一种rtp包处理装置的结构示意图;图5是本发明实施例示出的一种播放终端的硬件结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明实施例。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本发明实施例提供一种rtp包处理方法。该方法通过预设超时时间,在距离上一次播放音视频数据的时间间隔达到超时时间时,播放终端从缓存队列中读取rtp包,基于该rtp包中的音视频数据进行播放,以避免播放画面卡顿。此外,在网络状态正常的情况下,播放终端接收到重传的rtp包的时间会小于超时时间,因此,可保证rtp包的处理顺序,降低播放画面出现花屏或马赛克的概率,提升播放质量。为了使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明实施例执行详细描述:参见图1,为本发明实施例提供的rtp包处理方法流程图。该流程应用于播放终端。比如,机顶盒。本发明实施例中,播放终端记录最近一次(上一次)基于rtp包中音视频数据进行播放的第一时间戳。这里,第一时间戳只是为便于区分而进行的命名,并非用于限定。如图1所示,该流程可包括以下步骤:步骤101,播放终端获取第二时间戳。该第二时间戳为当前时间。可以理解的是,之所以称为第二时间戳,只是为便于区分而进行的命名,并非用于限定。步骤102,若第二时间戳与第一时间戳的差值达到预设的第一时间阈值,则播放终端从缓存队列中,读取第一rtp包。本发明实施例预设第一时间阈值,该第一时间阈值小于或等于相邻两个音视频数据之间的最大播放间隔。若相邻两个音视频数据的播放间隔超过最大播放间隔,则播放画面会出现卡顿。这里,第一时间阈值只是为便于区分而进行的命名,并非用于限定。当第二时间戳与第一时间戳的差值达到第一时间阈值时,为了避免画面卡顿,播放终端从缓存队列中读取第一rtp包。该第一rtp包包括第一音视频数据。这里,可以理解的是,之所以称为第一rtp包、第一音视频数据只是为便于区分而进行的命名,并非用于限定。步骤103,播放终端播放第一音视频数据,并利用当前播放时间更新第一时间戳。即,在画面出现卡顿之前,获取新的音视频数据进行播放,以避免出现卡顿。播放终端每播放一次音视频数据,更新一次第一时间戳。至此,完成图1所示流程。通过图1所示流程可以看出,本发明通过预设超时时间(第一时间阈值),在距离上一次播放音视频数据的时间间隔达到超时时间时,播放终端从缓存队列中读取rtp包,基于该rtp包中的音视频数据进行播放,以避免播放画面卡顿。此外,在网络状态正常的情况下,播放终端接收到重传的rtp包的时间会小于超时时间,因此,可保证rtp包的处理顺序,降低播放画面出现花屏或马赛克的概率,提升播放质量。可选的,作为一个实施例,播放终端还可执行如下rtp包处理流程。参见图2,为本发明实施例示出的另一rtp包处理流程。如图2所示,该流程可包括以下步骤:步骤201,播放终端接收视频服务器发送的第二rtp包。该第二rtp包包括第二音视频数据。这里,第二rtp包、第二音视频数据只是为便于区分而进行的命名,并非用于限定。步骤202,播放终端判断第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号是否连续。若当前接收的第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号连续,说明第二rtp包中的第二音视频数据为按顺序应该播放的音视频数据,则转步骤203;若当前接收的第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号不连续,说明第二rtp包中的第二音视频数据不满足播放顺序要求,转步骤204。步骤203,播放终端播放第二音视频数据,并利用当前播放时间更新第一时间戳。步骤204,播放终端将第二rtp包存入缓存队列。至此,完成图2所示流程。通过图2所示流程,实现对从视频服务器接收到的rtp包的处理。可选的,作为一个实施例,播放终端还可执行如下rtp包重传处理流程。参见图3,为本发明实施例示出的rtp包重传处理流程。如图3所示,该流程可包括以下步骤:步骤301,若第二时间戳与第三时间戳的差值达到预设的第二时间阈值,播放终端遍历缓存队列中的rtp包,确定待重传的rtp包的序号。本发明实施例中,播放终端以预设时间间隔(即第二时间阈值)向视频服务器发送重传请求。可以理解的是,之所以称为第二时间阈值,只是为便于区分而进行的命名,并非用于限定。其中,第三时间戳为播放终端上一次向视频服务器发送重传请求的时间。这里,第三时间戳只是为便于区分而进行的命名,并非用于限定。当第二时间戳与第三时间戳的差值达到第二时间阈值时,播放终端遍历缓存队列中的rtp包,确定此次需要重传的rtp包的序号,即,待重传的rtp包的序号。如前所述,播放终端将未按顺序接收的rtp包存入缓存队列。该缓存队列的大小未作限定。在第一时间阈值内,不同清晰度的节目,比如,标清节目、高清节目、超清节目,占用的缓存空间大小不同。比如,超清节目可能占用了大量的缓存空间,存储了大量的rtp包。若每一次均遍历缓存队列中的所有rtp包,则其处理效率较低。为此,作为一种实施方式,播放终端可预设单次可遍历的rtp包的数量。在每一次遍历时,依次遍历缓存队列中预设数量个rtp包。根据该预设数量个rtp包的序号,确定此次待重传的rtp包的序号。步骤302,播放终端向视频服务器发送重传请求。重传请求中包括待重传的rtp包的序号。视频服务器接收重传请求后,根据待重传的rtp包的序号,重传对应的rtp包。播放终端接收到重传的rtp包后,执行前述步骤201~步骤204。至此,完成图3所示流程。通过图3所示流程,完成重传请求的发送。下面通过具体实施例对本发明实施例提供的方法进行描述:以机顶盒作为播放终端为例。机顶盒向视频服务器请求音视频数据。视频服务器基于机顶盒的请求,依次向机顶盒发送携带音视频数据的50个rtp包,分别记为rtp0~rtp49。每一个rtp包中包括对应的序号,分别为0~49。若机顶盒接收到rtp0,获取该rtp0的序号0,可知该rtp0为第一个rtp包。机顶盒解析rtp0,记录当前解析的rtp包的序号n=0。机顶盒解码并播放rtp0中的音视频数据,记录当前播放时间t=t0。若机顶盒接收到rtp1,获取rtp1的序号1。该序号与记录的上一次解析的rtp包的序号(n=0)连续,因此,机顶盒解析rtp1,并更新解析的rtp包的序号n=1。机顶盒解码并播放rtp1中的音视频数据,并更新当前播放时间t=t1。若机顶盒接收到rtp3,获取rtp3的序号3。该序号与记录的上一次解析的rtp包的序号(n=1)不连续,机顶盒将rtp3存入缓存队列,如表1所示。缓存队列rtp3……表1若机顶盒接收到rtp4,获取rtp4的序号4。该序号与记录的上一次解析的rtp包的序号(n=1)不连续,机顶盒将rtp4存入缓存队列,如表2所示。缓存队列rtp3rtp4……表2以此类推,若机顶盒依次接收到rtp6、rtp8、rtp9、rtp10、rtp11、rtp12,各rtp包的序号均与上一次解析的rtp包的序号(n=1)不连续,机顶盒依次将rtp6、rtp8、rtp9、rtp10、rtp11、rtp12存入缓存队列,如表3所示。缓存队列rtp3rtp4rtp6rtp8rtp9rtp10rtp11rtp12……表3本实施例中,机顶盒以30ms为间隔向视频服务器发送重传请求。若当前时间与上一次发送重传请求的时间间隔达到30ms,则遍历缓存队列。若单次可遍历的rtp包的数量为5个,则遍历位于缓存队列前端的5个rtp包(rtp3、rtp4、rtp6、rtp8、rtp9)。分别获取这5个rtp包的序号为3、4、6、8、9,可知,丢失的rtp包的序号分别为2、5、7。机顶盒向视频服务器发送重传请求,在重传请求中携带序号2、5、7。若机顶盒接收到视频服务器基于重传请求回应的rtp5,获取rtp5的序号5。该序号与记录的上一次解析的rtp包的序号(n=1)不连续。机顶盒将rtp5插入缓存队列,如表4所示。缓存队列rtp3rtp4rtp5rtp6rtp8rtp9rtp10rtp11rtp12……表4若机顶盒接收到视频服务器基于重传请求回应的rtp2,获取rtp2的序号2。该序号与记录的上一次解析的rtp包的序号(n=1)连续,因此,机顶盒解析rtp2,并更新解析的rtp包的序号n=2。机顶盒解码并播放rtp2中的音视频数据,并更新当前播放时间t=t2。机顶盒从缓存队列中读取rtp3,该rtp3的序号3与记录的上一次解析的rtp包的序号(n=2)连续。机顶盒解析rtp3,并更新解析的rtp包的序号n=3。机顶盒解码并播放rtp3中的音视频数据,并更新当前播放时间t=t3。机顶盒删除缓存队列中的rtp3。以此类推,机顶盒从缓存队列中依次读取rtp4~rtp6,并依次播放rtp4~rtp6携带的音视频数据。此时n=6,t=t6。机顶盒删除缓存队列中的rtp4~rtp6。机顶盒从缓存队列中读取rtp8,该rtp8的序号8与记录的上一次解析的rtp包的序号(n=6)不连续,因此,停止解析rtp8。此时,缓存队列如表5所示。缓存队列rtp8rtp9rtp10rtp11rtp12……表5本实施例中,机顶盒预设最大播放间隔为2s。若当前时间与记录的上一次的播放时间(t=t6)相差达到2s,则机顶盒直接读取缓存队列中rtp8。解析rtp8,获取rtp8中的音视频数据进行播放,以避免画面卡顿。至此,完成本实施例的描述。以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述:参见图4,为本发明实施例提供的装置的结构示意图。该装置包括:获取单元401、读取单元402、播放单元403,其中:获取单元401,用于获取第二时间戳,所述第二时间戳为当前时间;读取单元402,用于若所述第二时间戳与所述第一时间戳的差值达到预设的第一时间阈值,则从缓存队列中,读取第一rtp包,所述第一rtp包包括第一音视频数据;播放单元403,用于播放所述第一音视频数据,并利用当前播放时间更新所述第一时间戳。作为一个实施例,所述装置还包括:接收单元,用于接收视频服务器发送的第二rtp包,所述第二rtp包包括第二音视频数据;判断单元,用于判断所述第二rtp包的序号与上一次播放的音视频数据对应的rtp包的序号是否连续;所述播放单元403,用于若连续,则播放所述第二音视频数据,并利用当前播放时间更新所述第一时间戳;缓存单元,用于若不连续,则将所述第二rtp包存入所述缓存队列。作为一个实施例,所述播放终端还记录有上一次向视频服务器发送重传请求的第三时间戳,所述装置还包括:确定单元,用于若所述第二时间戳与所述第三时间戳的差值达到预设的第二时间阈值,则遍历所述缓存队列中的rtp包,确定待重传的rtp包的序号;发送单元,用于向所述视频服务器发送重传请求,所述重传请求中包括所述待重传的rtp包的序号。作为一个实施例,所述确定单元,用于遍历所述缓存队列中预设数量个rtp包;根据所述预设数量个rtp包的序号,确定待重传的rtp包的序号。至此,完成图4所示装置的描述。本发明通过预设超时时间(第一时间阈值),在距离上一次播放音视频数据的时间间隔达到超时时间时,播放终端从缓存队列中读取rtp包,基于该rtp包中的音视频数据进行播放,以避免播放画面卡顿。此外,在网络状态正常的情况下,播放终端接收到重传的rtp包的时间会小于超时时间,因此,可保证rtp包的处理顺序,降低播放画面出现花屏或马赛克的概率,提升播放质量。下面对本发明实施例提供的播放终端进行描述:参见图5,为本发明实施例提供的一种播放终端的硬件结构示意图。该播放终端可包括处理器501、存储有机器可执行指令的机器可读存储介质502。处理器501与机器可读存储介质502可经由系统总线503通信。并且,通过读取并执行机器可读存储介质502中与rtp包处理逻辑对应的机器可执行指令,处理器501可执行上文描述的rtp包处理方法。本文提到的机器可读存储介质502可以是任何电子、磁性、光学或其他物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,所述机器可读存储介质502可以包括如下至少一个种存储介质:易失存储器、非易失性存储器、其它类型存储介质。其中,易失性存储器可为ram(randomaccessmemory,随机存取存储器),非易失性存储器可为闪存、存储驱动器(如硬盘驱动器)、固态硬盘、存储盘(如光盘、dvd等)。本发明实施例还提供一种包括机器可执行指令的机器可读存储介质,例如图5中的机器可读存储介质502,所述机器可执行指令可由播放终端中的处理器501执行,以实现以上描述的rtp包处理方法。至此,完成图5所示终端的描述。以上所述仅为本发明实施例的较佳实施例而已,并不用以限制本发明,凡在本发明实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12