(57)【要約】メディアデータを処理するための技術およびシステムを提供する。例えば、メディアコンテンツのマルチキャストストリームを受信することと、メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することとを含むことができる方法、装置、およびコンピュータ読取可能媒体を説明する。いくつかのケースでは、メディアコンテンツのマルチキャストストリームは、第１のメディアフォーマットから第２のメディアフォーマットにトランスコードされることができる。データフラグメントは、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、再生のためのコンピューティングデバイスのブラウザに送信されることができる。【選択図】図３
2021514167.tif 000002
【特許請求の範囲】
【請求項１】
メディアデータを処理する方法であって、
コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することと、
前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することと、
ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、前記メディアコンテンツのマルチキャストストリームのうちの１つ以上のデータフラグメントを、再生のための前記コンピューティングデバイスのブラウザに送信することと、を含む方法。
【請求項２】
前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることをさらに含み、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、請求項１に記載の方法。
【請求項３】
ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート上で前記メディアコンテンツのマルチキャストストリームのうちの前記１つ以上のデータフラグメントを受信することをさらに含み、前記１つ以上のデータフラグメントは、前記ウェブソケットプロトコルを使用して、前記ＨＴＴＰポートから前記ブラウザに送信される、請求項１に記載の方法。
【請求項４】
前記メディアコンテンツのマルチキャストストリームのうちの１つ以上のペイロードを解読することをさらに含む、請求項１に記載の方法。
【請求項５】
前記１つ以上のデータフラグメントを前記ブラウザに送信する前に、前記メディアコンテンツのマルチキャストストリームのうちの前記１つ以上のデータフラグメントを暗号化することをさらに含む、請求項１に記載の方法。
【請求項６】
前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記１つ以上のデータフラグメントを表示することをさらに含む、請求項１に記載の方法。
【請求項７】
前記メディアコンテンツのマルチキャストストリームの前記データフラグメントを記憶することをさらに含む、請求項１に記載の方法。
【請求項８】
前記メディアコンテンツのマルチキャストストリームのうちの１つ以上のビデオフレームを記憶することをさらに含む、請求項１に記載の方法。
【請求項９】
前記メディアコンテンツのマルチキャストストリームのうちの前記記憶された１つ以上のビデオフレームは、トランスコードされない、請求項８に記載の方法。
【請求項１０】
前記コンピューティングデバイスによって、前記ブラウザを使用して、前記記憶された１つ以上のビデオフレームを表示することをさらに含む、請求項８に記載の方法。
【請求項１１】
前記コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、
前記追加のメディアコンテンツのマルチキャストストリームのうちの１つ以上のビデオフレームを記憶することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記１つ以上のデータフラグメントを前記コンピューティングデバイスのディスプレイの第１の部分に表示することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記追加のメディアコンテンツのマルチキャストストリームのうちの前記記憶された１つ以上のビデオフレームを前記コンピューティングデバイスのディスプレイの第２の部分に表示することとをさらに含む、請求項１に記載の方法。
【請求項１２】
前記コンピューティングデバイスに関係付けられた性能データを取得することと、
前記コンピューティングデバイスに関係付けられたユーザデータを取得することと、前記ユーザデータは、前記コンピューティングデバイスのメディアプレーヤを使用してユーザによって視聴される１つ以上のタイプのチャネル、および、前記ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも１つを含み、
特定のチャネルが前記コンピューティングデバイス上で前記ユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得することとをさらに含み、前記品質推奨は、前記性能データおよび前記ユーザデータに基づく、請求項１に記載の方法。
【請求項１３】
前記性能データおよび前記ユーザデータをサーバに送ることと、
前記サーバから前記品質推奨を受信することとをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記トランスコーディング品質は、解像度、フレームレート、および、ビデオのビットレートのうちの少なくとも１つを含む、請求項１２に記載の方法。
【請求項１５】
前記品質推奨は、機械学習を使用して決定される、請求項１２に記載の方法。
【請求項１６】
前記機械学習は、ニューラルネットワークに基づく、請求項１５に記載の方法。
【請求項１７】
装置であって、
１つ以上のプロセッサと、
命令を含む１つ以上の非一時的コンピュータ読取可能記憶媒体とを備え、
前記命令は、前記１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、前記メディアコンテンツのマルチキャストストリームのうちの１つ以上のデータフラグメントを、再生のためのコンピューティングデバイスのブラウザに送信させる、装置。
【請求項１８】
命令をさらに含み、
前記命令は、前記１つ以上のプロセッサ上で実行されるとき、前記１つ以上のプロセッサに、
前記メディアコンテンツのマルチキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードさせ、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、請求項１７に記載の装置。
【請求項１９】
命令をさらに含み、
前記命令は、前記１つ以上のプロセッサ上で実行されるとき、前記１つ以上のプロセッサに、
ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート上で前記メディアコンテンツのマルチキャストストリームのうちの前記１つ以上のデータフラグメントを受信させ、前記１つ以上のデータフラグメントは、前記ウェブソケットプロトコルを使用して、前記ＨＴＴＰポートから前記ブラウザに送信される、請求項１７に記載の装置。
【請求項２０】
命令を含む非一時的機械読取可能記憶媒体中で有形に具現化されるコンピュータプログラム製品であって、
前記命令は、１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、前記メディアコンテンツのマルチキャストストリームの１つ以上のデータフラグメントを、再生のためのコンピューティングデバイスのブラウザに送信させる、コンピュータプログラム製品。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本願は、２０１８年２月１５日に出願された米国仮出願番号第６２／６３１，４８０号の利益を主張し、また、２０１８年１１月１日に出願された米国仮出願番号第６２／７５４，４４１号の利益を主張し、これらは両方とも、すべの目的のために、その全体が参照によりここに組み込まれている。
【分野】
【０００２】
[0002]本開示は、一般的にメディアコンテンツの配信および再生に関する。例えば、標準的なウェブブラウザおよび／または他の適切な再生プラットフォーム上で再生するための、メディアコンテンツの安全で、短い待ち時間の、帯域幅が最適化された配信を提供するためのシステム、方法、装置、およびコンピュータ読取可能媒体が提供される。
【概要】
【０００３】
[0003]本開示のある態様および特徴は、標準的なウェブブラウザおよび／または他の適切な再生プラットフォーム上で再生するためのメディアコンテンツの配信に関連する。例えば、コスト、待ち時間、フットプリント、および全体的なユーザ体験を損なうことなく、ならびにブラウザプラグインおよび／または拡張に依存する必要なくメディアコンテンツの再生をサポートするために、ここで説明するシステムおよび技術は、ネットワーク（例えば、企業ネットワークまたは他の組織ネットワーク、あるいは他の何らかの適切なネットワーク）を通して、任意のタイプのウェブベースブラウザおよび／または他のタイプのウェブベースメディアプレーヤーへのメディアコンテンツの配信および再生を提供する。いくつかの例では、メディアコンテンツは、ビデオおよびオーディオを有するデジタルインターネットプロトコル（ＩＰ）ベースのメディアストリーム、または他の適切なメディアコンテンツを含むことができる。ここで説明するシステムおよび技術は、単一のビデオまたは複数のビデオ（例えば、高精細度ビデオまたは他の適切なビデオコンテンツ）の短い待ち時間、滑らかな再生を可能にする。さまざまな例では、システムおよび技術は、異なるコンテンツ、マルチウィンドウサポート、オーディオサポート、メタデータサポート（例えば、Ｋｅｙ−Ｌｅｎｇｔｈ−Ｖａｌｕｅ（ＫＬＶ）メタデータ、ＳＴＡＮＡＧメタデータ、および／または他のタイプのメタデータ）、および暗号化サポート（例えば、高度暗号化規格（ＡＥＳ）または他の適切な暗号化規格）間の移行を可能にする。例えば、いくつかのケースでは、ここで説明するシステムおよび技術は、メディアコンテンツのオーディオおよびビデオが同期したままである、（単一のビデオを有する）単一のビューと（複数のビデオを有する）モザイクビューとの間で移行する能力を提供することができる。
【０００４】
[0004]少なくとも１つの例にしたがい、メディアデータを処理する方法を提供する。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。方法は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することをさらに含む。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることをさらに含む。方法は、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信することをさらに含む。
【０００５】
[0005]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置を提供する。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するようにさらに構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードするようにさらに構成され、トランスコードすることができる。プロセッサは、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信するようにさらに構成され、送信することができる。
【０００６】
[0006]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、１つ以上のプロセッサによって実行されるとき、１つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードさせ、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信させる。
【０００７】
[0007]別の例において、ワイヤレス通信のための装置を提供する。装置は、メディアコンテンツのマルチキャストストリームを受信する手段を含む。装置は、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段をさらに含む。装置は、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコーディングする手段をさらに含む。装置は、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信する手段をさらに含む。
【０００８】
[0008]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、装置またはコンピューティングデバイスのローカルポート（例えば、ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート）上でトランスコードされたメディアコンテンツのユニキャストストリームを受信することを含むことができる。このようなケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、ウェブソケットプロトコルを使用して、ポート（例えば、ＨＴＴＰポート）からブラウザに送信される。
【０００９】
[0009]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのマルチキャストストリームのうちの１つ以上のペイロードを解読することを含むことができる。
【００１０】
[0010]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザ（またはブラウザによって実現されるメディアプレーヤー）を使用して、トランスコードされたメディアコンテンツのユニキャストストリームを表示することを含むことができる。
【００１１】
[0011]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することを含むことができる。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされない。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザ（またはブラウザによって実現されるメディアプレーヤー）を使用して、記憶された１つ以上のビデオフレームを表示することを含むことができる。
【００１２】
[0012]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置において、追加のメディアコンテンツのマルチキャストストリームを受信することを含むことができる。このようなケースでは、プロセスは、コンピューティングデバイスまたは装置によって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することとを含む。このようなケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイス（または装置）によって、コンピューティングデバイス（または装置）のディスプレイの第１の部分にトランスコードされたメディアコンテンツのユニキャストストリームを表示することと、ブラウザを使用するコンピューティングデバイス（または装置）によって、コンピューティングデバイス（または装置）のディスプレイの第２の部分に追加のメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームを表示することとをさらに含むことができる。
【００１３】
[0013]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、（コンピューティングデバイスまたは装置によって）コンピューティングデバイス（または装置）のＣＰＵ消費量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができる。このような例では、フレームの数は、ＣＰＵ消費量に関係付けられている情報に応答して調節できる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００１４】
[0014]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００１５】
[0015]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによるランダムアクセスメモリ（ＲＡＭ）使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ＲＡＭ使用量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００１６】
[0016]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００１７】
[0017]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００１８】
[0018]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００１９】
[0019]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームからメタデータを抽出することを含むことができ、トランスコードされたメディアコンテンツのユニキャストストリームはメタデータを含まない。メタデータは、ＫＬＶメタデータ（例えば、フレームアラインされた、フレーム精度（frame-accurate）ＫＬＶメタデータ）、または他の適切なメタデータを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームから抽出されたメタデータをトランスコードされたメディアコンテンツのユニキャストストリームと組み合わせることと、組み合わされた抽出されたメタデータとトランスコードされたメディアコンテンツのユニキャストストリームとを表示することとを含むことができる。
【００２０】
[0020]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、マルチキャストストリームのうちの１つ以上のペイロードを、コンピューティングデバイス（または装置）のメモリに記録することを含むことができる。
【００２１】
[0021]いくつかのケースでは、プラグインは、メディアコンテンツのユニキャストストリームを生成するために、およびメディアコンテンツのユニキャストストリームをトランスコードするために使用されない。
【００２２】
[0022]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの１つ以上のパケットに対して１つ以上のタイムスタンプを生成することと、１つ以上のタイムスタンプをメディアコンテンツのユニキャストストリームのうちの１つ以上のパケットに関係付けることとを含むことができる。このような例では、メディアコンテンツのユニキャストストリームのオーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを追加することができる。
【００２３】
[0023]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ビデオのマルチキャストストリームを受信するための要求を生成することと、ビデオソースに要求を送信することとを含むことができ、ビデオのマルチキャストストリームは、要求に応答して受信される。
【００２４】
[0024]いくつかの例では、メディアコンテンツは、ビデオコンテンツおよびオーディオコンテンツを含む。
【００２５】
[0025]少なくとも１つの他の例にしたがうと、メディアデータを処理する方法が提供される。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することとを含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することをさらに含むことができる。方法は、ウェブソケットプロトコルを使用する１つ以上のＴＣＰチャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを再生のためのブラウザに送信することをさらに含むことができる。
【００２６】
[0026]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置が提供される。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するように構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶するように構成され、記憶することができる。プロセッサは、ウェブソケットプロトコルを使用する１つ以上のＴＣＰチャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを再生のためのブラウザに送信するように構成され、送信することができる。
【００２７】
[0027]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、１つ以上のプロセッサによって実行されるとき、１つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶させ、ウェブソケットプロトコルを使用する１つ以上のＴＣＰチャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを再生のためのブラウザに送信させる。
【００２８】
[0028]別の例において、メディアデータを処理するための装置を提供する。装置は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信する手段と、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段とを含む。装置は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶する手段をさらに含む。装置は、ウェブソケットプロトコルを使用する１つ以上のＴＣＰチャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを再生のためのブラウザに送信する手段をさらに含む。
【００２９】
[0029]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザを使用して、記憶された１つ以上のビデオフレームを表示することを含むことができる。
【００３０】
[0030]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることを含むことができる。このような例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ウェブソケットプロトコルを使用して少なくとも１つのＴＣＰチャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのブラウザに送信することを含むことができる。このような例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザを使用してトランスコードされたメディアコンテンツのユニキャストストリームを表示することを含むことができる。いくつかのケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、アクティブストリームとしてのメディアコンテンツの選択に応答して、記憶された１つ以上のビデオフレームの代わりにブラウザを使用して表示される。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされない。
【００３１】
[0031]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイス（または装置）によって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することとを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイス（または装置）によって、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイス（または装置）によって、トランスコードされたメディアコンテンツのユニキャストストリームをアクティブストリームとしてコンピューティングデバイス（または装置）のディスプレイの第１の部分に表示することと、ブラウザを使用するコンピューティングデバイス（または装置）によって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームをコンピューティングデバイス（または装置）のディスプレイの第２の部分に表示することとをさらに含むことができる。
【００３２】
[0032]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイス（または装置）によって、追加のメディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることを含むことができる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第２の部分に表示されたコンテンツの選択に対応する入力を受信することを含むことができ、コンテンツは、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを含む。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第２の部分に表示されたコンテンツの選択に応答して、トランスコードされた追加のメディアコンテンツのユニキャストストリームを、コンピューティングデバイスのディスプレイの第２の部分にアクティブストリームとして表示することを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第２の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第１の部分にメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームを表示することをさらに含むことができる。
【００３３】
[0033]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、（コンピューティングデバイスまたは装置によって）コンピューティングデバイス（または装置）のＣＰＵ消費量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができる。このような例では、フレームの数は、ＣＰＵ消費量に関係付けられている情報に応答して調節できる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００３４】
[0034]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００３５】
[0035]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによるランダムアクセスメモリ（ＲＡＭ）使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ＲＡＭ使用量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００３６】
[0036]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００３７】
[0037]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【００３８】
[0038]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【００３９】
[0039]少なくとも１つの他の例にしたがうと、メディアデータを処理する別の方法が提供される。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することをさらに含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームをデータフラグメントに分割することと、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントを再生のためのブラウザに送信することとをさらに含むことができる。
【００４０】
[0040]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置が提供される。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するように構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームをデータフラグメントに分割するように構成され、分割することができる。プロセッサは、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、メディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントを再生のためのブラウザに送信するように構成され、送信することができる。
【００４１】
[0041]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、１つ以上のプロセッサによって実行されるとき、１つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームをデータフラグメントに分割させ、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、メディアコンテンツのうちのユニキャストストリームの１つ以上のデータフラグメントを再生のためのブラウザに送信させる。
【００４２】
[0042]別の例において、ワイヤレス通信のための装置を開示する。装置は、メディアコンテンツのマルチキャストストリームを受信する手段を含む。装置は、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段をさらに含むことができる。装置は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームをデータフラグメントに分割する手段をさらに含むことができる。装置は、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、メディアコンテンツのうちのユニキャストストリームの１つ以上のデータフラグメントを再生のためのブラウザに送信する手段をさらに含むことができる。
【００４３】
[0043]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることを含むことができる。メディアコンテンツのユニキャストストリームを分割することは、トランスコードされたメディアコンテンツのユニキャストストリームをデータフラグメントに分割することを含むことができる。
【００４４】
[0044]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート上でメディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントを受信することを含むことができる。１つ以上のデータフラグメントは、ウェブソケットプロトコルを使用してＨＴＴＰポートからブラウザに送信される。
【００４５】
[0045]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのマルチキャストストリームのうちの１つ以上のペイロードを解読することを含むことができる。
【００４６】
[0046]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、１つ以上のデータフラグメントをブラウザに送信する前に、メディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントを暗号化することを含むことができる。
【００４７】
[0047]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントを表示することを含むことができる。
【００４８】
[0048]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのデータフラグメントを記憶することを含むことができる。
【００４９】
[0049]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することを含むことができる。いくつかのケースでは、メディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされない。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによって、ブラウザを使用して、記憶された１つ以上のビデオフレームを表示することを含むことができる。
【００５０】
[0050]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することと、ブラウザを使用するコンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの１つ以上のデータフラグメントをコンピューティングデバイスのディスプレイの第１の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第２の部分に表示することとを含むことができる。
【００５１】
[0051]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスに関係付けられた性能データを取得することと、ユーザデータは、コンピューティングデバイスのメディアプレーヤーを使用してユーザによって視聴される１つ以上のタイプのチャネル、および、ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも１つを含み、コンピューティングデバイスに関係付けられたユーザデータを取得することと、特定のチャネルがコンピューティングデバイス上でユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得することとを含むことができ、品質推奨は、性能データおよびユーザデータに基づく。
【００５２】
[0052]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、性能データおよびユーザデータをサーバに送ることと、サーバから品質推奨を受信することとを含むことができる。
【００５３】
[0053]いくつかの例では、トランスコーディング品質は、解像度、フレームレート、およびビデオのビットレートのうちの少なくとも１つを含む。
【００５４】
[0054]いくつかの例では、品質推奨は、機械学習を使用して決定される。いくつかのケースでは、機械学習はニューラルネットワークに基づく。
【００５５】
[0055]本概要は、請求項中に記載されている主題事項のキーまたは本質的な特徴を識別することを意図しておらず、請求項中に記載されている主題事項の範囲を独立して決定するようにも意図していない。本特許の明細書全体の適切な部分、任意のまたはすべての図面、および各請求項を参照することによって、主題事項を理解すべきである。
【００５６】
[0056]上記は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照するとより明らかになるだろう。
【図面の簡単な説明】
【００５７】
[0057]本出願の例示的な実施形態は、以下の図面を参照して以下で詳細に説明する。
【図１】[0058]  図１は、いくつかの例にしたがう、例示的なシステムアーキテクチャを示すブロックダイヤグラムである。
【図２】[0059]  図２は、いくつかの例にしたがう、ビデオコンテンツを処理するためにコンピューティングデバイスによって使用されるコンポーネントの例を示すブロックダイヤグラムである。
【図３】[0060]  図３は、いくつかの例にしたがう、ビデオコンテンツを処理するためにコンピューティングデバイスによって使用されるコンポーネントの別の例を示すブロックダイヤグラムである。
【図４】[0061]  図４は、いくつかの例にしたがう、トランスポートストリームの異なるペイロードダイヤグラムを示す概念のダイヤグラムである。
【図５Ａ】[0062]  図５Ａは、マルチユニキャストビデオ配信システムの例を示すダイヤグラムである。
【図５Ｂ】[0063]  図５Ｂは、いくつかの例にしたがう、マルチキャストビデオ配信システムの例を示すダイヤグラムである。
【図６】[0064]  図６は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する例示的なディスプレイを図示するピクチャである。
【図７】[0065]  図７は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する別の例示的なディスプレイを図示するピクチャである。
【図８】[0066]  図８は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する別の例示的なディスプレイを図示するピクチャである。
【図９】[0067]  図９は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの例を図示するフローダイヤグラムである。
【図１０】[0068]  図１０は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの別の例を図示するフローダイヤグラムである。
【図１１】[0069]  図１１は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの別の例を図示するフローダイヤグラムである。
【図１２】[0070]  図１２は、いくつかの例にしたがう、コンピュータシステムの例のブロックダイヤグラムである。
【詳細な説明】
【００５８】
[0071]以下の記述では、説明の目的のために、本願の実施形態の徹底した理解を提供するために、特定の詳細を述べる。しかしながら、これらの特定の詳細なしに、さまざま実施形態を実施できることが理解されるだろう。図面および説明は、限定的なものではない。
【００５９】
[0072]次の説明は例示的な実施形態のみを提供するものであり、本開示の範囲、適用可能性、あるいは、コンフィギュレーションを限定することは意図されていない。むしろ、例示的な実施形態の次の説明は、例示した実施形態を実現することを可能にする説明を当業者に提供するだろう。添付の特許請求の範囲において述べるような本願の精神および範囲から逸脱することなく、要素の機能および構成においてさまざまな変更がなされてもよい。
【００６０】
[0073]以下の説明において、コンフィギュレーションの完全な理解を提供するために、特定の詳細が与えられている。しかしながら、実施形態がこれらの特定の詳細なしに実行されてもよいことが、当業者によって理解されるだろう。例えば、回路、システム、ネットワーク、プロセス、および、他のコンポーネントは、不必要な詳細で実施形態を曖昧にしないために、ブロックダイヤグラム形におけるコンポーネントとして示される。他の例では、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施形態を曖昧にすることを避けるために、不必要な詳細なしで示されている。
【００６１】
[0074]個々の実施形態は、プロセスとして説明されてもよいことにも留意すべきであり、これは、フローチャート、フローダイヤグラム、データフローダイヤグラム、構造ダイヤグラム、またはブロックダイヤグラムとして描かれる。フローチャートはシーケンシャルなプロセスとして動作を記述するかもしれないが、動作の多くは並行で、または同時に実行できる。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれない追加のステップを有することができる。プロセスは、方法、関数、手順、サブルーティン、サブプログラム、等に対応してもよい。プロセスが関数に対応する場合、その終了は、関数が呼び出し関数または主関数に戻ることに対応する。
【００６２】
[0075]「機械読取可能記憶媒体」または「コンピュータ読取可能記憶媒体」という用語は、ポータブルまたは非ポータブル記憶デバイス、光学記憶デバイス、ならびに、命令および／またはデータを記憶、包含、あるいは搬送することができるさまざまな他の媒体に限定されないが、これらを含んでいてもよい。機械読取可能記憶媒体またはコンピュータ読取可能記憶媒体は、データを記憶することができ、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および／または一時的電子信号を含まない、非一時的媒体を含んでいてもよい。非一時的媒体の例は、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）のような光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含んでいてもよいが、これらに限定されない。コンピュータプログラム製品は、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは、命令、データ構造、または、プログラムセグメントの任意の組み合わせを表してもよい、コードおよび／または機械実行可能命令を含んでいてもよい。コードセグメントは、情報、データ、引数、パラメータ、または、メモリコンテンツを、渡すおよび／または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データ、または、他のデータは、メモリの共有、メッセージの受け渡し、トークンの受け渡し、ネットワーク送信、または、他の送信技術を含む任意の適切な手段を使用して、受け渡しされ、転送され、送信されてもよい。
【００６３】
[0076]さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または、これらの任意の組み合わせによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント（例えば、コンピュータプログラム製品）は、機械読取可能媒体中に記憶されてもよい。プロセッサは必要なタスクを実行してもよい。
【００６４】
[0077]図のうちのいくつかにおいて描かれるシステムは、さまざまなコンフィギュレーションで提供されてもよい。いくつかの実施形態では、システムは、システムの１つ以上のコンポーネントがクラウドコンピューティングシステムにおける１つ以上のネットワークにわたって分散される分散システムとして構成されてもよい。
【００６５】
[0078]以下でさらに詳細に説明するように、本開示のある態様および特徴は、標準的なウェブブラウザおよび／または他の適切な再生プラットフォーム（例えば、ウェブベースのメディアプレーヤー、または、他の適切なタイプのメディアプレーヤー）上で再生するためのメディアコンテンツの処理および配信に関する。例えば、コスト、待ち時間、フットプリント、および全体的なユーザ体験を損なうことなく、ならびにブラウザプラグインおよび／または拡張に依存する必要なく、メディアコンテンツの再生をサポートするために、ここで説明するシステムおよび技術は、ネットワーク（例えば、企業ネットワークもしくは他の組織ネットワーク、または、他の何らかの適切なネットワーク）を通して、任意のタイプのウェブベースブラウザおよび／または他のタイプのウェブベースメディアプレーヤーへのメディアコンテンツの配信および再生を提供する。いくつかの例では、メディアコンテンツは、ビデオおよびオーディオを有するデジタルインターネットプロトコル（ＩＰ）ベースのメディアストリーム、または、他の適切なメディアコンテンツを含むことができる。ここで説明するシステムおよび技術は、単一のビデオまたは複数のビデオ（例えば、高精細度ビデオまたは他の適切なビデオコンテンツ）の短い待ち時間で滑らかな再生を可能にする。さまざまな例では、システムおよび技術は、異なるコンテンツと、マルチウィンドウサポートと、オーディオサポートと、メタデータサポート（例えば、ＫＬＶ（Ｋｅｙ−Ｌｅｎｇｔｈ−Ｖａｌｕｅ）メタデータ、ＳＴＡＮＡＧメタデータ、および／または、他のタイプのメタデータ）と、暗号化サポート（例えば、高度暗号化規格（ＡＥＳ）または、他の適切な暗号化規格）との間の移行を可能にする。例えば、以下でより詳細に説明するように、ここで説明するシステムおよび技術は、メディアコンテンツのオーディオおよびビデオが同期したままである、（単一のビデオを有する）単一のビューと（複数のビデオを有する）モザイクビューとの間で移行する能力を提供することができる。
【００６６】
[0079]インターネットプロトコル（ＩＰ）ベースのデジタルメディアの使用は、例えば、消費者、ブロードキャスト、政府、軍事、医療、企業、および教育セクタを含むほぼすべてのセクタにおいて指数関数的に成長している。デジタルメディアは、ビデオ、オーディオ、および／または、メタデータを含むことができる。テレビジョン（ＴＶ）チャネル、セキュリティビデオ、軍事戦術およびシチュエーションアウェアネスビデオ、ＩＰストリームにエンコードされているローカルに生成されたビデオ（例えば、企業ビデオ）のようなコンテンツとともに、とりわけ、任意のサイズの組織および／または他のエンティティは、重要な用途のためにこれらのメディアストリーム（ビデオストリームとも呼ばれる）にますます依存している。これらの組織および／またはエンティティは、このコンテンツを、デスクトップコンピュータ、ラップトップコンピュータ、移動体デバイス（例えば、移動体電話機、タブレット、ウェアラブルデバイス、および／または、他の適切な移動体デバイス）、および／または、他の適切なコンピューティングデバイスのような任意のコンピューティングデバイスからこれらのユーザに利用可能にすることが望ましく、ときには必要である。いくつかのケースでは、メディアコンテンツの消費は、組織および／またはエンティティの閉じたネットワーク内で、ならびに、建物またはサイト間の公衆ネットワークを通して、要求されることがある。
【００６７】
[0080]ネットワーク（例えば、組織のネットワーク）全体にわたるユーザへのメディアコンテンツの処理、配信、および、再生のための既存のソリューションは、いくつかの課題をもたらす。このような問題の１つの例は、フォーマット互換性である。例えば、メディアコンテンツ（ＴＶコンテンツ、ブロードキャストコンテンツ、ストリーミングコンテンツ、軍事コンテンツ、とりわけ、コンテンツのタイプ）は、典型的には、特定のフォーマット（例えば、ＭＰＥＧトランスポートストリームフォーマット、または他の適切なフォーマット）で生成され、これは、いくつかのデフォルトメディアプレーヤーによって再生することができない。デフォルトメディアプレーヤーの実例的な例には、Ａｐｐｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、およびＧｏｏｇｌｅ（登録商標）のような一般的なオペレーティングシステムベンダによって組み込まれるものが含まれる。結果として、既存のソリューションは、受信したメディアコンテンツを、典型的な情報テクノロジー（ＩＴ）環境によってネイティブにサポートされるメディアフォーマットにトランスコードする必要がある。ネイティブにサポートされるメディアフォーマットの実例的な例は、特に、アップルのＨＴＴＰライブストリーミング（ＨＬＳ）、Ａｄｏｂｅ（登録商標）フラッシュ、ＨＴＭＬ５を含む。例えば、トランスコーディングプロセスは、元のビデオコンテンツ（および場合によってはオーディオコンテンツ）をベースバンド非圧縮ビデオ（および存在する場合には非圧縮オーディオ）にデコードし、次いでコンテンツを新たなフォーマットに再エンコードすることを含むことができる。いくつかのケースでは、コンテンツは、ブラウザベンダによって定義されたコンテナにラップすることができる。ここで説明するように、「インターネットストリーミング」フォーマットのうちの１つにトランスコードした後、クライアントへの配信は、専用ストリームが各コンピューティングデバイス（例えば、ビューアまたはクライアントデバイス）に送られることを意味するユニキャストに基づく。例えば、ユニキャストストリームは、ＨＬＳ、ＨＴＭＬ５、またはＦｌａｓｈのような規格を使用する選択により「パッケージ」となることができる。
【００６８】
[0081]別の問題は、設備コストおよび障害点である。例えば、トランスコーディングプロセスは、ある機器（例えば、ソフトウェア、ハードウェア、または、ハードウェアおよびソフトウェアの両方）を必要とし、これは、資本的支出および運営費とともに、追加のフットプリントおよび計算能力を追加する。このようなオーバーヘッドは、組織またはエンティティによって消費されるコンテンツの量の増大とともに増大する。さらに、トランスコーディングプロセスは、データ経路における重要なコンポーネントであることから、このコンポーネントにおける障害は、ビデオ配信ソリューションのサービス品質に影響を及ぼす。例えば、トランスコーディングが複数のユーザに対するサーバで実行される場合、トランスコーディングプロセス中のサーバの障害は、多くのユーザに影響を及ぼすことがある。
【００６９】
[0082]さらに別の問題は、待ち時間（遅延とも呼ばれる）である。例えば、トランスコーディングプロセスは、完了するのにある量の時間を要し、これは、ビデオをレンダリングする準備ができているとき、および、受信した後の表示に遅延を追加する。さらに、トランスコーディングプロセスは、通常、ビデオを受信したプロトコル（例えば、ＭＰＥＧ、ＨＥＶＣ、ＡＶＣ、または他の適切なフォーマット）からインターネット指向プロトコル（例えば、ＨＬＳ、ＳＳＴ、Ｆｌａｓｈ、またはこれらに類するもの）にトランスコードする。このようなインターネット指向プロトコルは、ビデオ受信機（および／またはビデオプレーヤー）が、これらのストリーミングプロトコルが元々設計されたネットワーク環境であるインターネットを通してストリーミングするときに経験するかもしれない、低減されたサービス品質に対処し、調節することを可能にするために、内蔵バッファリングおよび／またはキャッシングを有している。低減されたサービス品質は、例えば、帯域幅の問題および／または他のネットワーク品質の問題に起因することがある。例えば、インターネットは、多くのグリッチおよび上下の帯域幅スパイクを経験する。バッファリング遅延または待ち時間は、ユーザが帯域幅の不連続性を経験せず、代わりにメディアコンテンツの連続再生を有するように、インターネット指向プロトコルにハードコーディングすることができる。
【００７０】
[0083]待ち時間は、数秒から３０秒（またはいくつかのケースではさらに長い）まで変動することがある。バッファリングおよび／またはキャッシングに関係付けられている待ち時間は、トランスコーディングプロセスに関係付けられている待ち時間よりもはるかに長くなることがある。例えば、トランスコーディングに必要な待ち時間は数ビデオフレームであることがあるが、バッファリングに関係付けられている待ち時間は数秒であることがある。例えば、ＨＬＳは、５秒のバッファリング（例えば、３０フレーム毎秒（ｆｐｓ）ビデオにおける約１５０ビデオフレームに相当する）を必要とすることがあり、これは、プロトコルにハードコーディングされることがある。大量の待ち時間は、例えば、とりわけ、重要な実験を監視すること、軍事ミッションにおけるターゲットを追跡すること、メディアデバイス上および／またはスポーツアリーナ内でライブスポーツゲームを見ること、医療処置を実行することのような、重要なタスクのためにリアルタイムビデオが必要とされるときに対処することが極めて困難であることがある。
【００７１】
[0084]帯域幅利用は、ネットワーク全体を通してユーザへのメディアコンテンツの処理、配信、および、再生とともに生じることがある別の問題である。ブラウザ上でネイティブ再生を達成するために使用される従来のインターネットストリーミングプロトコルの使用は、各視聴者に対して個々のユニキャストセッションの使用を指示する。各視聴者に対するユニキャストセッションのためのこのような要件は、多くのユーザ（例えば、数千、数万、数百または数千のユーザ、または、場合によってはそれ以上のユーザ）を有するかもしれない大きな組織に対する非効率な配信スキームを生成する。このようなケースでは、同じコンテンツが多数のユーザグループによって視聴されるときでさえ、各ユーザは、ストリームの別個のコピー（「ユニキャストストリーム」）を必要とし、したがって、ネットワークコアにオーバーヘッドを追加し、複雑で高価なオンプレミスインフラストラクチャを要求する。
【００７２】
[0085]別の問題は、エンタープライズコンテンツ保護サポートである。メディアコンテンツ消費組織またはエンティティの中でも特に、コンテンツプロバイダ（例えば、とりわけ、Ｃｏｍｃａｓｔ（登録商標）、ＤｉｒｅｃＴＶ（登録商標）、Ｄｉｓｈ（登録商標））、軍事ユニット、政府ユニット、病院は、インターネットプロトコルテレビ（ＩＰＴＶ）コンテンツを保護するために、高度暗号化規格（ＡＥＳ）１２８−２５６ビット暗号ブロッカ連鎖（ＣＢＣ）および／または電子符号表（ＥＣＢ）暗号化の使用を迅速に採用している。ＡＥＳ規格は、ブラウザ（例えば、ウェブブラウザまたは移動体ブラウザ）においてネイティブにサポートされていない。
【００７３】
[0086]さらに、あるメタデータを表示することは、問題を引き起こすことがある。例えば、軍事メタデータに関して、インテリジェンス、偵察、および監視（ＩＳＲ）用途では、運動画像標準化評議会（ＭＩＳＢ）Ｋｅｙ−Ｌｅｎｇｔｈ−Ｖａｌｕｅ（ＫＬＶ）メタデータの使用が、ビデオフレームに関連する重要な情報を搬送する主要な方法になっている。この規格は、プライベートパケット識別子（ＰＩＤ）としてＭＰＥＧトランスポートストリーム（ＴＳ）内で実現され、これは、任意のブラウザまたはブラウザベンダによって提供される任意のインターネット指向ストリーミングプロトコルによってサポートされる方法または規格ではない。
【００７４】
[0087]加えて、いくつかのプロバイダは、メディアコンテンツの元のフォーマット（例えば、ＭＰＥＧ、アドバンストビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）またはこれらに類するもの）をサポートし、インターネットグループ管理プロトコル（ＩＧＭＰ）を使用してマルチキャストセッションをスマートに管理するためにマルチキャストプロトコルおよびネットワークの能力を利用することができる第３者アプリケーションおよび／またはメディアプレーヤーを開発およびインストールすることを選んでいる。このような第３者アプリケーションは、組織が、メディアの元のフォーマット（例えば、ＭＰＥＧコンテンツ、ＡＶＣコンテンツ、ＨＥＶＣコンテンツ、または、これらに類するもの）のマルチキャストコンテンツをユーザの再生デバイスに直接配信することを可能にする。
【００７５】
[0088]いくつかのケースでは、プロバイダは、ユーザがライブＩＰビデオストリームにアクセスするためにこれらのデバイス上でブラウザを使用することができるように、ブラウザ拡張またはプラグインの形態で、これらのユーザにＭＰＥＧ（または他のコーディングフォーマット）マルチキャストプレーヤー／デコーダを提供することに関して、さらにより便利な経験を生み出した。ブラウザ拡張またはプラグインは、ブラウザにネイティブでない、ブラウザにカスタムアプリケーションを追加する方法である。１つの実例的な例では、ブラウザ拡張（またはプラグイン）は、ブラウザ拡張機能の開発を可能にするアプリケーションプログラミングインターフェース（ＡＰＩ）であるネットスケーププラグインアプリケーションプログラミングインターフェース（ＮＰＡＰＩ）にしたがって生成することができる。しかしながら、多くのブラウザプロバイダ（例えば、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ、Ｍｉｃｒｏｓｏｆｔ  Ｅｄｇｅ、およびＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ）によってなされたセキュリティベストプラクティスおよび決定の最近の進化は、ブラウザ拡張（例えば、ＮＰＡＰＩブラウザ拡張）のサポートを中止することを決定しており、ＭＰＥＧマルチキャストビデオをプロプライエタリブラウザプレーヤープリケーションで受け入れるためにこのアプローチ行うことは、前進を維持することを不可能にしている。ブラウザ拡張およびプラグインの概念はなくされたが、追加のロジックを依然としてブラウザに追加することができるが、追加のロジックは、あるセキュリティおよび脆弱性ベストプラクティスに適合しなければならない。ＪａｖａＳｃｒｉｐｔ（登録商標）は、ウェブブラウザでの使用が可能な、広く使用されているプロトコルのうちの１つである。
【００７６】
[0089]ここで説明するシステムおよび方法は、標準的なウェブブラウザおよび／または他の適切な再生プラットフォーム上で再生するためのメディアコンテンツの配信を提供する。本システムおよび方法は、既存のエンコーダ（例えば、ＭＰＥＧエンコーダ、ＡＶＣエンコーダ、ＨＥＶＣエンコーダ、または、これらに類するもの）および既存の帯域幅効率的マルチキャストストリームの継続的な使用を可能にする。ここで説明するシステムおよび方法によって提供されるソリューションは、企業およびそのユーザに、既存の機器を変更させる、および／または、メディアコンテンツを取り込み、ストリーミングする既存の方法を変更させる必要性を回避する。このソリューションはまた、マルチユニキャスト配信サーバの導入を強いる必要性、および、（各ユーザに対して異なるユニキャストストリームが必要とされることに起因して）過剰な数のビデオストリームによりネットワークを過負荷にする必要性を回避する。ここで説明するシステムおよび方法はまた、ブラウザとともにプラグインを使用する必要性を除去することができるが、帯域幅および処理の観点から非常に非効率的である、ビデオをトランスコードし、トランスコードされたビデオを個々の一意的なユニキャストストリームとして各コンピューティングデバイスに提供するためのサーバを必要としないように、受信したビデオストリームのフォーマットと同じフォーマットを利用する能力を依然として維持する。
【００７７】
[0090]  図１は、例示的なシステムアーキテクチャ１００を示すブロックダイヤグラムである。示すように、各コンピューティングデバイス（またはコンピュータ）は、ここで説明する技術にしたがって到来マルチキャストメディアコンテンツを処理することができるシステム１０２を含むことができる。システム１０２は、コンポーネントの中でも特に、メディアプレーヤー１０４、ブラウザ１０６、マルチキャスト処理システム１０８、オペレーティングシステム１１０を含む。１つの実例的な例では、ブラウザ１０６は、ＨＴＭＬ５ウェブブラウザまたは他の何らかの適切なウェブブラウザのようなウェブブラウザを含むことができる。メディアプレーヤー１０４は、ウェブプレーヤーとも呼ばれるブラウザベースのメディアプレーヤーを含むことができる。マルチキャスト処理システム１０８は、他のコンポーネントの中でも特に、解読およびローカルストリーミングエンジン１２８、メタデータエクストラクタ１３４、トランスコーダ１３０、およびフレームグラバー１３２を含むことができる。システム１０２の異なる例を、システム２０２および３０２を含む、図２および図３に関して以下で説明する。マルチキャスト処理システム１０８の他のコンポーネントの中でも特に、解読およびローカルストリーミングエンジン１２８、メタデータエクストラクタ１３４、トランスコーダ１３０、およびフレームグラバー１３２の機能の詳細を、図２および図３に関して以下で提供する。
【００７８】
[0091]図２は、マルチキャストメディアコンテンツを処理するためにコンピューティングデバイスによって使用されるシステム２０２のコンポーネントの例を示すブロックダイヤグラムである。システム２０２のコンポーネントは、電子回路もしくは他の電子ハードウェアを使用することを含むことができ、および／または、これらを使用して実現でき、これらは、ここで説明するさまざまな動作を実行するために、１つ以上のプログラム可能電子回路（例えば、マイクロプロセッサ、グラフィックス処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、中央処理ユニット（ＣＰＵ）、および／または他の適切な電子回路）を含むことができ、ならびに／あるいは、コンピュータソフトウェア、ファームウェア、または、これらの任意の組み合わせを使用することを含むことができ、および／または、これらを使用して実現できる。システム２０２は、あるコンポーネントを含むように示されているが、当業者は、システム２０２が、図２中に示されるものよりも多いまたは少ないコンポーネントを含むことができることを認識するだろう。
【００７９】
[0092]マルチキャスト処理システム２０８は、コンピューティングデバイス上にインストールでき、１つ以上のウェブブラウザ、メディアプレーヤー（例えば、ウェブプレーヤーまたは他のタイプのメディアプレーヤー）、オペレーティングシステム、および／または、コンピューティングデバイス上にインストールされた他のアプリケーションもしくはプログラムと対話することができるスタンドアロンソフトウェアパッケージであることがある。いくつかのケースでは、マルチキャスト処理システム２０８は、プラットフォームに依存せず、したがって、Ｍａｃｉｎｔｏｓｈ（登録商標）オペレーティングシステム、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＬＩＮＵＸ（登録商標）オペレーティングシステム、または、任意のタイプのオペレーティングシステムを実行するコンピューティングデバイスのような、任意のタイプのオペレーティングシステムを使用する任意のタイプのコンピューティングデバイスとともに動作することができる。
【００８０】
[0093]システム２０２は、マルチキャスト処理システム２０８を使用して、ＩＧＭＰプロトコル（または他の適切なプロトコル）を実現し、コンピューティングデバイスを通して所定のビューアによって要求される、任意の数のユーザデータグラムプロトコル（ＵＤＰ）マルチキャストトランスポートストリーム（ＴＳ）に参加することができる。例えば、図２中に示すにように、メディアコンテンツは、１つ以上のマルチキャストビデオトランスポートストリーム２２０として受信されることができる。例えば、１つ以上のマルチキャストビデオトランスポートストリーム２２０は、マルチキャストＵＤＰを介して受信されるＭＰＥＧトランスポートストリーム（ＭＰＥＧ−ＴＳ）であることがある。ＵＤＰ  ＭＰＥＧトランスポートストリームは、多くの環境（例えば、とりわけ、ビデオブロードキャスト、医療、軍事）において標準的であるが、１つ以上のマルチキャストビデオトランスポートストリーム２２０は、ＡＶＣ、ＨＥＶＣ、または、他の適切なビデオフォーマットのような、他の何らかの適切なフォーマットであることがある。
【００８１】
[0094]１つ以上のマルチキャストビデオトランスポートストリーム２２０のそれぞれ（各トランスポートストリームはマルチキャストＴＳと呼ばれる）は、（例えば、ＡＥＳまたは他の適切な暗号化方法を使用して暗号化された）暗号化ビデオおよび／またはオーディオデータを含むことができ、メタデータ（例えば、ＫＬＶメタデータまたは他の適切なメタデータ）も含むことができる。ここで説明するように、システム２０２は、任意のタイプの暗号化を扱うことができ、特定の暗号化規格（例えば、ＡＥＳ暗号化規格）がウェブブラウザにおいてネイティブにサポートされないときに生じる問題を軽減する。
【００８２】
[0095]図２に示すように、次いで、第１のデータ経路２２２および第２のデータ経路２２４を含む、２つのデータ経路が生成される。第１のデータ経路２２２を通して、マルチキャストＴＳは、デジタルコンテンツレコーダ２２６に送られ、これは、デジタルビデオレコーダ（ＤＶＲ）、あるいは、デジタルメディアコンテンツを記録できる他の適切なデバイスまたはコンポーネントを含むことができる。例えば、マルチキャストＴＳの元のマルチキャストＴＳペイロードは、（例えば、記録（例えば、ＤＶＲ）機能がオンにされたときに）メモリ中に記録されてもよい。メモリに記憶されているマルチキャストＴＳ記録は、ＴＳ内に存在する場合、その暗号化（例えば、ＡＥＳ暗号化）およびメタデータ（ＫＬＶ／ＳＴＡＮＡＧ）とともに、到来ビデオストリーム（および存在する場合、オーディオ）をそのまま保持する。
【００８３】
[0096]１つ以上のマルチキャストＴＳのための第２のデータ経路２２２は、解読およびローカルストリーミングエンジン２２８に向けられる。１つの実例的な例では、解読およびローカルストリーミングエンジン２２８は、ＡＥＳ解読器およびローカルストリーマを含むことができる。他の例では、他の何らかのタイプの暗号化を使用することができる。解読およびローカルストリーミングエンジン２２８は、（メディアプラットフォームサーバ２１２のユーザ許可およびキー管理システム２５０から）必要とされる暗号化キー（例えば、ＡＥＳ暗号化が使用される場合はＡＥＳキー、または他の暗号化方法に対しては他の適切な暗号化キー）を受信し、次いで、ＴＳペイロードのリアルタイム解読（例えば、ＡＥＳ暗号化が使用される場合はＡＥＳ解読、または他の暗号化方法に対しては他の適切な解読）を実行するアプリケーションをアクティブ化する。
【００８４】
[0097]次いで、解読およびローカルストリーミングエンジン２２８は、各解読された（または暗号化されていない）マルチキャストＴＳからローカルユニキャストストリームを生成する。解読およびローカルストリーミングエンジン２２８は、ローカルホスト（このプロセスが実行されるコンピューティングデバイス）上でユニキャストビデオおよびオーディオデータペイロードを安全に送信し、その結果、ローカルホスト上に存在する、または遠隔ネットワークコンピュータからペイロードにアクセスすることを試行する他のアプリケーションがデータを損なうことはない。いくつかのケースでは、マルチキャストＴＳは暗号化を含まないかもしれず、このケースでは、解読およびローカルストリーミングエンジン２２８は、解読を実行することなく、マルチキャストＴＳからユニキャストストリームを生成することができる。次に、解読されたローカルユニキャストストリームは、トランスコーダ２３０、フレームグラバー２３２、およびメタデータエクストラクタ２３４の３つの異なるアプリケーションによって並列に処理される。コンピューティングデバイス上で解読を実行し、コンピューティングデバイス自体によってのみ見られる解読されたローカルユニキャストストリームを生成することによって、解読された情報は、他のデバイスにさらされない。
【００８５】
[0098]トランスコーダ２３０は、解読およびローカルストリーミングエンジン２２８によって生成されたユニキャストストリームを、ブラウザ２０６によってサポートされるプロトコルに変換するために、トランスコーディングプロセスを実行する。例えば、プロトコルは、ブラウザ２０６上でメディアプレーヤー２０４を使用してメディアコンテンツ（例えば、ビデオおよび／またはオーディオコンテンツ）をレンダリングおよび表示するために使用されてもよいプロトコルであってもよい。いくつかの例では、ブラウザ２０６は、ｆＭＰ４データ構造を有するＡＶＣ（Ｈ．２６４）、ＭＰＥＧ−１、ＨＬＳ、ＳＳＴ、フラッシュ、または他の何らかの適切なフォーマットのような、複数のプロトコルをサポートすることができる。必要とされるとき、トランスコーダ２３０は、ユニキャストストリームをこれらのフォーマットのうちのいずれかにトランスコードすることができる。ユニキャストストリームがすでにブラウザ２０６によってサポートされるフォーマットであるとき、トランスコーディングプロセスは適用できず、データおよびストリーム中継器２６０に送ることができる。例えば、到来ビデオが、メディアプレーヤー３０４（例えば、ＨＴＭＬ５プレーヤー）によるレンダリングおよび／または表示のために必要に応じて処理できるフォーマットをまだ使用していない場合にのみに、トランスコーディングは生じてもよい。トランスコーディングプロセスの１つの実例的な例では、トランスコーダ２３０は、元のビデオおよびオーディオの、ｆＭＰ４データ構造を有するＡＶＣ（Ｈ．２６４）フォーマットへの（ＲＡＭにおいて実行される）ＲＡＭベースの変換を実行することができる。例えば到来ビデオがＨＥＶＣ（Ｈ．２６５）プロトコルを使用してエンコードされる場合、トランスコーダ２３０は、ＨＥＶＣコンテンツをデコードすることができ、次いで、ＡＶＣ（Ｈ．２６４）プロトコルを使用してビデオコンテンツを再エンコードして、ｆＭＰ４データ構造を有するＡＶＣコンテンツを生成することができる。いくつかのケースでは、トランスコーダ２３０は、ＭＰＥＧ−１Ｌ２プロトコルまたは他の適切なオーディオプロトコルを使用してオーディオコンテンツを再エンコードすることもできる。他の利点の中でも特に、より高い解像度（例えば、４Ｋ、８Ｋ、または他の解像度）に適切にスケーリングする能力を提供し、高品質の待ち時間結果の配信を可能にするので、ＡＶＣプロトコルを使用することができる。
【００８６】
[0099]別の実例的な例では、トランスコーダ２３０は、元のビデオおよびオーディオの、ＭＰＥＧ−１Ｌ２オーディオを有するＭＰＥＧ−１ビデオへのＲＡＭベースの変換を実行することができる。ＭＰＥＧ−１ビデオは、ＭＰＥＧ−１ペイロードフォーマットであってもよいが、他のＭＰＥＧ規格または他の規格の特徴を有してもよい。例えば、ＭＰＥＧ−１ビデオは、ＭＰＥＧ−１ペイロードフォーマットを有することができるが、高精細度、４Ｋ（またはウルトラＨＤ）解像度、またはこれらに類するもののような、ＭＰＥＧ−１規格によって定義される解像度よりも高い解像度を有することができる。いくつかのケースでは、ＨＬＳ、フラッシュ、およびバッファリングを必要とする他のインターネット指向プロトコルとは対照的に、ＭＰＥＧ−１は、リアルタイムで提供することができ、バッファリングを必要としないので、使用することができる。
【００８７】
[0100]他のインプリメンテーションでは、任意の適切なフォーマットがトランスコーディング出力として使用されてもよい。いくつかのケースでは、トランスコードされたビデオは、ＴＳに含まれていたメタデータを含まない。
【００８８】
[0101]いくつかのケースでは、トランスコーダ２３０によって実行されるトランスコーディングプロセスは、ＣＰＵおよびＲＡＭ利用を最適化するための以下で説明する技術に基づいて、品質（例えば、解像度変更、フレームレート変更、または両方）を変更するために使用できる。
【００８９】
[0102]フレームグラバー２３２は、１つ以上のユニキャストストリームから個々の高品質フレームを生成するためにフレームグラビングを実行する。あるケースでは、受信したＴＳのトランスコードされたビデオおよびオーディオをレンダリングおよび表示する代わりに、メディアプレーヤー２０４は、（メディアプレーヤー２０４によってデコードされた後に）フレームグラバー２３２によって記憶された高品質フレームをレンダリングおよび表示することができる。例えば、図６、図７、および図８に関して以下でさらに詳細に説明するように、ユニキャストストリームの（例えば、オーディオがレンダリングされていない）高品質ビデオフレームのみが、アクティブでないまたは焦点が合っていないビデオペインに対して表示されてもよい。このようなケースでは、フルユニキャストＴＳ（ビデオおよびオーディオを有し、いくつかのケースではメタデータを有する）は、アクティブでないビデオペインに対して表示されない。
【００９０】
[0103]メタデータエクストラクタ２３４は、１つ以上のユニキャストストリームからメタデータを抽出するためにメタデータ抽出を実行する。例えば、メタデータエクストラクタ２３４は、ユニキャストＴＳのビットストリームからの（例えば、１つ以上のパケットからの）どのペイロードがメタデータを含むかを認識するようにプログラムされてもよく、関連するペイロードを抽出してもよい。いくつかのケースでは、ユニキャストＴＳがブラウザ２０６の上位レイヤに送られるときに、メタデータをビデオコンテンツに埋め込むことができないかもしれず、または、埋め込むことが望ましくないかもしれないことから、メタデータが抽出される。したがって、メタデータ抽出は、１つ以上の元のマルチキャストＴＳからのメタデータが失われたり省略されたりしないことを保証する。抽出されたメタデータは、後に、ビデオおよび／またはオーディオがレンダリングされているときに、ビデオおよび／またはオーディオと再結合されてもよい。例えば、抽出されたメタデータは、ビデオおよびメタデータの同期再生を表示するためにメディアプレーヤー２０４によって使用されてもよい。メタデータを抽出し、次いで、処理パイプラインにおいて後でメタデータをビデオおよび／またはオーディオと再結合することによって、メタデータは、ディスプレイ上の任意のポジションに（例えば、ビデオの上のオーバーレイとして、ビデオを表示するウィンドウの外側の別個のウィンドウ中に、または他の適切なポジションまたはコンフィギュレーションで）ビデオとともに表示されてもよい。メタデータを抽出して再結合することにより、メタデータのある部分のみをビデオコンテンツと共に視聴するために選択することもできる。例えば、ユーザは、ビデオの所定の部分と共にどのメタデータを表示するかを選択することができる。
【００９１】
[0104]トランスコーディング、フレームグラビング、およびメタデータ抽出プロセスのうちの１つ以上において、タイムスタンピングは、コンピューティングデバイスのマルチキャスト処理システム２０８のタイムスタンパ２３８によって実行できる。例えば、タイムスタンパ２３８は、オーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを適用することができる。任意の適切なタイムスタンプを使用することができる。例えば、（例えば、ネットワーク上のすべてのデバイスに使用される）ネットワーククロックを使用して、各パケットに適用される時間を決定することができる。いくつかのケースでは、表示されたときに見えないピクセルロケーション（例えば、これらはフレームの見える部分の一部ではない、またはこれに類するものである）を有するビデオフレームの１つ以上の行がある。このようなケースでは、このようなピクセルロケーションにおいて、１つ以上のピクセル値がフレームに追加されてもよく、これは、各フレームのタイムスタンプを示すために使用されてもよい。オーディオおよびメタデータパケットについても同様のプロセスを実行することができる。異なるビデオ、オーディオ、および／またはメタデータデータを正確に同期させることが重要であることがある。例えば、環境のビデオをキャプチャするドローンアプリケーションでは、環境内の正しいロケーションが識別されるように、メタデータに含まれるロケーション座標情報（例えば、ＧＰＳ座標）が正しいビデオフレームと正確に同期されることが重要であることがある。
【００９２】
[0105]トランスコードされたユニキャストストリーム（例えば、ビデオおよびオーディオ）は、次いで、ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート上でピックアップされ、ランタイムシステム２３６によってウェブソケットエンジン２４０に渡されてもよく、ウェブソケットエンジンは、トランスコードされたメディアを上位ブラウザレイヤに伝搬する。例えば、ランタイムシステム２３６は、（例えば、１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して）トランスコードされたユニキャストストリームをブラウザ２０６に提供するために、ＨＴＴＰトラフィックをウェブソケットトラフィックに変換することができる。１つの実例的な例では、ランタイムシステム２３６は、ＪａｖａＳｃｒｉｐｔコードを実行するＮｏｄｅ．ｊｓランタイム環境、または他のタイプのコードを実行する他の適切なランタイムシステムを含むことができる。ランタイムシステム２３６は、（メディアプレーヤー２０４を使用して）ブラウザ２０６によってレンダリングするために、ユニキャストストリームのビデオフレーム（例えば、ＨＥＶＣビデオフレーム、ＡＶＣビデオフレーム、ＭＰＥＧ１ビデオフレーム、またはトランスコーディングプロセスに基づく別の適切なフォーマットを有するビデオ）を通す（tunnel）ために使用されてもよい。例えば、ランタイムシステム２３６（例えば、Ｎｏｄｅ．ｊｓランタイムシステム）は、トランスコーダ１３０からユニキャストストリームを受信することができ、ブラウザ２０６（したがって、メディアプレーヤー２０４）にユニキャストストリームを提供するために、ウェブソケットエンジン２４０中のウェブソケットへとユニキャストストリームを通すことができる。ウェブソケットは、２つのデバイス、アプリケーション、または互いにデータを送受信することができる他のエンティティ間のリアルタイム（またはほぼリアルタイム）全二重接続であり、ネットワークのファイアウォールおよびプロキシを通過することができるデバイス、アプリケーション、またはこれらに類するものの間の永続的な接続を提供する。例えば、ウェブソケットは、ブラウザとバックエンドサーバ（例えば、ウェブサーバ）との間のリアルタイムの永続的な接続を提供することができる。ウェブソケットエンジン２４０は、ウェブソケットを使用して、マルチキャスト処理システム２０８およびブラウザ２０６（およびメディアプレーヤー２０４）が互いに通信する方法を提供する。例えば、上述のように、ランタイムシステム２３６は、Ｎｏｄｅ＿ｊｓランタイム環境を含むことができる。このような例では、Ｎｏｄｅ．ｊｓランタイム環境は、コンピューティングデバイス上のマルチキャスト処理システム２０８において実行され、マルチキャスト処理システム２０８が、ウェブソケットを使用してブラウザ２０６と通信するサーバのように動作することを可能にする。
【００９３】
[0106]いくつかの例では、人工知能（ＡＩ）システム２６４は、所定のユーザのための最良のトランスコーディング設定を予測するために使用できる。ＡＩシステム２６４のさらなる詳細を以下に説明する。
【００９４】
[0107]図３は、マルチキャストメディアコンテンツを処理するためにコンピューティングデバイスによって使用されるシステム３０２のコンポーネントの例を示すブロックダイヤグラムである。システム３０２のコンポーネントは、ここで説明するさまざまな動作を実行するために、１つ以上のプログラム可能電子回路（例えば、マイクロプロセッサ、グラフィックス処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、中央処理ユニット（ＣＰＵ）、および／またはもしくは他の適切な電子回路）を含むことができる電子回路または他の電子ハードウェアを含むことができ、および／またはこれらを使用して実現されることができ、ならびに／あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組み合わせを含むことができ、および／またはこれらを使用して実現されることができる。システム３０２は、あるコンポーネントを含むように示されているが、当業者は、システム３０２が、図３に示されるものよりも多いまたは少ないコンポーネントを含むことができることを認識するだろう。
【００９５】
[0108]マルチキャスト処理システム３０８は、コンピューティングデバイス上にインストールされることができ、１つ以上のウェブブラウザ、メディアプレーヤー（例えば、ウェブプレーヤーまたは他のタイプのメディアプレーヤー）、オペレーティングシステム、および／またはコンピューティングデバイス上にインストールされた他のアプリケーションもしくはプログラムと対話することができるスタンドアロンソフトウェアパッケージであることがある。いくつかのケースでは、マルチキャスト処理システム３０８は、プラットフォームに依存せず、したがって、Ｍａｃｉｎｔｏｓｈ（登録商標）オペレーティングシステム、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＬＩＮＵＸ（登録商標）オペレーティングシステム、または他の何らかのオペレーティングシステムを実行するコンピューティングデバイスのような、任意のタイプのオペレーティングシステムを使用する任意のタイプのコンピューティングデバイスとともに動作することができる。
【００９６】
[0109]システム３０２は、マルチキャスト処理システム３０８を使用して、ＩＧＭＰプロトコル（または他の適切なプロトコル）を実現して、コンピューティングデバイスを通して所定のビューアによって要求される任意の数のユーザデータグラムプロトコル（ＵＤＰ）マルチキャストトランスポートストリーム（ＴＳ）に参加することができる。例えば、図３中に示すように、メディアコンテンツは、１つ以上のマルチキャストビデオトランスポートストリーム３２０として受信されることができる。１つの実例的な例では、１つ以上のマルチキャストビデオトランスポートストリーム３２０は、マルチキャストＵＤＰを介して受信されるＭＰＥＧトランスポートストリーム（ＭＰＥＧ−ＴＳ）であっることがある。ＵＤＰ  ＭＰＥＧトランスポートストリームは、多くの環境（例えば、とりわけ、ビデオブロードキャスト、医療、軍事）において標準的であるが、１つ以上のマルチキャストビデオトランスポートストリーム３２０は、ＨＥＶＣ（Ｈ．２６５）、ＡＶＣ（Ｈ．２６４）、またはＵＤＰを通してＴＳを使用してトランスポートされる他の適切なビデオフォーマットのような、他の何らかの適切なトランスポートストリームカプセル化ビデオ中にあることがある。
【００９７】
[0110]１つ以上のマルチキャストビデオトランスポートストリーム３２０のそれぞれ（各トランスポートストリームはマルチキャストＴＳと呼ばれる）は、（例えば、ＡＥＳまたは他の適切な暗号化方法を使用して暗号化された）暗号化ビデオおよび／またはオーディオデータを含むことができ、メタデータ（例えば、ＫＬＶメタデータまたは他の適切なメタデータ）も含むことができる。ここで説明するように、システム３０２は、任意のタイプの暗号化を扱うことができ、特定の暗号化規格（例えば、ＡＥＳ暗号化規格）がウェブブラウザにおいてネイティブにサポートされないときに生じる問題を軽減する。
【００９８】
[0111]図３に示すように、次いで、第１のデータ経路３２２および第２のデータ経路３２４を含む、２つのデータ経路が生成される。第１のデータ経路３２２を通して、マルチキャストＴＳは、デジタルビデオレコーダ（ＤＶＲ）または他の適切なソフトウェア、デバイス、および／または未加工のＵＤＰ  ＴＳをファイルに記録することができるコンポーネントを含むことができるデジタルコンテンツレコーダ３２６に送られる。例えば、マルチキャストＴＳの元のマルチキャストＴＳペイロードは、（例えば、記録（例えば、ＤＶＲ）機能がオンにされたときに）ローカルディスクドライブのようなメモリまたは記憶装置に記録されることができる。メモリに記憶されているマルチキャストＴＳ記録は、その暗号化（例えば、ＡＥＳ暗号化）およびメタデータ（ＫＬＶ／ＳＴＡＮＡＧ）とともに、ＴＳ中に存在する場合、到来ビデオストリーム（および存在する場合、オーディオ）をそのまま保持する。
【００９９】
[0112]１つ以上のマルチキャストＴＳのための第２のデータ経路３２２は、解読およびローカルストリーミングエンジン３２８に向けられる。１つの実例的な例では、解読およびローカルストリーミングエンジン３２８は、ＡＥＳ解読器およびローカルストリーマを含むことができる。他の例では、他の何らかのタイプの暗号化を使用することができる。マルチキャストＴＳが暗号化されるとき、解読およびローカルストリーミングエンジン３２８は、（メディアプラットフォームサーバ３１２のユーザ許可およびキー管理システム３５０から）必要とされる解読キー（例えば、ＡＥＳ暗号化が使用される場合はＡＥＳキー、または他の暗号化方法に対しては他の適切な暗号化キー）を受信し、次いで、ＴＳペイロードのリアルタイム解読（例えば、ＡＥＳ暗号化が使用される場合はＡＥＳ解読、または他の暗号化方法に対しては他の適切な解読）を実行する。マルチキャストＴＳが暗号化されていないとき、マルチキャストＴＳは、メモリ（例えば、ＲＡＭまたは他の記憶装置またはメモリ）および／またはトランスコーダに送られることができる。
【０１００】
[0113]解読されたペイロード（または暗号化されなかったトランスポートストリームに対するクリアペイロード）は、メモリバッファに蓄積されてもよい。データがトランスコードされる必要がある場合に、トランスコーダによって（例えば、直ちに、またはある時間期間の後に）バッファリングされたデータを取得することができる。以下で説明するように、バッファリングされたデータ（例えば、トランスコードされたデータ、またはトランスコードが実行されない場合は元のフォーマットのデータ）は、データおよびストリーム中継エンジン３６０によって取得できる。バッファリングプロセスは、ストリームが再生されている間、継続的に生じることができる。例えば、バッファは、メディアがデータおよびストリーム中継エンジン３６０によって受信および処理されると、継続的に充填および空にされることができる。解読されたストリームまたは元のストリームは、フレームグラバー３３２およびメタデータエクストラクタ３３４によって（例えば、並列に）処理されることもできる。
【０１０１】
[0114]トランスコーダ３３０は、受信したトランスポートストリームのビデオデータをブラウザ３０６によってサポートされるプロトコルに変換するためにトランスコーディングプロセスを実行する。例えば、プロトコルは、ブラウザ３０６上でメディアプレーヤー３０４を使用してメディアコンテンツ（例えば、ビデオおよび／またはオーディオコンテンツ）をレンダリングおよび表示するために使用できるプロトコルであることがある。いくつかの例では、ブラウザ３０６は、ＨＴＭＬ５メディアプレーヤーまたは他の適切なメディアプレーヤーによって再生できるｆＭＰ４データ構造を有するＡＶＣ（Ｈ．２６４）のような、複数のプロトコルをサポートすることができる。必要に応じて、トランスコーダ３３０は、トランスポートストリームをこれらのフォーマットのうちのいずれかにトランスコードすることができる。トランスポートストリームがブラウザ３０６によってサポートされるフォーマットに既にあるとき、トランスコーディングプロセスは適用されず、データおよびストリーム中継３６０に送られることができる。例えば、トランスコーディングは、到来ビデオが、メディアプレーヤー３０４（例えば、ＨＴＭＬ５プレーヤー）によるレンダリングおよび／または表示のために必要に応じて処理できるフォーマットをまだ使用していない場合にのみ生じてもよい。トランスコーディングプロセスの１つの実例的な例では、トランスコーダ３３０は、元のビデオおよびオーディオの、ｆＭＰ４データ構造を有するＡＶＣ（Ｈ．２６４）フォーマットへの（ＲＡＭにおいて実行される）ＲＡＭベースの変換を実行することができる。例えば、到来ビデオがＨＥＶＣ（Ｈ．２６５）プロトコルを使用してエンコードされる場合、トランスコーダ３３０は、ＨＥＶＣコンテンツをデコードすることができ、次いで、ＡＶＣ（Ｈ．２６４）プロトコルを使用してビデオコンテンツを再エンコードして、ｆＭＰ４データ構造を有するＡＶＣコンテンツを生成することができる。いくつかのケースでは、トランスコーダ３３０は、ＭＰＥＧ−１Ｌ２プロトコルまたは他の適切なオーディオプロトコルを使用して、オーディオコンテンツを再エンコードすることもできる。
【０１０２】
[0115]他のインプリメンテーションでは、任意の適切なフォーマットをトランスコーディング出力として使用できる。いくつかのケースでは、トランスコードされたビデオは、ＴＳ中に含まれていたメタデータを含まない。
【０１０３】
[0116]いくつかのケースでは、トランスコーダ２３０によって実行されるトランスコーディングプロセスは、ＣＰＵおよびＲＡＭ利用を最適化するために以下で説明される技術に基づいて、品質（例えば、解像度変更、フレームレート変更、または両方）を変更するために使用できる。
【０１０４】
[0117]フレームグラバー３３２は、１つ以上のトランスポートストリームから個々の高品質フレームを生成するためにフレームグラビングを実行する。あるケースでは、受信したＴＳのトランスコードされたビデオおよびオーディオをレンダリングおよび表示する代わりに、メディアプレーヤー３０４は、（メディアプレーヤー３０４によってデコードされた後に）フレームグラバー３３２によって記憶された高品質フレームをレンダリングおよび表示することができる。例えば、図６、図７、および図８に関して以下でさらに詳細に説明するように、トランスポートストリームの（例えば、オーディオがレンダリングされていない）高品質ビデオフレームのみが、アクティブでないまたは焦点が合っていないビデオペインに対して表示されてもよい。このようなケースでは、フルトランスポートストリームのビデオおよびオーディオ（およびいくつかのケースではメタデータを有する）は、アクティブでないビデオペインに対して表示されない。
【０１０５】
[0118]メタデータエクストラクタ３３４は、１つ以上のトランスポートストリーム（ＴＳ）からメタデータを抽出するためにメタデータ抽出を実行する。例えば、メタデータエクストラクタ３３４は、ＴＳのビットストリームからの（例えば、１つ以上のパケットからの）どのペイロードがメタデータを含むかを認識するようにプログラムされることができ、関連するペイロードを抽出できる。いくつかのケースでは、ＴＳがブラウザ３０６の上位レイヤに送られたときに、メタデータをビデオコンテンツに埋め込むことができないかもしれない、または埋め込むことが望ましくないかもしれないことから、メタデータは抽出される。
したがって、メタデータ抽出は、１つ以上の元のマルチキャストＴＳからのメタデータが失われたり省略されたりしないことを保証する。抽出されたメタデータは、後に、ビデオおよび／またはオーディオがレンダリングされているときに、ビデオおよび／またはオーディオと再結合できる。例えば、抽出されたメタデータは、ビデオおよびメタデータの同期再生を表示するためにメディアプレーヤー３によって使用できる。メタデータを抽出し、次いで、処理パイプラインにおいて後でメタデータをビデオおよび／またはオーディオと再結合することによって、メタデータは、ディスプレイ上の任意のポジションに（例えば、ビデオの上のオーバーレイとして、ビデオを表示するウィンドウの外側の別個のウィンドウ中に、または他の適切なポジションまたはコンフィギュレーションで）ビデオとともに表示できる。メタデータを抽出して再結合することはまた、メタデータのある部分のみをビデオコンテンツと共に視聴するために選択することを可能にする。例えば、ユーザは、ビデオの所定の部分と共にどのメタデータを表示するかを選択してもよい。
【０１０６】
[0119]トランスコーディング、フレームグラビング、およびメタデータ抽出プロセスのうちの１つ以上において、タイムスタンピングは、コンピューティングデバイスのマルチキャスト処理システム３０８のタイムスタンパ３３８によって実行できる。例えば、タイムスタンパ３３８は、オーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを適用することができる。任意の適切なタイムスタンプを使用することができる。例えば、（例えば、ネットワーク上のすべてのデバイスに使用される）ネットワーククロックを使用して、各パケットに適用される時間を決定することができる。いくつかのケースでは、表示されたときに見えないピクセルロケーション（例えば、これらはフレームの見える部分の一部ではない、またはこれに類するものである）を有するビデオフレームの１つ以上の行がある。このようなケースでは、１つ以上のピクセル値を、このようなピクセルロケーション中のフレームに追加でき、これは、各フレームに対するタイムスタンプを示すために使用できる。オーディオおよびメタデータパケットについて同様のプロセスを実行することができる。上述したように、異なるビデオ、オーディオ、および／またはメタデータデータを正確に同期させることは、いくつかの用途の中でも特に、外科用途、車両ナビゲーションのような、重要なプロセスであることがある。
【０１０７】
[0120]トランスコーダ３３０によってトランスコーディングプロセスが実行された後（または、すでにブラウザ３０６によってサポートされるフォーマットでメディアが受信されるときのような、トランスコーディングが必要とされないとき）、データおよびストリーム中継エンジン３６０は、トランスポートストリームを受信することができ、トランスポートストリームからメディアデータの小さなチャンクを生成することができる。チャンクは、ｆＭＰ４フォーマットのような、任意の適切なフォーマットを使用して生成することができる。例えば、データおよびストリーム中継エンジン３６０は、トランスポートストリームのデータをより小さなデータチャンクに分割することができる、ｆＭＰ４チャンクのようなデータチャンカーを含むことができる。データのチャンクは、データフラグメントと呼ぶこともできる。次いで、チャンクは、ウェブソケットエンジン３４０によって１つ以上のウェブソケットを通してブラウザ３０６に送られることができる。例えば、入ってくるビデオのフォーマットにかかわらず（すでにＡＶＣフォーマットである場合を除いて）、トランスコーダ３３０は、ビデオをＡＶＣ（Ｈ．２６４）ビデオにトランスコードすることができ、データおよびストリーム中継エンジン３６０は、ブラウザに配信することができるｆＭＰ４フォーマットを使用して、ビデオのチャンクを生成することができる。１つの実例的な例としてＡＶＣを使用したが、トランスコーダ３３０は、ビデオを任意の適切なビデオおよび／または画像フォーマットにトランスコードすることができる。
【０１０８】
[0121]上述のように、データおよびストリーム中継エンジン３６０は、データチャンカー（例えば、ｆＭＰ４チャンカー）を含むことができる。データチャンカーは、（例えば、メタデータが抽出され、タイムスタンプされた後）トランスコードされたオーディオ、ビデオ、およびメタデータを取得することができ、ウェブソケットを介してブラウザ３０６に送られるデータのチャンク（またはデータフラグメント）を生成することができる。いくつかのケースでは、データおよびストリーム中継エンジン３６0は、（例えば、ＡＥＳまたは他の適切な暗号化テクノロジーを使用して）データのチャンクを暗号化することもできる。例えば、データチャンクはローカルコンピューティングデバイスにのみ利用可能であるが、より高いレベルのセキュリティを提供し、任意の第３者アプリケーションがデータを潜在的に傍受および／またはインターセプトすることを防止するために、データは、ＲＡＭからウェブソケットを介してブラウザ３０６に渡されるときに依然として暗号化されることができる。
【０１０９】
[0122]１つの実例的な例では、上述のように、データおよびストリーム中継エンジン３６０のデータチャンカーは、到来ビデオデータ（例えば、１つ以上のマルチキャストＵＤＰトランスポートストリームまたは他のビデオデータ）からｆＭＰ４フラグメント（またはチャンク）を生成することができる。例えば、データおよびストリーム中継エンジン３６０のフラグメンタプロセスは、マルチキャストＵＤＰプロトコルを使用して配信される（例えば、ストリーミングされる）１つ以上のＭＰＥＧトランスポートストリーム（ＴＳ）を入力として受信することができる。ＭＰＥＧ  ＴＳは、オーディオ、ビデオ、ならびにプログラムおよびシステム情報プロトコル（ＰＳＩＰ）データの送信および記憶のために使用される、標準化されたデジタルコンテナフォーマットである。ＭＰＥＧ  ＴＳは、とりわけ、インターネットプロトコルテレビジョン（ＩＰＴＶ）、デジタルビデオブロードキャスティング（ＤＶＢ）、アドバンストテレビジョンシステム委員会（ＡＴＳＣ）のようなブロードキャストシステムにおいて使用されることができる。ＴＳは、ストリームを搬送する通信チャネルが劣化したときに送信インテグリティを維持するための誤り訂正および同期パターン特徴を有する、パケット化エレメンタリストリームをカプセル化するコンテナフォーマットを指定する。
【０１１０】
[0123]データおよびストリーム中継エンジン３６０のフラグメンタプロセスは、ＩＧＭＰ「ｊｏｉｎ」コマンドを使用してマルチキャストセッションに参加することができ、最初に、ストリーム中で利用可能なさまざまなプログラムをスキャンする。プログラムは、ビデオ、オーディオ、メタデータ、および／またはクローズドキャプション等の他の補助情報のような、１つまたは複数のタイプのものであることがある。
【０１１１】
[0124]ここで説明するように、トランスコーディングは、互換性のないソースストリームフォーマットに起因して、異なる解像度、フレームレート、および／またはビットレート（例えば、解像度、フレームレート、およびビットレートの組み合わせ）がこの特定のユーザまたはコンピューティングデバイスとともに使用するためにより最適であることを示すユーザ挙動および計算能力アナライザ３６２および／またはＡＩシステム３６４に起因して、および／または他の要因に起因して実行されてもよい。トランスコーディングが必要とされる場合、トランスコーディング命令がマルチキャスト処理システム３０８（例えば、トランスコーダ３３０）に与えられて、データおよびストリーム中継エンジン３６０のフラグメンテーションパイプラインにデータが流れる前に、必要とされるトランスコーディング作業を実行する。いくつかのケースでは、トランスコーディング命令は、メディアプラットフォームサーバ３１２によって与えられることがある。
【０１１２】
[0125]いったんビデオ、オーディオ、および／またはメタデータプログラムの正しいセットが識別され、所望のフォーマットであると決定されると、データおよびストリーム中継エンジン３６０は、多重化されたＵＤＰペイロードのリアルタイムの（例えば、データが受信されるとと）脱構築を実行し、以下を生成する：
【０１１３】
[0126]１．ｆＭＰ４ペイロード−ボックスｆｔｙｐ（ファイルタイプボックス）＋ｍｏｏｖ（ムービーボックス）を含む初期化セグメント。
【０１１４】
[0127]２．ｆＭＰ４ペイロード−ｍｏｏｆボックス（ムービーフラグメントボックス）＋ｍｄａｔボックス（メディアデータボックス）の対を含むデータセグメント。
【０１１５】
[0128]３．とりわけ、ＫＬＶ、ＳＴＡＮＡＧ、および／またはクローズドキャプションデータのような、システムペイロード補助メタデータ。例えば、解読およびローカルストリーミングエンジン３２８またはデータおよびストリーム中継エンジン３６０は、元のソースストリームからメタデータをリアルタイムで（例えば、データが受信されると）抽出することができ、ここで説明するように、メディアプレーヤー３０４（例えば、ブラウザプレーヤーまたは他の適切なメディアプレーヤー）が効果的に表示し、ビデオフレームに整列させることができるプロプライエタリな、フレームが正確な、タグ付けされたペイロードにメタデータをコード化することができる。
【０１１６】
[0129]図４は、ｆｔｙｐボックスとｍｏｏｖボックスとを有する初期化セグメントと、それぞれｍｏｏｆボックスとｍｄａｔボックスとを含む複数のデータセグメントとの例を図示するダイヤグラムである。ｆｔｙｐボックスは、通常、メディアファイル中にできるだけ早く配置され、ファイルを解析するのに最も適した（例えば、主要ブランドと呼ばれる）ファイルフォーマット仕様を識別する。例えば、メディアファイルは、特定のファイルフォーマット仕様にしたがってフォーマットされていてもよいが、仕様の他の版と互換性があってもよい。いくつかの例では、プレーヤーデバイスは、デバイスがファイルのコンテンツをデコードおよび表示することが可能であるかどうかを決定するためにメジャーブランドを使用することができる。いくつかの例では、デバイスのオペレーティングシステム（ＯＳ）のタイプおよび／またはバージョン、デバイスによって使用されるウェブブラウザのタイプおよび／またはバージョン、あるいはこれらの任意の組み合わせを使用して、デバイスがファイルのコンテンツをデコードおよび表示することが可能であるかどうかを決定することができる。例えば、このような例は、異なるフォーマットをサポートする異なるＯＳ−ブラウザの組み合わせにより有益であることがある。ｆｔｙｐはまた、ファイルフォーマット仕様のバージョンを示すために使用されることができるバージョン番号を含むことがある。いくつかのケースでは、ｆｔｙｐボックスは、ファイルが互換性のある他のブランドである、互換性のあるブランドのリストを含むことができる。いくつかのインプリメンテーションでは、メディアファイルは、１つのｆｔｙｐボックスのみを含む。
【０１１７】
[0130]ｍｏｏｖボックスは、ムービーヘッダボックスを含むことができ、１つ以上のトラックボックスとともに他のボックスを含むことができる。いくつかのケースでは、プレゼンテーションは、１つのファイルに含まれるか複数のファイルに含まれるかにかかわらず、ただ１つのムービーボックス（ｍｏｏｖ）を含むことができる。ムービーヘッダボックス（「ｍｖｈｄ」）は、メディアに依存せず、全体としてプレゼンテーションに関連している情報を含むことができる。例えば、ｍｖｈｄボックスは、情報の中でも、生成時間、修正時間、タイムスケール、および／またはプレゼンテーションの持続時間のような情報を含むことができる。ｍｖｈｄボックスは、プレゼンテーション中の次のトラックを識別する識別子も含むことができる。トラックボックス（「ｔｒａｋ」）は、プレゼンテーションに対するトラックについての情報を含むことができる。プレゼンテーションは、１つ以上のトラックを含むことができ、各トラックは、プレゼンテーション中の他のトラックから独立している。各トラックは、トラック中のコンテンツに特有の時間的および空間的情報を含むことができ、各トラックをメディアボックスに関係付けることができる。いくつかのケースでは、トラックヘッダボックス（「ｔｋｈｄ」）は、例えば、とりわけ、トラックの生成時間、修正時間、持続時間、トラック識別子、レイヤ識別子、グループ識別子、ボリューム、幅、および／または高さのような、トラックボックスに含まれるトラックの特性を指定することができる。トラックボックスは、ここで説明されていない他の適切なボックスを含むことができる。
【０１１８】
[0131]ムービーフラグメントボックス（「ｍｏｏｆ」）は、別の方法ではムービーボックスに記憶される追加の情報を含めることによってプレゼンテーションを拡張することができる。ｍｏｏｆボックスを使用して、プレゼンテーションを増分的に構築することができる。ｍｏｏｆボックスは、ムービーフラグメントヘッダボックスと、１つ以上のトラックフラグメントボックス（「ｔｒａｆ」）とともに、ここで説明しない他のボックスとを含むことができる。ムービーフラグメントヘッダボックス（「ｍｆｈｄ」）は、シーケンス番号を含むことができる。プレーヤーデバイスは、シーケンス番号を使用して、特定のフラグメントがプレゼンテーションのための次のデータを含むことを検証することができる。いくつかのケースでは、ファイルのコンテンツ、またはプレゼンテーションのためのファイルは、順不同でプレーヤーデバイスに提供されることができる。例えば、ネットワークパケットは、パケットが最初に送信された順序以外の順序で到着することができる。これらのケースでは、シーケンス番号は、フラグメントに対して正しい順序を決定する際にプレーヤーデバイスを支援することができる。ムービーフラグメントボックスは、トラック当たり０以上を含む（１つ以上のトラックフラグメントボックス「ｔｒａｆ」中に）トラックフラグメントのセットを含むことができる。トラックフラグメントは、０以上のトラックランを含むことができ、トラックランのそれぞれは、トラックについてのサンプルの連続ランを記述する。いくつかの例では、トラックフラグメントは、トラックにサンプルを追加することに加えて、トラックに空き時間を追加するために使用できる。
【０１１９】
[0132]メディアデータボックス（「ｍｄａｔ」）はメディアデータを含む。ビデオトラックでは、例えば、ｍｄａｔボックスは、ビデオフレーム、パケット、アクセスユニット、および／または他の形態のビデオデータを含むことができる。ｍｄａｔボックスは、代替的または追加的にオーディオデータを含むことができる。プレゼンテーションは、０以上のｍｄａｔボックスを含むことができ、いくつかのケースでは、１つ以上の個々のファイルに含めることができる。メディアデータは、メタデータによって記述される。１つの実例的な例では、ｍｄａｔボックス中のメディアデータは、ｔｒａｆボックス中に含まれるメタデータによって記述することができる。他の例では、ｍｄａｔボックス中のメディアデータは、ｍｏｏｖボックス中のメタデータによって記述されてもよい。いくつかの例では、メタデータは、ファイル内の絶対オフセットによって特定のメディアデータを指すことができ、ｍｄａｔボックス内のメディアデータヘッダおよび／またはフリースペースがスキップされることができる。
【０１２０】
[0133]いったん多重化されたＵＤＰペイロードが分解され、上記で説明したデータチャンクおよびメタデータが抽出および／または生成されると、データおよびストリーム中継エンジン３６０は、時間タグ付けおよびパケットカウントタグ付けを使用してオーディオ、ビデオ、メタデータ同期を確実にするために使用されるプロプライエタリペイロードで（例えば、メタデータ、ビデオ同期およびビデオオーバーレイグラフィックスのための命令で）上記のｆｍｐ４ペイロード（例えば、初期化セグメントおよびデータセグメント）をすべてパックすることができ、（例えば、ウェブソケットエンジン３４０によって実現される）ウェブソケットを使用して、パッケージ化されたデータをブラウザアプリケーションレイヤ（例えば、ブラウザ３０６）に送ることができる。
【０１２１】
[0134]次いで、ブラウザ３６０は、（例えば、ＪａｖａＳｃｒｉｐｔを使用して）パッケージ化されたデータを処理することができる。例えば、ブラウザ３６０は、メディアソース拡張（ＭＳＥ）を使用してＨＴＭＬ＜ｖｉｄｅｏ＞タグで表示するためにｆＭＰ４データを分離することができる。ＭＳＥは、ＪａｖａＳｃｒｉｐｔが、ＨＴＭＬ５ビデオおよびオーディオをサポートするウェブブラウザ内のメディアコーデックにバイトストリームを送ることを可能にするワールドワイドウェブコンソーシアム（Ｗ３Ｃ）仕様である。１つの例では、ＭＳＥは、ストリーミングメディアのためのクライアント側プリフェッチおよびバッファリングコードを完全にＪａｖａＳｃｒｉｐｔで実現することを可能にする。ＭＳＥは、実例的な例として使用される。当業者であれば、他の何らかの適切な仕様も使用できることを認識するだろう。ブラウザ３６０は、メタデータ（例えば、ＫＬＶおよび／または他のメタデータ）を取得し、ＷｅｂＧＬを使用してキャンバス上にメタデータを表示して、ビデオコンテンツ上にメタデータをオーバーレイすることができる。ＷｅｂＧＬは、プラグインを使用せずにウェブブラウザ内で対話型２Ｄおよび／または３ＤグラフィックスをレンダリングするためのＪａｖａＳｃｒｉｐｔ  ＡＰＩである。いくつかのケースでは、ブラウザ３６０は、ウェブビデオテキストトラックフォーマット（ＷｅｂＶＴＴ）をとることができ、＜ｖｉｄｅｏ＞タグにアタッチされたＨＴＭＬ＜ｔｒａｃｋ＞要素を操作する。
【０１２２】
[0135]メディアプレーヤー３０４が複数のビデオストリームを処理しているとき、上記で説明したブラウザプロセスは、各ストリームに対して並列に実行できる。いくつかのケースでは、複数のストリームのライブデコードの間にローカルユーザの機械のＣＰＵおよびＲＡＭの最適化を保証するために、マルチキャスト処理システム３０８は、メディアプラットフォームサーバ３１２と継続的または周期的に通信して、どのストリームが（解像度、フレームレート、および／またはビットレートを含む）どの品質にトランスコードされるかを決定することができ、その結果、デコードされている他のストリームよりもビデオ品質に関してより高い優先度をとることができる別のビデオストリームに焦点が変更されるまで、ユーザは、アクティブビデオに対する最高品質を、および場合によっては２次ビデオペイン上でより低い品質を受信する。
【０１２３】
[0136]いくつかのケースでは、上記で着目したように、受信したマルチキャストコンテンツ（例えば、ＭＰＥＧトランスポートストリームのようなトランスポートストリーム）は、デジタルコンテンツレコーダによって記録できる。いくつかのケースでは、デジタルコンテンツレコーダ２２６は、データのチャンク（例えば、ｆＭＰ４チャンク）を記録することができる。いくつかのインプリメンテーションでは、受信したマルチキャストコンテンツおよびデータのチャンクを記録することができる。他のインプリメンテーションでは、受信したマルチキャストコンテンツは、データのチャンクが記録されるときに記録されない。データのチャンクを記録することは、（例えば、ＤＶＲシナリオでは、ライブテレビジョンコンテンツを一時停止し、次いで一時停止されたポジションからチャネルのライブ進行まで早送りするとき）ライブ再生と記録された再生との間の迅速な移行を可能にするという利点を提供することができる。メディアプレーヤー３０４および／またはブラウザ３０６プレーヤーは、記憶されたデータのチャンク（例えば、ＭＰ４チャンク）にアクセスすることができ、ブラウザ３０６で再生できる前に事前処理（例えば、トランスコーディングおよびチャンキング）を必要とする元の未加工のマルチキャストコンテンツを使用することとは対照的に、ライブデータのチャンクにシームレスに移行することができる。
【０１２４】
[0137]ウェブソケットエンジン３４０は、メディアデータのチャンク（またはデータフラグメント）を上位ブラウザレイヤに送ることができ、上位ブラウザレイヤは、トランスコーディングが必要とされない場合、トランスコーディングされたメディアまたはトランスコーディングされていないメディアを含むことができる。上述のように、ウェブソケットは、２つのデバイス、アプリケーション、または互いにデータを送受信することができる他のエンティティ間のリアルタイム（またはほぼリアルタイム）全二重接続であり、ネットワークのファイアウォールおよびプロキシを通過することができるデバイス、アプリケーション、またはこれらに類するものの間の永続的接続を提供する。例えば、ウェブソケットは、ブラウザとバックエンドサーバ（例えば、ウェブサーバ）との間のリアルタイムの永続的な接続を提供することができる。ウェブソケットエンジン３４０は、ウェブソケットを使用して、マルチキャスト処理システム３０８およびブラウザ３０６（およびメディアプレーヤー３０４）が互いに通信する方法を提供する。
【０１２５】
[0138]いくつかの例では、人工知能（ＡＩ）システム３６４は、所定のユーザのに対する最良のトランスコーディング設定を予測するために使用できる。ＡＩシステム３６４のさらなる詳細を以下に説明する。
【０１２６】
[0139]いくつかのケースでは、マルチキャスト処理システム（例えば、マルチキャスト処理システム２０８および／またはマルチキャスト処理システム３０８）はまた、メディアプラットフォームサーバ（例えば、メディアプラットフォームサーバ２１２および／またはメディアプラットフォームサーバ３１２）の再生シンクロナイザ（例えば、再生シンクロナイザ２５２および／または再生シンクロナイザ３５２）に性能データを報告することができる。いくつかのインプリメンテーションでは、マルチキャスト処理システム２０８は、ランタイムシステム２３６から再生シンクロナイザ２５２に性能データを報告するために、全二重、プロプライエタリ、およびセキュアな通信プロトコルを使用することができる。例えば、マルチキャスト処理システム２０８は、ランタイムシステム２３６から再生シンクロナイザ２５２に性能データを報告することができる。別の例では、マルチキャスト処理システム３０８は、データおよびストリーム中継３６０から再生シンクロナイザ３５２に性能データを報告することができる。いくつかのケースでは、以下でより詳細に説明されるように、ユーザ挙動および計算能力アナライザ（例えば、ユーザ挙動および計算能力アナライザ２６２および／またはユーザ挙動および計算の能力アナライザ３６２）は、計算能力情報をＡＩシステム２６４に提供することができる。性能データは、ＣＰＵ消費、ランダムアクセスメモリ（ローカルコンピュータのメモリであるＲＡＭ）使用、ビデオを再生するメディアプレーヤー（例えば、メディアプレーヤー２０４および／またはメディアプレーヤー３０４）およびブラウザ（例えば、ブラウザ２０６および／またはブラウザ３０６）によって使用されるリソース、（例えば、タイムスタンプ情報に基づいて）ウェブソケットエンジン２４０および／または３４０に送られているビデオおよびオーディオペイロード、いくつのビデオストリームが（例えば、同時に）処理されているか、および／または他の情報のような、コンピューティングデバイスおよび／またはメディア再生に関連する情報を含むことができる。性能データ情報は、メディアプラットフォームサーバ（例えば、メディアプラットフォームサーバ２１２および／またはメディアプラットフォームサーバ３１２）によって使用されて、隣接するクライアント上でのビデオレンダリングおよび再生を加速すること、（例えば、再生シンクロナイザによる）同期再生を保証すること、および、場合によっては、互いに近くに座っている視聴者によって視聴されているコンピューティングデバイスによって同じビデオコンテンツが再生されているときの任意のエコーの除去を保証することのような１つ以上の機能、または他の機能を実行することができる。メディアプラットフォームサーバ（例えば、メディアプラットフォームサーバ２１２および／またはメディアプラットフォームサーバ３１２）は、システム（例えば、システム２０２および／またはシステム３０２）の一部ではなく、システム２０２および／または３０２がインストールされるコンピューティングデバイスから遠隔にあることがあることに留意されたい。いくつかのケースでは、メディアプラットフォームサーバは、１つ以上のクラウドコンピューティングデバイス、またはコンピューティングデバイスから遠隔に位置付けられている遠隔サーバを使用して実現できる。
【０１２７】
[0140]フレームグラバー（例えば、フレームグラバー２３２および／またはフレームグラバー３３２）によって取り込まれたフレームは、ウェブソケットエンジン（例えば、ウェブソケットエンジン２４０および／またはウェブソケットエンジン３４０）に直接送ることができ、必要とされるときにメディアプレーヤー２０４および／またはメディアプレーヤー３０４にリアルタイムで伝搬することができる（例えば、ブラウザ２０６および／または３０６によって実行される）。メディアプレーヤーは、これらのフレームを使用して、ユーザが再生することを選んだが、アクティブオーディオも含む「アクティブビデオ」（または「焦点ビデオ」）として使用されていない１つ以上の追加のＩＰソースストリームのフルモーションビデオ体験を生成することができる。モザイクビューにおけるアクティブビデオ対非アクティブビデオに関するさらなる詳細は、以下でより詳細に説明する。
【０１２８】
[0141]いくつかのケースでは、ビデオを再生するブラウザおよび／またはメディアプレーヤーによって使用されるＣＰＵ消費、ＲＡＭ使用、および／またはリソースは、記憶されるフレームの数を調節するために、および／またはフレームの解像度を調節するために、フレームグラバー（例えば、フレームグラバー２３２および／またはフレームグラバー３３２）によって使用されることができる。例えば、フレームグラバーは、コンピューティングデバイスのＣＰＵ消費量、コンピューティングデバイスのＲＡＭ使用量、および／またはあるコンテンツを再生するためにブラウザおよび／またはメディアプレーヤーによって使用されるリソース量を示す情報を受信することができる。いくつかのケースでは、フレームグラバーは、ＣＰＵ消費量、ＲＡＭ使用、および／またはブラウザによって使用されるリソース量に応答して、記憶されるフレームの数を調節することができる。いくつかのケースでは、フレームグラバーは、ＣＰＵ消費量、ＲＡＭ使用、および／またはブラウザによって使用されるリソース量に応答して、フレームの解像度を調節することができる。
【０１２９】
[0142]１つの実例的な例では、記憶されるフレームの数は、ＣＰＵ消費がＣＰＵ消費量しきい値（例えば、７０％、８０％、９０％、または他の適切な量）を超えたとき、ＲＡＭ使用がＲＡＭ使用しきい値（例えば、７０％、８０％、９０％、または他の適切な量）を超えたとき、および／またはブラウザによって使用されるリソースの量がリソース使用量しきい値を超えたとき、減少することがある。別の実例的な例では、記憶されるフレームの数は、ＣＰＵ消費がＣＰＵ消費量しきい値を下回るとき、ＲＡＭ使用がＲＡＭ使用しきい値を下回るとき、および／またはブラウザによって使用されるリソースの量がリソース使用しきい値を下回るとき、増加することがある。別の実例的な例では、記憶されるフレームの数は、ＣＰＵ消費がある量だけ（例えば、４０％、５０％より多く、または他の適切な量だけ）増加したとき、ＲＡＭ使用がある量だけ（例えば、４０％、５０％より多く、または他の適切な量だけ）増加したとき、および／またはブラウザによって使用されるリソースの量がある量だけ（例えば、４０％、５０％より多く、または他の適切な量だけ）増加したとき、減少することがある。別の実例的な例では、記憶されるフレームの数は、ＣＰＵ消費がある量だけ（例えば、４０％、５０％より多く、または他の適切な量だけ）減少したとき、ＲＡＭ使用がある量だけ（例えば、４０％、５０％より多く、または他の適切な量だけ）減少したとき、および／またはブラウザによって使用されるリソースの量がある量だけ（例えば、４０%、５０%より多く、または他の適切な量だけ）減少したとき、増加することがある。
【０１３０】
[0143]上記で着目したように、人工知能（ＡＩ）システム（例えば、ＡＩシステム２６４および／または３６４）は、所定のユーザのための最良のトランスコーディング設定を予測するために使用できる。ＡＩシステムは、メディアプラットフォームサーバ２１２の一部であることがある。いくつかのケースでは、ＡＩシステムは、機械学習を使用して、ここで説明する動作を実行することができる。例えば、ＡＩシステムは、ニューラルネットワーク（例えば、畳み込みニューラルネットワークまたは他の適切なネットワーク）または他のタイプの機械学習システムを含むことができる。以下でより詳細に説明するように、ＡＩシステムは、ユーザのパターンおよび再生環境を学習し、それに応じてコンテンツを調節する能力を提供する。例えば、ＡＩシステムは、（以下で説明するように、それ自体で、またはメディアプレーヤーのマルチビューモードで再生されている追加のチャネルと並行して）所定のチャネルを再生するときに、所定のコンピューティングデバイス（例えば、ホストコンピュータ）上の挙動を分析することができる。いくつかのケースでは、ユーザの習慣は、（例えば、どのグリッドをユーザが最も多く使用するかによって）ユーザがいくつのビデオを同時に見るかに関して追跡することができる。ＡＩシステムは、スクリーン解像度を考慮し、それをある期間（例えば、数時間、１日以上等の使用）にわたって平均することができる。このようなデータを使用して、ＡＩシステムは、ユーザが将来の時間にメディアプレーヤー（例えば、メディアプレーヤー２０４および／またはメディアプレーヤー３０４）を起動する最も可能性の高い方法を予測することができ、（例えば、最適化されたフレームレートおよび／または解像度で）最適化された特性を有するビデオをブラウザ（例えば、ブラウザ２０６および／または３０６）に配信することができる。例えば、最適化された特性は、視聴体験を損なわず、（例えば、ユーザが３×３グリッドを見ており、各ビデオが元は１９２０×１０８０であったことから必要とされないかもしれないピクセルを提供しないことによって）ＣＰＵおよび／またはＲＡＭ使用が節約されるように選択されることができる。
【０１３１】
[0144]ＡＩシステムは、コンテンツプロバイダによって従来配信される非効率的で損なう経験（例えばオーバーザトップ（ＯＴＴ）ビデオストリーミングプロトコル）を改善することができる。例えば、ＨＬＳ、ＨＤＳ、ＭＰＥＧ−ＤＡＳＨのような既存のインターネットビデオストリーミング規格は、元のコンテンツを異なる品質のストリームにトランスコードすることによってビデオの複数のバージョンを生成する。異なる品質の各ストリームは、プロファイルと呼ばれることがあり、各プロファイルは、解像度、フレームレート、ビットレート、オーディオ品質、これらの任意の組み合わせ、および／または他の品質メトリックとは異なることがある。ユーザがあるチャネルを再生したいとき、メディアプレーヤーは、可能な限り最低品質のプロファイル、利用可能な品質の中間の品質を有するプロファイル、または他のプロファイルを選択することができ、選択されたプロファイルに関係付けられたビデオを表示することができる。このプロセスは利点を有するが、このようなプロセスに関係する問題もある。例えば、初期の視聴体験は、低プロファイルで開始することにより損なわれることがあり、これは経時的に改善することがある。例えば、経時的に（例えば、５−６０秒後）、従来のストリーミングプレーヤー（例えば、ＯＴＴプレーヤー）は、ネットワーク接続（例えば、インターネット、セルラ、またはこれらに類するもの）が、より多くの帯域幅の使用を可能にするほど十分にロバストであるかどうかを検出することができ、そうである場合、プレーヤーは、より高品質のプロファイルに切り替えることができる。使用することができるより多くの利用可能な帯域幅をプレーヤーが検出し、より高品質のプロファイルが利用可能である場合、プレーヤーは、より高品質のプロファイルを選択し続けることができる。いくつかのケースでは、帯域幅またはネットワーク品質が劣化した場合、プレーヤーは、品質をダウングレードすることもできる。インターネット接続は、家庭で、または移動体デバイス上で移動中に使用されるときに変化することから、このような適応的アプローチは、（例えば、インターネットを通してコンテンツをストリーミングする）インターネットアプリケーションに有用である。
【０１３２】
[0145]従来のストリーミングメディアプレーヤーのこのような学習曲線、および低いプロファイルからより高い品質のプロファイルへの切り替えは、ユーザが新しいチャネルに変更するたびに起こることがある。さらに、プロファイルのうちのすべてが使用されるわけではないが、トランスコーダは複数のプロファイルを生成する必要があることから、ビデオ処理のためのトランスコーダ計算能力は、このような状況では非常に高くなるかもしれない。いくつかのケースでは、ストリーミングアプリケーションに使用されるトランスコーダは、（エンドユーザクライアントデバイスから遠隔の）クラウドベースのサーバ中にあることがある。すべてのユーザが同じプロファイルを共有し、各ユーザがオンデマンドで（例えば、ＨＴＴＰダウンロードとして）必要とするプロファイルにアクセスするにより、トランスコーディングがすべてのユーザに対して一度に行われることから、クラウドベースのトランスコーダは、インターネットストリーミングシステムに対して機能することができる。しかしながら、マルチキャスト処理システム（例えば、マルチキャスト処理システム２０８および／またはマルチキャスト処理システム３０８）を含む上記で説明したシステム（例えば、システム２０２およびシステム３０２）では、トランスコーダ（例えば、トランスコーダ２３０および／または３３０）は、各コンピューティングデバイス内にあり、このケースでは、不要なプロファイルを生成することを回避し、したがってトランスコーディング処理の量を低減するために、より高い効率が必要とされる。
【０１３３】
[0146]クローズドネットワークシナリオでは（例えば、企業ネットワークでは）、ネットワーク帯域幅は、（特に、インターネットサービスと比較して）多くの変更なく一貫していることがある。このようなケースでは、サービス品質（ＱｏＳ）および／またはビデオを適切に表示するコンピュータの能力に影響を及ぼす要因は、環境の他の態様に関係する。例えば、このような要因は、並行して実行する他のアプリケーション（例えば、ｅメールアプリケーション、インターネットブラウザ等）によりビデオを表示するコンピュータの使用を含むことがある。このような使用は、ＣＰＵ、ＲＡＭ、グラフィックス処理ユニット（ＧＰＵ）、およびコンピュータの他のリソースの使用であることがある。他の例では、ＱｏＳおよびビデオを表示するコンピュータの能力に影響を及ぼす要因は、他のビデオがいくつの再生されているか、特定のコンピューティングデバイスがどの解像度のスクリーンを有するかを含むことがある（例えば、ビデオのすべては、スクリーンに適合するようにサイズが縮小される必要があることから、コンピューティングデバイスが１９２０×１０８０のスクリーンを有し、現在マルチビューグリッドにおいて１６のビデオを視聴しようとしている場合、１９２０×１０８０のＨＤビデオを示す理由はない）。
【０１３４】
[0147]上述したように、システム２０２および３０２は、（例えば、各コンピューティングデバイスにデータを送ることを回避するために）サーバから各コンピューティングデバイスにコンテンツ（例えば、データチャンク）を配信させる代わりに、（エンドユーザの）クライアントコンピューティングデバイスに直接マルチキャストコンテンツを配信することを可能にする。このようなマルチキャストアプローチは、（例えば、企業ネットワーク、ホームネットワーク、および／または他のネットワーク上で）ビデオを配信するためのよりスケーラブルな方法である。トランスコーディングプロセスを使用して、上述の要因に基づいて各クライアントコンピューティングデバイス上のビデオの品質を最適化することができる。しかしながら、メディアプレーヤーは、従来、セッションが進行すると、また、プレーヤーが環境についてより学習すると、オンザフライでビデオを適応させる。
【０１３５】
[0148]ここで説明するＡＩシステムは、トランスコーダによって生成されることになる必要とされるメディアフォーマットを正確に予測するために、（例えば、マルチキャスト処理システム２０８および／またはマルチキャスト処理システム３０８からの情報に基づいて）履歴データを使用することができる。例えば、マルチキャスト処理システム３０８は、コンピューティングデバイスによるビデオ再生に関係するデータを収集することができ、そのデータをメディアプラットフォームサーバ３１２に送ることができる。いくつかのケースでは、ユーザ挙動および計算能力アナライザ３６２は、データを収集することができる。マルチキャスト処理システム３０８によって収集されたデータは、再生コンピューティングデバイスの性能データ、ユーザが見ているチャネルのタイプ、ユーザがビデオをどのように視聴するか、これらの任意の組み合わせ、および／またはメディアフォーマットを予測するために使用できる他のデータを含むことができる。
【０１３６】
[0149]上記で着目したように、マルチキャスト処理システム（例えば、システム２０８および／またはシステム３０８）によって収集されたデータは、再生コンピューティングデバイスの性能データを含むことができる。性能データは、コンピューティングデバイスのリソースに関連するデータを含むことができる。リソースは、ＲＡＭ、ＣＰＵ、ＧＰＵ、これらの任意の組み合わせ、またはコンピューティングデバイスの他の適切なコンポーネントを含むことができる。情報は、各リソースのうちのどれだけが経時的に使用されているか、マルチキャスト処理システムを通して提供されるコンテンツを視聴するためにユーザがメディアプレーヤー（例えば、メディアプレーヤー２０４または３０４）を使用する時間を含むことができる。このような情報は、ＡＩシステムが、コンピューティングデバイスに関連するユーザの日々の習慣を学習することを可能にする。例えば、企業環境では、企業ユーザは、日常的に、数ある習慣の中でも特に、バックグラウンドで同じソフトウェアを実行し、ビデオの視聴と並行して同じアプリケーションを使用する傾向があることがある。所定のコンピューティングデバイス上の所定のユーザの実際の計算リソースは、異なる使用が実行されると、決定および分析されてもよい。いくつかのケースでは、コンピューティングデバイスの異なるコンポーネントのパラメータ（例えば、コンピューティングデバイスが有するＲＡＭの量、ＣＰＵの量、およびＧＰＵの量）も使用されることができる。
【０１３７】
[0150]マルチキャスト処理システム（例えば、システム２０８および／またはシステム３０８）によって収集されたデータはまた、ユーザが見ているチャネルのタイプを含むことができる。例えば、チャネルラインナップには多くのチャネル（例えば、数百のチャネル）があることがあるが、ユーザは、フルチャネルリストのサブセットのみを見ることができる。１つの実例的な例では、会社の企業ネットワークは、数百のチャネルを有することがあり、企業ネットワークへのアクセスを有するユーザは、要因の中でもとりわけ、組織内のユーザの定義に基づいて、ユーザの個人的選好に基づいて、情報テクノロジー担当者によって設定されたユーザ許可に基づいて、あるチャネルにアクセスすることができる。
【０１３８】
[0151]マルチキャスト処理システム（例えば、システム２０８および／またはシステム３０８）によって収集されたデータはまた、マルチキャスト処理システムによって提供されるビデオをメディアプレーヤー（例えば、メディアプレーヤー２０４および／または３０４）においてユーザがどのように視聴するかを示すデータを含むことができる。例えば、データは、一度に１つ、常にクワッドグリッドで（一度に４つのビデオで）、時にはクワッドグリッドで、時には１６のグリッドで、または他の何らかのコンフィギュレーションで、ユーザがビデオを見ることを示してもよい。別の例として、データは、どのスクリーンがユーザによって使用されるかを示すことができる。マルチキャスト処理システムが、スクリーンがネイティブに示すこともできるものよりも、より多くのピクセルをビデオごと配信することは望ましくなく、また、表示されることができるピクセルよりも少ないピクセルを配信することも望ましくないので、このようなスクリーンタイプ情報は非常に有用であることがあり、これは結果として、グラフィックカードによる補間をもたらす。
【０１３９】
[0152]マルチキャスト処理システム（例えば、マルチキャスト処理システム２０８および／またはマルチキャスト処理システム３０８）によって収集されたデータを使用して、ＡＩシステム（例えば、ＡＩシステム２６４および／またはＡＩシステム３６４）は、ユーザの習慣、ユーザのコンピューティングデバイス、およびユーザがどのようにビデオを視聴するかを学習することができる。次いで、学習されたデータは、トランスポートストリームを処理するときにトランスコーダ（例えば、トランスコーダ２３０および／またはトランスコーダ３３０）によって生成されるべき品質を示す品質推奨を決定するために、ＡＩシステムによって使用されることができる。品質推奨は、所定のユーザおよび所定のコンピューティングデバイスに特有である。例えば、品質推奨は、所定のコンピュータ上の所定のユーザによって所定のチャネルが選択されるときに生成する品質をトランスコーダに示すことができる。ＡＩシステムは、マルチキャスト処理システムのトランスコーダ（各ユーザコンピューティングデバイス上に存在し、動作する）に品質推奨を送ることができ、トランスコーダは、所定のコンピュータ上の所定のユーザによって所定のチャネルが選択されるとき、品質推奨によって特定された品質を有するビデオを生成することができる。
【０１４０】
[0153]ＡＩシステムの目標は、視聴セッションの開始から、（例えば、コンピューティングデバイス、スクリーン、およびユーザの視聴習慣に合わせて）ユーザが最良の品質のビデオを得ることが可能であるように、マルチキャスト処理システムのトランスコーダによって実行されるトランスコーディングプロセスに対して可能な最良の設定を正確に予測することである。ＡＩシステムは、使用履歴データを有さないローカル適応メディアプレーヤーの学習曲線を実質的に低減することができ、決して使用されないかもしれない多くのプロファイルを生成する必要性をなくすことができ、不要なトランスコーディングステップのために使用されるスイッチングが少なくなり、ＣＰＵ（および他のリソース）が少なくなるため、視聴体験を改善することができる。
【０１４１】
[0154]上述のＡＩシステムの別の利点は、ユーザがあるロケーションから別のロケーションに移動する情報テクノロジー（ＩＴ）環境においても予測を生成する能力である。例えば、いくつかの組織、軍事基地、政府施設、またはこれらに類するものでは、コンピューティングデバイスワークステーションは個人用ではない。このようなケースでは、ワークステーションはさまざまなユーザによって使用されるかもしれない。各個々のユーザは、各ユーザに一意的なアクティブディレクトリユーザ名を使用して検出されることができ、ローカルプレーヤー論理を有する他のソリューションとは異なり、メディアプラットフォームサーバ（例えば、サーバ２１２および／または３１２）は、（アクティブディレクトリユーザ名に基づいて）ユーザのデータをフェッチし、どのコンピュータが使用されているかにかかわらず、品質推奨を提供することができる。所定のネットワーク（例えば、企業ネットワーク、ホームネットワーク、または他のネットワーク）上の各コンピューティングデバイスに関するデータも、ＡＩシステムによって知ることができる。例えば、シリアル番号または他の一意的な識別子を使用して、コンピューティングデバイスを識別することができる。ＡＩシステムは、ユーザのデータを、ユーザが現在使用しているコンピューティングデバイスに固有のデータとどのように一致させるかを知ることができる。ユーザデータとコンピューティングデバイスデータの組み合わせは、ＡＩシステムが、任意の機械を使用する任意のユーザに必要とされる最良の設定を正確に予測することを可能にする。
【０１４２】
[0155]図５Ａは、プラグインレスＨＬＳ、Ｆｌａｓｈ、ＨＴＭＬ５、または他の適切な企業ソリューションに対して従来のビデオ配信を提供する（例えば、企業ネットワーク内の）マルチユニキャストビデオ配信システムの例を示すダイヤグラムである。図５Ｂは、任意の適切なプロトコル（例えば、ＨＴＭＬ５または他のプロトコル）を使用して再生を伴うマルチキャスト配信を提供するために、（例えば、システム２０２またはシステム３０２のようなシステムを使用して）ここで開示する技術を利用する（例えば、企業ネットワーク内の）マルチキャストビデオ配信システムの例を示すダイヤグラムである。図５Ａおよび図５Ｂに示されるシステムのコンポーネントは、単一のロケーション（例えば、建物のサーバルーム、またはこれに類するもの）内に位置付けることができ、または異なる場所に分散させることができる。
【０１４３】
[0156]図５Ａおよび図５Ｂに示されたシステムの両方について、ビデオ消費の例が使用され、４つの一意的なマルチキャストビデオチャネル（ビデオチャネル４００、４０１、４０２、および４０３と、ビデオチャネル５００、５０１、５０２、および５０３とを含む）は、それぞれ３メガビット／秒（Ｍｂｐｓ）で提供される。図５Ａおよび図５Ｂに示すシステムは、それぞれ、各ロケーションに５００ユーザを有する４つのロケーションにサービスを提供するマルチサイト企業ネットワークを含むことができる。５００エンドユーザクライアントの異なるセットは、建物、会場、または他の適切なロケーションのような、異なるロケーションに存在することができる。図５Ａおよび図５Ｂに示すように、マルチキャストコンテンツは、任意の適切なコンテンツソースを含むことができる４つのソースからコアネットワークスイッチ５０４に提供されることができる。コンテンツソースの実例的な例は、ローカルＴＶチャネルフィード、衛星ＴＶチャネル、ケーブルＴＶコンテンツプロバイダ（例えば、Ｃｏｍｃａｓｔ（登録商標）、ＴｉｍｅＷａｒｎｅｒ（登録商標）、ＤｉｒｅｃＴＶ（登録商標）、またはこれらに類するもの）、または他の適切なソースを含む。当業者は、図５Ａおよび図５Ｂに示したものよりも多いまたは少ないコンテンツソースを含むことができることを認識するだろう。実例となる目的のために、図５Ａおよび図５Ｂの両方において、各ユーザは、これらのチャネルのうちの１つ以上を消費／視聴している（例えば、４つのチャネルすべてをモザイクビューで表示している、チャネルのうちの１つ以上を表示しながら他のチャネルのうちの１つ以上を記録している、デスクトップ／ラップトッププレーヤー上で単一のチャネルを視聴している、または他の適切なコンフィギュレーション）と仮定することができる。
【０１４４】
[0157]示されるように、図５Ａに示されるマルチユニキャストシステムは、第１のネットワークスイッチ４０４からマルチキャストトラフィックを受信し、典型的なオペレーティングシステムおよび／またはブラウザによってネイティブにサポートされるインターネットストリームフォーマットにコンテンツをトランスコードし、このコンテンツを個々のユニキャストストリームとして配信するために、１つ以上のトランスコーディングおよび配信サーバ４０２の使用を必要とし、合計で最低１５００のユニキャストストリーム（ユーザごとに１つ）を有する。上記で着目したように、各マルチキャストストリームは３Ｍｂｐｓであり、すべての１５００ユニキャストストリームに対して、合計で４．５ギガビット／秒（Ｇｂｐｓ）を必要とする。次いで、第２のスイッチ４０６は、ストリームを適切なロケーションに配信し、５００ストリームは、それぞれが５００エンドユーザクライアントコンピューティングデバイスにサービス提供する３つの異なるエッジネットワークスイッチ（ＡＰ）４０８、４１０、４１２に進む。いくつかのケースでは、ワイヤレス（例えば、ＷｉＦｉ）ＡＰの代わりに、またはそれに加えて、図のシステムがローカルエリアネットワーク（例えば、企業ネットワーク）において実現されるとき、物理ネットワークスイッチを使用できる。２つのスイッチ４０４および４０６のみを図５Ａに示しているが、当業者は、より多くのネットワークスイッチがネットワーク中に含まれることがあることを認識するだろう。
【０１４５】
[0158]図５Ａに示したもののようなマルチユニキャストシステムは、サーバが、マルチキャストされている４つの個々のコンテンツストリームを取得し、ストリームを要求するすべてのコンピューティングデバイスに対して別々の個々のユニキャストコピーとしてこれらを再配信する必要があるので、大量のハードウェアインフラストラクチャへの投資を必要とする。例えば、多数のコンテンツチャネルと、各コンピューティングデバイスが複数のビデオを同時に視聴および／または記録することができる、ネットワーク上でコンテンツを消費する膨大な量のコンピューティングデバイスとを有するエンティティは、マルチユニキャストアプローチに対するトランスコーディングおよびルーティング機能を実行するために、ネットワークインフラストラクチャに関して数千万ドルを費やす必要があるかもしれない。トランスコーディングおよび配信サーバ４０２のトランスコーディングおよびルーティング機能も、上述したように、システムに待ち時間を追加する。やはり上述したように、（例えば、トランスコーディングプロセスの間の）トランスコーディングおよび配信サーバ４０２の障害は、トランスコーディングが複数のコンピューティングデバイスに対して実行されることから、ビデオ配信ソリューションのサービス品質に悪影響を及ぼし、トランスコーディングおよび配信サーバ４０２の障害は、コンピューティングデバイスのすべてに影響を及ぼすことがある。
【０１４６】
[0159]図５Ａに示したもののようなマルチユニキャストシステムの使用は、ブラウザベースのメディアプレーヤー（またはウェブプレーヤー）が、従来、インターネットベースのビデオにのみ使用されることに起因し、インターネットベースのシステムは、このようなインターネットベースのシステムのインフラストラクチャ（例えば、インターネットインフラストラクチャにおけるルータおよびスイッチ）に基づいてマルチキャストビデオをサポートしない。
【０１４７】
[0160]図５Ｂに示したマルチキャストシステムは、エンドユーザクライアントコンピューティングデバイスのそれぞれで展開されているシステム１０２（例えば、図２に示したシステム２０２または図３に示したシステム３０２）の使用により、図５Ａに示したマルチユニキャストシステムと比較して多くの点で優れている。例えば、図５Ｂに示されるマルチキャストシステムは、図５Ａに示したトランスコーディングおよび配信サーバ４０２のような、ビデオストリームのトランスコーディングおよび複製のための高価なサーバ（ハードウェアおよび／またはソフトウェアを含む）をなくす。さらに、クライアントコンピュータへの配信がリアルタイムトランスポートストリーム（例えば、ＨＥＶＣストリーム、ＡＶＣストリーム、ＭＰＥＧストリーム、または他のフォーマット）を使用してなされるという事実により、マルチキャストシステムは、はるかに短い再生待ち時間（遅延）を特徴とし、このケースでは、コンテンツをコンピューティングデバイスに提供する前に（例えば、インターネット指向プロトコルへの）バッファリングおよび／またはキャッシングが必要とされない。例えば、トランスポートストリームは、コンピューティングデバイスにおいて受信され、次いで、コンピューティングデバイスにおける個々の性能、計算能力、能力、および健康状態に基づいて必要とされるときにのみ、コンピューティングデバイス自体においてトランスポートストリーム上でトランスコーディングが実行され、すべてのユーザに、まとめて再生待ち時間およびサービス品質を損なう必要性をなくす。いくつかのケースでは、ワイヤレス接続を通してマルチキャストトランスポートストリームを受信するコンピューティングデバイスのような、バッファリングが追加されることがあるが、バッファリングは、最小限の待ち時間がユーザによって経験されるように、（例えば、５００ミリ秒、１０００ミリ秒、または他の短い時間量を含むように）動的に調節および最適化できる。バッファリングはコンピューティングデバイスによって実現されることから、各コンピューティングデバイスは、いつバッファリングを実現するか（例えば、ワイヤレスネットワーク接続が使用されているとき）、およびいつバッファリングを実現しないか（例えば、ワイヤードネットワーク接続が使用されているとき）を決定することができる。
【０１４８】
[0161]マルチキャストシステムはまた、１２５分の１の帯域幅を使用して、ネットワークにわたって同じ量のストリームをすべてのユーザに配信する。例えば、図５Ｂに示すように、同じ４つのマルチキャストコンテンツストリームが、ネットワーク（例えば、アクセスポイント）の最後のホップに提供され、方法のステップ毎に、わずか１２Ｍｂｐｓ（４ストリーム×３Ｍｂｐｓ）の帯域幅利用がある。このような帯域幅の低減は、マルチキャストを用いて、コンテンツストリーム（例えば、テレビチャネル、またはこれらに類するもの）を要求するすべてのコンピューティングデバイスが同じビットストリームに加わり、ネットワークルータおよびスイッチが効率的なＩＧＭＰプロトコルを使用して参加および離脱要求を取り扱うことを可能にするためである。例えば、ビットストリームの別個のユニキャストコピーはマルチキャストでは必要とされないことから、（図５Ａのシステムのように）１５００の異なるビットストリームを有する代わりに、４つのビットストリームのみが必要とされ、１．５Ｇｂｐｓと比較して１２Ｍｂｐｓの利用をもたらす。図５Ｂに示すマルチキャストシステムはまた、マルチキャスト処理システム（例えば、マルチキャスト処理システム１０８、マルチキャスト処理システム２０８、および／またはマルチキャスト処理システム３０８）によって実行される、トランスコーディングおよび再配信プロセスまたは他のプロセスにおける障害点による影響を制限する。例えば、マルチキャスト処理システム（例えば、システム１０８、２０８、または３０８）が、システムによって実行されるプロセスのうちの１つ以上の間に障害を起こした場合、マルチキャスト処理システムがインストールされたデバイスにのみに障害は生じ、（図５Ａの）トランスコーディングおよび配信サーバ４０２が障害を起こしたときにコンピューティングデバイスのグループ全体に生じることとは対照的である。
【０１４９】
[0162]図５Ｂに示すように、ネットワークスイッチ５０４は、４つのコンテンツソースからマルチキャストトラフィックを受信することができ、マルチキャストトラフィックをネットワークスイッチ５０６（またはルータ）にルーティングすることができる。ネットワークスイッチ５０６について説明するが、ルータまたは他のデバイスのような、他のネットワークゲートウェイデバイスを使用することもできる。ネットワークスイッチ５０６は、マルチキャストトラフィックをアクセスポイントにルーティングすることができ、アクセスポイントは、マルチキャストトラフィックを各コンピューティングデバイスにワイヤレスでルーティングすることができる。いくつかのケースでは、マルチキャストトラフィックは、ワイヤード接続を通してコンピューティングデバイスのうちの１つ以上にルーティングできる。２つのスイッチ５０４および５０６のみが図５Ｂに示されているが、当業者は、ネットワークトラフィックと所定のネットワーク環境に対していくつのネットワークポートが必要とされるかとに応じて、より多くのネットワークスイッチをネットワークに含めることができることを認識するだろう。例えば、図５Ｂに示したシステムが大きな会場（例えば、アリーナ、病院、または他の適切な会場）で実現される場合、ネットワーク全体にマルチキャストトラフィックをルーティングするための５００以上のネットワークスイッチが存在することがある。
【０１５０】
[0163]さらに、各コンピューティングデバイスにおいてシステム２０２またはシステム３０２を使用することによって、ソーススペシフィックマルチキャスト（ＳＳＭ）を可能にするＩＧＭＰｖ３プロトコルを各コンピューティングデバイスによって使用することができ、これは、図５Ａに示したようなサーバベースのマルチユニキャストシステムを使用して利用可能ではない。例えば、コンピューティングデバイスに配信されるパケットが、コンピューティングデバイスによって特に要求される特定のソースアドレス（例えば、ＩＰアドレス）から生じるパケットのみであるマルチキャストパケットの配信を、ＳＳＭは可能にする。コンテンツを受信することができるソースを選択すると、ＳＳＭは、セキュリティを改善し、ネットワーク上の要求を低減する。サーバベースのマルチユニキャストシステムを使用すると、異なるクライアントデバイスは、あるソースアドレスのみからコンテンツを要求することができず、代わりに、トランスコーディングおよび再配信サーバが加入している同じマルチキャストソースのユニキャストコピー提供される。各コンピューティングデバイス上で実行するマルチキャストシステム２０２または３０２を使用して、コンピューティングデバイスのそれぞれは、どのソースアドレスが承認されたコンテンツのソースであるかを特定することができる。これは、マルチキャストグループを選択する際のより良好な柔軟性を可能にしながら、サービス拒否攻撃に対しても保護し、ホストは、明示的に要求したソースからのトラフィックのみを受信し、複数のソースは、競合なく同じマルチキャストグループを提供することができる。
【０１５１】
[0164]各コンピューティングデバイスにおけるシステム２０２またはシステム３０２の使用に基づいて、コンピューティングデバイスは、所望のプロトコル（例えば、ＨＴＭＬ５プロトコル）を使用して実現されたブラウザベースのメディアプレーヤーを、プラグインを必要とせずに依然として使用することができるが、ブラウザベースのメディアプレーヤーデバイスがマルチキャストをサポートしないためだけに、ネットワーク側でビデオの効率的なＩＧＭＰベースの配信を修正する必要はない。
【０１５２】
[0165]いくつかの例では、図１、図２、および図３に示したシステム１０２、２０２、および３０２は、プラグインレスブラウザプレーヤー（例えば、プラグインレスＨＴＭＬ５ブラウザプレーヤーまたは他の適切なプレーヤー）上またはビデオペイン間の迅速でＣＰＵ効率の良い移行をする他のメディアプレーヤー上で、（例えば、ディスプレイ上のモザイクグリッドを使用して）マルチビュー体験をサポートすることができる。
【０１５３】
[0166]複数の高品質ストリーム（例えば、ＨＤストリーム、４Ｋストリーム、またはこれらに類するもの）を獲得すること、ブラウザを使用して所定のコンピュータ上でこれらを同時に再生すること、および１つのアクティブビデオから別のアクティブビデオに（顕著な遅延なく）潔く切り替えることができ、オーディオが常にビデオと同期していることに関係するいくつかの課題がある。例えば、ブロードキャスト品質の１０８０ｐ  ＨＤストリームは、通常、４−３０ＭｂｐｓのＭＰＥＧペイロードを使用する。モザイクグリッドディスプレイ（例えば、２×２モザイクグリッド、３×３モザイクグリッド、４×４モザイクグリッド、またはそれ以上）をポピュレートするためにこれらのビデオストリームのうちの複数を消費するとき、多くのビデオストリーム（例えば、４×４グリッドに対して１６つのストリーム）が所定のコンピューティングデバイス上で受信される。プラグインのないブラウザプレーヤーを使用してこれらのビデオストリームを提示するために、ブラウザによってネイティブにサポートされるビデオフォーマットへのトランスコーディングが生じなければならない。いくつかのケースでは、トランスコーディングは、各ユーザにユニキャストとして配信されることを必要とする、いくつかの従来のアプリケーション（例えば、図５Ａに示したマルチユニキャストシステム）を有するサーバによって実行されることがある。いくつかのケースでは、トランスコーディングは、そのＣＰＵおよびＲＡＭによってクライアントコンピューティングデバイス上で実行されることがあり、このタスクを計算集約的にし、場合によっては、同じ機械上で実行する他のアプリケーションに悪影響をもたらす。さらに、ブラウザプレーヤーが非常に多くのビデオストリームを並列で処理しているとき、オーディオをアクティブ化するために、または特定のビデオの視聴を最大化するために、あるビデオと別のビデオとの間で切り替える必要があるとき、ブラウザを用いたユーザ体験は影響を受ける。
【０１５４】
[0167]典型的な企業ワークステーション上で最大１６の（またはそれ以上の）ビデオストリームを並列にトランスコードすることは、コンピュータの性能を損なうだけでなく、場合によっては他のアプリケーションに影響を及ぼし、古いコンピュータでは単純に機能しないこともあり、あるユーザがモザイクグリッド内で視聴したいストリームの数を視聴することを不可能にする。
【０１５５】
[0168]（例えば、システム２０２および／またはシステム３０２として実現される）システム１０２は、モザイクグリッド内で焦点が合っていない（「アクティブ」でない）すべての他のビデオペイン中の１つ以上の他のメディアストリームの（フレームグラバーからの）ビデオフレームの連続表示とともに、アクティブビデオペインに対する１つのメディアストリームのフルモーションビデオ（例えば、ＭＰＥＧビデオ）再生のスマートブレンディングを実行することができる。このようなソリューションは、焦点が合っていない非アクティブビデオペインにおいて標準ビデオが再生される体験を視聴者に提供する。スマートブレンディングアプローチは、ビデオをトランスコードし、フルビデオおよびオーディオをブラウザレイヤに伝搬する必要なく、フレームグラビングを元のビデオソースから直接行うことができるので、モザイクグリッドを生成するために必要とされる計算能力において大きな利点を提供する。
【０１５６】
[0169]図６、図７、および図８は、ビデオストリームの３×３グリッドでモザイクビューを有する例示的なディスプレイを図示するピクチャである。図６に示すディスプレイでは、中央のペインがアクティブビデオペインである。フルモーションビデオ（例えば、フルモーションＭＰＥＧビデオストリーム、ＨＥＶＣビデオストリーム、ＡＶＣビデオストリーム、または他のビデオ）は、ビデオコンテンツとオーディオコンテンツの両方を含むアクティブビデオペインに表示されるビデオストリームのために提示される。トランスコーディングが実行されるとき、アクティブビデオストリームに対するフルモーションビデオは、（例えば、システム２０２および／またはシステム３０２として実現される）システム１０２中のトランスコーダからシステム１０２中のメディアプレーヤー１０４および／またはブラウザ１０６に提供できる。例えば、データチャンクまたはフルビデオパケットは、ウェブソケットエンジンからブラウザ１０６に送ることができる。残りのビデオペインは、非アクティブビデオペインである。フレームグラバーからの取り込まれたフレームは、非アクティブビデオペインに表示されるビデオストリームのために、プレーヤーによって（フルモーションビデオおよびオーディオコンテンツの代わりに）表示される。
【０１５７】
[0170]図７に示すように、ユーザは、アクティブビデオペインとして上中央のビデオペインを選択している。ユーザがアクティブビデオペインとして焦点を合わせるために異なるビデオペインを選択するとき、システム１０２は上中央のビデオペインに表示されているビデオのコマごとのビデオのみの表現を表示することから、ビデオおよびオーディオを有するフルモーションビデオストリーム（例えば、フルモーションＭＰＥＧビデオストリーム、ＨＥＶＣビデオストリーム、ＡＶＣビデオストリーム、または他のビデオ）にシームレスに切り替える。切り替えは、マルチキャスト処理システム（例えば、マルチキャスト処理システム１０８、マルチキャスト処理システム２０８、および／またはマルチキャスト処理システム３０８）に、この所定のストリームに対する処理モードを、フレームが取り込まれたフレームからトランスコードされたストリームに変更するように命令するブラウザアプリケーションによって実行できる。各フレームに適用されるタイムスタンプを使用して、システム１０２は、他のウェブベースのビデオアプリケーションにおいて典型的に必要とされる、プレーヤーをリロードおよび／またはリフレッシュすることなく、フレームベースの再生から（トランスコーダからの）フルモーションビデオ再生への切り替えを円滑に実行することができる。例えば、共通のタイムスタンプを有するビデオフレームおよびオーディオフレームは、新たにアクティブなビデオペインに対応するビデオストリームに対して表示されるように開始することができる。
【０１５８】
[0171]図８に示すディスプレイでは、中間のペインがアクティブビデオペインである。上記で説明したように、フルモーションビデオ（例えば、フルモーションＭＰＥＧビデオストリーム、ＨＥＶＣビデオストリーム、ＡＶＣビデオストリーム、または他のビデオ）は、ビデオコンテンツとオーディオコンテンツの両方を含むアクティブビデオペイン中に表示されるビデオストリームに対して提示される。トランスコーディングが実行されるとき、アクティブビデオストリームに対するフルモーションビデオは、（例えば、システム２０２および／またはシステム３０２として実現される）システム１０２中のトランスコーダからシステム１０２中のメディアプレーヤー１０４および／またはブラウザ１０６に提供される。例えば、データチャンクまたはフルビデオパケットは、ウェブソケットエンジンからブラウザ１０６に送ることができる。残りのビデオペインは、非アクティブビデオペインである。フレームグラバーから取り込まれたフレームは、非アクティブビデオペインに表示されるビデオストリームのために、プレーヤーによって（フルモーションビデオおよびオーディオコンテンツの代わりに）表示される。２次非アクティブビデオペインは、（例えば、ユーザが使用すべき最適化された品質のＡＩシステム予測によって駆動される）低減されたフレームレートおよび／または低減されたビットレートのトランスコードされたファイルを使用して表示できる。
【０１５９】
[0172]上記で説明した技術を実現する１つ以上のプロセスが実行されてもよい。図９は、メディアデータを処理するためのプロセス９００の例を示すフローダイヤグラムである。ブロック９０２において、プロセス９００は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。コンピューティングデバイスは、パーソナルデスクトップまたはラップトップコンピュータ、移動体デバイス（例えば、移動体電話機、タブレット、ウェアラブルデバイス、またはこれらに類するもの）、あるいはメディアコンテンツを表示できるブラウザおよび／またはプレーヤーを含むことができる他の何らかの適切なデバイスのような、エンドユーザコンピューティングデバイスを含むことができる。いくつかのケースでは、メディアコンテンツは、ビデオコンテンツおよびオーディオコンテンツを含む。
【０１６０】
[0173]ブロック９０４において、プロセス９００は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することを含む。ユニキャストストリームは、（例えば、図２に示されるシステム２０２として実現される）例えば、システム１０２のローカルストリーマによって生成できる。ブロック９０６において、プロセス９００は、コンピューティングデバイスによって、第１のメディアフォーマットから第２のメディアフォーマットへ、メディアコンテンツのユニキャストストリームをトランスコードすることを含む。トランスコーディングは、（例えば、図２に示すシステム２０２として実現される）例えば、システム１０２のトランスコーダによって実行できる。ブロック９０８において、プロセス９００は、１つ以上のチャネルを通して（例えば、ウェブソケットプロトコルを使用する１つ以上のＴＣＰまたは他の適切なチャネルを通して）、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信することを含む。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で（例えば、ウェブソケットを使用して）安全に実行される。
【０１６１】
[0174]いくつかの例では、プラグインは、メディアコンテンツのユニキャストストリームを生成するために、およびメディアコンテンツのユニキャストストリームをトランスコードするために使用されない。いくつかのケースでは、プロセス９００は、ビデオのマルチキャストストリームを受信するための要求を生成することと、ビデオソースに要求を送信することとを含むことができ、ビデオのマルチキャストストリームは、要求に応答して受信される。
【０１６２】
[0175]いくつかのケースでは、プロセス９００は、コンピューティングデバイスのローカルポート（例えば、ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート）上でトランスコードされたメディアコンテンツのユニキャストストリームを受信することをさらに含むことができる。このようなケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、ウェブソケットプロトコルを使用してポートからブラウザに送信される。
【０１６３】
[0176]いくつかのケースでは、プロセス９００は、メディアコンテンツのマルチキャストストリームのうちの１つ以上のペイロードを解読することをさらに含むことができる。例えば、解読は、サーバ（例えば、図２に示したメディアプラットフォームサーバ２１２）から提供される１つ以上のＡＥＳキーを使用して実行できる。
【０１６４】
[0177]いくつかのケースでは、プロセス９００は、コンピューティングデバイスによって、ブラウザを使用して、トランスコードされたメディアコンテンツのユニキャストストリームを表示することをさらに含むことができる。
【０１６５】
[0178]いくつかのケースでは、プロセス９００は、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することをさらに含むことができる。例えば、１つ以上のビデオフレームは、図２に示したシステム２０２のフレームグラバーによって記憶できる。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされない。プロセス９００は、コンピューティングデバイスによって、ブラウザを使用して、記憶された１つ以上のビデオフレームを表示することを含むことができる。
【０１６６】
[0179]いくつかのケースでは、プロセス９００は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することを含むことができる。このようなケースでは、プロセス９００は、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することとを含む。このようなケースでは、プロセス９００は、ブラウザを使用するコンピューティングデバイスによって、トランスコードされたメディアコンテンツのユニキャストストリームをコンピューティングデバイスのディスプレイの第１の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第２の部分に表示することとをさらに含むことができる。図６、図７、および図８は、このようなシナリオの例を図示している。
【０１６７】
[0180]いくつかのケースでは、プロセス９００は、コンピューティングデバイスのＣＰＵ消費量に関係付けられた情報を（コンピューティングデバイスによって）受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとをさらに含むことができる。このようなケースでは、ＣＰＵ消費量に関係付けられている情報に応答して、フレーム数を調節することができる。いくつかの例では、プロセス９００は、ＣＰＵ消費量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶され、再生のためのコンピューティングデバイスのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【０１６８】
[0181]１つの実例的な例では、プロセス９００は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を超えていることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費がＣＰＵ消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス９００は、ＣＰＵ消費量に関係付けられている情報が、ＣＰＵ消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ＣＰＵ消費量に関連付けられた情報が、ＣＰＵ消費減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【０１６９】
[0182]別の実例的な例では、プロセス９００は、コンピューティングデバイスによるランダムアクセスメモリ（ＲＡＭ）使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ＲＡＭ使用量に関係付けられている情報に応答して調節される。別の実例的な例では、プロセス９００は、ＲＡＭ使用量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【０１７０】
[0183]別の実例的な例では、プロセス９００は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用がＲＡＭ使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス９００は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ＲＡＭ使用量に関係付けられている情報が、ＲＡＭ使用が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【０１７１】
[0184]別の実例的な例では、プロセス９００は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。別の実例的な例では、プロセス９００は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、１つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【０１７２】
[0185]別の実例的な例では、プロセス９００は、ブラウザによって使用されたリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス９００は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス９００は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【０１７３】
[0186]いくつかの例では、プロセス９００は、メディアコンテンツのユニキャストストリームからメタデータを抽出することを含むことができ、トランスコードされたメディアコンテンツのユニキャストストリームはメタデータを含まない。メタデータは、ＫＬＶメタデータ、または他の適切なメタデータを含むことができる。このような例では、プロセス９００は、メディアコンテンツのユニキャストストリームから抽出されたメタデータをトランスコードされたメディアコンテンツのユニキャストストリームと組み合わせることと、組み合わされた抽出されたメタデータとトランスコードされたメディアコンテンツのユニキャストストリームとを表示することとを含むことができる。
【０１７４】
[0187]いくつかの例では、プロセス９００は、コンピューティングデバイスのメモリに、マルチキャストストリームのうちの１つ以上のペイロードを記録することを含むことができる。
【０１７５】
[0188]いくつかの例では、プロセス９００は、メディアコンテンツのユニキャストストリームのうちの１つ以上のパケットに対する１つ以上のタイムスタンプを生成することと、１つ以上のタイムスタンプをメディアコンテンツのユニキャストストリームのうちの１つ以上のパケットに関係付けることとを含むことができる。このような例では、メディアコンテンツのユニキャストストリームのオーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを追加することができる。
【０１７６】
[0189]図１０は、メディアデータを処理するための別のプロセス１０００を図示するフローダイヤグラムである。ブロック１００２において、プロセス１０００は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。ブロック１００４において、プロセス１０００は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することを含む。ブロック１００２および１００４は、プロセス９００のブロック９０２および９０４と類似している。ブロック１００６において、プロセス１０００は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを記憶することを含む。ブロック１００８において、プロセス１０００は、１つ以上のチャネルを通して（例えば、ウェブソケットプロトコルを使用する１つ以上のＴＣＰまたは他の適切なチャネルを通して）、メディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを再生のためのコンピューティングデバイスのブラウザに送信することを含む。いくつかのケースでは、プロセス１０００は、コンピューティングデバイスによって、ブラウザを使用して、記憶された１つ以上のビデオフレームを表示することを含むことができる。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で（例えば、ウェブソケットを使用して）安全に実行される。
【０１７７】
[0190]いくつかの例では、プロセス１０００は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることを含むことができる。このような例では、プロセス１０００は、少なくとも１つのチャネルを通して（例えば、ウェブソケットプロトコルを使用する、１つ以上のＴＣＰチャネルまたは他の適切なチャネルを通して）、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのブラウザに送信することを含むことができる。このような例では、プロセス１０００は、コンピューティングデバイスによって、ブラウザを使用してトランスコードされたメディアコンテンツのユニキャストストリームを表示することをさらに含むことができる。いくつかのケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、（例えば、図６に示したように）アクティブストリームとしてのメディアコンテンツの選択に応答して、記憶された１つ以上のビデオフレームの代わりにブラウザを使用して表示される。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされず、代わりに、図２に示したシステム２０２のフレームグラバーからのものである。このような例では、プロセス１０００は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することとをさらに含むことができる。プロセス１０００は、コンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームの１つ以上のビデオフレームを記憶することを含むことができる。プロセス１０００は、ブラウザを使用するコンピューティングデバイスによって、トランスコードされたメディアコンテンツのユニキャストストリームをアクティブストリームとしてコンピューティングデバイスのディスプレイの第１の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第２の部分に表示することとをさらに含むことができる。このような例の実例を、図６、図７、図８に示している。
【０１７８】
[0191]いくつかのケースでは、プロセス１０００は、コンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることをさらに含むことができる。このようなケースでは、プロセス１０００は、ディスプレイの第２の部分に表示されたコンテンツの選択に対応する入力を受信することを含むことができる。コンテンツは、追加のメディアコンテンツのユニキャストストリームのうちの１つ以上のビデオフレームを含む。プロセス１０００は、ディスプレイの第２の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第２の部分に、トランスコードされた追加のメディアコンテンツのユニキャストストリームをアクティブストリームとして表示することをさらに含むことができる。プロセス１０００は、ディスプレイの第２の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第１の部分にメディアコンテンツのユニキャストストリームのうちの記憶された１つ以上のビデオフレームを表示することをさらに含むことができる。
【０１７９】
[0192]上記で説明したものと同様に、プロセス１０００はまた、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節するために、および／または１つ以上のビデオフレームの解像度を調節するために、コンピューティングデバイスのＣＰＵ消費および／またはＲＡＭ消費を考慮することができる。プロセス１０００はまた、または代替的に、フレームの数またはフレームの解像度を調節するためにブラウザによって使用されるリソースの量を考慮することができる。例えば、ＣＰＵ消費しきい値、ＲＡＭ消費しきい値、および／またはリソース使用しきい値を考慮することができる。別の例では、ＣＰＵ消費、ＲＡＭ消費、および／またはブラウザによって使用されるリソースの増加または減少は、フレームレートまたは解像度が増加または減少するかどうかに影響を及ぼすことがある。
【０１８０】
[0193]図１１は、メディアデータを処理するための別のプロセス１１００の例を示すフローダイヤグラムである。ブロック１１０２において、プロセス１１００は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。いくつかの例では、プロセス１１００は、メディアコンテンツのマルチキャストストリームの１つ以上のペイロードを解読することを含む。
【０１８１】
[0194]ブロック１１０４において、プロセス１１００は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することを含む。いくつかの例では、プロセス１１００は、メディアコンテンツのユニキャストストリームのデータフラグメントを記憶することを含む。いくつかのケースでは、１つ以上のフレームは、１つ以上のバッファに記憶されてもよい。例えば、メディアコンテンツの１つ以上のペイロードは、バッファに記憶されてもよく、バッファリングされたペイロードデータは、メディアデータのデータフラグメントに分割されてもよい。
【０１８２】
[0195]ブロック１１０６において、プロセス１１００は、ウェブソケットプロトコルを使用する１つ以上の送信制御プロトコル（ＴＣＰ）チャネルを通して、メディアコンテンツのマルチキャストストリームの１つ以上のデータフラグメントを再生のためのコンピューティングデバイスのブラウザに送信することを含む。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で（例えば、ウェブソケットを使用して）安全に実行される。いくつかの例では、プロセス１１００は、ブラウザを使用するコンピューティングデバイスによって、１つ以上のデータフラグメントを表示することを含む。例えば、コンピューティングデバイスのメディアプレーヤー（例えば、メディアプレーヤー３０４）は、１つ以上のデータフラグメントに対応するビデオを再生することができる。いくつかの例では、プロセス１１００は、１つ以上のデータフラグメントをブラウザに送信する前に、メディアコンテンツの１つ以上のデータフラグメントを暗号化することを含む。
【０１８３】
[0196]いくつかの例では、プロセス１１００は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームを第１のメディアフォーマットから第２のメディアフォーマットにトランスコードすることを含む。メディアコンテンツのマルチキャストストリームを分割することは、トランスコーディングが実行されるとき、トランスコードされたメディアコンテンツのユニキャストストリームをデータフラグメントに分割することを含むことができる。トランスコーディングが必要とされないとき、メディアの最初に受信されたマルチキャストストリームを、データフラグメントに分割できる。
【０１８４】
[0197]いくつかの例では、プロセス１１００は、ローカルのハイパーテキスト転送プロトコル（ＨＴＴＰ）ポート上でメディアコンテンツのマルチキャストストリームのうちの１つ以上のデータフラグメントを受信することを含む。１つ以上のデータフラグメントは、ウェブソケットプロトコルを使用してＨＴＴＰポートからブラウザに送信される。
【０１８５】
[0198]いくつかの例では、プロセス１１００は、メディアコンテンツのマルチキャストストリームのうちの１つ以上のビデオフレームを記憶することを含む。いくつかのケースでは、メディアコンテンツのマルチキャストストリームのうちの記憶された１つ以上のビデオフレームは、トランスコードされない。例えば、上述したように、１つ以上のビデオフレームは、図３に示したシステム３０２のフレームグラバーから取得することができる。いくつかの例では、プロセス１１００は、コンピューティングデバイスによって、ブラウザを使用して、記憶された１つ以上のビデオフレームを表示することを含む。
【０１８６】
[0199]いくつかの例では、プロセス１１００は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、追加のメディアコンテンツのマルチキャストストリームのうちの１つ以上のビデオフレームを記憶することとを含む。プロセス１１００は、ブラウザを使用するコンピューティングデバイスによって、コンピューティングデバイスのディスプレイの第１の部分にメディアコンテンツのマルチキャストストリームのうちの１つ以上のデータフラグメントを表示することと、ブラウザを使用するコンピューティングデバイスによって、コンピューティングデバイスのディスプレイの第２の部分に追加のメディアコンテンツのマルチキャストストリームのうちの記憶された１つ以上のビデオフレームを表示することとをさらに含むことができる。
【０１８７】
[0200]いくつかの例では、プロセス１１００は、コンピューティングデバイスに関係付けられた性能データを取得することと、コンピューティングデバイスに関係付けられたユーザデータを取得することとを含む。ユーザデータは、コンピューティングデバイスのメディアプレーヤーを使用してユーザによって視聴される１つ以上のタイプのチャネル、ユーザに関係付けられたビデオの視聴コンフィギュレーション、これらの組み合わせ、または他の何らかの適切なユーザデータを含むことができる。プロセス１１００は、コンピューティングデバイス上でユーザによって特定のチャネルが選択されたときに生成するトランスコーディング品質を示す品質推奨を取得することをさらに含むことができる。いくつかのケースでは、トランスコーディング品質は、解像度、フレームレート、およびビデオのビットレートのうちの少なくとも１つを含む。品質推奨は、性能データおよびユーザデータに基づく。いくつかのケースでは、品質推奨は、機械学習を使用して決定される。いくつかのケースでは、機械学習はニューラルネットワークに基づく。例えば、性能データおよびユーザデータをニューラルネットワークに入力することができ、ニューラルネットワークは、性能データおよびユーザデータの処理に基づいて品質推奨を出力することができる。
【０１８８】
[0201]いくつかの例では、プロセス１１００は、性能データおよびユーザデータをサーバに送ることと、サーバから品質推奨を受信することとを含む。例えば、マルチキャスト処理システム（例えば、マルチキャスト処理システム３０８のユーザ挙動および計算能力アナライザ３６２）は、性能およびユーザデータをメディアプラットフォームサーバ（例えば、メディアプラットフォームサーバ３１２）に送ることができ、メディアプラットフォームサーバ（例えば、ＡＩシステム３６４）は、品質推奨をマルチキャスト処理システムのトランスコーダ（例えば、マルチキャスト処理システム３０８のトランスコーダ３３０）に送ることができる。
【０１８９】
[0202]上述の方法およびシステムは、既存のシステムに勝る多くのを利点を提供する。例えば、上述のように、（図５Ａに示したような）マルチユニキャストトランスコーディングおよび再配信アプローチのケースでは、サーバが障害を起こした場合、障害は、そのサーバからマルチユニキャストストリームを得るすべてのユーザに影響を及ぼす。マルチキャスト処理システム（例えば、システム１０８、２０８、および／または３０８）を使用する利点は、マルチキャスト処理システムがプロセスの間のある点で障害を起こした場合、障害を被ったコンピューティングデバイスのみが影響を受けることである。ネットワークから直接マルチキャストストリームに参加するネットワーク上の他のコンピューティングデバイスは、元のマルチキャストコンテンツを受信し続け、それぞれのマルチキャスト処理システムを使用してコンテンツを処理することができる。（例えば、図５Ａに示したような）サーバベースのマルチユニキャストアプローチに対する（例えば、図５Ｂに示したような）配信、クライアント計算アプローチの利点の別の例は、更新および定期的保守に関する。（例えば、図５Ａに示したような）トランスコーディングサーバおよび再配信サーバは、ソフトウェア修正およびセキュリティ更新のために更新およびパッチを当てる必要があり、更新およびパッチが必要とされるたびに停止する必要がある。停止すると、サーバは、コンピューティングデバイスにストリームを提供せず、サービスアップタイムを維持することをより困難にし、ＩＴが更新を調節およびロールアウトすることをより困難にする。（例えば、図５Ｂに示したような）クライアント計算アプローチは、同じタイプのボトルネックを有さない。
【０１９０】
[0203]プロセス９００、１０００、および１１００は、実行可能命令で構成された１つ以上のコンピュータシステムの制御下で実行されてもよく、ハードウェア、またはその組み合わせによって、１つ以上のプロセッサ上で集合的に実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現されてもよい。例えば、コンピュータシステムは、システム１０２、システム２０２、およびシステム３０２のうちの１つ以上を実現することができる。上記のように、コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ読取可能または機械読取可能記憶媒体上に記憶されてもよい。コンピュータ読取可能または機械読取可能記憶媒体は、非一時的であってもよい。
【０１９１】
[0204]図１２は、本出願のさまざまな実施形態が実現されてもよい例示的なコンピュータシステム１２００を図示している。システム１２００は、上述したコンピュータシステムのうちのいずれかを実現するために、使用されてもよい。図に示すように、コンピュータシステム１２００は、バスサブシステム１２０２を介して、多数の周辺サブシステムと通信する処理ユニット１２０４を含む。これらの周辺サブシステムは、処理加速ユニット１２０６、Ｉ／Ｏサブシステム１２０８、記憶サブシステム１２１８、および通信サブシステム１２２４を含んでいてもよい。記憶サブシステム１２１８は、有形コンピュータ読取可能記憶媒体１２２２およびシステムメモリ１２１０を含む。
【０１９２】
[0205]バスサブシステム１２０２は、コンピュータシステム１２００のさまざまなコンポーネントおよびサブシステムに、意図されたように互いに通信させるためのメカニズムを提供する。バスサブシステム１２０２は、単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態は、複数のバスを利用してもよい。バスサブシステム１２０２は、さまざまなバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリ制御装置、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。例えば、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ）ローカルバス、およびペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスを含んでいてもよいが、これらは、ＩＥＥＥ  Ｐ１３８６．１規格に合わせて製造されたメザニンバスとして実現することができる。
【０１９３】
[0206]１つ以上の集積回路（例えば、従来のマイクロプロセッサまたはマイクロ制御装置）として実現されてもよい処理ユニット１２０４は、コンピュータシステム１２００の動作を制御する。１つ以上のプロセッサが処理ユニット１２０４に含まれてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理ユニット１２０４は、各処理ユニットに含まれるシングルまたはマルチコアプロセッサを有する１つ以上の独立した処理ユニット１２３２および／または１２３４として実現されてもよい。他の実施形態では、処理ユニット１２０４はまた、２つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実現されてもよい。
【０１９４】
[0207]さまざまな実施形態では、処理ユニット１２０４は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時に実行するプログラムまたはプロセスを維持することができる。任意の所定の時間に、実行されるプログラムコードのうちのいくつかまたはすべては、プロセッサ１２０４および／または記憶サブシステム１２１８に存在することができる。適切なプログラミングを通じて、プロセッサ１２０４は、上述のさまざまな機能性を提供することができる。コンピュータシステム１２００は、デジタル信号プロセッサ（ＤＳＰ）、特殊目的プロセッサ、および／またはこれらに類するものを含むことができる、処理加速ユニット１２０６をさらに含むことができる。
【０１９５】
[0208]Ｉ／Ｏサブシステム１２０８は、ユーザインターフェース入力デバイスおよびユーザインターフェース出力デバイスを含んでいてもよい。ユーザインターフェース入力デバイスは、キーボード、マウスまたはトラックボールのようなポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有するオーディオ入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでいてもよい。ユーザインターフェース入力デバイスは、例えば、ジェスチャおよび発話コマンドを使用するナチュラルユーザインターフェースを通して、ユーザが、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラのような入力デバイスを制御し、それと相互作用することを可能にする、Ｍｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）運動センサのような運動感知および／またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェース入力デバイスはまた、ユーザから眼球活動（例えば、写真を撮るおよび／またはメニュー選択を行う間の「瞬き」）を検出し、眼球ジェスチャを入力デバイス（例えば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換する、Ｇｏｏｇｌｅ  Ｇｌａｓｓ瞬き検出器のような眼球ジェスチャ認識デバイスを含んでもよい。加えて、ユーザインターフェース入力デバイスは、ユーザが、音声コマンドを通して、音声認識システム（例えば、Ｓｉｒｉ（登録商標）ナビゲータ）と相互作用することを可能にする、音声認識感知デバイスを含んでもよい。
【０１９６】
[0209]ユーザインターフェース入力デバイスはまた、３次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカー、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤー、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザ距離計、および視線追跡デバイスのようなオーディオ／ビジュアルデバイスに限定されないが、これらを含んでいてもよい。加えて、ユーザインターフェース入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴映像法、ポジトロン放出断層撮影、医療用超音波検査デバイスのような医用画像入力デバイスを含んでもよい。ユーザインターフェース入力デバイスはまた、例えば、ＭＩＤＩキーボード、デジタル楽器のようなオーディオ入力デバイスを含んでいてもよい。
【０１９７】
[0210]ユーザインターフェース出力デバイスは、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイス等のような非視覚ディスプレイを含んでいてもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するもののようなフラットパネルデバイス、投影デバイス、タッチスクリーン、およびこれらに類するものであってもよい。一般的に、「出力デバイス」という用語の使用は、コンピュータシステム１２００からユーザまたは他のコンピュータに情報を出力するためのすべての可能なタイプのデバイスおよびメカニズムを含むように意図されている。例えば、ユーザインターフェース出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムのような、テキスト、グラフィックス、およびオーディオ／ビデオ情報を視覚的に伝えるさまざまなディスプレイデバイスに限定されないが、これらを含んでいてもよい。
【０１９８】
[0211]コンピュータシステム１２００は、システムメモリ１２１０内に現在位置付けられているものとして示されるソフトウェア要素を備える記憶サブシステム１２１８を備えてもよい。システムメモリ１２１０は、処理ユニット１２０４上でロード可能および実行可能であるプログラム命令とともに、これらのプログラムの実行の間に生成されるデータを記憶してもよい。
【０１９９】
[0212]コンピュータシステム１２００のコンフィギュレーションおよびタイプに依存して、システムメモリ１２１０は、（ランダムアクセスメモリ（ＲＡＭ）のような）揮発性および／または（リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ等のような）不揮発性であってもよい。ＲＡＭは、典型的には、処理ユニット１２０４によって直ちにアクセス可能であり、および／または現在動作および実行されているデータおよび／またはプログラムモジュールを含む。いくつかのインプリメンテーションでは、システムメモリ１２１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような、複数の異なるタイプのメモリを含んでいてもよい。いくつかのインプリメンテーションでは、起動の間のようなコンピュータシステム１２００内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、通常、ＲＯＭに記憶されてもよい。限定ではなく例として、システムメモリ１２１０は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）等を含んでいてもよいアプリケーションプログラム１２１２、プログラムデータ１２１４、およびオペレーティングシステム１２１６も図示している。例として、オペレーティングシステム１２１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／またはＬＩＮＵＸ（登録商標）オペレーティングシステムのさまざまなバージョン、（さまざまなＧＮＵ／ＬＩＮＵＸ（登録商標）オペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳ、およびこれらに類するものを含むがこれらに限定されない）さまざまな市販のＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステム、ならびに／あるいはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）１０ＯＳ、およびＰａｌｍ（登録商標）ＯＳオペレーティングシステムのような移動体オペレーティングシステムを含んでいてもよい。
【０２００】
[0213]記憶サブシステム１２１８はまた、いくつかの実施形態の機能性を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されるとき、上述の機能性を提供するソフトウェア（プログラム、コードモジュール、命令）は、記憶サブシステム１２１８に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット１２０４によって実行されてもよい。記憶サブシステム１２１８はまた、本願にしたがって使用されるデータを記憶するためのリポジトリを提供してもよい。
【０２０１】
[0214]記憶サブシステム１２００はまた、コンピュータ読取可能記憶媒体１２２２にさらに接続されることができるコンピュータ読取可能記憶媒体リーダ１２２０を含んでいてもよい。コンピュータ読取可能記憶媒体１２２２は、システムメモリ１２１０と組み合わせて、ともに、およびオプション的に、遠隔、ローカル、固定、および／または取り外し可能記憶デバイスに加えて、コンピュータ読取可能情報を一時的におよび／またはより永続的に含み、記憶し、送信し、取り出すための記憶媒体を包括的に表してもよい。
【０２０２】
[0215]コードまたはコードの部分を含むコンピュータ読取可能記憶媒体１２２２はまた、情報の記憶および／または送信のための任意の方法またはテクノロジーで実現される揮発性および不揮発性、取り外し可能および非取り外し可能媒体に限定されないがこれらのような記憶媒体および通信媒体を含む、当技術分野で知られているまたは使用される任意の適切な媒体を含むことができる。これは、ＲＡＭ、ＲＯＭ、電子的消去可能プログラム可能ＲＯＭ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリまたは他のメモリテクノロジー、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、あるいは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは他の有形コンピュータ読取可能媒体のような有形コンピュータ読取可能記憶媒体を含むことができる。これはまた、データ信号、データ送信、または所望の情報を送信するために使用されることができ、コンピューティングシステム１２００によってアクセスされることができる他の何らかの媒体のような、非有形コンピュータ読取可能媒体を含むことができる。
【０２０３】
[0216]例として、コンピュータ読取可能記憶媒体１２２２は、非取り外し可能不揮発性磁気媒体から読み取るかまたはそれに書き込むハードディスクドライブ、取り外し可能不揮発性磁気ディスクから読み取るかまたはそれに書き込む磁気ディスクドライブ、ならびにＣＤ  ＲＯＭ、ＤＶＤ、およびＢｌｕ−Ｒａｙ（登録商標）ディスクのような取り外し可能不揮発性光ディスクまたは他の光媒体から読み取るかまたはそれに書き込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体１２２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープ、およびこれらに類するものを含んでいてもよいが、これらに限定されない。コンピュータ読取可能記憶媒体１２２２はまた、フラッシュメモリベースのソリッドステートドライブ（ＳＳＤ）、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭ、およびこれらに類するもののような不揮発性メモリに基づくＳＳＤ、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤの組み合わせを使用するハイブリッドＳＳＤのような揮発性メモリに基づくＳＳＤを含んでいてもよい。ディスクドライブおよびこれらに関係付けられているコンピュータ読取可能媒体は、コンピュータシステム１２００のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶装置を提供してもよい。
【０２０４】
[0217]通信サブシステム１２２４は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム１２２４は、他のシステムからデータを受信し、コンピュータシステム１２２０から他のシステムにデータを送信するためのインタフェースとして機能する。例えば、通信サブシステム１２２４は、コンピュータシステム１２００がインターネットを介して１つ以上のデバイスに接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム１２２４は、（例えば、セルラ電話機テクノロジー、３Ｇ、４Ｇ、またはＥＤＧＥ（ｅｎｈａｎｓｅｄ  ｄａｔａ  ｒａｔｅｓ  ｆｏｒ  ｇｌｏｂａｌ  ｅｖｏｌｕｔｉｏｎ）のような高度データネットワークテクノロジー、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、または他の移動体通信技術、またはこれらの任意の組み合わせ）を使用する）ワイヤレス音声および／またはデータネットワークにアクセスするための無線周波数（ＲＦ）トランシーバコンポーネント、グローバルポジショニングシステム（ＧＰＳ）受信機コンポーネント、および／または他のコンポーネントを含むことができる。いくつかの実施形態では、通信サブシステム１２２４は、ワイヤレスインターフェースに加えて、またはその代わりに、ワイヤードネットワーク接続性（例えば、イーサネット（登録商標））を提供することができる。
【０２０５】
[0218]いくつかの実施形態では、通信サブシステム１２２４はまた、コンピュータシステム１２００を使用してもよい１人以上のユーザの代わりに、構造化および／または非構造化データフィード１２２６、イベントストリーム１２２７、イベント更新１２３０、およびこれらに類するもののような形態の入力通信を受信してもよい。
【０２０６】
[0219]例として、通信サブシステム１２２４は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新、リッチサイトサマリー（ＲＳＳ）フィードなどのウェブフィード、および／または１つ以上の第３者情報源からのリアルタイム更新のような、ソーシャルネットワークおよび／または他の通信サービスのユーザからリアルタイムでデータフィード１２２６を受信するように構成されてもよい。
【０２０７】
[0220]加えて、通信サブシステム１２２４はまた、連続的なデータストリームの形態でデータを受信するように構成されてもよく、これは、明示的な終了を伴わずに本質的に連続的または無制限であってもよい、リアルタイムイベントのイベントストリーム１２２８および／またはイベント更新１２３０を含んでいてもよい。連続データを生成するアプリケーションの例は、例えば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール（例えば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車トラフィック監視、およびこれらに類するものを含んでいてもよい。
【０２０８】
[0221]通信サブシステム１２２４はまた、構造化および／または非構造化データフィード１２２６、イベントストリーム１２２８、イベント更新１２３０、およびこれらに類するものを、コンピュータシステム１２００に結合された１つ以上のストリーミングデータソースコンピュータと通信してもよい１つ以上のデータベースに出力するように構成されてもよい。
【０２０９】
[0222]コンピュータシステム１２００は、ハンドヘルドポータブルデバイス（例えば、ｉＰｈｏｎｅ（登録商標）セルラ電話機、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（例えば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、または、他のタイプのデータ処理システムを含む、さまざまなタイプのうちの１つであることがある。
【０２１０】
[0223]コンピュータおよびネットワークの常に変化する性質により、図に描かれるコンピュータシステム１２００の説明は、特定の例としてのみ意図される。図に描かれるシステムよりも多いまたは少ないコンポーネントを有する多くの他のコンフィギュレーションが可能である。例えば、カスタマイズされたハードウェアも使用してもよく、ならびに／あるいは、特定の要素は、ハードウェア、ファームウェア、（アプレットを含む）ソフトウェア、または、組み合わせで実現してもよい。さらに、ネットワーク入力／出力デバイスのような他のコンピューティングデバイスへの接続を用いてもよい。ここで提供される開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の方法および／または手法を認識するだろう。
【０２１１】
[0224]前述の明細書では、本出願の態様は、その特定の実施形態を参照して説明されるが、当業者は、本出願がそれに限定されないことを認識するだろう。上述の出願のさまざまな特徴および態様は、個別にまたは共に使用することができる。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、ここで説明したもの超えるの任意の数の環境および用途において利用することができる。それゆえに、本明細書および図面は、限定的よりもむしろ、実例的にみなすべきである。
【０２１２】
[0225]  特定の要件にしたがって、実質的なバリエーションがなされてもよい。例えば、カスタマイズされたハードウェアも使用してもよく、および／または、特定の要素は、ハードウェア、（アプレット等のようなポータブルソフトウェアを含む）ソフトウェア、または、両方で実現してもよい。さらに、ネットワーク入力／出力デバイスのような、他のアクセスまたはコンピューティングデバイスへの接続を用いてもよい。
【０２１３】
[0226]前述の明細書では、本出願の態様は、その特定の実施形態を参照して説明されているが、当業者は、本出願の主題がそれに限定されないことを認識するだろう。上記で説明した例のさまざまな特徴および態様は、個々にまたは共に使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、ここで説明したものを超える任意の数の環境および用途において利用することができる。それゆえに、本明細書および図面は、限定的よりもむしろ、実例的にみなすべきである。
【０２１４】
[0227]上記の説明では、実例の目的で、方法を特定の順序で説明した。代替実施形態では、方法は、説明した順序とは異なる順序で実行されてもよいことを認識されたい。また、上述の方法は、ハードウェアコンポーネントによって実行されてもよく、または機械実行可能命令のシーケンスで具現化されてもよく、機械実行可能命令のシーケンスは、命令を有するプログラムされた汎用または特殊目的プロセッサまたは論理回路のような機械に、方法を実行させるために使用されてもよいことを認識されたい。これらの機械実行可能命令は、ＣＤ−ＲＯＭまたは他のタイプの光ディスク、フロッピー（登録商標）ディスケット、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、フラッシュメモリ、あるいは電子命令を記憶するのに適した他のタイプの機械読取可能媒体のような、１つ以上の機械読取可能媒体上に記憶されてもよい。代替的に、方法は、ハードウェアおよびソフトウェアの組み合わせによって実行されてもよい。
【０２１５】
[0228]コンポーネントがある動作を実行するように構成されるものとして説明される場合、そのようなコンフィギュレーションは、例えば、動作を実行するように電子回路または他のハードウェアを設計することによって、動作を実行するようにプログラム可能電子回路（例えば、マイクロプロセッサまたは他の適切な電子回路）をプログラミングすることによって、またはそれらの任意の組み合わせによって達成できる。
【０２１６】
[0229]本出願の実例的な実施形態をここで詳細に説明してきたが、本発明の概念は、他の方法でさまざまに具現化および採用されてもよいこと、ならびに添付の特許請求の範囲は、従来技術によって限定されるものを除いて、そのようなバリエーションを含むように解釈されることが意図されることを理解されたい。
【図１】
2021514167.tif 000003
【図２】
2021514167.tif 000004
【図３】
2021514167.tif 000005
【図４】
2021514167.tif 000006
【図５Ａ】
2021514167.tif 000007
【図５Ｂ】
2021514167.tif 000008
【図６】
2021514167.tif 000009
【図７】
2021514167.tif 000010
【図８】
2021514167.tif 000011
【図９】
2021514167.tif 000012
【図１０】
2021514167.tif 000013
【図１１】
2021514167.tif 000014
【図１２】
2021514167.tif 000015
【国際調査報告】
2021514167.tif 000016
2021514167.tif 000017