CN115334322B - 视频帧同步方法、终端、服务器、电子设备及存储介质 - Google Patents

视频帧同步方法、终端、服务器、电子设备及存储介质 Download PDF

Info

Publication number
CN115334322B
CN115334322B CN202211264088.9A CN202211264088A CN115334322B CN 115334322 B CN115334322 B CN 115334322B CN 202211264088 A CN202211264088 A CN 202211264088A CN 115334322 B CN115334322 B CN 115334322B
Authority
CN
China
Prior art keywords
video
frame
synchronized
time
video frame
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
Application number
CN202211264088.9A
Other languages
English (en)
Other versions
CN115334322A (zh
Inventor
高一君
曹瑞鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211264088.9A priority Critical patent/CN115334322B/zh
Publication of CN115334322A publication Critical patent/CN115334322A/zh
Application granted granted Critical
Publication of CN115334322B publication Critical patent/CN115334322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/242Synchronization processes, e.g. processing of PCR [Program Clock References]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本申请实施例提供了一种视频帧同步方法、终端、服务器、电子设备及计算机可读存储介质,涉及图像处理技术领域。该方法包括:接收各终端分别发送的视频流,视频流包括多个待同步视频帧,待同步视频帧中携带帧发送时刻,帧发送时刻为第一本地发送时刻或者公共发送时刻;根据各个终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧。本申请实施例可达到十毫秒级别的实时性,适用于对实时性要求较高的场景。

Description

视频帧同步方法、终端、服务器、电子设备及存储介质
技术领域
本申请涉及图像处理技术领域,具体而言,本申请涉及一种视频帧同步方法、终端、服务器、电子设备及存储介质。
背景技术
如图1所示,多视角视频是由多个图像采集设备对一个对象进行拍摄生成的视频,每个图像采集设备处于不同的视点(viewpoint),通过将每个图像采集设备采集的视频帧进行同步和编码,即可生成一帧多视角视频帧。
传统的视频同步方案一般都是利用专业相机完成采集,因为相机可以利用物理连线后通过同步脉冲的方式实现时间同步,保证相机在几乎同一时刻开始拍摄(误差在毫秒级以下)。
但专业相机方案造价昂贵且搭建复杂,并且所有相机只能在同一地方,不能做到远程同步,现有基于手机同步的方案只能做到百毫秒级或秒级同步,这种同步结果不能直接用在远程同屏体感游戏中。
发明内容
本申请实施例提供了一种视频帧同步方法、终端、服务器、电子设备、计算机可读存储介质及计算机程序产品,可以解决现有技术的上述问题。所述技术方案如下:
根据本申请实施例的第一个方面,提供了一种视频帧同步方法,应用于服务器,该方法包括:
接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间时延对第一本地发送时刻进行更新获得的,本地发送时刻为基于相应终端的本地时钟确定的发送时刻;
根据各终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧;
其中,所述时延为相应终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
作为一种可选的实施方式,接收各所述终端发送的视频流,之前还包括:
向各终端发送对应的时延,并指示各终端根据相应的时延对本地时钟确定的时刻进行更新;
相应的,所述待同步视频帧中携带的帧发送时刻为公共发送时刻。
作为一种可选的实施方式,接收各终端分别发送的视频流,包括:
根据每个终端的视频流中待同步视频帧携带的帧发送时刻的先后顺序,将待同步视频帧依次存储至相应终端对应的消费队列中;
所述从所有视频流中确定至少一个目标视频帧簇,包括:
将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧;
若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇;
若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
作为一种可选的实施方式,待同步视频帧还携带终端标识;
将待同步视频帧依次存储至相应终端对应的消费队列中,包括:
按照各待同步视频帧携带的帧发送时刻的先后顺序,依次将各待同步视频帧携带的帧发送时刻和终端标识存储在共享内存中;
确定所述共享内存中同一帧发送时刻对应的终端标识的数目,根据首次满足预设条件的帧发送时刻确定基准时刻,所述预设条件为对应的终端标识的数目等于所述终端的总数目;
将每个终端的视频流中所述基准时刻以后的帧发送时刻对应的待同步视频帧,依次存储至相应终端对应的消费队列。
作为一种可选的实施方式,待同步视频帧中携带的帧发送时刻为第一本地发送时刻;
所述根据各终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,包括:
从所有视频流中的最早帧发送时刻的待同步视频帧进行图像匹配,确定首个目标视频帧簇;
将首个目标视频帧簇中的待同步视频帧作为基准视频帧,根据各终端对应的时延以及各视频流中的待同步视频帧中携带的帧发送时刻,从各视频流中的基准视频帧之后的待同步视频帧中确定所述首个目标视频帧簇之后的目标视频帧簇。
作为一种可选的实施方式,根据各终端对应的时延以及各视频流中的待同步视频帧中携带的帧发送时刻,从各视频流中的基准视频帧之后的待同步视频帧中确定所述首个目标视频帧簇之后的目标视频帧簇,包括:
对于各视频流中位于相应的基准视频帧之后的待同步视频帧,根据所述待同步视频帧携带的帧发送时刻以及相应终端对应的时延,获得所述待同步视频帧的公共发送时刻;
对于每个公共发送时刻,若各视频流中均包括该公共发送时刻的待同步视频帧,则将该公共发送时刻的所有待同步视频帧作为一个目标视频帧簇。
作为一种可选的实施方式,还包括:
当获得首个目标视频帧簇时,指示各终端停止在发送的待同步视频帧中携带帧发送时刻;
从所有视频流中确定至少一个目标视频帧簇,包括获取除所述首个目标视频帧簇之外的目标视频帧簇的步骤:
将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于每个视频流,以相应的基准视频帧为起点,通过预设的滑动窗口采集多个待同步视频帧作为一组视频帧序列,将所述视频帧序列输入预先训练的帧同步识别模型,获得所述帧同步识别模型输出的所述视频帧序列中每个待同步视频帧的识别结果,所述识别结果用于表征相应视频帧与前一个视频帧之间丢帧的帧数;
根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,
确定所述首个目标视频帧簇之后的目标视频帧簇。
作为一种可选的实施方式,根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述首个目标视频帧簇之后的目标视频帧簇,包括:
根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述待同步视频帧相对于所述基准视频帧的帧间隔;
对于每个帧间隔,若各视频流中均包括该帧间隔的待同步视频帧,则将该帧间隔的所有待同步视频帧作为一个目标视频帧簇。
根据本申请实施例的第二个方面,提供了一种视频帧同步方法,应用于待同步的多个终端中的任意一个终端,该方法包括:
发送视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于所述终端与所述服务器间时延对第一本地发送时刻进行更新获得的,本地发送时刻为基于所述终端的本地时钟确定的发送时刻;
其中,所述时延为所述终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
作为一种可选的实施方式,当所述待同步视频帧中携带的帧发送时刻为公共发送时刻时,所述发送视频流,之前还包括:
接收所述服务器返回的所述时延,根据所述时延对本地时钟确定的时刻进行更新。
根据本申请实施例的第三个方面,提供了一种服务器,该服务器包括:
视频流接收模块,用于接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间时延对第一本地发送时刻进行更新获得的,本地发送时刻为基于相应终端的本地时钟确定的发送时刻;
目标视频组簇模块,用于根据各终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧;
其中,所述时延为相应终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
根据本申请实施例的第四个方面,提供了一种终端,该终端包括:
视频流发送模块,用于发送视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于所述终端与服务器间的时延,对所述第一本地发送时刻进行更新获得的,本地发送时刻为基于所述终端的本地时钟确定的发送时刻;
其中,所述时延为所述终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
根据本申请实施例的第五个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行所述计算机程序以实现上述的视频帧同步方法的步骤。
根据本申请实施例的第六个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的视频帧同步方法的步骤。
根据本申请实施例的第七个方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的视频帧同步方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
通过确定待同步的各终端与所述服务器的时延,该时延是终端发送时延参考信息携带的第二本地发送时刻与所述服务器接收到所述时延参考信息的接收时刻的时间间隔,通过获取时延,为实现各终端之间的时钟误差缩小在可接受的范围内奠定基础,并且,服务器还接收各终端发送的视频流,视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,该帧发送时刻可以是第一本地发送时刻也可以是公共发送时刻,根据各个终端对应的时延或者待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,本申请实施例确定目标视频帧簇的方案实现简单,不需要对各终端的性能和距离做限定,并且整个方案围绕终端和服务器间的时延实现,基于时延实现各终端之间的时钟对齐,可达到十毫秒级别的实时性,适用于对实时性要求较高的场景。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的多视角视频输入系统的示例图;
图2为本申请实施例提供的一种视频帧同步方法的流程示意图;
图3为本申请实施例提供的一种从消费队列中确定目标视频帧簇的示意图;
图4为本申请再一个实施例的视频帧同步方法的流程示意图;
图5为本申请实施例提供的一种帧对齐流程的示意图;
图6为本申请实施例提供的一种视频帧同步方法的流程示意图;
图7为本申请再一个实施例的视频帧同步方法的流程示意图;
图8为本申请另一个实施例的视频帧同步方法的流程示意图;
图9为本申请再一个实施例的视频帧同步方法的流程示意图;
图10为本申请实施例终端侧的视频帧同步方法的流程示意图;
图11为本申请实施例提供的一种服务器的结构示意图;
图12为本申请实施例提供的一种终端的结构示意图;
图13为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
传统的视频同步方案一般都是利用专业相机完成采集,因为相机可以利用物理连线后进行脉冲同步,从而保证相机在几乎同一时刻开始拍摄(误差在毫秒级以下)。但专业相机方案造价昂贵且搭建复杂,并且所有相机只能在同一地方,不能做到远程同步。
现有基于手机的同步方案没有考虑时间戳的准确性,实际上手机相机模组捕捉画面的真实时刻与对应图像被服务器获取到的时间间隔在毫秒级是无法忽略的,而通常这部分时间在不同手机型号,又或是同一型号手机不同性能状态下的差值也不可忽略,同时不同手机虽然在秒级的时间是同步,但是因为受限于手机时钟的计时器成本和供电稳定性,不同手机在同一物理时间下的时间刻度值也不一样,甚至可以有秒级的误差。
现有基于手机同步的方案没有从图像真实时间角度出发,基本只能做到百毫秒级或秒级同步,这种同步结果只适用于音视频通话场景,不能直接用在游戏场景(例如远程同屏体感游戏)中。
本申请提供的视频帧同步方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例中提供了一种视频帧同步方法,应用于服务器,如图2所示,该方法包括:
S101、接收各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间的时延,对第一本地发送时刻进行更新获得的。
需要说明的是,本申请实施例的服务器可以在接收视频流之前确定与相应终端间的时延,也可以在根据接收视频流的过程中确定时延,该时延为相应终端发送时延参考信息携带的第二本地发送时刻与所述服务器接收到所述时延参考信息的接收时刻的时间间隔。
本申请实施例对于时延参考信息的具体类型不作限定,例如可以是报文,报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,长度不限且可变。
在一个实施例中,该报文具体为传输控制协议(TCP,Transmission ControlProtocol)报文,终端和服务器之间通过相互发送TCP报文建立TCP通讯,在建立TCP通讯后,终端即可向服务器发送视频帧。
本申请实施例的报文中携带了发送报文的第二本地发送时刻,本地发送时刻为基于相应终端的本地时钟确定的发送时刻。由于不同终端性能存在差异,因此不同终端即使是同一真实时刻发送的时延参考信息,其中包括的第二本地发送时刻也存在差异。
本申请实施例的接收时刻为基于服务器的本地时钟确定的时刻。该时延主要包括两个部分:单程的网络链路时间(网络链路时间即数据从网络的发送端到目的端的传输时间,在本申请中为时延参考信息从终端到服务器的传输时间,本申请实施例考虑各个终端的网络链路时间是完全一致或者存在可忽略不计的微秒级误差)和服务器与终端间时钟误差,该时延也即终端和服务器整体的时间差,后续服务器可以通过向终端返回该时延,使得终端根据该时延对本地时钟确定的时间进行修正,从而获得基于公共时钟确定的时间,实现各个终端之间的时钟误差缩小在可接受的范围内,也即各个终端的时间是对齐的。
本申请实施例中每个终端都会向服务器发送视频流,可以理解的是,视频流中的每一个视频帧包括了终端从自身视角拍摄的目标对象的成像画面,所以不同终端发送的视频流中的视频帧,就包括了从不同视角拍摄的目标对象的成像画面,而生成一帧多视角视频帧,需要获得同一真实时刻的、所有视角拍摄的视频帧。例如,若一个终端的视角为90°,当多视角视频帧用于展示目标对象的全景图像(也即360°环视效果)时,至少需要4个终端布置在目标对象的前、后、左、右四个方位进行拍摄,后续只有获得同一真实时刻的全部视角拍摄的视频帧时,才能生成一帧展示目标对象的全景图像的多视角视频帧。
在一个实施例中,视频流中的待同步视频帧中携带的帧发送时刻可以是第一本地发送时刻。
在一个实施例中,本申请实施例的时延参考信息可以是终端发送的视频流中的待同步视频帧,此时,第二本地发送时刻和第一本地发送时刻是相同的,服务器通过接收终端发送的视频流,根据该视频流中包括的待同步视频帧携带的帧发送时刻,确定该终端与服务器的时延。
在一个实施例中,服务器在接收每个终端的视频流的过程中,可以间隔预设时长或者预设帧数,从视频流中选择一个待同步视频帧作为时延参考信息,并根据时延参考信息确定新的时延,并利用该新的时延确定目标视频帧簇,从而保证在较长的时间内保持各个终端之间的时钟误差缩小在可接受的范围内,为提高获得目标视频帧簇的效率奠定基础。
本申请实施例中待同步视频帧携带的帧发送时刻也可以是公共发送时刻。服务器在获得了终端和服务器间的时延后,可以向终端发送该时延,终端根据时延对本地时钟确定的时间进行修正后,即可视为基于公共时钟确定的发送时刻,也即公共发送时刻。应当理解的是公共时钟是相对于本地时钟的一种时钟,公共时钟是由所有终端共享的时钟,两个本地时钟确定的同一时间不一定对应同一真实时刻,而两个终端基于公共时钟确定的同一时间一定对应同一真实时刻。
终端在发送视频流时,就可以在视频流中的各个待同步视频帧中携带公共发送时刻。
S102、根据各个终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧。
由上述说明可知,本申请实施例通过各个终端对应的时延,可以将各视频流中的待同步视频帧的发送时刻进行对齐,因此对于同一公共发送时刻的各个待同步视频帧而言,如果这些待同步视频帧的数量与终端的数量一致,则说明服务器获得了该公共发送时刻的所有终端的待同步视频帧,因此可以将该公共发送时刻的所有待同步视频帧作为一个目标视频帧簇,由于目标视频帧簇中包括同一个公共发送时刻的、全部视角拍摄的目标对象的成像画面,因此每个目标视频帧簇用于生成一帧多视角视频帧。反之,如果这些待同步视频帧的数量与终端的数量不一致,则说明该公共发送时刻的待同步视频帧获取的不完全,并没有获取到该公共发送时刻的全部视角拍摄的目标对象的成像画面,因此不足以生成一帧多时间视频帧,该公共发送时刻的待同步视频帧可以丢弃。
服务器在获得一个目标视频帧簇后,可以根据目标视频帧簇生成一帧多视角视频帧,并将该多视角视频帧返回终端,供终端进行展示,也可以将目标视频帧簇直接返回终端,由终端根据目标视频帧簇生成一帧多视角视频帧进行展示,本申请实施例对于生成多视角视频帧的执行主体不作具体的限定。
需要注意的是,本申请实施例可以在从视频流中确定目标视频帧簇的过程中多次确定终端与服务器的时延,从而每次确定新的时延后,根据新的时延确定目标视频帧。例如,服务器在从所有视频流中确定公共发送时刻t1的所有待同步视频可以作为一个目标视频帧簇后重新确定时延,那么对于所有视频帧中公共时刻t1之后的待同步视频帧,基于该重新确定时延确定后续的目标视频帧簇。
在一个实施例中,本申请实施例可以周期性的更新时延,也可以是接收任一个视频流的待同步视频帧的数量达到预设数量时更新时延,还可以是当丢弃的待同步视频帧的数量达到预设数量时更新时延,本申请实施例不作具体的限定。
本申请实施例的视频帧同步方法,通过确定待同步的各终端与所述服务器的时延,该时延是终端发送时延参考信息携带的第二本地发送时刻与所述服务器接收到所述时延参考信息的接收时刻的时间间隔,通过获取时延,为实现各终端之间的时钟误差缩小在可接受的范围内奠定基础,并且,服务器还接收各终端发送的视频流,视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,该帧发送时刻可以是第一本地发送时刻也可以是公共发送时刻,根据各个终端对应的时延或者待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,本申请实施例确定目标视频帧簇的方案实现简单,不需要对各终端的性能和距离做限定,并且整个方案围绕终端和服务器间的时延实现,基于时延实现各终端之间的时钟对齐,可达到十毫秒级别的实时性,适用于对实时性要求较高的场景(例如体感游戏场景)。
在上述各实施例的基础上,作为一种可选实施例,接收各所述终端发送的视频流,之前还包括:
向各终端发送对应的时延,并指示各终端根据相应的时延对本地时钟确定的时刻进行更新。
本申请实施例的服务器在获取终端对应的时延后,向终端发送时延,并指示终端根据相应的时延对本地时钟确定的时刻进行更新,具体地,若时延为△t,本地时钟确定时刻为t,则更新后的时刻为t+△t,该更新后的时刻相当于是以公共时钟确定的时刻,也即公共发送时刻。
本申请实施例的终端先通过向服务器发送时延参考信息,获得服务器反馈的时延,基于时延对本地时钟确定的时刻进行更新,获得公共发送时刻,之后向服务器发送视频流时,视频流中的待同步视频帧携带的帧发送时刻为公共发送时刻,这样服务器从接收到视频流开始,视频流中待同步视频帧携带的帧发送时刻均为公共发送时刻。
在上述各实施例的基础上,作为一种可选实施例,接收各终端分别发送的视频流,包括:
根据每个终端的视频流中待同步视频帧携带的帧发送时刻的先后顺序,将待同步视频帧依次存储至相应终端对应的消费队列中。
本申请实施例针对每个终端设置了对应的消费队列,消费队列顾名思义,是一个不断被输入待消费品,同时待消费品不断被取出(取出后进行消费)的队列,本申请实施例的待消费品即视频帧,消费即判断视频帧是否属于目标视频帧簇。服务器在接收到终端的视频流时,根据视频流中的待同步视频帧携带的帧发送时刻的先后顺序,将待同步视频存储至消费队列中。应当理解的是,由于本实施例的帧发生时刻是公共发送时刻,因此不同终端发送的待同步视频帧如果具有相同的公共发送时刻,则表示这些待同步视频帧是同一个真实时刻采集的。
从所有视频流中确定至少一个目标视频帧簇,包括:
S201、将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧;
S202、若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇;若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
由于本申请实施例中的帧发送时刻为公共发送时刻,所有终端的待同步视频帧的帧发送时刻是基于同一公共时钟确定的,同时消费队列中的待同步视频帧也是按照先后顺序存储的,因此理想情况下,也即所有终端都是在同一个帧发送时刻开始视频流且视频流中不存在丢失视频帧的情况下,每个消费队列中同一个存储顺序的待同步视频帧应该携带相同的帧发送时刻,基于此,本申请实施例可以将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧,若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,仅而可以将该组视频帧作为目标视频帧簇,如果该组视频帧对应不同的帧发送时刻,为了不影响各队列中后续的同一存储位置的待同步视频帧的比对,需要丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
请参见图3,其示例性地示出了本申请实施例从消费队列中确定目标视频帧簇的示意图,如图所示,该实施例包括3个消费队列,3个消费队列分别用于存储3个终端的视频流,具体地,在一个时刻,消费队列1中包括3个待同步视频帧,分别为视频帧a1~a3,三个视频帧携带的帧发送时刻为t1、t2和t3,消费队列2中包括3个待同步视频帧,分别为视频帧b1~b3,三个视频帧携带的帧发送时刻为t1、t3和t4,消费队列3中包括3个待同步视频帧,分别为视频帧c1~c3,三个视频帧携带的帧发送时刻为t1、t2和t3,本申请实施例的帧发送时刻为公共发送时刻,因此如果公共发送时刻相同,就表示是同一个真实时刻的视频帧。
首先将三个消费队列中的第一个存储位置的待同步视频帧组作为一组视频帧,该组视频帧包括视频帧a1、b1和c1,由于3个待同步视频帧携带的帧发送时刻相同,均为t1,因此可以将视频帧a1、b1和c1作为一个目标视频帧簇。
继续将三个消费队列中的第二个存储位置的待同步视频帧组作为一组视频帧,该组视频帧包括视频帧a2、b2和c2,但3个待同步视频帧携带的帧发送时刻并不相同,其中视频帧a2携带的帧发送时刻为t2,视频帧b2携带的帧发送时刻为t3,视频帧c2携带的帧发送时刻为t2,因此这组视频帧不能作为目标视频帧簇,进一步地,由于视频帧a2和c2的帧发送时刻早于视频帧b2的帧发送时刻,因此需要将视频帧a2和c2从消费队列中删掉,之后视频帧a3和视频帧c3分别递补至消费队列的第二个存储位置,此时第二个存储位置的待同步视频帧写到的帧发送时刻均为t3,因此将视频帧a3、b2和c3作为一个目标视频帧簇。
由上述实施例可知,本申请实施例在对各消费队列的待同步视频帧进行比对时,是从消费队列队首开始逐个向队尾进行,在此基础上,本申请实施例每当确定一个目标视频帧簇时,可以将该目标视频帧簇中的待同步视频帧从相应的消费队列中移除,这样在确定一组视频帧时,每次都可以固定地将位于消费队列中首个存储顺序的待同步视频帧作为一组视频帧,提升确定目标视频帧簇的效率。
在上述各实施例的基础上,请参见图4,其示例性地示出了本申请再一个实施例的视频帧同步方法的流程示意图,如图所示,该流程主要分为时钟对齐和帧对齐两个部分。
时钟对齐,也即实现所有终端之间的时钟误差缩小在可接受的范围内,终端通过向服务器发送时延参考信息,时延参考信息携带本地发送时刻,该本地发送时刻也是基于本地时钟确定的发送时刻,为了区别于待同步视频帧携带的本地发送时刻,本申请实施例将时延参考信息携带的本地发送时刻称之为第二本地发送时刻。
服务器将接收到时延参考信息的接收时刻和第二本地发送时刻的时差作为时延返回终端,终端将本地时钟的时间加上时延,得到的时间即为视为基于公共时钟得到的时钟,时钟对齐流程完成。
帧对齐,也即获得所有终端的视频流中同一公共发送时刻的视频帧。本申请实施例的服务器以生产者/消费者模式实现帧对齐。生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过消费队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接存储至消费队列,消费者不找生产者要数据,而是直接从消费队列中取,消费队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
本申请实施例根据待同步的终端的数量,创建相应数量的生产者处理单元,也即每个终端都对应一个生产者处理单元,每个生产者处理单元还对应一个消费队列和一个消费者处理单元。例如,当有两个终端分别为终端1和终端2时,则终端1对应一个生产者处理单元1、消费队列1和消费者处理单元1,终端2对应一个生产者处理单元2、消费队列2、消费者处理单元2。
由上述实施例中消费队列的说明可知,本申请实施例的生产者处理单元用于向消费队列不断输入视频帧,消费者处理单元用于从消费队列中不断取出视频帧。每个终端发送的视频帧中的待同步视频帧还携带了终端标识。当生产者处理单元确定服务器接收到的待同步视频帧携带的终端标识是与自身对应的终端时,将该待同步视频帧存储至对应的消费队列中,从而保证每个消费队列中的待同步视频帧是同一视频流的。
消费者处理单元根据存储顺序从对应的消费队列中依次获取待同步视频帧,各消费者处理单元同步获取对应的消费队列中的待同步视频帧,也即所有消费者处理单元在同一时刻,获取的是对应消费队列中同一个存储顺序的待同步视频帧,例如存在两个消费队列——消费队列1和消费队列2,消费队列1对应消费处理单元1,消费队列2对应消费处理单元2,在初始时刻,消费处理单元1从消费队列1中的队首获得一个待同步视频帧,消费处理单元2从消费队列2中的队首获得一个待同步视频帧,若此时获得的两个待同步视频帧可构成一个目标视频帧簇,则两个待同步视频帧都会从消费队列中移除(不存在丢弃一个保留一个的情况),原本每个消费队列中的第二待同步视频帧移动到了队首;在下一个时刻,消费处理单元1从消费队列1中获取队首的待同步视频帧,消费处理单元2也从消费队列2中获取队首的待同步视频帧,以此类推。
服务器根据各消费者处理单元同步获取的待同步视频帧对应的帧发送时刻,若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇;若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
在上述各实施例的基础上,作为一种可选实施例,待同步视频帧还携带终端标识,将待同步视频帧依次存储至相应终端对应的消费队列中,包括:
S301、按照各待同步视频帧携带的帧发送时刻的先后顺序,依次将各视频帧携带的帧发送时刻和终端标识存储在共享内存中;
S302、确定所述共享内存中同一帧发送时刻对应的终端标识的数目,根据首次满足预设条件的帧发送时刻确定基准时刻,预设条件为对应的终端标识的数目等于所述终端的总数目;
S303、将每个终端的视频流中所述基准时刻以后的帧发送时刻对应的视频帧,依次存储至相应终端对应的消费队列。
考虑到实际应用时各终端不会在同一时间向服务器发送视频流,甚至可能最先发送视频流的终端相比最后发送视频帧的终端提前发送几分钟的视频流,如果将待同步视频帧直接存储至消费队列中,可能在刚开始同步时消费队列中的待同步视频帧都是需要丢弃的,浪费了服务器的性能。因此本申请实施例在刚接收到待同步视频帧时先将其携带的终端标识和帧发送时刻存储在服务器的共享内存中,共享内存相比普通的内存具有更方便的数据控制能力。对于共享内存中同一帧发送时刻对应的终端标识的数目,判断是否接收到所有终端在该帧发送时刻发送的待同步视频帧,如果终端标识的数目等于终端的总数目,则确定从该帧发送时刻开始,所有终端开始向服务器发送视频流,进而将该帧发送时刻作为基准时刻,将各终端的视频流的基准时刻以后的帧发送时刻对应的待同步视频帧,依次存储至相应终端对应的消费队列。
请参见图5,其示例性地示出了本申请实施例的帧对齐流程的示意图,如图所示,本申请实施例包括3个生产者处理单元,由上述实施例可知,每个终端都对应一个生产者处理单元,每个生产者处理单元还对应一个消费队列和一个消费者处理单元用于视频流的解码和存储,例如,终端上传的视频帧为H264编码格式,消费者处理单元可以将H264编码格式的视频帧解码为jpg格式。每个终端发送的视频帧中的待同步视频帧携带了终端标识和帧发送时刻。
流服务Stream server接口是用于统一接收各终端发送的数据流的的数据接口,各个终端都是与Stream server建立连接,stream server接收到视频帧后转发给不同的生产者处理单元。需要注意的是,为了生产者处理单元能高效接收Stream server转发的视频帧,各生产者处理单元之间不进行通信。
每个生产者处理单元在接收到待同步视频帧后,先将待同步视频帧携带的终端标识和帧发送时刻发送至共享内存进行存储。排序时间Align_time进程用于管理所有的生产者处理单元和消费者处理单元,Align_time进程通过共享内存与所有生产者处理单元通信,并且,确定所述共享内存中同一帧发送时刻对应的终端标识的数目,根据首次满足预设条件的帧发送时刻确定基准时刻,所述预设条件为对应的终端标识的数目等于所述终端的总数目,并向各个生产者处理单元返回该基准时刻,各个生产者处理单元将基准时刻以后的帧发送时刻对应的待同步视频帧,依次存储至相应终端对应的消费队列。
消费者处理单元同步获取消费队列中的待同步视频帧,服务器根据各消费者处理单元同步获取的待同步视频帧对应的帧发送时刻,若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇存储至内存中;若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
对于内存中的每个目标视频帧簇,通过预设的图像处理算法合成一帧多视角视频帧。
请参见图6,其示例性地示出了本申请一个实施例的视频帧同步方法的流程示意图,如图所示,包括:
S401、待同步的各终端向服务器发送时延参考信息,时延参考信息携带第二本地发送时刻;
S402、服务器接收时延参考信息,确定接收时刻,计算接收时刻和第二本地发送时刻间的时间间隔,作为时延返回相应的终端;
S403、终端向服务器发送视频流,视频流包括多个待同步视频帧,待同步视频帧中携带帧发送时刻和终端标识,所述帧发送时刻为公共发送时刻,公共发送时刻是基于相应终端与所述服务器间时延对第一本地发送时刻进行更新获得的;
S404、服务器按照各待同步视频帧携带的帧发送时刻的先后顺序,依次将各待同步视频帧携带的帧发送时刻和终端标识存储在共享内存中,确定所述共享内存中同一帧发送时刻对应的终端标识的数目,根据首次满足预设条件的帧发送时刻确定基准时刻,预设条件为对应的终端标识的数目等于所述终端的总数目;
S405、服务器将每个终端的视频流中所述基准时刻以后的帧发送时刻对应的待同步视频帧,依次存储至相应终端对应的消费队列,服务器将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧;
S406、若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇,若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧。
在上述各实施例的基础上,作为一种可选实施例,待同步视频帧中携带的帧发送时刻为第一本地发送时刻。在本申请实施例中,服务器预先确定了各终端对应的时延,但没有将时延返回终端并指示终端进行时钟对齐,但由于服务器确定了时延,因此仍然可以通过本申请实施例获得目标视频帧簇,具体地,根据各终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,包括:
从所有视频流中的最早帧发送时刻的待同步视频帧进行图像匹配,确定首个目标视频帧簇;
将首个目标视频帧簇中的待同步视频帧作为基准视频帧,根据各终端对应的时延以及各视频流中的待同步视频帧中携带的帧发送时刻,从各视频流中的基准视频帧之后的待同步视频帧中确定所述首个目标视频帧簇之后的目标视频帧簇。
本申请实施例对于首个目标视频帧簇,采用图像匹配的方式获取,也即通过图像匹配判断各视频流中对应同一个真实时间(也即公共发送时刻)的待同步视频帧。具体地,本申请实施例可以对每个待同步视频帧进行特征提取,获得每个待同步视频帧的特征向量,以多人同屏进行体感游戏的场景为例,由于游戏者在体感游戏时肢体是持续运动的,每一帧待同步视频帧中游戏者的肢体位置可能都存在差异,因此可以采集待同步视频帧中肢体的关键点的位置,并根据关键点的位置确定游戏者的行为特征,作为该待同步视频帧的特征向量。
将各视频流中的待同步视频帧的特征向量进行相似度匹配,当相似度高于预设阈值,则确定两个待同步视频帧对应同一个真实时间,若对应同一个真实时间的待同步视频帧的数量为终端总数,则确定找到首个目标视频帧簇。
在确定首个目标视频帧簇之后,将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于各个视频流中相应的基准视频帧之后的待同步视频帧,由于在一定时间内可以认为时延是稳定的,因此可以根据时延和待同步视频帧中的第一本地发送时刻,确定对应的公共发送时刻,进而基于各个待同步视频帧的公共发送时刻确定后续的目标视频帧簇。
本申请实施例仅需要在初始阶段采用图像匹配技术确定目标视频帧簇,由于不需要持续地采用图像匹配技术,因此可避免延迟大、无法实时进行视频帧同步的问题,同时也脱离了网络条件的限定。
在上述各实施例的基础上,作为一种可选实施例,根据各终端对应的时延以及各视频流中的待同步视频帧中携带的帧发送时刻,从各视频流中的基准视频帧之后的待同步视频帧中确定所述首个目标视频帧簇之后的目标视频帧簇,包括:
对于各视频流中位于相应的基准视频帧之后的待同步视频帧,根据所述待同步视频帧携带的帧发送时刻以及相应终端对应的时延,获得所述待同步视频帧的公共发送时刻;
对于每个公共发送时刻,若各视频流中均包括该公共发送时刻的待同步视频帧,则将该公共发送时刻的所有待同步视频帧作为一个目标视频帧簇。
请参见图7,其示例性地示出了本申请再一个实施例的视频帧同步方法的流程示意图,如图所示,包括:
S501、接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,帧发送时刻为第一本地发送时刻;
S502、从每个视频流中任选一帧待同步视频帧,根据该待同步视频帧的第一发送时刻以及接收到该待同步视频帧的接收时刻,确定与相应终端间的时延;
S503、从所有视频流中的最早帧发送时刻的待同步视频帧进行图像匹配,确定首个目标视频帧簇;
S504、对于各视频流中位于相应的基准视频帧之后的待同步视频帧,根据所述待同步视频帧携带的帧发送时刻以及相应终端对应的时延,获得所述待同步视频帧的公共发送时刻;
S505、对于每个公共发送时刻,若各视频流中均包括该公共发送时刻的待同步视频帧,则将该公共发送时刻的所有待同步视频帧作为一个目标视频帧簇。
需要注意的是,相比于图6所示的实施例,本申请实施例是在开始接收视频流后确定与终端间的时延,这样操作省去了专门接收终端的时延参考信息的流程,并且服务器在确定时延后并不向终端反馈,进而也不指示终端根据时延调整基于本地时钟确定的时间,减少了交互动作,同时也降低了终端的运算压力,可进一步降低对终端性能的要求。需要强调的是,本申请实施例可以每隔预设时长就重新确定一次时延,有利于将视频帧同步的准确率维持在一个较高的水平。
请参见图8,其示例性地示出了本申请另一个实施例的视频帧同步方法的流程示意图,如图所示,该实施例包括3个消费队列,3个消费队列分别用于存储3个终端的视频流,具体地,在一个时刻,消费队列1中包括3个待同步视频帧,分别为视频帧a1~a3,三个视频帧携带的帧发送时刻为t_a1、t_a2和t_a3,消费队列2中包括3个待同步视频帧,分别为视频帧b1~b3,三个视频帧携带的帧发送时刻为t_b1、t_b2和t_b3,消费队列3中包括3个待同步视频帧,分别为视频帧c1~c3,三个视频帧携带的帧发送时刻为t_c1、t_c2和t_c3,本申请实施例的帧发送时刻为第一本地发送时刻,因此即使第一本地发送时刻相同,也不能说明一定是同一个真实时刻的视频帧。
首先将三个消费队列中的第一个存储位置的待同步视频帧组作为一组视频帧,该组视频帧包括视频帧a1、b1和c1,对3个待同步视频帧进行图像匹配处理,若确定3个待同步视频帧对应同一个真实时刻,则将该组视频帧作为首个目标视频簇。
对于首个目标视频簇之后的待同步视频帧,本申请实施例根据该待同步视频帧的帧发送时刻和时延,确定该待同步视频帧的公共发送时刻,若确定服务器与三个终端对应的时延分别为△ta、△tb和△tc。继续将三个消费队列中的第二个存储位置的待同步视频帧组作为一组视频帧,该组视频帧包括视频帧a2、b2和c2,根据三个待同步视频帧的帧发送时刻以及对应的时延,可获得三个待同步视频帧的公共发送时刻分别为:t_a2+△ta、t_b2+△tb以及t_c2+△tc。若t_a2+△ta=t_c2+△tc<t_b2+△tb,则确定视频帧a2和视频帧c2的公共发送时刻相同,但早于视频帧b2的公共发送时刻,所以需要将视频帧a2和c2从消费队列中删掉,之后视频帧a3和视频帧c3分别递补至消费队列的第二个存储位置。
确定新的第二个存储位置的各待同步视频帧的公共发送时刻,若确定t_a3+△ta=t_c3+△tc=t_b2+△tb,说明此时3个待同步视频帧对应同一个公共发送时刻,因此将视频帧a3、b2和c3作为一个目标视频帧簇。
在上述各实施例的基础上,作为一种可选实施例,本申请实施例还包括:当获得首个目标视频帧簇时,指示各终端停止在发送的待同步视频帧中携带帧发送时刻。应当理解的是,终端拍摄所产生的视频帧会有序地发送至服务器,例如若终端先产生视频帧1,后产生视频帧2,不会出现服务器先接收到视频帧2,后接收到视频帧1的情况。
相应地,从所有视频流中确定至少一个目标视频帧簇,包括获取除所述首个目标视频帧簇之外的目标视频帧簇的步骤:
S601、将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于每个视频流,以相应的基准视频帧为起点,通过预设的滑动窗口采集多个待同步视频帧作为一组视频帧序列,将所述视频帧序列输入预先训练的帧同步识别模型,获得所述帧同步识别模型输出的所述视频帧序列中每个待同步视频帧的识别结果,所述识别结果用于表征相应视频帧与前一个视频帧之间丢帧的帧数;
S602、根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述首个目标视频帧簇之后的目标视频帧簇。
本申请实施例的终端在刚开始发送视频流时,会在视频流的待同步视频帧中携带帧发送时刻,无论帧发送时刻为第一本地发送时刻还是公共发送时刻,都通过上述各实施例提供的方法获得首个目标视频帧簇,服务器在获得首个目标视频帧簇之后,会向终端指示停止在待同步视频帧中携带帧发送时刻,从而减少数据传输量,同时也节约服务器的存储空间。
应当理解的是,本申请实施例还需要预先训练帧同步识别模型,帧同步识别模型能够很好地识别出视频帧是否连续,也即是否出现丢帧的情况,从而可以对一个视角的视频流的视频帧间的顺序关系进行纠正,提高系统稳定性。
本申请实施例的帧同步识别模型是基于多个带有标签的训练样本对神经网模型进行训练得到的。每个所述训练样本包括一段视频帧序列。每个训练样本的标签为由训练样本中每个视频帧与前一个视频帧之间丢帧的帧数。本申请实施例对于视频帧序列的帧数不作限定,其最少为2。
可以理解的是,在执行步骤S601之前,还可以预先训练得到帧同步识别模型,具体可通过如下方式训练得到帧同步识别模型:首先,收集一定数量的视频帧序列,获取视频帧序列中相邻两个视频帧之间丢帧的帧数,随即,基于视频帧序列,以及视频帧序列中相邻两个视频帧之间丢帧的帧数对初始模型进行训练,其中,以视频帧序列作为训练样本,视频帧序列中每个视频帧与前一个视频帧之间丢帧的帧数作为样本标签,初始模型通过学习相邻视频帧的相关性,得到帧同步识别模型。其中,初始模型可以是单一神经网络模型,也可以是多个神经网络模型的组合。
本申请实施例将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于每个视频流,可以以该视频流中的基准视频帧为起点,通过预设的滑动窗口采集多个待同步视频帧作为一组视频帧序列,将该视频帧序列输入帧同步识别模型,即可获得视频帧序列中相邻的两个视频帧之间丢帧的帧数。本申请实施例通过神经网络模型可以快速判断服务器接收到的视频帧是否出现丢帧以及丢帧的帧数,并且由于可并行地对一个消费队列中多个待同步视频帧进行判断,不需要再对所有消费队列一帧帧地比对发送时刻是否相同,可明显提高确定目标视频帧簇的效率。
在上述各实施例的基础上,作为一种可选实施例,根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述首个目标视频帧簇之后的目标视频帧簇,包括:
根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述待同步视频帧相对于所述基准视频帧的帧间隔;
对于每个帧间隔,若各视频流中均包括该帧间隔的待同步视频帧,则将该帧间隔的所有待同步视频帧作为一个目标视频帧簇。
本申请实施例由于帧间隔是指待同步视频帧与基准视频帧间的帧间隔,而各视频流中的基准视频帧对应的同一个真实时刻,所以帧间隔等效于公共发送时刻,具有相同帧间隔的待同步视频帧也即同一个公共发送时刻的待同步视频帧,如果同一个帧间隔的待同步视频帧的数量等于所有终端的总数量,则确定该帧间隔的待同步视频帧作为一个目标视频帧簇。
请参见图9,其示例性地示出了本申请再一个实施例的视频帧同步方法的流程示意图,如图所示,包括:
S701、接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻;
S702、从所有视频流中确定首个目标视频帧簇;
S703、指示各终端停止在发送的待同步视频帧中携带帧发送时刻;
S704、将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于每个视频流,以相应的基准视频帧为起点,通过预设的滑动窗口采集多个待同步视频帧作为一组视频帧序列,将所述视频帧序列输入预先训练的帧同步识别模型,获得所述帧同步识别模型输出的所述视频帧序列中每个待同步视频帧的识别结果,所述识别结果用于表征相应视频帧与前一个视频帧之间丢帧的帧数;
S705、根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述待同步视频帧相对于所述基准视频帧的帧间隔;
S706、对于每个帧间隔,若各视频流中均包括该帧间隔的待同步视频帧,则将该帧间隔的所有待同步视频帧作为一个目标视频帧簇。
本申请实施例还提供一种视频帧同步方法,应用于待同步的多个终端中的任意一个终端,如图10所示,该方法包括:
S801、发送视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于所述终端与服务器间的时延,对所述第一本地发送时刻进行更新获得的,本地发送时刻为基于所述终端的本地时钟确定的发送时刻;
其中,时延为所述终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
在上述各实施例的基础上,作为一种可选实施例,当所述待同步视频帧中携带的帧发送时刻为公共发送时刻时,所述发送视频流,之前还包括:
接收所述服务器返回的所述时延,根据所述时延对本地时钟确定的时刻进行更新。
本申请实施例提供了一种服务器,如图11,该服务器可以包括:视频流接收模块101以及目标视频组簇模块102,其中,视频流接收模块101,用于接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间时延对第一本地发送时刻进行更新获得的,本地发送时刻为基于相应终端的本地时钟确定的发送时刻;
目标视频组簇模块102,用于根据各终端对应的时延或待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧;
其中,所述时延为相应终端发送的时延参考信息中携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
本申请实施例的服务器可执行本申请实施例所提供的服务器侧的视频帧同步方法,其实现原理相类似,本申请各实施例的服务器中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于服务器的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例提供了一种终端,如图12,该终端可以包括:视频流发送模块201,其中,视频流发送模块201,用于发送视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为第一本地发送时刻或者公共发送时刻,所述公共发送时刻是基于所述终端与服务器间的时延,对所述第一本地发送时刻进行更新获得的,本地发送时刻为基于所述终端的本地时钟确定的发送时刻;
所述时延为所述终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻。
本申请实施例的终端可执行本申请实施例所提供的终端侧的视频帧同步方法,其实现原理相类似,本申请各实施例的终端中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于终端的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现视频帧同步方法的步骤,与相关技术相比可实现:通过确定待同步的各终端与所述服务器的时延,该时延是终端发送时延参考信息携带的第二本地发送时刻与所述服务器接收到所述时延参考信息的接收时刻的时间间隔,通过获取时延,为实现各终端之间的时钟误差缩小在可接受的范围内奠定基础,并且,服务器还接收各终端发送的视频流,视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,该帧发送时刻可以是第一本地发送时刻也可以是公共发送时刻,根据各个终端对应的时延或者待同步视频帧中携带的帧发送时刻中的至少一种,从所有视频流中确定至少一个目标视频帧簇,本申请实施例确定目标视频帧簇的方案实现简单,不需要对各终端的性能和距离做限定,并且整个方案围绕终端和服务器间的时延实现,基于时延实现各终端之间的时钟对齐,可达到十毫秒级别的实时性,适用于对实时性要求较高的场景。
在一个可选实施例中提供了一种电子设备,如图13,图13的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图13用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (8)

1.一种视频帧同步方法,其特征在于,应用于服务器,包括:
接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间的时延对第一本地发送时刻进行更新获得的;
根据待同步视频帧中携带的帧发送时刻,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧;
其中,所述时延为相应终端发送的时延参考信息中携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻;
所述接收待同步的各终端分别发送的视频流,包括:
根据每个终端的视频流中待同步视频帧携带的帧发送时刻的先后顺序,将待同步视频帧依次存储至相应终端对应的消费队列中;
所述从所有视频流中确定至少一个目标视频帧簇,包括:
将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧;
若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇;
若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧;
所述方法还包括:当丢弃的待同步视频帧的数量达到预设数量时更新时延,所述第一本地发送时刻和所述第二本地发送时刻均为基于相应终端的本地时钟确定的发送时刻。
2.根据权利要求1所述的方法,其特征在于,所述接收待同步的各终端发送的视频流,之前还包括:
向各终端发送对应的时延,并指示各终端根据相应的时延对本地时钟确定的时刻进行更新;
相应的,所述待同步视频帧中携带的帧发送时刻为公共发送时刻。
3.根据权利要求2所述的方法,其特征在于,所述待同步视频帧还携带终端标识;
所述将待同步视频帧依次存储至相应终端对应的消费队列中,包括:
按照各待同步视频帧携带的帧发送时刻的先后顺序,依次将各待同步视频帧携带的帧发送时刻和终端标识存储在共享内存中;
确定所述共享内存中同一帧发送时刻对应的终端标识的数目,根据首次满足预设条件的帧发送时刻确定基准时刻,所述预设条件为对应的终端标识的数目等于所述终端的总数目;
将每个终端的视频流中所述基准时刻以后的帧发送时刻对应的待同步视频帧,依次存储至相应终端对应的消费队列。
4.根据权利要求1-3任意一项所述的方法,其特征在于,还包括:
当获得首个目标视频帧簇时,指示各终端停止在发送的待同步视频帧中携带帧发送时刻;
所述从所有视频流中确定至少一个目标视频帧簇,包括获取除所述首个目标视频帧簇之外的目标视频帧簇的步骤:
将首个目标视频帧簇中的待同步视频帧作为基准视频帧,对于每个视频流,以相应的基准视频帧为起点,通过预设的滑动窗口采集多个待同步视频帧作为一组视频帧序列,将所述视频帧序列输入预先训练的帧同步识别模型,获得所述帧同步识别模型输出的所述视频帧序列中每个待同步视频帧的识别结果,所述识别结果用于表征相应视频帧与前一个视频帧之间丢帧的帧数;
根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,
确定所述首个目标视频帧簇之后的目标视频帧簇。
5.根据权利要求4所述的方法,其特征在于,所述根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述首个目标视频帧簇之后的目标视频帧簇,包括:
根据各视频流中的基准视频帧之后的待同步视频帧对应的识别结果,确定所述待同步视频帧相对于所述基准视频帧的帧间隔;
对于每个帧间隔,若各视频流中均包括该帧间隔的待同步视频帧,则将该帧间隔的所有待同步视频帧作为一个目标视频帧簇。
6.一种服务器,其特征在于,包括:
视频流接收模块,用于接收待同步的各终端分别发送的视频流,所述视频流包括多个待同步视频帧,所述待同步视频帧中携带帧发送时刻,所述帧发送时刻为公共发送时刻,所述公共发送时刻是基于相应终端与所述服务器间时延对第一本地发送时刻进行更新获得的;
目标视频组簇模块,用于根据待同步视频帧中携带的帧发送时刻,从所有视频流中确定至少一个目标视频帧簇,所述目标视频帧簇中包括与终端数量相同的、且对应同一公共发送时刻的待同步视频帧,每个目标视频帧簇用于生成一帧多视角视频帧;
其中,所述时延为相应终端发送的时延参考信息携带的第二本地发送时刻,与所述服务器接收到所述时延参考信息的接收时刻间的时间间隔,所述接收时刻为基于所述服务器的本地时钟确定的时刻;
所述视频流接收模块接收待同步的各终端分别发送的视频流,包括:
根据每个终端的视频流中待同步视频帧携带的帧发送时刻的先后顺序,将待同步视频帧依次存储至相应终端对应的消费队列中;
所述目标视频组簇模块从所有视频流中确定至少一个目标视频帧簇,包括:
将各消费队列中对应同一存储顺序的待同步视频帧作为一组视频帧;
若该组视频帧对应相同的帧发送时刻,则确定接收到所有终端发送的该帧发送时刻的待同步视频帧,将该组视频帧作为目标视频帧簇;
若该组视频帧对应不同的帧发送时刻,则丢弃该组视频帧中除最晚帧发送时刻对应的待同步视频帧之外的待同步视频帧;
所述服务器还用于:当丢弃的待同步视频帧的数量达到预设数量时更新时延,所述第一本地发送时刻和所述第二本地发送时刻均为基于相应终端的本地时钟确定的发送时刻。
7.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-5任一项所述的视频帧同步方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的视频帧同步方法的步骤。
CN202211264088.9A 2022-10-17 2022-10-17 视频帧同步方法、终端、服务器、电子设备及存储介质 Active CN115334322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211264088.9A CN115334322B (zh) 2022-10-17 2022-10-17 视频帧同步方法、终端、服务器、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211264088.9A CN115334322B (zh) 2022-10-17 2022-10-17 视频帧同步方法、终端、服务器、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115334322A CN115334322A (zh) 2022-11-11
CN115334322B true CN115334322B (zh) 2023-01-31

Family

ID=83915360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211264088.9A Active CN115334322B (zh) 2022-10-17 2022-10-17 视频帧同步方法、终端、服务器、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115334322B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107071509A (zh) * 2017-05-18 2017-08-18 北京大生在线科技有限公司 多路直播的视频精确同步方法
CN111787365A (zh) * 2020-07-17 2020-10-16 易视腾科技股份有限公司 多路音视频同步方法及装置
CN113163222A (zh) * 2021-03-31 2021-07-23 杭州奥点科技股份有限公司 一种视频帧同步方法、系统、设备及可读存储介质
CN113382210A (zh) * 2021-08-12 2021-09-10 深圳市有为信息技术发展有限公司 多路监控视频数据的处理方法、流媒体服务器及电子设备
CN113518260A (zh) * 2021-09-14 2021-10-19 腾讯科技(深圳)有限公司 视频播放方法、装置、电子设备及计算机可读存储介质
CN113596497A (zh) * 2021-07-28 2021-11-02 新华智云科技有限公司 一种基于隐水印的多路直播视频同步方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114257857B (zh) * 2022-01-04 2024-05-24 海信视像科技股份有限公司 显示设备及视频倍速播放方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107071509A (zh) * 2017-05-18 2017-08-18 北京大生在线科技有限公司 多路直播的视频精确同步方法
CN111787365A (zh) * 2020-07-17 2020-10-16 易视腾科技股份有限公司 多路音视频同步方法及装置
CN113163222A (zh) * 2021-03-31 2021-07-23 杭州奥点科技股份有限公司 一种视频帧同步方法、系统、设备及可读存储介质
CN113596497A (zh) * 2021-07-28 2021-11-02 新华智云科技有限公司 一种基于隐水印的多路直播视频同步方法和系统
CN113382210A (zh) * 2021-08-12 2021-09-10 深圳市有为信息技术发展有限公司 多路监控视频数据的处理方法、流媒体服务器及电子设备
CN113518260A (zh) * 2021-09-14 2021-10-19 腾讯科技(深圳)有限公司 视频播放方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN115334322A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
CN109716769B (zh) 在多媒体信息中提供面向对象的缩放的系统和方法
JP5196893B2 (ja) 通信システム、通信装置及び通信システムの通信方法
KR20080080591A (ko) 무선 스테레오 비디오 스트리밍을 위한 방법 및 장치
TW201245972A (en) Collaborative image control
CN110460824B (zh) 一种图像数据的帧同步方法和相机
CN113728653A (zh) 图像同步方法及装置、设备、计算机存储介质
US10992725B2 (en) System and method for interleaved media communication and conversion
CN114598786B (zh) 多摄像头的帧同步控制方法及自行走设备
CN104581188A (zh) 用于ip视频信号同步的方法和装置
CN111182302B (zh) 视频的图像编码方法、终端设备以及存储介质
CN112584216B (zh) 一种唇音同步方法和装置
CN116347128A (zh) 数据同步方法、装置、设备及存储介质
KR20240028492A (ko) 카메라 동기화를 위한 시스템들 및 방법들
CN115334322B (zh) 视频帧同步方法、终端、服务器、电子设备及存储介质
WO2024021999A1 (zh) 同步方法、系统及电子设备
CN113938617A (zh) 一种多路视频显示方法、设备、网络摄像机及存储介质
CN112995596A (zh) 全景视频传输方法、装置、电子设备和存储介质
JP2020005063A (ja) 処理装置及びその制御方法、出力装置、同期制御システム、並びにプログラム
CN113891057A (zh) 视频的处理方法、装置、电子设备和存储介质
CN111953897B (zh) 一种快速拍摄图像的方法和装置
JP2019140643A (ja) 伝送装置
CN113518158B (zh) 视频拼接方法、装置、电子设备及可读存储介质
CN113438385B (zh) 一种视频同步方法及无线图像传输系统
CN114827382A (zh) 图像同步显示的方法、装置、系统及电子设备
JP2021089647A (ja) データ処理装置、データ処理方法、及びプログラム

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