掌桥专利:专业的专利平台
掌桥专利
首页

同步方法、系统及电子设备

文献发布时间:2024-04-18 19:59:31


同步方法、系统及电子设备

技术领域

本申请实施例涉及通信领域,尤其涉及一种同步方法、系统及电子设备。

背景技术

IPC(IP Camera,网络摄像机)一般通过网络与服务器(如MP(Media Process,媒体处理端)设备,MEP(Multi-access Edge Platform,多接入边缘平台)设备等)连接。通常,由多个IPC采集原始图像并将原始图像编码成图像帧后发送给服务器;然后由服务器分别从各IPC发送的图像帧中选取一个图像帧,进行视频拼接和FVV(Free-Viewpoint Video,自由视角视频)视频制作等处理。

由于不同IPC编码启动时间可能不一致,这会导致不同IPC出帧时间会有差异,进而导致服务器在同一时间段内(如同一天的8点10分22秒10毫秒~20毫秒这个时间段)接收到的多个IPC发送的多个图像帧所拍摄的画面会有时间差(即帧时间差),也就是多个IPC的帧时间不同步;从而导致拼接后的图像中,来自不同IPC的图像帧连接处的画面出现顿挫、不流畅等问题。

为了解决多个IPC的帧时间不同步的问题,现有技术采用数据线将两两IPC连接,然后由硬件控制电路控制IPC的编码出视频帧时间,使所有的IPC出视频帧时间一致,实现帧时间同步。采用硬件实现多个IPC的帧时间同步的缺点在于,需要额外硬件,成本高;且采用数据线连接,不利于IPC部署;此外,如果硬件线接触不良,会导致帧时间不同步,鲁棒性差等等。

发明内容

为了解决上述技术问题,本申请提供一种同步方法、系统及电子设备。在该方法中,无需借助硬件,通过服务器与IPC之间的数据交互,即可实现多个IPC之间的帧时间同步,鲁棒性好;且能够降低成本,便于多个IPC的部署。

第一方面,本申请实施例提供一种同步方法,该方法包括:首先,服务器接收多个网络摄像机IPC发送的图像帧,以及图像帧对应的时间信息,其中,图像帧是通过对原始图像进行编码得到,多个IPC包括第一IPC和第二IPC,第二IPC是第一IPC与第二IPC的帧时间是否同步的参考;接着,当服务器根据第一IPC发送的图像帧对应的时间信息,以及第二IPC发送的图像帧对应的时间信息,确定第一IPC与第二IPC的帧时间不同步时,服务器向第一IPC发送编码调整指示,编码调整指示用于触发第一IPC进行编码调整,以使第一IPC读取下一帧待编码的原始图像的时间发生调整。这样,服务器通过一次或多次向第一IPC发送编码调整指示,来触发第一IPC进行一次或多次编码调整,使得第一IPC一次或多次读取下一帧待编码的原始图像的时间发生调整,进而实现第一IPC与第二IPC的出帧时间同步;从而避免服务器在同一时间段内接收到的多个图像帧所拍摄的画面出现时间差,实现多个IPC的帧时间同步。

相对于现有技术借助硬件进行多个IPC的帧时间同步而言,本申请无需借助硬件,通过服务器与IPC之间的数据交互,即可实现多个IPC之间的帧时间同步,鲁棒性好;且能够降低成本,便于多个IPC的部署。

示例性的,多个IPC包括至少一个第一IPC和一个第二IPC。

示例性的,原始图像可以是指IPC的感光器采集的图像,也就是RAW(未加工)图像。

示例性的,服务器可以是指单个服务器,也可以是指服务器集群(如云服务器),本申请对此不作限制。例如,服务器可以是MP设备、MEP设备等。

示例性的,图像帧也可以称为码流。

示例性的,图像帧可以是视频帧。

根据第一方面,服务器向第一IPC发送编码调整指示,包括:服务器向第一IPC发送编码控制消息;其中,编码控制消息包括偏移时间,偏移时间是服务器依据第一IPC发送的图像帧对应的时间信息,与第二IPC发送的图像帧对应的时间信息之间的时间差确定的;编码控制消息用于触发第一IPC根据偏移时间对获取下一帧待编码的原始图像的时间进行调整。这样,当第一IPC接收到编码控制消息后,可以将获取下一帧待编码的原始图像的时间移动编码控制消息中的偏移时间;进而第一IPC通过一次编码调整,即可以实现与第二IPC的帧时间同步。

示例性的,偏移时间可以是第一IPC发送的图像帧对应的时间信息,与第二IPC发送的图像帧对应的时间信息之间的时间差。

示例性的,偏移时间可以是第一IPC发送的图像帧对应的时间信息,和第二IPC发送的图像帧对应的时间信息之间的时间差,与预设周期之间的和值或差值。其中,预设周期可以是指预设的编码周期如30ms,具体可以按照需求设置,本申请对此不作限制。

根据第一方面,或者以上第一方面的任意一种实现方式,服务器向第一IPC发送编码调整指示,包括:服务器向第一IPC发送编码重启消息,编码重启消息用于触发第一IPC进行编码重启。这样,当第一IPC接收编码重启消息后,可以进行编码重启;待编码重启成功后,可以读取下一帧待编码的原始图像进行编码;进而使得第一IPC读取下一帧待编码的原始图像的时间发生调整。这种情况下,第一IPC通过一次或多次编码重启,即可实现与第二IPC的帧时间同步。

根据第一方面,或者以上第一方面的任意一种实现方式,服务器向第一IPC发送编码调整指示,包括:服务器向第一IPC发送编码刷新消息,编码刷新消息用于触发第一IPC进行帧刷新。这样,当第一IPC接收编码刷新消息后,可以进行帧刷新即开始下一次编码,也就会读取下一帧待编码的原始图像,并对下一帧待编码的原始图像进行编码,进而使得第一IPC读取下一帧待编码的原始图像的时间发生调整。这种情况下,第一IPC通过一次或多次帧刷新,即可实现与第二IPC的帧时间同步。

根据第一方面,或者以上第一方面的任意一种实现方式,确定第一IPC与第二IPC的帧时间不同步,包括:服务器确定第一IPC发送的图像帧对应的同步时间信息,和第二IPC发送的图像帧对应的同步时间信息之间的时间差大于阈值。

示例性的,当第一IPC发送的图像帧对应的同步时间信息,和第二IPC发送的图像帧对应的同步时间信息之间的时间差小于或等于阈值时,可以确定第一IPC与第二IPC的帧时间同步。

根据第一方面,或者以上第一方面的任意一种实现方式,多个IPC中各IPC发送的图像帧对应的时间信息,为各IPC读取下一帧待编码的原始图像的时间。这样,各IPC发送的各图像帧对应的时间信息,更接近各图像帧拍摄的画面真正发生时间,使得服务器确定的第一IPC发送的图像帧对应的时间信息与第二IPC发送的图像帧对应的时间信息之间的时间差更准确,进而服务器向第一IPC发送更少次数的编码调整指示,即可实现第一IPC与第二IPC的帧时间同步,减少同步第一IPC与第二IPC的帧时间的时长。

第二方面,本申请实施例提供一种同步方法,该方法包括:首先,第一IPC读取待编码的原始图像;接着,第一IPC将原始图像编码为图像帧,以及第一IPC确定图像帧对应的时间信息;随后,第一IPC发送图像帧和图像帧对应的时间信息。之后,第一IPC可以接收编码调整指示,编码调整指示是服务器根据第一IPC发送的图像帧对应的时间信息以及第二IPC发送的图像帧对应的时间信息,确定第一IPC与第二IPC的帧时间不同步时生成并发送的,第二IPC是第一IPC与第二IPC的帧时间是否同步的参考;然后,第一IPC根据编码调整指示进行编码调整,以使第一IPC读取下一帧待编码的原始图像的时间发生调整。这样,第一IPC通过根据服务器一次或多个发送的编码调整指示,进行一次或多次编码调整,以使一次或多次读取下一帧待编码的原始图像的时间发生调整,来实现与第二IPC的出帧时间同步;从而避免服务器在同一时间段内接收到的多个图像帧所拍摄的画面出现时间差,实现多个IPC的帧时间同步。

相对于现有技术借助硬件进行多个IPC的帧时间同步而言,本申请无需借助硬件,通过服务器与IPC之间的数据交互,即可实现多个IPC之间的帧时间同步,鲁棒性好;且能够降低成本,便于多个IPC的部署。

示例性的,第二IPC可以执行如下步骤:首先,第二IPC读取待编码的原始图像;接着,第二IPC将原始图像编码为图像帧,以及第二IPC确定图像帧对应的时间信息;随后,第二IPC发送图像帧和图像帧对应的时间信息。

示例性的,原始图像可以是指IPC的感光器采集的图像,也就是RAW(未加工)图像。

示例性的,图像帧也可以称为码流。

示例性的,图像帧可以是视频帧。

根据第二方面,第一IPC确定图像帧对应的时间信息,包括:第一IPC依据读取待编码的原始图像的时间,确定图像帧对应的时间信息。这样,各IPC发送的各图像帧对应的时间信息,更接近各图像帧拍摄的画面真正发生的时间,使得服务器确定的第一IPC发送的图像帧对应的时间信息与第二IPC发送的图像帧对应的时间信息之间的时间差更准确,进而第一IPC执行更少次数的编码调整即可实现与第二IPC的帧时间同步,减少同步第一IPC与第二IPC的帧时间的时长。

需要说明的是,时间信息可以依据发送图像帧之前的任一时间确定,例如,依据读取到原始图像的时间,确定图像帧对应的时间信息。又例如,依据编码得到图像帧的时间,确定图像帧对应的时间信息。还例如,依据在编码过程中执行的各种编码步骤(如编码预测、量化、熵编码等)的时间,确定图像帧对应的时间信息;等等,本申请对此不作限制。

根据第二方面,或者以上第二方面的任意一种实现方式,第一IPC发送图像帧和图像帧对应的时间信息,包括:第一IPC将图像帧对应的时间信息封装至图像帧的扩展字段中,发送封装后的图像帧。

示例性的,第一IPC可以按照视频编码协议对图像帧进行第一封装,并在按照视频编码协议封装图像帧时,将时间信息封装至图像帧的第一扩展字段(也就是视频编码协议的扩展字段)中。然后,第一IPC按照网络传输协议对第一封装后的图像帧进行第二封装,以及发送第二封装后的图像帧。

示例性的,第一IPC可以按照视频编码协议对图像帧进行第一封装;然后,按照网络传输协议对第一封装后的图像帧进行第二封装,并在按照网络传输协议封装图像帧时,将时间信息封装至图像帧的第二扩展字段(也就是网络传输协议的扩展字段)中;第一IPC再发送第二封装后的图像帧。

根据第二方面,或者以上第二方面的任意一种实现方式,编码调整指示为编码控制消息,编码控制消息包括偏移时间,偏移时间是服务器依据第一IPC发送的图像帧对应的时间信息与第二IPC发送的图像帧对应的时间信息之间的时间差确定的;第一IPC根据编码调整指示进行编码调整,包括:第一IPC根据偏移时间对读取下一帧待编码的原始图像的时间进行调整。这样,第一IPC通过一次编码调整,即可以实现与第二IPC的帧时间同步。

根据第二方面,或者以上第二方面的任意一种实现方式,编码调整指示为编码重启消息,第一IPC根据编码调整指示进行编码调整,包括:第一IPC根据编码重启消息进行编码重启。由于第一IPC进行编码重启后会立即进行编码,因此待编码重启成功后,可以读取下一帧待编码的原始图像,然后对下一帧待编码的图像进行编码。进而这种方式,也可以使得第一IPC读取下一帧待编码的原始图像的时间发生调整,即可以使得第一IPC读取下一帧待编码的原始图像的时间调整为编码重启成功时间。这种情况下,第一IPC通过一次或多次编码重启,即可实现与第二IPC的帧时间同步。

根据第二方面,或者以上第二方面的任意一种实现方式,编码调整指示为编码刷新消息,第一IPC根据编码调整指示进行编码调整,包括:第一IPC根据编码刷新消息进行帧刷新。其中,帧刷新即开始下一次编码,此时第一IPC可以读取下一帧待编码的原始图像,然后对下一帧待编码的原始图像进行编码。进而这种方式,也可以使得第一IPC读取下一帧待编码的原始图像的时间发生调整,即使得第一IPC读取下一帧待编码的原始图像的时间调整为当前时间。这种情况下,第一IPC通过一次或多次帧刷新,即可实现与第二IPC的帧时间同步。

第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第三方面,本申请提供一种同步系统,该系统包括:多个网络摄像机IPC和服务器,多个IPC包括第一IPC和第二IPC,第二IPC是第一IPC与第二IPC的帧时间是否同步的参考;

第一IPC,用于读取待编码的第一原始图像;将第一原始图像编码为第一图像帧,以及确定第一图像帧对应的时间信息;向服务器发送第一图像帧和第一图像帧对应的时间信息;以及接收编码调整指示;根据编码调整指示进行编码调整,以使读取下一帧待编码的第一原始图像的时间发生调整;

第二IPC,用于读取待编码的第二原始图像;将第二原始图像编码为第二图像帧,以及确定第二图像帧对应的时间信息;向服务器发送第二图像帧和第二图像帧对应的时间信息;

服务器,用于接收第一IPC发送的第一图像帧和第一图像帧对应的时间信息,以及接收第二IPC发送的第二图像帧和第二图像帧对应的时间信息;当根据第一IPC发送的第一图像帧对应的时间信息,以及第二IPC发送的第二图像帧对应的时间信息,确定第一IPC与第二IPC的帧时间不同步时,向第一IPC发送编码调整指示。

第三方面以及第三方面的服务器任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的服务器任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第三方面以及第三方面的第一IPC任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第三方面以及第三方面的第一IPC任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第四方面,本申请实施例提供一种网络摄像机IPC,可以用于实现第二方面以及第二方面的任意一种实现方式。

第四方面以及第四方面的第一IPC任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第五方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的同步方法。

第五方面以及第五方面任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第六方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的同步方法。

第六方面以及第六方面任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第六方面以及第六方面任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第七方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的同步方法。

第七方面以及第七方面任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第七方面以及第七方面任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第八方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的同步方法。

第八方面以及第八方面任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第八方面以及第八方面任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第九方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的同步方法。

第九方面以及第九方面任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第九方面以及第九方面任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第十方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的同步方法。

第十方面以及第十方面任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十方面以及第十方面任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第十一方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的同步方法。

第十一方面以及第十一方面任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十一方面以及第十一方面任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。

第十二方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的同步方法。

第十二方面以及第十二方面任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十二方面以及第十二方面任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。

附图说明

图1a为示例性示出的应用场景示意图;

图1b为示例性示出的应用场景示意图;

图1c为示例性示出的应用场景示意图;

图1d为示例性的示出的IPC的部署方式的示意图;

图1e为示例性示出的IPC的结构示意图;

图1f为示例性示出的同步组件的结构示意图;

图2为示例性示出的同步过程示意图;

图3a为示例性示出的同步过程示意图;

图3b为示例性示出的封装后的图像帧的帧结构示意图;

图3c为示例性示出的封装后的图像帧的帧结构示意图;

图3d为示例性示出的封装后的图像帧的帧结构示意图;

图3e为示例性示出的编码控制消息的消息结构示意图;

图4为示例性示出的同步过程示意图;

图5为示例性示出的同步过程示意图;

图6为示例性示出的同步系统示意图;

图7为示例性示出的装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。

本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。

图1a为示例性示出的应用场景示意图。

参照图1a,示例性的,n(n为大于1的整数)个IPC经由路由器连接到同一MP设备。n个IPC启动后,每个IPC均可以采集目标对象的原始图像(也就是RAW(未加工)图像),然后将原始图像编码成图像帧,并将图像帧发送至路由器;由路由器将图像帧转发给MP设备。MP设备接收到n个IPC发送的图像帧后,可以对n个IPC发送的图像帧进行处理,如视频拼接、FVV视频制作等,本申请对此不作限制。随后,MP设备可以将处理得到的图像帧发送给终端设备如手机、平板电脑等。

图1b为示例性示出的应用场景示意图。

参照图1b,示例性的,n个IPC经由基站和核心网连接到同一MEP设备。n个IPC启动后,每个IPC均可以采集目标对象的原始图像,然后将原始图像编码成图像帧,并将图像帧发送至基站。基站接收到n个IPC发送的图像帧后,可以将n个IPC发送的图像帧发送给核心网,由核心网的UPF(User Plane Function,用户面功能)网元将n个IPC发送的图像帧发送给MEP设备。MEP设备接收到n个IPC发送的图像帧后,可以对n个IPC发送的图像帧进行处理,如视频拼接、FVV视频制作等,本申请对此不作限制。随后,MEP设备可以将处理得到的图像帧发送给终端设备如手机、平板电脑等。

图1c为示例性示出的应用场景示意图。

参照图1c,示例性的,n个IPC通过通信卫星连接到同一MP设备。n个IPC启动后,每个IPC均可以采集目标对象的原始图像,然后将原始图像编码成图像帧,并将图像帧发送至通信卫星。通信卫星接收到n个IPC发送的图像帧后,可以将n个IPC发送的图像帧发送至MP设备。MP设备接收到n个IPC发送的图像帧后,可以对n个IPC发送的图像进行处理,如视频拼接、FVV视频制作等,本申请对此不作限制。随后,MP设备可以将处理得到的图像帧发送给终端设备如手机、平板电脑等。

需要说明的是,MP设备和MEP设备可以是服务器,该服务器可以是指单个服务器,也可以是指服务器集群(例如,云服务器等),本申请对此不作限制。

需要说明的是,IPC可以连续向MP设备/MEP设备发送多个图像帧。一种可能的方式中,连续发送的多个图像帧可以组成视频,此时,图像帧也可以称为视频帧。

图1d为示例性的示出的IPC的部署方式的示意图。在图1d中,示出了多个IPC相对于目标对象的部署方式。

参照图1d(1),示例性的,n(n=6)个IPC(包括IPC1、IPC2、IPC3、IPC4、IPC5个IPC6)可以环绕目标对象部署,每个IPC部署在相对于目标对象的不同角度。应该理解的是,图1d(1)仅是多个IPC部署方式的一个示例,本申请环绕目标对象部署的IPC的数量可以比图1d(1)示出的更多或更少,本申请对此不作限制。

示例性的,采用图1d(1)所示的部署方式的应用场景可以包括多种,例如,文艺类舞蹈表演、体育比赛、影视综艺、网红表演、景区留影、直播带货、展会引流、动作教学等。这样,MP设备/MEP设备对n个IPC发送的图像帧进行FVV视频制作后,可以为用户提供多种不同的画面观看角度。

参照图1d(2),示例性的,n(n=5)个IPC(包括IPC1、IPC2、IPC3、IPC4和IPC5)以用户位置为中心,朝向目标对象呈扇形部署。应该理解的是,图1d(2)仅是多个IPC部署方式的一个示例,本申请以用户位置为中心,朝向目标对象呈扇形部署的IPC的数量可以比图1d(2)示出的更多或更少,本申请对此不作限制。

示例性的,采用图1d(2)的部署方式的应用场景可以包括多种,例如,VR(VirtualReality,虚拟现实)场景、AR(Augmented Reality,增强现实)场景等。这样,MP设备/MEP设备对n个IPC中位置相邻的两个IPC发送的图像帧进行视频拼接后,可以形成用于VR场景和AR场景展示的全景图像。

图1e为示例性示出的IPC的结构示意图。

参照图1e,示例性的,IPC可以包括感光器、图像缓存、编码组件和通信组件。应该理解的是,图1e仅是本申请的一个示例,IPC可以包括比图1e示出的更多的组件,本申请对此不作限制。

参照图1e,示例性的,感光器是一种光传感器,经由外部曝光,接收光信号,转换成电信号。感光器与图像缓存可以通过排线连接,经由光电转换成图像数据(后续称为原始图像),实时输出到图像缓存中。编码组件可以按照预设周期从图像缓存中读取待编码的原始图像,并对原始图像进行编码,输出图像帧;编码得到的图像帧在通信组件中进行打包,经由网络发送到MP设备或MEP设备。

需要说明的是,IPC向MP设备/MEP设备连续发送图像帧的间隔,可以等于预设周期。

示例性的,MP设备/MEP设备在进行视频拼接或FVV视频制作之前,需要同步多个IPC发送的多个图像帧的帧时间(也就是同步同一时间段内(如同一天的8点10分22秒10毫秒~20毫秒这个时间段)接收到的多个IPC发送的多个图像帧拍摄的画面),以保证用于视频拼接或FVV视频制作的同一组中多个图像帧所拍摄的画面不存在时间差。

目前,导致多个IPC的帧时间不同步(即服务器在同一时间段内(如同一天的8点10分22秒10毫秒~20毫秒这个时间段)接收到的多个IPC发送的多个图像帧所拍摄的画面存在时间差)的原因之一在于,不同IPC编码启动时间(也就是第一次从图像缓存读取待编码的原始图像的时间)不一致。基于此,本申请提出一种同步方法,该方法通过在IPC发送图像帧的同时发送图像帧对应的时间信息;然后,由MP设备/MEP设备根据各IPC发送的图像帧对应的时间信息,判断多个IPC的帧时间是否同步;当确定多个IPC的帧时间不同步时,可以向部分IPC发送编码调整指示,来触发部分IPC进行编码调整,进而控制部分IPC的出帧时间,使得多个IPC出帧时间同步,从而实现多个IPC的帧时间同步。

图1f为示例性示出的同步组件的结构示意图。图1f所示的是服务器(如MP设备、MEP设备)中的同步组件,用于保证服务器侧实施本申请的同步方法。

参照图1f,示例性的,MP设备中同步组件可以包括时间对比模块、决策模块和控制模块。其中,时间对比模块用于对比两个IPC发送的两个图像帧对应的时间信息,确定时间差;决策模块用于根据时间差,决策是否发送编码调整指示;控制模块用于发送编码调整指示。

应该理解的是,图1f仅是本申请的一个示例,同步组件可以包括比图1f所示的更多或更少的模块,本申请对此不作限制。

以下对本申请的同步方法进行说明。

图2为示例性示出的同步过程示意图。在图2的实施例中,IPC的数量为n,n个IPC均连接到同一服务器,服务器可以是指单个服务器,也可以是指服务器集群;服务器可以是MP设备,也可以是MEP设备。

S201,IPC读取待编码的原始图像。

示例性的,n个IPC中可以包括1个第二IPC和(n-1)个第一IPC,其中,第二IPC是第一IPC与第二IPC的帧时间是否同步的参考,第一IPC是n个IPC中除第二IPC之外的IPC。

一种可能的方式中,可以由n个IPC相互协商确定n个IPC中的第一IPC和第二IPC。

一种可能的方式中,可以由服务器在开始同步多个IPC的帧时间时,确定n个IPC中的第一IPC和第二IPC。

示例性的,服务器在开始同步多个IPC的帧时间时,可以按照预设规则,确定n个IPC中的第一IPC和第二IPC。示例性的,预设规则可以按照需求设置,如随机选取,按照预设顺序选取等等,本申请对此不作限制。

示例性的,n个IPC在启动后,这n个IPC可以进行系统时间同步。示例性的,每个IPC启动后,均可以与时间服务器进行交互,进而与时间服务器的系统时间同步;这样,这n个IPC的系统时间即可以实现同步。

示例性的,S201包括S201a和S201b:

S201a,第一IPC读取待编码的原始图像。

S201b,第二IPC读取待编码的原始图像。

示例性的,第一IPC启动后,第一IPC中的感光器可以接收光信号,并将光信号转换成电信号;然后将经由光电转换得到的原始图像,实时输出到图像缓存中。这样,图像缓存可以存储有多帧原始图像。

示例性的,第一IPC启动后,编码组件也被启动;编码组件启动后,可以按照预设周期,从图像缓存中读取待编码的原始图像。这样,(n-1)个第一IPC均可以从对应的图像缓存中读取待编码的原始图像。需要说明的是,编码组件一个预设周期,可以从图像缓存中读取一帧待编码的原始图像。

示例性的,第二IPC启动后,第二IPC中的编码组件,也可以按照预设周期,从图像缓存中读取待编码的原始图像。

S202,IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S202包括S202a和S202b:

S202a,第一IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

S202b,第二IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,第一IPC的编码组件在读取到原始图像后,一方面,可以由编码组件对原始图像进行编码,输出图像帧(也就是码流)。示例性的,第一IPC对原始图像的编码方法可以按照需求确定,如可以采用H.264、H.265、H.266等编码协议对原始图像进行编码,本申请对此不作限制。

示例性的,第一IPC的编码组件在读取到原始图像后,另一方面,可以由编码组件或通信组件确定图像帧对应的时间信息。其中,图像帧对应的时间信息可以用于服务器同步多个IPC的帧时间。时间信息可以用于标识时间,时间信息如可以是时间戳,本申请对此不作限制。

一种可能的方式中,可以由编码组件依据编码组件从图像缓存中读取到待编码的原始图像的时间,确定图像帧对应的时间信息。例如,可以将编码组件从图像缓存中读取到待编码的原始图像的时间,作为图像帧对应的时间信息;又例如,可以将编码组件从图像缓存中读取到待编码的原始图像的时间,与预设时间(如1970年01月01日0点0分0秒10毫秒)的差值,作为图像帧对应的时间信息;本申请对此不作限制。示例性的,图像帧对应的时间信息的单位可以是ms(毫秒)。

一种可能的方式中,可以由编码组件依据编码组件编码得到图像帧的时间,确定图像帧对应的时间信息。例如,可以将编码组件编码得到图像帧的时间,作为图像帧对应的时间信息;又例如,可以将编码组件编码得到图像帧的时间与预设时间的差值,作为图像帧对应的时间信息;本申请对此不作限制。

一种可能的方式中,可以由编码组件依据编码组件在编码过程中执行的各种编码步骤(如编码预测、量化、熵编码等)的时间,确定图像帧对应的时间信息。例如,编码组件将编码组件开始进行编码预测的时间,作为确定图像帧对应的时间信息;又例如,编码组件将编码组件开始进行量化的时间,作为确定图像帧对应的时间信息;等等,本申请对此不作限制。

一种可能的方式中,可以由通信组件依据接收到图像帧的时间,确定图像帧对应的时间信息。例如,将通信组件接收到图像帧的时间,作为确定图像帧对应的时间信息;又例如,将通信组件接收到图像帧的时间与预设时间的差值,作为图像帧对应的时间信息。

应该理解的是,可以将向服务器发送图像帧之前的任一时间,作为图像帧对应的时间信息,本申请对此不作限制。

这样,(n-1)个第一IPC均可以得到图像帧和图像帧对应的时间信息。

示例性的,第二IPC的编码组件在读取到原始图像后,可以参照上述方式,得到图像帧和图像帧对应的时间信息。

S203,IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S203包括S203a和S203b:

S203a,第一IPC向服务器发送图像帧和图像帧对应的时间信息。

S203b,第二IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,(n-1)个第一IPC中每个第一IPC,均可以将得到的图像帧和图像帧对应的时间信息,发送给同一服务器。

示例性的,第二IPC也可以将得到的图像帧和图像帧对应的时间信息,发送给该服务器。

S204,服务器根据第一IPC发送的图像帧对应的时间信息,以及第二IPC发送的图像帧对应的时间信息,确定第一IPC与第二IPC的帧时间不同步时,向第一IPC发送编码调整指示。

示例性的,服务器可以以第二IPC发送的图像帧对应的时间信息为参考,根据各第一IPC发送的图像帧对应的时间信息,来判断各第一IPC与第二IPC的帧时间是否同步。

示例性的,针对一个第一IPC,服务器可以确定该第一IPC发送的图像帧对应的时间信息,与第二IPC发送的图像帧对应的时间信息之间的时间差。若该时间差大于阈值,则可以确定该第一IPC与第二IPC的帧时间不同步。若该时间差小于或等于阈值,则可以确定该第一IPC与第二IPC的帧时间同步。其中,阈值可以按照需求设置,本申请对此不作限制。

这样,按照上述方式,可以判断(n-1)个第一IPC中的每个第一IPC,与第二IPC的帧时间是否同步;也就是判断n个IPC的帧时间是否同步。

应该理解的是,服务器可以串行判断这(n-1)个第一IPC与第二IPC的帧时间是否同步,也可以并行判断这(n-1)个第一IPC与第二IPC的帧时间是否同步;本申请对此不作限制。

示例性的,针对一个第一IPC,若服务器确定该第一IPC与第二IPC帧时间不同步,则需要对该第一IPC进行同步调整,此时,可以生成编码调整指示;然后将编码调整指示,发送给该第一IPC。若服务器确定该第一IPC与第二IPC帧时间同步,则可以结束对该第一IPC的同步调整,此时无需生成编码调整指示。

S205,第一IPC根据编码调整指示进行编码调整,以使第一IPC读取下一帧的原始图像的时间发生调整。

示例性的,(n-1)个第一IPC中,任意一个第一IPC接收到服务器发送的编码调整指示后,可以根据编码调整指示进行编码调整,以使得第一IPC读取下一帧待编码的原始图像的时间发生调整。这样,当到达读取下一帧待编码的原始图像的时间时,可以返回执行上述S201~S205,如此循环往复,直至(n-1)个第一IPC与第二IPC的帧时间均同步为止。

需要说明的是,一种可能的方式中,(n-1)个第一IPC中可能仅存在部分第一IPC与第二IPC的帧时间不同步,此时服务器也仅向这部分的第一IPC发送编码调整指示(图2未示出)。一种可能的方式中,(n-1)个第一IPC与第二IPC的帧时间均不同步,此时服务器可以向这(n-1)个第一IPC发送编码调整指示(如图2所示)。

需要说明的是,对于一个第一IPC而言,可能在接收到服务器一次发送编码调整指示,并按照该编码调整指示进行编码调整后,即可以实现与第二IPC的帧时间同步;也就是该第一IPC进行一次编码调整即可以实现与第二IPC的帧时间同步。也可能在接收到服务器多次发送编码调整指示,并按照多次发送编码调整指示进行编码调整后,才能够实现与第二IPC的帧时间同步;也就是该第一IPC进行多次编码时间调整才实现与第二IPC的帧时间同步。

这样,第一IPC通过根据服务器一次或多次发送的编码调整指示,进行一次或多次的编码条件,以使一个或多次读取下一帧待编码的原始图像的时间的发生调整,来实现与第二IPC的出帧时间同步;从而避免服务器在同一时间段内接收到的多个图像帧所拍摄的画面出现时间差,实现多个IPC的帧时间同步。

相对于现有技术借助硬件进行多个IPC的帧时间同步而言,本申请无需借助硬件,通过服务器与IPC之间的数据交互,即可实现多个IPC之间的帧时间同步,鲁棒性好;且能够降低成本,便于多个IPC的部署。

图3a为示例性示出的同步过程示意图。在图3a的实施例中,编码调整指示为编码控制消息。

S301,IPC读取待编码的原始图像。

示例性的,S301包括S301a和S301b:

S301a,第一IPC读取待编码的原始图像。

S301b,第二IPC读取待编码的原始图像。

S302,IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S302包括S302a和S302b:

S302a,第一IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

S302b,第二IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S301~S302,可以参照上述S201~S202的描述,在此不再赘述。

S303,IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S303包括S303a和S303b:

S303a,第一IPC向服务器发送图像帧和图像帧对应的时间信息。

S303b,第二IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,第一IPC可以将图像帧对应的时间信息与图像帧封装在一起后,再向服务器发送封装在一起的图像帧和图像帧对应的时间信息。以下以一个第一IPC为例,对第一IPC发送图像帧和图像帧对应的时间信息的过程进行说明。

图3b为示例性示出的封装后的图像帧的帧结构示意图。

示例性的,可以将图像帧对应的时间信息封装至图像帧的扩展字段中;然后向服务器发送封装后的图像帧。

示例性的,可以为图像帧封装信息头(header)和扩展字段;并将图像帧对应的时间信息,封装在该扩展字段中;如图3b所示。

图3c为示例性示出的封装后的图像帧的帧结构示意图。在图3c的实施例中,本申请将图像帧对应的时间信息,封装在视频编码协议的扩展字段中。

示例性的,第一IPC的编码组件对原始图像进行编码得到图像帧后,可以按照视频编码协议(如H.264、H.265、H.266等编码协议)对图像帧进行第一封装;并在按照视频编码协议对图像帧进行第一封装的同时,将图像帧对应的时间信息,封装至图像帧的第一扩展字段中。示例性的,在按照视频编码协议对图像帧进行第一封装的过程中,可以为图像帧封装视频编码协议的信息头(header)(后续称为信息头1(header1))和第一扩展字段(也就是视频编码协议的扩展字段);并将图像帧对应的时间信息,封装在该第一扩展字段中;如图3c(1)所示。

这种情况下,图像帧对应的时间信息可以依据编码得到图像帧之前任一时间确定,如编码组件从图像缓存读取待编码的原始图像的时间,又如编码组件编码过程中执行的各种编码步骤的时间,还如编码得到图像帧的时间等等,本申请对此不作限制。

接着,编码组件可以将第一封装后的图像帧发送给通信组件,由通信组件按照网络传输协议对第一封装后的图像帧进行第二封装,得到第二封装后的图像帧。示例性的,在按照网络传输协议对第一封装后的图像帧进行第二封装的过程中,可以为第一封装后的图像帧封装网络传输协议的信息头(header)(后续称为信息头2(header2))和网络传输协议的扩展字段(后续称为第二扩展字段);如图3c(2)所示。随后,将第二封装后的图像帧发送给服务器。

图3d为示例性示出的封装后的图像帧的帧结构示意图。在图3d的实施例中,本申请将图像帧对应的时间信息,封装在网络传输协议的扩展字段中。

示例性的,第一IPC的编码组件对原始图像进行编码得到图像帧后,可以按照视频编码协议对图像帧进行第一封装,得到第一封装后的图像帧。示例性的,在按照视频编码协议对图像帧进行第一封装的过程中,可以为图像帧封装视频编码协议的信息头(header)(后续称为信息头1(header1))和第一扩展字段(也就是视频编码协议的扩展字段);如图3d(1)所示。

接着,编码组件可以将第一封装后的图像帧发送给通信组件,由通信组件按照网络传输协议对第一封装后的图像帧进行第二封装,并在对第一封装后的图像帧进行第二封装的同时,将图像帧对应的时间信息,封装至图像帧的第二扩展字段中。示例性的,在按照网络传输协议对第一封装后的图像帧进行第二封装的过程中,可以为图像帧封装网络传输协议的信息头(header)(后续称为信息头2(header2))和第二扩展字段(也就是网络传输协议的的扩展字段);并将图像帧对应的时间信息,封装在该第二扩展字段中;如图3d(2)所示。随后,将第二封装后的图像帧发送给服务器。

这种情况下,图像帧对应的时间信息可以依据对第一封装后的图像帧进行第二封装之前任一时间确定,如编码组件从图像缓存读取原始图像的时间,又如编码组件编码过程中执行的各种编码步骤的时间,又如编码得到图像帧的时间,又如对图像帧进行第一封装的时间等等,本申请对此不作限制。

示例性的,第二IPC也可以按照上述方式,通过将图像帧对应的时间信息封装在图像帧的扩展字段中,向服务器发送图像帧和图像帧对应的时间信息,在此不再赘述。

S304,服务器根据第一IPC发送的图像帧对应的时间信息,以及第二IPC发送的图像帧对应的时间信息,判断第一IPC与第二IPC是否同步。

示例性的,S304可以参照上述S204的描述,在此不再赘述。

S305,服务器确定第一IPC与第二IPC不同步时,向第一IPC发送编码控制消息。

示例性的,针对一个第一IPC,当服务器确定该第一IPC与第二IPC不同步时,可以根据该第一IPC发送的图像帧对应的时间信息,与第二IPC发送的图像帧对应的时间信息之间的时间差,生成编码控制消息(Control Message)。其中,编码控制消息可以包括消息头(header)和时间偏移字段,如图3e所示。时间偏移字段用于携带偏移时间,偏移时间可以根据该第一IPC发送的图像帧对应的时间信息,与第二IPC发送的图像帧对应的时间信息之间的时间差确定。

一种可能的方式中,偏移时间可以是第二IPC发送的图像帧对应的时间信息,减去第一IPC发送的图像帧对应的时间信息,所得到的时间差。此时,偏移时间可能是正数,也可能是负数。

一种可能的方式中,若第二IPC发送的图像帧对应的时间信息,小于第二IPC发送的图像帧对应的时间信息,则第二IPC发送的图像帧对应的时间信息,减去第一IPC发送的图像帧对应的时间信息,所得到的时间差为负数。此时,可以计算时间差加上预设周期的和值,将该和值作为偏移时间。若第二IPC发送的图像帧对应的时间信息,大于第二IPC发送的图像帧对应的时间信息,则第二IPC发送的图像帧对应的时间信息,减去第一IPC发送的图像帧对应的时间信息,所得到的时间差为正数。此时,可以将该时间差作为偏移时间。也就是说,这种方式中,得到的偏移时间均为正数。

一种可能的方式中,若第二IPC发送的图像帧对应的时间信息,大于第二IPC发送的图像帧对应的时间信息,则第二IPC发送的图像帧对应的时间信息,减去第一IPC发送的图像帧对应的时间信息,所得到的时间差为正数。此时,可以计算时间差减去预设周期的差值,将该差值作为偏移时间。若第二IPC发送的图像帧对应的时间信息,小于第二IPC发送的图像帧对应的时间信息,则第二IPC发送的图像帧对应的时间信息,减去第一IPC发送的图像帧对应的时间信息,所得到的时间差为负数。此时,可以将该时间差作为偏移时间。也就是说,这种方式中,得到的偏移时间均为负数。

应该理解的是,本申请对如何确定偏移时间的方式不作限制。

S306,第一IPC按照偏移时间对读取下一帧待编码的原始图像的时间进行调整。

示例性的,第一IPC接收到编码控制消息后,可以对编码控制消息进行解析,获取编码控制消息携带的偏移时间。接着,第一IPC根据预设周期,确定读取下一帧待编码的原始图像的时间;然后将读取下一帧待编码的原始图像的时间,移动该偏移时间。这样,第一IPC发送的下一个图像帧和第二IPC发送的下一个图像帧拍摄的画面不会出现时间差,进而实现了第一IPC与第二IPC的帧时间同步。

这样,第一IPC在接收到服务器一次发送编码控制消息,并按照该编码控制消息中偏移时间对读取下一帧待编码的原始图像的时间进行调整后,即可以实现与第二IPC的帧时间同步。也就是说,在图3a的实施例中,对于每个第一IPC,通过一次编码调整,就可以实现与第二IPC的帧时间同步。

此外,若图像帧的时间信息是依据读取待编码的原始图像的时间确定的,则各IPC发送的各图像帧对应的时间信息,更接近各图像帧拍摄的画面真正发生的时间;这样,服务器确定的第一IPC发送的图像帧对应的时间信息与第二IPC发送的图像帧对应的时间信息之间的时间差更准确,进而服务器向第一IPC发送更少次数的编码调整指示,以及第一IPC执行更少次数的编码调整,即可实现第一IPC与第二IPC的帧时间同步,减少同步第一IPC与第二IPC的帧时间的时长。

需要说明的是,对于图3a的实施例而言,对于不具有处理编码控制消息功能的IPC,可以在该IPC中添加处理编码控制消息的服务/应用程序;这样,该IPC即可以完成图3a中S306。从而按照图3a实施例中的步骤与服务器协同,实现帧时间同步。

图4为示例性示出的同步过程示意图。在图4的实施例中,编码调整指示为编码重启消息。

S401,IPC读取待编码的原始图像。

示例性的,S401包括S401a和S401b:

S401a,第一IPC读取待编码的原始图像。

S401b,第二IPC读取待编码的原始图像。

S402,IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S402包括S402a和S402b:

S402a,第一IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

S402b,第二IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S401~S402,可以参照上述S201~S202的描述,在此不再赘述。

S403,IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S403包括S403a和S403b:

S403a,第一IPC向服务器发送图像帧和图像帧对应的时间信息。

S403b,第二IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S403可以参照上述S303的描述,在此不再赘述。

S404,服务器根据第一IPC发送的图像帧对应的时间信息,以及第二IPC发送的图像帧对应的时间信息,判断第一IPC与第二IPC是否同步。

示例性的,S304可以参照上述S204的描述,在此不再赘述。

S405,服务器确定第一IPC与第二IPC不同步时,向第一IPC发送编码重启消息。

示例性的,编码重启消息(Restart Message),用于触发第一IPC进行编码重启,也就是重启编码组件。

S406,第一IPC根据编码重启消息进行编码重启。

示例性的,第一IPC接收到编码重启消息后,可以重启编码组件;编码组件在重启成功后,即可以开始从图像缓存中获取下一帧待编码的原始图像,然后执行上述S402~S403。这样,第一IPC从图像缓存中读取下一帧待编码的原始图像的时间,被调整为了编码重启成功时间。

需要说明的是,一种情况可以是,第一IPC进行此次编码重启后,其从图像缓存读取下一帧待编码的原始图像的时间,与第二IPC从图像缓存读取下一帧待编码的原始图像的时间相同;这样,该第一IPC再次执行完S401a~S403a,以及第二IPC再次执行完S401b~S403b后,服务器可以接收该第一IPC发送的下一个图像帧和图像帧对应的时间信息,以及第二IPC发送的下一个图像帧和图像帧对应的时间信息,并可以确定该第一IPC与第二IPC的帧时间同步,无需再生成编码重启消息。也就是说,第一IPC经过一次编码重启,即可实现与第二IPC的帧时间同步。

一种情况可以是,第一IPC进行此次编码重启后,其从图像缓存读取下一帧待编码的原始图像的时间,与第二IPC从图像缓存读取下一帧待编码的原始图像的时间仍然不相同;这样,该第一IPC再次执行完S401a~S403a,以及第二IPC再次执行完S401b~S403b后,服务器可以接收该第一IPC发送的下一个图像帧和图像帧对应的时间信息,以及第二IPC发送的下一个图像帧和图像帧对应的时间信息;并可以确定该第一IPC与第二IPC的帧时间不同步,此时服务器可以再次向第一IPC发送编码重启消息,然后该第一IPC再次根据编码重启消息进行编码重启。如此循环往复,直至该第一IPC与第二IPC的帧时间同步为止。也就是说,第一IPC需要经过多次编码重启,才可实现与第二IPC的帧时间同步。

也就是说,在图4的实施例中,第一IPC需要经过一次或多次的编码重启,才能够实现与第二IPC的帧时间同步。

图5为示例性示出的同步过程示意图。在图5的实施例中,编码调整指示为编码刷新消息。

S501,开始时,IPC读取待编码的原始图像。

示例性的,S501包括S501a和S501b:

S501a,开始时,第一IPC读取待编码的原始图像。

S501b,开始时,第二IPC读取待编码的原始图像。

S502,IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S502包括S502a和S502b:

S502a,第一IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

S502b,第二IPC将原始图像编码为图像帧,以及确定图像帧对应的时间信息。

示例性的,S501~S502,可以参照上述S201~S202的描述,在此不再赘述。

S503,IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S503包括S503a和S503b:

S503a,第一IPC向服务器发送图像帧和图像帧对应的时间信息。

S503b,第二IPC向服务器发送图像帧和图像帧对应的时间信息。

示例性的,S503可以参照上述S303的描述,在此不再赘述。

S504,服务器根据第一IPC发送的图像帧对应的时间信息,以及第二IPC发送的图像帧对应的时间信息,判断第一IPC与第二IPC是否同步。

示例性的,S304可以参照上述S204的描述,在此不再赘述。

S505,服务器确定第一IPC与第二IPC不同步时,向第一IPC发送编码刷新消息。

示例性的,编码刷新消息(Refresh Messgae),用于触发第一IPC进行帧刷新,也就用于触发第一IPC中编码组件进行帧刷新。

S506,第一IPC根据编码刷新消息进行帧刷新。

示例性的,第一IPC接收到编码刷新消息后,可以触发编码组件进行帧刷新,即触发编码组件立即编码一个图像帧,此时,编码组件可以立即从图像缓存中获取下一帧待编码的原始图像,然后执行上述S502~S503。这样,第一IPC从图像缓存中读取下一帧待编码的原始图像的时间,被调整为了当前时间。

需要说明的是,一种情况可以是,第一IPC进行此次编码刷新后,其从图像缓存读取下一帧待编码的原始图像的时间,与第二IPC从图像缓存读取下一帧待编码的原始图像的时间相同;这样,该第一IPC再次执行完S501a~S503a,以及第二IPC再次执行完S501b~S503b后,服务器可以接收该第一IPC发送的下一个图像帧和图像帧对应的时间信息,以及第二IPC发送的下一个图像帧和图像帧对应的时间信息,并可以确定该第一IPC与第二IPC的帧时间同步,无需再生成编码刷新消息。也就是说,第一IPC经过一次帧刷新,即可实现与第二IPC的帧时间同步。

一种情况可以是,第一IPC进行此次编码刷新后,其从图像缓存读取下一帧待编码的原始图像的时间,与第二IPC从图像缓存读取下一帧待编码的原始图像的时间仍然不相同;这样,该第一IPC再次执行完S501a~S503a,以及第二IPC再次执行完S501b~S503b后,服务器可以接收该第一IPC发送的下一个图像帧和图像帧对应的时间信息,以及第二IPC发送的下一个图像帧和图像帧对应的时间信息;并可以确定该第一IPC与第二IPC的帧时间不同步,此时服务器可以再次向第一IPC发送编码刷新消息,然后该第一IPC再次根据编码刷新消息进行编码刷新。如此循环往复,直至该第一IPC与第二IPC的帧时间同步为止。也就是说,第一IPC经过多次帧刷新,才可实现与第二IPC的帧时间同步。

也就是说,在图5的实施例中,第一IPC需要通过一次或多次的帧刷新,才可以实现与第二IPC的帧时间同步。

需要说明的是,现有IPC具有编码重启功能和编码刷新功能,因此可以执行图4实施例中的S406和图5实施例中的S506。这样多个IPC按照图4实施例中的步骤与服务器协同,或者按照图5实施例中的步骤与服务器协同,即可实现帧时间同步。

需要说明的是,服务器可以按照设定时长对多个IPC的帧时间进行周期性同步,其中,设定时长可以按照需求设置,可以大于预设周期,本申请对此不作限制。

图6为示例性示出的同步系统示意图。在图6的实施例中,图6中的同步系统可以包括多个IPC和服务器,多个IPC可以包括至少一个第一IPC和一个第二IPC,第二IPC是第一IPC与第二IPC的帧时间是否同步的参考;其中,

第一IPC,用于读取待编码的第一原始图像;将第一原始图像编码为第一图像帧,以及确定第一图像帧对应的时间信息;向服务器发送第一图像帧和第一图像帧对应的时间信息;以及接收编码调整指示;根据编码调整指示进行编码调整;

第二IPC,用于读取待编码的第二原始图像;将第二原始图像编码为第二图像帧,以及确定第二图像帧对应的时间信息;向服务器发送第二图像帧和第二图像帧对应的时间信息;

服务器,用于接收第一IPC发送的第一图像帧和第一图像帧对应的时间信息,以及接收第二IPC发送的第二图像帧和第二图像帧对应的时间信息;当根据第一IPC发送的第一图像帧对应的时间信息,以及第二IPC发送的第二图像帧对应的时间信息,确定第一IPC与第二IPC的帧时间不同步时,向第一IPC发送编码调整指示。

示例性的,服务器,用于向第一IPC发送编码控制消息;其中,编码控制消息包括偏移时间,偏移时间依据第一IPC发送的第一图像帧对应的时间信息,与第二IPC发送的第二图像帧对应的时间信息之间的时间差确定;编码控制消息用于触发第一IPC根据偏移时间对获取下一帧待编码的第一原始图像的时间进行调整。

示例性的,服务器,用于向第一IPC发送编码重启消息,编码重启消息用于触发第一IPC进行编码重启。

示例性的,服务器,用于向第一IPC发送编码刷新消息,编码刷新消息用于触发第一IPC进行帧刷新。

示例性的,若第一IPC发送的第一图像帧对应的同步时间信息,和第二IPC发送的第二图像帧对应的同步时间信息之间的时间差大于阈值,则确定第一IPC与第二IPC的帧时间不同步。

示例性的,第一IPC,用于依据读取待编码的第一原始图像的时间,确定第一图像帧对应的时间信息。

示例性的,第一IPC,用于将第一图像帧对应的时间信息封装至第一图像帧的扩展字段中,发送封装后的第一图像帧。

示例性的,编码调整指示为编码控制消息,编码控制消息包括偏移时间,偏移时间依据第一IPC发送的第一图像帧对应的时间信息与第二IPC发送的第二图像帧对应的时间信息之间的时间差确定;第一IPC,用于依据偏移时间对读取下一帧待编码的第一原始图像的时间进行调整。

示例性的,编码调整指示为编码重启消息;第一IPC,用于根据编码重启消息进行编码重启。

示例性的,编码调整指示为编码刷新消息,第一IPC,用于根据编码刷新消息进行帧刷新。

示例性的,第二IPC,用于依据读取待编码的第二原始图像的时间,确定第二图像帧对应的时间信息。

示例性的,第二IPC,用于将第二图像帧对应的时间信息封装至第二图像帧的扩展字段中,发送封装后的第二图像帧。

应该理解的是,服务器以及IPC所执行的步骤的技术效果可参见上述图2、图3a、图4和图5中任一实施例所描述的技术效果,此处不再赘述。

一个示例中,图7示出了本申请实施例的一种装置700的示意性框图装置700可包括:处理器701和收发器/收发管脚702,可选地,还包括存储器703。

装置700的各个组件通过总线704耦合在一起,其中总线704除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线704。

可选地,存储器703可以用于存储前述方法实施例中的指令。该处理器701可用于执行存储器703中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。

装置700可以是上述方法实施例中的电子设备或电子设备的芯片。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的同步方法。

本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的同步方法。

另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的同步方法。

其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

相关技术
  • 一种淋膜聚乳酸树脂的合成工艺
  • 一种淋膜用复合BioPBS树脂和制备淋膜纸的工艺
技术分类

06120116516026