发明内容
本发明所要解决的技术问题是:提供一种基于多PC的可无限放大的大屏拼接方法,可在现有大屏拼接技术上实现无限放大,能够灵活改变大屏拼接后的尺寸和分辨率,并解决了各部分图像的同步问题,保证拼接后的视频图像的质量。
此外,本发明还提供一种用于实现上述大屏拼接方法的***。
为解决上述技术问题,本发明采用如下技术方案:
一种大屏拼接方法,所述方法包括如下步骤:
A、将同一视频流发送到通过网络连接的多台PC解码终端,通过UDP组播发送等方式保证数据同步发送;
B、各个PC解码终端通过NTP时钟同步和帧时间戳延时调节来保证大屏拼接后的图像质量;
C、各PC解码终端裁剪并显示部分图像,保证大屏拼接后图像的完整并且不重叠。
上述步骤A中PC解码终端为普通PC机,每台PC终端负责控制拼接后大屏中一块或多块显示器的视频播放。使用多台PC解码终端是因为单台PC可以控制显示器的大小和分辨率有限,但由于多台PC解码终端之间可以随意组合和扩充,使大屏拼接的尺寸和分辨率可以灵活变化和无限放大,解决了现有大屏拼接技术支持尺寸和分辨率有限,最大分辨率固定的不足。
上述步骤A中的视频流由视频源发出,视频源应包括用于视频采集的摄像头,用于视频图像压缩编码的编码器。编码器编码产生的码流应该保留有各帧图像的采集时间,视频源应该具有将视频流发送给各PC终端的能力。
上述步骤A中各PC解码终端运行有一个或多个解码实例,每个解码实例控制与此PC终端相连接的一块或多块显示器的视频播放。每个解码实例包含的模块有网络接收模块、视频解码模块、时钟同步模块、视频裁剪模块、图像显示模块。
所述网络接收模块负责从网络中接收视频源发出的视频数据。
所述视频解码模块,与网络接收模块相连,将视频源发出压缩编码后的视频数据解码转换成可以直接显示到显示器上的数据,视频解码模块解码后应保留有每帧视频图像的采集时间等信息。
所述时钟同步模块,与视频解码模块相连,根据每帧视频图像的采集时间和延时信息,计算出该帧的显示时间并传递给下个模块,保证各个解码终端显示视频的连贯性及拼接后大屏各部分图像的同步性。
所述视频裁剪模块,与时钟同步模块相连,根据其控制的显示器和拼接后大屏的关系裁剪需要显示的部分视频图像。
所述图像显示模块,与视频裁剪模块相连,根据时钟同步模块计算出的图像显示时间,将解码裁剪后的图像缩放到控制显示器所需比例进行显示。
上述步骤A中,因为大屏拼接后显示的为同一路视频图像,即各PC解码终端接收到的视频流应由同一视频源发出,本发明将各个PC解码终端和视频源通过网络进行连接,视频源通过该该网络向各个PC终端发送视频流数据。为了保证整个视频图像的同步显示,首先应保证视频源同时向各PC终端发送视频流数据。本发明使用UDP组播或轮流循环发送的方式向各个PC发送,其中UDP组播是TCP/IP网络协议中的一种传输方式,轮流循环发送是视频源在收到数据后即使用循环的方式,将数据轮流发送到各PC终端,可以使用TCP协议传输,也可以使用UDP方式传输。但由于网络延时等原因,各PC终端并一定能够同时收到视频流数据,由此延时产生的不同步问题将在上述步骤B中解决。
上述步骤B由上述视频解码实例中的时钟同步模块实现。在经过编码、传输、解码等一系列处理之后,视频源采集的间隔均匀的视频数据,,在显示时并一定能够保证大屏图像的均匀和同步。一帧视频图像从摄像头采集到显示到大屏消耗的延时有编码延时、网络传输延时、解码延时等。
所述编码延时为编码器将摄像头采集的数据进行编码压缩所消耗的时间。由于每帧图像的复杂度不同,编码所消耗的时间也有所差别,所以每帧的编码延时也有所不同,但根据步骤A,由于视频数据是同步发送给各PC解码端,所以一帧数据的编码延时对于所有PC解码终端都应相同。
所述网络传输延时是由各PC解码终端完成数据接收的时间不同产生,由各PC解码终端到视频源的网络情况和每帧的数据长度决定。所以每帧视频数据对于每台PC终端的网络传输延时都有所不同。
所述解码延时为PC解码终端解码各帧视频数据所消耗的时间。由于每帧数据的编码复杂度和各PC解码终端的硬件配置不同,所以每帧视频数据对于各PC终端的解码延时也应有所不同。
根据上述延时,假设一帧视频图像的采集时间为D,显示时间为{P1,P2,P3,……},编码延时为e,网络传输延时为{t1,t2,t3,……},解码延时为{d1,d2,d3,……},其中下标表示各个PC终端。所以终端i最快的显示该帧的时间应为:
Pi=D+e+ti+di;
为了保证各个解码终端的同步显示。只需该帧在所有终端上在可能产生的最大延时后显示,假定该值为P,则有:
P=max{Pi};
因为采集时间D都相同,所以有
P=D+X;
其中X即为该帧在各PC终端的最大延时,即:
X=max{e+ti+di};
由于每帧的编码延时,网络传输及解码延时都不同,假设视频流中各帧图像的采集时间为{D1,D2,D3,……},显示时间为{P11,P12,P13,…,P21,P22,P23,…,P31,P32,P33,……},编码延时为{e1,e2,e3,……},网络传输延时为{t11,t12,t13,…,t21,t22,t23,…,t31,t32,t33,……},解码延时为{d11,d12,d13,…,d21,d22,d23,…,d31,d32,d33,……},其中第一个下标表示帧序号,第二个下标表示各解码终端。所以终端j显示视频流中的第i帧的时间应为
Pij=Di+ei+tij+dij;
为了保证各个解码终端各帧的同步显示,只需各帧在所有终端上可能产生的最大延时后显示,假设Pi即为帧i在各终端上的显示时间,即
Pi=max{Pij};
因为i帧的采集时间对于各终端都相同,所以有
Pi=Di+Xi;
其中Xi即为帧i在各PC终端的最大延时,即:
Xi=max{ei+tij+dij};
所以各PC终端在播放帧i时,只需帧i的采集时间Di上加上最大延时Xi,即可保证视频流中各帧图像显示的同步,即拼接后大屏各部分图像的同步。
上述方法保证了拼接后大屏各部分图像的同步,但由于各帧图像可能产生的最大延时可能有所不同,由此各帧图像之间的显示之间的时间间隔不相同,即视频流图像不均匀。为了保证视频图像的均匀播放,只需各帧播放时所加的最大延时相同即可,因此可以取各帧可能产生最大延时的最大值即可,即:
Pi=Di+X;
其中X为各帧在各终端可能产生的最大延时的最大值,即
X=max{Xi};
因为一帧视频图像的复杂度越高,视频流数据量也就也大,理论上其编码延时e,传输延时t及解码延时也就越高。所以上面的X的值可以近似表示成
X=max{ei}+max{tij}+max{dij};
上述的时钟同步方法需要知道各帧在各PC终端上可能产生的最大延时X,但该值不是一个确定值,并且可能随着时间段的不同有所该变。本发明通过迭代的方式来自动确定该值,并让该值随着时间段的改变而改变。视频源获取每帧图像的采集时间Di,并设定一个最大延时值X,并将这两个值保存在码流中发送到各PC解码终端。由于初始化时不知道最大延时值的精确值,可以设置一个经验估计值。PC解码终端在解码后根据采集时间和最大延时值确定一帧图像的显示时间Pi(Pi=Di+X),并和当前的***时间Si进行比较,保存其差值Ei(Ei=Pi-Si)。每隔一段时间,各PC终端即将该段时间内的差值最小值min(Ei)发送给视频源,视频源选择各PC终端发送的最大的一个差值来调整最大延时值X,如果差值小于0,说明当前设置的最大延时值X比实际小,并且至少需要增加差值的绝对值;如果差值大于0,说明各PC终端都需要等待一些时间才能显示,即当前设定的最大延时值X比实际大,需要减掉这个差值。通过这种方法,可以较为准确的获取最大延时值,并让其随着时间段的变化而自动调节。尽量减少了延时调节造成的误差,保证了大屏拼接后视频的均匀同步的显示。
根据上述延时处理方法,由于各PC终端是根据其当前***时间来确定视频图像的最终显示时间。因此各个PC终端的***时间之间的不同,也会造成拼接后大屏显示的不同步。本发明使用NTP时钟同步协议来解决此问题,在PC解码终端所在的网络中部署一台NTP服务器,可以将各个PC终端的***时间差保持在1ms之内。此NTP服务器并不需要是一***立的服务器,也可以使用其中的一台PC解码终端来替代。
上述步骤C由上述视频解码实例中的视频裁剪模块实现。视频源发送给各PC解码终端的数据都是完整的视频图像数据,而每个PC只需控制部分图像的显示。所以PC终端在解码后需要进行准确的剪裁,来保证拼接后的图像的完整并且没有重叠。裁剪中需要的参数有视频源图像的原始高度和宽度,裁剪的开始位置,裁剪后的高度和宽度。PC解码终端的裁剪参数可以通过配置文件来确定。
一种大屏拼接***,所述***包括视频源、若干台解码终端;所述视频源用以提供视频流;所述台解码终端与所述视频源连接,各解码终端通过网络连接;各解码终端运行有一个或多个解码单元,每个解码单元控制与对应解码终端相连接的一块或多块显示器的视频播放;每个解码单元包括:
网络接收模块,用以从网络中接收所述视频源发出的视频数据;
视频解码模块,与所述网络接收模块相连,用以将视频源发出压缩编码后的视频数据解码转换成可以直接显示到显示器上的数据,视频解码模块解码后保留有每帧视频图像的采集时间信息;
时钟同步模块,与视频解码模块相连,用以根据每帧视频图像的采集时间和延时信息,计算出该帧的显示时间并传递给下个模块,保证各个解码终端显示视频的连贯性及拼接后大屏各部分图像的同步性;
视频裁剪模块,与时钟同步模块相连,根据其控制的显示器和拼接后大屏的关系裁剪需要显示的部分视频图像;
图像显示模块,与视频裁剪模块相连,根据时钟同步模块计算出的图像显示时间,将解码裁剪后的图像缩放到控制显示器所需比例进行显示。
作为本发明的一种优选方案,所述***进一步包括一NTP服务器,连接各解码终端,用以统一各个解码终端的***时间。
作为本发明的一种优选方案,所述解码终端进一步包括数据剪裁模块,用以在解码后对解码后的数据进行剪裁,裁剪中需要的参数包括视频源图像的原始高度和宽度、裁剪的开始位置、裁剪后的高度和宽度;解码终端的裁剪参数通过配置文件来确定。
本发明的有益效果在于:本发明提出的基于多PC的可无限放大的大屏拼接方法,通过PC终端的可无限扩充实现了大屏拼接的可无限放大,通过PC解码终端的随意组合实现了大屏拼接尺寸和分辨率灵活变化,通过视频延时调节保证了大屏拼接后各部分图像的同步以及整个图像的均匀连续。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本发明揭示了一种基于多PC的可无限放大的大屏拼接方法,该技术能在现有大屏拼接技术上实现无限放大,能够灵活改变大屏拼接后的尺寸和分辨率,并解决了各部分图像的同步问题,保证拼接后的视频图像的质量。
图1为本发明的基本框架,本发明揭示一种基于多PC的可无限放大的大屏拼接方法,所述方法包括如下步骤:
【步骤一】将同一视频流发送到通过网络连接的多台PC解码终端,通过UDP组播发送等方式保证数据同步发送。
将多台PC解码终端和视频源通过网络进行连接,每台PC终端控制一块或多块大屏中的显示器,在支持的尺寸和分辨率下,PC终端可以控制的显示器可以随意组合,每台PC终端控制的显示器的块数、尺寸和分辨率都可以不同。选择一台PC终端或一***立的服务器做为NTP服务器。设置视频源中的编码器,码流发送各PC终端。为了尽可能使PC同时收到数据,发送时也应该尽可能同时将数据发送出去,所以发送方式应使用UDP组播或轮流发送方式,轮流发送时为了避免每次发送过程消耗过长时间,应该一有数据就发送,而不应等到一帧数据完整才发送出去。
在各PC终端中部署一个或多个软解播放实例(解码单元)来控制视频图像在显示器上的显示。因为是大屏拼接,所以每个PC终端控制的显示器都应该全屏进行播放。有的PC终端支持一个应用程序控制多个显示器,则只需部署一个软解播放实例,否则在控制多块显示器的情况下,应部署对应个软解播放实例。
图2展示了软解播放实例的模块结构。其中网络接收模块和视频源通过网络连接,负责接收视频数据,接收到数据即传递给视频解码模块。视频解码模块进行解码,转换成可以直接显示到显示器上RGB或YUV数据。时钟同步模块用于各PC模块的时间同步,保证拼接后大屏图像的连贯性和同步。视频裁剪模块用于大屏拼接的图像拼接,防止出现图像遗漏或重叠。图像显示用于将视频图像显示到显示器上。
【步骤二】各个PC解码终端通过NTP时钟同步和帧时间戳延时调节来保证大屏拼接后的图像质量。
该步骤由PC终端软解播放实例中的时钟同步模块完成。由于视频图像从采集到显示到大屏上,需要经过若干个阶段的处理,每个阶段的处理过程都需消耗一定的时间,不仅每帧图像消耗的时间不同,而且各PC解码终端消耗的时间也可能会有所不同,因此保证大屏拼接后图像的质量,需要对图像进行同步处理。
由于视频播放的时间戳控制是根据视频源的采集时间和PC终端的当前***时间来确定,因此为了保证大屏拼接后各部分图像的同步,首先要保证各PC终端和视频源的***时间的同步。在启动软解播放实例前,先启用NTP服务器进行PC终端和视频源之间的时间同步。
图3展示了本发明对视频图像同步处理的原理图,其中每一个圆点都表示一帧视频图像在不同处理阶段所在的时间点。从图中可以看出每帧图像在每个处理阶段所消耗的时间都可能有所不同。在视频采集阶段,摄像头均匀的采集视频并传递给编码器进行编码,由于每帧图像的复杂度不同,因此编码所消耗的时间也有所差异,图中的ei即表示编码器产生的编码器延时。从视频源发送到PC解码终端产生的延时由ti表示,di则表示解码所产生的延时,所以第i帧图像从采集到解码完成所消耗的时间为Xi=ei+ti+di,假设第i帧图像的采集时间为Di,则该帧图像能够显示在屏幕上最早时间应为Di+Xi。由于各帧图像消耗的延时时间不同,如果在解码完成后就直接将该帧图像显示在屏幕上,则会使视频图像出现播放不均匀的情况。为了解决上述情况,保证视频图像的均匀播放,观察图3中各帧产生的延时Xi,Xi+1,Xi+2,Xi+3,其中第i+2帧产生的延时Xi+2最大,如果我们将各帧以采集时间为基准,都延时Xi+2后显示,即延时可能产生的最大延时Xmax后显示,即可保证视频图像的均匀播放。
上述方法解决了在单台PC解码终端上视频播放均匀性的问题。由于大屏拼接的视频图像是由多台PC终端拼接而成,由于各PC终端可能产生的最大延时Xmax有所不同,拼接后的视频可能出现各部分图像播放不同步的问题,影响了大屏拼接的质量。由于各部分图像的不同步也是由于延时时间的不同而产生,因此也可以解决均匀性的方法来处理,即将各帧图像延后各PC终端可能产生的最大延时后显示,即可保证大屏拼接后的视频同步均匀的显示,并且由于视图图像的显示时间和采集时间差是一个固定值,可以保证大屏拼接后的延时始终为固定值,不会随着播放时间的增加而越来越大。
上述解决大屏拼接后视频图像同步均匀的方法中,需要知道各帧在各PC终端所消耗延时的最大值,但是此值是一个不易获取的值,不能通过人工手段获取,并且肯随着时间段的变化而变化,本发明通过各帧的采集时间和各PC解码终端的解码完成时间来自动确定。首先视频源采集一帧视频图像后,将采集时间Di保存在码流中发送出去,码流中还应包含当前的最大延时时间Xmax,初始化时不知道最大延时时间Xmax的大小,可以设置一个可能的经验值。各PC解码终端在接收到数据并解码完成后,根据视频数据终端采集时间Di和最大延时时间Xmax,计算出该帧的显示时间Pi=Di+Xmax,并获取当前的***时间Si,如果Si大于或等于显示时间Pi,则在裁剪图像后直接显示在大屏上。如果Si小于显示Pi,则等待Pi-Si段时间后再显示,并将Pi-Si的值发送给视频源。视频源中的编码器接收到各PC终端返回的Pi-Si值后,选出其中的最小值Xmin。如果该值为正数,表示每个PC终端都需等待一段时间才能显示图像,即当前设置的最大延时时间Xmax的过大,应该把Xmax减小,减小后的值为Xmax-Xmin,相反的,如果该值为负数,则表示Xmax的值太小,应该把Xmax加大,加大后的值应为Xmax+|Xmin|。为了避免每次PC终端解码终端解码一帧都向视频源发送一个时间差,造成最大延时时间的值频繁变化并且不能反应一段时间内的具体情况,将解码终端发送设置一个时间间隔,发送的Pi-Si值也是该段时间的最大值,则可以更准确反应此段时间内的最大延时值。
【步骤三】各PC解码终端裁剪并显示部分图像,保证大屏拼接后图像的完整并且不重叠。
该步骤由PC终端软解播放实例中的视频裁剪模块完成。由于每个PC解码终端都是获取的完整的视频图像,而其实际显示的只是其中的部分图像。为了避免整个拼接后的大屏图像出现重叠或者遗漏,各PC终端应该进行准确的裁剪。裁剪的数据为解码后可以直接显示到显示器上的数据,裁剪的位置由该PC终端控制的显示器和大屏的关系来确定。因此裁剪的参数应该包括原始视频图像的高度和宽度,裁剪的开始位置以及裁剪后的视频图像的高度和宽度。每台PC的裁剪参数可以不同,但在其使用过程中,其参数固定,因此本发明使用配置文件的形式将这些参数设置软解播放实例,软解播放实例在初始化时即确定各参数的值,并且在运行过程中不改变这些参数的值。
以上揭示了本发明的大屏拼接方法,本发明在揭示上述大屏拼接方法的同时,还揭示了一种大屏拼接***,所述***包括视频源、若干台解码终端。所述视频源用以提供视频流;所述台解码终端与所述视频源连接,各解码终端通过网络连接。
各解码终端运行有一个或多个解码单元,每个解码单元控制与对应解码终端相连接的一块或多块显示器的视频播放;每个解码单元包括:
网络接收模块,用以从网络中接收所述视频源发出的视频数据;
视频解码模块,与所述网络接收模块相连,用以将视频源发出压缩编码后的视频数据解码转换成可以直接显示到显示器上的数据,视频解码模块解码后保留有每帧视频图像的采集时间信息;
时钟同步模块,与视频解码模块相连,用以根据每帧视频图像的采集时间和延时信息,计算出该帧的显示时间并传递给下个模块,保证各个解码终端显示视频的连贯性及拼接后大屏各部分图像的同步性;
视频裁剪模块,与时钟同步模块相连,根据其控制的显示器和拼接后大屏的关系裁剪需要显示的部分视频图像;
图像显示模块,与视频裁剪模块相连,根据时钟同步模块计算出的图像显示时间,将解码裁剪后的图像缩放到控制显示器所需比例进行显示;
数据剪裁模块,用以在解码后对解码后的数据进行剪裁,裁剪中需要的参数包括视频源图像的原始高度和宽度、裁剪的开始位置、裁剪后的高度和宽度;解码终端的裁剪参数通过配置文件来确定。
综上所述,本发明提出的基于多PC的可无限放大的大屏拼接方法,通过PC终端的可无限扩充实现了大屏拼接的可无限放大,通过PC解码终端的随意组合实现了大屏拼接尺寸和分辨率灵活变化,通过视频延时调节保证了大屏拼接后各部分图像的同步以及整个图像的均匀连续。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。