JP2023509621A - ウェブブラウザ・マルチメディア・リダイレクション - Google Patents

ウェブブラウザ・マルチメディア・リダイレクション Download PDF

Info

Publication number
JP2023509621A
JP2023509621A JP2022539663A JP2022539663A JP2023509621A JP 2023509621 A JP2023509621 A JP 2023509621A JP 2022539663 A JP2022539663 A JP 2022539663A JP 2022539663 A JP2022539663 A JP 2022539663A JP 2023509621 A JP2023509621 A JP 2023509621A
Authority
JP
Japan
Prior art keywords
media content
encoded
client computing
encoded media
computing device
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2022539663A
Other languages
English (en)
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 マイクロソフト テクノロジー ライセンシング,エルエルシー
Publication of JP2023509621A publication Critical patent/JP2023509621A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • 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
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4316Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • H04N21/4437Implementing a Virtual Machine [VM]
    • 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/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4782Web browsing, e.g. WebTV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するよう構成される、少なくとも1つのプロセッサを含むコンピュータシステムが提供される。少なくとも1つのプロセッサは、リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行し、エンコードされたメディアコンテンツを、リモートメディアソースからメディアコンテナフォーマットで受け取り、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成されるマルチメディア・リダイレクションモジュールを実行するよう更に構成される。マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツを少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成される。

Description

仮想環境では、エンドユーザは、クライアントデバイスを使用して、サーバハードウェア上で動作する仮想マシンに接続してよく、これは、エンドユーザに、追加の計算能力、アプリケーションの互換性、セキュリティ及び規制遵守及びエンドユーザの全体的なコストの削減という利点を提供し得る。典型的には、これらのエンドユーザは、ビデオストリーミングのようなメディアを消費することがあり、これは、サーバハードウェアに課されるワークロードを潜在的に増加させ、関連するコストを増加させる可能性がある。
少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するよう構成される、少なくとも1つのプロセッサを含むコンピュータシステムが提供される。少なくとも1つのプロセッサは、リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行し、エンコードされたメディアコンテンツを、リモートメディアソースからメディアコンテナフォーマットで受け取り、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成されるマルチメディア・リダイレクションモジュールを実行するよう更に構成され得る。マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツを少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成され得る。
この要約は、詳細な説明において以下で更に説明される概念の選択を簡略化された形で紹介するために提供される。この要約は、特許請求に係る主題の主要な特徴又は本質的な特徴を特定するようには意図されておらず、また、特許請求に係る主題の範囲を限定するように使用されるようにも意図されていない。さらに、特許請求に係る主題は、本開示のいずれかの部分に記載されるいずれかの又はすべての欠点を解決する実装に限定されない。
本説明のマルチメディア・リダイレクションを実行するための例示のコンピュータシステムの概略図である。
図1のコンピュータシステムの例示のサーバシステムの概略図である。
図1のコンピュータシステムのために、ウェブブラウザアプリケーションのレンダリングパイプラインをシム(shim)するようにマルチメディア・リダイレクションモジュールを実装するウェブブラウザアプリケーションの概略図である。
図1のコンピュータシステムによって実装されるマルチメディア・リダイレクションを実行するための方法のフローチャートである。
図1のコンピュータシステムのためのマルチメディア・リダイレクションを実装するウェブブラウザアプリケーションのためのソフトウェアアーキテクチャの概略図である。
図1のコンピュータシステムによって実装されるマルチメディア・リダイレクションモジュールと通信するリモートデスクトップクライアントのためのソフトウェアアーキテクチャの概略図である。
図1のコンピュータシステムが規定され得る例示のコンピューティング環境の概略図である。
クラウドプラットフォームサービスは、クライアントコンピュータデバイスを利用して、クラウドプラットフォームのサーバデバイス上で実行する仮想マシンに接続し得るエンドユーザに、仮想化デスクトップ環境を提供し得る。典型的に、クラウドプラットフォームのコンピュータハードウェア及びネットワーク機能は、エンドユーザのクライアントコンピュータデバイスよりも強力である。したがって、これらのエンドユーザを仮想化デスクトップ環境でホストすることによって、クラウドプラットフォームは、これらのユーザに、追加の計算能力、並びに改善されたアプリケーションの互換性、セキュリティ/規制遵守及び関連する計算コストの全体的な削減のような他の潜在的な利点を提供し得る。
いくつかの例では、これらのクラウドプラットフォームサービスは、複数のエンドユーザとクライアントデバイスを有する企業のために仮想デスクトップインフラストラクチャを提供し得る。これらの企業のユーザは、例えばその企業のクラウドプラットフォーム上にローカルに記憶されるか、リモートメディアソースによって記憶され、クラウドプラットフォーム上で実行される仮想化デスクトップ環境にストリームされる、ビデオ及び/又はオーディオメディアのようなメディアを消費することがある。典型的に、メディアソースによって提供されているメディアコンテンツは、エンドユーザをホストしている仮想マシン上でデコードされ、次いで、そのメディアコンテンツを提示している仮想化デスクトップのディスプレイフレームが再エンコードされ、リモートデスクトッププロトコルを介してユーザのクライアントコンピュータデバイスにストリームされる。クライアントコンピュータデバイスは次いで、これらのディスプレイフレームをデコードし、クライアントコンピュータデバイスのディスプレイを介して、それらをユーザに提示してよい。
仮想マシン上で実行されるデコーディング及びその後のエンコーディングプロセスは、サーバハードウェアの大量の計算リソースを消費する可能性がある。1つの特定の例において、ビデオストリーミングのためのビデオレンダリングプロセスは、潜在的に、仮想マシンを実行しているサーバデバイスの中央処理ユニット(CPU)リソースの20%~40%を消費する可能性がある。これらの問題は、複数のユーザがVM上のオペレーティングシステム(OS)インスタンスを共有するマルチセッション仮想化デスクトップ環境配置において更に悪化する可能性がある。例えば2人以上のユーザが共有ホストVMを介してビデオコンテンツをストリームしようと試みる場合、そのVMのためのCPUリソースのすべてが、潜在的に、関連するデコーディング/エンコーディング/レンダリングプロセスによって消費される可能性があり、したがって、潜在的に、そのVMによってホストされているユーザすべてのユーザ体験を劣化させる可能性がある。
上述の問題に対処するために、図1は、以下でより詳細に説明されるように、仮想化デスクトップ環境を実行しているサーバハードウェア上の計算ワークロードを低減するためにマルチメディア・リダイレクションを実行する、仮想化デスクトップ環境のための例示のコンピュータシステム10を図示している。図1に図示されるように、コンピュータシステム10は、1つ以上のクライアントコンピュータデバイス12、サーバシステム14及び1つ以上のメディアソース16を含む。1つ以上のクライアントコンピュータデバイス12のエンドユーザは、サーバシステム14上で実行される仮想マシンに接続し得る。例えばウェブブラウザアプリケーションのようなVMのホストオペレーティングシステム内で実行されるアプリケーションを使用して、エンドユーザはメディアソース16によって記憶されるメディアと対話し得る。
一例では、メディアソース16はサーバシステム14にローカルであってよく、サーバシステム14に含まれてもよい。別の例では、メディアソース16は、クライアントコンピュータデバイス12とサーバシステム14の双方に対してリモートであってもよい。例えばサーバシステム14は、ワイドエリアネットワーク(WAN)のような通信ネットワークを介してリモートメディアソースと通信するよう構成されてよい。具体的な例として、エンドユーザは、例えばビデオストリーミングウェブサイトのような、メディアソース16に関連するウェブサイトへナビゲートするために、ホストVM内で実行されるウェブブラウザアプリケーションへの入力を行ってよい。関連するウェブサイトを使用して、エンドユーザは、ストリーミングビデオ及び/又はオーディオを含む体験を開始し得る。典型的に、ストリーミングビデオ及び/又はオーディオは、エンコードされたメディアコンテンツ18としてサーバシステム14に送られ、ストリーミングビデオ及び/又はオーディオを要求したウェブブラウザアプリケーションを実行しているホストVMによって処理される。
上述のように、典型的な仮想化環境の実装は、エンコードされたメディアコンテンツ18をデコードし、仮想化デスクトップ環境を介してメディアコンテンツを提示し、仮想化デスクトップ環境のためにディスプレイ/オーディオフレームをエンコードし、次いで、エンコードされたディスプレイ/オーディオフレームを、エンドユーザへの提示のためにクライアントコンピュータデバイス12に送ることになる。デコード/エンコードプロセスによって生じる、サーバシステム14のハードウェアに課される計算負荷を低減するために、サーバシステム14は、マルチメディア・リダイレクションを実装して、サーバシステム14上でエンコーディング又はデコーディングプロセスを実行することなく、メディアソース16から受け取ったエンコードされたメディアコンテンツ18をクライアントコンピュータデバイス12に渡し得る。
図2は、サーバシステム14の例を示す図である。サーバシステム14は、クラウドプラットフォームを動作させるように集合的に構成される、ハードウェアプレーン20、仮想マシンプレーン22、ハイパーバイザプレーン24及びネットワークインフラストラクチャ26を含んでよい。ハードウェアプレーン20は、プロセッサ、グラフィクス処理ユニット(GPU)、揮発性メモリ及びホストサーバインスタンスを実行するよう構成される他のコンピュータ構成要素を含み得る、ノード28(図2では、各々記号「N」によって示される)の集合を含む。ハードウェアプレーン20のノード28によって実行されるホストサーバインスタンスは、ハイパーバイザプレーン24の1つ以上のハイパーバイザと通信するよう構成される。ハイパーバイザプレーン24の1つ以上のハイパーバイザは、仮想マシンプレーン22の複数の仮想マシン30(図2では、各々記号「VM」によって示される)を作成し、取り扱い、モニタし得る。ハイパーバイザプレーン24を通して、仮想マシンプレーン22の各仮想マシン30は、ハードウェアプレーン20の1つ以上のノード28のハードウェア構成要素によってホストされ、実行されてよい。このようにして、仮想マシンプレーン22の複数の仮想マシン30は、ハイパーバイザプレーン24によって管理される仮想化ハードウェアリソースを共有し得る。各仮想マシン30は、ウェブブラウザアプリケーション、メディアプレーヤアプリケーション及び他のタイプのソフトウェアのようなソフトウェアが実行され得る、仮想化デスクトップ環境を提供する。
一例では、コンピュータシステム14は、標準的なネットワークインフラストラクチャを介して複数のノード28を通信的に結合するデータセンタ環境に対応する。例えばネットワークインフラストラクチャ26は、トップオブラック(TOR:top-of-rack)ネットワークスイッチを含むサーバラックのような、典型的なネットワークインフラストラクチャを含んでよい。コンピュータシステム14は、関連するTORネットワークスイッチを各々が有する、複数のノードクラスタを含んでよい。ネットワークインフラストラクチャ26は、TORネットワークスイッチを一緒に接続する高レベルスイッチング・インフラストラクチャ32(L1)及び(L2)を更に含んでよい。高レベルスイッチング・インフラストラクチャ32は、任意の適切なネットワーキングアーキテクチャの形態をとってよく、任意の適切なルーティングプロトコルによって駆動されてよい。図示される例では、高レベルスイッチング・インフラストラクチャ32は、集約スイッチ(aggregation switches)L1とコアスイッチL2の集合を含む。しかしながら、高レベルスイッチング・インフラストラクチャは、任意の適切な数のスイッチのレベルを含んでよいことが認識されよう。
仮想マシンプレーン22の仮想マシン30は、サーバシステム14のユーザが、例えばウェブブラウザ、メディアプレーヤアプリケーション等のようなアプリケーションにアクセスして実行し得る、仮想コンピューティング環境を提供する。以下でより詳細に議論されるように、仮想マシンプレーン22のこれらの仮想マシン30は、マルチメディア・リダイレクションを実装して、典型的にストリーミングメディアのために実行されるデコーディング及びエンコーディングプロセスによって生じるハードウェアプレーン20のノードに課される計算ワークロードを低減するよう構成され得る。
加えて、サーバシステム14は、図2に図示されるデータセンタ/クラウドプラットフォームの例に限定されないことを認識されたい。他の例では、サーバシステム14は、仮想化デスクトップ環境を実行するよう構成される1つ以上のコンピュータデバイスの形態をとってよい。クライアントコンピュータデバイス12を使用して、関連するユーザは、1つ以上のコンピュータデバイスによって実行される仮想化デスクトップ環境に接続して、仮想化デスクトップ環境内で実行されるソフトウェアにアクセスしてよく、そのような仮想化デスクトップ環境は、本明細書で説明されるマルチメディア・リダイレクション機能及びプロセスを実装するよう構成され得る。
図3は、上述の問題に対処するために、マルチメディア・リダイレクション技術を実行するよう構成される例示のホスト仮想マシン34を図示している。ホスト仮想マシン34は、図2に関連して説明したクラウドプラットフォームの仮想マシンプレーン22の仮想マシン30のうちの1つの形態をとってよい。しかしながら、ホスト仮想マシン34は、サーバシステム14の非クラウドプラットフォームの形態で実装されてもよいことを認識されたい。
ホスト仮想マシン34は、サーバシステム14の少なくとも1つのプロセッサによって実行されてよい。ホスト仮想マシン34は、少なくとも1つのクライアントコンピュータデバイス12とのセッションをホストするよう構成されてよく、ホスト仮想マシン34のオペレーティングシステム内で実行されるアプリケーションをホストしてよい。一例では、ホスト仮想マシン34は、サーバシステム14の少なくとも1つのプロセッサによって実行されるウェブブラウザアプリケーション36を含んでよい。図示されるように、ウェブブラウザアプリケーション36は、メディアソース16からのメディアコンテンツにアクセスするよう構成され得る。ウェブブラウザアプリケーション36のグラフィカルユーザインタフェース(GUI)を使用して、ユーザは、例えばメディアコンテンツを供給するウェブページ及び関連するサーバのようなターゲットメディアソース16にナビゲートしてよい。一例では、メディアソース16は、ホスト仮想マシン34を実行しているサーバシステム14に対してローカルであってよい。別の例では、メディアソース16は、サーバシステム14に対してリモートであってよく、WANを介して、エンコードされたメディアコンテンツ18をサーバシステム14に送信するよう構成されてよい。
ホスト仮想マシン34は、メディアソース16から、エンコードされたメディアコンテンツ18を受け取るよう構成されてよく、メディアソース16は、図示される例ではリモートメディアソースの形態をとってよい。エンコードされたメディアコンテンツ18は、任意の適切なアルゴリズムを使用してエンコードされてよい。一例では、エンコードされたメディアコンテンツ18は、ビデオストリーム40、オーディオストリーム42及びテキストストリーム44のうちの1つ以上を含む、メディアコンテナフォーマット38で受け取られる。具体的な例として、メディアコンテナフォーマット38は、MP4フォーマット、WAVフォーマット、AVIフォーマット又は別のタイプのメディアコンテナフォーマット38であってよい。
ホストVM34によって受け取られる、エンコードされたメディアコンテンツ18は、ホストVM34上で実行されるウェブブラウザアプリケーション36のメディアソース拡張(MSE:media source extensions)モジュール46によって処理され得る。MSEモジュール46は、ウェブベースのメディアストリーミングのための機能性を提供するよう構成され得る。MSEモジュール46は、メディアコンテナフォーマット38内のエンコードされたメディアコンテンツ18をデマルチプレクサ(分離(demux))して、独立のビデオ、オーディオ及びテキストストリームにするように更に構成され得る。典型的に、図3に図示されるように、独立のエンコードされたオーディオストリーム42とエンコードされたビデオストリーム40は、ウェブブラウザアプリケーション36のオーディオ及びビデオレンダリングパイプラインによって処理されるであろう。例えばエンコードされたオーディオストリーム42とエンコードされたビデオストリーム40は、それぞれ、オーディオ及びビデオストリームを復元(decompress)するデコーダ48によって処理されてよい。復元されたオーディオ及びビデオストリームは次いで、提示用にビデオ及びオーディオコンテンツを準備するために、それぞれ、オーディオレンダラ50及びビデオレンダラ52に渡されてよい。上述のように、ホストVM34上で実行されるこれらのデコーディング及びレンダリングプロセスは、ホストVM34を実行するサーバデバイスのハードウェアリソースを消費することになり、これは、潜在的に、ホスト仮想マシン34のマルチセッション・オペレーティングシステム内でホストされる他のユーザのユーザ体験を劣化させる可能性がある。
これらの問題に対処するために、ホスト仮想マシン34は、エンコードされたオーディオストリーム42及びエンコードされたビデオストリーム40を含むエンコードされたメディアコンテンツ18を、クライアントコンピュータデバイス12にリダイレクトするよう構成されるマルチメディア・リダイレクションモジュール54を実装するよう構成され得る。図4は、マルチメディア・リダイレクションを実行するためにホスト仮想マシン34を実行するサーバシステム14によって実装される方法400のフローチャートである。方法400は、上述のシステムを使用して又は他の適切なハードウェア及びソフトウェア要素を利用して実行されてよい。
402において、方法400は、少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行することを含んでよい。ホスト仮想マシン34は、サーバシステム14の少なくとも1つのプロセッサによって実行されてよく、サーバシステム14は、例えば図2に図示されるクラウドプラットフォームデータセンタの形態をとってよい。一例では、ホスト仮想マシン34は、複数のクライアントコンピュータデバイス12のために複数のセッションを同時にホストするよう構成されるマルチセッション・オペレーティングシステムを実装し得る。複数のセッションは、同一のマルチセッション・オペレーティングシステムインスタンスにおいてホストされてよい。各セッションは、本明細書において説明されるマルチメディア・リダイレクションのための技術及びプロセスを実装し得る。
404において、方法400は、リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行することを含んでよい。ウェブブラウザアプリケーション36は、ホスト仮想マシン34内で実行されてよい。マルチセッション・オペレーティングシステムの例では、複数のセッションの各々が、マルチセッション・オペレーティングシステムにおいて実行される、関連するウェブブラウザアプリケーション36インスタンスを有してよい。リモートメディアソース16は、ビデオ及び/又はオーディオのようなメディアコンテンツをストリームする第三者メディアサービスの形態をとってよい。ウェブブラウザアプリケーション36は、例えばリモートメディアソース16のURLアドレスのような、ユーザウェブナビゲーション入力に基づいてリモートメディアソース16にアクセスするよう構成され得る。
406において、方法400は、エンコードされたメディアコンテンツを、リモートメディアソースからメディアコンテナフォーマットで受け取ることを含んでよい。エンコードされたメディアコンテンツ18は、WANを介してホスト仮想マシン34によって受け取られてよい。図3に図示されるように、エンコードされたメディアコンテンツ18は、エンコードされたビデオストリーム40、エンコードされたオーディオストリーム42及びエンコードされたテキストストリーム44のうちの1つ以上を含んでよい。メディアコンテンツのエンコードされたストリームは、例えばMP4フォーマット、WAVフォーマット等のようなメディアコンテナフォーマット38でバンドルされ得る。
408において、方法400は、メディアコンテナフォーマットのエンコードされたメディアコンテンツをデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリームにすることを含んでよい。例えばウェブブラウザアプリケーション36は、メディアコンテナフォーマット38をアンパック(unpacking)し、エンコードされたメディアコンテンツ18をデマルチプレクサして、例えばエンコードされたビデオストリーム40、エンコードされたオーディオストリーム42及び/又はエンコードされたテキストストリーム44のような独立ストリームにするためのプロセスを含む、MSEモジュール46を実装するよう構成され得る。
410において、方法400は、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成される、マルチメディア・リダイレクションモジュールを実行することを含んでよい。マルチメディア・リダイレクションモジュール54は、アプリケーションプログラミングインタフェース(API)コールをインターセプトし、渡された引数及びそれらの引数に適用されるシステム挙動を変更する、シム(shim)の形態をとってよい。例えばマルチメディア・リダイレクションモジュール54は、エンコードされたオーディオ/ビデオ/テキストストリームをそれぞれのデコーダ及びレンダラに渡すことになるAPIコールをインターセプトし、そのエンコードされたコンテンツを、そのセッションのための関連するクライアントコンピュータデバイス12にリダイレクトし得る。このようにして、エンコードされたメディアコンテンツ18は、ホスト仮想マシン34上のデコーダ48によってデコードされない。
クライアントコンピュータデバイス12にリダイレクトされているエンコードされたメディアコンテンツ18は、WANを介してクライアントコンピュータデバイス12にバッファされて、ストリームされてよい。412において、方法400は、エンコードされたメディアコンテンツの独立ストリームをバッファリングすることを含んでよい。エンコードされたオーディオストリーム42及びエンコードされたビデオストリーム40のようなエンコードされたメディアコンテンツの独立ストリームは、ホスト仮想マシン34上のバッファに一時的に記憶されてよい。
414において、方法400は、少なくとも1つのクライアントコンピュータデバイスからメディアサンプルの要求を受け取ったことに応答して、エンコードされたメディアコンテンツのバッファリングされた独立ストリームのメディアサンプルを、少なくとも1つのクライアントコンピュータデバイスに送信することを含んでよい。クライアントコンピュータデバイス12は、エンコードされたメディアコンテンツ18のストリームごとに独立に、新しいメディアサンプルを要求し得る。例えばクライアントコンピュータデバイス12は、エンコードされたオーディオストリーム42のメディアサンプルを要求することとは独立に、エンコードされたビデオストリーム40のメディアサンプルを要求してよい。このようにして、クライアントコンピュータデバイス12は、エンコードされたメディアコンテンツの独立ストリーム(例えばエンコードされたオーディオストリーム、エンコードされたビデオストリーム等)ごとに、独立の速度(rate)でメディアサンプルを要求してよく、ホスト仮想マシン34は、エンコードされたメディアコンテンツの各独立ストリームについてのこれらのメディアサンプルを、要求された速度で送信し得る。典型的には、ビデオコンテンツは、オーディオコンテンツよりもサイズが大きく、したがって、クライアントコンピュータデバイス12に送信されているビデオサンプルのより高いレートを必要とし得る。
図5は、マルチメディア・リダイレクションモジュール54及び方法400で説明されるステップを実装するための例示的なサーバ側のソフトウェアアーキテクチャを図示している。図示される例では、サーバシステム14に含まれるサーバデバイスの少なくとも1つのプロセッサ56は、少なくとも1つのクライアントコンピュータデバイス12とのセッション58をホストするよう構成されるホスト仮想マシン34を実行するよう構成され得る。図示される例では、ホスト仮想マシン34は、複数のクライアントコンピュータデバイス12のための複数のセッション58を同時にホストするよう構成されるマルチセッション・オペレーティングシステム60を実装する。各セッション58は、異なるクライアントコンピュータデバイス12に関連付けられてよく、ホスト仮想マシン34上でアプリケーションプログラムの別個のインスタンスを実行し得る。例えば各セッション58は、リモートメディアソース16からのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーション36の別個のインスタンスを実行してよい。
マルチセッション・オペレーティングシステム60内で実行される各セッション58は、図3及び図4を参照して上述したように、エンコードされたメディアコンテンツ18を、リモートメディアソース16からメディアコンテナフォーマット38で受け取るように更に構成され得る。一例では、エンコードされたメディアコンテンツ18は、動的ストリームメディアコンテンツの形態をとってよい。他の例では、エンコードされたメディアコンテンツ18は、HTTPプログレッシブストリーミングコンテンツの形態をとってよい。しかしながら、エンコードされたメディアコンテンツ18は他の適切な形態をとってもよいことを認識されたい。加えて、エンコードされたメディアコンテンツ18は、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含むメディアコンテナフォーマットで受け取られてよい。ビデオストリーム、オーディオストリーム及びテキストストリームは、メディアコンテナフォーマット内にマルチプレクサ(多重化(muxed))されてよい。メディアコンテナフォーマットは、MP4フォーマット、WAVフォーマット又は任意の他の適切なタイプのメディアコンテナフォーマットの形態をとってよいことを認識されたい。
ウェブブラウザアプリケーション36の実行は、マルチセッション・オペレーティングシステム60内で実行される複数の関連するプロセスをスピンアップ(spin up)し得る。具体的な例として、クライアントコンピュータデバイス12とのセッション58のためのウェブブラウザアプリケーションプロセス62が実行されてよい。加えて、ウェブブラウザアプリケーション36で開かれたタブごとに、別個のレンダラプロセス64が実行されてよい。これらの別個のレンダラプロセス64は、サンドボックス化されてよく、ウェブブラウザアプリケーションプロセス62と比較して低いインテグリティレベルで実行され得る。
各レンダラプロセス64は、デマルチプレクサモジュール66、レンダラクライアント68及びクーリエ(courier)レンダラ70を含んでよい。デマルチプレクサモジュール66は、メディアコンテナフォーマット38内のエンコードされたメディアコンテンツ18をデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリーム72にするよう構成されてよい。エンコードされたメディアコンテンツのデマルチプレクサされた独立ストリーム72は、例えばエンコードされたビデオストリーム及びエンコードされたオーディオストリーム及び/又はエンコードされたテキストストリームを含んでよい。
クーリエレンダラ70は、MMRモジュール54の一部を形成し、エンコードされたメディアコンテンツのデマルチプレクサされた独立ストリーム72から、圧縮されたメディアサンプルを要求して受け取るよう構成され得る。一例では、クーリエレンダラ70はまた、エンコードされたメディアコンテンツ18についての再生状態74の変化及び再生時間をレンダラクライアント68に通知するようにも構成され得る。
一例では、マルチメディア・リダイレクション(MMR:multi-media redirection)が有効にされる場合、クーリエレンダラ70はレンダラプロセス64内で実行される。MMRが、受け取ったエンコードされたメディアコンテンツ18について現在有効にされていない場合、次いでレンダラプロセス64は、クーリエレンダラ70の代わりに、デコーダ48、オーディオレンダラ50及びビデオレンダラ52を介して、エンコードされたメディアコンテンツのデコーディング及びレンダリングを処理するよう構成され得るメディアレンダラを実行するよう構成されてよい。MMRが有効にされると、クーリエレンダラ70が、典型的なメディアレンダラの代わりにロードされ、メディアコンテンツのデマルチプレクサされたストリームをインターセプトし、本明細書で説明される機能及びプロセスを実行するよう構成される。このようにして、メディアコンテンツのデマルチプレクサされたストリームは、ホスト仮想マシン34上でデコード及びレンダリングされない。
MMRモジュール54は、リモートデスクトップ接続(RDC:remote desktop connection)リモーティングコネクタモジュール76を更に含んでよい。クーリエレンダラ70は、RDCリモーティングコネクタモジュール76とクロスプロセス通信(cross-process communicate)するように更に構成され得る。一例では、RDCリモーティングコネクタモジュール76は、ウェブブラウザアプリケーションプロセス62のプロセス内で実行されてよい。別の例では、RDCリモーティングコネクタモジュール76は、ウェブブラウザアプリケーションプロセス62とは別個の別のプロセス内で実行されてもよい。図5に図示されるように、クーリエレンダラ70は、シリアライズされたメッセージ(serialized messages)80の送受信を介してRDCリモーティングコネクタモジュール76との通信を処理するよう構成されるレンダラコントローラ78を含んでもよい。具体的な例として、シリアライズされたメッセージ80は、例えば構造化されたデータをシリアライズ及びデシリアライズするための言語及びプラットフォーム中立メカニズムである、拡張GOOGLE(登録商標) PROTOCOL BUFFERSのようなプロトコルを使用してシリアライズされるコマンドを含んでもよい。しかしながら、他のシリアライゼーションプロトコルも実装されてよいことを認識されたい。
クーリエレンダラ70は、エンコードされたメディアコンテンツのデマルチプレクサされた独立ストリーム72についてのデマルチプレクサされたメディアサンプルを、RDCリモーティングコネクタモジュール76に送信するよう構成され得る。また、クーリエレンダラ70は、レンダラコマンドを、同様にRDCリモーティングコネクタモジュール76に送信されるシリアライズされたメッセージ80に変換するようにも構成されてよい。さらに、クーリエレンダラ70は、RDCリモーティングコネクタモジュール76から受け取ったシリアライズされたメッセージ80を、レンダラクライアント68におけるコールバックに変換するよう構成されてよい。
上述のように、ウェブブラウザアプリケーションのインスタンスで開かれた各タブは、関連するレンダラプロセス64を有してよい。レンダラプロセス64のこれらのインスタンスの各々についてのクーリエレンダラ70のインスタンスは、クライアントコンピュータデバイス12とのセッション58で実行されているウェブブラウザアプリケーションのそのインスタンスについての単一のRDCリモーティングコネクタモジュール76と通信し得る。RDCリモーティングコネクタモジュール76は、関連するクーリエレンダラ70とシリアライズされたメッセージを交換するよう構成されるリモーティングブリッジ82を、クーリエレンダラ70ごとに含んでもよい。一例では、RDCリモーティングコネクタモジュール76は、複数のクーリエレンダラがクライアントコンピュータデバイス12に対して同時にリモーティングすることを可能にする、マルチプレクサとして機能するよう構成されてよい。
図5に図示されるように、RDCリモーティングコネクタモジュール76は、RDCリモーティングコネクタモジュール76の機能及びプロセスを実行するためのロジックを含む、RDCメディアリモーティングコア84を更に含んでよい。RDCメディアリモーティングコア84はまた、リモーティングブリッジ82で受け取られるエンコードされたメディアデータのデマルチプレクサされた独立ストリーム72の、クライアントコンピュータデバイス12上で実装される動的仮想チャネル(DVC:dynamic virtual channel)プラグインへの送信を処理するようにも構成され得る。RDCリモーティングコネクタモジュール76はまた、クライアントコンピュータデバイス12上のDVCプラグインとのシリアライズされたメッセージ80の通信も処理し得る。
上述のように、MMRモジュール54は、RDCリモーティングコネクタモジュール76及びクーリエレンダラ70を含んでよい。上述のプロセスを使用して、MMRモジュール54は、ウェブブラウザアプリケーション36のデコーディングモジュール48によって処理されることから、エンコードされたメディアコンテンツ18をインターセプトするよう構成され得る。例えばMMRが有効にされると、クーリエレンダラ70が、レンダラプロセス64内の典型的なメディアレンダラの代わりに実行されてよい。すなわち、MMRモジュール54は、エンコードされたメディアコンテンツのデマルチプレクサされた独立ストリーム(例えばビデオ/オーディオ/テキストストリーム)からのメディアサンプルを、クーリエレンダラ70に送信させてよく、クーリエレンダラ70は、これらのメディアサンプルを、RDCリモーティングコネクタモジュール76の関連するリモーティングブリッジ82に送信するよう構成される。RDCリモーティングコネクタモジュール76について説明した機能を使用して、MMRモジュール54は、これらのメディアサンプルを、WANを介してクライアントコンピュータデバイス12に送信してよい。このようにして、エンコードされたメディアコンテンツは、該エンコードされたメディアコンテンツがホスト仮想マシン34上でデコード又はレンダリングされないように、MMRモジュール54によって少なくとも1つのクライアントコンピュータデバイス12にリダイレクトされる。
加えて、MMRモジュール54は、エンコードされたメディアコンテンツの独立ストリーム72をバッファリングし、少なくとも1つのクライアントコンピュータデバイス12からのメディアサンプルの要求を受け取ったことに応答して、エンコードされたメディアコンテンツのバッファリングされた独立ストリーム72のメディアサンプルを、少なくとも1つのクライアントコンピュータデバイス12に送信するよう構成され得る。例えばクライアントコンピュータデバイス12は、エンコードされたメディアコンテンツのストリームのうちの少なくとも1つについてのメディアサンプルの要求88を含むシリアライズされたメッセージ80を、RDCリモーティングコネクタモジュール76に送信してよい。RDCリモーティングコネクタモジュール76は、要求されたメディアサンプルを関連するリモーティングブリッジ82に送るように、クーリエレンダラ70に要求してよい。RDCリモーティングコネクタモジュール76は、次いで、要求されたエンコードされたメディアサンプル86を、動的仮想チャネルを介してクライアントコンピュータデバイス12に送信してよい。一例では、クライアントコンピュータデバイス12は、エンコードされたメディアコンテンツ2の独立ストリーム72ごとに別個の要求88を送信してよい。例えばクライアントコンピュータデバイス12は、エンコードされたオーディオコンテンツのメディアサンプルよりも高い速度で、エンコードされたビデオコンテンツストリームのメディアサンプルを要求することがある。したがって、MMRモジュール54は、少なくとも1つのクライアントコンピュータデバイス12から受け取ったメディアサンプルの要求88に基づいて、エンコードされたメディアコンテンツの独立ストリーム72の各々についてのメディアサンプル86を、独立の速度で送信するよう構成されてよい。
上述のように、MMRモジュール54は、RDCリモーティングコネクタモジュール76及びクーリエレンダラ70を含み得るが、エンコードされたメディアコンテンツ18についてMMRが有効にされると、ロードされて実行される。一例において、少なくとも1つのプロセッサ56は、1つ以上のモニタされたパラメータ90に基づいて、MMRを有効にするかどうか、並びにMMRモジュール54を実行してエンコードされたメディアコンテンツ18をインターセプトするか、又はウェブブラウザアプリケーション36のデコーディングモジュール48によって処理されることを可能にするかを判断するよう構成されてよい。一例では、ホスト仮想マシン34は、サーバシステム14と少なくとも1つのクライアントコンピュータデバイス12との間のネットワークパラメータをモニタし、モニタされたネットワークパラメータに基づいてMMRを有効にするかどうかを判断するよう構成され得る。
別の例として、ホスト仮想マシン34は、ホスト仮想マシン34を実行している少なくとも1つのプロセッサ56の現在の処理負荷をモニタし、現在の処理負荷に基づいてMMRを有効にするかどうかを判断するよう構成され得る。具体的な例として、少なくとも1つのプロセッサ56における現在の処理負荷が閾値レベルを超える場合、ホスト仮想マシン34は、MMRを有効にし、MMRモジュール54及びその関連するメディアスタックをロードして、デコーディング及びレンダリングを実行する標準レンダリングプロセスによって処理されることから、エンコードされたメディアコンテンツ18をインターセプトするよう構成され得る。一方、現在の処理負荷が閾値レベルより低く、モニタされたネットワークパラメータが、ネットワーク帯域幅が低いことを示す場合、ホスト仮想マシンは、MMRを無効にし、エンコードされたメディアコンテンツをデコード/レンダリングするよう構成されてよい。レンダリングされたフレームは、次いで、サーバシステムとクライアントコンピュータデバイスとの間のネットワーク帯域幅に適した圧縮レベルでエンコードされ得る。
別の例として、ホスト仮想マシン34は、少なくとも1つのクライアントコンピュータデバイス12のユーザ設定に基づいて、MMRを有効にして、MMRモジュール54をロードするかどうかを判断するよう構成され得る。例えば管理者は、クライアントコンピュータデバイスのMMRを有効又は無効にするようユーザ設定を制御してよい。ユーザ設定は、ホスト仮想マシン34に送信され、そのクライアントコンピュータデバイスのために記憶されてよい。1つの具体的な例において、MMRは、異なるメディアソース16に対するユーザ設定を介して、独立に有効又は無効にされてよい。
上述のように、ホスト仮想マシン34は、複数のクライアントコンピュータデバイス12とのセッション58をホストするマルチセッション・オペレーティングシステム60を実装してよい。各クライアントコンピュータデバイス12とのアクティビティは、ホスト仮想マシン34を実行している少なくとも1つのプロセッサ56に課される処理ワークロードを増加させる可能性がある。したがって、一例において、ホスト仮想マシン34は、マルチセッション・オペレーティングシステム60によってホストされる複数のセッション58の集約アクティビティ(aggregate activity)を判断し、集約アクティビティに基づいてMMRモジュール54を実行するかどうかを判断するよう構成されてよい。具体的な例として、現在1つのセッションのみがストリーミングのためにエンコードされたメディアコンテンツにアクセスしているために、複数のセッション58の集約アクティビティが低い場合、ホスト仮想マシン34は、MMRを有効にせず、ホスト仮想マシン34上でデコーディング及びレンダリングプロセスが実行されることを可能にするよう構成されてよい。一方、複数のセッションがエンコードされたメディアコンテンツへのアクセスを試みていることに起因して、複数のセッション58の集約アクティビティが高い場合、ホスト仮想マシン34は、MMRを有効にし、MMRモジュール54をロードするよう構成されてよい。
ホスト仮想マシン34は、モニタされたパラメータ90に対する変化に基づいて、MMRを動的に有効又は無効にするよう構成され得る。加えて、上述した例示のモニタされたパラメータは単に例示的なものであって、ホスト仮想マシン34は、エンコードされたメディアコンテンツのサイズ、エンコードされたメディアコンテンツのソース等のような他のパラメータに基づいて、MMRを有効にするかどうかを動的に判断してよいことを認識されたい。
図6は、ホスト仮想マシン34と通信するために各クライアントコンピュータデバイス12のプロセッサによって実行され得る例示のリモートデスクトップクライアント92を図示している。リモートデスクトップクライアント92は、ホスト仮想マシン34によって実行されるMMRモジュール54と対話するよう構成されるMMR DVCプラグイン94を含む。MMRがホスト仮想マシン34によって有効にされるとき、MMR DVCプラグイン94がリモートデスクトップクライアント92にロードされてよい。一方、MMRが有効にされない場合、リモートデスクトップクライアント92は、典型的なリモーティング技術及びプロセスを使用するよう構成されてよい。
MMR DVCプラグイン94は、通信層96及びメディア層98を含む。通信層96は、MMR DVCプラグイン94とホスト仮想マシン34のRDCリモーティングコネクタモジュール76との間の通信を処理するよう構成される。通信層96は、ホスト仮想マシン34のRDCリモーティングコネクタモジュール76とのチャネルを開くよう構成されるMMR仮想チャネル100を含んでよい。MMR仮想チャネル100のインスタンスは、セッションのために開かれるウェブブラウザアプリケーション36のインスタンスごとに作成されてよい。例えばホスト仮想マシン34上のウェブブラウザアプリケーション36のインスタンスが開かれ、メディアコンテンツがアクセスされるときのように、ホスト仮想マシン34からの新しい接続が受け入れられるときに、リモートトランシーバ102が作成される。
リモートトランシーバ102は、ホスト仮想マシン34のRDCリモーティングコネクタモジュール76へ/からメッセージ104を送受信するように構成され得る。図示されるように、メッセージ104は、メインメッセージハンドラ106、ソースメッセージハンドラ108、レンダラメッセージハンドラ110及びデマルチプレクサストリーム・メッセージハンドラ112を含むように構造化される。メインメッセージハンドラ106は、クライアントとホストとの間のバージョン情報を折衝するためのデータを含むよう構成されてよい。
メッセージ104は、RDCリモーティングコネクタモジュール76のリモーティングブリッジ82ごとに、ソースメッセージハンドラ108を含んでよい。各ソースメッセージハンドラ108は、レンダラプロセス64とのメッセージを処理するためのそれぞれのレンダラメッセージハンドラ110を更に含む。レンダラメッセージハンドラ110は、関連するレンダラプロセス64によって処理されているエンコードされたメディアコンテンツの再生状態に関するデータを含んでよい。例えばレンダラメッセージハンドラ110は、メディアコンテンツを一時停止すべきか、目標位置まで探索すべきかどうか等を伝達し得る。レンダラメッセージハンドラ110はまた、再生位置、再生が終了したかどうか又は再生におけるエラーのような、再生のステータスをホスト仮想マシン34に報告するために使用されてもよい。
各レンダラメッセージハンドラ110は、例えばエンコードされたメディアの各デマルチプレクサされた独立ストリーム72のメディアサンプルを要求することのように、デマルチプレクサベースの操作を処理するためのデータを含むよう構成される、デマルチプレクサストリーム・メッセージハンドラ112を更に含む。すなわち、クライアントコンピュータデバイス12は、デマルチプレクサストリーム・メッセージハンドラ112を介して、エンコードされたメディアコンテンツの特定のストリームについての新しいメディアサンプルを要求し得る。上述のように、クライアントコンピュータデバイス12は、メディアコンテンツの各デマルチプレクサされたストリームごとに、独立の速度で、メディアコンテンツを要求してよい。例えばクライアントコンピュータデバイス12は、オーディオメディアコンテンツのメディアサンプルよりも高い速度で、ビデオメディアコンテンツのメディアサンプルを要求してよい。
メディア層98は、通信層96のリモートトランシーバ102を介してメッセージ104を送受信し得るメディアレンダラ114を含む。メッセージ104を使用して、メディアレンダラ114は、例えばエンコードされたビデオコンテンツのメディアサンプル、エンコードされたオーディオコンテンツのメディアサンプル及びエンコードされたテキストコンテンツのメディアサンプルのような、エンコードされたメディアコンテンツのストリーム72について、メディアサンプルを要求してよい。メディアレンダラ114は、次いで、受け取ったメディアサンプルをデコードし、デコードされたメディアサンプルを、ディスプレイ、スピーカ等のようなクライアントコンピュータデバイス12の出力デバイスを介してユーザに提示するためにレンダリングしてよい。メディアレンダラ114は、クライアントコンピュータデバイス12のプラットフォームのために任意の適切なレンダリング技術を使用してよいことを認識されたい。
上述の方法では、エンコードされたメディアコンテンツは、メディアコンテンツがホスト仮想マシン34上でデコード又はレンダリングされないように、クライアントコンピュータデバイス12にリダイレクトされ得る。むしろ、エンコードされたメディアコンテンツは、クライアントコンピュータデバイス12にストリームされ、クライアントコンピュータデバイス12は、表示のために、メディアコンテンツをデコード及びレンダリングするよう構成される。したがって、MMRを実行し、ホスト仮想マシン上でのデコーディング/レンダリングプロセスを回避することによって、ホスト仮想マシンを実行しているハードウェアに対する処理ワークロードを低減することができる。
いくつかの実施形態において、本明細書で説明される方法及びプロセスは、1つ以上のコンピューティングデバイスのコンピューティングシステムと結び付けられ得る。特に、そのような方法及びプロセスは、コンピュータアプリケーションプログラム又はサービス、アプリケーションプログラミングインタフェース(API)、ライブラリ及び/又は他のコンピュータプログラム製品として実装されてよい。
図7は、上述した方法及びプロセスのうちの1つ以上を規定することができるコンピューティングシステム700の非限定的な実施形態を概略的に示す。コンピューティングシステム700は、簡略化された形態で示されている。コンピューティングシステム700は、上述され、図1及び図2に図示される、クライアントコンピュータデバイス12及びサーバシステム14のサーバデバイスを具現化し得る。コンピューティングシステム700は、1つ以上のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、ホームエンターテインメントコンピュータ、ネットワークコンピューティングデバイス、ゲーミングデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス(例えばスマートフォン)及び/又は他のコンピューティングデバイス、並びにスマート腕時計及びヘッドマウント型拡張現実デバイスのようなウェアラブルコンピューティングデバイスの形態をとってよい。
コンピューティングシステム700は、論理プロセッサ702、揮発性メモリ704及び不揮発性ストレージデバイス706を含む。コンピューティングシステム700は、任意に、ディスプレイサブシステム708、入力サブシステム710、通信サブシステム712及び/又は図7に示されていない他の構成要素を含んでよい。
論理プロセッサ702は、命令を実行するよう構成される1つ以上の物理デバイスを含む。例えば論理プロセッサは、1つ以上のアプリケーション、プログラム、ルーチン、ライブラリ、オブジェクト、構成要素、データ構造又は他の論理構成の一部である命令を実行するよう構成されてよい。そのような命令は、タスクを実行し、データ型を実装し、1つ以上の構成要素の状態を変換し、技術的効果を達成し、あるいは他の方法で所望の結果に到達するように実装されてよい。
論理プロセッサは、ソフトウェア命令を実行するよう構成される1つ以上の物理プロセッサ(ハードウェア)を含んでよい。追加又は代替として、論理プロセッサは、ハードウェア実装ロジック又はファームウェア命令を実行するよう構成される1つ以上のハードウェア論理回路又はファームウェアデバイスを含んでよい。論理プロセッサ702のプロセッサは、シングルコア又はマルチコアであってよく、その上で実行される命令は、逐次処理、並列処理及び/又は分散処理のために構成されてよい。論理プロセッサの個々の構成要素は、任意に、2つ以上の別個のデバイス間に分散されてよく、これらのデバイスは、リモートに配置されてもよく及び/又は協調処理のために構成されてもよい。論理プロセッサの態様は、クラウドコンピューティング構成において構成されるリモートにアクセス可能なネットワーク化されたコンピューティングデバイスによって仮想化され、実行されてよい。このような場合、これらの仮想化された態様は、様々な異なるマシンの異なる物理的な論理プロセッサ上で実行されることが理解されよう。
不揮発性ストレージデバイス706は、本明細書で説明される方法及びプロセスを実装するために、論理プロセッサによって実行可能な命令を保持するよう構成される1つ以上の物理デバイスを含む。そのような方法及びプロセスが実装されるとき、不揮発性ストレージデバイス706の状態は、例えば異なるデータを保持するように、変換されてよい。
不揮発性ストレージデバイス706は、取り外し可能な及び/又は内蔵される物理デバイスを含んでよい。不揮発性ストレージデバイス706は、光メモリ(例えばCD、DVD、HD-DVD、Blu-Ray(登録商標)Disc等)、半導体メモリ(例えばROM、EPROM、EEPROM、FLASH(登録商標)メモリ等)及び/又は磁気メモリ(例えばハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAM等)又は他の大容量ストレージデバイス技術を含んでよい。不揮発性ストレージデバイス706は、不揮発性、動的、静的、読み取り/書き込み、読み取り専用、逐次アクセス、位置アドレス可能、ファイルアドレス可能及び/又はコンテンツアドレス可能なデバイスを含んでよい。不揮発性ストレージデバイス706は、該不揮発性ストレージデバイス706への電力が遮断されたときでも、命令を保持するよう構成されることが認識されよう。
揮発性メモリ704は、ランダムアクセスメモリを含む物理デバイスを含んでよい。揮発性メモリ704は、典型的に、ソフトウェア命令の処理中に情報を一時的に記憶するために論理プロセッサ702によって利用される。揮発性メモリ704は、典型的に、揮発性メモリ704への電力が遮断されると、命令を記憶し続けないことが認識されよう。
論理プロセッサ702、揮発性メモリ704及び不揮発性ストレージデバイス706の態様は、1つ以上のハードウェア論理構成要素に一緒に統合されてよい。そのようなハードウェア論理構成要素は、例えばフィールドプログラマブルゲートアレイ(FPGA)、特定プログラム及び特定用途向け集積回路(PASIC/ASIC)、特定プログラム及び特定用途向け標準品(PSSP/ASSP)、システムオンアチップ(SOC)及び複合プログラマブル論理デバイス(CPLD)を含んでよい。
「モジュール」、「プログラム」及び「エンジン」という用語は、揮発性メモリの一部を使用して特定の機能を実行するために、プロセッサにより、典型的にソフトウェアで実装される、コンピューティングシステム700の態様を説明するために使用されてよく、この機能は、該機能を実行するためにプロセッサを特別に構成する変形処理を含む。したがって、モジュール、プログラム又はエンジンは、揮発性メモリ704の一部を使用して、不揮発性ストレージデバイス706によって保持される命令を実行する論理プロセッサ702を介してインスタンス化されてよい。異なるモジュール、プログラム及び/又はエンジンが、同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、機能(functions)等からインスタンス化され得ることが理解されよう。同様に、同じモジュール、プログラム及び/又はエンジンが、異なるアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、API、機能等によってインスタンス化されてもよい。「モジュール」、「プログラム」及び「エンジン」という用語は、個々の又は実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード等のグループを含んでよい。
含まれるとき、ディスプレイサブシステム708は、不揮発性ストレージデバイス706によって保持されるデータの視覚的表現を提示するために使用されてよい。視覚的表現は、グラフィカルユーザインタフェース(GUI)の形態をとってよい。本明細書で説明される方法及びプロセスが、不揮発性ストレージデバイスによって保持されるデータを変更し、したがって、不揮発性ストレージデバイスの状態を変換すると、ディスプレイサブシステム708の状態も同様に、基礎となるデータにおける変化を視覚的に表すよう変換され得る。ディスプレイサブシステム708は、事実上任意のタイプの技術を利用する1つ以上のディスプレイデバイスを含んでよい。そのようなディスプレイデバイスは、共有エンクロージャ内の論理プロセッサ702、揮発性メモリ704及び/又は不揮発性ストレージデバイス706と組み合わされてよく、あるいはそのようなディスプレイデバイスは周辺ディスプレイデバイスであってもよい。
含まれるとき、入力サブシステム710は、キーボード、マウス、タッチスクリーン又はゲームコントローラのような1つ以上のユーザ入力デバイスを含むか又はそれらとインタフェースしてよい。いくつかの実施形態において、入力サブシステムは、選択されたナチュラルユーザ入力(NUI)構成要素を含むかそれとインタフェースしてよい。そのような構成要素は、統合されてもよく又は周辺的なものであってもよく、入力アクションのトランスダクション及び/又は処理は、オンボード又はオフボードで扱われてよい。例示的なNUI構成要素は、スピーチ及び/又は音声認識のためのマイクロホン;機械ビジョン及び/又はジェスチャ認識のための赤外線、カラー、立体及び/又は深度カメラ;動き検出及び/又は意図認識のためのヘッドトラッカー、アイトラッカー、加速度計及び/又はジャイロスコープ;並びに脳活動を評価するための電界感知構成要素及び/又は任意の他の適切なセンサを含んでよい。
含まれるとき、通信サブシステム712は、本明細書で説明される様々なコンピューティングデバイスを互いに及び他のデバイスと通信的に結合するよう構成され得る。通信サブシステム712は、1つ以上の異なる通信プロトコルと互換性のある有線及び/又は無線通信デバイスを含んでよい。非限定的な例として、通信サブシステムは、無線電話ネットワークを介して、あるいは例えばWi-Fi接続上のHDMI(登録商標)のように有線又は無線のローカル又はワイドエリアネットワークを介した通信のために構成されてよい。いくつかの実施形態において、通信サブシステムは、コンピューティングシステム700が、インターネットのようなネットワークを介して、他のデバイスへ及び/又は他のデバイスから、メッセージを送信及び/又は受信することを可能にし得る。
以下の段落は、本主題の出願の特許請求の範囲についての追加のサポートを提供する。一態様は、少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するよう構成される少なくとも1つのプロセッサを含む、コンピュータシステムを提供する。少なくとも1つのプロセッサは、リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行し、エンコードされたメディアコンテンツを、リモートメディアソースからメディアコンテナフォーマットで受け取り、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成されるマルチメディア・リダイレクションモジュールを実行するように更に構成される。マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツを少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成される。この態様において、追加又は代替として、エンコードされたメディアコンテンツは、動的ストリームメディアコンテンツ(dynamic streamed media content)であり得る。この態様において、追加又は代替として、エンコードされたメディアコンテンツは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含む、メディアコンテナフォーマットで受け取られてよく、少なくとも1つのプロセッサは、メディアコンテナフォーマットのエンコードされたメディアコンテンツをデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリームにするよう構成され得る。この態様において、追加又は代替として、エンコードされたメディアコンテンツの独立ストリームは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含んでよい。この態様において、追加又は代替として、マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツの独立ストリームをバッファリングし、少なくとも1つのクライアントコンピュータデバイスからメディアサンプルの要求を受け取ったことに応答して、エンコードされたメディアコンテンツのバッファリングされた独立ストリームのメディアサンプルを、少なくとも1つのクライアントコンピュータデバイスに送信するよう構成され得る。この態様において、追加又は代替として、マルチメディア・リダイレクションモジュールは、少なくとも1つのクライアントコンピュータデバイスから受け取ったメディアサンプルの要求に基づいて、エンコードされたメディアコンテンツの独立ストリームの各々についてのメディアサンプルを独立の速度で送信するよう構成され得る。この態様において、追加又は代替として、少なくとも1つのプロセッサは、1つ以上のモニタされたパラメータに基づいて、マルチメディア・リダイレクションモジュールを実行して、エンコードされたメディアコンテンツをインターセプトするか、又はエンコードされたメディアコンテンツをウェブブラウザアプリケーションのデコーディングモジュールによって処理することを可能にするかを判断するよう構成され得る。この態様において、追加又は代替として、1つ以上のモニタされたパラメータは、コンピュータシステムと少なくとも1つのクライアントコンピュータデバイスとの間のネットワークパラメータ、コンピュータシステムの少なくとも1つのプロセッサの現在の処理負荷、エンコードされたメディアコンテンツのサイズ及び少なくとも1つのクライアントコンピュータデバイスのユーザ設定からなるグループから選択され得る。この態様において、追加又は代替として、少なくとも1つのプロセッサによって実行されるホスト仮想マシンは、複数のクライアントコンピュータデバイスのための複数のセッションを同時にホストするよう構成されるマルチセッション・オペレーティングシステムを含み得る。この態様において、追加又は代替として、少なくとも1つのプロセッサは、マルチセッション・オペレーティングシステムによってホストされる複数のセッションの集約アクティビティに基づいて、マルチメディア・リダイレクションモジュールを実行するかどうかを判断するよう構成され得る。
別の態様は、サーバデバイスのプロセッサにおいて、少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するステップと、リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行するステップと、エンコードされたメディアコンテンツを、リモートメディアソースからメディアコンテナフォーマットで受け取るステップと、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成されるマルチメディア・リダイレクションモジュールを実行するステップと、を含む方法を提供する。マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツを少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成される。この態様において、追加又は代替として、エンコードされたメディアコンテンツは、動的ストリームメディアコンテンツであり得る。この態様において、追加又は代替として、エンコードされたメディアコンテンツは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含む、メディアコンテナフォーマットで受け取られてよく、方法は、メディアコンテナフォーマットのエンコードされたメディアコンテンツをデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリームにするステップを更に含んでよい。この態様において、追加又は代替として、エンコードされたメディアコンテンツの独立ストリームは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含み得る。この態様において、追加又は代替として、方法は、エンコードされたメディアコンテンツの独立ストリームをバッファリングするステップと、少なくとも1つのクライアントコンピュータデバイスからメディアサンプルの要求を受け取ったことに応答して、エンコードされたメディアコンテンツのバッファリングされた独立ストリームのメディアサンプルを、少なくとも1つのクライアントコンピュータデバイスに送信するステップと、を更に含み得る。この態様において、追加又は代替として、方法は、少なくとも1つのクライアントコンピュータデバイスから受け取ったメディアサンプルの要求に基づいて、エンコードされたメディアコンテンツの独立ストリームの各々のメディアサンプルを独立のレートで送信するステップを更に含み得る。この態様において、追加又は代替として、方法は、1つ以上のモニタされたパラメータに基づいて、マルチメディアリダイレクトモジュールを実行して、エンコードされたメディアコンテンツをインターセプトするか、又はエンコードされたメディアコンテンツを、ウェブブラウザアプリケーションのデコーディングモジュールによって処理することを可能にするかを判断するステップを更に含み得る。この態様において、追加又は代替として、1つ以上のモニタされたパラメータは、サーバデバイスと少なくとも1つのクライアントコンピュータデバイスとの間のネットワークパラメータ、サーバデバイスの少なくとも1つのプロセッサの現在の処理負荷、エンコードされたメディアコンテンツのサイズ及び少なくとも1つのクライアントコンピュータデバイスのユーザ設定からなるグループから選択され得る。この態様において、追加又は代替として、ホスト仮想マシンは、複数のクライアントコンピュータデバイスのための複数のセッションを同時にホストするよう構成されるマルチセッション・オペレーティングシステムを含み得る。
別の態様は、複数のクライアントコンピュータデバイスのための複数のセッションを同時にホストするよう構成されるマルチセッション・オペレーティングシステムを実装するホスト仮想マシンを実行するよう構成される、少なくとも1つのプロセッサを含む、サーバシステムを提供する。少なくとも1つのプロセッサは、複数のセッションのうちの1つ以上について、ウェブブラウザアプリケーションのインスタンスを実行するよう更に構成される。ウェブブラウザアプリケーションは、エンコードされたメディアコンテンツを、リモートメディアソースから受け取るように構成される。プロセッサは、ホスト仮想マシンのための複数のセッションの集約アクティビティが閾値レベルを超えていることを決定し、決定された集約アクティビティに基づいて、複数のセッションのうちの1つ以上についてマルチメディア・リダイレクションを有効にし、ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、エンコードされたメディアコンテンツをインターセプトするよう構成される、マルチメディア・リダイレクションモジュールを実行するよう更に構成される。マルチメディア・リダイレクションモジュールは、エンコードされたメディアコンテンツを、複数のセッションのうちの1つ以上のそれぞれのクライアントコンピュータデバイスにリダイレクトするよう構成される。
本明細書で説明される構成及び/又はアプローチは、本質的に例示的なものであり、これらの具体的な実施形態又は実施例は、多くのバリエーションが可能であるため、限定的な意味で解釈されるべきではないことが理解されよう。本明細書で説明される具体的なルーチン又は方法は、任意の数の処理ストラテジのうちの1つ以上を表し得る。したがって、図示及び/又は説明される様々な動作は、図示及び/又は説明される順序において、他の順序において、並列に又は省略されて実施されてよい。同様に、上述したプロセスの順序も変更されてよい。
本開示の主題は、様々なプロセス、システム及び構成、並びに本明細書に開示される他の特徴、機能、動作及び/又は特性、並びにそれらのすべての均等物のすべての新規で非自明の組合せ及び副次的組合せを含む。

Claims (15)

  1. コンピュータシステムであって、
    少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するよう構成される、少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、
    リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行し、
    エンコードされたメディアコンテンツを、前記リモートメディアソースからメディアコンテナフォーマットで受け取り、
    前記ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、前記エンコードされたメディアコンテンツをインターセプトするよう構成される、マルチメディア・リダイレクションモジュールを実行し、前記マルチメディア・リダイレクションモジュールが、前記エンコードされたメディアコンテンツを前記少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成される、
    よう更に構成される、コンピュータシステム。
  2. 前記エンコードされたメディアコンテンツは、動的ストリームメディアコンテンツである、
    請求項1に記載のコンピュータシステム。
  3. 前記エンコードされたメディアコンテンツは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含む、前記メディアコンテナフォーマットで受け取られ、
    前記少なくとも1つのプロセッサは、前記メディアコンテナフォーマットの前記エンコードされたメディアコンテンツをデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリームにするよう構成される、
    請求項1に記載のコンピュータシステム。
  4. 前記エンコードされたメディアコンテンツの独立ストリームは、前記ビデオストリーム、前記オーディオストリーム及び前記テキストストリームのうちの1つ以上を含む、
    請求項3に記載のコンピュータシステム。
  5. 前記マルチメディア・リダイレクションモジュールは、
    前記エンコードされたメディアコンテンツの独立ストリームをバッファリングし、
    前記少なくとも1つのクライアントコンピュータデバイスからメディアサンプルの要求を受け取ったことに応答して、前記エンコードされたメディアコンテンツのバッファリングされた独立ストリームの前記メディアサンプルを、前記少なくとも1つのクライアントコンピュータデバイスに送信する、
    よう構成される、請求項3に記載のコンピュータシステム。
  6. 前記マルチメディア・リダイレクションモジュールは、前記少なくとも1つのクライアントコンピュータデバイスから受け取った前記メディアサンプルの要求に基づいて、前記エンコードされたメディアコンテンツの独立ストリームの各々についてのメディアサンプルを独立の速度で送信するよう構成される、
    請求項5に記載のコンピュータシステム。
  7. 前記少なくとも1つのプロセッサは、1つ以上のモニタされたパラメータに基づいて、前記マルチメディア・リダイレクションモジュールを実行して前記エンコードされたメディアコンテンツをインターセプトするか、又は前記エンコードされたメディアコンテンツを前記ウェブブラウザアプリケーションの前記デコーディングモジュールによって処理することを可能にするかを判断するよう構成される、
    請求項1に記載のコンピュータシステム。
  8. 前記1つ以上のモニタされたパラメータは、当該コンピュータシステムと前記少なくとも1つのクライアントコンピュータデバイスとの間のネットワークパラメータ、当該コンピュータシステムの前記少なくとも1つのプロセッサの現在の処理負荷、前記エンコードされたメディアコンテンツのサイズ及び前記少なくとも1つのクライアントコンピュータデバイスのユーザ設定からなるグループから選択される、
    請求項7に記載のコンピュータシステム。
  9. 前記少なくとも1つのプロセッサによって実行される前記ホスト仮想マシンは、複数のクライアントコンピュータデバイスのための複数のセッションを同時にホストするよう構成されるマルチセッション・オペレーティングシステムを含む、
    請求項7に記載のコンピュータシステム。
  10. 前記少なくとも1つのプロセッサは、前記マルチセッション・オペレーティングシステムによってホストされる前記複数のセッションの集約アクティビティに基づいて、前記マルチメディア・リダイレクションモジュールを実行するかどうかを判断するよう構成される、
    請求項9に記載のコンピュータシステム。
  11. サーバデバイスのプロセッサにおいて、
    少なくとも1つのクライアントコンピュータデバイスとのセッションをホストするよう構成されるホスト仮想マシンを実行するステップと、
    リモートメディアソースからのメディアコンテンツにアクセスするよう構成されるウェブブラウザアプリケーションを実行するステップと、
    エンコードされたメディアコンテンツを、前記リモートメディアソースからメディアコンテナフォーマットで受け取るステップと、
    前記ウェブブラウザアプリケーションのデコーディングモジュールによって処理されることから、前記エンコードされたメディアコンテンツをインターセプトするよう構成される、マルチメディア・リダイレクションモジュールを実行するステップであって、前記マルチメディア・リダイレクションモジュールは、前記エンコードされたメディアコンテンツを前記少なくとも1つのクライアントコンピュータデバイスにリダイレクトするよう構成される、ステップと、
    を含む、方法。
  12. 前記エンコードされたメディアコンテンツは、ビデオストリーム、オーディオストリーム及びテキストストリームのうちの1つ以上を含む、前記メディアコンテナフォーマットで受け取られ、
    当該方法は、前記メディアコンテナフォーマットの前記エンコードされたメディアコンテンツをデマルチプレクサして、エンコードされたメディアコンテンツの独立ストリームにするステップを更に含む、
    請求項11に記載の方法。
  13. 前記エンコードされたメディアコンテンツの独立ストリームをバッファリングするステップと、
    前記少なくとも1つのクライアントコンピュータデバイスからメディアサンプルの要求を受け取ったことに応答して、前記エンコードされたメディアコンテンツのバッファリングされた独立ストリームの前記メディアサンプルを、前記少なくとも1つのクライアントコンピュータデバイスに送信するステップと、
    を更に含む、請求項12に記載の方法。
  14. 前記少なくとも1つのクライアントコンピュータデバイスから受け取った前記メディアサンプルの要求に基づいて、前記エンコードされたメディアコンテンツの独立ストリームの各々についてのメディアサンプルを独立の速度で送信するステップ、
    を更に含む、請求項13に記載の方法。
  15. 1つ以上のモニタされたパラメータに基づいて、前記マルチメディア・リダイレクションモジュールを実行して前記エンコードされたメディアコンテンツをインターセプトするか、又は前記エンコードされたメディアコンテンツを前記ウェブブラウザアプリケーションの前記デコーディングモジュールによって処理することを可能にするかを判断するステップ、
    を更に含む、請求項11に記載の方法。
JP2022539663A 2020-01-02 2020-11-26 ウェブブラウザ・マルチメディア・リダイレクション Pending JP2023509621A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/733,183 US11012498B1 (en) 2020-01-02 2020-01-02 Web browser multi-media redirection
US16/733,183 2020-01-02
PCT/US2020/062449 WO2021137983A1 (en) 2020-01-02 2020-11-26 Web browser multi-media redirection

Publications (1)

Publication Number Publication Date
JP2023509621A true JP2023509621A (ja) 2023-03-09

Family

ID=74003876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022539663A Pending JP2023509621A (ja) 2020-01-02 2020-11-26 ウェブブラウザ・マルチメディア・リダイレクション

Country Status (5)

Country Link
US (2) US11012498B1 (ja)
EP (1) EP4085641A1 (ja)
JP (1) JP2023509621A (ja)
CN (1) CN114902686A (ja)
WO (1) WO2021137983A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012485B1 (en) * 2020-01-02 2021-05-18 Microsoft Technology Licensing, Llc Multi-media redirection for media applications
US11012498B1 (en) * 2020-01-02 2021-05-18 Microsoft Technology Licensing, Llc Web browser multi-media redirection
US11516519B1 (en) * 2021-07-14 2022-11-29 Couple.com, Inc. Interactive video-based speed-dating platform and system for providing an immersive online-streaming production
CN114390313B (zh) * 2021-12-01 2024-02-13 湖南麒麟信安科技股份有限公司 一种浏览器HTML5 Video标签音视频重定向的方法及系统
CN115278366B (zh) * 2022-09-28 2023-03-24 天津卓朗昆仑云软件技术有限公司 虚拟机视频流的数据处理方法、装置以及电子设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116708A1 (en) * 2000-12-11 2002-08-22 Morris Richard M. User interface for a streaming media client
US8281377B1 (en) * 2008-04-15 2012-10-02 Desktone, Inc. Remote access manager for virtual computing services
US8793331B2 (en) * 2008-05-16 2014-07-29 Wyse Technology L.L.C. Multimedia redirection
US20130088569A1 (en) * 2011-10-10 2013-04-11 Global Development Holding Ltd. Apparatuses, methods and systems for provision of 3d content over a communication network
US10147115B1 (en) * 2012-03-28 2018-12-04 Vmware, Inc. Displaying supplemental messages including advertisements or security notifications in a virtual desktop environment
US9292060B1 (en) 2012-06-28 2016-03-22 Amazon Technologies, Inc. Allowing clients to limited control on power consumed by the cloud while executing the client's tasks
CN104040995B (zh) * 2012-12-07 2017-04-12 华为技术有限公司 多媒体重定向方法以及多媒体服务器以及计算机系统
US9124668B2 (en) * 2013-05-20 2015-09-01 Citrix Systems, Inc. Multimedia redirection in a virtualized environment using a proxy server
US9510024B2 (en) * 2014-09-12 2016-11-29 Spotify Ab System and method for early media buffering using prediction of user behavior
US10924781B2 (en) * 2014-06-27 2021-02-16 Satellite Investors, Llc Method and system for real-time transcoding of MPEG-DASH on-demand media segments while in transit from content host to dash client
CN106034241B (zh) * 2015-03-19 2019-04-26 华为技术有限公司 一种多媒体重定向的方法、客户端、服务器和系统
US20170046013A1 (en) * 2015-08-14 2017-02-16 Microsoft Technology Licensing, Llc Web-browser based desktop and application remoting solution
US10623454B2 (en) * 2015-10-13 2020-04-14 Dell Products L.P. System and method for multimedia redirection for cloud desktop conferencing
US10044788B2 (en) * 2015-11-17 2018-08-07 Wyse Technology L.L.C. Native client multimedia redirection
US10334075B2 (en) * 2016-05-23 2019-06-25 Citrix Systems, Inc. Virtual browser integration
EP3510719B1 (en) * 2016-11-18 2021-05-05 Ale International Videoconference server, client device, videoconference system and method
US10979785B2 (en) * 2017-01-20 2021-04-13 Hanwha Techwin Co., Ltd. Media playback apparatus and method for synchronously reproducing video and audio on a web browser
US11089349B2 (en) * 2017-01-20 2021-08-10 Hanwha Techwin Co., Ltd. Apparatus and method for playing back and seeking media in web browser
US10742706B1 (en) * 2017-03-20 2020-08-11 Amazon Technologies, Inc. Server-side rate control for adaptive bitrate streaming protocols
GB2562307A (en) * 2017-05-12 2018-11-14 Sky Cp Ltd Media content delivery
US10592417B2 (en) 2017-06-03 2020-03-17 Vmware, Inc. Video redirection in virtual desktop environments
US10523727B2 (en) * 2017-12-28 2019-12-31 Sling Media Pvt Ltd Adaptive bitrate optimization upon video streaming initialization
US10855755B2 (en) 2018-05-04 2020-12-01 Citrix Systems, Inc. WebRTC API redirection with fallbacks
CN109088887A (zh) * 2018-09-29 2018-12-25 北京金山云网络技术有限公司 一种流媒体解码的方法及装置
US10819817B2 (en) * 2019-02-04 2020-10-27 Dell Products L.P. HTML5 multimedia redirection
US11012485B1 (en) * 2020-01-02 2021-05-18 Microsoft Technology Licensing, Llc Multi-media redirection for media applications
US11012498B1 (en) * 2020-01-02 2021-05-18 Microsoft Technology Licensing, Llc Web browser multi-media redirection

Also Published As

Publication number Publication date
WO2021137983A1 (en) 2021-07-08
US11012498B1 (en) 2021-05-18
US11588881B2 (en) 2023-02-21
US20210258369A1 (en) 2021-08-19
EP4085641A1 (en) 2022-11-09
CN114902686A (zh) 2022-08-12

Similar Documents

Publication Publication Date Title
US11588881B2 (en) Web browser multi-media redirection
US11588875B2 (en) Multi-media redirection for media applications
US9930308B2 (en) Platform-agnostic video player for mobile computing devices and desktop computers
US9485305B2 (en) API platform that includes server-executed client-based code
US9203883B2 (en) Systems and methods for a client-side remote presentation of a multimedia stream
US10827004B2 (en) Native viewer use for service results from a remote desktop
KR101956411B1 (ko) 복수의 서버로부터 클라이언트로의 단일 최종 사용자 경험 전달 기법
US8621069B1 (en) Provisioning a computing application executing on a cloud to a client device
JP7386990B2 (ja) ビデオ再生方法、装置、機器及びコンピュータプログラム
JP5808424B2 (ja) ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックス
CA2814420C (en) Load balancing between general purpose processors and graphics processors
US8638336B2 (en) Methods and systems for remoting three dimensional graphical data
JP5129151B2 (ja) マルチユーザ・ディスプレイ・プロキシ・サーバ
US9294549B2 (en) Client bandwidth emulation in hosted services
BR112021009629A2 (pt) método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória
US10834164B2 (en) Virtualizing audio and video devices using synchronous A/V streaming
US20180189090A1 (en) Exposing Hardware Work Queues as Virtual Devices in Virtual Machines
US10306021B1 (en) Streaming content to multiple clients
Liu et al. A VM-shared desktop virtualization system based on OpenStack
KR20240098763A (ko) DaaS를 위한 서버 장치 및 이의 동작 방법
Rodríguez‐Silva et al. Improving the virtualization of rich applications by combining VNC and streaming protocols at the hypervisor layer

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231017