发明内容
本发明提供了一种同步解码方法及其装置,用以一定程度上解决因网络传输过程引入网络延时导致的解码不同步的问题。
本发明提供的同步解码方法,应用于视频监控系统,包括:
预先在解码器中指定一个主解码器,其余为从解码器;
当解码同步周期到达时,主解码器根据解码出的当前帧确定解码基准,并向从解码器发送同步报文,其中携带有主解码器确定出的解码基准信息;从解码器根据所述同步报文中携带的解码基准信息和网络延时确定解码基准,并根据确定出的解码基准解码接收到的码流。
本发明提供的解码器,应用于视频监控系统,包括:
第一同步基准确定模块,用于在本解码器作为主解码器时,在解码同步周期到达时,根据解码出的当前帧确定解码基准;
同步报文发送模块,用于在本解码器作为主解码器时,向从解码器发送同步报文,其中携带有主解码器确定出的解码基准信息;
同步报文接收模块,用于在本解码器作为从解码器时,接收主解码器发送的同步报文,其中携带有主解码器确定出的解码基准信息;
第二同步基准确定模块,用于在本解码器作为从解码器时,根据所述同步报文中携带的解码基准信息和网络延时确定解码基准;
解码模块,用于在本解码器作为主解码器时解码接收到的码流,在本解码器作为从解码器时,根据所述第二同步基准确定模块确定出的解码基准解码接收到的码流。
本发明提供的另一种同步解码方法,应用于视频监控系统,包括:
在解码同步周期到达时,各解码器根据解码出的当前帧确定解码基准,并向其它解码器发送同步报文,其中携带有本解码器确定出的解码基准;
各解码器接收到其它解码器发送的同步报文后,选举出本解码同步周期的主解码器,根据该主解码器所确定出的解码基准和网络延时确定解码基准,并根据确定出的该解码基准解码接收到的码流。
本发明提供的另一种解码器,应用于视频监控系统,包括:
第一同步基准确定模块,用于在解码同步周期到达时,根据解码出的当前帧确定解码基准;
同步报文发送模块,用于向其它解码器发送同步报文,其中携带有第一同步基准确定模块确定出的解码基准;
同步报文接收模块,用于接收其它解码器发送的同步报文,其中携带有同步报文发送者解码器确定出的解码基准;
第二同步基准确定模块,用于在所述同步报文接收模块接收到其它解码器发送的同步报文后,选举出本解码同步周期的主解码器,并根据该主解码器所确定出的解码基准和网络延时确定解码基准;
解码模块,用于根据第二同步基准模块确定出的该解码基准解码接收到的码流。
本发明的有益技术效果包括:
由于在确定解码基准时,将网络延时作为参考依据,因而一定程度上消除了网络延时对解码同步的影响,与现有技术相比,提高了解码同步精度。
具体实施方式
本发明实施例所应用的视频监控系统架构可如图1所示,其中,管理服务器一方面用于管理各编码器、解码器,指定实况流的走向,另一方面还用于配置解码基准同步策略、设备时间同步策略。
各编码器和解码器保持时间同步。具体同步的方式可以是:各设备统一采用NTP(Network Time Protocol,网络时间协议)服务器进行时间同步;或者各设备注册到同一个管理服务器,然后与该服务器保持时间同步。
当客户端请求调阅编码器实时编码的视频流(即实况流)时,编码器的实况码流经过网络传送给解码器,各解码器收到实况码流并解码。该过程中,导致解码不同步的原因可能有两个:一方面,在某些情况下,各编码器对实况进行编码时,编码的时刻点并不是严格一致的;另一方面,由于码流经过网络引入了延时,不同的解码器真正解码并显示时,实际相同时刻发生的事情将在不同的显示器上不同的基准时间显示,影响用户对实况的判断。
有的码流仅提供相对时间信息,比如当前帧为第几帧。如果编码器采用不同的基准时间进行编码,则会出现以下情况:编码器1的第一帧和编码器2的第一帧,并不是在一个基准时间进行编码的。如果解码器均同步解码第一帧,则实际输出的实况,两者显示的实况并不在同一个时刻点。
针对上述编码器编码不同步的问题,本发明实施例采用以下解决方案,通过统一编码器的编码基准时间,使各编码器的编码同步。
编码同步的解决方案1:管理服务器设置各编码器的编码基准时间,比如当前时间的000秒作为编码基准时间,然后下发编码基准时间到各编码器,以使各编码器按照该下发的编码基准时间编码。
编码同步的解决方案2:如图2所示,预先指定需要同步的编码器,并指定其中一个编码器作为主编码器;主编码器下发编码基准时间给其它各编码器,以使其它各编码器按照该下发的编码基准时间编码。
上述编码同步的解决方案1,设置简单、实现方便,相对方案2更佳。
针对解码不同步的问题,本发明实施例通过同步当前解码基准时间,统一各解码器的当前解码基准时间,达到各解码器统一解码同一基准时间的实况流的目的。
参见图3,为本发明实施例一提供的视频监控系统中解码同步流程示意图。在解码视频码流之前,先为视频监控系统中的解码器分配角色,即,指定其中的一个解码器作为主解码器,其余为从解码器,主解码器负责下发解码基准到各从解码器,各从解码器根据主解码器以及网络延时,确定各自的解码基准并以此作为解码同步的依据。如图所示,在解码同步周期到达时,该流程可包括:
步骤301,主解码器根据解码出的当前帧确定解码基准,并向从解码器发送同步报文,其中携带有主解码器确定出的解码基准信息。
步骤302,各从解码器根据接收到的同步报文中携带的解码基准信息和网络延时确定自己的解码基准,并根据确定出的解码基准解码接收到的码流。其中,根据确定出的解码基准解码接收到的码流的操作可包括:从缓存的实况流中读取该基准时间的码流并解码。
上述流程中,主解码器所确定出的解码基准可以是该当前帧的编码时间,这种情况下,各从解码器在同步报文中携带的时间信息所指示的时间基础上,加上与主编码器之间的网络延时,得到解码基准。主解码器所确定出的解码基准还可以是该当前帧的编号,这种情况下,各从解码器在同步报文中携带的帧号的基础上,加上与主编码器之间的网络延时与帧率的乘积,得到解码基准。
上述流程中,从解码器到主解码器的网络延时,可以基于经验值确定。一种更为精确的方法是:主解码器将其发送同步报文的当前时间携带在同步报文中,以使从解码器根据接收该报文的当前时间以及主解码器发送该同步报文的时间计算出网络延时。
为了更清楚的说明本发明实施例一的具体实现过程和同步原理,下面结合图4和图5进一步说明。
如图4和图5所示,在一个解码同步周期内,各时间点的操作如下:
F1:时间A:编码器1在时间A对实况进行编码,然后通过网络将实况码流1发送到主解码器:解码器1。
F2:时间1:解码器1接收实况流1并缓存。
F3:时间2:解码器1解码缓存中的实况流。解码器按照预置的速度对码流进行解码,将解码出的当前帧的时间确定为基准时间,即基准时间A。
F4:时间3:解码器1发送一个同步报文给解码器2,通知解码器2当前解码码流的基准时间为时间A。可选的,同步报文中还可携带解码器1的当前时间,以便进行网络延时计算。图6示出了一种同步报文格式。
F5:时间4:解码器2解析接收到的同步报文,得知解码器当前解码码流的基准时间为时间A。同步报文从解码器1传输到解码器2,引入了网络延时。如果解码器2按照时间A为基准时间进行解码,解码器1已经按照新的基准时间解码,最后解码输出,仍然不同步。所以解码器2计算解码基准时间,需要考虑网络延时(时间4-时间3)。解码器2计算当前码流的解码基准时间,其中:
时间A以时间为单位时,解码器2根据下式确定基准时间:
基准时间=时间A+网络延时........................[1]
时间A以帧为单位时,解码器2根据下式确定基准时间:
基准时间=时间A+(网络延时×帧率)............[2]
其中,网络延时=时间4-时间3,即,解码器2接收到同步报文时的当前时间与该同步报文中携带的解码器1发送该同步报文的时间的差值。需要说明的是:在基准时间以帧为单位时,要求各编码器的帧率相同。
F6:解码器2按照确定出的基准时间解码并输出实况。
通过本发明实施例一的流程可以看出,各从解码器根据主解码器的解码基准和与主解码器的网络延时确定新的解码基准,再根据该解码基准进行解码,从而一定程度上消除了网络延时对解码同步的影响,提高了解码同步精度。
参见图7,为本发明实施例二提供的解码同步流程示意图。在解码同步周期到达时,如图所示,该流程可包括:
步骤701,各解码器根据解码出的当前帧确定解码基准,并向其它解码器发送同步报文,其中携带有本解码器确定出的解码基准和本解码器的缓存使用情况(该缓存用于缓存接收到的码流);
步骤702,各解码器接收到其它解码器发送的同步报文后,根据本解码器的缓存使用情况和其它解码器的缓存使用情况,选举出本解码同步周期的主解码器,根据该主解码器所确定出的解码基准和与该主解码器之间的网络延时确定解码基准,并根据确定出的该解码基准解码缓存中的码流。其中,根据确定出的解码基准解码接收到的码流的操作可包括:从缓存的实况流中读取该基准时间的码流并解码。
在具体实现时,各从解码器选举主解码器的过程可以是:根据本解码器的缓存使用情况和其它解码器的缓存使用情况,选举缓存使用量最大或最小的解码器为本解码同步周期的主解码器。通常情况下,各解码器的缓存使用情况不会完全相同。
上述流程中,各解码器到主解码器的网络延时,可以基于经验值确定。一种更为精确的方法是:各解码器将其发送同步报文的当前时间携带在同步报文中,以使其它解码器根据接收该报文的当前时间以及该解码器发送该同步报文的时间计算出网络延时。
由于网络状态可能发生变化,某段时间可能解码器1的缓存比较多,各解码器以解码器1的解码基准时间为基准;而再过一段时间,可能解码器2的缓存比较多,各解码器以解码器2的解码基准时间为基准。各解码器自主确定基准解码基准时间,无需人工干预。
上述流程中,解码器所确定出的解码基准可以是该当前帧的编码时间,这种情况下,各解码器在选举出主解码器后,在主解码器确定出的时间的基础上,加上与该主编码器之间的网络延时,得到解码基准。解码器所确定出的解码基准还可以是该当前帧的编号,这种情况下,各解码器在选举出主解码器后,在主解码器确定出的帧号的基础上,加上与主编码器之间的网络延时与帧率的乘积,得到解码基准。
管理服务器分配给各解码器的视频源码流可以有不同的优先级,并且根据网络情况或业务变化(如分配给解码器的视频源发生变化时)等情况,还可以调整各解码器的视频源码流的优先级。基于此,针对实施例二的一种替代方案是:在解码同步周期到达时,各解码器向其它解码器发送同步报文,其中携带本解码器的解码基准、本解码器当前的时间,以及本解码器处理的码流优先级信息;各解码器根据接收到的报文报文中携带的码流优先级信息和本解码器所解码的码流的优先级,确定本同步周期的主解码器,然后根据该主解码器发送的同步报文中携带的解码基准和与该主解码器之间的网络延时,确定解码基准,并根据确定出的解码基准进行解码。其中,各解码器可将码流优先级最高或最低的解码器选举为主解码器。网络延时计算方法,以及根据主解码器的解码基准和到主解码器的网络延时计算解码基准的方法,同前所述,在此不再赘述。
通过本发明实施例二及其替代方案的流程可以看出,各解码器根据内存使用情况选举出统一的主解码器,根据该主解码器所确定出的解码基准和网络延时确定出新的解码基准,再根据该解码基准进行解码,从而一定程度上消除了网络延时对解码同步的影响,提高了解码同步精度。
基于相同的技术构思,本发明实施例还提供了一种可应用于上述实施例一的解码器。如图8所示,该解码器可包括:
第一同步基准确定模块801,用于在本解码器作为主解码器时,在解码同步周期到达时,根据解码出的当前帧确定解码基准;
同步报文发送模块802,用于在本解码器作为主解码器时,向从解码器发送同步报文,其中携带有主解码器确定出的解码基准信息;
同步报文接收模块803,用于在本解码器作为从解码器时,接收主解码器发送的同步报文,其中携带有主解码器确定出的解码基准信息;
第二同步基准确定模块804,用于在本解码器作为从解码器时,根据所述同步报文中携带的解码基准信息和网络延时确定解码基准;
解码模块805,用于在本解码器作为主解码器时解码接收到的码流,在本解码器作为从解码器时,根据第二同步基准确定模块804确定出的解码基准解码接收到的码流。
进一步的,第一同步基准确定模块801所确定出的解码基准为当前帧的编码时间,第二同步基准确定模块804具体用于:在同步报文中携带的时间信息所指示的时间基础上,加上与所述主编码器之间的网络延时,得到解码基准。或者,第一同步基准确定模块801所确定出的解码基准为当前帧的编号,第二同步基准确定模块804具体用于:在同步报文中携带的帧号的基础上,加上与所述主编码器之间的网络延时与帧率的乘积,得到解码基准。
进一步的,所述同步报文中还携带有主解码器发送该同步报文时的时间,第二同步基准确定模块804还用于:根据接收该同步报文的时间和该同步报文中携带的主解码器发送该同步报文的时间,确定该从解码器到主解码器的网络延时。
基于相同的技术构思,本发明实施例还提供了一种可应用于上述实施例二及其替代方案的解码器,如图9所示,该解码器可包括:
第一同步基准确定模块901,用于在解码同步周期到达时,根据解码出的当前帧确定解码基准;
同步报文发送模块902,用于向其它解码器发送同步报文,其中携带有第一同步基准确定模块确定出的解码基准;
同步报文接收模块903,用于接收其它解码器发送的同步报文,其中携带有同步报文发送者解码器确定出的解码基准;
第二同步基准确定模块904,用于在同步报文接收模块903接收到其它解码器发送的同步报文后,选举出本解码同步周期的主解码器,并根据该主解码器所确定出的解码基准和网络延时确定解码基准;
解码模块905,用于根据第二同步基准模块904确定出的该解码基准解码接收到的码流。
进一步的,所述同步报文中还携带有本解码器的缓存使用情况,所述缓存用于缓存接收到的码流;相应的,第二同步基准确定模块904可根据本解码器的缓存使用情况和其它解码器的缓存使用情况,选举出本解码同步周期的主解码器。或者,所述同步报文中还携带有本解码器的码流优先级信息;相应的,第二同步基准确定模块904可根据本解码器的码流优先级和其它解码器的码流优先级,选举出本解码同步周期的主解码器。
进一步的,第一同步基准确定模块901所确定出的解码基准为当前帧的编码时间;第二同步基准确定模块904可在主解码器确定出的时间的基础上,加上与该主编码器之间的网络延时,得到解码基准。或者,第一同步基准确定模块901所确定出的解码基准为当前帧的编号;第二同步基准确定模块904可在主解码器确定出的帧号的基础上,加上与主编码器之间的网络延时与帧率的乘积,得到解码基准。
进一步的,所述同步报文中还携带有本解码器发送该同步报文的时间;第二同步基准确定模块904可根据接收该主解码器发送的同步报文的时间和该主解码器发送该同步报文的时间,确定该从解码器到主解码器的网络延时。
综上所述,本发明的上述实施例,一方面,通过各编码器同步编码基准,使各编码器的编码时刻点一致;另一方面:通过在确定解码基准时考虑到了网络延时,从而实现了解码同步。并且,与现有技术效果,提高了解码同步的精度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。