CN114268830B - 云导播同步方法、装置、设备及存储介质 - Google Patents
云导播同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114268830B CN114268830B CN202111479409.2A CN202111479409A CN114268830B CN 114268830 B CN114268830 B CN 114268830B CN 202111479409 A CN202111479409 A CN 202111479409A CN 114268830 B CN114268830 B CN 114268830B
- Authority
- CN
- China
- Prior art keywords
- frame
- video
- decoded
- time stamp
- audio
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种云导播同步方法、装置、设备及存储介质,该方法包括:获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。本申请通过对视频帧进行多级缓存,以及对视频帧和音频帧时间的同步判定,保证多个客户端处理同一流媒体时,能够同时兼顾播放秒开和多用户播放画面一致。
Description
技术领域
本申请涉及互联网直播技术领域,尤其涉及一种云导播同步方法、装置、设备及存储介质。
背景技术
目前云导播为了提高用户体验,达到播放秒开的效果,通常在流媒体服务器缓存一个GOP(Group of picture,图像组)数据,这样可以使用户马上可以拉取到I帧(关键帧)进行解码渲染,但是因为缓存GOP的动态变化,会造成不同用户拉同一路流看的画面时间点不一致问题;而如果想让所有用户看到同样的画面,只能关闭缓存,无法马上得到I帧(关键帧),造成用户不能播放秒开。即现有技术中,不同客户端处理同一流媒体时不能同时兼顾播放秒开和多用户播放画面一致。
上述内容仅用于辅助理解本申请的技术方案,并不代表承认上述内容是现有技术。
发明内容
本申请的主要目的在于提供一种云导播同步方法、装置、设备及存储介质,旨在解决现有技术中,不同客户端处理同一流媒体时不能同时兼顾播放秒开和多用户播放画面一致的问题。
为实现上述目的,本申请提供一种云导播同步方法,包括以下步骤:
获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;
将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;
在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
可选地,所述获取所述视频缓存队列中的待解码缓存队列的步骤,包括:
遍历所述视频缓存队列中的视频关键帧,得到时间戳小于第一时间戳且时间戳为最大值的视频关键帧;
以时间戳小于第一时间戳且时间戳为最大值的视频关键帧作为首帧,提取待解码视频缓存队列;
其中,所述第一时间戳是所述音频非缓存队列中首帧的时间戳。
可选地,所述云导播同步方法还包括:
在所述音频非缓存队列中的首帧已解码且所述第一判断时间戳不满足第一预设条件时,对所述待解码视频缓存队列中未解码视频帧以及所述音频非缓存队列中未解码音频帧依次进行解码,并缓存已解码音频帧;
在已解码视频帧的时间戳满足第一预设条件时,缓存已解码视频帧;
在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳;
基于所述标准视频帧时间戳,获取标准音频帧时间戳;
基于已解码视频帧缓存中时间戳大于所述标准视频帧时间戳的视频帧,以及已解码音频帧缓存中时间戳大于所述标准音频帧时间戳的音频帧,进行播放。
可选地,所述第一预设条件由待解码视频缓存队列中首帧视频帧的时长、音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长、已解码首帧音频帧的时间戳以及已解码首帧音频帧的时长确定。
可选地,所述在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤之前,还包括:
记录已解码视频帧缓存中的视频帧帧数满足第二预设条件时的时间;
将其与在已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间进行比较;
若差值小于预设值,则执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤;
若差值大于或等于预设值,则对所述第二预设条件进行修正,并基于修正后的第二预设条件对已解码视频帧缓存中的视频帧帧数重新进行判断,在已解码视频帧缓存中的视频帧帧数满足修正后的第二预设条件时,执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤。
可选地,所述第二预设条件由第一时间、第二时间以及视频帧的帧率确定,其中,所述第一时间为从流媒体端获取音频非缓存队列的时间,所述第二时间为在已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间。
可选地,所述基于所述标准视频帧时间戳,获取标准音频帧时间戳的步骤,包括:
根据标准视频帧时间戳、待解码视频缓存队列中首帧视频帧的时长,音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长以及已解码首帧音频帧的时长,确定标准音频帧时间戳。
此外,为实现上述目的,本申请还提供一种云导播同步装置,包括:
数据获取模块,用于获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;
第一判断时间戳获取模块,用于将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;
播放模块,用于在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
此外,为实现上述目的,本申请还提供一种云导播同步设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的云导播同步程序,所述云导播同步程序配置为实现如上所述的云导播同步方法的步骤。
此外,为实现上述目的,本申请还提供一种存储介质,所述存储介质上存储有云导播同步程序,所述云导播同步程序被处理器执行时实现如上所述的云导播同步方法的步骤。
本申请公开了一种云导播同步方法、装置、设备及存储介质,与现有技术中,不同客户端处理同一流媒体时不能同时兼顾播放秒开和多用户播放画面一致相比,本申请获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。本申请获取所述视频缓存队列中的待解码缓存队列,对视频帧进行多级缓存,并在视频帧以及音频帧均已解码的情况下判断待解码视频缓存队列中首帧的时间戳是否满足第一预设条件,若满足第一预设条件,则说明当前已解码视频帧和已解码音频帧的时间是同步的,通过多级缓存和时间的同步判定,保证多个客户端处理同一流媒体时,能够同时兼顾播放秒开和多用户播放画面一致。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方案涉及的硬件运行环境的云导播同步设备的结构示意图;
图2为本发明云导播同步方法第一实施例的流程示意图;
图3为本发明云导播同步方法第二实施例的流程示意图;
图4为本发明云导播同步装置第一实施例的功能模块示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本申请实施例方案涉及的硬件运行环境的云导播同步设备结构示意图。
如图1所示,该云导播同步设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对云导播同步设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及云导播同步程序。其中,操作系统是管理和控制云导播同步设备硬件和软件资源的程序,支持云导播同步程序以及其它软件或程序的运行。
在图1所示的云导播同步设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本申请云导播同步设备通过处理器1001调用存储器1005中存储的云导播同步程序,并执行本申请实施例提供的云导播同步方法。
本申请实施例提供了一种云导播同步方法,参照图2,图2为本申请云导播同步方法第一实施例的流程示意图。
本实施例中,所述云导播同步方法包括以下步骤:
步骤S10:获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列。
需要说明的是,本实施例方法的执行主体是至少一个客户端,客户端与流媒体端通讯连接。流媒体端中缓存各路摄像机通过RTMP协议(Real Time Messaging Protocol实时消息传输协议)推流上来的流,每一路流里都包含有音频包和视频包,其中视频包中包括若干视频关键帧(视频I帧)和视频差别帧(视频P帧),音频包中包括若干音频帧,每一路流均存储在流媒体缓存队列中。
在本实施例中,从流媒体端获取视频缓存队列的过程如下:客户端发送拉取请求至流媒体端,流媒体端接收拉取请求,根据拉取请求从流媒体缓存队列中选取相对应的一路流,将该流中的所有视频关键帧和视频差别帧按序发送至客户端,由此得到视频缓存队列。需要说明的是,该流中的所有音频帧均跳过不提取,不发送至客户端。
在本实施例中,从流媒体端获取音频非缓存队列的过程如下:客户端发送拉取请求至流媒体端,流媒体端接收拉取请求,根据拉取请求从流媒体缓存队列中选取相对应的一路流,获取该流所对应的最新的未缓存的音频帧(可以为该流所对应的正在流媒体端播放的音频帧),发送至客户端,由此得到音频非缓存队列。
进一步地,获取所述视频缓存队列中的待解码缓存队列的具体步骤,包括:
S101、遍历所述视频缓存队列中的视频关键帧,得到时间戳小于第一时间戳且时间戳为最大值的视频关键帧;
S102、以时间戳小于第一时间戳且时间戳为最大值的视频关键帧作为首帧,提取待解码视频缓存队列;
其中,所述第一时间戳是所述音频非缓存队列中首帧音频帧的时间戳。
需要说明的是,在本实施例中,客户端在得到音频非缓存队列时,记录音频非缓存队列中首帧音频帧封装层的PTS(Presentation Time Stamp,显示时间戳)作为第一时间戳PTSFa。
在本实施例中,遍历视频缓存队列中的视频关键帧,记录每一视频关键帧的时间戳PTS,从中筛选出时间戳PTS小于第一时间戳PTSFa的视频关键帧,在对各个时间戳PTS小于第一时间戳PTSFa的视频关键帧按照时间戳PTS的大小进行排序,将时间戳PTS为最大值且时间戳PTS小于第一时间戳PTSFa的视频关键帧作为首帧视频帧,将首帧视频帧以及首帧视频帧后的所有视频帧发送到视频解码器,得到待解码视频缓存队列。
例如,视频缓存队列中从左至右一共有六帧视频帧,以左起第一帧视频帧作为该视频缓存队列的首帧,则在该视频缓存队列中首帧以及第五帧为视频关键帧,其余的为视频差别帧。将首帧视频帧的时间戳以及第五帧视频帧的时间戳与第一时间戳进行比对,得到的结果是均小于第一时间戳,接着将首帧视频帧的时间戳和第五帧视频帧的时间戳相互比对,得到的结果是首帧视频帧的时间戳小于第五帧视频帧的时间戳,则将第五帧视频帧作为待解码视频缓存队列的首帧,并将第六帧视频帧提取放入到待解码视频缓存队列中。
步骤S20:将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳PTSDv。
步骤S30:在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
其中,第一预设条件由待解码视频缓存队列中首帧视频帧的时长DFv,音频非缓存队列中首帧音频帧的时长DFa、已解码首帧视频帧的时长DDv、已解码首帧音频帧的时间戳PTSDa以及已解码首帧音频帧的时长DDa确定。
具体地,在本实施例中,第一预设条件为:
PTSDv>(PTSDa/DDa)*DFa/DFv*DDv
当第一判断时间戳PTSDv满足第一预设条件时,说明待解码视频缓存队列中的首帧视频帧和音频非缓存队列中的首帧音频帧的时间是同步的,则可以基于解码后的待解码缓存队列和音频非缓存队列进行播放。
与现有技术中,不同客户端处理同一流媒体时不能同时兼顾播放秒开和多用户播放画面一致相比,本实施例获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。本实施例获取所述视频缓存队列中的待解码缓存队列,对视频帧进行多级缓存,并在视频帧以及音频帧均已解码的情况下判断待解码视频缓存队列中首帧的时间戳是否满足第一预设条件,若满足第一预设条件,则说明当前已解码视频帧和已解码音频帧的时间是同步的,通过多级缓存和时间的同步判定,保证多个客户端处理同一流媒体时,能够同时兼顾播放秒开和多用户播放画面一致。
参照图3,图3为本申请云导播同步方法第二实施例的流程示意图。
基于上述第一实施例,在本实施例中,所述云导播同步方法还包括以下步骤:
步骤S40:在所述音频非缓存队列中的首帧已解码且所述第一判断时间戳不满足第一预设条件时,对所述待解码视频缓存队列中未解码视频帧以及所述音频非缓存队列中未解码音频帧依次进行解码,并缓存已解码音频帧。
需要说明的是,在本实施例中,所述待解码视频缓存队列中未解码视频帧指的是经过步骤S10~步骤S30中操作后的待解码视频缓存队列中除去首帧的剩余视频帧,所述音频非缓存队列中未解码音频帧指的是经过步骤S10~步骤S30中操作后的音频非缓存队列中除去首帧的剩余音频帧。
在本实施中,已解码音频帧被缓存在已解码音频帧缓存队列中;已解码视频帧可以被缓存在已解码视频帧缓存队列中,也可以不缓存。
步骤S50:在已解码视频帧的时间戳满足第一预设条件时,缓存已解码视频帧。
需要说明的是,在本实施例中,对所述待解码视频缓存队列中未解码视频依次进行解码,每完成一帧视频帧的解码,则判断该已解码视频帧的时间戳是否满足第一预设条件,若该已解码视频帧的时间戳满足第一预设条件,且在步骤S40中未对已解码视频帧缓存,则将该已解码视频帧以及后续解码得到的已解码视频帧缓存,且被缓存在已解码视频帧缓存队列中;若该已解码视频帧的时间戳满足第一预设条件,且在步骤S40中已解码视频帧被缓存在已解码视频帧缓存队列中,则清空已解码视频帧缓存队列中缓存的已解码视频帧,并将该已解码视频帧以及后续解码得到的已解码视频帧缓存,缓存在已解码视频帧缓存队列中。
步骤S60:在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳。
其中,所述第二预设条件由第一时间、第二时间以及视频帧的帧率确定,其中,所述第一时间为从流媒体端获取音频非缓存队列的时间T1,所述第二时间为已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间T2。
具体地,在本实施例中,第二预设条件为:预设帧数N=(T2-T1)*视频的帧率,当经过步骤S50操作后的已解码视频帧缓存队列中的视频帧的帧数等于预设帧数时,对所述待解码视频缓存队列中当前时刻的首帧视频帧进行解码,得到当前时刻已解码首帧视频帧,并将该当前时刻已解码首帧视频的时间戳作为标准视频帧时间戳PTSDv1。
在本实施例中,若已解码视频帧缓存中的视频帧帧数不满足第二预设条件时,则继续对待解码视频缓存队列中的视频帧进行解码,直至已解码视频帧缓存中的视频帧帧数满足第二预设条件时,然后执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤。
步骤S70:基于所述标准视频帧时间戳,获取标准音频帧时间戳。
进一步的,基于所述标准视频帧时间戳,获取标准音频帧时间戳的具体步骤,包括:
根据标准视频帧时间戳PTSDv1、待解码视频缓存队列中首帧视频帧的时长DFv,音频非缓存队列中首帧音频帧的时长DFa、已解码首帧视频帧的时长DDv以及已解码首帧音频帧的时长DDa,确定标准音频帧时间戳PTSDa1。
在本实施例中,标准音频帧时间戳PTSDa1通过以下计算公式计算得到:
PTSDa1=(PTSDv1/DDv)*DFv/DFa*DDa±预设阈值
在本实施例中,标准音频帧时间戳PTSDa1的计算公式除了上述参数外,还增加了预设阈值这一参数,用于提高标准音频帧时间戳的计算精度。预设阈值可以根据实际需求应用进行设置,在此不作具体限制。
步骤S80:基于已解码视频帧缓存中时间戳大于所述标准视频帧时间戳的视频帧,以及已解码音频帧缓存中时间戳大于所述标准音频帧时间戳的音频帧,进行播放。
需要说明的是,本步骤中基于已解码视频帧缓存中时间戳大于所述标准视频帧时间戳的视频帧,以及已解码音频帧缓存中时间戳大于所述标准音频帧时间戳的音频帧,进行播放,即是从已解码视频帧缓存队列中筛选得到时间戳大于所述标准视频帧时间戳的已解码视频帧,从已解码音频帧缓存队列中筛选得到时间戳大于所述标准音频帧时间戳的已解码音频帧,基于筛选得到的已解码视频帧和已解码音频帧进行播放。
基于本申请上述云导播同步方法第二实施例,提出本申请云导播同步方法第三实施例。
在本实施例中,在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤之前,还包括:
步骤A、记录已解码视频帧缓存中的视频帧帧数满足第二预设条件时的时间T3;
步骤B、将其与在已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间T2进行比较;
步骤C、若差值小于预设值,则执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤;
步骤D、若差值大于或等于预设值,则对所述第二预设条件进行修正,并基于修正后的第二预设条件对已解码视频帧缓存中的视频帧帧数重新进行判断,在已解码视频帧缓存中的视频帧帧数满足修正后的第二预设条件时,执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤。
在本实施例中,存在一种情况,即获取视频缓存队列中待解码缓存队列一段时间后才会得到音频非缓存队列,且在得到音频非缓存队列之前,对待解码缓存队列中的视频帧的解码是一直在行进的。因此,一般情况下,T2与T3的差值是小于预设值。若T2与T3的差值大于预设值,则说明视频帧的帧率与音频帧的帧率差距较大,不利于视频帧与音频帧的同步。
需要说明的是,在本实施例中,预设值可以根据实际需求应用进行设置,在此不作具体限制。对所述第二预设条件进行修正,根据第二预设条件的获取条件可知,对第二预设条件进行修正即对视频帧的帧率进行修正。
本申请实施例还提供了一种云导播同步装置,参照图4,图4为本申请云导播同步装置第一实施例的功能模块示意图。
一种云导播同步装置,包括:
数据获取模块10,获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;
第一判断时间戳获取模块20,用于将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;
播放模块30,用于在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
可选地,所述数据获取模块包括:
第一数据获取单元,所述第一数据获取单元与流媒体端通讯连接,用于获取音频非缓存队列和视频缓存队列;
第二数据获取单元,用于获取所述视频缓存队列中的待解码缓存队列。
可选地,所述第二数据获取单元用于实现:
遍历所述视频缓存队列中的视频关键帧,得到时间戳小于第一时间戳且时间戳为最大值的视频关键帧;
以时间戳小于第一时间戳且时间戳为最大值的视频关键帧作为首帧,提取待解码视频缓存队列;
其中,所述第一时间戳是所述音频非缓存队列中首帧音频帧的时间戳。
可选地,所述第一预设条件由待解码视频缓存队列中首帧视频帧的时长、音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长、已解码首帧音频帧的时间戳以及已解码首帧音频帧的时长确定。
可选地,所述云导播同步装置,还包括:
音频解码模块,用于在所述音频非缓存队列中的首帧已解码且所述第一判断时间戳不满足第一预设条件时,对所述音频非缓存队列中未解码音频帧依次进行解码,并缓存已解码音频帧;
视频解码模块,用于在所述音频非缓存队列中的首帧已解码且所述第一判断时间戳不满足第一预设条件时,对所述待解码视频缓存队列中未解码视频帧依次进行解码;
视频帧缓存模块,用于在已解码视频帧的时间戳满足第一预设条件时,缓存已解码视频帧;
标准视频帧时间戳获取模块,用于在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳;
标准音频帧时间戳获取模块,用于基于所述标准视频帧时间戳,获取标准音频帧时间戳;
所述播放模块还用于实现:基于已解码视频帧缓存中时间戳大于所述标准视频帧时间戳的视频帧,以及已解码音频帧缓存中时间戳大于所述标准音频帧时间戳的音频帧,进行播放。
可选地,所述标准音频帧时间戳获取模块用于实现:
根据标准视频帧时间戳、待解码视频缓存队列中首帧视频帧的时长,音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长以及已解码首帧音频帧的时长,确定标准音频帧时间戳。
可选地,所述第二预设条件由第一时间、第二时间以及视频帧的帧率确定,其中,所述第一时间为获取音频非缓存队列的时间,所述第二时间为已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间。
可选地,所述所述云导播同步装置,还包括:
判断修正模块,所述判断修正模块用于实现:
记录已解码视频帧缓存中的视频帧帧数满足第二预设条件时的时间;
将其与在已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间进行比较;
若差值小于预设值,则由所述标准视频帧时间戳获取模块执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤;
若差值大于或等于预设值,则对所述第二预设条件进行修正,并基于修正后的第二预设条件对已解码视频帧缓存中的视频帧帧数重新进行判断,由所述标准视频帧时间戳获取模块在已解码视频帧缓存中的视频帧帧数满足修正后的第二预设条件时,执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤。
本申请云导播同步装置具体实施方式与上述云导播同步方法各实施例基本相同,在此不再赘述。
本申请实施例还提提供了一种存储介质,所述存储介质上存储有云导播同步程序,所述云导播同步程序被处理器执行时实现如上所述的云导播同步方法的步骤。
本申请存储介质具体实施方式与上述云导播同步方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种云导播同步方法,其特征在于,所述云导播同步方法包括以下步骤:
获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;
所述获取所述视频缓存队列中的待解码缓存队列的步骤,包括:
遍历所述视频缓存队列中的视频关键帧,得到时间戳小于第一时间戳且时间戳为最大值的视频关键帧;
以时间戳小于第一时间戳且时间戳为最大值的视频关键帧作为首帧,提取待解码视频缓存队列;
其中,所述第一时间戳是所述音频非缓存队列中首帧的时间戳;
将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;
在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
2.如权利要求1所述的云导播同步方法,其特征在于,所述云导播同步方法还包括:
在所述音频非缓存队列中的首帧已解码且所述第一判断时间戳不满足第一预设条件时,对所述待解码视频缓存队列中未解码视频帧以及所述音频非缓存队列中未解码音频帧依次进行解码,并缓存已解码音频帧;
在已解码视频帧的时间戳满足第一预设条件时,缓存已解码视频帧;
在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳;
基于所述标准视频帧时间戳,获取标准音频帧时间戳;
基于已解码视频帧缓存中时间戳大于所述标准视频帧时间戳的视频帧,以及已解码音频帧缓存中时间戳大于所述标准音频帧时间戳的音频帧,进行播放。
3.如权利要求1或2所述的云导播同步方法,其特征在于,所述第一预设条件由待解码视频缓存队列中首帧视频帧的时长、音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长、已解码首帧音频帧的时间戳以及已解码首帧音频帧的时长确定。
4.如权利要求2所述的云导播同步方法,其特征在于,所述在已解码视频帧缓存中的视频帧帧数满足第二预设条件时,对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤之前,还包括:
记录已解码视频帧缓存中的视频帧帧数满足第二预设条件时的时间;
将其与在已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间进行比较;
若差值小于预设值,则执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤;
若差值大于或等于预设值,则对所述第二预设条件进行修正,并基于修正后的第二预设条件对已解码视频帧缓存中的视频帧帧数重新进行判断,在已解码视频帧缓存中的视频帧帧数满足修正后的第二预设条件时,执行对所述待解码视频缓存队列中当前时刻的首帧进行解码,将当前时刻已解码首帧视频帧的时间戳作为标准视频帧时间戳的步骤。
5.如权利要求2或4所述的云导播同步方法,其特征在于,所述第二预设条件由第一时间、第二时间以及视频帧的帧率确定,其中,所述第一时间为获取音频非缓存队列的时间,所述第二时间为已解码视频帧的时间戳满足第一预设条件时,所记录的该帧视频帧解码时间。
6.如权利要求2所述的云导播同步方法,其特征在于,所述基于所述标准视频帧时间戳,获取标准音频帧时间戳的步骤,包括:
根据标准视频帧时间戳、待解码视频缓存队列中首帧视频帧的时长,音频非缓存队列中首帧音频帧的时长、已解码首帧视频帧的时长以及已解码首帧音频帧的时长,确定标准音频帧时间戳。
7.一种云导播同步装置,其特征在于,所述装置包括:
数据获取模块,用于获取音频非缓存队列和视频缓存队列,并获取所述视频缓存队列中的待解码缓存队列;
所述数据获取模块,具体用于遍历所述视频缓存队列中的视频关键帧,得到时间戳小于第一时间戳且时间戳为最大值的视频关键帧;
以时间戳小于第一时间戳且时间戳为最大值的视频关键帧作为首帧,提取待解码视频缓存队列;
其中,所述第一时间戳是所述音频非缓存队列中首帧的时间戳;
第一判断时间戳获取模块,用于将所述待解码视频缓存队列中首帧的时间戳作为第一判断时间戳;
播放模块,用于在所述音频非缓存队列中首帧已解码且所述第一判断时间戳满足第一预设条件时,基于解码后的待解码缓存队列和音频非缓存队列进行播放。
8.一种云导播同步设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的云导播同步程序,所述云导播同步程序配置为实现如权利要求1至6中任一项所述的云导播同步方法的步骤。
9.一种存储介质,其特征在于,所述存储介质上存储有云导播同步程序,所述云导播同步程序被处理器执行时实现如权利要求1至6任一项所述的云导播同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479409.2A CN114268830B (zh) | 2021-12-06 | 2021-12-06 | 云导播同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479409.2A CN114268830B (zh) | 2021-12-06 | 2021-12-06 | 云导播同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114268830A CN114268830A (zh) | 2022-04-01 |
CN114268830B true CN114268830B (zh) | 2024-05-24 |
Family
ID=80826360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111479409.2A Active CN114268830B (zh) | 2021-12-06 | 2021-12-06 | 云导播同步方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268830B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116170612A (zh) * | 2022-12-08 | 2023-05-26 | 网宿科技股份有限公司 | 一种直播的实现方法、边缘节点、电子设备及存储介质 |
CN117376609B (zh) * | 2023-09-21 | 2024-07-26 | 北京国际云转播科技有限公司 | 视频同步方法及装置、视频播放设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011038565A1 (zh) * | 2009-09-29 | 2011-04-07 | 深圳市融创天下科技发展有限公司 | 一种流媒体音视频同步方法及系统 |
WO2013082965A1 (zh) * | 2011-12-05 | 2013-06-13 | 优视科技有限公司 | 流媒体数据处理方法及装置、流媒体数据再现设备 |
WO2016015670A1 (zh) * | 2014-08-01 | 2016-02-04 | 广州金山网络科技有限公司 | 一种音频流解码方法及装置 |
WO2017067489A1 (zh) * | 2015-10-22 | 2017-04-27 | 深圳市中兴微电子技术有限公司 | 机顶盒音视频同步的方法及装置、存储介质 |
CN106937137A (zh) * | 2015-12-30 | 2017-07-07 | 惠州市伟乐科技股份有限公司 | 一种多通道数字音频编码音视频同步的方法 |
CN107801080A (zh) * | 2017-11-10 | 2018-03-13 | 普联技术有限公司 | 一种音视频同步方法、装置及设备 |
CN111147765A (zh) * | 2018-11-02 | 2020-05-12 | 广州灵派科技有限公司 | 一种导播视频同步播放方法和系统以及视频导播设备 |
CN112351294A (zh) * | 2020-10-27 | 2021-02-09 | 广州赞赏信息科技有限公司 | 一种云导播多机位间帧同步方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101535827B1 (ko) * | 2008-12-05 | 2015-07-27 | 삼성전자주식회사 | 무선 통신 네트워크에서 오디오 및 비디오 동기화 장치 및 방법 |
US10250937B2 (en) * | 2014-05-30 | 2019-04-02 | Apple Inc. | Item to item transitions |
-
2021
- 2021-12-06 CN CN202111479409.2A patent/CN114268830B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011038565A1 (zh) * | 2009-09-29 | 2011-04-07 | 深圳市融创天下科技发展有限公司 | 一种流媒体音视频同步方法及系统 |
WO2013082965A1 (zh) * | 2011-12-05 | 2013-06-13 | 优视科技有限公司 | 流媒体数据处理方法及装置、流媒体数据再现设备 |
WO2016015670A1 (zh) * | 2014-08-01 | 2016-02-04 | 广州金山网络科技有限公司 | 一种音频流解码方法及装置 |
WO2017067489A1 (zh) * | 2015-10-22 | 2017-04-27 | 深圳市中兴微电子技术有限公司 | 机顶盒音视频同步的方法及装置、存储介质 |
CN106937137A (zh) * | 2015-12-30 | 2017-07-07 | 惠州市伟乐科技股份有限公司 | 一种多通道数字音频编码音视频同步的方法 |
CN107801080A (zh) * | 2017-11-10 | 2018-03-13 | 普联技术有限公司 | 一种音视频同步方法、装置及设备 |
CN111147765A (zh) * | 2018-11-02 | 2020-05-12 | 广州灵派科技有限公司 | 一种导播视频同步播放方法和系统以及视频导播设备 |
CN112351294A (zh) * | 2020-10-27 | 2021-02-09 | 广州赞赏信息科技有限公司 | 一种云导播多机位间帧同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114268830A (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230256345A1 (en) | Game data processing method and apparatus, and storage medium | |
US11706272B2 (en) | Adaptive streaming with early client indication | |
CN114268830B (zh) | 云导播同步方法、装置、设备及存储介质 | |
CN106686438B (zh) | 一种跨设备的音频图像同步播放的方法、装置及系统 | |
EP2685742A2 (en) | Method, device and system for transmitting and processing media content | |
WO2019062050A1 (zh) | 直播管控方法、装置及电子设备 | |
EP3734927A1 (en) | Content service implementation method and device, and content delivery network node | |
US20180192090A1 (en) | Method of implementing audio and video live broadcast and server | |
CN111447455A (zh) | 直播视频流回放处理方法、装置及计算设备 | |
CN106791994B (zh) | 一种低延时快速开播方法及装置 | |
US9680904B2 (en) | Adaptive buffers for media players | |
EP3142381A1 (en) | Network video playing method and device | |
CN108696771B (zh) | 一种视频播放方法及装置 | |
CN113411643B (zh) | 一种视频质量优化方法、系统、电子设备及存储介质 | |
CN113891175B (zh) | 直播推流方法、装置及系统 | |
CN107690093B (zh) | 一种视频播放方法及装置 | |
CN110582012A (zh) | 视频切换方法、视频处理方法、装置及存储介质 | |
US20150095447A1 (en) | Serving method of cache server, cache server, and system | |
CN111436009A (zh) | 一种实时视频流传送、显示方法以及传送和播放系统 | |
WO2017071428A1 (zh) | 快进快退的处理方法及终端 | |
CN111343503A (zh) | 视频的转码方法、装置、电子设备及存储介质 | |
CN107707938B (zh) | 降低直播视频播放延迟的方法及装置 | |
CN104471947A (zh) | 内容发送装置、内容再现装置、内容发布系统、内容发送装置的控制方法、内容再现装置的控制方法、数据结构、控制程序以及记录介质 | |
CN115086714B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116962179A (zh) | 网络传输优化方法、装置、计算机可读介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |