一种时间戳校正方法及装置、存储介质与流程

文档序号:33623092发布日期:2023-03-25 13:31阅读:40来源:国知局
1.本技术涉及互联网
技术领域
:,尤其涉及一种时间戳校正方法及装置、存储介质。
背景技术
::2.随着互联网技术的发展,越来越多的人青睐直播,通过直播买卖商品,或者是与其他的网友进行沟通,也或者是为网友们演绎一些有趣的故事等。3.相关技术中,直播过程中存在基于http的自适应码率流媒体传输协议(httplivestreaming,hls)切片模块对直播流进行切片的情况,由于hls切片模块对直播流进行切片时是按照帧进行切片的,而切片是按照时间戳进行命名的,如此会造成切片重名,即在第一个切片与后得到的第二个切片的时间戳相同的情况下,第二个切片会覆盖掉第一个切片,导致第一个切片的数据丢失,导致直播流播放时会出现卡顿、跳帧的情况,从而降低直播数据播放时的流畅性。技术实现要素:4.为解决上述技术问题,本技术实施例期望提供一种时间戳校正方法及装置、存储介质,能够提高直播数据播放时的流畅性。5.本技术的技术方案是这样实现的:6.本技术实施例提供一种时间戳校正方法,所述时间戳校正方法包括:7.从接收到的音视频数据流中获取当前帧数据和上一帧数据,并确定所述当前帧数据与所述上一帧数据之间的时间间隔;8.根据所述时间间隔确定是否存在时间跳变异常;9.在存在时间跳变异常的情况下,获取时间戳校正值;10.根据所述时间戳校正值调整所述当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完所述音视频数据流中的每一帧存在时间跳变异常的帧数据。11.本技术实施例提供了一种时间戳校正装置,所述装置包括:12.获取单元,用于从接收到的音视频数据流中获取当前帧数据和上一帧数据;在存在时间跳变异常的情况下,获取时间戳校正值;13.确定单元,用于确定所述当前帧数据与所述上一帧数据之间的时间间隔;根据所述时间间隔确定是否存在时间跳变异常;14.调整单元,用于根据所述时间戳校正值调整所述当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完所述音视频数据流中的每一帧存在时间跳变异常的帧数据。15.本技术实施例提供了一种时间戳校正装置,所述装置包括:16.存储器、处理器和通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的时间戳校正的程序,当所述时间戳校正的程序被执行时,通过所述处理器执行上述所述的时间戳校正方法。17.本技术实施例提供了一种存储介质,其上存储有计算机程序,应用于时间戳校正装置,其特征在于,该计算机程序被处理器执行时实现上述所述的时间戳校正方法。18.本技术实施例提供了一种时间戳校正方法及装置、存储介质,时间戳校正方法包括:从接收到的音视频数据流中获取当前帧数据和上一帧数据,并确定当前帧数据与上一帧数据之间的时间间隔;根据时间间隔确定是否存在时间跳变异常;在存在时间跳变异常的情况下,获取时间戳校正值;根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完音视频数据流中的每一帧存在时间跳变异常的帧数据。采用上述方法实现方案,时间戳校正装置通过音视频数据流中获取当前帧数据和上一帧数据之间的时间间隔确定是否存在时间跳变异常,在确定存在跳变异常的情况下,根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,使得调整后的音视频数据流中不存在时间戳相同的帧级切片数据,从而不会造成切片重名的现象,避免直播流播放时会出现卡顿、跳帧的情况,从而提高了直播数据播放时的流畅性。附图说明19.图1为本技术实施例提供的一种时间戳校正流程示意图;20.图2为本技术实施例提供的一种示例性的时间戳校正流程示意图;21.图3为本技术实施例提供的一种时间戳校正装置的组成结构示意图一;22.图4为本技术实施例提供的一种时间戳校正装置的组成结构示意图二。具体实施方式23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。24.本技术实施例提供了一种时间戳校正方法,一种时间戳校正方法应用于时间戳校正装置,图1为本技术实施例提供的一种时间戳校正方法流程图,如图1所示,时间戳校正方法可以包括:25.s101、从接收到的音视频数据流中获取当前帧数据和上一帧数据,并确定当前帧数据与上一帧数据之间的时间间隔。26.本技术实施例提供的一种时间戳校正方法适用于对音视频数据流中的帧数据的时间进行校正的场景下。27.在本技术实施例中,时间戳校正装置可以以各种形式来实施。例如,本技术中描述的时间戳校正装置可以包括诸如手机、照相机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等装置,以及诸如数字tv、台式计算机、服务器等装置。28.在本技术实施例中,音视频数据流可以为实时消息传输协议(realtimemessagingprotocol,rtmp)流,音视频数据流也可以为hls类型的数据流;音视频数据流也可以为其他的包含音频数据和视频数据的数据流;具体的音视频数据流可以根据实际情况进行确定,本技术实施例对此不作限定。29.示例性的,音视频数据流可以为主播直播时生成的数据流。音视频数据流也可以为录制的音视频数据流;具体的音视频数据流可以根据实际情况进行确定,本技术实施例对此不作限定。30.需要说明的是,时间戳校正装置中还设置有时间校正开关(time_jitter开关)和时间戳校正模块,在接收到rtmp流的情况,先检测time_jitter开关是否打开,在确定出时间校正开关处于打开的状态下,则进入时间戳校正模块,利用时间戳校正模块开始执行本技术实施例中的时间戳校正方法。31.在本技术实施例中,当前帧数据为音视频数据流中的任一帧数据。上一帧数据为当前帧对应到的上一帧音视频数据。32.在本技术实施例中,当前帧数据中携带有当前帧数据的时间信息;上一帧数据中携带有上一帧数据的时间信息;利用上一帧数据的时间信息和当前帧数据的时间信息之差,即可得到当前帧数据与上一帧数据之间的时间间隔。33.在本技术实施例中,上一帧数据包括上一帧音频数据和上一帧视频数据;时间戳校正装置确定当前帧数据与上一帧数据之间的时间间隔的过程,包括:时间戳校正装置根据当前音频帧数据和上一帧音频数据,确定音频帧时间间隔;根据当前视频帧数据和上一帧视频数据,确定视频帧时间间隔;将音频帧时间间隔和视频帧时间间隔作为时间间隔。34.需要说明的是,当前帧数据包括当前音频帧数据和当前视频帧数据。时间间隔包括音频帧时间间隔和视频帧时间间隔。35.在本技术实施例中,当前音频帧数据中携带有当前这一帧音频帧的时间信息;上一帧音频数据中携带有上一帧音频帧对应的时间信息;利用当前这一帧音频帧的时间信息和上一帧音频帧对应的时间信息之间的差值,即可得到音频帧时间间隔。36.在本技术实施例中,当前视频帧数据中携带有当前这一帧视频帧的时间信息;上一帧视频数据中携带有上一帧视频帧对应的时间信息;利用当前这一帧视频帧的时间信息与上一帧视频帧对应的时间信息之差,即可得到视频帧时间间隔。37.在本技术实施例中,时间戳校正装置从接收到的音视频数据流中获取当前帧数据和上一帧数据之前,时间戳校正装置还会检测音视频数据流中的相邻数据帧是否存在时间跳变异常;在存在时间跳变异常的情况下,标记存在时间跳变异常的第一个帧数据的状态为时间跳变异常状态;将第一个帧数据作为当前帧数据。38.在本技术实施例中,时间戳校正装置包括hls切片模块,用于在接收到rtmp流的情况下,对rtmp流进行切片处理,得到hls类型的数据流。39.在本技术实施例中,hls切片模块接收到rtmp流后,以开片时间戳(rtmp流中的第一个帧的时间戳)为基础值执行时间戳校正方法,且仅校正当前rtmp流中的帧数据的时间戳。若切片过程中,时间戳发生跳变,则记录跳变状态(标记存在时间跳变异常的第一个帧数据的状态为时间跳变异常状态),然后获取时间戳校正值,根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据;直至调整完rtmp流中当前帧数据之后的每一帧数据。40.在本技术实施例中,在利用hls切片模块新生成切片的情况下,若某一切片(帧数据)发生了时间戳跳变,则在此切片前追加ext-x-discontinuity,表明此切片存在时间戳中断,且新生成的切片按照最新的跳变后的时间戳基准递增;获取当前帧数据和上一帧数据,并确定当前帧数据与上一帧数据之间的时间间隔;根据时间间隔确定是否存在时间跳变异常;在存在时间跳变异常的情况下,获取时间戳校正值;根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完音视频数据流中的每一帧存在时间跳变异常的帧数据。41.示例性的,在以当前系统时间作为切片名的基础上,若此次生成切片(aslice)的系统时间小于等于上一个切片(bslice)的生成时间(文件名),则将此次生成切片(aslice)的名称在上一个切片(bslice)生成名字后递增1。如此,使得瞬间生成若干切片的情况下(即缓存的系统时间不变),后生成的切片的名称(系统时间)至少比上一个切片名称(系统时间)多1,记多个切片不会重名,不会产生音视频帧缺失的现象。在进行时间戳比对,计算切片最大时长时,采用同类型帧进行比对,即音频对比音频,视频对比视频。如此,可以避免音视频帧数据的时间戳单调递增但音视频帧数据之间时间戳差距很大而造成的帧级切片问题。若切片过程中,时间戳发生跳变,则记录跳变状态,并追加时间戳校正值,使当前切片依旧按照跳变前时间戳基准递增,直到生成新的下一个切片。在新生成切片时,若上一个切片发生了时间戳跳变,则在此切片前追加ext-x-discontinuity,标识此切片存在时间戳中断,且新生成的切片按照最新的跳变后的时间戳基准递增。时间戳归零,录制的视频时间戳从0开始,依次递增,时间戳跳变发生后,采用时间戳校正值填充跳变异常。保证在此路流在当前切片服务器上时间戳可以修正为从0开始的流。42.s102、根据时间间隔确定是否存在时间跳变异常。43.在本技术实施例中,时间戳校正装置确定当前帧数据与上一帧数据之间的时间间隔之后,时间戳校正装置就可以根据时间间隔确定是否存在时间跳变异常。44.在本技术实施例中,时间戳校正装置根据时间间隔确定是否存在时间跳变异常的过程,包括:时间戳校正装置在时间间隔为负值的情况下,确定存在时间跳变异常;或者,在时间间隔大于或者等于预设时间间隔的情况下,确定存在时间跳变异常。45.在本技术实施例中,预设时间间隔可以为时间戳校正装置中配置的时间间隔;预设时间间隔也可以为其他设备传输至时间戳校正装置中的时间间隔;具体的时间戳校正装置得到预设时间间隔的方式可以根据实际情况进行确定,本技术实施例对此不作限定。46.需要说明的是,预设时间间隔可以为250毫秒,预设时间间隔也可以为200毫秒;预设时间间隔还可以为其他的时间间隔值;具体的预设时间间隔根据实际情况进行确定,本技术实施例对此不作限定。47.在本技术实施例中,在时间间隔为负值的情况下,即当前帧数据的时间早于上一帧数据的时间。正常情况下,上一帧数据的时间需要早于当前帧数据的时间,故在当前帧数据的时间早于上一帧数据的时间的情况下,就可以认为时间间隔确定是否存在时间跳变异常。48.在本技术实施例中,时间间隔包括音频帧时间间隔和视频帧时间间隔,时间戳校正装置在时间间隔为负值的情况下,确定存在时间跳变异常的过程,包括:在音频帧时间间隔为负值的情况下,确定音频帧数据存在时间跳变异常;或者在视频帧时间间隔为负值的情况下,确定视频帧数据存在时间跳变异常。49.在本技术实施例中,时间戳校正装置也可以从获取音视频数据流中,获取当前帧数据之前的相邻两帧音频帧数据之间的至少一个第二历史时间间隔,根据至少一个第二历史时间间隔确定音频帧数据的第一平均时间间隔,在音频帧时间间隔与第一平均时间间隔之间的差值的绝对值大于或者等于第一预设差值的情况下,则确定音频帧数据存在时间跳变异常。50.在本技术实施例中,时间戳校正装置也可以从获取音视频数据流中,获取当前帧数据之前的相邻两帧视频帧数据之间的至少一个第一历史时间间隔,根据至少一个第一历史时间间隔确定视频帧数据的第二平均时间间隔,在视频帧时间间隔与第二平均时间间隔之间的差值的绝对值大于或者等于第二预设差值的情况下,则确定视频帧数据存在时间跳变异常。51.需要说明的是,预设差值(第一预设差值和第二预设差值)为时间戳校正装置中配置的差值;预设差值也可以为其他设备传输至时间戳校正装置中的差值;具体的时间戳校正装置得到预设差值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。52.还需要说明的是,第一预设差值和第二预设差值可以相同,第一预设差值和第二预设差值也可以不同;具体的可以根据实际情况进行确定,本技术实施例对此不作限定。53.在本技术实施例中,时间戳校正装置在时间间隔大于或者等于预设时间间隔的情况下,确定存在时间跳变异常的过程,包括:在音频帧时间间隔大于或者等于预设音频帧时间间隔的情况下,确定音频帧数据存在时间跳变异常;或者在视频帧时间间隔大于或者等于预设视频帧时间间隔的情况下,确定视频帧数据存在时间跳变异常。54.在本技术实施例中,预设时间间隔包括预设音频帧时间间隔和预设视频帧时间间隔。55.s103、在存在时间跳变异常的情况下,获取时间戳校正值。56.在本技术实施例中,时间戳校正装置根据时间间隔确定是否存在时间跳变异常之后,在确定出存在时间跳变异常的情况下,就获取时间戳校正值。57.在本技术实施例中,时间戳校正值可以为配置的校正值;时间戳校正值也可以为其他设备传输至时间戳校正装置中的值;时间戳校正值还可以为时间戳校正装置通过预设的方式确定出来的值;具体的时间戳校正装置得到时间戳校正值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。58.示例性的,时间戳校正值可以为运维人员配置的经验值。59.在本技术实施例中,时间戳校正装置获取时间戳校正值之前,时间戳校正装置还会获取记录的音视频数据流中的当前帧数据之前的相邻两帧视频帧数据之间的第一历史时间间隔;根据第一历史时间间隔确定视频时间校正值;根据音视频数据流确定音频帧数据的采样率;根据采样率确定音频时间校正值;将视频时间校正值和音频时间校正值作为时间戳校正值。60.需要说明的是,第一历史时间间隔的数量可以为一个;第一历史时间间隔的数量也可以为多个;即第一历史时间间隔的数量为至少一个。61.在本技术实施例中,时间戳校正装置根据至少一个第一历史时间间隔确定视频时间校正值的方式,可以为确定至少一个第一历史时间间隔的平均时间间隔,得到视频时间校正值。62.在本技术实施例中,时间戳校正装置根据采样率确定音频时间校正值的方式,如公式(1)所示:[0063][0064]其中,1000是指时间1000毫秒,即1秒;1024为1秒采样的点数。[0065]需要说明的是,时间戳校正值包括视频时间校正值和音频时间校正值。[0066]在本技术实施例中,时间戳校正装置根据音视频数据流确定音频帧数据的采样率的过程,包括:时间戳校正装置从音视频数据流中获取采样率;或者,时间戳校正装置获取记录的音视频数据流中的当前帧数据之前的相邻两帧音频帧数据之间的第二历史时间间隔;根据第二历史时间间隔确定采样率。[0067]在本技术实施例中,音视频数据流中携带采样率。[0068]需要说明的是,第二历史时间间隔的数量可以为一个;第二历史时间间隔的数量也可以为多个;即第二历史时间间隔的数量为至少一个。[0069]在本技术实施例中,时间戳校正装置根据至少一个第二历史时间间隔确定采样率的方式,可以为确定至少一个第二历史时间间隔的平均时间间隔,得到第一平均时间间隔;然后利用公式(2)确定出采样率:[0070][0071]其中,1000是指时间1000毫秒,即1秒;1024为1秒采样的点数。[0072]在本技术实施例中,也可以通过公式(3)确定出采样率。[0073]发送端的时间戳=第一帧的时间戳+帧数*1000*1024/采样率(3)[0074]s104、根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完音视频数据流中的每一帧存在时间跳变异常的帧数据。[0075]在本技术实施例中,时间戳校正装置获取时间戳校正值之后,时间戳校正装置就可以根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完音视频数据流中的每一帧存在时间跳变异常的帧数据。[0076]在本技术实施例中,当前帧数据包括当前音频帧数据和当前视频帧数据;时间戳校正装置根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据的过程,包括:时间戳校正装置确定当前音频帧数据和当前视频帧数据之间的系统时间间隔;在系统时间间隔大于轨道偏移量阈值、且小于系统时间差阈值的情况下,调整时间戳校正值,得到调整后的时间戳校正值;根据调整后的时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据。[0077]在本技术实施例中,时间戳校正装置确定当前音频帧数据和当前视频帧数据之间的系统时间间隔的方式,可以为确定当前音频帧接收世界协调时间(universaltimecoordinated,utc)的第一时间;确定视频帧接收utc的第二时间;利用第一时间和第二时间的时间差即可得到系统时间间隔。[0078]在本技术实施例中,轨道偏移量阈值可以为时间戳校正装置中配置的阈值;轨道偏移量阈值也可以为其他设备传输至时间戳校正装置中的阈值;具体的时间戳校正装置得到轨道偏移量阈值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。[0079]示例性的,轨道偏移量阈值可以为100毫秒;轨道偏移量阈值也可以为90毫秒;轨道偏移量阈值还可以为其他的时间阈值;具体的轨道偏移量阈值的值可以根据实际情况进行确定,本技术实施例对此不作限定。[0080]在本技术实施例中,系统时间差阈值可以为时间戳校正装置中配置的阈值;系统时间差阈值也可以为其他设备传输至时间戳校正装置中的阈值;具体的时间戳校正装置得到系统时间差阈值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。[0081]示例性的,系统时间差阈值可以为1秒;系统时间差阈值也可以为0.5秒;系统时间差阈值还可以为其他的值;具体的系统时间差阈值的值可以根据实际情况进行确定,本技术实施例对此不作限定。[0082]在本技术实施例中,时间戳校正装置根据调整后的时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据的方式,可以为时间戳校正装置获取上一帧数据的时间信息,确定上一帧数据的时间信息与调整后的时间戳校正值之和,得到新的时间,并将该新的时间作为当前帧数据的实际时间戳,从而得到当前帧数据。[0083]在本技术实施例中,时间戳校正装置包括双轨对齐模块,时间戳校正装置在确定出系统时间间隔大于轨道偏移量阈值、且小于系统时间差阈值的情况下,就利用双轨对齐模块调整时间戳校正值,得到调整后的时间戳校正值。[0084]需要说明的是,若系统时间间隔小于或者等于轨道偏移量阈值,则直接利用时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据。[0085]在本技术实施例中,时间戳校正值包括音频时间校正值和视频时间校正值,时间戳校正装置调整时间戳校正值,得到调整后的时间戳校正值的过程,包括:时间戳校正装置在当前视频帧数据的时间小于当前音频帧数据的时间的情况下,利用第一预设时间修正值调整音频时间校正值,得到调整后的音频时间校正值;获取上一帧数据中的上一帧视频数据对应的上一视频帧校正值;在视频时间校正值小于上一视频帧校正值的情况下,根据上一视频帧校正值和第二预设时间修正值,得到调整后的视频时间校正值;将调整后的音频时间校正值和调整后的视频时间校正值作为调整后的时间戳校正值。[0086]在本技术实施例中,第一预设时间修正值可以为时间戳校正装置中配置的修正值;第一预设时间修正值也可以为其他设备传输至时间戳校正装置中的修正值;具体的时间戳校正装置得到第一预设时间修正值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。[0087]示例性的,第一预设时间修正值可以为-10ms(负10毫秒);第一预设时间修正值也可以为-20ms;具体的第一预设时间修正值可以根据实际情况进行确定,本技术实施例对此不作限定。[0088]在本技术实施例中,第二预设时间修正值可以为时间戳校正装置中配置的修正值;第二预设时间修正值也可以为其他设备传输至时间戳校正装置中的修正值;具体的时间戳校正装置得到第二预设时间修正值的方式可以根据实际情况进行确定,本技术实施例对此不作限定。[0089]示例性的,第二预设时间修正值可以为10ms(10毫秒);第二预设时间修正值也可以为20ms;具体的第二预设时间修正值可以根据实际情况进行确定,本技术实施例对此不作限定。[0090]在本技术实施例中,时间戳校正装置根据上一视频帧校正值和第二预设时间修正值,得到调整后的视频时间校正值的过程,可以为确定上一视频帧校正值和第二预设时间修正值的和,从而得到调整后的视频时间校正值。[0091]需要说明的是,调整后的时间戳校正值包括调整后的音频时间校正值和调整后的视频时间校正值。[0092]在本技术实施例中,在当前视频帧数据的时间大于或者等于当前音频帧数据的时间的情况下,不对音频时间校正值进行调整。在视频时间校正值大于或者等于上一视频帧校正值的情况下,不对上一视频帧校正值进行调整。[0093]在本技术实施例中,时间戳校正装置根据调整后的时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据的过程,包括:时间戳校正装置利用调整后的视频时间校正值调整当前视频帧数据,得到调整后的视频帧数据;利用调整后的音频时间校正值调整当前音频帧数据,得到调整后的音频帧数据;将调整后的视频帧数据和调整后的音频帧数据作为调整后的当前帧数据。[0094]在本技术实施例中,时间戳校正装置利用调整后的视频时间校正值调整当前视频帧数据,得到调整后的视频帧数据的方式,可以为获取上一帧视频数据的时间信息;确定上一帧视频数据的时间信息与调整后的视频时间校正值之和,得到新的视频时间;并将该新的视频时间作为当前视频帧数据的时间戳,得到调整后的视频帧数据。[0095]在本技术实施例中,时间戳校正装置利用调整后的音频时间校正值调整当前音频帧数据,得到调整后的音频帧数据的过程,包括:获取上一帧音频数据的时间信息;确定上一帧音频数据的时间信息与调整后的音频时间校正值之和,得到新的音频时间;并将该新的音频时间作为当前音频帧数据的时间戳,得到调整后的音频帧数据。[0096]获取上一帧数据的时间信息,确定上一帧数据的时间信息与调整后的时间戳校正值之和,得到新的时间,并将该新的时间作为当前帧数据的实际时间戳,从而得到当前帧数据。[0097]示例性的,若为视频帧:在delta(时间间隔)小于0或者delta大于250的情况下(确定存在时间跳变异常),获取记录的音视频数据流中的当前帧数据之前相邻两帧数据之间的至少一个历史时间间隔,根据至少一个历史时间间隔确定平均delta,计算correct_dts=video_frames[preidx].correct_dts+delta;判断当前音视频系统时间是否在1秒以内(系统时间间隔小于系统时间差阈值);若当前音视频时间戳差值offset大于100(系统时间间隔大于轨道偏移量阈值),需要对齐音视频;需要进一步确定offset是否小于0(即当前视频帧数据的时间小于当前音频帧数据的时间),若是,则correct_dts=audio_frames[last].correct_dts–10(即利用第一预设时间修正值调整音频时间校正值,得到调整后的音频时间校正值);再进一步判断视频时间戳是否递增,若不递增,则基于上一个时间戳+10(根据上一视频帧校正值和第二预设时间修正值,得到调整后的视频时间校正值);若offset是否大于或者等于0,则基于上一个时间戳+10。[0098]在本技术实施例中,一种示例性的时间戳校正流程示意图如图2所示:[0099]s1、时间戳校正装置从接收到的音视频数据流中获取当前帧数据和上一帧数据,并根据当前音频帧数据和上一帧音频数据,确定音频帧时间间隔。[0100]需要说明的是,上一帧数据包括上一帧音频数据和上一帧视频数据。[0101]s2、时间戳校正装置根据当前视频帧数据和上一帧视频数据,确定视频帧时间间隔,并将音频帧时间间隔和视频帧时间间隔作为时间间隔。[0102]s3、时间戳校正装置根据时间间隔确定是否存在时间跳变异常。[0103]s4、在存在时间跳变异常的情况下,时间戳校正装置获取记录的音视频数据流中的当前帧数据之前的相邻两帧视频帧数据之间的第一历史时间间隔。[0104]s5、时间戳校正装置根据第一历史时间间隔确定视频时间校正值。[0105]s6、时间戳校正装置根据音视频数据流确定音频帧数据的采样率;根据采样率确定音频时间校正值。[0106]s7、时间戳校正装置将视频时间校正值和音频时间校正值作为时间戳校正值。[0107]s8、时间戳校正装置获取时间戳校正值。[0108]s9、时间戳校正装置确定当前音频帧数据和当前视频帧数据之间的系统时间间隔。[0109]需要说明的是,当前帧数据包括当前音频帧数据和当前视频帧数据。[0110]s10、在系统时间间隔大于轨道偏移量阈值、且小于系统时间差阈值的情况下,时间戳校正装置调整时间戳校正值,得到调整后的时间戳校正值。[0111]s11、根据调整后的时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完音视频数据流中的每一帧存在时间跳变异常的帧数据。[0112]可以理解的是,时间戳校正装置通过音视频数据流中获取当前帧数据和上一帧数据之间的时间间隔确定是否存在时间跳变异常,在确定存在跳变异常的情况下,根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,使得调整后的音视频数据流中不存在时间戳相同的帧级切片数据,从而不会造成切片重名的现象,避免直播流播放时会出现卡顿、跳帧的情况,从而提高了直播数据播放时的流畅性。[0113]基于与上述时间戳校正方法的同一发明构思,本技术实施例提供了一种时间戳校正装置1,对应于一种时间戳校正方法;图3为本技术实施例提供的一种时间戳校正装置的组成结构示意图一,该时间戳校正装置1可以包括:[0114]获取单元11,用于从接收到的音视频数据流中获取当前帧数据和上一帧数据;在存在时间跳变异常的情况下,获取时间戳校正值;[0115]确定单元12,用于确定所述当前帧数据与所述上一帧数据之间的时间间隔;根据所述时间间隔确定是否存在时间跳变异常;[0116]调整单元13,用于根据所述时间戳校正值调整所述当前帧数据的时间戳,得到调整后的当前帧数据,直至调整完所述音视频数据流中的每一帧存在时间跳变异常的帧数据。[0117]在本技术的一些实施例中,所述当前帧数据包括当前音频帧数据和当前视频帧数据;[0118]所述确定单元12,用于确定所述当前音频帧数据和当前视频帧数据之间的系统时间间隔;[0119]所述调整单元13,用于在所述系统时间间隔大于轨道偏移量阈值、且小于系统时间差阈值的情况下,调整所述时间戳校正值,得到调整后的时间戳校正值;根据所述调整后的时间戳校正值调整所述当前帧数据的时间戳,得到调整后的当前帧数据。[0120]在本技术的一些实施例中,所述时间戳校正值包括音频时间校正值和视频时间校正值;[0121]所述调整单元13,用于在所述当前视频帧数据的时间小于所述当前音频帧数据的时间的情况下,利用第一预设时间修正值调整所述音频时间校正值,得到调整后的音频时间校正值;[0122]所述获取单元11,用于获取所述上一帧数据中的上一帧视频数据对应的上一视频帧校正值;在所述视频时间校正值小于所述上一视频帧校正值的情况下,根据所述上一视频帧校正值和第二预设时间修正值,得到调整后的视频时间校正值;将所述调整后的音频时间校正值和所述调整后的视频时间校正值作为所述调整后的时间戳校正值。[0123]在本技术的一些实施例中,所述调整单元13,用于利用所述调整后的视频时间校正值调整所述当前视频帧数据,得到调整后的视频帧数据;利用调整后的音频时间校正值调整所述当前音频帧数据,得到调整后的音频帧数据;将所述调整后的视频帧数据和所述调整后的音频帧数据作为所述调整后的当前帧数据。[0124]在本技术的一些实施例中,所述获取单元11,用于获取记录的所述音视频数据流中的所述当前帧数据之前的相邻两帧视频帧数据之间的第一历史时间间隔;[0125]所述确定单元12,用于根据所述第一历史时间间隔确定视频时间校正值;根据所述音视频数据流确定音频帧数据的采样率;根据所述采样率确定音频时间校正值;将所述视频时间校正值和所述音频时间校正值作为所述时间戳校正值。[0126]在本技术的一些实施例中,所述获取单元11,用于从所述音视频数据流中获取所述采样率;或者,获取记录的所述音视频数据流中的所述当前帧数据之前的相邻两帧音频帧数据之间的第二历史时间间隔;[0127]所述确定单元12,用于根据所述第二历史时间间隔确定所述采样率。[0128]在本技术的一些实施例中,所述确定单元12,用于在所述时间间隔为负值的情况下,确定存在时间跳变异常;在所述时间间隔大于或者等于预设时间间隔的情况下,确定存在时间跳变异常。[0129]在本技术的一些实施例中,所述确定单元12,用于在所述音频帧时间间隔为负值的情况下,确定音频帧数据存在时间跳变异常;在所述视频帧时间间隔为负值的情况下,确定视频帧数据存在时间跳变异常。[0130]在本技术的一些实施例中,时间间隔包括音频帧时间间隔和视频帧时间间隔;[0131]所述确定单元12,用于在所述音频帧时间间隔大于或者等于预设音频帧时间间隔的情况下,确定音频帧数据存在时间跳变异常;在所述视频帧时间间隔大于或者等于预设视频帧时间间隔的情况下,确定视频帧数据存在时间跳变异常。[0132]在本技术的一些实施例中,所述上一帧数据包括上一帧音频数据和上一帧视频数据;[0133]所述确定单元12,用于根据所述当前音频帧数据和所述上一帧音频数据,确定音频帧时间间隔;根据所述当前视频帧数据和所述上一帧视频数据,确定视频帧时间间隔;将所述音频帧时间间隔和所述视频帧时间间隔作为所述时间间隔。[0134]在本技术的一些实施例中,所述装置还包括检测单元和标记单元;[0135]所述检测单元,用于检测所述音视频数据流中的相邻数据帧是否存在时间跳变异常;[0136]所述标记单元,用于在存在时间跳变异常的情况下,标记存在时间跳变异常的第一个帧数据的状态为时间跳变异常状态;将所述第一个帧数据作为所述当前帧数据。[0137]需要说明的是,在实际应用中,上述获取单元11、确定单元12和调整单元13可由时间戳校正装置1上的处理器14实现,具体为cpu(centralprocessingunit,中央处理器)、mpu(microprocessorunit,微处理器)、dsp(digitalsignalprocessing,数字信号处理器)或现场可编程门阵列(fpga,fieldprogrammablegatearray)等实现;上述数据存储可由时间戳校正装置1上的存储器15实现。[0138]本技术实施例还提供了一种时间戳校正装置1,如图4所示,所述时间戳校正装置1包括:处理器14、存储器15和通信总线16,所述存储器15通过所述通信总线16与所述处理器14进行通信,所述存储器15存储所述处理器14可执行的程序,当所述程序被执行时,通过所述处理器14执行如上述所述的时间戳校正方法。[0139]在实际应用中,上述存储器15可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);或者非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);或者上述种类的存储器的组合,并向处理器14提供指令和数据。[0140]本技术实施例提供了一种计算机可读存储介质,其上有计算机程序,所述程序被处理器14执行时实现如上述所述的时间戳校正方法。[0141]可以理解的是,时间戳校正装置通过音视频数据流中获取当前帧数据和上一帧数据之间的时间间隔确定是否存在时间跳变异常,在确定存在跳变异常的情况下,根据时间戳校正值调整当前帧数据的时间戳,得到调整后的当前帧数据,使得调整后的音视频数据流中不存在时间戳相同的帧级切片数据,从而不会造成切片重名的现象,避免直播流播放时会出现卡顿、跳帧的情况,从而提高了直播数据播放时的流畅性。[0142]本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。[0143]本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0144]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0145]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0146]以上所述,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1