本公开的技术一般涉及视频流源的组播流,尤其涉及消除组播流环境中视频流之间的切换延迟。
背景技术:
本部分中所论述的主题不应仅因其在本部分中提及而被假定为是现有技术。同理,在本部分中提及的或者与提供为背景技术的主题相关联的问题,不应视为已在现有技术中预先认知。本部分中的主题仅代表不同的解决途径,其本身也可以对应于所要求保护技术的实施。
组播流技术涉及向多个独立客户发送多个视频/音频流。每个这样的流可以产生于不同的视频/音频源,并且可以采用诸如因特网、以太网、帧中继、光纤等的不同网络技术来进行传送。此类系统的主要缺点是延迟,即所需带宽与视频/音频源流的数量成正比。因此,需要高带宽来执行高质量的视频/音频流。
在需要在不同的压缩的视频/音频流之间即时切换的组播流环境中,延迟的问题更加严重。已经提出了各种解决方案来缩短压缩的视频/音频流之间的切换延迟。但是,这些解决方案尚不完全凑效,这是由于这些解决方案要么向客户提出了额外的不期望的计算要求,要么局限于在产生自同一源的流之间切换。因此,需要新的技术方案来克服现有技术中的局限性。
产生在组播流环境中的多个压缩视频/音频源之间进行平滑转换,既无需额外带宽也不会加重客户计算资源的负担的机会。可以增强用户体验和满意度。
技术实现要素:
本公开的技术涉及能够在压缩视频流之间平滑转换。尤其涉及计划要在显示的区域中示出的压缩视频流之间的转换,使得在对第一视频流解码、解压缩并缓冲以便显示的同时,在按计划示出第二视频流前的预定时间开始解码、解压缩并缓冲第二视频流。本公开的技术还涉及在按计划示出第二视频流时,在针对所述第一视频流与所述第二视频流的缓冲器之间切换,从而所述第二视频流无延迟地即时显示。
在一个实施方式中,在针对第一视频流和第二视频流的缓冲器之间切换还包括:修改对应于第一视频流和第二视频流的显示层的z顺序,从而图形卡组成使得第二视频流而非第一视频流可见的显示。
在另一个实施方式中,在针对所述第一视频流与所述第二视频流的缓冲器之间切换还包括:所述第一视频流和所述第二视频流的输送的层2切换,以输送所述第二视频流而非第一视频流用于显示。
在又一个实施方式中,在针对第一视频流与所述第二视频流的缓冲器之间切换还包括:更新视频切换矩阵,以将所述第二视频流而非所述第一视频流结合到所述显示。
本公开的技术的另一个特征是评价所述第二视频流中关键帧之间的时间间隔并且至少部分地基于所述时间间隔来选择所述预定时间。
在多对第一视频流和第二视频流的情况下,本公开的技术还包括:对计划的所述第一视频流与所述第二视频流之间的转换排序,以减少在所述第一视频流的解码与所述第二视频流的解码之间同时转换的视频流的数量。
通过后续附图、具体实施方式和权利要求能够获悉本发明的其它方面和优点。
附图说明
在附图中,相同的附图标记在整个不同的图中表示相同的部分。而且,附图不是必须按比例绘制,而是通常将重点放在阐明公开的技术的原理上。在以下说明中,参照以下附图对公开的技术的各种实施方式进行描述,其中:
图1例示了示例性组播流环境。
图2例示了可以应用本文所公开的技术的示例工作流的框图。
图3示出了在时移模式中对当前和后续视频流进行伪同时处理以使得压缩视频流之间进行平滑转换(smooth transitioning)的一个实施方式。
图4例示了评价关键帧之间的时间间隔并且基于评价的时间间隔来计划切换的一个实施方式。
图5是修改组播流环境中不同的压缩视频流的z顺序以便能够在压缩视频流之间进行即时切换的一个实施方式。
图6是在压缩视频流之间平滑地转换的典型方法。
图7是在压缩视频流之间平滑地转换的示例计算机系统的框图。
具体实施方式
下面参照附图进行详细描述。示例实施方式被描述以例示所公开的技术,而非限制本公开的范围,本公开的范围由权利要求限定。本技术领域的普通技术人员将辩出关于以下描述的各种等同变化。
术语
本文所使用的“第二”或“后续”视频流指的是跟在在前的“第一”或“当前”视频流之后的已知数据、反馈、信号、事件或值,所述在前的“第一”或“当前”视频流可以是数据、反馈、信号、事件或值。在一个实施方式中,在“第一”或“当前”视频流之后对“第二”或“后续”视频流进行处理。在另一个实施方式中,“第二”或“后续”视频流与“第一”或“当前”视频流同时被处理。在又一个实施方式中,“第二”或“后续”视频流与“第一”或“当前”视频流被伪同时或伪并行处理,使得在相对于开始处理“第一”或“当前”视频流的预定时间延迟后开始处理“第二”或“后续”视频流,其中术语“处理”包括特定视频流的显示。在伪同时模式下,“第一”或“当前”视频流的解码、解压缩、缓冲或显示与“第二”或“后续”视频流的解码、解压缩、缓冲或显示之间存在时间重叠,其中“第二”或“后续”视频流的解码、解压缩及缓冲是在显示“第二”或“后续”视频流的切换命令被接收之前完成的。
本文所使用的已知信号、事件或值是“基于”受已知信号、事件或值影响的在前信号、事件或值的在前信号、事件或值。如果有介于中间的处理要素、步骤或时期,已知信号、事件或值仍然可以“基于”在前信号、事件或值。如果介于中间的处理要素或步骤结合多于一个信号、事件或值,该处理要素或步骤的信号输出被认为是“基于”该信号、事件或值的输入的各个。如果已知信号、事件或值与在前信号、事件或值一样,这仅仅是一种退化情况,在该情况下,已知信号、事件或值仍然被认为是“基于”或“取决于”在前信号、事件或值。以类似方式来定义已知信号、事件或值对另一信号、事件或值的“响应性”。
简介
现有的组播媒体流解决方案以各种方式来解决切换延迟的技术问题。例如,为了将在使用H.264压缩的视频流时的中断最小化,可以减小生成I帧的最大间隔。采用这种方法,如果至少每秒一次生成I帧,则开始示出新的视频流所需的时间量略多于一秒,平均时间是半秒。采用这种方法的问题是,频繁发送I帧降低了视频流的压缩量,这会增加发送视频流所需的带宽量。在另一个示例中,一些视频流源支持强制传送关键帧的请求。然而,只有少数视频流源支持这种强制性请求。
本公开的技术解决了在巡演布置中在压缩视频流之间切换时视频墙控制系统上看到的可见中断的技术问题。诸如Jupiter Systems的Canvas系统的视频墙控制系统提供了在同一视频显示窗口中示出来自一系列输入的输出的能力。这种能力被称为“巡演(touring)”。在历史上,这类系统往往采用直接的未压缩的视频输入,但是正逐渐转变为经由网络发送的诸如H.264的视频格式的压缩输入。在巡演系统中,在直接连接的未压缩的输入之间进行切换典型地只需要几帧、即1秒的1/10级别,如同变换电视频道。
当使用经由网络发送的压缩输入时,在输入之间进行切换典型地会造成视频流的中断(达数秒),导致系统在开始解码新流时白屏或冻屏。该中断的原因是,视频压缩技术涉及频繁发送全视频帧(“I帧”或“关键帧”)然后仅发送“delta”信息(“P帧”或“B帧”),该“delta”信息仅用最近发送的I帧就可以被重构成全帧。当切换到新流时,显示输出因此无法继续直到在新流中接收到I帧为止,即使那样也需再多几帧以便解码器逻辑能够生成平滑的视频输出。显示白屏或冻屏会显著降低用户体验。
本文中提出的技术方案包括采用额外一组解码逻辑和工作存储器以影响在组播流环境中从一个视频流至另一个视频流的即时切换。特别地,该技术方案包括应用处理-起始时间延迟,以伪同时或伪并行或同时或并行使用多个解码逻辑和工作存储单元来处理针对同一显示的当前和后续视频流,使得后续视频流的解码在按计划发生切换之前就已开始。
在一个实施方式中,为视频墙控制系统设置巡回计划,使得替代简单地在时间T停止当前流Sc的处理并开始后续视频流Ss的处理,本公开的技术在更早的时间T-t开始后续视频流Ss的后台处理,然后在时间T将显示从当前流Sc切换到后续视频流Ss。
后续视频流的后台处理包括对后续视频流分配特定流处理资源,所述特定流处理资源对后续视频流解码以及解压缩、并将处理过的后续视频流存储在特定流缓冲器中以便于在切换期间后续视频流的即时调度。在一个实施方式中,这是通过以下操作来实现的:利用图形处理单元(GPU)的图形命令来定义针对组播流环境中的不同视频流的窗口层的顺序。该顺序被称为“z顺序”,其将显示后续视频流的第二窗口布置在显示当前流的第一窗口之后。这样的布置准备了无需中断当前流的显示而进行即时切换的组播流环境。
在当前流的显示期间对后续视频流处理并存储在其特定流缓冲器中之后,可以以最小甚至零切换延迟无缝地执行从当前流到后续视频流的切换。在一个实施方式中,这是通过更改第二窗口的z顺序使得第二窗口在显示当前流的第一窗口的前面来实现的。此外,本公开的技术从在前的当前流解除分配任何处理资源,并删除显示在前的当前流的第一窗口。
因此,本公开的技术是对在巡回布置中的视频流之间进行切换的当前方法的改进,这是因为其消除了在更改视频流时的可见中断,对所有的视频流资源都起作用,并且无需频繁传送I帧。
本公开的技术能够方便地应用在诸如网络运行中心(NOC)、公用设施控制中心、智能交通管理中心、程序控制、民用和军事监控系统、呼叫中心、财务管理控制室、会议室和可视电话会议室之类的设施。
本公开的技术能够以多种方式来实现,包括实现为过程、装置、系统、设备、方法、诸如包含计算机可读指令或计算机程序代码的计算机可读存储介质的计算机可读介质,或者实现为包括具有体现在其中的计算机可读程序代码的计算机可用介质的计算机程序产品。
参照图1至图7对本公开的技术的实施方式进行详细的描述。
组播流环境
描述了用于在压缩视频流之间平滑地转换的系统和各种实施。将参照图1对系统和处理进行描述。图1示出了根据一个实施方式的系统的示意性架构层级。由于图1是架构图,故某些细节被省略,以使得描述更加清楚。对图1的详述将组织如下:首先,将对图中的要素进行说明,然后将说明其互连关系。接着,将更详细地描述系统中要素的使用。
图1包括组播流环境100。组播流环境100包括用户计算设备102a至102n、网络接口104和显示墙106。图1还示出了转换器112、网络115、正交解码器(quad decoder)116、解压缩器126和视频流源132a至132n。缓冲器122a至122n存储其它资源中的来自不同视频流源132a至132n的处理过的流并且专用于个别的视频流源,使得例如将缓冲器122a指定给视频源132a而将缓冲器122b指定给视频源132b。
在其它实施方式中,组播流环境100可以不具有和如上所列相同的要素或组件并且/或者可以具有代替如上所列或除如上所列之外的其它/不同的要素或组件,比如按需数据库服务、当前模块或应用平台。不同的要素或组件可以组合成单个软件模块,并且多个软件模块可以在同一硬件上运行。
现在将描述组播流环境100的要素的互连。网络115结合(couple)用户计算设备102a至102n、显示墙106、网络接口104和视频流源132a至132n以进行通信(用双箭头表示)。实际通信路径可以是经由公共和/或私有网络的点对点通信路径。诸如AppWrapper(未示出)的一些项目可能例如通过应用商店(未示出)来间接输送。所有的通信可以经由各种网络发生,例如私有网络、VPN、MPLS电路或者因特网,并且可以采用适当的API和数据交换格式,例如REST、JSON、XML、SOAP和/或JMS。所有的通信是可以加密的。这种通信通常通过诸如EDGE、3G、4G LTE、Wi-Fi和WiMAX的协议经由如下网络发生,例如LAN(局域网)、WAN(广域网)、电话网络(公共交换电话网络(PSTN))、会话初始化协议(SIP)、无线网络、点到点网络、星形网络、令牌环网络、枢纽网络以及包括移动互联网在内的因特网。此外,可以使用各种授权和身份验证技术-例如用户名/密码、OAuth、Kerberos、SecureID、数字证书等-来保护通信。
网络接口104、转换器112、正交解码器116、解压缩器126和缓冲器122a至122n可以包括结合以彼此进行通信的一个或多个计算机和计算机系统。它们也可以是一种或多种虚拟的计算和/或存储资源。例如,转换器112可以是一个或多个亚马逊EC2实例,并且缓冲器122a至122n可以是亚马逊S3存储器。可以采用诸如来自Salesforce的Force.com、Rackspace或Heroku的其它计算即服务平台,而不是在直接物理计算机或传统虚拟机上实施上面认定的组件。此外,上面认定的组件可以被实现为引擎。引擎可以是不同类型的,包括图形处理单元(GPU)、工作站、服务器、计算集群、刀片服务器、服务器农场或任何其它数据处理系统或计算设备。
用户计算设备102a至102n可以是台式个人计算机、便携式计算机、平板计算机、智能手机、个人数字助理(PDA)、数字图象采集设备、手机或使设备或任何无线接入协议(WAP)使能设备或能够直接或间接接入因特网或其它网络连接的任何其它计算设备。用户计算设备102a至102n可以运行HTTP客户端,例如浏览程序,比如微软的Internet Explorer浏览器、Mozilla的火狐浏览器、欧朋浏览器、谷歌浏览器或针对手机、PDA或其它无线设备等支持WAP的浏览器,其允许视频会议的参与者通过网络115从组播流环境100接入、处理并查看信息、页以及可获得该信息、页的应用。
用户计算设备102a至102n还包括诸如键盘、鼠标、轨迹球、触摸板、触摸屏、触笔等的一个或多个用户接口设备,以便结合网页、表格、应用以及由组播流环境100或其它系统或服务器提供的其它信息与视频会议界面进行交互。例如,用户计算设备102a至102n可以用于安排转换、会议、执行选择、访问组播流环境100涉及的数据和应用,并且用于搜索存储数据或者允许视频会议参与者与各种视频接口页面进行交互。
当在组播流环境100中运行时,摄像机132a至132n可以从不同地点和/或用户提供实况视频馈送(即,音频和图像信息)。在一些实施方式中,摄像机132a至132n可以是任何类型的摄像机,包括对整个可见光谱敏感的摄像机,或者更典型地,对有限波段(例如,红外(IR)波段或紫外波段)高度敏感的摄像机。更普遍地,此处的术语“摄像机”指的是能够拍摄目标的图像并且以数字数据的形式表现该图像的任何设备(或设备组合)。例如,摄像机132a至132n可以是监视摄像机或安装在诸如建筑物或电线杆之类的结构上的私人摄像机。在另一个示例中,摄像机132a至132n可以嵌入在上述用户计算设备102a至102n,或者可以是能够在电视会议期间传输视频流的外围设备。
在一些实施方式中,用户计算设备102a至102n和摄像机132a至132n可以采用TCP/IP(传送控制协议和互联网协议)网络与不同的服务器和处理器(104、112、116和126)进行通信,并且在更高的网络层级采用诸如HTTP、FTP、AFS和WAP等的其它公共互联网协议来进行通信。
在一个示例中采用的是HTTP,在组播流环境100中,用户计算设备102a至102n和摄像机132a至132n可以包括用于发送/接收HTTP消息到/从HTTP服务器的HTTP客户端。这样的HTTP服务器可以实现为不同服务器和处理器与网络115之间的唯一网络接口,但是也可以采用其它技术。在一些实施方式中,不同服务器和处理器与网络115之间的接口包括负载共享功能,例如在多个服务器上均匀地均衡负载并分配进入的HTTP请求的循环HTTP请求分配器。
组播流环境100还实现诸如Jupiter Systems的Fusion Catalyst的显示墙108,其由诸如Jupiter Systems的Fusion Catalyst的视频切换矩阵来控制。显示墙108促进视频会议的参与者之间的端对端会议讨论,使得远程参与者可以从显示墙108上广播的多个视频流(摄像机132a至132n)分享作为源和目的地的流。
在一个实施方式中,分组交换技术可以用来在显示墙108上-例如跨越显示墙108中多画面的单一窗口或者在显示墙108中分别呈现为不同画面的独立窗口-显示任何信息源。在一个实施方式中,视频切换矩阵支持客户端软件应用并提供相关数据、代码、表格、网页和其它信息到/从用户计算设备102a至102n以及摄像机132a至132n。
正交解码器116被配置为基于与视频流相关的编码解码程式接收并解码压缩的视频流。这里所使用的术语“编码解码程式”指的是用来编码(例如压缩)或解码(例如解压缩)视频帧的算法。在一个实施方式中,正交解码器116可以是Jupiter Systems的Quad HD Decoder Card,其特征是具有四个独立的解码器,每一个解码器可以处理各种格式和源类型的视频流。在一个实施方式中,正交解码器116可以支持MPEG-2、MPEG-4和H.264中的流,并且可以解码并显示来自网络摄像机、NVR、桌面编码器和视频管理系统的流。在另一个实施方式中,正交解码器116可以支持将源分辨率范围从NTSC和PAL制式提高为全高清1080p。每一个解码器可以具有其自己的千兆以太网连接,以确保每一个解码器具有足够带宽来轻松处理带宽高达20Mbps的任何流。此外,每一个解码器可以支持所有的流格式和协议,自动适应具体的流类型。
解压缩器126根据解码后的视频流生成解压缩后的视频流。解压缩后的视频流可以存储在提供给用于显示等的输出设备或其任何组合的特定流缓冲器中。
组播流环境100还包括用于分别地临时存储来自视频流源132a至132n的每一个视频流的多个特定流缓冲器122a至122n。参照图2可以最好地理解缓冲器的运行。图2示意性地例示了缓冲器122a、122b、…122n及其来自视频流源缓冲器132a、132b、…132n的相关联的视频流。在其它实施方式中,特定流缓冲器122a至122n用作接收并存储通过视频流通信的视频帧的存储器结构,诸如先入先出(FIFO)缓冲器。特别地,特定流缓冲器122a至122n存储像素信息、运动矢量信息以及表示一组用于显示的视频图像的其它信息。在一个实施方式中,特定流缓冲器122a至122n可以存储通过视频流接收到的压缩后的视频帧以及已经由正交解码器116解码的视频帧。
在组播流环境100中,转换器112提供额外的解码、解压缩和缓冲资源,以便在解码、解压缩和缓冲当前视频流时对后续视频流进行伪同时处理。转换器112可以利用最先进的图形GPU架构,该GPU架构包括能够驱动高达2560×1600(双链结DVI)分辨率的多个数字显示或高达2048×1536分辨率的多个模拟显示的输出卡。在一个实施方式中,转换器112可以具有11GB/s的内部带宽和每张卡256MB的GDDR3存储器,以便在同时显示多个视频或计算机输入时绘制复杂的应用数据。在其它实施方式中,转换器112可以是具有英特尔CPU和微软Windows操作系统的PC,其具有两个四核Xeon CPU和高达64GB的RAM。
在运行期间,转换器112使得当在按计划示出后续视频流时通过切换对应于当前和后续视频流的特定流缓冲器而在当前视频流和后续视频流之间转换时,能够即时显示后续视频流。在一个实施方式中,这是转换器112通过修改对应于当前和后续视频流的显示层的z顺序来实现的。在另一个实施方式中,这是转换器112通过执行当前和后续视频流的传送的层2切换以传送后续视频流而非当前视频流用于显示来实现的。在又一个实施方式中,这是转换器112通过更新视频切换矩阵以将后续视频流而非当前视频流结合到显示来实现的。
组播流工作流
图2例示了可以应用本文所公开的技术的示例工作流200的框图。多个视频流132a至132n通过网络115传送到网络接口104,网络接口104将这多个视频流呈给正交解码器116和解压缩器126。在对压缩的视频流进行解码和解压缩后,未压缩的视频帧被发送到各个特定流缓冲器122a至122n以进一步处理,包括经由转换器112、通过显示墙106的不同显示(例如,显示1-显示8)传输这不同的视频流132a至132n。显示墙106将在控制室环境中发现的所有可视数据源合并,并将其显示在虚拟显示器上的可移动、可伸缩窗口中,该虚拟显示器由多个输出设备组成,即:监视器、LCD平板、等离子体面板、投影立方体或背投系统。数据源可以包括本地应用、远程网络应用、远程网络RGB流、压缩的网络视频流、直接连接的SD和HD视频、VGA以及DVI输入。
在其它实施方式中,不同的视频流132a至132n被传输到诸如计算机显示器的显示设备,各自显示在显示面上自己的窗口中。在又一个实施方式中,压缩的帧无需显示,但是可以被发送以例如在安全系统中进一步处理,其中所述处理将包括出于身份鉴定目的而进行面部识别。
虽然本示例包括六个视频流,但是本公开的技术被设计为对于任何数量的视频流都起作用,典型地,能够保持多于当前可得到的解压缩资源。在某些情况下,实际可以使用多达50个甚至100个视频流。在其他情况下,只可能处理少至2个或3个视频流,并且如果诸如通用CPU的解压缩资源被无关的工作负载共享,则仅可能处理1个视频流。该范围考虑到可利用的资源以及施加的负载。第一,解压缩资源可以包括小至一台个人计算机或者大至具有专用硬件的高性能商业服务器。第二,进入的视频流所施加的负载在正常使用过程中可以彻底变化,这取决于有多少视频流源是流媒体图像、所述图像的复杂度及其变化速率。第三,解压缩资源可以包括正在运行与视频处理无关的其它处理的诸如便携式或台式计算机的通用计算机,可以使用计算机的广泛变化数量的处理能力来进行视频处理。
在通过本公开的技术来解决的环境中,对于总的可利用解压缩资源是有限制的。例如,复杂度不断增大的视频流-诸如具有增大的比特率或分辨率的视频流-以及视频流的增加将增大解压缩负载。因此,随着负载的增大,可用于每个流的解压缩资源将变少。在某些时候,解压缩资源可能变得超负荷,并且一个或多个视频流将没有足够的解压缩资源来解压缩所有输入帧。如果是基于FIFO来处理帧,则解压缩帧相对于其对应的显示时间滞后。在某些情况下,最终图像(比如显示器上的图像)可能出现像素化、可能不定期地显示并且可能偶尔出现冻结现象。通过检测解压缩资源变得超负荷这一情况并且通过丢帧来减轻这种情况,可以避免或者至少在某种程度上缓解上述问题。
伪同时处理
图3至图5突出了所公开的利用专用处理资源的视频流的伪同时处理不同于减少切换延迟的现有方案。
图3示出了在使得压缩视频流之间的平滑转换的时移模式中对当前和后续视频流的伪同时处理300的一个实施方式。特别地,图3例示了通过两种图形处理单元301和303分别对两个不同的视频流、即当前视频流132a和后续视频流132b的视频流处理。在其它实施方式中,视频流132a和132b可以由同一GPU来处理。
在其它实施方式中,处理300可以不具有与如上所列相同的操作、要素或组件并且/或者可以具有代替如上所列或除如上所列之外的其它/不同的操作、要素或组件。不同的操作、要素或组件可以组合成单个软件模块,并且多个软件模块可以在同一硬件上运行。
在时间t1和操作302,由GPU 301对当前视频流132a进行解码。
在稍后的时间t1+x和操作312,由GPU 303对后续视频流132b进行解码。“x”指的是相对于当前视频流132a的解码的开始或完成的处理起始延迟。处理起始延迟表示后续视频流的触发处理相对于当前流的触发处理的延迟。虽然,根据一个实施方式,在某些时候,后续视频流是与当前视频流伪同时处理的。此处,x可以是能够采用任何合适的单位-比如秒、微秒等-来测量的任何时间值。在其它实施方式中,在开始或完成当前视频流132a的解压缩、缓冲或显示后,后续视频流132b的解码开始时移。
在时间t2和操作304,由GPU 301对当前视频流132a进行解压缩。
在稍后的时间t2+x和操作314,由GPU 303对后续视频流132b进行解压缩。“x”指相对于当前视频流132a的解压缩的开始或完成的处理-起始延迟。在其它实施方式中,在开始或完成当前视频流132a的解码、缓冲或显示后,后续视频流132b的解压缩开始时移。
在时间t3和操作306,由GPU 301对当前视频流132a进行缓冲。
在稍后的时间t3+x和操作316,由GPU 303对后续视频流132b进行缓冲。“x”指相对于当前视频流132a的缓冲的开始或完成的处理-起始延迟。在其它实施方式中,在开始或完成当前视频流132a的解码、解压缩或显示后,后续视频流132b的缓冲开始时移。
在时间t3和操作306,由GPU 301对当前视频流132a进行缓冲。
在稍后的时间t3+x和操作316,由GPU 303对后续视频流132b进行缓冲。“x”指相对于当前视频流132a的缓冲的开始或完成的处理-起始延迟。在其它实施方式中,在开始或完成当前视频流132a的解码、解压缩或显示后,后续视频流132b的缓冲开始时移。
在时间t4和操作308,由GPU 301通过特定界面对当前视频流132a进行显示。
在稍后的时间t4+y和操作318,由GPU 303响应于切换命令通过同一特定界面对后续视频流132b进行显示。“y”指相对于通过特定界面显示当前视频流132a的显示延迟。在一个实施方式中,处理-起始延迟x和显示延迟y之间的差别在于处理-起始延迟x取决于后续视频流132b的关键帧之间的时间间隔,如在以下对图4的讨论中所描述。
在一个实施方式中,本公开的技术使得:当检测到视频流的关键帧时,通过执行切换,压缩视频流在组播流环境中能够平滑地转换,而不会降低视频质量。在这样的实施方式中,由于客户端不需要正确的基础样本来显示该样本,所以客户端就不会发生视频质量损失。然而,等待关键帧会导致切换延迟,使得切换不即时。例如,每八帧具有一个关键帧的视频帧的最大延迟大约是三分之一秒。本公开的技术通过在利用额外的处理资源进行切换之前预加载或预缓冲视频流,使得后续视频流的关键帧在切换时可得,并且不会由于等待关键帧而产生切换延迟,从而解决了这一问题。
图4例示了评价(400)关键帧之间的时间间隔并且基于评价的时间间隔来计划切换的一个实施方式。特别地,当遇到后续视频流的关键帧时,转换器112在当前视频流132a和后续视频流132b之间进行切换。如图4所示,后续视频流132b包括两个关键帧和多个中间帧。来自关键帧的数据被预缓冲在上述的特定流缓冲器122a至122n的一个之中。特定流缓冲器122a至122n的每一个存储有来自关键帧的关键帧数据以及来自中间帧的中间帧数据。
在其它实施方式中,评价400可以不具有和如上所列相同的操作、要素或组件并且/或者可以具有代替如上所列或除如上所列之外的其它/不同的操作、要素或组件。不同的操作、要素或组件可以组合成单个软件模块,并且多个软件模块可以在同一硬件上运行。
图4例示了后续视频流132b中的关键帧之间的时间间隔是10秒钟。因此,在操作402对当前视频流132a的处理与在操作404对后续视频流132b的处理之间的处理-起始延迟x应该至少是10秒钟或者更多,以便能够检测后续视频流132b的至少一个关键帧。这样的时控预加载或预缓冲方法允许在任何时间而不是仅仅在遇到后续视频流的关键帧时在当前视频流132a和后续视频流132b之间进行平滑转换。
图5是修改(500)组播流环境中的不同压缩视频流的z顺序以能够在压缩视频流之间进行即时切换的一个实施方式。特别地,图5示出了组播流环境100的三种状态502、504和506。在稳定状态502,来自三个不同的视频流源132a、132b和132c的视频流被正交解码器解码并且被布置为三个通过可视散列(visual hashing)区分的不同窗口层。然后视频切换矩阵将窗口层传送到一个或多个双DVI输出端口,并将其转发到显示墙106。显示墙106通过界面D1、D2和D3分别显示三个视频流132a、132b和132c。
在其它实施方式中,修改(500)可以不具有和如上所列相同的状态、顺序、操作、要素或组件并且/或者可以具有代替如上所列或除如上所列之外的其它/不同的状态、顺序、操作、要素或组件。不同的状态、顺序、操作、要素或组件可以组合成单个软件模块,并且多个软件模块可以在同一硬件上运行。
DVI输出端口上的窗口层的顺序决定了哪些视频流显示在显示墙106的哪些界面。这种顺序被称为“z顺序”,其可以被修改以改变DVI输出端口上的窗口层的布置,并且反过来根据需要使得在视频流132a、132b、132c和132d之间进行平滑转换。这种平滑转换是在切换准备状态504开始的,在切换准备状态504中,第四视频流132d被加入到组播流环境100。当其它视频流132a、132b和132c通过显示墙106显示时,对第四视频流132d进行伪同时处理。对第四视频流132d进行伪同时后台处理生成了第四视频流132d的窗口层,该窗口层置于待替换的视频流、即图5中的第三视频流132c的当前显示的窗口层的后面,该第三视频流132c馈入界面D3。在切换准备状态504期间,由于在双DVI输出端口处的窗口层的z顺序保持不变,所以第四视频流132d的新放置的窗口层尚未通过界面D3显示。
在切换状态506,在双DVI输出端口处的窗口层的z顺序被修改,使得第三视频流132c的窗口层被替换为第四视频流132d的窗口层。因此,第四视频流132d通过界面D3被即时显示,这是由于在组播流环境100进入切换状态506之前足以生成第四视频流132d的窗口层。此后,删除第三视频流132c的在前显示的窗口层。
流程图
图6是在压缩视频流之间平滑地转换的一种典型方法600。流程图600可以利用计算机或其它数据处理系统来被至少部分地实现,例如,通过被构造为接收或检索信息、处理信息、存储结果并传送所述结果的一个或多个处理器来实现。其它实施方式可以以不同顺序并且/或者以比起图6中所例示的实施方式不同的、较少的或额外的操作来执行操作。在一些实施方式中可以合并多个操作。为方便起见,参照执行方法的系统来对该流程图进行描述。系统并不一定是方法的部分。
在本部分和本公开技术的其它部分中所描述的方法可以包括一个或多个以下特征和/或结合公开的附加方法所描述的特征。为了简明起见,对于在本申请中公开的特征的组合,既不分别枚举,也不对每一个基本的特征集进行重复描述。读者将理解,如何容易地将在该方法中识别的特征与识别为例如组播流环境、组播流工作流、伪同时处理或计算机系统的实施方式的基本特征集结合。
在操作602,计划压缩视频流之间的转换以在显示的区域中示出。在一个实施方式中,由管理员使用如上所述的用户计算设备来计划转换。
在操作612,在解码、解压缩并缓冲第一视频流以便显示的同时,在按计划示出第二视频流前的预定时间开始解码、解压缩并缓冲第二视频流。这是通过采用另外一组解码逻辑和工作存储器以影响从第一视频流至第二视频流的即时切换来实现的。这包括应用处理时间延迟,以伪同时或同时使用多个解码逻辑和工作存储单元来处理针对同一显示的第一视频流和第二视频流,使得在按计划发生切换前开始解码第二视频流。
在操作622,在按计划示出第二视频流时在显示第一视频流与显示第二视频流的缓冲器之间切换,从而使第二视频流无需延迟而即时显示。在一个实施方式中,在针对第一视频流与第二视频流的缓冲器之间切换还包括:修改对应于第一视频流和第二视频流的显示层的z顺序,从而图形卡组成使得第二视频流而非第一视频流可见的显示。
在另一个实施方式中,在针对第一视频流与第二视频流的缓冲器之间切换还包括:第一视频流和第二视频流的输送的层2切换,以输送第二视频流而非第一视频流用于显示。在又一个实施方式中,在针对第一视频流与第二视频流的缓冲器之间切换还包括:更新视频切换矩阵,以将第二视频流而非第一视频流结合到显示。
方法600还包括:评价第二视频流中关键帧之间的时间间隔并且至少部分地基于时间间隔来选择预定时间。
在多对第一视频流和第二视频流的情况下,方法600还包括:对计划的第一视频流与第二视频流之间的转换排序,以减少在第一视频流的解码与第二视频流的解码之间同时转换的视频流的数量。
本部分中描述的方法的其他实施方式可以包括存储有用以执行上述任何方法的处理器可执行指令的非暂时性计算机可读存储介质。本部分中描述的方法的又一个实施方式可以包括系统,该系统包括存储器以及可操作以执行存储在存储器中的用以执行上述任何方法的指令的一个或多个处理器。
计算机系统
图7是在压缩视频流之间平滑地转换的一种示例计算机系统700的框图。计算机系统700通常包括经由总线子系统712与多个外围设备进行通信的至少一个处理器714。这些外围设备可以包括存储子系统724、用户接口输入设备722、用户接口输出设备718以及网络接口子系统104,所述存储子系统724包括例如存储设备和文件存储子系统。输入和输出设备允许与计算机系统700的用户交互。网络接口子系统104为外部网络提供接口,包括其它计算机系统中对应接口设备的接口。应用服务器720可以是允许计算机系统700的诸如硬件和/或软件(例如操作系统)的应用运行的架构。
用户接口输入设备722可以包括键盘;诸如鼠标、轨迹球、触摸板或图形板的指针设备;扫描仪;并入显示器中的触摸屏;诸如语音识别系统和麦克风的音频输入设备;以及其它类型的输入设备。通常,使用术语“输入设备”意在包括将信息输入到计算机系统700的所有可能类型的设备和方法。
用户接口输出设备718可以包括显示子系统、打印机、传真机或诸如音频输出设备的非可视显示器。显示子系统可以包括阴极射线管(CRT)、诸如液晶显示器(LCD)之类的平板设备、投影设备或用来生成可见图像的一些其它机构。显示子系统还可以提供诸如音频输出设备之类的非可视显示器。通常,使用术语“输出设备”意在包括将信息从计算机系统700输出给用户或另一个机器或计算机系统的所有可能类型的设备和方法。
存储子系统724存储有可编程数据结构,其提供本文所描述的一些或所有模块和方法的功能。这些软件模块通常由处理器714单独执行或结合其它处理器来执行。
存储子系统中所用的存储器子系统726可以包括多个存储器,其包括用于在程序执行期间存储指令和数据的主要随机存取存储器(RAM)734以及存储有固定指令的只读存储器(ROM)732。文件存储子系统728可以对程序和数据文件进行永久存储,并且可以包括硬盘驱动器、连同相关可移除介质的软盘驱动器、CD-ROM驱动器、光盘驱动器或可移除介质盒。实现特定实施方式的功能的模块可被文件存储子系统728存储在存储子系统724或者处理器可访问的其它机器中。
总线子系统712提供允许计算机系统700的各个组件和子系统如期望那样彼此通信的机构。虽然总线子系统712示意性地示出为单根总线,但是总线子系统的替代实施方式可以采用多根总线。
计算机系统700可以是不同类型的计算机系统,包括工作站、服务器、计算集群、刀片式服务器、服务器农场或任何其它数据处理系统或计算设备。由于计算机和网络不断变化的性质,在图7中对计算机系统700的描述仅用于一个示例。计算机系统700的许多其它配置可能具有比图7中所描述的计算机系统更多或者更少的组件。
本文所采用的术语和表达是用作描述性的术语和表达而不是限制性的,而且,在应用这些术语和表达时并没有要排除示出或描述的特征的任何等同特征(或因此的部分)的意图。此外,已经描述了本公开的技术的某些实施方式,对本技术领域的普通技术人员而言显而易见的是,在不偏离本公开的技术的精神和范围的情况下,可以采用合并了本文所公开的概念的其它实施方式。因此,所描述的实施方式在各方面都被认为仅是说明性的而非限制性的。