利用嵌入式编码像素测量远程视频回放性能的制作方法

文档序号:7721960阅读:219来源:国知局
专利名称:利用嵌入式编码像素测量远程视频回放性能的制作方法
技术领域
本发明一般地涉及利用嵌入式编码像素测量远程视频回放性能。
背景技术
计算行业近年来已有许多进步,这些进步产生了大量产品和服务。计算系统也有 了许多改变,包括它们的虚拟化。计算机资源的虚拟化通常意味着涉及计算机硬件的抽象, 其实质是将操作系统与应用同底层硬件相分离。硬件因而在多个操作系统和应用之间被共 享,其中每个操作系统和应用在对应的虚拟机(VM)中被隔离。虚拟化的结果是硬件被更有 效利用并被平衡,因此虚拟桌面基础架构(VDI)正成为更有前途的解决方案。利用VDI,用 户通过网络连接访问在远程服务器上运行的虚拟机所提供的个人桌面。每个VM是完整的 执行环境,并且服务器通过网络连接提供用户界面,从而在用户和VM之间传输用户输入和 输出。在用户使用远程服务时为用户提供与使用程序在本地执行的传统系统类似的桌面体 验,这是非常有吸引力的。用户体验的质量基于许多基础因子(例如,往返等待时间或网络 带宽)而会变化。 在用于远程传送的众多关键应用中,解决方案提供商将远程视频回放视为最重要 的应用之一。远程视频回放也是最经常使用的应用之一,其由于施加在实时视频传送所需 的底层资源(例如,服务器计算能力和下行链路带宽)上的压力,易受到性能劣化的影响。 在视频传送期间,多数资源会变成瓶颈。尽管存在一些措施来找到这些资源中的一些资源 的利用率,但是不存在测量远程端的视频性能和质量的准确方法。过去的方法使用对进入 网络数据的分析,以试图使网络性能和视频质量相关。该方法并不准确,因为可能发生由于 有限带宽而使服务器端的协议降低视频的比特率,或者因为可能存在影响视频性能的一些 用于播放器皮肤(Player skin)、窗口外观或其他屏幕更新的分组。
正是在这种情况下,本发明的实施例应运而生。 本申请与2008年12月18日递交的名为"MEASURING CLIENT INTERACTIVE PERFORMANCE USING A DISPLAY CHANNEL"的美国专利申请12/337, 774有关,该申请通过引 用结合于此。

发明内容
本发明的实施例提供了用于测量远程视频传送的性能的方法、系统和计算机程 序。编码信息被添加到视频帧的像素中,以在将视频传送到远程客户后标识帧号码并获得 信息。 应当认识到,本发明可以以多种方式实现,例如方法、装置、系统、设备或者计算机 可读介质上的方法。下面描述了本发明的若干创造性实施例。 在一个实施例中,一种方法在服务器计算机处在视频流的帧中嵌入标记符,所述 标记符包括预配置的像素序列,并且其后跟随被编码在像素数据中的帧号码。在一个实施 例中,针对每个字节的像素数据编码一个比特。该方法随后在客户计算机处找到第一标记
5符,以确定所述标记符在显示中的位置。 一旦标记符的位置被确定,后续帧中的标记符以及 他们对应的帧号码就被检测。该方法存储每个检测到的标记符的帧号码和到达时间。所存 储的到达时间和帧号码可以用于远程视频传送的统计性能分析。在另一实施例中,包含在 计算机可读存储介质中的计算机程序可以用来执行该方法。 在又一实施例中,一种测量远程视频传送的性能的系统包括视频服务器、视频客 户以及性能服务器。视频服务器传送视频流并将标记符嵌入视频流的选定帧中。标记符包 括预配置的像素序列,并且其后跟随包含编码帧号码的像素。视频客户接收所述视频流并 且被配置成找到第一标记符,然后在其他视频帧中检测其后的标记符。 一旦在显示中找到 第一标记符,其位置就被用做寻找其他标记符以及他们对应帧号码的位置。性能服务器被 配置成从视频客户接收每个检测到的标记符的帧号码和到达时间,以及存储所接收的到达 时间和帧号码。 通过下面以示例的方式对本发明原理的详细说明并结合附图,本发明的其他方面 将变得明显。


通过下面的说明并结合附图可以最好地理解本发明,其中 图1描述了根据一个实施例的远程视频回放环境。 图2示出了根据一个实施例使用在视频通道上发送并且在镜像缓冲器上检测到 的信息测量视频性能的体系结构。 图3A-3D描述了用于在视频通道上发送编码信息的不同实施例。 图4描述了根据一个实施例在客户和服务器之间的视频通信。 图5图示了在视频通信的像素中传输编码信息的实施例。 图6图示了利用增量更新传输视频信息的实施例。 图7描述了根据一个实施例解码每字节像素数据的一比特信息。 图8示出了根据一个实施例检测视频通信中的标记符的开始的方法流程。 图9A-9C示出了利用本发明的实施例获得的性能度量的图形表达。 图10示出了根据一个实施例测量远程视频传送的性能的方法流程。 图11是用于实现本发明实施例的计算机系统的简化示意图。
具体实施例方式
下面的实施例描述了用于测量远程视频传送的性能的方法和装置。然而对本领
域普通技术人员来说很明显,本发明可以在没有这些具体细节中的一些或全部的情况下实
施。在其他实例中,并未详细描述公知的方法步骤,以免不必要地混淆本发明。
图1描述了根据一个实施例的远程视频回放环境。图1中描述的环境包括虚拟桌
面服务器114,虚拟桌面服务器114向远程用户118提供虚拟桌面。尽管本发明的实施例是
在虚拟桌面系统中进行描述的,但是这里提供的实施例可以在具有将显示数据传输到远程
客户的远程显示应用的其他环境中使用。 视频服务器116有权访问视频库112,视频库112保有用于呈现给用户118的多种 不同视频。视频服务器116可以将视频直接传送给用户118,或者可以将视频传送到虚拟桌面服务器114,虚拟桌面服务器114随后将视频传送到用户118。在一个实施例中,视频是 由web服务器120在浏览器窗口 102内传送的。 性能服务器122从服务器和客户收集性能数据,然后分析收集的数据用以提供给 用户。尽管图1中分别示出了不同的服务器,但是服务器114、116、120和122可以组合成 一个或多个服务器,或者可以在多个服务器上复制以用于视频传送优化。网络110在服务 器之间并且在服务器和客户之间传输数据。用于视频传送的客户可以是多种类型,例如个 人计算机104、膝上型电脑106、移动电话108、PDA、连接到机顶盒124的TV屏幕126等。
本发明的实施例测量用户118或多个用户所见到的虚拟环境的性能。视频数据 在被在网络IIO上传输之前被编码。视频数据可以使用不同的视频编码方法和协议进行 传输,例如用于运行微软终端服务的计算机的远程桌面协议(RDP),多媒体流技术,例如 Adobe的Flash⑧、微软的Silverlight⑧、以及数字多媒体广播(DMB),数字TV信号传输协 议,例如数字视频广播(DVB)、数字地面电视(DTT)、等等。 远程桌面协议是支持多通道的协议,其支持用于承载表达数据、串行设备通信、许 可信息、高度加密数据(键盘、鼠标活动)等的单独虚拟通道。在一个实施例中,视频数据 是使用RDP的显示通道进行传输的。在许多情形中,由于服务器和客户之间的防火墙和其 他障碍,显示通道是到达客户机器的唯一通道。此外,这里提供的实施例独立于用来传输显 示数据的通信协议,因此能够在不同拓扑结构和协议之下可靠获得性能测量结果,并且评 估不同因素如何影响视频性能。此外,这里提供的方法可以扩展到数万客户和服务器,而不 会过度加重虚拟基础架构的负担。 网络分组分析不足以获得视频传送的可靠性能测量。用于获得性能度量的一种方 法是使用单独的插口 (socket)连接以将视频元数据传输到客户,例如每个所传输帧的帧 号码。这种方法的问题是,由于视频帧是在单独的连接上发送的,分组可能以不同的顺序到 达,因此等待时间测量结果不准确。该方法还需要服务器端上的修改。因此,需要一种方 法,该方法不依赖于任何底层协议,不需要对服务器端的任何改变,并能提供测量客户端的 远程视频回放的质量和等待时间的准确方法。 本发明的实施例提供了在每帧视频中的视频数据中编码视频元数据,这里也称之 为水印,从而元数据可以在客户端被准确标识。 图2示出了根据一个实施例使用在视频通道上发送并且在镜像缓冲器上检测到 的信息测量视频性能的体系结构。视频服务器212生成视频显示的虚拟桌面视图218,其 被传输到客户202。视频管理器216访问视频库214以获得所需的视频信息并为远程客户 202播放视频。视频传送模块220与远程客户202通信以通过通信通道222传输视频数据。 在一个实施例中,视频数据以视频更新的形式发送,如图6所示,但是用于传输视频数据的 其他方法也是可行的。 在客户202处,帧缓冲器210使用包含客户的桌面视图204的数据的完整帧的存 储器缓冲器来驱动视频显示器(未示出)。缓冲器中的信息典型地包含屏幕上的每个像素 的色彩值。色彩值通常以1比特黑白、4比特调色、8比特调色、16比特高彩色、24比特真彩 色格式存储。 为了准确测量远程视频回放的质量和等待时间,知晓哪个帧以及何时在客户端被 接收至关重要。这在网络层中很难做到,因为分组不一定具有视频帧的信息。本发明的实
7施例使用显示器驱动器处的信息,其中由于所有视频帧被提供给显示器设备帧缓冲器210, 因此在显示器驱动器处所有更新被提供。服务器212生成具有经编码的嵌入信息的定制视 频。在一个实施例中,编码包括标记符和视频元数据。标记符可以是已知的视频像素序列, 这里也被称为魔术像素,而视频元数据提供视频帧的信息,例如帧号码。下文参考图5描述 了用于编码视频元数据的一个实施例。可以包括在视频元数据中的其他信息可以包括时间 戳、产生视频图像的应用的标识、服务器标识(例如,名称、IP地址等)、视频信息(屏幕尺 寸、分辨率、编码等)、压縮信息、代理服务器信息、恥b服务器等。 在一个实施例中,标记符和元数据被包括在每个帧中,而在另一实施例中,标记符 和元数据被周期性包括在例如每2个帧中的一个帧中。嵌入帧信息的频率可以随时间调 节,例如在视频传送的开始时较高频率,在预定义的初始阶段之后较低频率。此外,可以基 于环境因子来调节频率,例如运行视频的应用、视频分辨率、客户或服务器的网络带宽等。 尽管抽样帧不能产生与检查每个帧同样准确的性能度量,但是如果检查的帧的数量很大, 那么抽样获得的性能测量结果可以尽量准确。例如,如果只有具有偶数帧号码的帧被添加 标记符,在检查大量偶数帧之后,例如1000个帧,所述方法计算偶数帧的5%在视频传输期 间丢失,那么可以合理推断该度量,并假定总体丢失率(对于偶数和奇数号码帧两者)为 5%。通过减少所传输视频帧所需的处理量,抽样能够节约计算资源。 当视频帧进入时,视频数据被检查,如果发现编码信息,那么为视频帧记录帧号码 和到达时间。该方法对于无损压縮工作良好,其中在无损压縮中标记符和帧号码像素的值 没有改变。然而,该方法在有损压縮的情形中不能正常工作,因为由于压縮和解压縮,标记 符和元数据在传输期间会改变。在一个实施例中,为补偿传输损失,使用预期像素值附近的 值范围,如下面参考图7所描述的那样。 镜像缓冲器208保持帧缓冲器210的存储器的拷贝,以降低视频跟踪器206扫描 寻找编码像素所需的处理量。显示镜像技术被远程桌面应用广泛使用,例如NetMeeting、 PC Anywhere、 VNC、 Webex等。镜像要比原语屏幕抓取执行起来更优,因为镜像允许仅获取 显示器的最小更新区域并直接获取数据,绕过了中间拷贝。可购买到的镜像缓冲器的一个 示例是DFMirage,一种用于Windows NT OS家族的视频驱动器镜像技术。DFMirage是用于 在图形系统的显示驱动器管理层(D匿L)级别处管理的虚拟视频设备的驱动器,其精确镜 像一个或多个物理显示设备的画图操作。在另一实施例中,视频跟踪器206直接检查帧缓 冲器210,而不使用镜像缓冲器。 视频传送可以包括多媒体重定向(匪R),其中客户和服务器处的软件模块智能工 作以在客户和服务器之间动态重定向多媒体处理任务。多媒体流在客户处使用设备的本地
处理能力被本地解码,从而提供了完整的多媒体回放能力,克服了在传统单薄计算体系结 构中固有的所有限制。多媒体流在客户处被解码,从而释放了服务器的处理能力。在一个 使用匪R的实施例中, 一旦客户处的匪R组件解码视频数据,视频跟踪器就分析视频数据。 如果使用了 Adobe Flash⑧重定向,那么通过在视频信息在客户处被解码之后分析视频帧 信息,也可以使用该方法。 在另一实施例中,视频性能测量是在不同服务器或客户负荷下进行的,以分析计 算机资源(例如CPU、存储器等)的可用性是如何影响视频传送的。例如,视频性能测量针 对运行web托管(hosting)应用的服务器进行,并且针对不运行web托管的相同服务器进行。结果被比较以分析web托管如何影响相同服务器对视频的传送。 图3A-3D描述了用于在视频通道上发送编码信息的不同实施例。在图3A中,包括 标记符和元数据的编码块302 (这里也被称作宏块)被嵌入视频图像的左上角,但是视频屏 幕上的其他位置也是可以的。图5描述了将信息编码到视频数据中的更多细节。图3A示 出了窗口显示环境,其中视频图像被呈现在窗口之一当中。在其他环境中(例如图3B所示 出的环境),视频以全屏模式显示。全屏视频的传送可能包括在客户处对所传输视频的分辨 率改变,以便填充整个视频屏幕。在此情形中,一个实施例包括在服务器处扩大视频用于全 屏呈现之前检查所接收的视频帧。在一个实施例中,扩大的比例是预定义的,而在另一实施 例中,扩大的比例作为帧中的嵌入信息被传输到客户。 在图3B所示的实施例中,编码块304被屏幕上的已知值遮蔽,例如图标310,即,与 编码块304相对应的区域在客户处被其他视频信息代替,以便对用户隐藏编码块。图标可 以是在客户处预配置的,或者可以是作为编码块中的元数据被传输。在并没有在每个帧中 传输编码块的另一实施例中,编码块304用来自最近接收到的不具有编码标记符的视频帧 的视频数据遮蔽。 图3C示出了在浏览器窗口内部显示的视频内的编码块306。由于窗口的位置以及 浏览器中视频区域的位置均可能改变,因此需要找到编码块位于显示中的什么位置。下文 的图6描述了找到编码块的方法。 图3D示出了在视频数据内发送冗余信息的实施例。编码块308a-d被包括在视频 显示的不同部分之中,用于冗余目的,这在视频信息高损失的情形下会有用,或者在测试期 间辅助视觉块识别。 应当意识到,图3A-3D中图示的实施例是视频帧内加密块的示例性布置。其他实 施例可以使用不同布置或不同像素值。因此,图3A-3D图示的实施例不应当被理解为穷尽 性的或限制性的,而仅具示例性或图示性。 图4描述了根据一个实施例在客户和服务器之间的视频通信。服务器404将帧 Fl-F5 406a-e依次传输到客户402。完整的视频帧可以在一次操作中发送,或者视频帧可 以以视频显示的分区(称为更新)分部分地发送。此外,视频帧或视频更新可以被下面对 应的传输层分段,以便在网络上发送数据。在一个实施例中,只有选中的帧包括嵌入信息, 例如帧406a、406c和406e。在另一实施例中,所有帧携带嵌入信息。 图5图示了在视频通信的像素中传输编码信息的实施例。编码宏块534被嵌入到 显示530的窗口 532当中。宏块534包括标记符536、元数据538和填充部分540。在一个 实施例中,宏块538具有100个像素的大小,但是其他值也是可以的。应当意识到,图5中 的宏块534是示例性布置,其他实施例可以采用不同的组成要素、组成要素的子集、或者不 同顺序下的相同组成要素。因此,图5图示的实施例不应当被理解为穷尽性或限制性的,而 仅具示例性或图示性。 根据一个实施例,宏块534内的像素可以具有三个值中的一个
1.红〈Oxff0000〉,
2.绿〈OxOOffOO〉,或
3.蓝〈OxOOOOff〉。 这三个特定色彩具有为Oxff或0x00的字节组分。即使在特定协议中存在有损压
9縮,解压縮之后的最终色彩值也不会大幅度改变,因为协议必须在客户端提供看起来相似 的屏幕。例如,如果字节0x00在解压縮之后变成0x3a,那么可以使用适当的偏差阈值来遮 蔽该不希望得到的噪声。在一个实施例中,与预期值的偏差作为所接收视频质量的额外计 量被记录。 视频元数据538以相似的方式被编码。在一个实施例中,帧号码使用字节Oxff或 0x00编码。帧号码的每个比特在一个字节中被编码。例如,如果最大帧号码可以表示为n 比特,那么帧号码的比特表达式为仏A…bJ。如果比特bi具有二进制值l,那么bi被编 码为Oxf f ,如果其具有二进制值0,那么bi被编码为0x00。因此,每个帧号码被编码为Oxf f 和OxOO的序列。当在客户端重建帧号码时该编码是有用的,因为适当的阈值被用来遮蔽有 损压縮中产生的噪声或者由任何其他原因引起的噪声。在其他实施例中,每个比特在来自 像素数据的多个字节中被编码。在另一实施例中,每个比特的信息在像素数据的一个子像 素中被编码。子像素被表示为一个像素的色彩组分的强度值。通常,子像素定义像素的红、 绿或蓝组分的强度(intensity)信息。对于24比特"真彩色",其中每个子像素被编码为一 个字节(8比特)的像素数据,那么在一个字节中编码每个比特。但是,如果子像素需要不 同的存储量,那么将使用子像素所需要的存储量对每个比特编码。例如,在16比特"高彩 色"中,红色和蓝色子像素每个用5比特的数据编码,而绿色子像素用6比特编码。
—些视频或图像压縮算法依靠被称为色度(chroma)子抽样的算法,其中色度(或 色彩信息)以比亮度(或亮度信息)更低的分辨率进行抽样。在此情形中,使用子像素信 息对个体像素数据来说会是不可靠的。当使用色度子抽样时,可以使用像素的总体强度对 每个比特的信息编码,而不是在子像素信息的基础上进行区分。在此情形中,可以使用白色 和黑色像素,从而每个像素与一个比特的信息相关。可以实施多种技术来获得准确的总体 强度值。例如,由于绿色组分携带最多的强度信息,因此每个像素的绿色组分可以被单独用 来标识比特值。 在一个实施例中,视频帧被首先在单独图像文件中被解码,然后魔术像素和特定 帧号码被嵌入每个图像头8个像素中(24字节,假定BGR24编码)。可能发生一些协议将执 行视频优化并且丢弃很小的变化,从而仅将相对于先前视频帧显著的更新发送到视频帧。 因此,为避免由于视频优化引起的信息丢失,随机填充部分540被包括在宏块534中,其中 随机填充部分540在帧与帧之间不同。通过定制视频,每个发送的帧带有随机填充部分、标 记符和帧号码。最后,使用无损压縮编码图像文件以使定制视频带有嵌入的元数据。
在另一实施例中,视频帧的编码可以"即时"(on the fly)完成,即,在视频数据被
传输到客户之前正在被处理时,在视频数据上完成视频帧的编码。在又一实施例中,视频帧 的编码可以在操作员的请求下"即时"完成。这允许操作员自由打开或关闭编码,以便获得 特定客户的视频质量测量结果。这对检查视频传送是否支持满足所需服务级别协议(SLA) 的期望服务级别是有帮助的。 注意上述编码是示例性的,本领域普通技术人员在了解本说明书公开的内容后, 可以想到许多修改方式,这些修改也落在本发明的范围之内。例如,前述过程可以用在具有 每像素不同编码比特数目和不同颜色深度的视频数据中。 图6图示了利用增量更新传输视频信息的实施例。不同的远程显示协议以不同的 方式发送更新。视频帧可以作为多个更新被发送,其可以由不同通信协议出于优化目的而完成。更新640a-d对应于视频显示的不同部分。如果视频在窗口 632内运行,那么宏块634 的位置取决于窗口的位置并且在一些情形中取决于视频在窗口内的位置(如图3C所示), 而可能变化。 在客户处在每个视频帧中搜索到标记符是非常消耗资源的。在一个实施例中,标
记符的位置在第一个帧上发现,然后在未来帧中仅检查那个标记符的位置以搜索到宏块。
为了简化客户处的搜索,在一个实施例中仅对预定的视频屏幕区域进行搜索以找到标记
符,但是完整屏幕630也可以用做标记符搜索的范围。如果更新矩形与预定的视频屏幕不
重叠,那么认为该更新矩形不具有嵌入的标记符。相反,如果更新与预定视频屏幕区域重
叠,那么更新与预定视频屏幕区域的交集被扫描以找到标记符或宏块。 在一个实施例中,必须满足下述条件以确定已找到标记符 1.头九个连续字节满足以下约束条件 _b2、b^Pb6 >上阈值-b。、bi、b3、bs、b7和b8 <下阈值 2.所有后面的15个字节bi(i G 0-14)满足以下约束条件
<下阈值)或& >上阈值) 这些条件意味着标记符具有值OxOOOOFFOOFFOOFFOOOO,但是通过调节第一条件, 其他标记符也是可以的。如果对于特定像素满足所有约束条件,那么该像素被认为是标记 符的开始,并且该像素的位置被记录以定义将对所有进入视频帧或更新搜索标记符的区 域。可以调节上阈值和下阈值的值以控制误测的数量。在一个实施例中,它们的值分别是 OxaO和0x50,但是其他值也是可以的。下面的伪代码描述了用来找到标记符的算法
FindMagicPixelsStartPoint 0
If (update—rectangle—overlap (video—screen) == false) return None
Region = intersection(video—screen, update—rectangle)
For each pixel in Region
Skip—pixels—if—constraints—not—met 0 If (CheckForRGBConstraints (pixel) == True) If (CheckforFrameN咖berConstraints (pixel) == True) return pixel —旦已标识出标记符,就通过扫描后面的15个字节找到帧号码。如果给定字节大 于0x80,那么给定字节被分配二进制值l,否则其被分配二进制值O。 15个比特组合在一起
形成最终帧号码。下面的伪代码描述了找到帧号码的程序
FindCurrentFrame ()
startPixel = MagicPixelStartPoint
framePixelStartPoint = startPixel+9
frame—num = 0
for i in[O to 14]
index = framePixelStartPoint+i bit = (framebuffer[index] > 0x80) frame—num = (bit << i) | frame—num
return frame num 帧号码的15个比特的使用是示例性的,还可以使用其他值。其他实施例使用基于 颜色深度和分辨率的帧号码的其他类型编码。图7描述了根据一个实施例解码每字节像素 数据的一比特信息。图7的帧号码具有8比特的尺寸。8个字节被包括在抽样接收序列702 中。在第一操作中,如前所述,每个字节被分配预测的传输值。例如,0x01被分配预期的传 输值0x00,而0xb3被分配0xff 。进一步地,每个分配的值被分配比特值0或1,如串706所 示,并且8个比特组合成一个帧号码708,具有二进制值0x4A。 图8示出了根据一个实施例检测视频通信中的标记符的开始的方法流程。在操作 802中,过程等待视频更新。 一旦接收到视频更新,操作804就确定视频更新是否包括可以 检测到标记符的视频屏幕的至少一部分。如果更新不包括标记符的可能位置,那么方法返 回到操作802,否则方法继续操作805,在操作805中,找到预先规定的视频屏幕和更新之间 的交集。在操作806中,从交集区域获得第一像素作为标记符的可能开始的第一候选。
操作810确定像素是否满足作为标记符开始的条件。例如参见上面参考图6描述 的条件。如果已检测到标记符的开始,那么方法继续操作S14,操作814返回作为标记符开 始的像素,否则方法继续操作812,检查是否有更多候选像素。如果有更多候选像素,那么方 法进入操作808,在操作808中,在循环回到操作810之前选择下一像素。如果操作812确 定不再有候选像素,那么方法返回到操作802,在操作802中方法等待新的视频更新。
图9A-9C示出了利用本发明的实施例获得的性能度量的图形表达。图9A示出了 根据一个实施例限制上行链路带宽对远程视频回放的影响。 一旦上行链路带宽降至100千 比特/秒(kpbs)之下,所支持的帧速率就有大幅度的下降。图9B示出了限制下行链路带 宽对远程视频回放的影响。对于20,000kpbs以上的下行链路速度,所支持的帧速率几乎是 恒定的。对于20,000kpbs以下的下行链路速度,所支持的帧速率以几乎线性的方式下降。
图9C示出了增加往返等待时间对远程视频回放的影响。随着往返等待时间增加, 支持的帧速率下降,因为帧由于网络条件或由于服务器上的高资源使用率而遭到丢弃。
图10示出了根据一个实施例测量远程视频传送的性能的方法流程。在操作1002 中,方法在服务器计算机处在视频流的选定帧中嵌入标记符。标记符包括预配置的像素序 列,并且后面跟随帧号码,帧号码被编码为每字节像素数据的至少一个比特。例如参见图 3A-3D关于如何将标记符嵌入视频显示中的示例,以及图5-6关于如何编码信息的示例。
在操作1004中,方法在客户计算机处找到第一标记符以确定标记符在显示中的 位置。例如参见参考图6描述的作为检测第一标记符的一个实施例的伪代码。在操作1006 中检测第一标记符之后的标记符以及他们对应的帧号码。在操作1008中,方法存储每个检
12测到的标记符的帧号码和到达时间。 图11是用于实现本发明实施例的计算机系统的简化示意图。应当意识到,这里描 述的方法可以用数字处理系统执行,例如传统的通用计算机系统。或者,可以使用被设计或 编程用来执行仅仅一个功能的专用计算机。计算机系统包括中央处理单元(CPU)1104,CPU 1104通过总线lllO连接到随机存取存储器(RAM) 1106、只读存储器(ROM) 1112、以及大容量 存储设备1114。程序1108驻留在随机存取存储器(RAM) 1106中,但也可以驻留在大容量存 储设备1114中。程序1108可以包括与这里描述的实施例相关联的任何程序,例如实现图 1的视频服务器116、虚拟服务器114、web服务器120和性能服务器122的功能以及图2的 视频跟踪器206、视频管理器216和视频传送220的功能的程序。 大容量存储设备1114代表永久性的数据存储设备,例如软盘驱动或固定盘驱动, 其可以是本地或远程的。网络接口 1130提供与网络1132的连接,允许与其它设备通信。应 当意识到,CPU 1104可以实现为通用处理器、专用处理器、或专门编程逻辑设备。输入/输 出(I/O)接口提供与不同外围设备的通信,并且通过总线1110与CPU 1104、RAM 1106、R0M 1112和大容量存储设备1114相连。示例性外围设备包括显示器1118、键盘1122、光标控制 1124、可移动介质设备1134等。 显示器1118被配置成显示这里描述的用户界面,例如图2的远程桌面视图202。 键盘1122、光标控制1124、可移动介质设备1134和其它外围设备耦合到1/0接口 1120,以 便向CPU 1104传送命令集信息。应当意识到,来自和去往外部设备的数据可以通过I/0接 口 1120传送。 本发明的实施例可以利用多种计算机系统配置来实施,包括手持设备、微处理器 系统、基于微处理器或可编程的消费电子产品、微机算计、大型计算机等。本发明还可以在 分布式计算环境中实施,在分布式计算环境中,任务由通过有线或无线网络连接的远程处 理设备执行。 尽管虚拟化操作可以采用许多形式,但是为确保物理机器的物理构建被正确转 移到虚拟机, 一些概念是重要的。有鉴于此,作为参考,有关虚拟系统和方法的更多信息 可以在由本申请的申请人威睿公司拥有的美国专利中找到。因此,美国专利6,397,242, 6, 496, 847, 7, 069, 413, 7, 356, 679和美国申请公开2008/0244028A1通过引用结合于此。
出于完整性考虑,参考一个示例性服务器系统,其是由加州Palo Alto的VMware 公司提供的"ESXTM"。然而所述的方法、系统和实施例不限于任何品牌的服务器或虚拟化服 务器。示例ESX服务器是将物理服务器划分成多个虚拟机的系统监管器。每个虚拟机可以 代表完整系统,具有处理器、存储器、连网、存储装置和BIOS。 VMware ESX使得多个虚拟机 能够(a)共享物理资源,(b)运行未经修改的操作系统和应用,以及(c)在同一服务器上并 排运行资源密集型应用。取决于它们的目标产品,其它供应商制造的其它服务器可以具有 类似的功能或更多或更少的功能。因此,可以使用任何产品、软件或硬件配置来实施所述系 统、方法和计算机可读介质。 参考上述实施例,应当理解,本发明可以使用多种计算机实现的涉及存储在计算 机系统中的数据的操作。这些操作是需要对物理量进行物理操纵的操作。这里描述的构成 本发明一部分的任何操作是有用的机器操作。本发明还涉及用于执行这些操作的设备或装 置。所述装置可以为所需目的专门构建,或者所述装置可以是由存储在计算机中的计算机程序有选择地启动或配置的通用计算机。特别地,多个通用计算机可以结合根据这里的教 导编写的计算机程序一起使用。或者,构建更为专门的装置来执行所需操作可能是更方便 的。 本发明还可以实现为计算机可读介质上的计算机可读代码。计算机可读介质是能
够存储数据的任何数据存储设备,其随后可以被计算机系统读取。计算机可读介质的示例
包括硬驱动、网络附接存储(NAS)、只读存储器、随机存取存储器、CD-R0M、 CD-R、 CD-RW、磁
带、以及其它光和非光数据存储设备。计算机可读介质可以包括在网络连接的计算机系统
上分布的计算机可读有形介质,从而计算机可读代码以分布的方式被存储和执行。 尽管以具体的顺序描述了方法操作,但是应当理解,其它内务操作可以在操作之
间执行,或者操作可以被调整使得它们在稍不同的时间发生,或者可以分布在下述系统中,
所述系统允许在与处理相关联的多个间隔处发生处理操作,只要上层操作的处理以期望的
方式被执行即可。 尽管出于明确说明的目的详细描述了前述发明,很明显在权利要求的范围内可以 进行某些修改和改变。因此,实施例应视为示例性的而非限制性的,并且本发明不限于这里 给出的细节,而是可以在权利要求的范围和等同物之内进行修改。
1权利要求
一种计算机实现的用于测量远程视频传送的性能的方法,所述方法包括在服务器计算机处在视频流的选定帧中嵌入标记符,所述标记符包括预配置的像素序列,并且其后跟随被编码在像素数据中的帧号码;在客户计算机处找到第一标记符,以确定所述标记符在显示中的位置;检测所述第一标记符之后的标记符以及它们对应的帧号码;以及存储每个检测到的标记符的帧号码和到达时间。
2. 如权利要求1所述的方法,进一步包括在服务器计算机处在所述选定帧中嵌入围绕所述标记符和所述帧号码的随机宏块。
3. 如权利要求1所述的方法,其中所述帧号码是通过组合多个比特形成的,来自所述 多个比特的每个比特被编码在像素数据的一个字节中。
4. 如权利要求1所述的方法,其中所述帧号码是通过组合多个比特形成的,来自所述 多个比特的每个比特被编码在多个像素数据字节中。
5. 如权利要求1所述的方法,其中所述帧号码是通过组合多个比特形成的,来自所述 多个比特的每个比特被编码在来自所述像素数据的子像素中,所述子像素包括对应像素中 的色彩的强度信息。
6. 如权利要求1所述的方法,其中找到第一标记符的步骤进一步包括 从所述视频流接收显示更新,直到在显示更新中找到帧号码, 评估接收到的显示更新是否包括所述显示内的视频显示屏幕,当所述接收到的显示更新包括所述视频显示屏幕时,确定所述接收到的显示更新是否 包括帧号码,以及当所述接收到的显示更新包括所述帧号码时,将值分配给所述标记符的位置。
7. 如权利要求6所述的方法,其中确定所述接收到的显示更新是否包括帧号码的步骤 进一步包括搜索所述接收到的显示更新以找到所述预配置序列; 确定找到的预配置序列之后的多个像素是否形成有效帧号码,以及 当所述预配置序列已被找到并且找到的预配置序列之后的所述多个像素形成有效帧 号码时,确立所述帧号码已找到。
8. 如权利要求7所述的方法,其中搜索所述接收到的显示更新的步骤进一步包括 允许所述预配置序列中与标准值的预定偏差。
9. 如权利要求7所述的方法,其中确定找到的预配置序列之后的多个像素是否形成有 效帧号码的步骤进一步包括当来自所述多个像素的每个字节的值在两个有效值范围之一中时,评估所述每个字节 的值是有效的,当来自所述多个像素的所有字节的值被评估为有效时,确定帧号码是有效的。
10. 如权利要求1所述的方法,其中检测标记符的步骤进一步包括 从所述视频流接收显示更新,确定所述显示更新是否包括所述标记符的位置,当所述显示更新包括所述标记符的位置时,搜索所述显示更新中预配置的像素序列,以及当在所述搜索过程中找到所述预配置序列时,从所述预配置序列之后的像素中解码所 述帧号码。
11. 如权利要求10所述的方法,其中解码所述帧号码的步骤进一步包括 将二进制比特值分配给来自所述预配置序列之后的多个像素的每个字节, 合并所分配的二进制比特值以形成二进制字,以及 将所述二进制字分派给所述帧号码。
12. 如权利要求11所述的方法,其中解码所述帧号码的步骤进一步包括 当分配二进制比特值时使用阈值,以及基于来自所述预配置序列之后的所述多个像素的字节值与标准字节值的偏差,测量所 述视频流的质量。
13. 如权利要求IO所述的方法,其中所述显示更新包括用于所述视频流的帧内的矩形 的显示数据。
14. 一种测量远程视频传送的性能的系统,所述系统包括用于传送视频流的视频服务器,所述视频服务器将标记符嵌入所述视频流的选定帧 中,所述标记符包括预配置的像素序列,并且其后跟随被编码在像素数据中的帧号码; 接收所述视频流的视频客户,所述视频客户被配置成 找到第一标记符以确定所述标记符在显示中的位置,并且 检测所述第一标记符之后的标记符以及它们对应的帧号码;以及 性能服务器,被配置成从所述视频客户接收每个检测到的标记符的帧号码和到达时间,以及 存储所接收的到达时间和帧号码。
15. 如权利要求14所述的系统,其中所述选定帧中的标记符被放置在视频帧的若干位置中。
16. 如权利要求14所述的系统,其中所述视频流在所述显示中的窗口内显示。
17. 如权利要求14所述的系统,其中所述视频流在所述显示处以全屏模式被显示。
18. 如权利要求14所述的系统,其中所述视频客户进一步包括连接到帧缓冲器的镜像缓冲器,所述帧缓冲器接收来自所述服务器的更新,其中所述 视频客户通过监视所述镜像缓冲器来检测标记符。
19. 一种包含在计算机可读存储介质中的计算机程序,当由一个或多个处理器执行时,用于测量远程视频传送的性能,所述计算机程序包括用于在服务器计算机处在视频流的选定帧中嵌入标记符的程序指令,所述标记符包括 预配置的像素序列,并且其后跟随被编码在像素数据中的帧号码;用于在客户计算机处找到第一标记符以确定所述标记符在显示中的位置的程序指令;用于检测所述第一标记符之后的标记符以及它们对应的帧号码的程序指令;以及 用于存储每个检测到的标记符的帧号码和到达时间的程序指令。
20. 如权利要求19所述的计算机程序,其中标记符被嵌入在所述视频流的每个帧中。
21. 如权利要求19所述的计算机程序,其中标记符被周期性嵌入在所述视频流的帧 中,嵌入标记符的周期是可调的。
22. 如权利要求19所述的计算机程序,其中所述标记符在所述客户计算机处的所述显 示中是用预配置值遮蔽的。
23. 如权利要求19所述的计算机程序,其中所述标记符在所述客户计算机处的所述显 示中是用与最近的没有标记符的帧相对应的值遮蔽的。
全文摘要
本发明提供了用于测量远程视频传送的性能的方法、系统和计算机程序。该方法在服务器计算机处在视频流的选定帧中嵌入标记符。该标记符包括预配置的像素序列并且其后跟随编码在像素数据中的帧号码。该方法随后在客户计算机处找到第一标记符以确定标记符在显示中的位置。一旦标记符的位置被确定,后续帧中的标记符及其对应的帧号码被检测。该方法存储每个检测到的标记符的帧号码和到达时间。存储的到达时间和帧号码可以用于远程视频传送的统计性能分析。
文档编号H04N7/173GK101783937SQ200910250399
公开日2010年7月21日 申请日期2009年12月7日 优先权日2008年12月18日
发明者梅金贾·维克拉姆M, 毕达卡·里希N, 科里斯南·斯里尼瓦斯, 萨特娜·苏尼尔, 阿格拉沃尔·班尼特 申请人:威睿公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1