WO2014089793A1 - 一种视频重定向的方法、装置、系统及计算机可读介质 - Google Patents

一种视频重定向的方法、装置、系统及计算机可读介质 Download PDF

Info

Publication number
WO2014089793A1
WO2014089793A1 PCT/CN2012/086499 CN2012086499W WO2014089793A1 WO 2014089793 A1 WO2014089793 A1 WO 2014089793A1 CN 2012086499 W CN2012086499 W CN 2012086499W WO 2014089793 A1 WO2014089793 A1 WO 2014089793A1
Authority
WO
WIPO (PCT)
Prior art keywords
data frame
video data
video
display driver
processing instruction
Prior art date
Application number
PCT/CN2012/086499
Other languages
English (en)
French (fr)
Inventor
陈普
许天锡
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN201280002716.4A priority Critical patent/CN103283250B/zh
Priority to PCT/CN2012/086499 priority patent/WO2014089793A1/zh
Publication of WO2014089793A1 publication Critical patent/WO2014089793A1/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Definitions

  • the present invention relates to the field of information technology, and in particular, to a video redirection method, apparatus, system, and computer readable medium.
  • Remote desktop With the continuous development of computer technology, remote desktop has become a popular technology. Remote desktop technology transfers the content displayed on the remote server screen to the local client for display by logging in to the remote server. Remote desktop applications not only refer to remote screen displays, but also remote video delivery.
  • the embodiment of the invention discloses a method, a device, a system and a computer readable storage medium for video redirection, which are used for realizing video data frame post-processing on a client by video redirection, thereby improving a video experience of a client user.
  • the embodiment of the present invention discloses a video redirection method, including: intercepting a video data frame and a video data frame processing instruction sent by a video player to a virtual display driver; wherein, the video data frame is a Video player pair
  • the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction; and the intercepted video data frame and the location are sent to the client.
  • the video data frame processing instruction is configured to cause the client to process the video data frame according to the video data frame processing instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the virtual display driver intercepts the video data frame and the video data frame processing instruction when the video player transmits the video data frame and the video data frame processing instruction to the virtual display driver.
  • the video data frame and the video data frame processing instruction that are sent by the video player to the virtual display driver include:
  • the Di rec tX® runtime calls the virtual display driver pair when the video player transmits the video data frame and the video data frame processing instruction sent to the virtual display driver through a Di rec tX® runtime library
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the DirectX® runtime intercepts the video data frame and the location when the video player transmits the video data frame and the video data frame processing instruction to the virtual display driver through a Di rec tX® runtime library
  • the video data frame processing instruction include:
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction .
  • the method further includes: the video player Before the virtual display driver sends the video data frame and the video data frame processing instruction, the virtual display driver receives a video hardware acceleration capability query request sent by the video player, and the virtual display driver drives the video player Sending a query request response; the query request response indicates that the virtual display driver supports video hardware acceleration.
  • the virtual display driver sends a query request response to the video player, specifically:
  • the virtual display driver acquires information of the video player according to the video hardware acceleration capability query request;
  • the virtual display driver matches the video player list supporting video redirection according to the information of the video player
  • the virtual display driver sends the query request response to the video player;
  • the list of video players that support video redirection contains information about video players that support video redirection.
  • an embodiment of the present invention discloses a video redirection method, including: The client receives the video data frame and the video data frame processing instruction, where the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction;
  • the video data frame is processed according to the video data frame processing instruction.
  • the processing the video data frame is processed according to the video data frame processing instruction, and the method specifically includes: performing, according to the video data frame decoding instruction, the video data. Decoding the frame; performing video data frame post-processing on the decoded video data frame according to the video data frame post-processing instruction;
  • the video post-processed video data frame is displayed according to the video data frame presentation instruction.
  • the video data frame is decoded according to the video data frame decoding instruction; Performing a video data frame post-processing on the decoded video data frame, specifically, decoding, according to the video data frame decoding instruction, the video data frame, according to the video data frame acceleration instruction of the client, according to the The video data frame post-processing instruction performs video data frame post-processing on the decoded video data frame.
  • an embodiment of the present invention discloses a server, including: a central processing unit and a memory, wherein the central processing unit is connected to the memory through a system bus, and when the server is running, the central processing unit executes The computer stored by the memory executes instructions to cause the server to perform the following steps:
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the virtual display driver intercepts the video data frame and the video data frame processing instruction.
  • the video data frame and the video data frame processing instruction that are sent by the video player to the virtual display driver include:
  • the Di rec tX® runtime calls the virtual display driver pair when the video player transmits the video data frame and the video data frame processing instruction sent to the virtual display driver through a Di rec tX® runtime library
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the DirectX® runtime intercepts the video data frame and the location when the video player transmits the video data frame and the video data frame processing instruction to the virtual display driver through a Di rec tX® runtime library The video data frame processing instruction.
  • the intercepting The video data frame and the video data frame processing instruction sent by the video player to the virtual display driver specifically include:
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction .
  • the method is further configured to: perform the video playback Before the video data frame and the video data frame processing instruction are sent to the virtual display driver, the virtual display driver receives a video hardware acceleration capability query request sent by the video player, and the virtual display driver The video player sends a query request response; the query request response indicates that the virtual display driver supports video hardware acceleration.
  • the virtual display driver sends a query request response to the video player, including:
  • the virtual display driver acquires information of the video player according to the video hardware acceleration capability query request;
  • the virtual display driver matches the video player list supporting video redirection according to the information of the video player
  • the virtual display driver sends the query request response to the video player;
  • the list of video players that support video redirection contains information about video players that support video redirection.
  • an embodiment of the present invention discloses a client, including a central processing unit and a memory, where the central processing unit is connected to the memory through a system bus.
  • the central processor executes the computer-executed instructions stored in the memory, so that the client performs the following steps:
  • the client receives the video data frame and the video data frame processing instruction, where the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post processing instruction, and a video data frame presentation instruction;
  • the video data frame is processed according to the video data frame processing instruction.
  • the video data frame is processed according to the video data frame processing instruction, which specifically includes:
  • the video post-processed video data frame is displayed according to the video data frame presentation instruction.
  • the video data frame is decoded according to the video data frame decoding instruction; according to the video data frame
  • the post-processing instruction performs video data frame post-processing on the decoded video data frame, specifically, decoding the video data frame according to the video data frame decoding instruction under the condition that the client starts video hardware acceleration, Performing video data frame post-processing on the decoded video data frame according to the video data frame post-processing instruction.
  • the embodiment of the present invention discloses a video redirection system, comprising the server according to any one of the third aspects of the present invention and the client according to any of the fourth aspect of the present invention.
  • an embodiment of the present invention discloses a server, including: An intercepting unit, configured to intercept a video data frame and a video data frame processing instruction sent by the video player to the virtual display driver; wherein the video data frame is obtained by demultiplexing the loaded video file by the video player;
  • the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction;
  • a sending unit configured to send the intercepted video data frame and the video data frame processing instruction to the client, so that the client processes the video data frame according to the video data frame processing instruction.
  • the intercepting unit is specifically the virtual display driving; the virtual display driving intercepting the video data frame and the video data frame processing instruction .
  • the intercepting unit is specifically a dynamic link library, when the video player passes
  • the Di rec tX® runtime sends the video data frame and the video data frame processing instruction to the virtual display driver, and the D i rec tX® runtime calls the virtual display driver to process the video data frame
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction.
  • the intercepting unit is specifically a DirectX® runtime, when the video player passes the D i rec tX® runtime to the virtual
  • the DirectX® runtime intercepts the video data frame and the video data frame processing instruction when the video data frame and the video data frame processing instruction transmitted by the driver are displayed.
  • the intercepting unit is specifically a dynamic link library, and the video player calls the DirectX® runtime to send the video to the virtual display driver.
  • Data frame and said The video link frame intercepts the video data frame and the video data frame processing instruction when the video data frame processes the instruction.
  • the virtual display driver is further used in Before the video player sends the video data frame and the video data frame processing instruction to the virtual display driver, receiving a video hardware acceleration capability query request sent by the video player, where the virtual display driver drives the video The player sends a query request response; the query request response indicates that the virtual display driver supports video hardware acceleration.
  • the virtual display driver sends a query request response to the video player, specifically:
  • the virtual display driver acquires information of the video player according to the video hardware acceleration capability query request;
  • the virtual display driver matches the video player list supporting video redirection according to the information of the video player
  • the virtual display driver sends the query request response to the video player;
  • the list of video players that support video redirection contains information about video players that support video redirection.
  • the embodiment of the present invention discloses a client, including: a receiving unit, configured to receive a video data frame and a video data frame processing instruction, where the video data frame processing instruction includes a video data frame decoding instruction, and a video a data frame post-processing instruction and a video data frame presentation instruction;
  • a processing unit configured to process the number of videos according to the video data frame processing instruction Processed according to the frame.
  • the processing unit is specifically configured to:
  • the video post-processed video data frame is displayed according to the video data frame presentation instruction.
  • the embodiment of the present invention discloses a video redirection system, including any of the servers according to the sixth aspect of the present invention and the client according to any one of the seventh aspects of the present invention.
  • an embodiment of the present invention discloses a computer readable storage medium.
  • the computer executes the computer readable storage medium, the computer performs the following steps:
  • the video data frame Processing instructions include a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction; transmitting the intercepted video data frame and the video data frame processing instruction to a client, so that the client The video data frame processing instruction processes the video data frame.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver specifically includes:
  • the video player transmits the video data frame to the virtual display driver and
  • the virtual display driver intercepts the video data frame and the video data frame processing instruction when the video data frame processes an instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the Di rec tX® runtime calls the virtual display driver pair when the video player transmits the video data frame and the video data frame processing instruction sent to the virtual display driver through a Di rec tX® runtime library
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver specifically includes:
  • the DirectX® runtime intercepts the video data frame and the location when the video player transmits the video data frame and the video data frame processing instruction to the virtual display driver through a Di rec tX® runtime library The video data frame processing instruction.
  • the intercepting the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver includes:
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction .
  • the method further includes: the video player
  • the virtual display driver transmits the video data frame and the Before the video data frame processing instruction, the virtual display driver receives a video hardware acceleration capability query request sent by the video player, and the virtual display driver sends a query request response to the video player;
  • the virtual display driver supports video hardware acceleration.
  • the virtual display driver sends a query request response to the video player, which specifically includes:
  • the virtual display driver acquires information of the video player according to the video hardware acceleration capability query request;
  • the virtual display driver matches the video player list supporting video redirection according to the information of the video player
  • the virtual display driver sends the query request response to the video player;
  • the list of video players that support video redirection contains information about video players that support video redirection.
  • an embodiment of the present invention discloses a computer readable storage medium, including: when a computer executes the computer readable storage medium, the computer performs the following steps:
  • the client receives the video data frame and the video data frame processing instruction, where the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post processing instruction, and a video data frame presentation instruction;
  • the video data frame is processed according to the video data frame processing instruction.
  • the processing of the video data frame according to the video data frame processing instruction includes: Decoding the video data frame according to the video data frame decoding instruction; performing video data frame post-processing on the decoded video data frame according to the video data frame post-processing instruction;
  • the video post-processed video data frame is displayed according to the video data frame presentation instruction.
  • the video data frame is decoded according to the video data frame decoding instruction; according to the video data frame
  • the post-processing instruction performs video data frame post-processing on the decoded video data frame, specifically, decoding the video data frame according to the video data frame decoding instruction under the condition that the client starts video hardware acceleration, Performing video data frame post-processing on the decoded video data frame according to the video data frame post-processing instruction.
  • the video redirection method, device, system and computer readable storage medium disclosed in the embodiments of the present invention intercept the video data frame sent by the video player to the virtual display driver and include a video data frame decoding instruction, a video data frame post-processing instruction, and a video.
  • the data frame presents an instruction video data frame processing instruction, and sends a video data frame and a video data frame processing instruction to the client, so that the client decodes, processes, and presents the video data frame according to the video data frame processing instruction to ensure the client user.
  • Video experience At the same time, as long as the server side video player supports the video redirection function, the present invention can be implemented without relying on a certain video player.
  • FIG. 1 is a schematic diagram of an application scenario system according to an embodiment of the present invention
  • FIG. 2 is a schematic structural diagram of a remote desktop server according to an embodiment of the present invention.
  • FIG. 4 is a flowchart of video redirection according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of a client according to an embodiment of the present invention.
  • FIG. 6 is a flowchart of post processing of a video data frame according to an embodiment of the present invention.
  • FIG. 7a and FIG. 7b are diagrams showing a post-processing effect of a video data frame according to an embodiment of the present invention
  • FIG. 8 is a diagram showing a rendering effect of a video data frame according to an embodiment of the present invention
  • FIG. 9 is a structural diagram of a server according to an embodiment of the present invention.
  • FIG. 10 is a schematic structural diagram of a client according to an embodiment of the present invention.
  • FIG. 11 is a schematic structural diagram of a system according to an embodiment of the present invention.
  • the client initiates a video play request, and the server loads the video file through the video player according to the video play request of the client, and transmits the video stream of the video file to the client.
  • This process is called video redirection.
  • the server in the embodiment of the present invention may include a general personal computer or other terminal, or may be a commercial server, etc., and is not specifically limited herein.
  • the embodiment of the present invention provides a remote desktop service based on the Windows® operating system platform to the client.
  • the invention is described in detail by way of example. However, the solution of the present invention is not limited to the Windows® operating system, and according to the solution of the present invention, the same can be Expand to other common system platforms, such as the Linux® operating system.
  • the embodiment of the invention discloses a method for video redirection, which is applied to a remote desktop scenario.
  • Remote desktop scenarios typically consist of a local computer and a remote computer.
  • the local computer transfers the remote computer desktop to the local computer by accessing the remote computer.
  • the local computer that is, the client in the embodiment of the present invention
  • the remote computer that is, the server in the embodiment of the present invention.
  • the video redirection in the embodiment of the present invention refers to transmitting the video data stream of the video file on the server to the client.
  • One of the remote desktop scenarios is a virtual desktop infrastructure scenario, but the present invention is not limited to the architecture shown in FIG. 1, and the inventive solution can be applied to other scenarios for transmitting remote video data to a client.
  • the virtual desktop infrastructure scenario is as shown in FIG. 1.
  • FIG. 1 is not specifically limited to the application of the present invention.
  • the left side of Figure 1 is the client of the virtual desktop, which is usually called the thin client.
  • the device type of the client can be the ordinary computer 101a, the tablet 101b, the smart phone 101c, and the like. They access Remote Desktop Services over the network 102 using Remote Desktop Protocol 103.
  • the servers 204a ....204n provide the carrier of the remote desktop, and the user's virtual desktop (Virtual Desktop) exists on the server in the form of virtual machines 205a, 205b - 205n.
  • the virtual desktop management system 106 is configured to provide functions such as mapping of a client's client to a virtual machine.
  • the client is first connected to the virtual desktop management system 106, and obtains the virtual machine address of the user, and then connects to the virtual machine.
  • the virtual desktop management system 106 can be a server or a general personal computer. The present invention does not specifically limit this.
  • the user distributes the virtual desktop (that is, the virtual machine) to the user through the client access server, and the virtual desktop transmits the content accessed by the user to the user's client for display.
  • the typical structure in the server 204a includes three parts, namely a hardware platform 300 and a virtualization platform (also referred to as Hypervisor 301 and virtual machine execution space 302.
  • the hard disk 310, the central processing unit 311, the network interface card 312, and the memory 313 in the physical structure of the server may be included in the hardware platform 300.
  • Hypervisor 301 and virtual machine execution space 302 provide a hardware platform and a software platform for the virtual machine, respectively.
  • the Hypervisor includes virtual machine monitors 320a, 320b-320n.
  • Hypervisor is the middle layer between physical hardware and virtual machines, and is responsible for coordinating the access of each virtual machine to the hardware platform.
  • the virtual machine monitor includes a virtual hardware platform that implements the virtual machine.
  • the virtual machine monitor 320a includes a virtual hardware platform 321a.
  • the virtual hardware platform includes a virtual memory 322, a central processing unit 323, a hard disk 324, a graphics card 325, a network interface card 326, and the like.
  • Virtual machine execution space 302 running multiple virtual machines 205a, 205b ⁇ 205 ⁇ ⁇ 205a of the virtual machine software system running on a virtual machine monitor virtual hardware platform 320a 321a, other virtual machine software system is also running in the corresponding virtual On the virtual hardware platform of the machine monitor.
  • the guest operating system 330 runs in the virtual machine 205a.
  • the guest operating system 330 includes a device driver layer 331, and the device driver layer 331 is installed with drivers such as a virtual display driver 334 and a network interface card driver 336.
  • a video player 332 is included in the virtual machine 205a.
  • the guest operating system 330 can be a Windows® operating system platform provided by Microsoft®.
  • the video file is loaded by the video player 332.
  • a video playback request from the client 101a is received by the display protocol proxy 335, and the video player 332 loads the video file according to the video playback request.
  • the video player 332 demultiplexes the loaded video file to obtain a video data frame.
  • the video player 332 needs to determine whether the virtual machine 205a supports the video hardware acceleration function during initialization, and the video player 332 sends a video hardware acceleration capability query request to the virtual display driver 334.
  • Video hardware acceleration refers to the use of computers
  • the software processing the video data frame instead of the software algorithm of the video player may specifically include decoding, post-processing and rendering the video data frame; wherein the post-processing and presentation of the video data frame will be described in detail later.
  • the video data frame is processed by using the hardware of the virtual machine 205a instead of the software algorithm of the video player 332.
  • the hardware of the virtual machine 205a as understood by those skilled in the art, is not the 205a of the virtual machine.
  • Real hardware but virtual hardware provided through virtual machine monitor 320a.
  • One of the implementation manners is that the video player 332 starts the query of the video hardware acceleration capability of the virtual display driver 334, and can be queried by calling the GetCaps function.
  • the hardware acceleration device can be created by calling the CreateDevice or CreateDecodeDevice function to determine the virtual display driver. Whether the 334 supports video hardware acceleration.
  • the virtual display driver 334 returns a query request response to the video player 332 that supports the video hardware acceleration capability, and the video player 332 determines the virtual machine based on the query request response.
  • the 205a supports video hardware acceleration. During the implementation of the present invention, it is found that some video players obtain video data frames that have been decoded by the client from the client, thereby affecting normal video processing. Therefore, the video player 332 queries the virtual display driver 334 for the video hardware acceleration capability.
  • the embodiment of the present invention may also determine whether the video player 332 supports the video redirection function.
  • One way to determine whether the video player 332 supports video redirection is that the virtual machine 205a obtains the supported video redirection from the virtual desktop management system 106 through the network.
  • a list of video players (the list of video players that support video redirection can also be stored locally on remote server 204a), which includes information for video players that support video redirection, videos that support video redirection
  • the player's information includes the name, process name, and version number of the video player that supports video redirection. Wherein, when the video player 332 is activated, the video player 332 sends a virtual display.
  • the driver 334 sends a video hardware acceleration capability query request, and calls the GetCaps function to query the video hardware acceleration capability, or calls the CreateDevice or CreateDecodeDevice function to create a video hardware acceleration.
  • the virtual display driver 334 checks the originating video player 332 name and video player 332 process name, and the video player obtained from the virtual desktop management system 106 upon receipt of GetCaps, or CreateDevice or CreateDecodeDevice calls from the video player 332. The information of the video player in the list is matched.
  • the executable file (exe) of the process of the video player 332 is located through the application interface API of the guest operating system 330, and The version number is extracted from the executable file, matching the version number of the video player in the video player list obtained from the virtual desktop management system 106, and if so, the video player 332 is determined to support video redirection and responds to the video player.
  • the virtual display driver 334 sends a query request response to the video player 332 by the GetCaps, or CreateDevice or CreateDecodeDevice function call of 332; the query request response indicates that the virtual display driver 334 supports video hardware acceleration, ie, virtual to the video player 332 While the display driver 334 queries whether video hardware acceleration is supported, the virtual display driver determines whether the video player 332 supports video redirection, only when the virtual display driver 334 supports video hardware acceleration and the video player 332 supports video redirection, the virtual display driver 334 to video player 332 Back to the query request response, video hardware acceleration inquiry request response indicates that the virtual display driver 334 supports video hardware acceleration. If video player 332 does not support video redirection, it does not respond to the query request.
  • the method for determining whether the video player 332 supports redirection is merely an exemplary description, that is, the information of the video player 332 and the information of the video player list supporting the video redirection are not limited to the video player. Name, process name, and version number, Other information that can uniquely determine the video player can also be applied to the present invention. At the same time, other methods that can determine whether the video player 332 supports video redirection are also applicable to the present case.
  • the video player 332 sends the video data frame and the video data frame processing instruction to the virtual display driver 334.
  • the virtual display driver 334 intercepts the video data frame and the video data frame processed by the video player 332. instruction.
  • the video player 332 that supports the video redirection function activates the video hardware acceleration function after loading the video file, and transmits the video data frame and the video data frame processing instruction to the virtual display driver 334 through the DirectX® runtime library 333.
  • DirectX® Video Acceleration (DXVA) is a customized video acceleration specification from Microsoft®. It is available in two versions, DXVA 1.0 and DXVA 2.0.
  • the video hardware acceleration specification is not only a video data frame decoding calculation specification during video playback, but also related to video data frame post processing.
  • the DirectX® runtime is a multimedia programming interface created by Microsoft Corporation. Implemented by the C++ programming language, widely used in Microsoft® Windows®, Microsoft® Xbox®, and Microsoft® Xbox 360® video game development, the DirectX® runtime described in the embodiments of the present invention and the later embodiments of the invention is the same.
  • the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction.
  • the video data frame is sent to the virtual display driver 334, and the video data frame is decoded according to the video data frame decoding instruction, and then the decoded video data frame is post-processed according to the video data frame post-processing instruction; usually, DirectX
  • the ® runtime library 333 calls the interface for video post-processing in the video hardware acceleration interface provided by the virtual display driver 334, informing the virtual display driver 334 to perform post-processing of the video data frame.
  • the video data frame post-processing instruction type includes operations such as brightness, hue, saturation, and scaling of the video data frame.
  • the video data frame to be post-processed is sent to the graphics card 325 (i.e., the virtual graphics card) according to the presentation instruction, and is transmitted from the graphics card 325 to the physical graphics card (the physical graphics card is omitted in FIG. 2 of the embodiment of the present invention).
  • the virtual display driver 334 intercepts the video data frame and the video data frame processing instruction, and intercepts the captured video data frame and the video data.
  • the frame processing instructions are sent to the display protocol agent 335, which then transmits the intercepted video data frame and video data frame processing instructions to the client 101a via the virtual network interface card 326 via the physical network interface card 312.
  • the virtual graphics driver 334 does not actually process the video data frame according to the video data frame processing instructions, but intercepts the video data frame and video data frame processing instructions and sends them to the client 101a for processing by the display protocol agent 335.
  • the video data frame and the video data frame processing instruction are intercepted, so that the video data frame sent by the video player 332 to the virtual display driver 334 is not processed according to the video data frame processing instruction on the server 204a side, but Sended to the client for processing, so that the client can decode, post-process and render the video data frame according to the video data frame processing instruction, thereby ensuring the video experience of the client user; and as long as the server-side video player supports the video redirection function,
  • the present invention can be implemented without relying on a video player such as the Media Player® player that does not rely on the DirectShow® framework introduced by Microsoft®.
  • the video data frame sent by the video player to the virtual display driver is not processed on the server side according to the video data frame processing instruction, and the encoded video data frame is still transmitted, thereby further saving server computing resources and network transmission bandwidth.
  • the video player 332 in the virtual machine 205a is based on the pair. After the video playback request sent by the client 101a, the video hardware acceleration is started, and the video data frame and the video data frame processing instruction are sent to the virtual display driver 334. After loading the video file, the video player 332 demultiplexes the loaded video file, that is, the video data stream, to obtain a video data frame therein.
  • a video hardware acceleration interface is defined in the DirectX® runtime library 333, and the video hardware acceleration is initiated by the video player 332 calling the DirectX® runtime library 333, informing the virtual display driver 334 to process the instruction according to the video data frame.
  • the video data frame transmitted by the video player 332 is processed.
  • the virtual display driver 334 intercepts the video data frame and video data frame processing instructions.
  • the virtual display driver is the Windows® Display Driver Model (referred to as the WDDM display driver model) or the Windows® XP Display Driver Model (referred to as the XPDM display driver model).
  • the WDDM or XPDM display driver models include the Display Driver and Miniport Driver modules.
  • an implementation scheme is that the display driver module of the virtual display driver intercepts the video data frame and the video data frame processing instruction.
  • the display driver module of the virtual display driver sends the intercepted video data frame and the video data frame processing instruction to the display protocol proxy 335, and the display protocol proxy 335 sends the intercepted video data frame and the video data frame processing instruction to The client 101a performs processing.
  • an implementation scheme is that the WDDM or XPDM display driver model defines a video hardware acceleration interface in the Display Driver module, and when the video data frame and the video data frame processing instruction pass the interface, the video data frame and the video data frame are intercepted. instruction.
  • Another implementation scheme is that the Display Driver module intercepts the video data frame and the video data frame processing instruction, and sends the intercepted video data frame and the video data frame processing instruction to the display protocol proxy 335 via the Miniport Driver module, and the display protocol proxy 335
  • the client 101a sends the intercepted video data frame and the video data frame processing finger Order.
  • the embodiment of the present invention intercepts another embodiment of the video data frame and the video data frame processing instruction.
  • the video player 332 in the virtual machine 205a loads the video according to the video playback request sent by the corresponding client 101a.
  • the video hardware acceleration is turned on, and the video data frame and the video data frame processing instruction are sent to the virtual display driver 334.
  • the video player 332 demultiplexes the loaded video file, that is, the video data stream, to obtain a video data frame therein.
  • a video hardware acceleration interface is defined in the DirectX® runtime 333, and the video hardware acceleration is initiated by the video player 332 calling the DirectX® runtime 333, informing the virtual display driver 334 to decode the instruction according to the video data frame.
  • the video data frame transmitted by the video player 332 is decoded.
  • the DirectX® runtime 333 invokes the virtual display driver 334 to process the video data frame, ie, after the video data frame and video data frame processing instructions pass through the DirectX® runtime 333, before the virtual display driver 334 is reached, the dynamic link
  • the library intercepts the video data frame and video data frame processing instructions.
  • one of the dynamic link library implementations is to intercept the call of the virtual display driver 334 by the DirectX® runtime 333 by using Hook technology, and implement a dynamic link library file (dll file) for the virtual display driver 334 Hook, and It is set to be loaded first in the registry to intercept the call of the DirectX® runtime 333 to the virtual display driver 334, thereby enabling the capture of video data frames and video data frame processing instructions.
  • the intercepted video data frame and video data frame processing instructions are sent to display protocol agent 335, which transmits the intercepted video data frame and video data frame processing instructions to client 101a.
  • the virtual display driver is Windows® Display Driver Model (referred to as WDDM display driver model) or Windows® XP Display Driver Model (referred to as XPDM display driver model).
  • WDDM display driver model includes Display Driver and Miniport. Driver two parts module.
  • the DirectX® runtime 333 calls the Display Driver of the virtual display driver 334, the dynamic link library intercepts the video data frame and the video data frame processing instruction, and the dynamic link library sends the intercepted video data frame and the video data frame processing instruction to the display protocol.
  • the proxy 335, the display protocol proxy 335 sends the intercepted video data frame and video data frame processing instructions to the client 101a for processing.
  • the embodiment of the present invention intercepts another embodiment of the video data frame and the video data frame processing instruction.
  • the video player 332 in the virtual machine 205a loads the video according to the video playback request sent by the corresponding client 101a.
  • the video hardware acceleration is turned on, and the video data frame and the video data frame processing instruction are sent to the virtual display driver 334.
  • the video player 332 loads the video file, the loaded video file, that is, the video data stream is demultiplexed, to obtain a video data frame therein.
  • a video hardware acceleration interface is defined in the DirectX® runtime library 333, and the DirectX® runtime library 333 is called by the video player 332 to send video data frames and video data frame processing instructions to the virtual display driver 334.
  • the video hardware acceleration is initiated, and the virtual display driver 334 is notified to process the video data frame sent by the video player 332.
  • the DirectX® runtime intercepts the video data frame and video data frame processing instructions.
  • the embodiment of the present invention intercepts another embodiment of the video data frame and the video data frame processing instruction.
  • the video player 332 in the virtual machine 205a loads the video according to the video playback request sent by the corresponding client 101a.
  • the video hardware acceleration is turned on, and the video data frame and the video data frame processing instruction are sent to the virtual display driver 334.
  • the video player 332 demultiplexes the loaded video file, that is, the video data stream, to obtain a video data frame therein.
  • a video hardware acceleration interface is defined in the DirectX® runtime library 333, and the video player 332 calls the DirectX® runtime library 333 to initiate video hardware acceleration, sending video data frames and video.
  • the data frame processing instruction that is, the video data frame and the video data frame processing instruction arrive
  • the dynamic link library Prior to the DirectX® runtime library 333, the dynamic link library intercepted video data frames and video data frame processing instructions. To do this, you need to implement a dynamic link library file (dll file) for the DirectX® runtime 333 Hook, and set it to be loaded first in the registry to intercept the video player 332 to the DirectX® runtime 333. Called to achieve interception of video data frames and video data frame processing instructions.
  • dll file dynamic link library file
  • the embodiment of the present invention is described in conjunction with FIG. 3a.
  • the specific process description is as shown in FIG. 4.
  • the virtual machine 205a on the server 204a receives the video play request sent by the client 101a through the display protocol agent 335.
  • Step 401 The video player 332 loads the video file.
  • the video player 332 located in the virtual machine 205a loads the video file in accordance with the video playback request from the client 101a.
  • Step 402 Send a video data frame and a video data frame processing instruction to the virtual display driver 334 through the DirectX® runtime library 333.
  • the video data frame processing instructions include a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame rendering instruction.
  • the virtual display driver 334 intercepts the video data frame and video data frame processing instructions sent by the video player 332 to the virtual display driver 334.
  • the display protocol proxy 335 sends the intercepted video data frame and the video data frame processing instruction to the client 101a.
  • the display protocol agent 335 transmits the intercepted video data frame and the video data frame processing instruction to the client 101a via the virtual network interface card 326 and then via the physical network interface card 312.
  • Step 405 The client 101a receives the video data frame and the video data frame processing instruction.
  • Step 406 Process the video data frame according to the video data frame processing instruction.
  • the client 101a receives the virtual image through the remote protocol receiving module 501.
  • the projector 205a processes the video data frame and video data frame processing instructions transmitted by the protocol agent 335.
  • FIG. 5 as an exemplary description of the client, is not a specific definition of the client used in the present invention, and only some components are given in the drawings, and some other components for realizing the normal function of the client are given. It is not described here, but those skilled in the art can obtain these components from the drawings according to the specific implementation.
  • the utility model comprises a memory 500, a central processing unit 510, a network interface card 520, a graphics card 530, a hard disk 540 and a serial interface (referred to as a serial port) 550.
  • the serial port can be connected with a peripheral device such as a mouse and a keyboard.
  • the graphics card 530 is connected to the display 560.
  • the display 560 can be connected to the client without having to be two separate physical devices.
  • the computer program is loaded in the memory 500.
  • the memory 500 includes a remote desktop protocol receiving module 501, a video player 502, and an operating system 503.
  • the network interface card 520 is configured to receive the video data frame and video data frame processing instructions sent by the virtual machine 205a through the display protocol agent 335, and transmit the same to the remote desktop protocol receiving module 501 through the system bus.
  • the remote desktop protocol receiving module 501 is configured to receive the video data frame and the video data frame processing instruction.
  • the video player 502 processes the video data frame and video data frame processing instructions received by the remote desktop protocol receiving module 501.
  • the operating system 503 provides a system running environment for the client, and may be a Windows® operating system, a Linux® operating system, and other operating systems. The present invention does not specifically limit this.
  • Video player 502 processes the video data frames in accordance with the received video data frame processing instructions. For a certain frame of video data, the video data frame processing instructions sequentially include a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction.
  • the video data frame is software-decoded by the video player, and then the decoded video is processed according to the video data frame post-processing instruction.
  • the data frame is post processed.
  • the video data frame to be post-processed is sent to the graphics card according to the video data frame presentation instruction, and the display 560 connected through the client 101a Display video data images.
  • the video player 502 calls a video hardware acceleration application programming interface (API) to start video hardware acceleration, and sends video data frames and video data frame processing instructions to the corresponding hardware through the video hardware acceleration API.
  • API application programming interface
  • the video player 502 detects whether the client hardware supports video hardware acceleration at startup. For the query whether the video hardware acceleration is supported, the video player 332 performs the video hardware acceleration capability query in the foregoing, and the details are not described herein.
  • the remote protocol receiving module 501 receives the video data frame and video data frame processing instructions transmitted by the virtual machine 205a via the display protocol agent 335, and the video player 502 initiates video hardware acceleration by invoking the video hardware acceleration API.
  • Client 101 initiates video hardware acceleration to save computing resources on the client's central processing unit.
  • DXVA of Mircosoft® is taken as an example to describe the post-processing of video data frames and the presentation of video data frames.
  • DXVA not only provides video data frame decoding processing, but also video data frame post-processing capabilities, such as image scaling, color space conversion and de-interlacing.
  • FIG. 6 DXVA is a video data frame post-processing flowchart. DXVA can process the main data stream and the 15-way sub-data stream. After the main data stream is subjected to noise filtering, de-interlacing processing, detail filtering and color space conversion, it is mixed with the color space-converted sub-data stream and mixed.
  • the subsequent video data stream is subjected to image adjustment, wherein the image adjustment includes brightness, contrast, saturation adjustment, and the like.
  • the image-scaled video stream is image-scaled to adjust the image size.
  • the image-scaled data is color-space converted to display the video data stream. Where the color is empty Inter-conversion, including conversion from RGB color space to YUV color space, or conversion from YUV color space to RGB color space, where RGB represents red, green, and blue, respectively, YUV represents brightness, chromaticity, and density, respectively. The examples are not described here.
  • Figure 6 depicts the process of video post-processing. Not all functions will be used in the actual application. In actual tests, most players such as Microsoft® Media Player, Storm Video 8, QQ® Video Player, etc. only use image scaling by default to scale the decoded video data frame from the original size to the playback window size.
  • the client 101a performs video data frame post-processing, taking image scaling as an example, and performs image scaling on the decoded video data frame to adjust the original image size to be displayed on the display 560 that is suitable for client connection.
  • the specific effect is shown in Figure 7a.
  • Video data frame post-processing can also include transparency blending, as shown in Figure 7b.
  • the video data frame post-processing in the embodiment of the present invention may further include brightness, contrast, and saturation adjustment. This allows the client to present a better video experience to the user.
  • the decoded video data frame is subjected to video data frame post-processing, and the video data frame post-processed by the video data frame is sent to the graphics card 530 according to the video data frame presentation instruction, and displayed by the display 560.
  • the video data frame presentation instruction carries display parameters, and the display parameters include a video data frame to be displayed and a display area of the video data frame.
  • the image formed after post-processing of the video data frame includes four regions to be displayed, which are represented as 1, 2, 3, and 4, respectively, and the remote desktop image, that is, the desktop image of the virtual machine 205a.
  • the client 101a is displayed on the client 101 display 560 by a 2D rendering display function, wherein the remote desktop image has an area for presenting the user with "display settings, audio settings, and The subtitle setting" option, when presenting the video, also needs to present the "display settings, audio settings and subtitle settings” option area, and the display settings, audio settings and subtitle settings "option area with 1, 2 , 3 and 4 correspond to the middle area enclosed by the four display areas. Therefore, 1, The video data frames corresponding to the intermediate areas enclosed by the four display areas of 2, 3, and 4 need not be displayed, and constitute video data frames included in the video data frames of the intermediate areas surrounded by the four display areas 1, 2, 3, and 4.
  • the display parameters are used to confirm the display area, and the display parameters are used to define that the video data frame is not displayed. Thereby, the video picture is integrated with the remote desktop to provide a better video viewing experience for the client user.
  • the video data frame may be processed according to the video data frame processing using other video hardware acceleration functions.
  • the embodiment of the present invention further discloses a server 90 as shown in FIG. 9, which includes an intercepting unit 901 and a sending unit 902.
  • the intercepting unit 901 is configured to intercept a video data frame and a video data frame processing instruction sent by the video player to the virtual display driver, where the video data frame is demultiplexed by the video player to the loaded video file.
  • the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction; and a sending unit 902, configured to send the intercepted video data frame and the location to the client
  • the video data frame processing instruction is configured to cause the client to process the video data frame according to the video data frame processing instruction.
  • the intercepting unit 901 in this embodiment intercepts the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver, so that the server 90 does not process the video data frame according to the video data frame processing instruction.
  • the sending unit 9 02 sends to the client.
  • An implementation scheme is that the intercepting unit 901 of the server 90 intercepts the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver, so that the server 90 does not process the video data frame according to the video data frame processing instruction. Instead, it is directly transmitted by the virtual display driver to the client through the sending unit 902, so that the client can decode the video data frame according to the video data frame processing instruction, and then The presentation and protection of the video experience of the client user; at the same time, as long as the server-side video player supports video redirection, the invention can be implemented without relying on a certain video player, such as DirectShow® which is not dependent on Microsoft®. The multimedia player of the frame. Moreover, the video data frame sent by the video player to the virtual display driver is not processed on the server side according to the video data frame processing instruction, and the encoded video data frame is still transmitted, thereby further saving server computing resources and network transmission bandwidth.
  • the intercepting unit 901 is a dynamic link library
  • the video player 332 calls the DirectX® runtime 333 to start video hardware acceleration, and notifies the virtual display driver 334 to decode the video data frame sent by the video player 332.
  • the DirectX® runtime 333 invokes the virtual display driver 334 to process the video data frame according to the video data frame processing instruction, ie, after the video data frame and the video data frame decoding instruction pass the DirectX® runtime 333
  • the dynamic link library intercepts the video data frame and video data frame processing instructions.
  • one of the dynamic link library implementations is to use the Hook technology to intercept the call of the virtual display driver 334 by the DirectX® runtime library 333, and implement a dynamic link library file (dll file) for the virtual display driver 334Hook, and It is set to be loaded first in the registry to intercept the call of the virtual display driver 334 by the DirectX® runtime library 333, thereby enabling the capture of video data frames and video data frame processing instructions.
  • the transmitting unit 902 transmits the intercepted video data frame and the video data frame processing instruction to the client 101a.
  • the virtual display driver is Windows® Display Driver Model (referred to as WDDM display driver model) or Windows® XP Display Driver Model (referred to as XPDM display driver model).
  • the TODM display driver model is taken as an example to illustrate .
  • the TO Li display driver model includes a two-part mode of Display Driver and Miniport Driver. Piece.
  • the DirectX® runtime 333 calls the Display Driver of the virtual display driver 334
  • the dynamic link library intercepts the video data frame and the video data frame processing instruction, and the transmitting unit 902 transmits the intercepted video data frame and the video data frame processing instruction to the client 101a. Process it.
  • the intercepting unit 901 acts as a dynamic link library, and intercepts the video data frame and the video data frame processing instruction when the video player 332 calls the DirectX® runtime 333 to start the video hardware acceleration, that is, in the video data frame and the video data frame.
  • the video data frame and video data frame processing instructions are intercepted before the processing instruction reaches the DirectX® runtime library 333.
  • the specific implementation principle is the same as the video data frame and video data frame processing instruction through the DirectX® runtime 333.
  • the dynamic link library intercepts the implementation of the video data frame and the video data frame processing instruction.
  • the intercepting unit 901 is a DirectX® runtime library 333.
  • the DirectX® runtime intercepts the video data frame and the video data frame processing instruction.
  • the virtual display driver is configured to receive the video hardware acceleration sent by the video player before the video player sends the video data frame and the video data frame processing instruction to the virtual display driver.
  • the capability query request the virtual display driver sends a query request response to the video player; the query request response indicates that the virtual display driver supports video hardware acceleration.
  • some video players obtain video data frames that have been decoded by the client from the client, thereby affecting video playback. Such video players do not really support video redirection. Therefore, it can also be determined whether the video player supports video redirection, and the specific implementation manner may be that the video player sends a video hard to the virtual display driver.
  • the virtual display driver acquires information of the video player according to the video hardware acceleration capability query request; the virtual display driver is based on information of the video player and supports video redirection. Matching the video player list; if the information of the video player matches the information of the video player in the video player list supporting the video redirection, the virtual display driver sends the information to the video player Query request response; wherein the video player list supporting video redirection includes information of a video player that supports video redirection.
  • the virtual display driver returns a query response to the video player by confirming that the video player supports video redirection to indicate that the virtual display driver supports video hardware acceleration.
  • the virtual display driver returns a query request response to the video player, indicating that the virtual display driver supports video hardware acceleration.
  • the video data frame and the video data frame processing instruction are intercepted and sent to the client for processing, thereby saving server computer resources and network transmission bandwidth, and ensuring the video experience of the client user.
  • the present invention can be implemented without relying on a certain video player.
  • the embodiment of the present invention further discloses a client 100 shown in FIG. 10, which includes a receiving unit 1 001 and a processing unit 1 002.
  • the receiving unit 1 001 is configured to receive a video data frame and a video data frame processing instruction, where the video data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction; 1 002, configured to process the video data frame according to the video data frame processing instruction.
  • the processing unit 1 002 has The method is: decoding the video data frame according to the video data frame decoding instruction; performing video data frame post-processing on the decoded video data frame according to the video data frame post-processing instruction; according to the video data A frame rendering instruction displays the video data frame post-processed by the video.
  • the client 100 receives a video data frame sent by a server and a video data frame processing instruction including a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction, according to the video data frame.
  • the processing instruction processes the video data frame to ensure the video experience of the client user, and fully utilizes the computing resources of the client.
  • the embodiment of the invention discloses a video redirection system, as shown in FIG. 11, which includes a server 90 and a client 100.
  • the server 90 intercepts the video data frame and the video data frame processing instruction sent by the video player to the virtual display driver; wherein the video data frame is obtained by demultiplexing the loaded video file by the video player;
  • the data frame processing instruction includes a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction, and sends the intercepted video data frame and the video data frame processing instruction to the client 100 to enable the
  • the client 100 processes the video data frame according to the video data frame processing instruction.
  • the client 100 receives the video data frame and the video data frame processing instruction; and processes the video data frame according to the video data frame processing instruction.
  • Processing the video data frame according to the video data frame processing instruction specifically: decoding the video data frame according to the video data frame decoding instruction; and decoding the video data frame post processing instruction according to the video data frame
  • the video data frame is subjected to video data frame post-processing; and the video data frame processed by the video is displayed according to the video data frame presentation instruction.
  • the server 90 and the client 100 provided in the embodiment of the present invention may be a general computer, a mobile terminal, a workstation, or a dedicated server.
  • the present invention is not specifically limited, and has a memory and at least one central processor, and the memory and the At least one central processing unit is coupled by a bus, the memory stores computer instructions, and the at least one central processing unit is configured to execute computer instructions in the memory, and also includes a common external interface and the like to implement some necessary components of the server function.
  • the algorithm of the computer instructions stored in the memory may be described by referring to the corresponding method in the embodiment of the invention.
  • the video redirection system intercepts, on the server side, a video data frame that the video player sends to the virtual display driver and a video data frame including a video data frame decoding instruction, a video data frame post-processing instruction, and a video data frame presentation instruction. Processing the instruction, and sending the instruction to the client, the client receiving the video data frame and the video data frame processing instruction, and decoding, video post-processing and rendering the video data frame according to the video data frame processing instruction, ensuring The video experience of the client user.
  • the invention can be implemented without relying on a video player such as the Media Player® player that does not rely on the DirectShow® framework introduced by Microsoft®.
  • the video data frame sent by the video player to the virtual display driver is not processed on the server side according to the video data frame processing instruction, and the encoded video data frame is still transmitted, thereby further saving server computing resources and network transmission bandwidth.
  • the virtual desktop-based remote desktop architecture provided by the embodiment of the present invention, those skilled in the art may appreciate that the present invention is not limited to the described virtual desktop architecture of the present embodiment, and the remote desktop invention based on other types of virtual desktops The same applies. In addition, the present invention is not only applicable to a virtual desktop-based remote desktop architecture, but also to other application scenarios that provide video data to remote clients.
  • the elements and algorithm steps of the various examples described in connection with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the solution. A person skilled in the art can use different methods to implement the described functions for each particular application, but such implementation should not be considered to be beyond the scope of the present invention.
  • the units described as separate components may or may not be physically separate, and the components displayed as the units may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the embodiment scheme.
  • each functional unit in each embodiment of the present invention may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
  • the functions may be stored in a computer readable storage medium if implemented in the form of a software functional unit and sold or used as a standalone product. Based on this understanding, the technical solution of the present invention contributes essentially or to the prior art.
  • the portion of the solution or portion of the technical solution may be embodied in the form of a software product stored in a storage medium, including instructions for causing a computer device (which may be a personal computer, server, or network device) Etc.) Perform all or part of the steps of the method of the various embodiments of the present invention.
  • the foregoing storage medium includes: a NAS (Network Attached Storage), a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
  • NAS Network Attached Storage
  • ROM read-only memory
  • RAM random access memory
  • magnetic disk or an optical disk.
  • optical disk A medium that can store program code.

Abstract

本发明实施例公开了视频重定向方法、装置、系统及计算机可读存储介质,所述方法包括:截获视频播放器向虚拟显示驱动发送的视频数据帧和包括视频数据帧解码指令、视频数据帧后处理指令和视频数据帧呈现指令的视频数据帧处理指令,发送视频数据帧和视频数据帧处理指令到客户端,使客户端根据视频数据帧处理指令对视频数据帧进行解码、后处理和显示,保证客户端用户的视频体验;同时只要服务器侧视频播放器支持视频重定向功能即可实现本发明;并且视频播放器向虚拟显示驱动发送的视频数据帧并没有在服务器侧根据视频数据帧处理指令进行处理,发送的仍是编码的视频数据帧,从而可以进一步节约服务器计算资源和网络传输带宽。

Description

一种视频重定向的方法、 装置、 系统及计算机可读介质 技术领域
本发明涉及信息技术领域, 特别涉及一种视频重定向的方法、 装 置、 系统及计算机可读介质。
背景技术
随着计算机技术的不断发展, 远程桌面成为一种流行技术。 远程 桌面技术通过登陆到远程服务器,将该远程服务器屏幕显示的内容传 递到本地客户端进行显示。 远程桌面应用并不仅指远程的屏幕显示, 还可以包含远程视频传送。
现有技术中, 使用远程桌面中的视频播放器播放视频文件时, 为 了减轻远程服务器压力,使用基于 Microsoft®公司推出的 DirectShow® 框架的多媒体播放器时,在远程服务器上通过该视频播放器加载视频 文件后, 可以从 DirectShow®中的 Filter截获未解码的视频数据, 在 客户端的 DirectShow®框架中也插入 Filter,接收远程服务器发送的视 频数据进行解码显示, 同时将视频数据显示信息发送到客户端, 但是 该方案依赖特定播放器, 并且不能对视频数据进行后处理操作, 影响 用户体验。
发明内容
本发明实施例公开了视频重定向的方法、 装置、 系统和计算机可 读存储介质,用于通过视频重定向,在客户端实现视频数据帧后处理, 提高客户端用户视频体验。
第一方面, 本发明实施例公开了一种视频重定向的方法, 包括: 截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
结合第一方面实施例, 在第一种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器向所述虚拟显示驱动发送所述视频数据帧 和所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频 数据帧和所述视频数据帧处理指令。
结合第一方面实施例, 在第二种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令, 所述 Di rec tX®运行库调用所述虚拟显示驱动对所述视频数据帧进行处 理时, 动态链接库截获所述视频数据帧和所述视频数据帧处理指 令。
结合第一方面实施例, 在第三种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX®运行库截获所述视频数据帧和所述视频数据帧处理指令。 结合第一方面, 在第四种可能的实施方式中, 所述截获视频 播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指令, 具体包括:
当所述视频播放器调用 DirectX®运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
结合第一方面、 第一方面的第一种、 第二种、 第三种或第四 种可能的实施方式, 在第五种可能的实施方式中, 还包括: 所述 视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述视频 数据帧处理指令之前, 所述虚拟显示驱动接收所述视频播放器发 送的视频硬件加速能力查询请求, 所述虚拟显示驱动向所述视频 播放器发送查询请求响应; 所述查询请求响应表明所述虚拟显示 驱动支持视频硬件加速。
结合第一方面的第五种可能的实施方式, 在第六种可能的实 施方式中, 所述虚拟显示驱动向所述视频播放器发送查询请求响 应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
第二方面, 本发明实施例公开了一种视频重定向的方法, 包括: 客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。 结合第二方面实施例, 在第一种可能的实施方式中, 根据所 述视频数据帧处理指令对所述视频数据帧进行处理, 具体包括: 根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方 式中,所述根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进行视频 数据帧后处理, 具体为, 在所述客户端启动视频硬件加速条件下, 根 据所述视频数据帧解码指令对所述视频数据帧进行解码,根据所述视 频数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后处 理。
第三方面, 本发明实施例公开了一种服务器, 包括: 中央处 理器和存储器, 所述中央处理器与所述存储器通过系统总线连接, 当所述服务器运行时, 所述中央处理器执行所述存储器存储的计 算机执行指令, 使所述服务器执行如下步骤:
截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
结合第三方面实施例, 在第一种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和 所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频数 据帧和所述视频数据帧处理指令。
结合第三方面实施例, 在第二种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令, 所述 Di rec tX®运行库调用所述虚拟显示驱动对所述视频数据帧进行处 理时, 动态链接库截获所述视频数据帧和所述视频数据帧处理指 令。
结合第三方面实施例, 在第三种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX®运行库截获所述视频数据帧和所述视频数据帧处理指令。
结合第三方面实施例, 在第四种可能的实施方式中, 所述截 获视频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处 理指令, 具体包括:
当所述视频播放器调用 DirectX®运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
结合本发明第三方面、 第三方面的第一种、 第二种、 第三种 或第四种可能的实施方式, 在第五种可能的实施方式中, 还用于 执行: 所述视频播放器向所述虚拟显示驱动发送所述视频数据帧 和所述视频数据帧处理指令之前, 所述虚拟显示驱动接收所述视 频播放器发送的视频硬件加速能力查询请求, 所述虚拟显示驱动 向所述视频播放器发送查询请求响应; 所述查询请求响应表明所 述虚拟显示驱动支持视频硬件加速。
结合本发明第三方面的第五种可能的实施方式, 在第六种可 能的实施方式中, 所述虚拟显示驱动向所述视频播放器发送查询 请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
第四方面, 本发明实施例公开了一种客户端, 包括中央处理 器和存储器, 所述中央处理器与所述存储器通过系统总线连接, 当所述客户端运行时, 所述中央处理器执行所述存储器存储的计 算机执行指令, 使所述客户端执行如下步骤:
客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。 结合本发明第四方面实施例, 在第一种可能的实施方式中, 根据所述视频数据帧处理指令对所述视频数据帧进行处理, 具体 包括:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
结合本发明第四方面的第一种可能的实施方式, 在第二种可 能的实施方式中, 所述根据所述视频数据帧解码指令对所述视频 数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的 视频数据帧进行视频数据帧后处理, 具体为, 在所述客户端启动 视频硬件加速条件下, 根据所述视频数据帧解码指令对所述视频 数据帧进行解码, 根据所述视频数据帧后处理指令对所述解码的 视频数据帧进行视频数据帧后处理。
本发明第五方面, 本发明实施例公开了一种视频重定向系统, 包 括本发明第三方面任一所述的服务器和本发明第四方面任一所述的 客户端。
第六方面, 本发明实施例公开了一种服务器, 包括: 截获单元, 用于截获视频播放器向虚拟显示驱动发送的视频 数据帧和视频数据帧处理指令; 其中, 所述视频数据帧是由所述 视频播放器对加载的视频文件解复用获得的; 所述视频数据帧处 理指令包括视频数据帧解码指令、 视频数据帧后处理指令和视频 数据帧呈现指令;
发送单元, 用于向客户端发送截获的所述视频数据帧和所述 视频数据帧处理指令,以使所述客户端根据所述视频数据帧处理 指令对所述视频数据帧进行处理。
结合本发明第六方面实施例, 在第一种可能的实施方式中, 所述截获单元具体为所述虚拟显示驱动; 所述虚拟显示驱动截获 所述视频数据帧和所述视频数据帧处理指令。
结合本发明第六方面实施例, 在第二种可能的实施方式中, 所述截获单元具体为动态链接库, 当所述视频播放器通过
Di rec tX®运行库向所述虚拟显示驱动发送所述视频数据帧和所述 视频数据帧处理指令, 所述 D i rec tX®运行库调用所述虚拟显示驱 动对所述视频数据帧进行处理时, 所述动态链接库截获所述视频 数据帧和所述视频数据帧处理指令。
结合本发明第六方面实施例, 在第三种可能的实施方式中, 所述截获单元具体为 DirectX®运行库, 当所述视频播放器通过所 述 D i rec tX®运行库向所述虚拟显示驱动发送的所述视频数据帧和 所述视频数据帧处理指令时, 所述 DirectX®运行库截获所述视频 数据帧和所述视频数据帧处理指令。
结合本发明第六方面实施例, 在第四种可能的实施方式中, 所述截获单元具体为动态链接库, 当所述视频播放器调用 DirectX®运行库向所述虚拟显示驱动发送所述视频数据帧和所述 视频数据帧处理指令时, 所述动态链接库截获所述视频数据帧和 所述视频数据帧处理指令。
结合本发明第六方面、 第六方面的第一种、 第二种、 第三种 或第四种可能的实施方式, 在第五种可能的实施方式中, 所述虚 拟显示驱动还用于所述视频播放器向所述虚拟显示驱动发送所述 视频数据帧和所述视频数据帧处理指令之前, 接收所述视频播放 器发送的视频硬件加速能力查询请求, 所述虚拟显示驱动向所述 视频播放器发送查询请求响应; 所述查询请求响应表明所述虚拟 显示驱动支持视频硬件加速。
结合本发明第六方面的第五种可能的实施方式, 在第六种可 能的实施方式中, 所述虚拟显示驱动向所述视频播放器发送查询 请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
第七方面, 本发明实施例公开了一种客户端, 包括: 接收单 元, 用于接收视频数据帧和视频数据帧处理指令; 其中, 所述视 频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处理 指令和视频数据帧呈现指令;
处理单元, 用于根据所述视频数据帧处理指令对所述视频数 据帧进行处理。
结合本发明第七方面实施例, 在第一种可能的实施方式中, 所述处理单元, 具体用于:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
第八方面, 本发明实施例公开了一种视频重定向系统, 包括 本发明第六方面所述的任一服务器和本发明第七方面任一所述的 客户端。
第九方面, 本发明实施例公开了一种计算机可读存储介质, 当计算机执行所述计算机可读存储介质时, 所述计算机执行如下 步骤:
截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
结合本发明第九方面实施例, 在第一种可能的实施方式中, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和 所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频数 据帧和所述视频数据帧处理指令。
结合本发明第九方面实施例, 在第二种可能的实施方式中, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令, 所述 Di rec tX®运行库调用所述虚拟显示驱动对所述视频数据帧进行处 理时, 动态链接库截获所述视频数据帧和所述视频数据帧处理指 令。
结合本发明第九方面实施例, 在第三种可能的实施方式中, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器通过 Di rec tX®运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX®运行库截获所述视频数据帧和所述视频数据帧处理指令。
结合本发明第九方面实施例, 在第四种可能的实施方式中, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器调用 DirectX®运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
结合本发明第九方面、 第九方面第一种、 第二种、 第三种或 第四种可能的实施方式, 在第五种可能的实施方式中, 还包括: 所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述 视频数据帧处理指令之前, 所述虚拟显示驱动接收所述视频播放 器发送的视频硬件加速能力查询请求, 所述虚拟显示驱动向所述 视频播放器发送查询请求响应; 所述查询请求响应表明所述虚拟 显示驱动支持视频硬件加速。
结合本发明第九方面的第五种可能的实施方式, 在第六种可 能的实施方式中, 所述虚拟显示驱动向所述视频播放器发送查询 请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
第十方面, 本发明实施例公开了一种计算机可读存储介质, 包括, 当计算机执行所述计算机可读存储介质时, 所述计算机执 行如下步骤:
客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。 结合本发明第十方面的实施例, 在第一种可能的实施方式中, 根据所述视频数据帧处理指令对所述视频数据帧进行处理, 具体 包括: 根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
结合本发明第十方面的第一种可能的实施方式, 在第二种可 能的实施方式中, 所述根据所述视频数据帧解码指令对所述视频 数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的 视频数据帧进行视频数据帧后处理, 具体为, 在所述客户端启动 视频硬件加速条件下, 根据所述视频数据帧解码指令对所述视频 数据帧进行解码, 根据所述视频数据帧后处理指令对所述解码的 视频数据帧进行视频数据帧后处理。
本发明实施例公开的视频重定向方法、 装置、 系统及计算机 可读存储介质, 截获视频播放器向虚拟显示驱动发送的视频数据 帧和包括视频数据帧解码指令、 视频数据帧后处理指令和视频数 据帧呈现指令的视频数据帧处理指令, 发送视频数据帧和视频数 据帧处理指令到客户端, 使客户端根据视频数据帧处理指令对视 频数据帧进行解码、后处理和呈现,保证客户端用户的视频体验。 同时只要服务器侧视频播放器支持视频重定向功能即可实现本发 明, 不依赖某一种视频播放器。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或 现有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面 描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他 的附图。
图 1为本发明实施例应用场景系统示意图;
图 2为本发明实施例远程桌面服务器结构示意图;
图 3a、 3b、 3c、 3d为本发明实施例虚拟桌面结构示意图; 图 4为本发明实施例视频重定向流程图;
图 5为本发明实施例客户端结构示意图;
图 6为本发明实施例视频数据帧后处理流程图;
图 7a和图 7b为本发明实施例视频数据帧后处理效果图; 图 8为本发明实施例视频数据帧呈现效果图;
图 9为本发明实施例服务器结构图;
图 10为本发明实施例客户端结构示意图;
图 11为本发明实施例系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方 案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实 施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技 术人员在没有作出创造性劳动前提下所获得的所有其他实施例 ,都属 于本发明保护的范围。
远程桌面环境中, 客户端发起视频播放请求, 服务器根据客户端 的视频播放请求, 通过视频播放器加载视频文件, 将视频文件的视频 流传输到客户端, 这一过程称为视频重定向。 本发明实施例中的服务 器可以包括普通个人计算机或其他终端, 也可以为商业服务器等, 在 这里并不具体限定, 本发明实施例以向客户端提供基于 Windows®操 作系统平台的远程桌面服务为例对发明方案进行详细描述。但是本发 明方案并不仅限于 Windows®操作系统, 根据本发明方案, 同样可以 扩展到其他常见的系统平台, 如 Linux®操作系统等。
本发明实施例公开了视频重定向的方法, 应用于远程桌面场景。 远程桌面场景通常由本地计算机和远程计算机组成。本地计算机通过 访问远程计算机,将远程计算机桌面传送到本地计算机。本地计算机, 即本发明实施例中的客户端; 远程计算机, 即本发明实施例中的服务 器。本发明实施例中的视频重定向是指将服务器上的视频文件的视频 数据流传送到客户端。其中一种远程桌面场景为虚拟桌面基础架构场 景, 但是本发明并不局限于图 1所示架构, 本发明方案可以应用于其 他用于传送远程视频数据到客户端的场景。虚拟桌面基础架构场景如 图 1所示, 本实施场景仅是一种示例性说明, 只是给出了与本发明实 施例相关的组成部分, 但是图 1并不是对本发明应用的具体限定。 图 1中左侧是虚拟桌面的客户端, 通常称为瘦客户端, 客户端的设备形 式可以是普通计算机 101a、 平板电脑 101b、 智能手机 101c等。 它们 通过网络 102 使用远程桌面协议 103 访问远程桌面服务。 服务器 204a ....204η提供了远程桌面的载体,用户的虚拟桌面 (Virtual Desktop) 以虚拟机 205a、 205b—205n的形式存在于服务器上。虚拟桌面管理系 统 106, 用于提供用户的客户端与虚拟机的映射等功能。 客户端首先 连接到虚拟桌面管理系统 106, 获取用户的虚拟机地址, 进而连接到 虚拟机, 虚拟桌面管理系统 106可以为服务器, 也可以为普通个人计 算机等, 本发明对此不作具体限定。 用户通过客户端访问服务器上分 配给该用户的虚拟桌面 (即虚拟机 ), 该虚拟桌面将用户访问的内容 传输到用户的客户端进行显示。
以服务器 204a为例, 硬件结构和软件结构是虚拟桌面基础架构 中最重要的组件, 它的典型结构如图 2所示。 服务器 204a中的典型 结构包括 3个部分, 分别为硬件平台 300、 虚拟化平台 (也可以称为 Hypervisor ) 301和虚拟机执行空间 302。硬件平台 300中可以包括服 务器物理结构中的硬盘 310、 中央处理器 311、 网络接口卡 312和存 储器 313。 Hypervisor301和虚拟机执行空间 302分别提供了虚拟机的 硬件平台和软件平台。 Hypervisor 包含了虚拟机监视器 320a、 320b—320n。 Hypervisor是物理硬件和虚拟机之间的中间层, 负责协 调各个虚拟机对硬件平台的访问。虚拟机监视器包括实现虚拟机的虚 拟硬件平台。图 2中,虚拟机监视器 320a中包含虚拟硬件平台 321a, 虚拟硬件平台中包含了虚拟出来的存储器 322, 中央处理器 323 , 硬 盘 324, 显卡 325和网络接口卡 326等。 虚拟机执行空间 302中运行 了多个虚拟机 205a、 205b ·205ηο 虚拟机 205a的软件系统运行在虚 拟机监视器 320a的虚拟硬件平台 321a上,其他虚拟机的软件系统也 运行在对应的虚拟机监视器的虚拟硬件平台上。客户操作系统 330运 行在虚拟机 205a中 ,客户操作系统 330包含了一个设备驱动层 331 , 设备驱动层 331安装了虚拟显示驱动 334、 网络接口卡驱动 336等驱 动程序。 虚拟机 205a中包括视频播放器 332。 其中, 客户操作系统 330可以为微软 ®公司提供的 Windows®操作系统平台。
如图 2所示, 用户使用客户端 101a登陆到虚拟机 205a时, 用 户观看视频时, 比如观看优酷 ®网络视频, 或者虚拟机 205a本地 视频文件时, 通过视频播放器 332 , 加载视频文件。 本发明实施例 以观看本地视频为例, 通过显示协议代理 335 接收到来自客户端 101a的视频播放请求, 视频播放器 332根据该视频播放请求, 加 载视频文件。 视频播放器 332 对加载的视频文件解复用获得视频 数据帧。 视频播放器 332在初始化时需要确定虚拟机 205a是否支 持视频硬件加速功能, 视频播放器 332 发送向虚拟显示驱动 334 发送视频硬件加速能力查询请求。 视频硬件加速是指利用计算机 硬件代替视频播放器的软件算法对视频数据帧进行处理, 具体可 以包括对视频数据帧进行解码、 后处理和呈现; 其中关于视频数 据帧后处理和呈现将后面的进行详细描述。 在本发明实施例中, 即利用虚拟机 205a的硬件代替视频播放器 332 自身的软件算法对 视频数据帧进行处理, 这里虚拟机的 205a硬件, 本领域技术人员 可以理解, 并不是虚拟机的 205a真实硬件, 而是通过虚拟机监视 器 320a提供的虚拟硬件。 其中一种实现方式为, 视频播放器 332 在启动查询虚拟显示驱动 334 的视频硬件加速能力, 可以通过调 用 GetCaps 函数进行查询, 或者, 可以通过调用 CreateDevice或 CreateDecodeDevice 函数创建硬件加速设备, 确定虚拟显示驱动 334是否支持视频硬件加速功能。 当视频播放器 332启动查询虚拟 显示驱动 334的视频硬件加速能力时, 虚拟显示驱动 334向视频 播放器 332 返回支持视频硬件加速能力的查询请求响应, 视频播 放器 332根据该查询请求响应确定虚拟机 205a支持视频硬件加速 能力。 本发明实现过程中, 发现一些视频播放器会从客户端获取 客户端已经解码的视频数据帧, 从而影响正常的视频处理, 因此 视频播放器 332向虚拟显示驱动 334查询视频硬件加速能力的同 时, 本发明实施例还可以确定视频播放器 332 是否支持视频重定 向功能, 确定视频播放器 332 是否支持视频重定向的一种方式为 虚拟机 205a通过网络从虚拟桌面管理系统 106中获取支持视频重 定向的视频播放器的列表(该支持视频重定向的视频播放器的列 表也可以存储在远程服务器 204a本地) , 该列表中包括了支持视 频重定向的视频播放器的信息, 支持视频重定向的视频播放器的 信息包括支持视频重定向的视频播放器的名称、 进程名和版本号。 其中, 视频播放器 332启动时, 视频播放器 332发送向虚拟显示 驱动 334发送视频硬件加速能力查询请求,会调用 GetCaps函数查 询 视 频 硬 件 加 速 能 力 , 或 者 调 用 CreateDevice 或 CreateDecodeDevice函数创建视频硬件加速。虚拟显示驱动 334在 收到视频播放器 332 的 GetCaps、 或者 CreateDevice 或 CreateDecodeDevice调用时,检查发起调用的视频播放器 332名称 和视频播放器 332进程名, 与从虚拟桌面管理系统 106获得的视 频播放器列表中的视频播放器的信息进行匹配。 若发起调用视频 播放器 332名称和视频播放器 332进程名在该列表中, 则通过客 户操作系统 330的应用程序接口 API定位到该视频播放器 332的 进程的可执行文件 (exe) , 并从可执行文件中提取出版本号, 与从 虚拟桌面管理系统 106 获取的视频播放器列表中的视频播放器的 版本号匹配, 若匹配则确定视频播放器 332 支持视频重定向, 并 响应视频播放器 332 的 GetCaps、 或者 CreateDevice 或 CreateDecodeDevice函数调用,虚拟显示驱动 334向所述视频播放 器 332 发送查询请求响应; 所述查询请求响应表明虚拟显示驱动 334支持视频硬件加速, 即在视频播放器 332向虚拟显示驱动 334 查询是否支持视频硬件加速的同时, 虚拟显示驱动判断视频播放 器 332是否支持视频重定向, 只有当虚拟显示驱动 334支持视频 硬件加速并且视频播放器 332 支持视频重定向时, 虚拟显示驱动 334才向视频播放器 332返回查询请求响应,视频硬件加速查询请 求响应表明虚拟显示驱动 334 支持视频硬件加速。 如果视频播放 器 332 不支持视频重定向, 则不响应查询请求。 本发明实施例关 于确定视频播放器 332 是否支持重定向的方法只是一种示例性说 明, 也即视频播放器 332 的信息和支持视频重定向的视频播放器 列表的信息不仅仅局限于视频播放器的名称、 进程名和版本号, 其他可以唯一确定视频播放器的信息也可以适用于本发明。 同时 其他可以判断视频播放器 332 是否支持视频重定向的方法也适用 于本案。
视频播放器 332向虚拟显示驱动 334发送视频数据帧和视频 数据帧处理指令,如图 3a所示,一种实现方式为虚拟显示驱动 334 截获视频播放器 332发送的视频数据帧和视频数据帧处理指令。
支持视频重定向功能的视频播放器 332加载视频文件后,启动视 频硬件加速功能, 通过 DirectX®运行库 333向虚拟显示驱动 334发 送视频数据帧和视频数据帧处理指令。视频硬件加速( DirectX® Video Acceleration, 简称为 DXVA ), 是微软 ®公司专门定制的视频加速规 范, 它共有两个版本, 分别是 DXVA 1.0和 DXVA 2.0。视频硬件加速 规范不仅仅是在视频播放过程中的视频数据帧解码计算规范,其还与 视频数据帧后期处理相关。 DirectX®运行库是由微软⑧公司创建的多 媒体编程接口。 由 C++编程语言实现, 被广泛使用于 Microsoft® Windows®、 Microsoft® Xbox®和 Microsoft® Xbox 360®电子游戏开 发, 本发明实施例及后面发明实施例描述的 DirectX®运行库与此相 同。
其中, 视频数据帧处理指令包括视频数据帧解码指令、 视频 数据帧后处理指令和视频数据帧呈现指令。 通常, 视频数据帧发 送到虚拟显示驱动 334 , 根据视频数据帧解码指令, 对该视频数据 帧进行解码, 然后再根据视频数据帧后处理指令对该解码的视频 数据帧进行后处理; 通常, DirectX®运行库 333 调用虚拟显示驱 动 334 提供的视频硬件加速接口中用于视频后处理的接口, 通知 虚拟显示驱动 334 完成视频数据帧的后处理。 视频数据帧后处理 指令类型包括对视频数据帧进行亮度、 色调、 饱和度和缩放等操 作中的至少一种, 后面将详细描述视频数据帧后处理。 将进行后 处理的视频数据帧根据呈现指令发送至显卡 325 (即虚拟显卡 ) , 由显卡 325发送至物理显卡 (本发明实施例附图 2 中省略了物理 显卡) 通过显示装置进行呈现。 本发明实施例中, 视频数据帧及 视频数据帧处理指令发送至虚拟显示驱动 334 时, 虚拟显示驱动 334截获该视频数据帧和视频数据帧处理指令,并将截获的该视频 数据帧和视频数据帧处理指令发送到显示协议代理 335 ,显示协议 代理 335通过虚拟网络接口卡 326再经物理网络接口卡 312 ,将截 获的该视频数据帧和视频数据帧处理指令发送到客户端 101a。 虚 拟显卡驱动 334 实际上并没有根据视频数据帧处理指令对视频数 据帧进行处理, 而是将视频数据帧和视频数据帧处理指令截获, 并通过显示协议代理 335发送至客户端 101a进行处理。 因此, 本 发明实施例中截获视频数据帧和视频数据帧处理指令, 使得视频 播放器 332向虚拟显示驱动 334发送的视频数据帧并没有在服务 器 204a侧根据视频数据帧处理指令进行处理, 而是发送到客户端 进行处理, 从而客户端能够根据视频数据帧处理指令对视频数据 帧进行解码、 后处理和呈现, 保证客户端用户的视频体验; 同时 只要服务器侧视频播放器支持视频重定向功能即可实现本发明, 不依赖某一种视频播放器, 如不依赖于 Microsoft®公司推出的 DirectShow®框架的 Media Player®播放器。并且视频播放器向虚拟 显示驱动发送的视频数据帧并没有在服务器侧根据视频数据帧处 理指令进行处理, 发送的仍是编码的视频数据帧, 从而可以进一 步节约服务器计算资源和网络传输带宽。
下面具体描述虚拟显示驱动 334 截获视频数据帧和视频数据帧 处理指令的过程。 具体地, 虚拟机 205a中的视频播放器 332根据对 应的客户端 101a发送的视频播放请求, 加载视频文件之后, 开启视 频硬件加速,向虚拟显示驱动 334发送视频数据帧和视频数据帧处理 指令。 视频播放器 332加载视频文件后, 对加载后的视频文件, 即对 视频数据流解复用, 获得其中的视频数据帧。 具体地, 就视频播放而 言, 在 DirectX®运行库 333 中定义了视频硬件加速接口, 通过视频 播放器 332调用 DirectX®运行库 333启动视频硬件加速, 通知虚拟 显示驱动 334根据视频数据帧处理指令对视频播放器 332发送的视频 数据帧进行处理。 当视频数据帧和视频数据帧处理指令发送至虚拟显 示驱动 334时,虚拟显示驱动 334截获视频数据帧和视频数据帧处理 指令。 如图 3a所示, 在 Windows®操作系统平台, 虚拟显示驱动为 Windows® Display Driver Model (简称 WDDM显示驱动模型)或者为 Windows® XP Display Driver Model (简称 XPDM显示驱动模型)。 具 体地, WDDM 或 XPDM 显示驱动模型均包括 Display Driver 和 Miniport Driver两部分模块。 本发明实施例中, 一种实现方案为虚拟 显示驱动的 Display Driver模块截获视频数据帧和视频数据帧处理指 令。 本发明实施例中虚拟显示驱动的 Display Driver模块将截获的视 频数据帧和视频数据帧处理指令, 发送到显示协议代理 335 , 显示协 议代理 335 将截获的视频数据帧和视频数据帧处理指令发送到客户 端 101a进行处理。 具体地, 一种实现方案为 WDDM或 XPDM显示 驱动模型在 Display Driver模块中定义视频硬件加速接口, 当视频数 据帧和视频数据帧处理指令通过该接口时,截获该视频数据帧和视频 数据帧处理指令。 另一种实现方案是 Display Driver模块截获该视频 数据帧和视频数据帧处理指令, 经 Miniport Driver模块, 将截获的视 频数据帧和视频数据帧处理指令发送到显示协议代理 335 , 显示协议 代理 335向客户端 101a发送截获的视频数据帧和视频数据帧处理指 令。
本发明实施例截获视频数据帧和视频数据帧处理指令的另一种 实施方式, 如图 3b所示, 虚拟机 205a中的视频播放器 332根据对应 的客户端 101a发送的视频播放请求, 加载视频文件之后, 开启视频 硬件加速,向虚拟显示驱动 334发送视频数据帧和视频数据帧处理指 令。 视频播放器 332加载视频文件后, 对加载后的视频文件, 即对视 频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言, 在 DirectX®运行库 333 中定义了视频硬件加速接口, 通过视频播放 器 332调用 DirectX®运行库 333启动视频硬件加速, 通知虚拟显示 驱动 334根据视频数据帧解码指令对视频播放器 332发送的视频数据 帧进行解码。 DirectX®运行库 333调用所述虚拟显示驱动 334对所述 视频数据帧进行处理时,即在视频数据帧和视频数据帧处理指令通过 DirectX®运行库 333后, 到达虚拟显示驱动 334之前, 动态链接库截 获该视频数据帧和视频数据帧处理指令。 具体地, 其中一种动态链接 库实现方式为釆用 Hook技术截获 DirectX®运行库 333对虚拟显示驱 动 334的调用, 需要实现一个对虚拟显示驱动 334 Hook的动态链接 库文件 (dll 文件), 并在注册表中将其设为最先加载, 以此拦截 DirectX®运行库 333对虚拟显示驱动 334的调用 ,从而实现视频数据 帧和视频数据帧处理指令的截获。将截获的视频数据帧和视频数据帧 处理指令发送到显示协议代理 335 , 显示协议代理 335将截获的视频 数据帧和视频数据帧处理指令发送到客户端 101a。 仍以 Windows®操 作系统平台, 虚拟显示驱动为 Windows® Display Driver Model (简称 WDDM显示驱动模型)或者为 Windows® XP Display Driver Model (简 称 XPDM显示驱动模型), 这里以 WDDM显示驱动模型为例 , 进行 说明。 具体地, WDDM显示驱动模型包括 Display Driver和 Miniport Driver两部分模块。 当 DirectX®运行库 333调用虚拟显示驱动 334的 Display Driver时, 动态链接库截获视频数据帧和视频数据帧处理指 令, 动态链接库将截获的视频数据帧和视频数据帧处理指令, 发送到 显示协议代理 335 , 显示协议代理 335将截获的视频数据帧和视频数 据帧处理指令发送到客户端 101a进行处理。
本发明实施例截获视频数据帧和视频数据帧处理指令的另一种 实施方式, 如图 3c所示, 虚拟机 205a中的视频播放器 332根据对应 的客户端 101a发送的视频播放请求, 加载视频文件之后, 开启视频 硬件加速,向虚拟显示驱动 334发送视频数据帧和视频数据帧处理指 令。 视频播放器 332加载视频文件后, 对加载后的视频文件, 即对视 频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言, 在 DirectX®运行库 333 中定义了视频硬件加速接口, 通过视频播放 器 332调用 DirectX®运行库 333向虚拟显示驱动 334发送视频数据 帧和视频数据帧处理指令, 启动视频硬件加速, 通知虚拟显示驱动 334对视频播放器 332发送的视频数据帧进行处理。 在视频数据帧和 视频数据帧处理指令通过 DirectX®运行库 333 时, DirectX®运行库 截获该视频数据帧和视频数据帧处理指令。
本发明实施例截获视频数据帧和视频数据帧处理指令的另一种 实施方式, 如图 3d所示, 虚拟机 205a中的视频播放器 332根据对应 的客户端 101a发送的视频播放请求, 加载视频文件之后, 开启视频 硬件加速,向虚拟显示驱动 334发送视频数据帧和视频数据帧处理指 令。 视频播放器 332加载视频文件后, 对加载后的视频文件, 即对视 频数据流解复用,获得其中的视频数据帧。具体地,就视频播放而言, 在 DirectX®运行库 333中定义了视频硬件加速接口,视频播放器 332 调用 DirectX®运行库 333启动视频硬件加速,发送视频数据帧和视频 数据帧处理指令时, 即视频数据帧和视频数据帧处理指令到达
DirectX®运行库 333之前,动态链接库截获视频数据帧和视频数据帧 处理指令。 为此, 需要实现一个对 DirectX®运行库 333 Hook的动态 链接库文件( dll文件), 并在注册表中将其设为最先加载, 以此截获 视频播放器 332对 DirectX®运行库 333的调用, 从而实现视频数据 帧和视频数据帧处理指令的截获。
本发明实施例结合图 3a,具体流程描述如图 4所示,服务器 204a 上的虚拟机 205a通过显示协议代理 335接收来自客户端 101a发送的 视频播放请求。 步骤 401 : 视频播放器 332加载视频文件。 位于虚拟 机 205a中的视频播放器 332根据来自客户端 101a的视频播放请求加 载视频文件。 步骤 402: 通过 DirectX®运行库 333 向虚拟显示驱动 334发送视频数据帧和视频数据帧处理指令。 视频播放器 332加载视 频文件后, 对加载的视频文件解复用获得视频数据帧, 启动视频硬件 加速,视频播放器 332通过 DirectX®运行库 333向虚拟显示驱动 334 发送视频数据帧和视频数据帧处理指令。视频数据帧处理指令包括视 频数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令。 步骤 403:虚拟显示驱动 334截获视频播放器 332向虚拟显示驱动 334 发送的视频数据帧和视频数据帧处理指令。 步骤 404: 显示协议代理 335向客户端 101a发送截获的所述视频数据帧和所述视频数据帧处 理指令。 具体地, 显示协议代理 335通过虚拟网络接口卡 326, 然后 经物理网络接口卡 312, 将截获的所述视频数据帧和所述视频数据帧 处理指令发送至客户端 101a。 步骤 405: 客户端 101a接收视频数据 帧和视频数据帧处理指令。 步骤 406: 根据所述视频数据帧处理指令 对所述视频数据帧进行处理。
如图 5所示, 客户端 101a通过远程协议接收模块 501接收虚 拟机 205a通过显示协议代理 335发送的视频数据帧和视频数据帧处 理指令。 具体地, 图 5 , 作为客户端的一种示例性说明, 并不是对本 发明中使用的客户端的具体限定,同时附图中只是给出了一些组件的 说明, 对于实现客户端正常功能的一些其他组件此处并没有说明, 但 是本领域技术人员根据具体实现, 可以从附图中获得这些组件。 包括 存储器 500、 中央处理器 510、 网络接口卡 520、 显卡 530、 硬盘 540 和串行接口 (简称串口) 550, 串口可以连接鼠标和键盘等外设。 其 中, 显卡 530连接显示器 560, 在另一种客户端中, 显示器 560可以 与客户端连接在一起,而不必是两个独立的物理装置。客户端运行时 , 存储器 500中加载计算机程序, 图 5中, 存储器 500中包括远程桌面 协议接收模块 501、视频播放器 502和操作系统 503。 网络接口卡 520 用于接收虚拟机 205a通过显示协议代理 335发送的视频数据帧和视 频数据帧处理指令, 并通过系统总线传递到远程桌面协议接收模块 501。 远程桌面协议接收模块 501用于接收该视频数据帧和视频数据 帧处理指令。视频播放器 502对远程桌面协议接收模块 501接收的视 频数据帧和视频数据帧处理指令进行处理。操作系统 503为客户端提 供系统运行环境, 可以为 Windows®操作系统、 Linux®操作系统及其 他操作系统, 本发明对此不作具体限定。视频播放器 502根据接收的 视频数据帧处理指令对视频数据帧进行处理。 针对某一帧视频数据, 视频数据帧处理指令依次包括视频数据帧解码指令、视频数据帧后处 理指令和视频数据帧呈现指令。 当客户端 101a的视频播放器 502使 用视频播放器自身的视频处理能力来处理视频数据帧时,即利用视频 播放器对视频数据帧进行软件解码,然后根据视频数据帧后处理指令 对解码的视频数据帧进行后处理。将进行后处理的视频数据帧根据视 频数据帧呈现指令发送到显卡, 通过客户端 101a连接的显示器 560 显示视频数据图像。
当客户端 101a支持视频硬件加速时, 视频播放器 502调用视频 硬件加速应用程序接口 (API ), 启动视频硬件加速, 将视频数据帧和 视频数据帧处理指令通过视频硬件加速 API发送至相应的硬件 (如 Nvidia®、 AMD®或 ATI®等公司的显卡芯片, 或者 Intel® Atom CPU 芯片中的核芯显卡), 进行视频硬件加速。 视频播放器 502在启动时 会检测客户端硬件是否支持视频硬件加速,对于查询是否支持视频硬 件加速,如前面描述视频播放器 332进行视频硬件加速能力查询的方 式类似, 对此不再赘述。 如果支持视频硬件加速, 则远程协议接收模 块 501接收虚拟机 205a通过显示协议代理 335发送的视频数据帧和 视频数据帧处理指令, 视频播放器 502通过调用视频硬件加速 API, 启动视频硬件加速。客户端 101启动视频硬件加速功能, 可以节约客 户端中央处理器的计算资源。 接下来, 将详细描述客户端 101a对解 码的视频数据帧根据视频数据帧后处理指令和视频数据帧呈现指令 进行相应处理的过程。
本实施例中以 Mircosoft®的 DXVA为例, 对视频数据帧后处理 和视频数据帧呈现进行描述。 DXVA不仅仅提供视频数据帧解码处理, 还包括视频数据帧后处理能力, 比如图像缩放、 色彩空间转换和反交 错等。 如图 6所示, DXVA为视频数据帧后处理流程图。 DXVA可以 对主数据流和 15路分数据流进行处理, 将主数据流进行噪声过滤、 反交错处理、 细节过滤和色彩空间转换后, 与经过色彩空间转换后的 分数据流进行混合, 将混合后的视频数据流进行图像调整, 其中图像 调整包括亮度、 对比度、 饱和度调整等。 将经过图像调整后的视频数 据流进行图像缩放, 从而可以调整图像大小。 将经图像缩放处理后的 数据进行色彩空间转换, 从而使视频数据流进行显示。 其中, 颜色空 间转换, 包括由 RGB色彩空间转换至 YUV色彩空间, 或者由 YUV 色彩空间转换至 RGB色彩空间, 其中 RGB分别表示红、 绿和蓝色, YUV分别表示明亮度、 色度和浓度, 本发明实施例在此不再赘述。
图 6描述了视频后处理的过程。实际应用中不一定所有的功能都 会用到。 实际测试中发现, 多数播放器如 Microsoft® Media Player, 暴风影音⑧, QQ®影音播放器等默认只使用了图像缩放功能, 用以将 解码后的视频数据帧从原始大小缩放到播放窗口大小。本发明实施例 中客户端 101a进行视频数据帧后处理以图像缩放为例, 将解码后的 视频数据帧进行图像缩放,以将原始图像大小调整到适合在客户端连 接的显示器 560上显示。 具体效果如图 7a所示。 视频数据帧后处理 还可以包括透明度混合, 如图 7b所示。 本发明实施例中视频数据帧 后处理还可以包括亮度、对比度和饱和度调整。从而使客户端呈现给 用户更好的视频体验效果。
将解码的视频数据帧进行视频数据帧后处理,根据视频数据帧呈 现指令, 将经视频数据帧后处理的视频数据帧发送到显卡 530, 通过 显示器 560进行显示。 其中, 视频数据帧呈现指令携带显示参数, 显 示参数包括要显示的视频数据帧和视频数据帧的显示区域。如图 8所 示, 图中经过视频数据帧后处理之后形成的图像, 包括需要显示的 4 个区域, 分别表示为①、 ②、 ③和④, 同时远程桌面图像, 即虚拟机 205a的桌面图像通过远程桌面协议传递到客户端 101a, 客户端 101a 通过 2D渲染显示功能, 在客户端 101显示器 560上显示, 其中, 远 程桌面图像有一处区域用于对用户呈现 "显示设定、 音频设定和字幕 设定" 选项, 在呈现视频时, 同时需要呈现 "显示设定、 音频设定和 字幕设定"选项区域, 而该显示设定、 音频设定和字幕设定"选项区 域与①、 ②、 ③和④四个显示区域围成的中间区域对应。 因此, ①、 ②、③和④四个显示区域围成的中间区域对应的视频数据帧不需要显 示, 构成①、 ②、 ③和④四个显示区域围成的中间区域的视频数据帧 中包含的视频数据帧显示参数用于确认显示区域,显示参数用于定义 不显示该视频数据帧。从而使视频画面与远程桌面融合为一体, 为客 户端用户提供更好的视频观看体验。
本发明实施例中如果客户端 101a为非 Microsoft®操作系统, 则 可以使用其他视频硬件加速功能根据视频数据帧处理对视频数据帧 进行处理。
基于本发明上述实施例的描述,本发明实施例还公开了如图 9 所示的服务器 90 , 包括截获单元 901 和发送单元 902。 其中, 截 获单元 9 01 用于截获视频播放器向虚拟显示驱动发送的视频数据 帧和视频数据帧处理指令; 其中, 所述视频数据帧是由所述视频 播放器对加载的视频文件解复用获得的; 所述视频数据帧处理指 令包括视频数据帧解码指令、 视频数据帧后处理指令和视频数据 帧呈现指令; 发送单元 9 02 , 用于向客户端发送截获的所述视频数 据帧和所述视频数据帧处理指令,以使所述客户端根据所述视频 数据帧处理指令对所述视频数据帧进行处理。 本实施例中的截获 单元 9 01 将视频播放器发送到虚拟显示驱动的视频数据帧和视频 数据帧处理指令截获, 从而服务器 9 0并未根据视频数据帧处理指 令对视频数据帧进行处理, 通过发送单元 9 02 发送至客户端。 一 种实现方案为服务器 90的截获单元 901将视频播放器发送到虚拟 显示驱动的视频数据帧和视频数据帧处理指令截获, 从而服务器 90 并未根据视频数据帧处理指令对视频数据帧进行处理, 而是直 接由虚拟显示驱动截获通过发送单元 902 发送至客户端, 从而客 户端能够根据视频数据帧处理指令对视频数据帧进行解码、 后处 理和呈现, 保护客户端用户的视频体验; 同时只要服务器侧视频 播放器支持视频重定向功能即可实现本发明, 不依赖某一种视频 播放器,如不依赖于 Microsoft®公司推出的 DirectShow®框架的多 媒体播放器。 并且视频播放器向虚拟显示驱动发送的视频数据帧 并没有在服务器侧根据视频数据帧处理指令进行处理, 发送的仍 是编码的视频数据帧, 从而可以进一步节约服务器计算资源和网 络传输带宽。
另一种实施方案, 截获单元 901 为动态连接库, 视频播放器 332调用 DirectX®运行库 333启动视频硬件加速, 通知虚拟显示 驱动 334对视频播放器 332发送的视频数据帧进行解码。 DirectX® 运行库 333调用所述虚拟显示驱动 334根据所述视频数据帧处理 指令对所述视频数据帧进行处理时, 即在视频数据帧和视频数据 帧解码指令通过 DirectX®运行库 333后, 到达虚拟显示驱动 334 之前, 动态链接库截获该视频数据帧和视频数据帧处理指令。 具 体地, 其中一种动态链接库实现方式为釆用 Hook 技术截获 DirectX®运行库 333对虚拟显示驱动 334的调用, 需要实现一个 对虚拟显示驱动 334Hook的动态链接库文件(dll文件),并在注册 表中将其设为最先加载, 以此拦截 DirectX®运行库 333对虚拟显 示驱动 334 的调用, 从而实现视频数据帧和视频数据帧处理指令 的截获。 发送单元 902 将截获的视频数据帧和视频数据帧处理指 令发送到客户端 101a。 仍以 Windows®操作系统平台, 虚拟显示驱 动为 Windows® Display Driver Model (简称 WDDM显示驱动模型 ) 或者为 Windows® XP Display Driver Model (简称 XPDM显示驱动 模型), 这里 TODM显示驱动模型以为例, 进行说明。 具体地, TO丽 显示驱动模型包括 Display Driver和 Miniport Driver两部分模 块。 当 DirectX®运行库 333 调用虚拟显示驱动 334 的 Display Driver 时, 动态链接库截获视频数据帧和视频数据帧处理指令, 发送单元 902 将截获的视频数据帧和视频数据帧处理指令发送到 客户端 101a进行处理。
另一种实现方式, 截获单元 901 作为动态链接库, 在视频播 放器 332调用 DirectX®运行库 333启动视频硬件加速时截获视频 数据帧和视频数据帧处理指令, 即在视频数据帧和视频数据帧处 理指令到达 DirectX®运行库 333之前截获视频数据帧和视频数据 帧处理指令。 具体实现原理同在视频数据帧和视频数据帧处理指 令通过 DirectX®运行库 333, 到达虚拟显示驱动 334之前, 动态 链接库截获该视频数据帧和视频数据帧处理指令的实现方式。
另一种实现方式, 截获单元 901为 DirectX®运行库 333, 在 视频数据帧和视频数据帧处理指令通过 DirectX®运行库 333 时, DirectX®运行库截获该视频数据帧和视频数据帧处理指令。
本实施例中截获视频数据帧和视频数据帧处理指令的方案可 以参见前面实施例相应部分的描述, 在此不再赘述。
本发明实施例中, 虚拟显示驱动用于在所述视频播放器向所 述虚拟显示驱动发送所述视频数据帧和所述视频数据帧处理指令 之前, 接收所述视频播放器发送的视频硬件加速能力查询请求, 所述虚拟显示驱动向所述视频播放器发送查询请求响应; 所述查 询请求响应表明所述虚拟显示驱动支持视频硬件加速。 在本发明 实现中, 发现一些视频播放器会从客户端获取客户端已经解码的 视频数据帧, 从而影响视频播放, 此类视频播放器并不真正支持 视频重定向。 因此,还可以判断视频播放器是否支持视频重定向, 具体实施方式可以为视频播放器向所述虚拟显示驱动发送视频硬 件加速能力查询请求时, 所述虚拟显示驱动根据所述视频硬件加 速能力查询请求获取所述视频播放器的信息; 所述虚拟显示驱动 根据所述视频播放器的信息, 与支持视频重定向的视频播放器列 表进行匹配; 如果所述视频播放器的信息与所述支持视频重定向 的视频播放器列表中视频播放器的信息匹配, 则所述虚拟显示驱 动向所述视频播放器发送所述查询请求响应; 其中所述支持视频 重定向的视频播放器列表包含支持视频重定向的视频播放器的信 息。 虚拟显示驱动通过确认视频播放器支持视频重定向, 才向视 频播放器返回查询响应, 以表明虚拟显示驱动支持视频硬件加速。 即只有当视频播放器支持视频重定向时, 虚拟显示驱动才向视频 播放器返回查询请求响应, 表明虚拟显示驱动支持视频硬件加速。 以便于当视频播放器查询到虚拟显示驱动支持视频硬件加速, 向 虚拟显示驱动发送视频数据帧和包括视频数据帧解码指令、 视频 数据帧后处理指令和视频数据帧呈现指令的视频数据帧处理指令, 截获视频数据帧和视频数据帧处理指令并发送至客户端处理, 从 而节约服务器计算机资源和网络传输带宽, 保证客户端用户的视 频体验。 同时只要服务器侧视频播放器支持视频重定向功能即可 实现本发明, 不依赖某一种视频播放器。 关于本发明实施例提供 的服务器的描述可以参见前述实施例的描述。
与服务器相对应, 本发明实施例还公开了如图 1 0所示的客户 端 1 00 ,包括接收单元 1 001和处理单元 1 002。其中,接收单元 1 001 用于接收视频数据帧和视频数据帧处理指令; 其中, 所述视频数 据帧处理指令包括视频数据帧解码指令、 视频数据帧后处理指令 和视频数据帧呈现指令; 处理单元 1 002 , 用于根据所述视频数据 帧处理指令对所述视频数据帧进行处理。 其中, 处理单元 1 002具 体用于: 根据所述视频数据帧解码指令对所述视频数据帧进行解 码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理; 根据所述视频数据帧呈现指令对所述视频 后处理的视频数据帧进行显示。
本发明实施例提供的客户端 1 00 ,通过接收服务器发送的视频 数据帧和包括视频数据帧解码指令、 视频数据帧后处理指令和视 频数据帧呈现指令的视频数据帧处理指令, 根据视频数据帧处理 指令对视频数据帧进行处理, 从而保证客户端用户的视频体验, 同时充分利用了客户端的计算资源。
本发明实施例公开了一种视频重定向系统, 如图 1 1所示, 包 括服务器 90和客户端 1 00。服务器 90截获视频播放器向虚拟显示 驱动发送的视频数据帧和视频数据帧处理指令; 其中, 所述视频 数据帧是由所述视频播放器对加载的视频文件解复用获得的; 所 述视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后 处理指令和视频数据帧呈现指令, 并向客户端 1 00 发送截获的所 述视频数据帧和所述视频数据帧处理指令,以使所述客户端 1 00根 据所述视频数据帧处理指令对所述视频数据帧进行处理。 客户端 1 00接收所述视频数据帧和所述视频数据帧处理指令; 并根据所述 视频数据帧处理指令对所述视频数据帧进行处理。 根据所述视频 数据帧处理指令对所述视频数据帧进行处理, 具体包括: 根据所 述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视 频数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后 处理; 根据所述视频数据帧呈现指令对所述视频后处理的视频数 据帧进行显示。
关于本实施例提供的系统的细节描述可参见服务器 90和客户 端 100的描述。 本发明实施例中提供的服务器 90和客户端 100具 体可以为普通的计算机、 移动终端、 工作站或专用服务器等, 本 发明不作具体限定, 具有存储器和至少一个中央处理器, 所述存 储器与所述至少一个中央处理器通过总线相连, 存储器存储计算 机指令, 所述至少一个中央处理器用于执行存储器中的计算机指 令, 同时也包含通用的外部接口等实现服务器功能的一些必要组 件。 其中, 存储器中存储的计算机指令的算法可以参照发明实施 例中对应的方法描述。
本发明实施例提供的视频重定向系统, 在服务器侧截获视频 播放器向虚拟显示驱动发送视频数据帧和包括视频数据帧解码指 令、 视频数据帧后处理指令和视频数据帧呈现指令的视频数据帧 处理指令, 并发送到客户端, 客户端接收所述视频数据帧和所述 视频数据帧处理指令, 根据所述视频数据帧处理指令对所述视频 数据帧进行解码、 视频后处理和呈现, 保证客户端用户的视频体 验。 同时只要服务器侧视频播放器支持视频重定向功能即可实现 本发明, 不依赖某一种视频播放器, 如不依赖于 Microsoft®公司 推出的 DirectShow®框架的 Media Player®播放器。 并且视频播放 器向虚拟显示驱动发送的视频数据帧并没有在服务器侧根据视频 数据帧处理指令进行处理, 发送的仍是编码的视频数据帧, 从而 可以进一步节约服务器计算资源和网络传输带宽。 。
本发明实施例提供的基于虚拟桌面的远程桌面架构, 本领域 技术人员可以意识到, 本发明并不限于本实施例的所描述的虚拟 桌面架构, 对于基于其他类型的虚拟桌面的远程桌面本发明同样 适用。 另外, 本发明并不仅仅适用于基于虚拟桌面的远程桌面架 构, 同样也适用于其他向远程客户端提供视频数据的应用场景。 本领域普通技术人员可以意识到, 结合本文中所公开的实施 例描述的各示例的单元及算法步骤, 能够以电子硬件、 或者计算 机软件和电子硬件的结合来实现。 这些功能究竟以硬件还是软件 方式来执行, 取决于技术方案的特定应用和设计约束条件。 专业 技术人员可以对每个特定的应用来使用不同方法来实现所描述的 功能, 但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到, 为描述的方便和简 洁, 上述描述的系统、 装置和单元的具体工作过程, 可以参考前 述方法实施例中的对应过程, 在此不再赘述。 在本申请所提供的几个实施例中,应该理解到 ,所公开的系统、 装置和方法, 可以通过其它的方式实现。 例如, 以上所描述的装 置实施例仅仅是示意性的, 例如, 所述单元的划分, 仅仅为一种 逻辑功能划分, 实际实现时可以有另外的划分方式, 例如多个单 元或组件可以结合或者可以集成到另一个系统, 或一些特征可以 忽略, 或不执行。 另一点, 所显示或讨论的相互之间的耦合或直 接耦合或通信连接可以是通过一些接口, 装置或单元的间接耦合 或通信连接, 可以是电性, 机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上 分开的, 作为单元显示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以 根据实际的需要选择其中的部分或者全部单元来实现本实施例方 案的目的。
另外, 在本发明各个实施例中的各功能单元可以集成在一个 处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两 个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品 销售或使用时, 可以存储在一个计算机可读取存储介质中。 基于 这样的理解, 本发明的技术方案本质上或者说对现有技术做出贡 献的部分或者该技术方案的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包括若干指令用以使 得一台计算机设备 (可以是个人计算机, 服务器, 或者网络设备 等) 执行本发明各个实施例所述方法的全部或部分步骤。 而前述 的存储介质包括: NAS ( Network Attached Storage ) 、 U盘、 移动 硬盘、 只读存储器 (ROM, Read-Only Memory ) 、 随机存取存储 器 (RAM, Random Access Memory ) 、 磁碟或者光盘等各种可以 存储程序代码的介质。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范 围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易想到变化或替换, 都应涵盖在本发明的保 护范围之内。 因此, 本发明的保护范围应所述以权利要求的保护 范围为准。

Claims

权利要求书
1、 一种视频重定向的方法, 其特征在于, 包括:
截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
2、 如权利要求 1所述的方法, 其特征在于, 所述截获视频播 放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指令, 具体包括:
当所述视频播放器向所述虚拟显示驱动发送所述视频数据帧 和所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频 数据帧和所述视频数据帧处理指令。
3、 如权利要求 1所述的方法, 其特征在于, 所述截获视频播 放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指令, 具体包括:
当所述视频播放器通过 Di rec tX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令, 所述 Di rec tX 运行库调用所述虚拟显示驱动对所述视频数据帧进行处理时, 动 态链接库截获所述视频数据帧和所述视频数据帧处理指令。
4、 如权利要求 1所述的方法, 其特征在于, 所述截获视频播 放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指令, 具体包括: 当所述视频播放器通过 Di rec tX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX 运行库截获所述视频数据帧和所述视频数据帧处理指令。
5、 如权利要求 1所述的方法, 其特征在于, 所述截获视频播 放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指令, 具体包括:
当所述视频播放器调用 DirectX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
6、如权利要求 1至 5任一所述的方法,其特征在于,还包括: 所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和所述 视频数据帧处理指令之前, 所述虚拟显示驱动接收所述视频播放 器发送的视频硬件加速能力查询请求; 所述虚拟显示驱动向所述 视频播放器发送查询请求响应, 所述查询请求响应表明所述虚拟 显示驱动支持视频硬件加速。
7、 如权利要求 6所述的方法, 其特征在于, 所述虚拟显示驱 动向所述视频播放器发送查询请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。 8、 一种视频重定向的方法, 其特征在于, 包括: 客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。
9、 如权利要求 8所述的方法, 其特征在于, 根据所述视频数 据帧处理指令对所述视频数据帧进行处理, 具体包括:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述后处理的视频数据帧进 行显示。
1 0、 如权利要求 9 所述的方法, 其特征在于, 所述根据所述 视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频 数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后处 理, 具体为: 在所述客户端启动视频硬件加速条件下, 根据所述 视频数据帧解码指令对所述视频数据帧进行解码, 根据所述视频 数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后处 理。
1 1、 一种服务器, 其特征在于, 包括中央处理器和存储器, 所述中央处理器与所述存储器通过系统总线连接, 当所述服务器 运行时, 所述中央处理器执行所述存储器存储的计算机执行指令, 使所述服务器执行如下步骤:
截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
12、 如权利要求 11所述的服务器, 其特征在于, 所述截获视 频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指 令, 具体包括:
所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和 所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频数 据帧和所述视频数据帧处理指令。
13、 如权利要求 11所述的服务器, 其特征在于, 所述截获视 频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指 令, 具体包括:
当所述视频播放器通过 Di rec tX 运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令,所述 Di rec tX 运行库调用所述虚拟显示驱动对所述视频数据帧进行处理时, 动 态链接库截获所述视频数据帧和所述视频数据帧处理指令。
14、 如权利要求 11所述的服务器, 其特征在于, 所述截获视 频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指 令, 具体包括:
当所述视频播放器通过 Di rec tX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX 运行库截获所述视频数据帧和所述视频数据帧处理指令。
15、 如权利要求 11所述的服务器, 其特征在于, 所述截获视 频播放器向虚拟显示驱动发送的视频数据帧和视频数据帧处理指 令, 具体包括:
当所述视频播放器调用 DirectX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
16、 如权利要求 11 至 15任一所述的服务器, 其特征在于, 还用于执行: 所述视频播放器向所述虚拟显示驱动发送所述视频 数据帧和所述视频数据帧处理指令之前, 所述虚拟显示驱动接收 所述视频播放器发送的视频硬件加速能力查询请求, 所述虚拟显 示驱动向所述视频播放器发送查询请求响应; 所述查询请求响应 表明所述虚拟显示驱动支持视频硬件加速。
17、 如权利要求 16所述的服务器, 其特征在于, 所述虚拟显 示驱动向所述视频播放器发送查询请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
18、 一种客户端, 其特征在于, 包括中央处理器和存储器, 所述中央处理器与所述存储器通过系统总线连接, 当所述客户端 运行时, 所述中央处理器执行所述存储器存储的计算机执行指令, 使所述客户端执行如下步骤: 客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。
19、 如权利要求 18所述的客户端, 其特征在于, 根据所述视 频数据帧处理指令对所述视频数据帧进行处理, 具体包括:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
20、 如权利要求 19所述的客户端, 其特征在于, 所述根据所 述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视 频数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后 处理, 具体为, 在所述客户端启动视频硬件加速条件下, 根据所 述视频数据帧解码指令对所述视频数据帧进行解码, 根据所述视 频数据帧后处理指令对所述解码的视频数据帧进行视频数据帧后 处理。
21、 一种视频重定向系统, 包括如权利要求 1 1 至 1 7任一所 述的服务器和权利要求 18至 20任一所述的客户端。
11、 一种服务器, 其特征在于, 包括:
截获单元, 用于截获视频播放器向虚拟显示驱动发送的视频 数据帧和视频数据帧处理指令; 其中, 所述视频数据帧是由所述 视频播放器对加载的视频文件解复用获得的; 所述视频数据帧处 理指令包括视频数据帧解码指令、 视频数据帧后处理指令和视频 数据帧呈现指令;
发送单元, 用于向客户端发送截获的所述视频数据帧和所述 视频数据帧处理指令,以使所述客户端根据所述视频数据帧处理 指令对所述视频数据帧进行处理。
23、 如权利要求 22所述的服务器, 其特征在于, 所述截获单 元具体为所述虚拟显示驱动; 所述虚拟显示驱动截获所述视频数 据帧和所述视频数据帧处理指令。
24、 如权利要求 22所述的服务器, 其特征在于, 所述截获单 元具体为动态链接库, 当所述视频播放器通过 Di rec tX 运行库向 所述虚拟显示驱动发送所述视频数据帧和所述视频数据帧处理指 令, 所述 Di rec tX 运行库调用所述虚拟显示驱动对所述视频数据 帧进行处理时, 所述动态链接库截获所述视频数据帧和所述视频 数据帧处理指令。
25、 如权利要求 22所述的服务器, 其特征在于, 所述截获单 元具体为 DirectX运行库, 当所述视频播放器通过所述 D i rec tX运 行库向所述虚拟显示驱动发送的所述视频数据帧和所述视频数据 帧处理指令时,所述 DirectX运行库截获所述视频数据帧和所述视 频数据帧处理指令。
26、 如权利要求 22所述的服务器, 其特征在于, 所述截获单 元具体为动态链接库, 当所述视频播放器调用 DirectX运行库向所 述虚拟显示驱动发送所述视频数据帧和所述视频数据帧处理指令 时, 所述动态链接库截获所述视频数据帧和所述视频数据帧处理 指令。
27、 如权利要求 22至 26任一所述的服务器, 其特征在于, 所述虚拟显示驱动还用于所述视频播放器向所述虚拟显示驱动发 送所述视频数据帧和所述视频数据帧处理指令之前, 接收所述视 频播放器发送的视频硬件加速能力查询请求, 所述虚拟显示驱动 向所述视频播放器发送查询请求响应; 所述查询请求响应表明所 述虚拟显示驱动支持视频硬件加速。
28、 如权利要求 27所述的服务器, 其特征在于, 所述虚拟显 示驱动向所述视频播放器发送查询请求响应, 具体包括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
29、 一种客户端, 其特征在于, 包括:
接收单元, 用于接收视频数据帧和视频数据帧处理指令; 其 中, 所述视频数据帧处理指令包括视频数据帧解码指令、 视频数 据帧后处理指令和视频数据帧呈现指令;
处理单元, 用于根据所述视频数据帧处理指令对所述视频数 据帧进行处理。
30、 如权利要求 29所述的客户端, 其特征在于, 所述处理单 元, 具体用于:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理; 根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
31、 一种视频重定向系统, 包括如权利要求 22至 28任一所 述的服务器和权利要求 29至 30任一所述的客户端。
32、 一种计算机可读存储介质, 其特征在于, 当计算机执行 所述计算机可读存储介质时, 所述计算机执行如下步骤:
截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令; 其中, 所述视频数据帧是由所述视频播放器对加 载的视频文件解复用获得的; 所述视频数据帧处理指令包括视频 数据帧解码指令、 视频数据帧后处理指令和视频数据帧呈现指令; 向客户端发送截获的所述视频数据帧和所述视频数据帧处理 指令,以使所述客户端根据所述视频数据帧处理指令对所述视频 数据帧进行处理。
33、如权利要求 32所述的计算机可读存储介质,其特征在于, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视 频数据帧处理指令, 具体包括:
所述视频播放器向所述虚拟显示驱动发送所述视频数据帧和 所述视频数据帧处理指令时, 所述虚拟显示驱动截获所述视频数 据帧和所述视频数据帧处理指令。
34、如权利要求 32所述的计算机可读存储介质,其特征在于, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器通过 D i rec tX 运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令,所述 D i rec tX 运行库调用所述虚拟显示驱动对所述视频数据帧进行处理时, 动 态链接库截获所述视频数据帧和所述视频数据帧处理指令。
35、如权利要求 32所述的计算机可读存储介质,其特征在于, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器通过 Di rec tX 运行库向所述虚拟显示驱动 发送的所述视频数据帧和所述视频数据帧处理指令时, 所述 DirectX运行库截获所述视频数据帧和所述视频数据帧处理指令。
36、如权利要求 32所述的计算机可读存储介质,其特征在于, 所述截获视频播放器向虚拟显示驱动发送的视频数据帧和视频数 据帧处理指令, 具体包括:
当所述视频播放器调用 DirectX 运行库向所述虚拟显示驱动 发送所述视频数据帧和所述视频数据帧处理指令时, 动态链接库 截获所述视频数据帧和所述视频数据帧处理指令。
37、 如权利要求 32至 36任一所述的计算机可读存储介质, 还包括: 所述视频播放器向所述虚拟显示驱动发送所述视频数据 帧和所述视频数据帧处理指令之前, 所述虚拟显示驱动接收所述 视频播放器发送的视频硬件加速能力查询请求, 所述虚拟显示驱 动向所述视频播放器发送查询请求响应; 所述查询请求响应表明 所述虚拟显示驱动支持视频硬件加速。
38、如权利要求 37所述的计算机可读存储介质,其特征在于, 所述虚拟显示驱动向所述视频播放器发送查询请求响应, 具体包 括:
所述虚拟显示驱动根据所述视频硬件加速能力查询请求获取 所述视频播放器的信息;
所述虚拟显示驱动根据所述视频播放器的信息, 与支持视频 重定向的视频播放器列表进行匹配;
如果所述视频播放器的信息与所述支持视频重定向的视频播 放器列表中视频播放器的信息匹配, 则所述虚拟显示驱动向所述 视频播放器发送所述查询请求响应; 其中所述支持视频重定向的 视频播放器列表包含支持视频重定向的视频播放器的信息。
39、 一种计算机可读存储介质, 其特征在于, 当计算机执行 所述计算机可读存储介质时, 所述计算机执行如下步骤:
客户端接收视频数据帧和视频数据帧处理指令; 其中, 所述 视频数据帧处理指令包括视频数据帧解码指令、 视频数据帧后处 理指令和视频数据帧呈现指令;
根据所述视频数据帧处理指令对所述视频数据帧进行处理。
40、如权利要求 39所述的计算机可读存储介质,其特征在于, 根据所述视频数据帧处理指令对所述视频数据帧进行处理, 具体 包括:
根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进 行视频数据帧后处理;
根据所述视频数据帧呈现指令对所述视频后处理的视频数据 帧进行显示。
41、如权利要求 40所述的计算机可读存储介质,其特征在于, 所述根据所述视频数据帧解码指令对所述视频数据帧进行解码; 根据所述视频数据帧后处理指令对所述解码的视频数据帧进行视 频数据帧后处理, 具体为, 在所述客户端启动视频硬件加速条件 下, 根据所述视频数据帧解码指令对所述视频数据帧进行解码, 根据所述视频数据帧后处理指令对所述解码的视频数据帧进行视 频数据帧后处理。
PCT/CN2012/086499 2012-12-13 2012-12-13 一种视频重定向的方法、装置、系统及计算机可读介质 WO2014089793A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201280002716.4A CN103283250B (zh) 2012-12-13 2012-12-13 一种视频重定向的方法、装置、系统
PCT/CN2012/086499 WO2014089793A1 (zh) 2012-12-13 2012-12-13 一种视频重定向的方法、装置、系统及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/086499 WO2014089793A1 (zh) 2012-12-13 2012-12-13 一种视频重定向的方法、装置、系统及计算机可读介质

Publications (1)

Publication Number Publication Date
WO2014089793A1 true WO2014089793A1 (zh) 2014-06-19

Family

ID=49064294

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/086499 WO2014089793A1 (zh) 2012-12-13 2012-12-13 一种视频重定向的方法、装置、系统及计算机可读介质

Country Status (2)

Country Link
CN (1) CN103283250B (zh)
WO (1) WO2014089793A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105611394A (zh) * 2015-12-21 2016-05-25 福建时迅信息科技有限公司 Vdi环境下的视频重定向方法及系统
US10979470B2 (en) 2015-12-28 2021-04-13 Industrial Technology Research Institute Server device, client device and dynamic image transmission method for virtual desktop infrastructure

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103957445A (zh) * 2014-03-28 2014-07-30 山东乾云启创信息科技有限公司 一种基于应用虚拟化技术的视频重定向系统及方法
CN104239121B (zh) * 2014-08-28 2017-11-21 浙江云巢科技有限公司 显卡重定向系统和利用该系统实现图形显示的方法
CN105740081A (zh) * 2014-12-12 2016-07-06 华为技术有限公司 客户端、usb设备及显示处理系统和方法
CN106034241B (zh) * 2015-03-19 2019-04-26 华为技术有限公司 一种多媒体重定向的方法、客户端、服务器和系统
CN106550001B (zh) * 2015-09-23 2021-02-23 中兴通讯股份有限公司 一种重定向的方法及装置
CN106658070B (zh) * 2017-01-19 2020-02-21 深圳市云点科技有限公司 视频重定向的方法和装置
CN108804068B (zh) * 2017-05-05 2021-01-12 晶涌科技股份有限公司 音频装置重导向系统的客户端及相关音频装置重导向方法
CN107302458B (zh) * 2017-07-03 2023-05-30 武汉攀升鼎承科技有限公司 一种分布式桌面云结构及实现方法
CN107920259A (zh) * 2017-10-31 2018-04-17 深信服科技股份有限公司 虚拟化平台视频播放加速方法、虚拟机服务器及存储介质
CN110022497A (zh) * 2018-01-10 2019-07-16 中兴通讯股份有限公司 视频播放方法及装置、终端设备及计算机可读存储介质
CN108810583A (zh) * 2018-06-26 2018-11-13 中国联合网络通信集团有限公司 桌面虚拟化环境下视频流传输的方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1968395A (zh) * 2005-11-17 2007-05-23 腾讯科技(深圳)有限公司 一种视频图像的视窗切换控制方法及系统
CN1972402A (zh) * 2005-11-24 2007-05-30 腾讯科技(深圳)有限公司 一种视频通信画面显示控制装置及方法
CN101390397A (zh) * 2006-02-24 2009-03-18 微软公司 加速视频编码
CN102547394A (zh) * 2011-12-27 2012-07-04 福建升腾资讯有限公司 Vdi环境下云接入设备通用的音视频重定向方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1968395A (zh) * 2005-11-17 2007-05-23 腾讯科技(深圳)有限公司 一种视频图像的视窗切换控制方法及系统
CN1972402A (zh) * 2005-11-24 2007-05-30 腾讯科技(深圳)有限公司 一种视频通信画面显示控制装置及方法
CN101390397A (zh) * 2006-02-24 2009-03-18 微软公司 加速视频编码
CN102547394A (zh) * 2011-12-27 2012-07-04 福建升腾资讯有限公司 Vdi环境下云接入设备通用的音视频重定向方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105611394A (zh) * 2015-12-21 2016-05-25 福建时迅信息科技有限公司 Vdi环境下的视频重定向方法及系统
US10979470B2 (en) 2015-12-28 2021-04-13 Industrial Technology Research Institute Server device, client device and dynamic image transmission method for virtual desktop infrastructure

Also Published As

Publication number Publication date
CN103283250A (zh) 2013-09-04
CN103283250B (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
WO2014089793A1 (zh) 一种视频重定向的方法、装置、系统及计算机可读介质
US10764375B2 (en) Method for cloud based mobile application virtualization
EP3046331B1 (en) Media control method and system based on cloud desktop
WO2019169913A1 (zh) 一种数据处理的方法、装置、服务器和系统
JP5129151B2 (ja) マルチユーザ・ディスプレイ・プロキシ・サーバ
US8463980B2 (en) Shared memory between child and parent partitions
EP3706365B1 (en) Secondary-stream data transmission method and display method for use in conference, conference system, and peripheral device
US8872835B2 (en) Prevention of DoS attack by a rogue graphics application
WO2014121477A1 (zh) 一种视频重定向的方法、装置、系统及计算机可读介质
WO2021143182A1 (zh) 游戏的处理方法、装置、电子设备及计算机可读存储介质
US20120213294A1 (en) Media Acceleration for Virtual Computing Services
US10771566B2 (en) Device and system for cloud based mobile application virtualization
US8799900B1 (en) Sharing webcam between guest and host OS
CN111240631A (zh) 基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统
US9104452B2 (en) Hybrid remote sessions
AlDuaij et al. Heterogeneous multi-mobile computing
WO2019071678A1 (zh) 一种直播的方法和装置
WO2024037110A1 (zh) 数据处理方法、装置、设备以及介质
US11936928B2 (en) Method, system and device for sharing contents
CN114257867A (zh) 视频图像显示方法和装置,计算设备和可读存储介质
CN113826074B (zh) 用于虚拟桌面底层结构解决方案的自适应实时通信插件
JP7361399B2 (ja) 画面キャプチャ方法、端末および記憶媒体
KR20170105317A (ko) 하드웨어 기반의 gpu를 이용한 가상머신의 화면 전송 방법 및 이를 이용한 장치
WO2019071679A1 (zh) 一种直播的方法和装置
CN115920372A (zh) 数据处理方法及装置、计算机可读存储介质、终端

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12889777

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12889777

Country of ref document: EP

Kind code of ref document: A1