IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ビテック、インコーポレイテッドの特許一覧

<>
  • 特許-メディアコンテンツの配信および再生 図1
  • 特許-メディアコンテンツの配信および再生 図2
  • 特許-メディアコンテンツの配信および再生 図3
  • 特許-メディアコンテンツの配信および再生 図4
  • 特許-メディアコンテンツの配信および再生 図5A
  • 特許-メディアコンテンツの配信および再生 図5B
  • 特許-メディアコンテンツの配信および再生 図6
  • 特許-メディアコンテンツの配信および再生 図7
  • 特許-メディアコンテンツの配信および再生 図8
  • 特許-メディアコンテンツの配信および再生 図9
  • 特許-メディアコンテンツの配信および再生 図10
  • 特許-メディアコンテンツの配信および再生 図11
  • 特許-メディアコンテンツの配信および再生 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-24
(45)【発行日】2023-06-01
(54)【発明の名称】メディアコンテンツの配信および再生
(51)【国際特許分類】
   H04N 21/438 20110101AFI20230525BHJP
   H04L 67/00 20220101ALI20230525BHJP
【FI】
H04N21/438
H04L67/00
【請求項の数】 20
(21)【出願番号】P 2020566195
(86)(22)【出願日】2019-02-05
(65)【公表番号】
(43)【公表日】2021-06-03
(86)【国際出願番号】 US2019016696
(87)【国際公開番号】W WO2019160714
(87)【国際公開日】2019-08-22
【審査請求日】2021-11-24
(31)【優先権主張番号】62/631,480
(32)【優先日】2018-02-15
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/754,441
(32)【優先日】2018-11-01
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】520308422
【氏名又は名称】ビテック、インコーポレイテッド
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【弁理士】
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100219542
【弁理士】
【氏名又は名称】大宅 郁治
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】ガーテン、エリエゼール
(72)【発明者】
【氏名】ルプ、ドロール
(72)【発明者】
【氏名】ケニング、ラン
【審査官】大西 宏
(56)【参考文献】
【文献】特表2010-515345(JP,A)
【文献】特表2017-534953(JP,A)
【文献】米国特許出願公開第2014/0282777(US,A1)
【文献】米国特許出願公開第2014/0282784(US,A1)
【文献】米国特許出願公開第2015/0281299(US,A1)
【文献】国際公開第2016/063780(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 -21/858
H04L 67/00 -67/75
(57)【特許請求の範囲】
【請求項1】
メディアデータを処理する方法であって、
コンピューティングデバイスのマルチキャスト処理システムにおいて、メディアコンテンツのマルチキャストストリームを受信することと、
前記コンピューティングデバイスのマルチキャスト処理システムによって、前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することと、
前記コンピューティングデバイスのマルチキャスト処理システムと前記コンピューティングデバイスのブラウザの両方にローカルであるハイパーテキスト転送プロトコル(HTTP)ポートを介して前記コンピューティングデバイスのマルチキャスト処理システムによって、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを、再生のための前記コンピューティングデバイスのブラウザに送信することと、を含み、前記メディアコンテンツのマルチキャストストリームの1つ以上のデータフラグメントは、1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記HTTPポートから前記ブラウザに送信される、方法。
【請求項2】
前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることをさらに含み、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、請求項1に記載の方法。
【請求項3】
前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のペイロードを解読することをさらに含む、請求項1に記載の方法。
【請求項4】
前記1つ以上のデータフラグメントを前記ブラウザに送信する前に、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを暗号化することをさらに含む、請求項1に記載の方法。
【請求項5】
前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを表示することをさらに含む、請求項1に記載の方法。
【請求項6】
前記メディアコンテンツのマルチキャストストリームの前記データフラグメントを記憶することをさらに含む、請求項1に記載の方法。
【請求項7】
前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することをさらに含む、請求項1に記載の方法。
【請求項8】
前記メディアコンテンツのマルチキャストストリームのうちの前記記憶された1つ以上のビデオフレームは、トランスコードされない、請求項7に記載の方法。
【請求項9】
前記コンピューティングデバイスによって、前記ブラウザを使用して、前記記憶された1つ以上のビデオフレームを表示することをさらに含む、請求項7に記載の方法。
【請求項10】
前記コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、
前記追加のメディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを前記コンピューティングデバイスのディスプレイの第1の部分に表示することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記追加のメディアコンテンツのマルチキャストストリームのうちの前記記憶された1つ以上のビデオフレームを前記コンピューティングデバイスのディスプレイの第2の部分に表示することとをさらに含む、請求項1に記載の方法。
【請求項11】
前記コンピューティングデバイスに関係付けられた性能データを取得することと、
前記コンピューティングデバイスに関係付けられたユーザデータを取得することと、前記ユーザデータは、前記コンピューティングデバイスのメディアプレーヤを使用してユーザによって視聴される1つ以上のタイプのチャネル、および、前記ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも1つを含み、
特定のチャネルが前記コンピューティングデバイス上で前記ユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得することとをさらに含み、前記品質推奨は、前記性能データおよび前記ユーザデータに基づく、請求項1に記載の方法。
【請求項12】
前記性能データおよび前記ユーザデータをサーバに送ることと、
前記サーバから前記品質推奨を受信することとをさらに含む、請求項11に記載の方法。
【請求項13】
前記トランスコーディング品質は、解像度、フレームレート、および、ビデオのビットレートのうちの少なくとも1つを含む、請求項11に記載の方法。
【請求項14】
前記品質推奨は、機械学習を使用して決定される、請求項11に記載の方法。
【請求項15】
前記機械学習は、ニューラルネットワークに基づく、請求項14に記載の方法。
【請求項16】
マルチキャスト処理システムあって、
1つ以上のプロセッサと、
命令を含む1つ以上の非一時的コンピュータ読取可能記憶媒体とを備え、
前記命令は、前記1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
前記マルチキャスト処理システムとブラウザの両方にローカルであるハイパーテキスト転送プロトコル(HTTP)ポートを介して、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを、再生のためのブラウザに送信させ、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントは、1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記HTTPポートから前記ブラウザに送信される、マルチキャスト処理システム。
【請求項17】
命令をさらに含み、
前記命令は、前記1つ以上のプロセッサ上で実行されるとき、前記1つ以上のプロセッサに、
前記メディアコンテンツのマルチキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードさせ、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、請求項16に記載のマルチキャスト処理システム。
【請求項18】
命令を含み、マルチキャスト処理システムの非一時的機械読取可能記憶媒体中で有形に具現化されるコンピュータプログラムであって、
前記命令は、前記マルチキャスト処理システムの1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
コンピューティングデバイスのマルチキャスト処理システムと前記コンピューティングデバイスのブラウザの両方にローカルである前記コンピューティングデバイスのハイパーテキスト転送プロトコル(HTTP)ポートを介して、前記メディアコンテンツのマルチキャストストリームの1つ以上のデータフラグメントを、再生のためのコンピューティングデバイスのブラウザに送信させ、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントは、1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記HTTPポートから前記ブラウザに送信される、コンピュータプログラム。
【請求項19】
命令をさらに含み、前記命令が前記1つ以上のプロセッサ上で実行されるとき、前記マルチキャスト処理システムに、
前記マルチキャスト処理システムに関係付けられた性能データを取得させ、
前記マルチキャスト処理システムに関係付けられたユーザデータを取得させ、前記ユーザデータは、前記マルチキャスト処理システムのメディアプレーヤを使用してユーザによって視聴される1つ以上のタイプのチャネル、および、前記ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも1つを含み、
特定のチャネルが前記マルチキャスト処理システム上で前記ユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得させ、前記品質推奨は、前記性能データおよび前記ユーザデータに基づく、請求項16に記載のマルチキャスト処理システム。
【請求項20】
命令をさらに含み、前記命令が前記マルチキャスト処理システムによって実行されるとき、前記マルチキャスト処理システムに、
第1のメディアフォーマットから第2のメディアフォーマットに前記メディアコンテンツのマルチキャストストリームをトランスコードさせ、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、請求項1に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]本願は、2018年2月15日に出願された米国仮出願番号第62/631,480号の利益を主張し、また、2018年11月1日に出願された米国仮出願番号第62/754,441号の利益を主張し、これらは両方とも、すべの目的のために、その全体が参照によりここに組み込まれている。
【分野】
【0002】
[0002]本開示は、一般的にメディアコンテンツの配信および再生に関する。例えば、標準的なウェブブラウザおよび/または他の適切な再生プラットフォーム上で再生するための、メディアコンテンツの安全で、短い待ち時間の、帯域幅が最適化された配信を提供するためのシステム、方法、装置、およびコンピュータ読取可能媒体が提供される。
【概要】
【0003】
[0003]本開示のある態様および特徴は、標準的なウェブブラウザおよび/または他の適切な再生プラットフォーム上で再生するためのメディアコンテンツの配信に関連する。例えば、コスト、待ち時間、フットプリント、および全体的なユーザ体験を損なうことなく、ならびにブラウザプラグインおよび/または拡張に依存する必要なくメディアコンテンツの再生をサポートするために、ここで説明するシステムおよび技術は、ネットワーク(例えば、企業ネットワークまたは他の組織ネットワーク、あるいは他の何らかの適切なネットワーク)を通して、任意のタイプのウェブベースブラウザおよび/または他のタイプのウェブベースメディアプレーヤーへのメディアコンテンツの配信および再生を提供する。いくつかの例では、メディアコンテンツは、ビデオおよびオーディオを有するデジタルインターネットプロトコル(IP)ベースのメディアストリーム、または他の適切なメディアコンテンツを含むことができる。ここで説明するシステムおよび技術は、単一のビデオまたは複数のビデオ(例えば、高精細度ビデオまたは他の適切なビデオコンテンツ)の短い待ち時間、滑らかな再生を可能にする。さまざまな例では、システムおよび技術は、異なるコンテンツ、マルチウィンドウサポート、オーディオサポート、メタデータサポート(例えば、Key-Length-Value(KLV)メタデータ、STANAGメタデータ、および/または他のタイプのメタデータ)、および暗号化サポート(例えば、高度暗号化規格(AES)または他の適切な暗号化規格)間の移行を可能にする。例えば、いくつかのケースでは、ここで説明するシステムおよび技術は、メディアコンテンツのオーディオおよびビデオが同期したままである、(単一のビデオを有する)単一のビューと(複数のビデオを有する)モザイクビューとの間で移行する能力を提供することができる。
【0004】
[0004]少なくとも1つの例にしたがい、メディアデータを処理する方法を提供する。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。方法は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することをさらに含む。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることをさらに含む。方法は、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信することをさらに含む。
【0005】
[0005]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置を提供する。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するようにさらに構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードするようにさらに構成され、トランスコードすることができる。プロセッサは、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信するようにさらに構成され、送信することができる。
【0006】
[0006]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードさせ、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信させる。
【0007】
[0007]別の例において、ワイヤレス通信のための装置を提供する。装置は、メディアコンテンツのマルチキャストストリームを受信する手段を含む。装置は、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段をさらに含む。装置は、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコーディングする手段をさらに含む。装置は、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信する手段をさらに含む。
【0008】
[0008]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、装置またはコンピューティングデバイスのローカルポート(例えば、ローカルのハイパーテキスト転送プロトコル(HTTP)ポート)上でトランスコードされたメディアコンテンツのユニキャストストリームを受信することを含むことができる。このようなケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、ウェブソケットプロトコルを使用して、ポート(例えば、HTTPポート)からブラウザに送信される。
【0009】
[0009]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのマルチキャストストリームのうちの1つ以上のペイロードを解読することを含むことができる。
【0010】
[0010]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザ(またはブラウザによって実現されるメディアプレーヤー)を使用して、トランスコードされたメディアコンテンツのユニキャストストリームを表示することを含むことができる。
【0011】
[0011]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することを含むことができる。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされない。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザ(またはブラウザによって実現されるメディアプレーヤー)を使用して、記憶された1つ以上のビデオフレームを表示することを含むことができる。
【0012】
[0012]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置において、追加のメディアコンテンツのマルチキャストストリームを受信することを含むことができる。このようなケースでは、プロセスは、コンピューティングデバイスまたは装置によって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することとを含む。このようなケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイス(または装置)によって、コンピューティングデバイス(または装置)のディスプレイの第1の部分にトランスコードされたメディアコンテンツのユニキャストストリームを表示することと、ブラウザを使用するコンピューティングデバイス(または装置)によって、コンピューティングデバイス(または装置)のディスプレイの第2の部分に追加のメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームを表示することとをさらに含むことができる。
【0013】
[0013]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、(コンピューティングデバイスまたは装置によって)コンピューティングデバイス(または装置)のCPU消費量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができる。このような例では、フレームの数は、CPU消費量に関係付けられている情報に応答して調節できる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0014】
[0014]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0015】
[0015]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによるランダムアクセスメモリ(RAM)使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、RAM使用量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0016】
[0016]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0017】
[0017]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0018】
[0018]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0019】
[0019]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームからメタデータを抽出することを含むことができ、トランスコードされたメディアコンテンツのユニキャストストリームはメタデータを含まない。メタデータは、KLVメタデータ(例えば、フレームアラインされた、フレーム精度(frame-accurate)KLVメタデータ)、または他の適切なメタデータを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームから抽出されたメタデータをトランスコードされたメディアコンテンツのユニキャストストリームと組み合わせることと、組み合わされた抽出されたメタデータとトランスコードされたメディアコンテンツのユニキャストストリームとを表示することとを含むことができる。
【0020】
[0020]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、マルチキャストストリームのうちの1つ以上のペイロードを、コンピューティングデバイス(または装置)のメモリに記録することを含むことができる。
【0021】
[0021]いくつかのケースでは、プラグインは、メディアコンテンツのユニキャストストリームを生成するために、およびメディアコンテンツのユニキャストストリームをトランスコードするために使用されない。
【0022】
[0022]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの1つ以上のパケットに対して1つ以上のタイムスタンプを生成することと、1つ以上のタイムスタンプをメディアコンテンツのユニキャストストリームのうちの1つ以上のパケットに関係付けることとを含むことができる。このような例では、メディアコンテンツのユニキャストストリームのオーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを追加することができる。
【0023】
[0023]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ビデオのマルチキャストストリームを受信するための要求を生成することと、ビデオソースに要求を送信することとを含むことができ、ビデオのマルチキャストストリームは、要求に応答して受信される。
【0024】
[0024]いくつかの例では、メディアコンテンツは、ビデオコンテンツおよびオーディオコンテンツを含む。
【0025】
[0025]少なくとも1つの他の例にしたがうと、メディアデータを処理する方法が提供される。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することとを含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することをさらに含むことができる。方法は、ウェブソケットプロトコルを使用する1つ以上のTCPチャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを再生のためのブラウザに送信することをさらに含むことができる。
【0026】
[0026]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置が提供される。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するように構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶するように構成され、記憶することができる。プロセッサは、ウェブソケットプロトコルを使用する1つ以上のTCPチャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを再生のためのブラウザに送信するように構成され、送信することができる。
【0027】
[0027]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶させ、ウェブソケットプロトコルを使用する1つ以上のTCPチャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを再生のためのブラウザに送信させる。
【0028】
[0028]別の例において、メディアデータを処理するための装置を提供する。装置は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信する手段と、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段とを含む。装置は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶する手段をさらに含む。装置は、ウェブソケットプロトコルを使用する1つ以上のTCPチャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを再生のためのブラウザに送信する手段をさらに含む。
【0029】
[0029]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザを使用して、記憶された1つ以上のビデオフレームを表示することを含むことができる。
【0030】
[0030]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることを含むことができる。このような例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ウェブソケットプロトコルを使用して少なくとも1つのTCPチャネルを通して、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのブラウザに送信することを含むことができる。このような例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスまたは装置によって、ブラウザを使用してトランスコードされたメディアコンテンツのユニキャストストリームを表示することを含むことができる。いくつかのケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、アクティブストリームとしてのメディアコンテンツの選択に応答して、記憶された1つ以上のビデオフレームの代わりにブラウザを使用して表示される。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされない。
【0031】
[0031]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイス(または装置)によって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することとを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイス(または装置)によって、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイス(または装置)によって、トランスコードされたメディアコンテンツのユニキャストストリームをアクティブストリームとしてコンピューティングデバイス(または装置)のディスプレイの第1の部分に表示することと、ブラウザを使用するコンピューティングデバイス(または装置)によって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームをコンピューティングデバイス(または装置)のディスプレイの第2の部分に表示することとをさらに含むことができる。
【0032】
[0032]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイス(または装置)によって、追加のメディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることを含むことができる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第2の部分に表示されたコンテンツの選択に対応する入力を受信することを含むことができ、コンテンツは、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを含む。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第2の部分に表示されたコンテンツの選択に応答して、トランスコードされた追加のメディアコンテンツのユニキャストストリームを、コンピューティングデバイスのディスプレイの第2の部分にアクティブストリームとして表示することを含むことができる。上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ディスプレイの第2の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第1の部分にメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームを表示することをさらに含むことができる。
【0033】
[0033]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、(コンピューティングデバイスまたは装置によって)コンピューティングデバイス(または装置)のCPU消費量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができる。このような例では、フレームの数は、CPU消費量に関係付けられている情報に応答して調節できる。いくつかのケースでは、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0034】
[0034]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、CPU消費量に関係付けられている情報が、CPU消費が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0035】
[0035]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによるランダムアクセスメモリ(RAM)使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、RAM使用量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0036】
[0036]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、RAM使用量に関係付けられている情報が、RAM使用量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0037】
[0037]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0038】
[0038]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0039】
[0039]少なくとも1つの他の例にしたがうと、メディアデータを処理する別の方法が提供される。方法は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することをさらに含むことができる。方法は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームをデータフラグメントに分割することと、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントを再生のためのブラウザに送信することとをさらに含むことができる。
【0040】
[0040]別の例では、ビデオデータを記憶するように構成されたメモリとプロセッサとを含む、メディアデータを処理するための装置が提供される。プロセッサは、メディアコンテンツのマルチキャストストリームを受信するように構成され、受信することができる。プロセッサは、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成するように構成され、生成することができる。プロセッサは、メディアコンテンツのユニキャストストリームをデータフラグメントに分割するように構成され、分割することができる。プロセッサは、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、メディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントを再生のためのブラウザに送信するように構成され、送信することができる。
【0041】
[0041]別の例では、命令を記憶している非一時的コンピュータ読取可能媒体が提供され、命令は、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサに、メディアコンテンツのマルチキャストストリームを受信させ、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成させ、メディアコンテンツのユニキャストストリームをデータフラグメントに分割させ、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、メディアコンテンツのうちのユニキャストストリームの1つ以上のデータフラグメントを再生のためのブラウザに送信させる。
【0042】
[0042]別の例において、ワイヤレス通信のための装置を開示する。装置は、メディアコンテンツのマルチキャストストリームを受信する手段を含む。装置は、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成する手段をさらに含むことができる。装置は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームをデータフラグメントに分割する手段をさらに含むことができる。装置は、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、メディアコンテンツのうちのユニキャストストリームの1つ以上のデータフラグメントを再生のためのブラウザに送信する手段をさらに含むことができる。
【0043】
[0043]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることを含むことができる。メディアコンテンツのユニキャストストリームを分割することは、トランスコードされたメディアコンテンツのユニキャストストリームをデータフラグメントに分割することを含むことができる。
【0044】
[0044]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ローカルのハイパーテキスト転送プロトコル(HTTP)ポート上でメディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントを受信することを含むことができる。1つ以上のデータフラグメントは、ウェブソケットプロトコルを使用してHTTPポートからブラウザに送信される。
【0045】
[0045]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのマルチキャストストリームのうちの1つ以上のペイロードを解読することを含むことができる。
【0046】
[0046]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、1つ以上のデータフラグメントをブラウザに送信する前に、メディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントを暗号化することを含むことができる。
【0047】
[0047]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、ブラウザを使用するコンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントを表示することを含むことができる。
【0048】
[0048]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのデータフラグメントを記憶することを含むことができる。
【0049】
[0049]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することを含むことができる。いくつかのケースでは、メディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされない。いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスによって、ブラウザを使用して、記憶された1つ以上のビデオフレームを表示することを含むことができる。
【0050】
[0050]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することと、ブラウザを使用するコンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの1つ以上のデータフラグメントをコンピューティングデバイスのディスプレイの第1の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第2の部分に表示することとを含むことができる。
【0051】
[0051]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、コンピューティングデバイスに関係付けられた性能データを取得することと、ユーザデータは、コンピューティングデバイスのメディアプレーヤーを使用してユーザによって視聴される1つ以上のタイプのチャネル、および、ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも1つを含み、コンピューティングデバイスに関係付けられたユーザデータを取得することと、特定のチャネルがコンピューティングデバイス上でユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得することとを含むことができ、品質推奨は、性能データおよびユーザデータに基づく。
【0052】
[0052]いくつかの例では、上記で説明した方法、装置、および非一時的コンピュータ読取可能媒体は、性能データおよびユーザデータをサーバに送ることと、サーバから品質推奨を受信することとを含むことができる。
【0053】
[0053]いくつかの例では、トランスコーディング品質は、解像度、フレームレート、およびビデオのビットレートのうちの少なくとも1つを含む。
【0054】
[0054]いくつかの例では、品質推奨は、機械学習を使用して決定される。いくつかのケースでは、機械学習はニューラルネットワークに基づく。
【0055】
[0055]本概要は、請求項中に記載されている主題事項のキーまたは本質的な特徴を識別することを意図しておらず、請求項中に記載されている主題事項の範囲を独立して決定するようにも意図していない。本特許の明細書全体の適切な部分、任意のまたはすべての図面、および各請求項を参照することによって、主題事項を理解すべきである。
【0056】
[0056]上記は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照するとより明らかになるだろう。
【図面の簡単な説明】
【0057】
[0057]本出願の例示的な実施形態は、以下の図面を参照して以下で詳細に説明する。
図1】[0058] 図1は、いくつかの例にしたがう、例示的なシステムアーキテクチャを示すブロックダイヤグラムである。
図2】[0059] 図2は、いくつかの例にしたがう、ビデオコンテンツを処理するためにコンピューティングデバイスによって使用されるコンポーネントの例を示すブロックダイヤグラムである。
図3】[0060] 図3は、いくつかの例にしたがう、ビデオコンテンツを処理するためにコンピューティングデバイスによって使用されるコンポーネントの別の例を示すブロックダイヤグラムである。
図4】[0061] 図4は、いくつかの例にしたがう、トランスポートストリームの異なるペイロードダイヤグラムを示す概念のダイヤグラムである。
図5A】[0062] 図5Aは、マルチユニキャストビデオ配信システムの例を示すダイヤグラムである。
図5B】[0063] 図5Bは、いくつかの例にしたがう、マルチキャストビデオ配信システムの例を示すダイヤグラムである。
図6】[0064] 図6は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する例示的なディスプレイを図示するピクチャである。
図7】[0065] 図7は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する別の例示的なディスプレイを図示するピクチャである。
図8】[0066] 図8は、いくつかの例にしたがう、ビデオストリームのモザイクビューを有する別の例示的なディスプレイを図示するピクチャである。
図9】[0067] 図9は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの例を図示するフローダイヤグラムである。
図10】[0068] 図10は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの別の例を図示するフローダイヤグラムである。
図11】[0069] 図11は、いくつかの例にしたがう、メディアデータを処理するためのプロセスの別の例を図示するフローダイヤグラムである。
図12】[0070] 図12は、いくつかの例にしたがう、コンピュータシステムの例のブロックダイヤグラムである。
【詳細な説明】
【0058】
[0071]以下の記述では、説明の目的のために、本願の実施形態の徹底した理解を提供するために、特定の詳細を述べる。しかしながら、これらの特定の詳細なしに、さまざま実施形態を実施できることが理解されるだろう。図面および説明は、限定的なものではない。
【0059】
[0072]次の説明は例示的な実施形態のみを提供するものであり、本開示の範囲、適用可能性、あるいは、コンフィギュレーションを限定することは意図されていない。むしろ、例示的な実施形態の次の説明は、例示した実施形態を実現することを可能にする説明を当業者に提供するだろう。添付の特許請求の範囲において述べるような本願の精神および範囲から逸脱することなく、要素の機能および構成においてさまざまな変更がなされてもよい。
【0060】
[0073]以下の説明において、コンフィギュレーションの完全な理解を提供するために、特定の詳細が与えられている。しかしながら、実施形態がこれらの特定の詳細なしに実行されてもよいことが、当業者によって理解されるだろう。例えば、回路、システム、ネットワーク、プロセス、および、他のコンポーネントは、不必要な詳細で実施形態を曖昧にしないために、ブロックダイヤグラム形におけるコンポーネントとして示される。他の例では、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施形態を曖昧にすることを避けるために、不必要な詳細なしで示されている。
【0061】
[0074]個々の実施形態は、プロセスとして説明されてもよいことにも留意すべきであり、これは、フローチャート、フローダイヤグラム、データフローダイヤグラム、構造ダイヤグラム、またはブロックダイヤグラムとして描かれる。フローチャートはシーケンシャルなプロセスとして動作を記述するかもしれないが、動作の多くは並行で、または同時に実行できる。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれない追加のステップを有することができる。プロセスは、方法、関数、手順、サブルーティン、サブプログラム、等に対応してもよい。プロセスが関数に対応する場合、その終了は、関数が呼び出し関数または主関数に戻ることに対応する。
【0062】
[0075]「機械読取可能記憶媒体」または「コンピュータ読取可能記憶媒体」という用語は、ポータブルまたは非ポータブル記憶デバイス、光学記憶デバイス、ならびに、命令および/またはデータを記憶、包含、あるいは搬送することができるさまざまな他の媒体に限定されないが、これらを含んでいてもよい。機械読取可能記憶媒体またはコンピュータ読取可能記憶媒体は、データを記憶することができ、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的電子信号を含まない、非一時的媒体を含んでいてもよい。非一時的媒体の例は、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)のような光学記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含んでいてもよいが、これらに限定されない。コンピュータプログラム製品は、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは、命令、データ構造、または、プログラムセグメントの任意の組み合わせを表してもよい、コードおよび/または機械実行可能命令を含んでいてもよい。コードセグメントは、情報、データ、引数、パラメータ、または、メモリコンテンツを、渡すおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データ、または、他のデータは、メモリの共有、メッセージの受け渡し、トークンの受け渡し、ネットワーク送信、または、他の送信技術を含む任意の適切な手段を使用して、受け渡しされ、転送され、送信されてもよい。
【0063】
[0076]さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または、これらの任意の組み合わせによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(例えば、コンピュータプログラム製品)は、機械読取可能媒体中に記憶されてもよい。プロセッサは必要なタスクを実行してもよい。
【0064】
[0077]図のうちのいくつかにおいて描かれるシステムは、さまざまなコンフィギュレーションで提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステムにおける1つ以上のネットワークにわたって分散される分散システムとして構成されてもよい。
【0065】
[0078]以下でさらに詳細に説明するように、本開示のある態様および特徴は、標準的なウェブブラウザおよび/または他の適切な再生プラットフォーム(例えば、ウェブベースのメディアプレーヤー、または、他の適切なタイプのメディアプレーヤー)上で再生するためのメディアコンテンツの処理および配信に関する。例えば、コスト、待ち時間、フットプリント、および全体的なユーザ体験を損なうことなく、ならびにブラウザプラグインおよび/または拡張に依存する必要なく、メディアコンテンツの再生をサポートするために、ここで説明するシステムおよび技術は、ネットワーク(例えば、企業ネットワークもしくは他の組織ネットワーク、または、他の何らかの適切なネットワーク)を通して、任意のタイプのウェブベースブラウザおよび/または他のタイプのウェブベースメディアプレーヤーへのメディアコンテンツの配信および再生を提供する。いくつかの例では、メディアコンテンツは、ビデオおよびオーディオを有するデジタルインターネットプロトコル(IP)ベースのメディアストリーム、または、他の適切なメディアコンテンツを含むことができる。ここで説明するシステムおよび技術は、単一のビデオまたは複数のビデオ(例えば、高精細度ビデオまたは他の適切なビデオコンテンツ)の短い待ち時間で滑らかな再生を可能にする。さまざまな例では、システムおよび技術は、異なるコンテンツと、マルチウィンドウサポートと、オーディオサポートと、メタデータサポート(例えば、KLV(Key-Length-Value)メタデータ、STANAGメタデータ、および/または、他のタイプのメタデータ)と、暗号化サポート(例えば、高度暗号化規格(AES)または、他の適切な暗号化規格)との間の移行を可能にする。例えば、以下でより詳細に説明するように、ここで説明するシステムおよび技術は、メディアコンテンツのオーディオおよびビデオが同期したままである、(単一のビデオを有する)単一のビューと(複数のビデオを有する)モザイクビューとの間で移行する能力を提供することができる。
【0066】
[0079]インターネットプロトコル(IP)ベースのデジタルメディアの使用は、例えば、消費者、ブロードキャスト、政府、軍事、医療、企業、および教育セクタを含むほぼすべてのセクタにおいて指数関数的に成長している。デジタルメディアは、ビデオ、オーディオ、および/または、メタデータを含むことができる。テレビジョン(TV)チャネル、セキュリティビデオ、軍事戦術およびシチュエーションアウェアネスビデオ、IPストリームにエンコードされているローカルに生成されたビデオ(例えば、企業ビデオ)のようなコンテンツとともに、とりわけ、任意のサイズの組織および/または他のエンティティは、重要な用途のためにこれらのメディアストリーム(ビデオストリームとも呼ばれる)にますます依存している。これらの組織および/またはエンティティは、このコンテンツを、デスクトップコンピュータ、ラップトップコンピュータ、移動体デバイス(例えば、移動体電話機、タブレット、ウェアラブルデバイス、および/または、他の適切な移動体デバイス)、および/または、他の適切なコンピューティングデバイスのような任意のコンピューティングデバイスからこれらのユーザに利用可能にすることが望ましく、ときには必要である。いくつかのケースでは、メディアコンテンツの消費は、組織および/またはエンティティの閉じたネットワーク内で、ならびに、建物またはサイト間の公衆ネットワークを通して、要求されることがある。
【0067】
[0080]ネットワーク(例えば、組織のネットワーク)全体にわたるユーザへのメディアコンテンツの処理、配信、および、再生のための既存のソリューションは、いくつかの課題をもたらす。このような問題の1つの例は、フォーマット互換性である。例えば、メディアコンテンツ(TVコンテンツ、ブロードキャストコンテンツ、ストリーミングコンテンツ、軍事コンテンツ、とりわけ、コンテンツのタイプ)は、典型的には、特定のフォーマット(例えば、MPEGトランスポートストリームフォーマット、または他の適切なフォーマット)で生成され、これは、いくつかのデフォルトメディアプレーヤーによって再生することができない。デフォルトメディアプレーヤーの実例的な例には、Apple(登録商標)、Microsoft(登録商標)、およびGoogle(登録商標)のような一般的なオペレーティングシステムベンダによって組み込まれるものが含まれる。結果として、既存のソリューションは、受信したメディアコンテンツを、典型的な情報テクノロジー(IT)環境によってネイティブにサポートされるメディアフォーマットにトランスコードする必要がある。ネイティブにサポートされるメディアフォーマットの実例的な例は、特に、アップルのHTTPライブストリーミング(HLS)、Adobe(登録商標)フラッシュ、HTML5を含む。例えば、トランスコーディングプロセスは、元のビデオコンテンツ(および場合によってはオーディオコンテンツ)をベースバンド非圧縮ビデオ(および存在する場合には非圧縮オーディオ)にデコードし、次いでコンテンツを新たなフォーマットに再エンコードすることを含むことができる。いくつかのケースでは、コンテンツは、ブラウザベンダによって定義されたコンテナにラップすることができる。ここで説明するように、「インターネットストリーミング」フォーマットのうちの1つにトランスコードした後、クライアントへの配信は、専用ストリームが各コンピューティングデバイス(例えば、ビューアまたはクライアントデバイス)に送られることを意味するユニキャストに基づく。例えば、ユニキャストストリームは、HLS、HTML5、またはFlashのような規格を使用する選択により「パッケージ」となることができる。
【0068】
[0081]別の問題は、設備コストおよび障害点である。例えば、トランスコーディングプロセスは、ある機器(例えば、ソフトウェア、ハードウェア、または、ハードウェアおよびソフトウェアの両方)を必要とし、これは、資本的支出および運営費とともに、追加のフットプリントおよび計算能力を追加する。このようなオーバーヘッドは、組織またはエンティティによって消費されるコンテンツの量の増大とともに増大する。さらに、トランスコーディングプロセスは、データ経路における重要なコンポーネントであることから、このコンポーネントにおける障害は、ビデオ配信ソリューションのサービス品質に影響を及ぼす。例えば、トランスコーディングが複数のユーザに対するサーバで実行される場合、トランスコーディングプロセス中のサーバの障害は、多くのユーザに影響を及ぼすことがある。
【0069】
[0082]さらに別の問題は、待ち時間(遅延とも呼ばれる)である。例えば、トランスコーディングプロセスは、完了するのにある量の時間を要し、これは、ビデオをレンダリングする準備ができているとき、および、受信した後の表示に遅延を追加する。さらに、トランスコーディングプロセスは、通常、ビデオを受信したプロトコル(例えば、MPEG、HEVC、AVC、または他の適切なフォーマット)からインターネット指向プロトコル(例えば、HLS、SST、Flash、またはこれらに類するもの)にトランスコードする。このようなインターネット指向プロトコルは、ビデオ受信機(および/またはビデオプレーヤー)が、これらのストリーミングプロトコルが元々設計されたネットワーク環境であるインターネットを通してストリーミングするときに経験するかもしれない、低減されたサービス品質に対処し、調節することを可能にするために、内蔵バッファリングおよび/またはキャッシングを有している。低減されたサービス品質は、例えば、帯域幅の問題および/または他のネットワーク品質の問題に起因することがある。例えば、インターネットは、多くのグリッチおよび上下の帯域幅スパイクを経験する。バッファリング遅延または待ち時間は、ユーザが帯域幅の不連続性を経験せず、代わりにメディアコンテンツの連続再生を有するように、インターネット指向プロトコルにハードコーディングすることができる。
【0070】
[0083]待ち時間は、数秒から30秒(またはいくつかのケースではさらに長い)まで変動することがある。バッファリングおよび/またはキャッシングに関係付けられている待ち時間は、トランスコーディングプロセスに関係付けられている待ち時間よりもはるかに長くなることがある。例えば、トランスコーディングに必要な待ち時間は数ビデオフレームであることがあるが、バッファリングに関係付けられている待ち時間は数秒であることがある。例えば、HLSは、5秒のバッファリング(例えば、30フレーム毎秒(fps)ビデオにおける約150ビデオフレームに相当する)を必要とすることがあり、これは、プロトコルにハードコーディングされることがある。大量の待ち時間は、例えば、とりわけ、重要な実験を監視すること、軍事ミッションにおけるターゲットを追跡すること、メディアデバイス上および/またはスポーツアリーナ内でライブスポーツゲームを見ること、医療処置を実行することのような、重要なタスクのためにリアルタイムビデオが必要とされるときに対処することが極めて困難であることがある。
【0071】
[0084]帯域幅利用は、ネットワーク全体を通してユーザへのメディアコンテンツの処理、配信、および、再生とともに生じることがある別の問題である。ブラウザ上でネイティブ再生を達成するために使用される従来のインターネットストリーミングプロトコルの使用は、各視聴者に対して個々のユニキャストセッションの使用を指示する。各視聴者に対するユニキャストセッションのためのこのような要件は、多くのユーザ(例えば、数千、数万、数百または数千のユーザ、または、場合によってはそれ以上のユーザ)を有するかもしれない大きな組織に対する非効率な配信スキームを生成する。このようなケースでは、同じコンテンツが多数のユーザグループによって視聴されるときでさえ、各ユーザは、ストリームの別個のコピー(「ユニキャストストリーム」)を必要とし、したがって、ネットワークコアにオーバーヘッドを追加し、複雑で高価なオンプレミスインフラストラクチャを要求する。
【0072】
[0085]別の問題は、エンタープライズコンテンツ保護サポートである。メディアコンテンツ消費組織またはエンティティの中でも特に、コンテンツプロバイダ(例えば、とりわけ、Comcast(登録商標)、DirecTV(登録商標)、Dish(登録商標))、軍事ユニット、政府ユニット、病院は、インターネットプロトコルテレビ(IPTV)コンテンツを保護するために、高度暗号化規格(AES)128-256ビット暗号ブロッカ連鎖(CBC)および/または電子符号表(ECB)暗号化の使用を迅速に採用している。AES規格は、ブラウザ(例えば、ウェブブラウザまたは移動体ブラウザ)においてネイティブにサポートされていない。
【0073】
[0086]さらに、あるメタデータを表示することは、問題を引き起こすことがある。例えば、軍事メタデータに関して、インテリジェンス、偵察、および監視(ISR)用途では、運動画像標準化評議会(MISB)Key-Length-Value(KLV)メタデータの使用が、ビデオフレームに関連する重要な情報を搬送する主要な方法になっている。この規格は、プライベートパケット識別子(PID)としてMPEGトランスポートストリーム(TS)内で実現され、これは、任意のブラウザまたはブラウザベンダによって提供される任意のインターネット指向ストリーミングプロトコルによってサポートされる方法または規格ではない。
【0074】
[0087]加えて、いくつかのプロバイダは、メディアコンテンツの元のフォーマット(例えば、MPEG、アドバンストビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)またはこれらに類するもの)をサポートし、インターネットグループ管理プロトコル(IGMP)を使用してマルチキャストセッションをスマートに管理するためにマルチキャストプロトコルおよびネットワークの能力を利用することができる第3者アプリケーションおよび/またはメディアプレーヤーを開発およびインストールすることを選んでいる。このような第3者アプリケーションは、組織が、メディアの元のフォーマット(例えば、MPEGコンテンツ、AVCコンテンツ、HEVCコンテンツ、または、これらに類するもの)のマルチキャストコンテンツをユーザの再生デバイスに直接配信することを可能にする。
【0075】
[0088]いくつかのケースでは、プロバイダは、ユーザがライブIPビデオストリームにアクセスするためにこれらのデバイス上でブラウザを使用することができるように、ブラウザ拡張またはプラグインの形態で、これらのユーザにMPEG(または他のコーディングフォーマット)マルチキャストプレーヤー/デコーダを提供することに関して、さらにより便利な経験を生み出した。ブラウザ拡張またはプラグインは、ブラウザにネイティブでない、ブラウザにカスタムアプリケーションを追加する方法である。1つの実例的な例では、ブラウザ拡張(またはプラグイン)は、ブラウザ拡張機能の開発を可能にするアプリケーションプログラミングインターフェース(API)であるネットスケーププラグインアプリケーションプログラミングインターフェース(NPAPI)にしたがって生成することができる。しかしながら、多くのブラウザプロバイダ(例えば、Google Chrome、Microsoft Edge、およびMozilla Firefox)によってなされたセキュリティベストプラクティスおよび決定の最近の進化は、ブラウザ拡張(例えば、NPAPIブラウザ拡張)のサポートを中止することを決定しており、MPEGマルチキャストビデオをプロプライエタリブラウザプレーヤープリケーションで受け入れるためにこのアプローチ行うことは、前進を維持することを不可能にしている。ブラウザ拡張およびプラグインの概念はなくされたが、追加のロジックを依然としてブラウザに追加することができるが、追加のロジックは、あるセキュリティおよび脆弱性ベストプラクティスに適合しなければならない。JavaScript(登録商標)は、ウェブブラウザでの使用が可能な、広く使用されているプロトコルのうちの1つである。
【0076】
[0089]ここで説明するシステムおよび方法は、標準的なウェブブラウザおよび/または他の適切な再生プラットフォーム上で再生するためのメディアコンテンツの配信を提供する。本システムおよび方法は、既存のエンコーダ(例えば、MPEGエンコーダ、AVCエンコーダ、HEVCエンコーダ、または、これらに類するもの)および既存の帯域幅効率的マルチキャストストリームの継続的な使用を可能にする。ここで説明するシステムおよび方法によって提供されるソリューションは、企業およびそのユーザに、既存の機器を変更させる、および/または、メディアコンテンツを取り込み、ストリーミングする既存の方法を変更させる必要性を回避する。このソリューションはまた、マルチユニキャスト配信サーバの導入を強いる必要性、および、(各ユーザに対して異なるユニキャストストリームが必要とされることに起因して)過剰な数のビデオストリームによりネットワークを過負荷にする必要性を回避する。ここで説明するシステムおよび方法はまた、ブラウザとともにプラグインを使用する必要性を除去することができるが、帯域幅および処理の観点から非常に非効率的である、ビデオをトランスコードし、トランスコードされたビデオを個々の一意的なユニキャストストリームとして各コンピューティングデバイスに提供するためのサーバを必要としないように、受信したビデオストリームのフォーマットと同じフォーマットを利用する能力を依然として維持する。
【0077】
[0090] 図1は、例示的なシステムアーキテクチャ100を示すブロックダイヤグラムである。示すように、各コンピューティングデバイス(またはコンピュータ)は、ここで説明する技術にしたがって到来マルチキャストメディアコンテンツを処理することができるシステム102を含むことができる。システム102は、コンポーネントの中でも特に、メディアプレーヤー104、ブラウザ106、マルチキャスト処理システム108、オペレーティングシステム110を含む。1つの実例的な例では、ブラウザ106は、HTML5ウェブブラウザまたは他の何らかの適切なウェブブラウザのようなウェブブラウザを含むことができる。メディアプレーヤー104は、ウェブプレーヤーとも呼ばれるブラウザベースのメディアプレーヤーを含むことができる。マルチキャスト処理システム108は、他のコンポーネントの中でも特に、解読およびローカルストリーミングエンジン128、メタデータエクストラクタ134、トランスコーダ130、およびフレームグラバー132を含むことができる。システム102の異なる例を、システム202および302を含む、図2および図3に関して以下で説明する。マルチキャスト処理システム108の他のコンポーネントの中でも特に、解読およびローカルストリーミングエンジン128、メタデータエクストラクタ134、トランスコーダ130、およびフレームグラバー132の機能の詳細を、図2および図3に関して以下で提供する。
【0078】
[0091]図2は、マルチキャストメディアコンテンツを処理するためにコンピューティングデバイスによって使用されるシステム202のコンポーネントの例を示すブロックダイヤグラムである。システム202のコンポーネントは、電子回路もしくは他の電子ハードウェアを使用することを含むことができ、および/または、これらを使用して実現でき、これらは、ここで説明するさまざまな動作を実行するために、1つ以上のプログラム可能電子回路(例えば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、および/または他の適切な電子回路)を含むことができ、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、または、これらの任意の組み合わせを使用することを含むことができ、および/または、これらを使用して実現できる。システム202は、あるコンポーネントを含むように示されているが、当業者は、システム202が、図2中に示されるものよりも多いまたは少ないコンポーネントを含むことができることを認識するだろう。
【0079】
[0092]マルチキャスト処理システム208は、コンピューティングデバイス上にインストールでき、1つ以上のウェブブラウザ、メディアプレーヤー(例えば、ウェブプレーヤーまたは他のタイプのメディアプレーヤー)、オペレーティングシステム、および/または、コンピューティングデバイス上にインストールされた他のアプリケーションもしくはプログラムと対話することができるスタンドアロンソフトウェアパッケージであることがある。いくつかのケースでは、マルチキャスト処理システム208は、プラットフォームに依存せず、したがって、Macintosh(登録商標)オペレーティングシステム、Windows(登録商標)オペレーティングシステム、LINUX(登録商標)オペレーティングシステム、または、任意のタイプのオペレーティングシステムを実行するコンピューティングデバイスのような、任意のタイプのオペレーティングシステムを使用する任意のタイプのコンピューティングデバイスとともに動作することができる。
【0080】
[0093]システム202は、マルチキャスト処理システム208を使用して、IGMPプロトコル(または他の適切なプロトコル)を実現し、コンピューティングデバイスを通して所定のビューアによって要求される、任意の数のユーザデータグラムプロトコル(UDP)マルチキャストトランスポートストリーム(TS)に参加することができる。例えば、図2中に示すにように、メディアコンテンツは、1つ以上のマルチキャストビデオトランスポートストリーム220として受信されることができる。例えば、1つ以上のマルチキャストビデオトランスポートストリーム220は、マルチキャストUDPを介して受信されるMPEGトランスポートストリーム(MPEG-TS)であることがある。UDP MPEGトランスポートストリームは、多くの環境(例えば、とりわけ、ビデオブロードキャスト、医療、軍事)において標準的であるが、1つ以上のマルチキャストビデオトランスポートストリーム220は、AVC、HEVC、または、他の適切なビデオフォーマットのような、他の何らかの適切なフォーマットであることがある。
【0081】
[0094]1つ以上のマルチキャストビデオトランスポートストリーム220のそれぞれ(各トランスポートストリームはマルチキャストTSと呼ばれる)は、(例えば、AESまたは他の適切な暗号化方法を使用して暗号化された)暗号化ビデオおよび/またはオーディオデータを含むことができ、メタデータ(例えば、KLVメタデータまたは他の適切なメタデータ)も含むことができる。ここで説明するように、システム202は、任意のタイプの暗号化を扱うことができ、特定の暗号化規格(例えば、AES暗号化規格)がウェブブラウザにおいてネイティブにサポートされないときに生じる問題を軽減する。
【0082】
[0095]図2に示すように、次いで、第1のデータ経路222および第2のデータ経路224を含む、2つのデータ経路が生成される。第1のデータ経路222を通して、マルチキャストTSは、デジタルコンテンツレコーダ226に送られ、これは、デジタルビデオレコーダ(DVR)、あるいは、デジタルメディアコンテンツを記録できる他の適切なデバイスまたはコンポーネントを含むことができる。例えば、マルチキャストTSの元のマルチキャストTSペイロードは、(例えば、記録(例えば、DVR)機能がオンにされたときに)メモリ中に記録されてもよい。メモリに記憶されているマルチキャストTS記録は、TS内に存在する場合、その暗号化(例えば、AES暗号化)およびメタデータ(KLV/STANAG)とともに、到来ビデオストリーム(および存在する場合、オーディオ)をそのまま保持する。
【0083】
[0096]1つ以上のマルチキャストTSのための第2のデータ経路222は、解読およびローカルストリーミングエンジン228に向けられる。1つの実例的な例では、解読およびローカルストリーミングエンジン228は、AES解読器およびローカルストリーマを含むことができる。他の例では、他の何らかのタイプの暗号化を使用することができる。解読およびローカルストリーミングエンジン228は、(メディアプラットフォームサーバ212のユーザ許可およびキー管理システム250から)必要とされる暗号化キー(例えば、AES暗号化が使用される場合はAESキー、または他の暗号化方法に対しては他の適切な暗号化キー)を受信し、次いで、TSペイロードのリアルタイム解読(例えば、AES暗号化が使用される場合はAES解読、または他の暗号化方法に対しては他の適切な解読)を実行するアプリケーションをアクティブ化する。
【0084】
[0097]次いで、解読およびローカルストリーミングエンジン228は、各解読された(または暗号化されていない)マルチキャストTSからローカルユニキャストストリームを生成する。解読およびローカルストリーミングエンジン228は、ローカルホスト(このプロセスが実行されるコンピューティングデバイス)上でユニキャストビデオおよびオーディオデータペイロードを安全に送信し、その結果、ローカルホスト上に存在する、または遠隔ネットワークコンピュータからペイロードにアクセスすることを試行する他のアプリケーションがデータを損なうことはない。いくつかのケースでは、マルチキャストTSは暗号化を含まないかもしれず、このケースでは、解読およびローカルストリーミングエンジン228は、解読を実行することなく、マルチキャストTSからユニキャストストリームを生成することができる。次に、解読されたローカルユニキャストストリームは、トランスコーダ230、フレームグラバー232、およびメタデータエクストラクタ234の3つの異なるアプリケーションによって並列に処理される。コンピューティングデバイス上で解読を実行し、コンピューティングデバイス自体によってのみ見られる解読されたローカルユニキャストストリームを生成することによって、解読された情報は、他のデバイスにさらされない。
【0085】
[0098]トランスコーダ230は、解読およびローカルストリーミングエンジン228によって生成されたユニキャストストリームを、ブラウザ206によってサポートされるプロトコルに変換するために、トランスコーディングプロセスを実行する。例えば、プロトコルは、ブラウザ206上でメディアプレーヤー204を使用してメディアコンテンツ(例えば、ビデオおよび/またはオーディオコンテンツ)をレンダリングおよび表示するために使用されてもよいプロトコルであってもよい。いくつかの例では、ブラウザ206は、fMP4データ構造を有するAVC(H.264)、MPEG-1、HLS、SST、フラッシュ、または他の何らかの適切なフォーマットのような、複数のプロトコルをサポートすることができる。必要とされるとき、トランスコーダ230は、ユニキャストストリームをこれらのフォーマットのうちのいずれかにトランスコードすることができる。ユニキャストストリームがすでにブラウザ206によってサポートされるフォーマットであるとき、トランスコーディングプロセスは適用できず、データおよびストリーム中継器260に送ることができる。例えば、到来ビデオが、メディアプレーヤー304(例えば、HTML5プレーヤー)によるレンダリングおよび/または表示のために必要に応じて処理できるフォーマットをまだ使用していない場合にのみに、トランスコーディングは生じてもよい。トランスコーディングプロセスの1つの実例的な例では、トランスコーダ230は、元のビデオおよびオーディオの、fMP4データ構造を有するAVC(H.264)フォーマットへの(RAMにおいて実行される)RAMベースの変換を実行することができる。例えば到来ビデオがHEVC(H.265)プロトコルを使用してエンコードされる場合、トランスコーダ230は、HEVCコンテンツをデコードすることができ、次いで、AVC(H.264)プロトコルを使用してビデオコンテンツを再エンコードして、fMP4データ構造を有するAVCコンテンツを生成することができる。いくつかのケースでは、トランスコーダ230は、MPEG-1L2プロトコルまたは他の適切なオーディオプロトコルを使用してオーディオコンテンツを再エンコードすることもできる。他の利点の中でも特に、より高い解像度(例えば、4K、8K、または他の解像度)に適切にスケーリングする能力を提供し、高品質の待ち時間結果の配信を可能にするので、AVCプロトコルを使用することができる。
【0086】
[0099]別の実例的な例では、トランスコーダ230は、元のビデオおよびオーディオの、MPEG-1L2オーディオを有するMPEG-1ビデオへのRAMベースの変換を実行することができる。MPEG-1ビデオは、MPEG-1ペイロードフォーマットであってもよいが、他のMPEG規格または他の規格の特徴を有してもよい。例えば、MPEG-1ビデオは、MPEG-1ペイロードフォーマットを有することができるが、高精細度、4K(またはウルトラHD)解像度、またはこれらに類するもののような、MPEG-1規格によって定義される解像度よりも高い解像度を有することができる。いくつかのケースでは、HLS、フラッシュ、およびバッファリングを必要とする他のインターネット指向プロトコルとは対照的に、MPEG-1は、リアルタイムで提供することができ、バッファリングを必要としないので、使用することができる。
【0087】
[0100]他のインプリメンテーションでは、任意の適切なフォーマットがトランスコーディング出力として使用されてもよい。いくつかのケースでは、トランスコードされたビデオは、TSに含まれていたメタデータを含まない。
【0088】
[0101]いくつかのケースでは、トランスコーダ230によって実行されるトランスコーディングプロセスは、CPUおよびRAM利用を最適化するための以下で説明する技術に基づいて、品質(例えば、解像度変更、フレームレート変更、または両方)を変更するために使用できる。
【0089】
[0102]フレームグラバー232は、1つ以上のユニキャストストリームから個々の高品質フレームを生成するためにフレームグラビングを実行する。あるケースでは、受信したTSのトランスコードされたビデオおよびオーディオをレンダリングおよび表示する代わりに、メディアプレーヤー204は、(メディアプレーヤー204によってデコードされた後に)フレームグラバー232によって記憶された高品質フレームをレンダリングおよび表示することができる。例えば、図6図7、および図8に関して以下でさらに詳細に説明するように、ユニキャストストリームの(例えば、オーディオがレンダリングされていない)高品質ビデオフレームのみが、アクティブでないまたは焦点が合っていないビデオペインに対して表示されてもよい。このようなケースでは、フルユニキャストTS(ビデオおよびオーディオを有し、いくつかのケースではメタデータを有する)は、アクティブでないビデオペインに対して表示されない。
【0090】
[0103]メタデータエクストラクタ234は、1つ以上のユニキャストストリームからメタデータを抽出するためにメタデータ抽出を実行する。例えば、メタデータエクストラクタ234は、ユニキャストTSのビットストリームからの(例えば、1つ以上のパケットからの)どのペイロードがメタデータを含むかを認識するようにプログラムされてもよく、関連するペイロードを抽出してもよい。いくつかのケースでは、ユニキャストTSがブラウザ206の上位レイヤに送られるときに、メタデータをビデオコンテンツに埋め込むことができないかもしれず、または、埋め込むことが望ましくないかもしれないことから、メタデータが抽出される。したがって、メタデータ抽出は、1つ以上の元のマルチキャストTSからのメタデータが失われたり省略されたりしないことを保証する。抽出されたメタデータは、後に、ビデオおよび/またはオーディオがレンダリングされているときに、ビデオおよび/またはオーディオと再結合されてもよい。例えば、抽出されたメタデータは、ビデオおよびメタデータの同期再生を表示するためにメディアプレーヤー204によって使用されてもよい。メタデータを抽出し、次いで、処理パイプラインにおいて後でメタデータをビデオおよび/またはオーディオと再結合することによって、メタデータは、ディスプレイ上の任意のポジションに(例えば、ビデオの上のオーバーレイとして、ビデオを表示するウィンドウの外側の別個のウィンドウ中に、または他の適切なポジションまたはコンフィギュレーションで)ビデオとともに表示されてもよい。メタデータを抽出して再結合することにより、メタデータのある部分のみをビデオコンテンツと共に視聴するために選択することもできる。例えば、ユーザは、ビデオの所定の部分と共にどのメタデータを表示するかを選択することができる。
【0091】
[0104]トランスコーディング、フレームグラビング、およびメタデータ抽出プロセスのうちの1つ以上において、タイムスタンピングは、コンピューティングデバイスのマルチキャスト処理システム208のタイムスタンパ238によって実行できる。例えば、タイムスタンパ238は、オーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを適用することができる。任意の適切なタイムスタンプを使用することができる。例えば、(例えば、ネットワーク上のすべてのデバイスに使用される)ネットワーククロックを使用して、各パケットに適用される時間を決定することができる。いくつかのケースでは、表示されたときに見えないピクセルロケーション(例えば、これらはフレームの見える部分の一部ではない、またはこれに類するものである)を有するビデオフレームの1つ以上の行がある。このようなケースでは、このようなピクセルロケーションにおいて、1つ以上のピクセル値がフレームに追加されてもよく、これは、各フレームのタイムスタンプを示すために使用されてもよい。オーディオおよびメタデータパケットについても同様のプロセスを実行することができる。異なるビデオ、オーディオ、および/またはメタデータデータを正確に同期させることが重要であることがある。例えば、環境のビデオをキャプチャするドローンアプリケーションでは、環境内の正しいロケーションが識別されるように、メタデータに含まれるロケーション座標情報(例えば、GPS座標)が正しいビデオフレームと正確に同期されることが重要であることがある。
【0092】
[0105]トランスコードされたユニキャストストリーム(例えば、ビデオおよびオーディオ)は、次いで、ローカルのハイパーテキスト転送プロトコル(HTTP)ポート上でピックアップされ、ランタイムシステム236によってウェブソケットエンジン240に渡されてもよく、ウェブソケットエンジンは、トランスコードされたメディアを上位ブラウザレイヤに伝搬する。例えば、ランタイムシステム236は、(例えば、1つ以上の送信制御プロトコル(TCP)チャネルを通して)トランスコードされたユニキャストストリームをブラウザ206に提供するために、HTTPトラフィックをウェブソケットトラフィックに変換することができる。1つの実例的な例では、ランタイムシステム236は、JavaScriptコードを実行するNode.jsランタイム環境、または他のタイプのコードを実行する他の適切なランタイムシステムを含むことができる。ランタイムシステム236は、(メディアプレーヤー204を使用して)ブラウザ206によってレンダリングするために、ユニキャストストリームのビデオフレーム(例えば、HEVCビデオフレーム、AVCビデオフレーム、MPEG1ビデオフレーム、またはトランスコーディングプロセスに基づく別の適切なフォーマットを有するビデオ)を通す(tunnel)ために使用されてもよい。例えば、ランタイムシステム236(例えば、Node.jsランタイムシステム)は、トランスコーダ130からユニキャストストリームを受信することができ、ブラウザ206(したがって、メディアプレーヤー204)にユニキャストストリームを提供するために、ウェブソケットエンジン240中のウェブソケットへとユニキャストストリームを通すことができる。ウェブソケットは、2つのデバイス、アプリケーション、または互いにデータを送受信することができる他のエンティティ間のリアルタイム(またはほぼリアルタイム)全二重接続であり、ネットワークのファイアウォールおよびプロキシを通過することができるデバイス、アプリケーション、またはこれらに類するものの間の永続的な接続を提供する。例えば、ウェブソケットは、ブラウザとバックエンドサーバ(例えば、ウェブサーバ)との間のリアルタイムの永続的な接続を提供することができる。ウェブソケットエンジン240は、ウェブソケットを使用して、マルチキャスト処理システム208およびブラウザ206(およびメディアプレーヤー204)が互いに通信する方法を提供する。例えば、上述のように、ランタイムシステム236は、Node_jsランタイム環境を含むことができる。このような例では、Node.jsランタイム環境は、コンピューティングデバイス上のマルチキャスト処理システム208において実行され、マルチキャスト処理システム208が、ウェブソケットを使用してブラウザ206と通信するサーバのように動作することを可能にする。
【0093】
[0106]いくつかの例では、人工知能(AI)システム264は、所定のユーザのための最良のトランスコーディング設定を予測するために使用できる。AIシステム264のさらなる詳細を以下に説明する。
【0094】
[0107]図3は、マルチキャストメディアコンテンツを処理するためにコンピューティングデバイスによって使用されるシステム302のコンポーネントの例を示すブロックダイヤグラムである。システム302のコンポーネントは、ここで説明するさまざまな動作を実行するために、1つ以上のプログラム可能電子回路(例えば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、および/またはもしくは他の適切な電子回路)を含むことができる電子回路または他の電子ハードウェアを含むことができ、および/またはこれらを使用して実現されることができ、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組み合わせを含むことができ、および/またはこれらを使用して実現されることができる。システム302は、あるコンポーネントを含むように示されているが、当業者は、システム302が、図3に示されるものよりも多いまたは少ないコンポーネントを含むことができることを認識するだろう。
【0095】
[0108]マルチキャスト処理システム308は、コンピューティングデバイス上にインストールされることができ、1つ以上のウェブブラウザ、メディアプレーヤー(例えば、ウェブプレーヤーまたは他のタイプのメディアプレーヤー)、オペレーティングシステム、および/またはコンピューティングデバイス上にインストールされた他のアプリケーションもしくはプログラムと対話することができるスタンドアロンソフトウェアパッケージであることがある。いくつかのケースでは、マルチキャスト処理システム308は、プラットフォームに依存せず、したがって、Macintosh(登録商標)オペレーティングシステム、Windows(登録商標)オペレーティングシステム、LINUX(登録商標)オペレーティングシステム、または他の何らかのオペレーティングシステムを実行するコンピューティングデバイスのような、任意のタイプのオペレーティングシステムを使用する任意のタイプのコンピューティングデバイスとともに動作することができる。
【0096】
[0109]システム302は、マルチキャスト処理システム308を使用して、IGMPプロトコル(または他の適切なプロトコル)を実現して、コンピューティングデバイスを通して所定のビューアによって要求される任意の数のユーザデータグラムプロトコル(UDP)マルチキャストトランスポートストリーム(TS)に参加することができる。例えば、図3中に示すように、メディアコンテンツは、1つ以上のマルチキャストビデオトランスポートストリーム320として受信されることができる。1つの実例的な例では、1つ以上のマルチキャストビデオトランスポートストリーム320は、マルチキャストUDPを介して受信されるMPEGトランスポートストリーム(MPEG-TS)であっることがある。UDP MPEGトランスポートストリームは、多くの環境(例えば、とりわけ、ビデオブロードキャスト、医療、軍事)において標準的であるが、1つ以上のマルチキャストビデオトランスポートストリーム320は、HEVC(H.265)、AVC(H.264)、またはUDPを通してTSを使用してトランスポートされる他の適切なビデオフォーマットのような、他の何らかの適切なトランスポートストリームカプセル化ビデオ中にあることがある。
【0097】
[0110]1つ以上のマルチキャストビデオトランスポートストリーム320のそれぞれ(各トランスポートストリームはマルチキャストTSと呼ばれる)は、(例えば、AESまたは他の適切な暗号化方法を使用して暗号化された)暗号化ビデオおよび/またはオーディオデータを含むことができ、メタデータ(例えば、KLVメタデータまたは他の適切なメタデータ)も含むことができる。ここで説明するように、システム302は、任意のタイプの暗号化を扱うことができ、特定の暗号化規格(例えば、AES暗号化規格)がウェブブラウザにおいてネイティブにサポートされないときに生じる問題を軽減する。
【0098】
[0111]図3に示すように、次いで、第1のデータ経路322および第2のデータ経路324を含む、2つのデータ経路が生成される。第1のデータ経路322を通して、マルチキャストTSは、デジタルビデオレコーダ(DVR)または他の適切なソフトウェア、デバイス、および/または未加工のUDP TSをファイルに記録することができるコンポーネントを含むことができるデジタルコンテンツレコーダ326に送られる。例えば、マルチキャストTSの元のマルチキャストTSペイロードは、(例えば、記録(例えば、DVR)機能がオンにされたときに)ローカルディスクドライブのようなメモリまたは記憶装置に記録されることができる。メモリに記憶されているマルチキャストTS記録は、その暗号化(例えば、AES暗号化)およびメタデータ(KLV/STANAG)とともに、TS中に存在する場合、到来ビデオストリーム(および存在する場合、オーディオ)をそのまま保持する。
【0099】
[0112]1つ以上のマルチキャストTSのための第2のデータ経路322は、解読およびローカルストリーミングエンジン328に向けられる。1つの実例的な例では、解読およびローカルストリーミングエンジン328は、AES解読器およびローカルストリーマを含むことができる。他の例では、他の何らかのタイプの暗号化を使用することができる。マルチキャストTSが暗号化されるとき、解読およびローカルストリーミングエンジン328は、(メディアプラットフォームサーバ312のユーザ許可およびキー管理システム350から)必要とされる解読キー(例えば、AES暗号化が使用される場合はAESキー、または他の暗号化方法に対しては他の適切な暗号化キー)を受信し、次いで、TSペイロードのリアルタイム解読(例えば、AES暗号化が使用される場合はAES解読、または他の暗号化方法に対しては他の適切な解読)を実行する。マルチキャストTSが暗号化されていないとき、マルチキャストTSは、メモリ(例えば、RAMまたは他の記憶装置またはメモリ)および/またはトランスコーダに送られることができる。
【0100】
[0113]解読されたペイロード(または暗号化されなかったトランスポートストリームに対するクリアペイロード)は、メモリバッファに蓄積されてもよい。データがトランスコードされる必要がある場合に、トランスコーダによって(例えば、直ちに、またはある時間期間の後に)バッファリングされたデータを取得することができる。以下で説明するように、バッファリングされたデータ(例えば、トランスコードされたデータ、またはトランスコードが実行されない場合は元のフォーマットのデータ)は、データおよびストリーム中継エンジン360によって取得できる。バッファリングプロセスは、ストリームが再生されている間、継続的に生じることができる。例えば、バッファは、メディアがデータおよびストリーム中継エンジン360によって受信および処理されると、継続的に充填および空にされることができる。解読されたストリームまたは元のストリームは、フレームグラバー332およびメタデータエクストラクタ334によって(例えば、並列に)処理されることもできる。
【0101】
[0114]トランスコーダ330は、受信したトランスポートストリームのビデオデータをブラウザ306によってサポートされるプロトコルに変換するためにトランスコーディングプロセスを実行する。例えば、プロトコルは、ブラウザ306上でメディアプレーヤー304を使用してメディアコンテンツ(例えば、ビデオおよび/またはオーディオコンテンツ)をレンダリングおよび表示するために使用できるプロトコルであることがある。いくつかの例では、ブラウザ306は、HTML5メディアプレーヤーまたは他の適切なメディアプレーヤーによって再生できるfMP4データ構造を有するAVC(H.264)のような、複数のプロトコルをサポートすることができる。必要に応じて、トランスコーダ330は、トランスポートストリームをこれらのフォーマットのうちのいずれかにトランスコードすることができる。トランスポートストリームがブラウザ306によってサポートされるフォーマットに既にあるとき、トランスコーディングプロセスは適用されず、データおよびストリーム中継360に送られることができる。例えば、トランスコーディングは、到来ビデオが、メディアプレーヤー304(例えば、HTML5プレーヤー)によるレンダリングおよび/または表示のために必要に応じて処理できるフォーマットをまだ使用していない場合にのみ生じてもよい。トランスコーディングプロセスの1つの実例的な例では、トランスコーダ330は、元のビデオおよびオーディオの、fMP4データ構造を有するAVC(H.264)フォーマットへの(RAMにおいて実行される)RAMベースの変換を実行することができる。例えば、到来ビデオがHEVC(H.265)プロトコルを使用してエンコードされる場合、トランスコーダ330は、HEVCコンテンツをデコードすることができ、次いで、AVC(H.264)プロトコルを使用してビデオコンテンツを再エンコードして、fMP4データ構造を有するAVCコンテンツを生成することができる。いくつかのケースでは、トランスコーダ330は、MPEG-1L2プロトコルまたは他の適切なオーディオプロトコルを使用して、オーディオコンテンツを再エンコードすることもできる。
【0102】
[0115]他のインプリメンテーションでは、任意の適切なフォーマットをトランスコーディング出力として使用できる。いくつかのケースでは、トランスコードされたビデオは、TS中に含まれていたメタデータを含まない。
【0103】
[0116]いくつかのケースでは、トランスコーダ230によって実行されるトランスコーディングプロセスは、CPUおよびRAM利用を最適化するために以下で説明される技術に基づいて、品質(例えば、解像度変更、フレームレート変更、または両方)を変更するために使用できる。
【0104】
[0117]フレームグラバー332は、1つ以上のトランスポートストリームから個々の高品質フレームを生成するためにフレームグラビングを実行する。あるケースでは、受信したTSのトランスコードされたビデオおよびオーディオをレンダリングおよび表示する代わりに、メディアプレーヤー304は、(メディアプレーヤー304によってデコードされた後に)フレームグラバー332によって記憶された高品質フレームをレンダリングおよび表示することができる。例えば、図6図7、および図8に関して以下でさらに詳細に説明するように、トランスポートストリームの(例えば、オーディオがレンダリングされていない)高品質ビデオフレームのみが、アクティブでないまたは焦点が合っていないビデオペインに対して表示されてもよい。このようなケースでは、フルトランスポートストリームのビデオおよびオーディオ(およびいくつかのケースではメタデータを有する)は、アクティブでないビデオペインに対して表示されない。
【0105】
[0118]メタデータエクストラクタ334は、1つ以上のトランスポートストリーム(TS)からメタデータを抽出するためにメタデータ抽出を実行する。例えば、メタデータエクストラクタ334は、TSのビットストリームからの(例えば、1つ以上のパケットからの)どのペイロードがメタデータを含むかを認識するようにプログラムされることができ、関連するペイロードを抽出できる。いくつかのケースでは、TSがブラウザ306の上位レイヤに送られたときに、メタデータをビデオコンテンツに埋め込むことができないかもしれない、または埋め込むことが望ましくないかもしれないことから、メタデータは抽出される。
したがって、メタデータ抽出は、1つ以上の元のマルチキャストTSからのメタデータが失われたり省略されたりしないことを保証する。抽出されたメタデータは、後に、ビデオおよび/またはオーディオがレンダリングされているときに、ビデオおよび/またはオーディオと再結合できる。例えば、抽出されたメタデータは、ビデオおよびメタデータの同期再生を表示するためにメディアプレーヤー3によって使用できる。メタデータを抽出し、次いで、処理パイプラインにおいて後でメタデータをビデオおよび/またはオーディオと再結合することによって、メタデータは、ディスプレイ上の任意のポジションに(例えば、ビデオの上のオーバーレイとして、ビデオを表示するウィンドウの外側の別個のウィンドウ中に、または他の適切なポジションまたはコンフィギュレーションで)ビデオとともに表示できる。メタデータを抽出して再結合することはまた、メタデータのある部分のみをビデオコンテンツと共に視聴するために選択することを可能にする。例えば、ユーザは、ビデオの所定の部分と共にどのメタデータを表示するかを選択してもよい。
【0106】
[0119]トランスコーディング、フレームグラビング、およびメタデータ抽出プロセスのうちの1つ以上において、タイムスタンピングは、コンピューティングデバイスのマルチキャスト処理システム308のタイムスタンパ338によって実行できる。例えば、タイムスタンパ338は、オーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを適用することができる。任意の適切なタイムスタンプを使用することができる。例えば、(例えば、ネットワーク上のすべてのデバイスに使用される)ネットワーククロックを使用して、各パケットに適用される時間を決定することができる。いくつかのケースでは、表示されたときに見えないピクセルロケーション(例えば、これらはフレームの見える部分の一部ではない、またはこれに類するものである)を有するビデオフレームの1つ以上の行がある。このようなケースでは、1つ以上のピクセル値を、このようなピクセルロケーション中のフレームに追加でき、これは、各フレームに対するタイムスタンプを示すために使用できる。オーディオおよびメタデータパケットについて同様のプロセスを実行することができる。上述したように、異なるビデオ、オーディオ、および/またはメタデータデータを正確に同期させることは、いくつかの用途の中でも特に、外科用途、車両ナビゲーションのような、重要なプロセスであることがある。
【0107】
[0120]トランスコーダ330によってトランスコーディングプロセスが実行された後(または、すでにブラウザ306によってサポートされるフォーマットでメディアが受信されるときのような、トランスコーディングが必要とされないとき)、データおよびストリーム中継エンジン360は、トランスポートストリームを受信することができ、トランスポートストリームからメディアデータの小さなチャンクを生成することができる。チャンクは、fMP4フォーマットのような、任意の適切なフォーマットを使用して生成することができる。例えば、データおよびストリーム中継エンジン360は、トランスポートストリームのデータをより小さなデータチャンクに分割することができる、fMP4チャンクのようなデータチャンカーを含むことができる。データのチャンクは、データフラグメントと呼ぶこともできる。次いで、チャンクは、ウェブソケットエンジン340によって1つ以上のウェブソケットを通してブラウザ306に送られることができる。例えば、入ってくるビデオのフォーマットにかかわらず(すでにAVCフォーマットである場合を除いて)、トランスコーダ330は、ビデオをAVC(H.264)ビデオにトランスコードすることができ、データおよびストリーム中継エンジン360は、ブラウザに配信することができるfMP4フォーマットを使用して、ビデオのチャンクを生成することができる。1つの実例的な例としてAVCを使用したが、トランスコーダ330は、ビデオを任意の適切なビデオおよび/または画像フォーマットにトランスコードすることができる。
【0108】
[0121]上述のように、データおよびストリーム中継エンジン360は、データチャンカー(例えば、fMP4チャンカー)を含むことができる。データチャンカーは、(例えば、メタデータが抽出され、タイムスタンプされた後)トランスコードされたオーディオ、ビデオ、およびメタデータを取得することができ、ウェブソケットを介してブラウザ306に送られるデータのチャンク(またはデータフラグメント)を生成することができる。いくつかのケースでは、データおよびストリーム中継エンジン360は、(例えば、AESまたは他の適切な暗号化テクノロジーを使用して)データのチャンクを暗号化することもできる。例えば、データチャンクはローカルコンピューティングデバイスにのみ利用可能であるが、より高いレベルのセキュリティを提供し、任意の第3者アプリケーションがデータを潜在的に傍受および/またはインターセプトすることを防止するために、データは、RAMからウェブソケットを介してブラウザ306に渡されるときに依然として暗号化されることができる。
【0109】
[0122]1つの実例的な例では、上述のように、データおよびストリーム中継エンジン360のデータチャンカーは、到来ビデオデータ(例えば、1つ以上のマルチキャストUDPトランスポートストリームまたは他のビデオデータ)からfMP4フラグメント(またはチャンク)を生成することができる。例えば、データおよびストリーム中継エンジン360のフラグメンタプロセスは、マルチキャストUDPプロトコルを使用して配信される(例えば、ストリーミングされる)1つ以上のMPEGトランスポートストリーム(TS)を入力として受信することができる。MPEG TSは、オーディオ、ビデオ、ならびにプログラムおよびシステム情報プロトコル(PSIP)データの送信および記憶のために使用される、標準化されたデジタルコンテナフォーマットである。MPEG TSは、とりわけ、インターネットプロトコルテレビジョン(IPTV)、デジタルビデオブロードキャスティング(DVB)、アドバンストテレビジョンシステム委員会(ATSC)のようなブロードキャストシステムにおいて使用されることができる。TSは、ストリームを搬送する通信チャネルが劣化したときに送信インテグリティを維持するための誤り訂正および同期パターン特徴を有する、パケット化エレメンタリストリームをカプセル化するコンテナフォーマットを指定する。
【0110】
[0123]データおよびストリーム中継エンジン360のフラグメンタプロセスは、IGMP「join」コマンドを使用してマルチキャストセッションに参加することができ、最初に、ストリーム中で利用可能なさまざまなプログラムをスキャンする。プログラムは、ビデオ、オーディオ、メタデータ、および/またはクローズドキャプション等の他の補助情報のような、1つまたは複数のタイプのものであることがある。
【0111】
[0124]ここで説明するように、トランスコーディングは、互換性のないソースストリームフォーマットに起因して、異なる解像度、フレームレート、および/またはビットレート(例えば、解像度、フレームレート、およびビットレートの組み合わせ)がこの特定のユーザまたはコンピューティングデバイスとともに使用するためにより最適であることを示すユーザ挙動および計算能力アナライザ362および/またはAIシステム364に起因して、および/または他の要因に起因して実行されてもよい。トランスコーディングが必要とされる場合、トランスコーディング命令がマルチキャスト処理システム308(例えば、トランスコーダ330)に与えられて、データおよびストリーム中継エンジン360のフラグメンテーションパイプラインにデータが流れる前に、必要とされるトランスコーディング作業を実行する。いくつかのケースでは、トランスコーディング命令は、メディアプラットフォームサーバ312によって与えられることがある。
【0112】
[0125]いったんビデオ、オーディオ、および/またはメタデータプログラムの正しいセットが識別され、所望のフォーマットであると決定されると、データおよびストリーム中継エンジン360は、多重化されたUDPペイロードのリアルタイムの(例えば、データが受信されるとと)脱構築を実行し、以下を生成する:
【0113】
[0126]1.fMP4ペイロード-ボックスftyp(ファイルタイプボックス)+moov(ムービーボックス)を含む初期化セグメント。
【0114】
[0127]2.fMP4ペイロード-moofボックス(ムービーフラグメントボックス)+mdatボックス(メディアデータボックス)の対を含むデータセグメント。
【0115】
[0128]3.とりわけ、KLV、STANAG、および/またはクローズドキャプションデータのような、システムペイロード補助メタデータ。例えば、解読およびローカルストリーミングエンジン328またはデータおよびストリーム中継エンジン360は、元のソースストリームからメタデータをリアルタイムで(例えば、データが受信されると)抽出することができ、ここで説明するように、メディアプレーヤー304(例えば、ブラウザプレーヤーまたは他の適切なメディアプレーヤー)が効果的に表示し、ビデオフレームに整列させることができるプロプライエタリな、フレームが正確な、タグ付けされたペイロードにメタデータをコード化することができる。
【0116】
[0129]図4は、ftypボックスとmoovボックスとを有する初期化セグメントと、それぞれmoofボックスとmdatボックスとを含む複数のデータセグメントとの例を図示するダイヤグラムである。ftypボックスは、通常、メディアファイル中にできるだけ早く配置され、ファイルを解析するのに最も適した(例えば、主要ブランドと呼ばれる)ファイルフォーマット仕様を識別する。例えば、メディアファイルは、特定のファイルフォーマット仕様にしたがってフォーマットされていてもよいが、仕様の他の版と互換性があってもよい。いくつかの例では、プレーヤーデバイスは、デバイスがファイルのコンテンツをデコードおよび表示することが可能であるかどうかを決定するためにメジャーブランドを使用することができる。いくつかの例では、デバイスのオペレーティングシステム(OS)のタイプおよび/またはバージョン、デバイスによって使用されるウェブブラウザのタイプおよび/またはバージョン、あるいはこれらの任意の組み合わせを使用して、デバイスがファイルのコンテンツをデコードおよび表示することが可能であるかどうかを決定することができる。例えば、このような例は、異なるフォーマットをサポートする異なるOS-ブラウザの組み合わせにより有益であることがある。ftypはまた、ファイルフォーマット仕様のバージョンを示すために使用されることができるバージョン番号を含むことがある。いくつかのケースでは、ftypボックスは、ファイルが互換性のある他のブランドである、互換性のあるブランドのリストを含むことができる。いくつかのインプリメンテーションでは、メディアファイルは、1つのftypボックスのみを含む。
【0117】
[0130]moovボックスは、ムービーヘッダボックスを含むことができ、1つ以上のトラックボックスとともに他のボックスを含むことができる。いくつかのケースでは、プレゼンテーションは、1つのファイルに含まれるか複数のファイルに含まれるかにかかわらず、ただ1つのムービーボックス(moov)を含むことができる。ムービーヘッダボックス(「mvhd」)は、メディアに依存せず、全体としてプレゼンテーションに関連している情報を含むことができる。例えば、mvhdボックスは、情報の中でも、生成時間、修正時間、タイムスケール、および/またはプレゼンテーションの持続時間のような情報を含むことができる。mvhdボックスは、プレゼンテーション中の次のトラックを識別する識別子も含むことができる。トラックボックス(「trak」)は、プレゼンテーションに対するトラックについての情報を含むことができる。プレゼンテーションは、1つ以上のトラックを含むことができ、各トラックは、プレゼンテーション中の他のトラックから独立している。各トラックは、トラック中のコンテンツに特有の時間的および空間的情報を含むことができ、各トラックをメディアボックスに関係付けることができる。いくつかのケースでは、トラックヘッダボックス(「tkhd」)は、例えば、とりわけ、トラックの生成時間、修正時間、持続時間、トラック識別子、レイヤ識別子、グループ識別子、ボリューム、幅、および/または高さのような、トラックボックスに含まれるトラックの特性を指定することができる。トラックボックスは、ここで説明されていない他の適切なボックスを含むことができる。
【0118】
[0131]ムービーフラグメントボックス(「moof」)は、別の方法ではムービーボックスに記憶される追加の情報を含めることによってプレゼンテーションを拡張することができる。moofボックスを使用して、プレゼンテーションを増分的に構築することができる。moofボックスは、ムービーフラグメントヘッダボックスと、1つ以上のトラックフラグメントボックス(「traf」)とともに、ここで説明しない他のボックスとを含むことができる。ムービーフラグメントヘッダボックス(「mfhd」)は、シーケンス番号を含むことができる。プレーヤーデバイスは、シーケンス番号を使用して、特定のフラグメントがプレゼンテーションのための次のデータを含むことを検証することができる。いくつかのケースでは、ファイルのコンテンツ、またはプレゼンテーションのためのファイルは、順不同でプレーヤーデバイスに提供されることができる。例えば、ネットワークパケットは、パケットが最初に送信された順序以外の順序で到着することができる。これらのケースでは、シーケンス番号は、フラグメントに対して正しい順序を決定する際にプレーヤーデバイスを支援することができる。ムービーフラグメントボックスは、トラック当たり0以上を含む(1つ以上のトラックフラグメントボックス「traf」中に)トラックフラグメントのセットを含むことができる。トラックフラグメントは、0以上のトラックランを含むことができ、トラックランのそれぞれは、トラックについてのサンプルの連続ランを記述する。いくつかの例では、トラックフラグメントは、トラックにサンプルを追加することに加えて、トラックに空き時間を追加するために使用できる。
【0119】
[0132]メディアデータボックス(「mdat」)はメディアデータを含む。ビデオトラックでは、例えば、mdatボックスは、ビデオフレーム、パケット、アクセスユニット、および/または他の形態のビデオデータを含むことができる。mdatボックスは、代替的または追加的にオーディオデータを含むことができる。プレゼンテーションは、0以上のmdatボックスを含むことができ、いくつかのケースでは、1つ以上の個々のファイルに含めることができる。メディアデータは、メタデータによって記述される。1つの実例的な例では、mdatボックス中のメディアデータは、trafボックス中に含まれるメタデータによって記述することができる。他の例では、mdatボックス中のメディアデータは、moovボックス中のメタデータによって記述されてもよい。いくつかの例では、メタデータは、ファイル内の絶対オフセットによって特定のメディアデータを指すことができ、mdatボックス内のメディアデータヘッダおよび/またはフリースペースがスキップされることができる。
【0120】
[0133]いったん多重化されたUDPペイロードが分解され、上記で説明したデータチャンクおよびメタデータが抽出および/または生成されると、データおよびストリーム中継エンジン360は、時間タグ付けおよびパケットカウントタグ付けを使用してオーディオ、ビデオ、メタデータ同期を確実にするために使用されるプロプライエタリペイロードで(例えば、メタデータ、ビデオ同期およびビデオオーバーレイグラフィックスのための命令で)上記のfmp4ペイロード(例えば、初期化セグメントおよびデータセグメント)をすべてパックすることができ、(例えば、ウェブソケットエンジン340によって実現される)ウェブソケットを使用して、パッケージ化されたデータをブラウザアプリケーションレイヤ(例えば、ブラウザ306)に送ることができる。
【0121】
[0134]次いで、ブラウザ360は、(例えば、JavaScriptを使用して)パッケージ化されたデータを処理することができる。例えば、ブラウザ360は、メディアソース拡張(MSE)を使用してHTML<video>タグで表示するためにfMP4データを分離することができる。MSEは、JavaScriptが、HTML5ビデオおよびオーディオをサポートするウェブブラウザ内のメディアコーデックにバイトストリームを送ることを可能にするワールドワイドウェブコンソーシアム(W3C)仕様である。1つの例では、MSEは、ストリーミングメディアのためのクライアント側プリフェッチおよびバッファリングコードを完全にJavaScriptで実現することを可能にする。MSEは、実例的な例として使用される。当業者であれば、他の何らかの適切な仕様も使用できることを認識するだろう。ブラウザ360は、メタデータ(例えば、KLVおよび/または他のメタデータ)を取得し、WebGLを使用してキャンバス上にメタデータを表示して、ビデオコンテンツ上にメタデータをオーバーレイすることができる。WebGLは、プラグインを使用せずにウェブブラウザ内で対話型2Dおよび/または3DグラフィックスをレンダリングするためのJavaScript APIである。いくつかのケースでは、ブラウザ360は、ウェブビデオテキストトラックフォーマット(WebVTT)をとることができ、<video>タグにアタッチされたHTML<track>要素を操作する。
【0122】
[0135]メディアプレーヤー304が複数のビデオストリームを処理しているとき、上記で説明したブラウザプロセスは、各ストリームに対して並列に実行できる。いくつかのケースでは、複数のストリームのライブデコードの間にローカルユーザの機械のCPUおよびRAMの最適化を保証するために、マルチキャスト処理システム308は、メディアプラットフォームサーバ312と継続的または周期的に通信して、どのストリームが(解像度、フレームレート、および/またはビットレートを含む)どの品質にトランスコードされるかを決定することができ、その結果、デコードされている他のストリームよりもビデオ品質に関してより高い優先度をとることができる別のビデオストリームに焦点が変更されるまで、ユーザは、アクティブビデオに対する最高品質を、および場合によっては2次ビデオペイン上でより低い品質を受信する。
【0123】
[0136]いくつかのケースでは、上記で着目したように、受信したマルチキャストコンテンツ(例えば、MPEGトランスポートストリームのようなトランスポートストリーム)は、デジタルコンテンツレコーダによって記録できる。いくつかのケースでは、デジタルコンテンツレコーダ226は、データのチャンク(例えば、fMP4チャンク)を記録することができる。いくつかのインプリメンテーションでは、受信したマルチキャストコンテンツおよびデータのチャンクを記録することができる。他のインプリメンテーションでは、受信したマルチキャストコンテンツは、データのチャンクが記録されるときに記録されない。データのチャンクを記録することは、(例えば、DVRシナリオでは、ライブテレビジョンコンテンツを一時停止し、次いで一時停止されたポジションからチャネルのライブ進行まで早送りするとき)ライブ再生と記録された再生との間の迅速な移行を可能にするという利点を提供することができる。メディアプレーヤー304および/またはブラウザ306プレーヤーは、記憶されたデータのチャンク(例えば、MP4チャンク)にアクセスすることができ、ブラウザ306で再生できる前に事前処理(例えば、トランスコーディングおよびチャンキング)を必要とする元の未加工のマルチキャストコンテンツを使用することとは対照的に、ライブデータのチャンクにシームレスに移行することができる。
【0124】
[0137]ウェブソケットエンジン340は、メディアデータのチャンク(またはデータフラグメント)を上位ブラウザレイヤに送ることができ、上位ブラウザレイヤは、トランスコーディングが必要とされない場合、トランスコーディングされたメディアまたはトランスコーディングされていないメディアを含むことができる。上述のように、ウェブソケットは、2つのデバイス、アプリケーション、または互いにデータを送受信することができる他のエンティティ間のリアルタイム(またはほぼリアルタイム)全二重接続であり、ネットワークのファイアウォールおよびプロキシを通過することができるデバイス、アプリケーション、またはこれらに類するものの間の永続的接続を提供する。例えば、ウェブソケットは、ブラウザとバックエンドサーバ(例えば、ウェブサーバ)との間のリアルタイムの永続的な接続を提供することができる。ウェブソケットエンジン340は、ウェブソケットを使用して、マルチキャスト処理システム308およびブラウザ306(およびメディアプレーヤー304)が互いに通信する方法を提供する。
【0125】
[0138]いくつかの例では、人工知能(AI)システム364は、所定のユーザのに対する最良のトランスコーディング設定を予測するために使用できる。AIシステム364のさらなる詳細を以下に説明する。
【0126】
[0139]いくつかのケースでは、マルチキャスト処理システム(例えば、マルチキャスト処理システム208および/またはマルチキャスト処理システム308)はまた、メディアプラットフォームサーバ(例えば、メディアプラットフォームサーバ212および/またはメディアプラットフォームサーバ312)の再生シンクロナイザ(例えば、再生シンクロナイザ252および/または再生シンクロナイザ352)に性能データを報告することができる。いくつかのインプリメンテーションでは、マルチキャスト処理システム208は、ランタイムシステム236から再生シンクロナイザ252に性能データを報告するために、全二重、プロプライエタリ、およびセキュアな通信プロトコルを使用することができる。例えば、マルチキャスト処理システム208は、ランタイムシステム236から再生シンクロナイザ252に性能データを報告することができる。別の例では、マルチキャスト処理システム308は、データおよびストリーム中継360から再生シンクロナイザ352に性能データを報告することができる。いくつかのケースでは、以下でより詳細に説明されるように、ユーザ挙動および計算能力アナライザ(例えば、ユーザ挙動および計算能力アナライザ262および/またはユーザ挙動および計算の能力アナライザ362)は、計算能力情報をAIシステム264に提供することができる。性能データは、CPU消費、ランダムアクセスメモリ(ローカルコンピュータのメモリであるRAM)使用、ビデオを再生するメディアプレーヤー(例えば、メディアプレーヤー204および/またはメディアプレーヤー304)およびブラウザ(例えば、ブラウザ206および/またはブラウザ306)によって使用されるリソース、(例えば、タイムスタンプ情報に基づいて)ウェブソケットエンジン240および/または340に送られているビデオおよびオーディオペイロード、いくつのビデオストリームが(例えば、同時に)処理されているか、および/または他の情報のような、コンピューティングデバイスおよび/またはメディア再生に関連する情報を含むことができる。性能データ情報は、メディアプラットフォームサーバ(例えば、メディアプラットフォームサーバ212および/またはメディアプラットフォームサーバ312)によって使用されて、隣接するクライアント上でのビデオレンダリングおよび再生を加速すること、(例えば、再生シンクロナイザによる)同期再生を保証すること、および、場合によっては、互いに近くに座っている視聴者によって視聴されているコンピューティングデバイスによって同じビデオコンテンツが再生されているときの任意のエコーの除去を保証することのような1つ以上の機能、または他の機能を実行することができる。メディアプラットフォームサーバ(例えば、メディアプラットフォームサーバ212および/またはメディアプラットフォームサーバ312)は、システム(例えば、システム202および/またはシステム302)の一部ではなく、システム202および/または302がインストールされるコンピューティングデバイスから遠隔にあることがあることに留意されたい。いくつかのケースでは、メディアプラットフォームサーバは、1つ以上のクラウドコンピューティングデバイス、またはコンピューティングデバイスから遠隔に位置付けられている遠隔サーバを使用して実現できる。
【0127】
[0140]フレームグラバー(例えば、フレームグラバー232および/またはフレームグラバー332)によって取り込まれたフレームは、ウェブソケットエンジン(例えば、ウェブソケットエンジン240および/またはウェブソケットエンジン340)に直接送ることができ、必要とされるときにメディアプレーヤー204および/またはメディアプレーヤー304にリアルタイムで伝搬することができる(例えば、ブラウザ206および/または306によって実行される)。メディアプレーヤーは、これらのフレームを使用して、ユーザが再生することを選んだが、アクティブオーディオも含む「アクティブビデオ」(または「焦点ビデオ」)として使用されていない1つ以上の追加のIPソースストリームのフルモーションビデオ体験を生成することができる。モザイクビューにおけるアクティブビデオ対非アクティブビデオに関するさらなる詳細は、以下でより詳細に説明する。
【0128】
[0141]いくつかのケースでは、ビデオを再生するブラウザおよび/またはメディアプレーヤーによって使用されるCPU消費、RAM使用、および/またはリソースは、記憶されるフレームの数を調節するために、および/またはフレームの解像度を調節するために、フレームグラバー(例えば、フレームグラバー232および/またはフレームグラバー332)によって使用されることができる。例えば、フレームグラバーは、コンピューティングデバイスのCPU消費量、コンピューティングデバイスのRAM使用量、および/またはあるコンテンツを再生するためにブラウザおよび/またはメディアプレーヤーによって使用されるリソース量を示す情報を受信することができる。いくつかのケースでは、フレームグラバーは、CPU消費量、RAM使用、および/またはブラウザによって使用されるリソース量に応答して、記憶されるフレームの数を調節することができる。いくつかのケースでは、フレームグラバーは、CPU消費量、RAM使用、および/またはブラウザによって使用されるリソース量に応答して、フレームの解像度を調節することができる。
【0129】
[0142]1つの実例的な例では、記憶されるフレームの数は、CPU消費がCPU消費量しきい値(例えば、70%、80%、90%、または他の適切な量)を超えたとき、RAM使用がRAM使用しきい値(例えば、70%、80%、90%、または他の適切な量)を超えたとき、および/またはブラウザによって使用されるリソースの量がリソース使用量しきい値を超えたとき、減少することがある。別の実例的な例では、記憶されるフレームの数は、CPU消費がCPU消費量しきい値を下回るとき、RAM使用がRAM使用しきい値を下回るとき、および/またはブラウザによって使用されるリソースの量がリソース使用しきい値を下回るとき、増加することがある。別の実例的な例では、記憶されるフレームの数は、CPU消費がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)増加したとき、RAM使用がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)増加したとき、および/またはブラウザによって使用されるリソースの量がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)増加したとき、減少することがある。別の実例的な例では、記憶されるフレームの数は、CPU消費がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)減少したとき、RAM使用がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)減少したとき、および/またはブラウザによって使用されるリソースの量がある量だけ(例えば、40%、50%より多く、または他の適切な量だけ)減少したとき、増加することがある。
【0130】
[0143]上記で着目したように、人工知能(AI)システム(例えば、AIシステム264および/または364)は、所定のユーザのための最良のトランスコーディング設定を予測するために使用できる。AIシステムは、メディアプラットフォームサーバ212の一部であることがある。いくつかのケースでは、AIシステムは、機械学習を使用して、ここで説明する動作を実行することができる。例えば、AIシステムは、ニューラルネットワーク(例えば、畳み込みニューラルネットワークまたは他の適切なネットワーク)または他のタイプの機械学習システムを含むことができる。以下でより詳細に説明するように、AIシステムは、ユーザのパターンおよび再生環境を学習し、それに応じてコンテンツを調節する能力を提供する。例えば、AIシステムは、(以下で説明するように、それ自体で、またはメディアプレーヤーのマルチビューモードで再生されている追加のチャネルと並行して)所定のチャネルを再生するときに、所定のコンピューティングデバイス(例えば、ホストコンピュータ)上の挙動を分析することができる。いくつかのケースでは、ユーザの習慣は、(例えば、どのグリッドをユーザが最も多く使用するかによって)ユーザがいくつのビデオを同時に見るかに関して追跡することができる。AIシステムは、スクリーン解像度を考慮し、それをある期間(例えば、数時間、1日以上等の使用)にわたって平均することができる。このようなデータを使用して、AIシステムは、ユーザが将来の時間にメディアプレーヤー(例えば、メディアプレーヤー204および/またはメディアプレーヤー304)を起動する最も可能性の高い方法を予測することができ、(例えば、最適化されたフレームレートおよび/または解像度で)最適化された特性を有するビデオをブラウザ(例えば、ブラウザ206および/または306)に配信することができる。例えば、最適化された特性は、視聴体験を損なわず、(例えば、ユーザが3×3グリッドを見ており、各ビデオが元は1920×1080であったことから必要とされないかもしれないピクセルを提供しないことによって)CPUおよび/またはRAM使用が節約されるように選択されることができる。
【0131】
[0144]AIシステムは、コンテンツプロバイダによって従来配信される非効率的で損なう経験(例えばオーバーザトップ(OTT)ビデオストリーミングプロトコル)を改善することができる。例えば、HLS、HDS、MPEG-DASHのような既存のインターネットビデオストリーミング規格は、元のコンテンツを異なる品質のストリームにトランスコードすることによってビデオの複数のバージョンを生成する。異なる品質の各ストリームは、プロファイルと呼ばれることがあり、各プロファイルは、解像度、フレームレート、ビットレート、オーディオ品質、これらの任意の組み合わせ、および/または他の品質メトリックとは異なることがある。ユーザがあるチャネルを再生したいとき、メディアプレーヤーは、可能な限り最低品質のプロファイル、利用可能な品質の中間の品質を有するプロファイル、または他のプロファイルを選択することができ、選択されたプロファイルに関係付けられたビデオを表示することができる。このプロセスは利点を有するが、このようなプロセスに関係する問題もある。例えば、初期の視聴体験は、低プロファイルで開始することにより損なわれることがあり、これは経時的に改善することがある。例えば、経時的に(例えば、5-60秒後)、従来のストリーミングプレーヤー(例えば、OTTプレーヤー)は、ネットワーク接続(例えば、インターネット、セルラ、またはこれらに類するもの)が、より多くの帯域幅の使用を可能にするほど十分にロバストであるかどうかを検出することができ、そうである場合、プレーヤーは、より高品質のプロファイルに切り替えることができる。使用することができるより多くの利用可能な帯域幅をプレーヤーが検出し、より高品質のプロファイルが利用可能である場合、プレーヤーは、より高品質のプロファイルを選択し続けることができる。いくつかのケースでは、帯域幅またはネットワーク品質が劣化した場合、プレーヤーは、品質をダウングレードすることもできる。インターネット接続は、家庭で、または移動体デバイス上で移動中に使用されるときに変化することから、このような適応的アプローチは、(例えば、インターネットを通してコンテンツをストリーミングする)インターネットアプリケーションに有用である。
【0132】
[0145]従来のストリーミングメディアプレーヤーのこのような学習曲線、および低いプロファイルからより高い品質のプロファイルへの切り替えは、ユーザが新しいチャネルに変更するたびに起こることがある。さらに、プロファイルのうちのすべてが使用されるわけではないが、トランスコーダは複数のプロファイルを生成する必要があることから、ビデオ処理のためのトランスコーダ計算能力は、このような状況では非常に高くなるかもしれない。いくつかのケースでは、ストリーミングアプリケーションに使用されるトランスコーダは、(エンドユーザクライアントデバイスから遠隔の)クラウドベースのサーバ中にあることがある。すべてのユーザが同じプロファイルを共有し、各ユーザがオンデマンドで(例えば、HTTPダウンロードとして)必要とするプロファイルにアクセスするにより、トランスコーディングがすべてのユーザに対して一度に行われることから、クラウドベースのトランスコーダは、インターネットストリーミングシステムに対して機能することができる。しかしながら、マルチキャスト処理システム(例えば、マルチキャスト処理システム208および/またはマルチキャスト処理システム308)を含む上記で説明したシステム(例えば、システム202およびシステム302)では、トランスコーダ(例えば、トランスコーダ230および/または330)は、各コンピューティングデバイス内にあり、このケースでは、不要なプロファイルを生成することを回避し、したがってトランスコーディング処理の量を低減するために、より高い効率が必要とされる。
【0133】
[0146]クローズドネットワークシナリオでは(例えば、企業ネットワークでは)、ネットワーク帯域幅は、(特に、インターネットサービスと比較して)多くの変更なく一貫していることがある。このようなケースでは、サービス品質(QoS)および/またはビデオを適切に表示するコンピュータの能力に影響を及ぼす要因は、環境の他の態様に関係する。例えば、このような要因は、並行して実行する他のアプリケーション(例えば、eメールアプリケーション、インターネットブラウザ等)によりビデオを表示するコンピュータの使用を含むことがある。このような使用は、CPU、RAM、グラフィックス処理ユニット(GPU)、およびコンピュータの他のリソースの使用であることがある。他の例では、QoSおよびビデオを表示するコンピュータの能力に影響を及ぼす要因は、他のビデオがいくつの再生されているか、特定のコンピューティングデバイスがどの解像度のスクリーンを有するかを含むことがある(例えば、ビデオのすべては、スクリーンに適合するようにサイズが縮小される必要があることから、コンピューティングデバイスが1920×1080のスクリーンを有し、現在マルチビューグリッドにおいて16のビデオを視聴しようとしている場合、1920×1080のHDビデオを示す理由はない)。
【0134】
[0147]上述したように、システム202および302は、(例えば、各コンピューティングデバイスにデータを送ることを回避するために)サーバから各コンピューティングデバイスにコンテンツ(例えば、データチャンク)を配信させる代わりに、(エンドユーザの)クライアントコンピューティングデバイスに直接マルチキャストコンテンツを配信することを可能にする。このようなマルチキャストアプローチは、(例えば、企業ネットワーク、ホームネットワーク、および/または他のネットワーク上で)ビデオを配信するためのよりスケーラブルな方法である。トランスコーディングプロセスを使用して、上述の要因に基づいて各クライアントコンピューティングデバイス上のビデオの品質を最適化することができる。しかしながら、メディアプレーヤーは、従来、セッションが進行すると、また、プレーヤーが環境についてより学習すると、オンザフライでビデオを適応させる。
【0135】
[0148]ここで説明するAIシステムは、トランスコーダによって生成されることになる必要とされるメディアフォーマットを正確に予測するために、(例えば、マルチキャスト処理システム208および/またはマルチキャスト処理システム308からの情報に基づいて)履歴データを使用することができる。例えば、マルチキャスト処理システム308は、コンピューティングデバイスによるビデオ再生に関係するデータを収集することができ、そのデータをメディアプラットフォームサーバ312に送ることができる。いくつかのケースでは、ユーザ挙動および計算能力アナライザ362は、データを収集することができる。マルチキャスト処理システム308によって収集されたデータは、再生コンピューティングデバイスの性能データ、ユーザが見ているチャネルのタイプ、ユーザがビデオをどのように視聴するか、これらの任意の組み合わせ、および/またはメディアフォーマットを予測するために使用できる他のデータを含むことができる。
【0136】
[0149]上記で着目したように、マルチキャスト処理システム(例えば、システム208および/またはシステム308)によって収集されたデータは、再生コンピューティングデバイスの性能データを含むことができる。性能データは、コンピューティングデバイスのリソースに関連するデータを含むことができる。リソースは、RAM、CPU、GPU、これらの任意の組み合わせ、またはコンピューティングデバイスの他の適切なコンポーネントを含むことができる。情報は、各リソースのうちのどれだけが経時的に使用されているか、マルチキャスト処理システムを通して提供されるコンテンツを視聴するためにユーザがメディアプレーヤー(例えば、メディアプレーヤー204または304)を使用する時間を含むことができる。このような情報は、AIシステムが、コンピューティングデバイスに関連するユーザの日々の習慣を学習することを可能にする。例えば、企業環境では、企業ユーザは、日常的に、数ある習慣の中でも特に、バックグラウンドで同じソフトウェアを実行し、ビデオの視聴と並行して同じアプリケーションを使用する傾向があることがある。所定のコンピューティングデバイス上の所定のユーザの実際の計算リソースは、異なる使用が実行されると、決定および分析されてもよい。いくつかのケースでは、コンピューティングデバイスの異なるコンポーネントのパラメータ(例えば、コンピューティングデバイスが有するRAMの量、CPUの量、およびGPUの量)も使用されることができる。
【0137】
[0150]マルチキャスト処理システム(例えば、システム208および/またはシステム308)によって収集されたデータはまた、ユーザが見ているチャネルのタイプを含むことができる。例えば、チャネルラインナップには多くのチャネル(例えば、数百のチャネル)があることがあるが、ユーザは、フルチャネルリストのサブセットのみを見ることができる。1つの実例的な例では、会社の企業ネットワークは、数百のチャネルを有することがあり、企業ネットワークへのアクセスを有するユーザは、要因の中でもとりわけ、組織内のユーザの定義に基づいて、ユーザの個人的選好に基づいて、情報テクノロジー担当者によって設定されたユーザ許可に基づいて、あるチャネルにアクセスすることができる。
【0138】
[0151]マルチキャスト処理システム(例えば、システム208および/またはシステム308)によって収集されたデータはまた、マルチキャスト処理システムによって提供されるビデオをメディアプレーヤー(例えば、メディアプレーヤー204および/または304)においてユーザがどのように視聴するかを示すデータを含むことができる。例えば、データは、一度に1つ、常にクワッドグリッドで(一度に4つのビデオで)、時にはクワッドグリッドで、時には16のグリッドで、または他の何らかのコンフィギュレーションで、ユーザがビデオを見ることを示してもよい。別の例として、データは、どのスクリーンがユーザによって使用されるかを示すことができる。マルチキャスト処理システムが、スクリーンがネイティブに示すこともできるものよりも、より多くのピクセルをビデオごと配信することは望ましくなく、また、表示されることができるピクセルよりも少ないピクセルを配信することも望ましくないので、このようなスクリーンタイプ情報は非常に有用であることがあり、これは結果として、グラフィックカードによる補間をもたらす。
【0139】
[0152]マルチキャスト処理システム(例えば、マルチキャスト処理システム208および/またはマルチキャスト処理システム308)によって収集されたデータを使用して、AIシステム(例えば、AIシステム264および/またはAIシステム364)は、ユーザの習慣、ユーザのコンピューティングデバイス、およびユーザがどのようにビデオを視聴するかを学習することができる。次いで、学習されたデータは、トランスポートストリームを処理するときにトランスコーダ(例えば、トランスコーダ230および/またはトランスコーダ330)によって生成されるべき品質を示す品質推奨を決定するために、AIシステムによって使用されることができる。品質推奨は、所定のユーザおよび所定のコンピューティングデバイスに特有である。例えば、品質推奨は、所定のコンピュータ上の所定のユーザによって所定のチャネルが選択されるときに生成する品質をトランスコーダに示すことができる。AIシステムは、マルチキャスト処理システムのトランスコーダ(各ユーザコンピューティングデバイス上に存在し、動作する)に品質推奨を送ることができ、トランスコーダは、所定のコンピュータ上の所定のユーザによって所定のチャネルが選択されるとき、品質推奨によって特定された品質を有するビデオを生成することができる。
【0140】
[0153]AIシステムの目標は、視聴セッションの開始から、(例えば、コンピューティングデバイス、スクリーン、およびユーザの視聴習慣に合わせて)ユーザが最良の品質のビデオを得ることが可能であるように、マルチキャスト処理システムのトランスコーダによって実行されるトランスコーディングプロセスに対して可能な最良の設定を正確に予測することである。AIシステムは、使用履歴データを有さないローカル適応メディアプレーヤーの学習曲線を実質的に低減することができ、決して使用されないかもしれない多くのプロファイルを生成する必要性をなくすことができ、不要なトランスコーディングステップのために使用されるスイッチングが少なくなり、CPU(および他のリソース)が少なくなるため、視聴体験を改善することができる。
【0141】
[0154]上述のAIシステムの別の利点は、ユーザがあるロケーションから別のロケーションに移動する情報テクノロジー(IT)環境においても予測を生成する能力である。例えば、いくつかの組織、軍事基地、政府施設、またはこれらに類するものでは、コンピューティングデバイスワークステーションは個人用ではない。このようなケースでは、ワークステーションはさまざまなユーザによって使用されるかもしれない。各個々のユーザは、各ユーザに一意的なアクティブディレクトリユーザ名を使用して検出されることができ、ローカルプレーヤー論理を有する他のソリューションとは異なり、メディアプラットフォームサーバ(例えば、サーバ212および/または312)は、(アクティブディレクトリユーザ名に基づいて)ユーザのデータをフェッチし、どのコンピュータが使用されているかにかかわらず、品質推奨を提供することができる。所定のネットワーク(例えば、企業ネットワーク、ホームネットワーク、または他のネットワーク)上の各コンピューティングデバイスに関するデータも、AIシステムによって知ることができる。例えば、シリアル番号または他の一意的な識別子を使用して、コンピューティングデバイスを識別することができる。AIシステムは、ユーザのデータを、ユーザが現在使用しているコンピューティングデバイスに固有のデータとどのように一致させるかを知ることができる。ユーザデータとコンピューティングデバイスデータの組み合わせは、AIシステムが、任意の機械を使用する任意のユーザに必要とされる最良の設定を正確に予測することを可能にする。
【0142】
[0155]図5Aは、プラグインレスHLS、Flash、HTML5、または他の適切な企業ソリューションに対して従来のビデオ配信を提供する(例えば、企業ネットワーク内の)マルチユニキャストビデオ配信システムの例を示すダイヤグラムである。図5Bは、任意の適切なプロトコル(例えば、HTML5または他のプロトコル)を使用して再生を伴うマルチキャスト配信を提供するために、(例えば、システム202またはシステム302のようなシステムを使用して)ここで開示する技術を利用する(例えば、企業ネットワーク内の)マルチキャストビデオ配信システムの例を示すダイヤグラムである。図5Aおよび図5Bに示されるシステムのコンポーネントは、単一のロケーション(例えば、建物のサーバルーム、またはこれに類するもの)内に位置付けることができ、または異なる場所に分散させることができる。
【0143】
[0156]図5Aおよび図5Bに示されたシステムの両方について、ビデオ消費の例が使用され、4つの一意的なマルチキャストビデオチャネル(ビデオチャネル400、401、402、および403と、ビデオチャネル500、501、502、および503とを含む)は、それぞれ3メガビット/秒(Mbps)で提供される。図5Aおよび図5Bに示すシステムは、それぞれ、各ロケーションに500ユーザを有する4つのロケーションにサービスを提供するマルチサイト企業ネットワークを含むことができる。500エンドユーザクライアントの異なるセットは、建物、会場、または他の適切なロケーションのような、異なるロケーションに存在することができる。図5Aおよび図5Bに示すように、マルチキャストコンテンツは、任意の適切なコンテンツソースを含むことができる4つのソースからコアネットワークスイッチ504に提供されることができる。コンテンツソースの実例的な例は、ローカルTVチャネルフィード、衛星TVチャネル、ケーブルTVコンテンツプロバイダ(例えば、Comcast(登録商標)、TimeWarner(登録商標)、DirecTV(登録商標)、またはこれらに類するもの)、または他の適切なソースを含む。当業者は、図5Aおよび図5Bに示したものよりも多いまたは少ないコンテンツソースを含むことができることを認識するだろう。実例となる目的のために、図5Aおよび図5Bの両方において、各ユーザは、これらのチャネルのうちの1つ以上を消費/視聴している(例えば、4つのチャネルすべてをモザイクビューで表示している、チャネルのうちの1つ以上を表示しながら他のチャネルのうちの1つ以上を記録している、デスクトップ/ラップトッププレーヤー上で単一のチャネルを視聴している、または他の適切なコンフィギュレーション)と仮定することができる。
【0144】
[0157]示されるように、図5Aに示されるマルチユニキャストシステムは、第1のネットワークスイッチ404からマルチキャストトラフィックを受信し、典型的なオペレーティングシステムおよび/またはブラウザによってネイティブにサポートされるインターネットストリームフォーマットにコンテンツをトランスコードし、このコンテンツを個々のユニキャストストリームとして配信するために、1つ以上のトランスコーディングおよび配信サーバ402の使用を必要とし、合計で最低1500のユニキャストストリーム(ユーザごとに1つ)を有する。上記で着目したように、各マルチキャストストリームは3Mbpsであり、すべての1500ユニキャストストリームに対して、合計で4.5ギガビット/秒(Gbps)を必要とする。次いで、第2のスイッチ406は、ストリームを適切なロケーションに配信し、500ストリームは、それぞれが500エンドユーザクライアントコンピューティングデバイスにサービス提供する3つの異なるエッジネットワークスイッチ(AP)408、410、412に進む。いくつかのケースでは、ワイヤレス(例えば、WiFi)APの代わりに、またはそれに加えて、図のシステムがローカルエリアネットワーク(例えば、企業ネットワーク)において実現されるとき、物理ネットワークスイッチを使用できる。2つのスイッチ404および406のみを図5Aに示しているが、当業者は、より多くのネットワークスイッチがネットワーク中に含まれることがあることを認識するだろう。
【0145】
[0158]図5Aに示したもののようなマルチユニキャストシステムは、サーバが、マルチキャストされている4つの個々のコンテンツストリームを取得し、ストリームを要求するすべてのコンピューティングデバイスに対して別々の個々のユニキャストコピーとしてこれらを再配信する必要があるので、大量のハードウェアインフラストラクチャへの投資を必要とする。例えば、多数のコンテンツチャネルと、各コンピューティングデバイスが複数のビデオを同時に視聴および/または記録することができる、ネットワーク上でコンテンツを消費する膨大な量のコンピューティングデバイスとを有するエンティティは、マルチユニキャストアプローチに対するトランスコーディングおよびルーティング機能を実行するために、ネットワークインフラストラクチャに関して数千万ドルを費やす必要があるかもしれない。トランスコーディングおよび配信サーバ402のトランスコーディングおよびルーティング機能も、上述したように、システムに待ち時間を追加する。やはり上述したように、(例えば、トランスコーディングプロセスの間の)トランスコーディングおよび配信サーバ402の障害は、トランスコーディングが複数のコンピューティングデバイスに対して実行されることから、ビデオ配信ソリューションのサービス品質に悪影響を及ぼし、トランスコーディングおよび配信サーバ402の障害は、コンピューティングデバイスのすべてに影響を及ぼすことがある。
【0146】
[0159]図5Aに示したもののようなマルチユニキャストシステムの使用は、ブラウザベースのメディアプレーヤー(またはウェブプレーヤー)が、従来、インターネットベースのビデオにのみ使用されることに起因し、インターネットベースのシステムは、このようなインターネットベースのシステムのインフラストラクチャ(例えば、インターネットインフラストラクチャにおけるルータおよびスイッチ)に基づいてマルチキャストビデオをサポートしない。
【0147】
[0160]図5Bに示したマルチキャストシステムは、エンドユーザクライアントコンピューティングデバイスのそれぞれで展開されているシステム102(例えば、図2に示したシステム202または図3に示したシステム302)の使用により、図5Aに示したマルチユニキャストシステムと比較して多くの点で優れている。例えば、図5Bに示されるマルチキャストシステムは、図5Aに示したトランスコーディングおよび配信サーバ402のような、ビデオストリームのトランスコーディングおよび複製のための高価なサーバ(ハードウェアおよび/またはソフトウェアを含む)をなくす。さらに、クライアントコンピュータへの配信がリアルタイムトランスポートストリーム(例えば、HEVCストリーム、AVCストリーム、MPEGストリーム、または他のフォーマット)を使用してなされるという事実により、マルチキャストシステムは、はるかに短い再生待ち時間(遅延)を特徴とし、このケースでは、コンテンツをコンピューティングデバイスに提供する前に(例えば、インターネット指向プロトコルへの)バッファリングおよび/またはキャッシングが必要とされない。例えば、トランスポートストリームは、コンピューティングデバイスにおいて受信され、次いで、コンピューティングデバイスにおける個々の性能、計算能力、能力、および健康状態に基づいて必要とされるときにのみ、コンピューティングデバイス自体においてトランスポートストリーム上でトランスコーディングが実行され、すべてのユーザに、まとめて再生待ち時間およびサービス品質を損なう必要性をなくす。いくつかのケースでは、ワイヤレス接続を通してマルチキャストトランスポートストリームを受信するコンピューティングデバイスのような、バッファリングが追加されることがあるが、バッファリングは、最小限の待ち時間がユーザによって経験されるように、(例えば、500ミリ秒、1000ミリ秒、または他の短い時間量を含むように)動的に調節および最適化できる。バッファリングはコンピューティングデバイスによって実現されることから、各コンピューティングデバイスは、いつバッファリングを実現するか(例えば、ワイヤレスネットワーク接続が使用されているとき)、およびいつバッファリングを実現しないか(例えば、ワイヤードネットワーク接続が使用されているとき)を決定することができる。
【0148】
[0161]マルチキャストシステムはまた、125分の1の帯域幅を使用して、ネットワークにわたって同じ量のストリームをすべてのユーザに配信する。例えば、図5Bに示すように、同じ4つのマルチキャストコンテンツストリームが、ネットワーク(例えば、アクセスポイント)の最後のホップに提供され、方法のステップ毎に、わずか12Mbps(4ストリーム×3Mbps)の帯域幅利用がある。このような帯域幅の低減は、マルチキャストを用いて、コンテンツストリーム(例えば、テレビチャネル、またはこれらに類するもの)を要求するすべてのコンピューティングデバイスが同じビットストリームに加わり、ネットワークルータおよびスイッチが効率的なIGMPプロトコルを使用して参加および離脱要求を取り扱うことを可能にするためである。例えば、ビットストリームの別個のユニキャストコピーはマルチキャストでは必要とされないことから、(図5Aのシステムのように)1500の異なるビットストリームを有する代わりに、4つのビットストリームのみが必要とされ、1.5Gbpsと比較して12Mbpsの利用をもたらす。図5Bに示すマルチキャストシステムはまた、マルチキャスト処理システム(例えば、マルチキャスト処理システム108、マルチキャスト処理システム208、および/またはマルチキャスト処理システム308)によって実行される、トランスコーディングおよび再配信プロセスまたは他のプロセスにおける障害点による影響を制限する。例えば、マルチキャスト処理システム(例えば、システム108、208、または308)が、システムによって実行されるプロセスのうちの1つ以上の間に障害を起こした場合、マルチキャスト処理システムがインストールされたデバイスにのみに障害は生じ、(図5Aの)トランスコーディングおよび配信サーバ402が障害を起こしたときにコンピューティングデバイスのグループ全体に生じることとは対照的である。
【0149】
[0162]図5Bに示すように、ネットワークスイッチ504は、4つのコンテンツソースからマルチキャストトラフィックを受信することができ、マルチキャストトラフィックをネットワークスイッチ506(またはルータ)にルーティングすることができる。ネットワークスイッチ506について説明するが、ルータまたは他のデバイスのような、他のネットワークゲートウェイデバイスを使用することもできる。ネットワークスイッチ506は、マルチキャストトラフィックをアクセスポイントにルーティングすることができ、アクセスポイントは、マルチキャストトラフィックを各コンピューティングデバイスにワイヤレスでルーティングすることができる。いくつかのケースでは、マルチキャストトラフィックは、ワイヤード接続を通してコンピューティングデバイスのうちの1つ以上にルーティングできる。2つのスイッチ504および506のみが図5Bに示されているが、当業者は、ネットワークトラフィックと所定のネットワーク環境に対していくつのネットワークポートが必要とされるかとに応じて、より多くのネットワークスイッチをネットワークに含めることができることを認識するだろう。例えば、図5Bに示したシステムが大きな会場(例えば、アリーナ、病院、または他の適切な会場)で実現される場合、ネットワーク全体にマルチキャストトラフィックをルーティングするための500以上のネットワークスイッチが存在することがある。
【0150】
[0163]さらに、各コンピューティングデバイスにおいてシステム202またはシステム302を使用することによって、ソーススペシフィックマルチキャスト(SSM)を可能にするIGMPv3プロトコルを各コンピューティングデバイスによって使用することができ、これは、図5Aに示したようなサーバベースのマルチユニキャストシステムを使用して利用可能ではない。例えば、コンピューティングデバイスに配信されるパケットが、コンピューティングデバイスによって特に要求される特定のソースアドレス(例えば、IPアドレス)から生じるパケットのみであるマルチキャストパケットの配信を、SSMは可能にする。コンテンツを受信することができるソースを選択すると、SSMは、セキュリティを改善し、ネットワーク上の要求を低減する。サーバベースのマルチユニキャストシステムを使用すると、異なるクライアントデバイスは、あるソースアドレスのみからコンテンツを要求することができず、代わりに、トランスコーディングおよび再配信サーバが加入している同じマルチキャストソースのユニキャストコピー提供される。各コンピューティングデバイス上で実行するマルチキャストシステム202または302を使用して、コンピューティングデバイスのそれぞれは、どのソースアドレスが承認されたコンテンツのソースであるかを特定することができる。これは、マルチキャストグループを選択する際のより良好な柔軟性を可能にしながら、サービス拒否攻撃に対しても保護し、ホストは、明示的に要求したソースからのトラフィックのみを受信し、複数のソースは、競合なく同じマルチキャストグループを提供することができる。
【0151】
[0164]各コンピューティングデバイスにおけるシステム202またはシステム302の使用に基づいて、コンピューティングデバイスは、所望のプロトコル(例えば、HTML5プロトコル)を使用して実現されたブラウザベースのメディアプレーヤーを、プラグインを必要とせずに依然として使用することができるが、ブラウザベースのメディアプレーヤーデバイスがマルチキャストをサポートしないためだけに、ネットワーク側でビデオの効率的なIGMPベースの配信を修正する必要はない。
【0152】
[0165]いくつかの例では、図1図2、および図3に示したシステム102、202、および302は、プラグインレスブラウザプレーヤー(例えば、プラグインレスHTML5ブラウザプレーヤーまたは他の適切なプレーヤー)上またはビデオペイン間の迅速でCPU効率の良い移行をする他のメディアプレーヤー上で、(例えば、ディスプレイ上のモザイクグリッドを使用して)マルチビュー体験をサポートすることができる。
【0153】
[0166]複数の高品質ストリーム(例えば、HDストリーム、4Kストリーム、またはこれらに類するもの)を獲得すること、ブラウザを使用して所定のコンピュータ上でこれらを同時に再生すること、および1つのアクティブビデオから別のアクティブビデオに(顕著な遅延なく)潔く切り替えることができ、オーディオが常にビデオと同期していることに関係するいくつかの課題がある。例えば、ブロードキャスト品質の1080p HDストリームは、通常、4-30MbpsのMPEGペイロードを使用する。モザイクグリッドディスプレイ(例えば、2×2モザイクグリッド、3×3モザイクグリッド、4×4モザイクグリッド、またはそれ以上)をポピュレートするためにこれらのビデオストリームのうちの複数を消費するとき、多くのビデオストリーム(例えば、4×4グリッドに対して16つのストリーム)が所定のコンピューティングデバイス上で受信される。プラグインのないブラウザプレーヤーを使用してこれらのビデオストリームを提示するために、ブラウザによってネイティブにサポートされるビデオフォーマットへのトランスコーディングが生じなければならない。いくつかのケースでは、トランスコーディングは、各ユーザにユニキャストとして配信されることを必要とする、いくつかの従来のアプリケーション(例えば、図5Aに示したマルチユニキャストシステム)を有するサーバによって実行されることがある。いくつかのケースでは、トランスコーディングは、そのCPUおよびRAMによってクライアントコンピューティングデバイス上で実行されることがあり、このタスクを計算集約的にし、場合によっては、同じ機械上で実行する他のアプリケーションに悪影響をもたらす。さらに、ブラウザプレーヤーが非常に多くのビデオストリームを並列で処理しているとき、オーディオをアクティブ化するために、または特定のビデオの視聴を最大化するために、あるビデオと別のビデオとの間で切り替える必要があるとき、ブラウザを用いたユーザ体験は影響を受ける。
【0154】
[0167]典型的な企業ワークステーション上で最大16の(またはそれ以上の)ビデオストリームを並列にトランスコードすることは、コンピュータの性能を損なうだけでなく、場合によっては他のアプリケーションに影響を及ぼし、古いコンピュータでは単純に機能しないこともあり、あるユーザがモザイクグリッド内で視聴したいストリームの数を視聴することを不可能にする。
【0155】
[0168](例えば、システム202および/またはシステム302として実現される)システム102は、モザイクグリッド内で焦点が合っていない(「アクティブ」でない)すべての他のビデオペイン中の1つ以上の他のメディアストリームの(フレームグラバーからの)ビデオフレームの連続表示とともに、アクティブビデオペインに対する1つのメディアストリームのフルモーションビデオ(例えば、MPEGビデオ)再生のスマートブレンディングを実行することができる。このようなソリューションは、焦点が合っていない非アクティブビデオペインにおいて標準ビデオが再生される体験を視聴者に提供する。スマートブレンディングアプローチは、ビデオをトランスコードし、フルビデオおよびオーディオをブラウザレイヤに伝搬する必要なく、フレームグラビングを元のビデオソースから直接行うことができるので、モザイクグリッドを生成するために必要とされる計算能力において大きな利点を提供する。
【0156】
[0169]図6図7、および図8は、ビデオストリームの3×3グリッドでモザイクビューを有する例示的なディスプレイを図示するピクチャである。図6に示すディスプレイでは、中央のペインがアクティブビデオペインである。フルモーションビデオ(例えば、フルモーションMPEGビデオストリーム、HEVCビデオストリーム、AVCビデオストリーム、または他のビデオ)は、ビデオコンテンツとオーディオコンテンツの両方を含むアクティブビデオペインに表示されるビデオストリームのために提示される。トランスコーディングが実行されるとき、アクティブビデオストリームに対するフルモーションビデオは、(例えば、システム202および/またはシステム302として実現される)システム102中のトランスコーダからシステム102中のメディアプレーヤー104および/またはブラウザ106に提供できる。例えば、データチャンクまたはフルビデオパケットは、ウェブソケットエンジンからブラウザ106に送ることができる。残りのビデオペインは、非アクティブビデオペインである。フレームグラバーからの取り込まれたフレームは、非アクティブビデオペインに表示されるビデオストリームのために、プレーヤーによって(フルモーションビデオおよびオーディオコンテンツの代わりに)表示される。
【0157】
[0170]図7に示すように、ユーザは、アクティブビデオペインとして上中央のビデオペインを選択している。ユーザがアクティブビデオペインとして焦点を合わせるために異なるビデオペインを選択するとき、システム102は上中央のビデオペインに表示されているビデオのコマごとのビデオのみの表現を表示することから、ビデオおよびオーディオを有するフルモーションビデオストリーム(例えば、フルモーションMPEGビデオストリーム、HEVCビデオストリーム、AVCビデオストリーム、または他のビデオ)にシームレスに切り替える。切り替えは、マルチキャスト処理システム(例えば、マルチキャスト処理システム108、マルチキャスト処理システム208、および/またはマルチキャスト処理システム308)に、この所定のストリームに対する処理モードを、フレームが取り込まれたフレームからトランスコードされたストリームに変更するように命令するブラウザアプリケーションによって実行できる。各フレームに適用されるタイムスタンプを使用して、システム102は、他のウェブベースのビデオアプリケーションにおいて典型的に必要とされる、プレーヤーをリロードおよび/またはリフレッシュすることなく、フレームベースの再生から(トランスコーダからの)フルモーションビデオ再生への切り替えを円滑に実行することができる。例えば、共通のタイムスタンプを有するビデオフレームおよびオーディオフレームは、新たにアクティブなビデオペインに対応するビデオストリームに対して表示されるように開始することができる。
【0158】
[0171]図8に示すディスプレイでは、中間のペインがアクティブビデオペインである。上記で説明したように、フルモーションビデオ(例えば、フルモーションMPEGビデオストリーム、HEVCビデオストリーム、AVCビデオストリーム、または他のビデオ)は、ビデオコンテンツとオーディオコンテンツの両方を含むアクティブビデオペイン中に表示されるビデオストリームに対して提示される。トランスコーディングが実行されるとき、アクティブビデオストリームに対するフルモーションビデオは、(例えば、システム202および/またはシステム302として実現される)システム102中のトランスコーダからシステム102中のメディアプレーヤー104および/またはブラウザ106に提供される。例えば、データチャンクまたはフルビデオパケットは、ウェブソケットエンジンからブラウザ106に送ることができる。残りのビデオペインは、非アクティブビデオペインである。フレームグラバーから取り込まれたフレームは、非アクティブビデオペインに表示されるビデオストリームのために、プレーヤーによって(フルモーションビデオおよびオーディオコンテンツの代わりに)表示される。2次非アクティブビデオペインは、(例えば、ユーザが使用すべき最適化された品質のAIシステム予測によって駆動される)低減されたフレームレートおよび/または低減されたビットレートのトランスコードされたファイルを使用して表示できる。
【0159】
[0172]上記で説明した技術を実現する1つ以上のプロセスが実行されてもよい。図9は、メディアデータを処理するためのプロセス900の例を示すフローダイヤグラムである。ブロック902において、プロセス900は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。コンピューティングデバイスは、パーソナルデスクトップまたはラップトップコンピュータ、移動体デバイス(例えば、移動体電話機、タブレット、ウェアラブルデバイス、またはこれらに類するもの)、あるいはメディアコンテンツを表示できるブラウザおよび/またはプレーヤーを含むことができる他の何らかの適切なデバイスのような、エンドユーザコンピューティングデバイスを含むことができる。いくつかのケースでは、メディアコンテンツは、ビデオコンテンツおよびオーディオコンテンツを含む。
【0160】
[0173]ブロック904において、プロセス900は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することを含む。ユニキャストストリームは、(例えば、図2に示されるシステム202として実現される)例えば、システム102のローカルストリーマによって生成できる。ブロック906において、プロセス900は、コンピューティングデバイスによって、第1のメディアフォーマットから第2のメディアフォーマットへ、メディアコンテンツのユニキャストストリームをトランスコードすることを含む。トランスコーディングは、(例えば、図2に示すシステム202として実現される)例えば、システム102のトランスコーダによって実行できる。ブロック908において、プロセス900は、1つ以上のチャネルを通して(例えば、ウェブソケットプロトコルを使用する1つ以上のTCPまたは他の適切なチャネルを通して)、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのコンピューティングデバイスのブラウザに送信することを含む。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で(例えば、ウェブソケットを使用して)安全に実行される。
【0161】
[0174]いくつかの例では、プラグインは、メディアコンテンツのユニキャストストリームを生成するために、およびメディアコンテンツのユニキャストストリームをトランスコードするために使用されない。いくつかのケースでは、プロセス900は、ビデオのマルチキャストストリームを受信するための要求を生成することと、ビデオソースに要求を送信することとを含むことができ、ビデオのマルチキャストストリームは、要求に応答して受信される。
【0162】
[0175]いくつかのケースでは、プロセス900は、コンピューティングデバイスのローカルポート(例えば、ローカルのハイパーテキスト転送プロトコル(HTTP)ポート)上でトランスコードされたメディアコンテンツのユニキャストストリームを受信することをさらに含むことができる。このようなケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、ウェブソケットプロトコルを使用してポートからブラウザに送信される。
【0163】
[0176]いくつかのケースでは、プロセス900は、メディアコンテンツのマルチキャストストリームのうちの1つ以上のペイロードを解読することをさらに含むことができる。例えば、解読は、サーバ(例えば、図2に示したメディアプラットフォームサーバ212)から提供される1つ以上のAESキーを使用して実行できる。
【0164】
[0177]いくつかのケースでは、プロセス900は、コンピューティングデバイスによって、ブラウザを使用して、トランスコードされたメディアコンテンツのユニキャストストリームを表示することをさらに含むことができる。
【0165】
[0178]いくつかのケースでは、プロセス900は、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することをさらに含むことができる。例えば、1つ以上のビデオフレームは、図2に示したシステム202のフレームグラバーによって記憶できる。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされない。プロセス900は、コンピューティングデバイスによって、ブラウザを使用して、記憶された1つ以上のビデオフレームを表示することを含むことができる。
【0166】
[0179]いくつかのケースでは、プロセス900は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することを含むことができる。このようなケースでは、プロセス900は、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することと、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することとを含む。このようなケースでは、プロセス900は、ブラウザを使用するコンピューティングデバイスによって、トランスコードされたメディアコンテンツのユニキャストストリームをコンピューティングデバイスのディスプレイの第1の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第2の部分に表示することとをさらに含むことができる。図6図7、および図8は、このようなシナリオの例を図示している。
【0167】
[0180]いくつかのケースでは、プロセス900は、コンピューティングデバイスのCPU消費量に関係付けられた情報を(コンピューティングデバイスによって)受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとをさらに含むことができる。このようなケースでは、CPU消費量に関係付けられている情報に応答して、フレーム数を調節することができる。いくつかの例では、プロセス900は、CPU消費量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶され、再生のためのコンピューティングデバイスのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0168】
[0181]1つの実例的な例では、プロセス900は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を超えていることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、CPU消費量に関係付けられている情報が、CPU消費がCPU消費しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス900は、CPU消費量に関係付けられている情報が、CPU消費が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、CPU消費量に関連付けられた情報が、CPU消費減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0169】
[0182]別の実例的な例では、プロセス900は、コンピューティングデバイスによるランダムアクセスメモリ(RAM)使用量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、RAM使用量に関係付けられている情報に応答して調節される。別の実例的な例では、プロセス900は、RAM使用量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0170】
[0183]別の実例的な例では、プロセス900は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、RAM使用量に関係付けられている情報が、RAM使用がRAM使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス900は、RAM使用量に関係付けられている情報が、RAM使用が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、RAM使用量に関係付けられている情報が、RAM使用が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0171】
[0184]別の実例的な例では、プロセス900は、ブラウザによって使用されるリソースの量に関係付けられている情報を受信することと、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節することとを含むことができ、フレームの数は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して調節される。別の実例的な例では、プロセス900は、ブラウザによって使用されるリソースの量に関係付けられている情報に応答して、1つ以上のビデオフレームの解像度を調節することを含むことができる。いくつかの例では、フレームが記憶されて再生のためのブラウザに提供されるフレームレートを調節することなく、解像度を調節することができる。
【0172】
[0185]別の実例的な例では、プロセス900は、ブラウザによって使用されたリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を超えたことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量がリソース使用しきい値を下回ることを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。別の実例的な例では、プロセス900は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が増加したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を減少させることを含むことができる。別の実例的な例では、プロセス900は、ブラウザによって使用されるリソースの量に関係付けられている情報が、リソースの量が減少したことを示すとき、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を増加させることを含むことができる。
【0173】
[0186]いくつかの例では、プロセス900は、メディアコンテンツのユニキャストストリームからメタデータを抽出することを含むことができ、トランスコードされたメディアコンテンツのユニキャストストリームはメタデータを含まない。メタデータは、KLVメタデータ、または他の適切なメタデータを含むことができる。このような例では、プロセス900は、メディアコンテンツのユニキャストストリームから抽出されたメタデータをトランスコードされたメディアコンテンツのユニキャストストリームと組み合わせることと、組み合わされた抽出されたメタデータとトランスコードされたメディアコンテンツのユニキャストストリームとを表示することとを含むことができる。
【0174】
[0187]いくつかの例では、プロセス900は、コンピューティングデバイスのメモリに、マルチキャストストリームのうちの1つ以上のペイロードを記録することを含むことができる。
【0175】
[0188]いくつかの例では、プロセス900は、メディアコンテンツのユニキャストストリームのうちの1つ以上のパケットに対する1つ以上のタイムスタンプを生成することと、1つ以上のタイムスタンプをメディアコンテンツのユニキャストストリームのうちの1つ以上のパケットに関係付けることとを含むことができる。このような例では、メディアコンテンツのユニキャストストリームのオーディオパケット、ビデオパケット、およびメタデータパケットにタイムスタンプを追加することができる。
【0176】
[0189]図10は、メディアデータを処理するための別のプロセス1000を図示するフローダイヤグラムである。ブロック1002において、プロセス1000は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。ブロック1004において、プロセス1000は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームからメディアコンテンツのユニキャストストリームを生成することを含む。ブロック1002および1004は、プロセス900のブロック902および904と類似している。ブロック1006において、プロセス1000は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを記憶することを含む。ブロック1008において、プロセス1000は、1つ以上のチャネルを通して(例えば、ウェブソケットプロトコルを使用する1つ以上のTCPまたは他の適切なチャネルを通して)、メディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを再生のためのコンピューティングデバイスのブラウザに送信することを含む。いくつかのケースでは、プロセス1000は、コンピューティングデバイスによって、ブラウザを使用して、記憶された1つ以上のビデオフレームを表示することを含むことができる。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で(例えば、ウェブソケットを使用して)安全に実行される。
【0177】
[0190]いくつかの例では、プロセス1000は、コンピューティングデバイスによって、メディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることを含むことができる。このような例では、プロセス1000は、少なくとも1つのチャネルを通して(例えば、ウェブソケットプロトコルを使用する、1つ以上のTCPチャネルまたは他の適切なチャネルを通して)、トランスコードされたメディアコンテンツのユニキャストストリームを再生のためのブラウザに送信することを含むことができる。このような例では、プロセス1000は、コンピューティングデバイスによって、ブラウザを使用してトランスコードされたメディアコンテンツのユニキャストストリームを表示することをさらに含むことができる。いくつかのケースでは、トランスコードされたメディアコンテンツのユニキャストストリームは、(例えば、図6に示したように)アクティブストリームとしてのメディアコンテンツの選択に応答して、記憶された1つ以上のビデオフレームの代わりにブラウザを使用して表示される。いくつかの例では、メディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされず、代わりに、図2に示したシステム202のフレームグラバーからのものである。このような例では、プロセス1000は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、コンピューティングデバイスによって、追加のメディアコンテンツのマルチキャストストリームから追加のメディアコンテンツのユニキャストストリームを生成することとをさらに含むことができる。プロセス1000は、コンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームの1つ以上のビデオフレームを記憶することを含むことができる。プロセス1000は、ブラウザを使用するコンピューティングデバイスによって、トランスコードされたメディアコンテンツのユニキャストストリームをアクティブストリームとしてコンピューティングデバイスのディスプレイの第1の部分に表示することと、ブラウザを使用するコンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームをコンピューティングデバイスのディスプレイの第2の部分に表示することとをさらに含むことができる。このような例の実例を、図6図7図8に示している。
【0178】
[0191]いくつかのケースでは、プロセス1000は、コンピューティングデバイスによって、追加のメディアコンテンツのユニキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることをさらに含むことができる。このようなケースでは、プロセス1000は、ディスプレイの第2の部分に表示されたコンテンツの選択に対応する入力を受信することを含むことができる。コンテンツは、追加のメディアコンテンツのユニキャストストリームのうちの1つ以上のビデオフレームを含む。プロセス1000は、ディスプレイの第2の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第2の部分に、トランスコードされた追加のメディアコンテンツのユニキャストストリームをアクティブストリームとして表示することをさらに含むことができる。プロセス1000は、ディスプレイの第2の部分に表示されたコンテンツの選択に応答して、コンピューティングデバイスのディスプレイの第1の部分にメディアコンテンツのユニキャストストリームのうちの記憶された1つ以上のビデオフレームを表示することをさらに含むことができる。
【0179】
[0192]上記で説明したものと同様に、プロセス1000はまた、メモリに記憶されているメディアコンテンツのユニキャストストリームからフレームの数を調節するために、および/または1つ以上のビデオフレームの解像度を調節するために、コンピューティングデバイスのCPU消費および/またはRAM消費を考慮することができる。プロセス1000はまた、または代替的に、フレームの数またはフレームの解像度を調節するためにブラウザによって使用されるリソースの量を考慮することができる。例えば、CPU消費しきい値、RAM消費しきい値、および/またはリソース使用しきい値を考慮することができる。別の例では、CPU消費、RAM消費、および/またはブラウザによって使用されるリソースの増加または減少は、フレームレートまたは解像度が増加または減少するかどうかに影響を及ぼすことがある。
【0180】
[0193]図11は、メディアデータを処理するための別のプロセス1100の例を示すフローダイヤグラムである。ブロック1102において、プロセス1100は、コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することを含む。いくつかの例では、プロセス1100は、メディアコンテンツのマルチキャストストリームの1つ以上のペイロードを解読することを含む。
【0181】
[0194]ブロック1104において、プロセス1100は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することを含む。いくつかの例では、プロセス1100は、メディアコンテンツのユニキャストストリームのデータフラグメントを記憶することを含む。いくつかのケースでは、1つ以上のフレームは、1つ以上のバッファに記憶されてもよい。例えば、メディアコンテンツの1つ以上のペイロードは、バッファに記憶されてもよく、バッファリングされたペイロードデータは、メディアデータのデータフラグメントに分割されてもよい。
【0182】
[0195]ブロック1106において、プロセス1100は、ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、メディアコンテンツのマルチキャストストリームの1つ以上のデータフラグメントを再生のためのコンピューティングデバイスのブラウザに送信することを含む。ブラウザは、コンピューティングデバイスによって動作され、このケースでは、送信は、コンピューティングデバイス内で(例えば、ウェブソケットを使用して)安全に実行される。いくつかの例では、プロセス1100は、ブラウザを使用するコンピューティングデバイスによって、1つ以上のデータフラグメントを表示することを含む。例えば、コンピューティングデバイスのメディアプレーヤー(例えば、メディアプレーヤー304)は、1つ以上のデータフラグメントに対応するビデオを再生することができる。いくつかの例では、プロセス1100は、1つ以上のデータフラグメントをブラウザに送信する前に、メディアコンテンツの1つ以上のデータフラグメントを暗号化することを含む。
【0183】
[0196]いくつかの例では、プロセス1100は、コンピューティングデバイスによって、メディアコンテンツのマルチキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることを含む。メディアコンテンツのマルチキャストストリームを分割することは、トランスコーディングが実行されるとき、トランスコードされたメディアコンテンツのユニキャストストリームをデータフラグメントに分割することを含むことができる。トランスコーディングが必要とされないとき、メディアの最初に受信されたマルチキャストストリームを、データフラグメントに分割できる。
【0184】
[0197]いくつかの例では、プロセス1100は、ローカルのハイパーテキスト転送プロトコル(HTTP)ポート上でメディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを受信することを含む。1つ以上のデータフラグメントは、ウェブソケットプロトコルを使用してHTTPポートからブラウザに送信される。
【0185】
[0198]いくつかの例では、プロセス1100は、メディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することを含む。いくつかのケースでは、メディアコンテンツのマルチキャストストリームのうちの記憶された1つ以上のビデオフレームは、トランスコードされない。例えば、上述したように、1つ以上のビデオフレームは、図3に示したシステム302のフレームグラバーから取得することができる。いくつかの例では、プロセス1100は、コンピューティングデバイスによって、ブラウザを使用して、記憶された1つ以上のビデオフレームを表示することを含む。
【0186】
[0199]いくつかの例では、プロセス1100は、コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、追加のメディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することとを含む。プロセス1100は、ブラウザを使用するコンピューティングデバイスによって、コンピューティングデバイスのディスプレイの第1の部分にメディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを表示することと、ブラウザを使用するコンピューティングデバイスによって、コンピューティングデバイスのディスプレイの第2の部分に追加のメディアコンテンツのマルチキャストストリームのうちの記憶された1つ以上のビデオフレームを表示することとをさらに含むことができる。
【0187】
[0200]いくつかの例では、プロセス1100は、コンピューティングデバイスに関係付けられた性能データを取得することと、コンピューティングデバイスに関係付けられたユーザデータを取得することとを含む。ユーザデータは、コンピューティングデバイスのメディアプレーヤーを使用してユーザによって視聴される1つ以上のタイプのチャネル、ユーザに関係付けられたビデオの視聴コンフィギュレーション、これらの組み合わせ、または他の何らかの適切なユーザデータを含むことができる。プロセス1100は、コンピューティングデバイス上でユーザによって特定のチャネルが選択されたときに生成するトランスコーディング品質を示す品質推奨を取得することをさらに含むことができる。いくつかのケースでは、トランスコーディング品質は、解像度、フレームレート、およびビデオのビットレートのうちの少なくとも1つを含む。品質推奨は、性能データおよびユーザデータに基づく。いくつかのケースでは、品質推奨は、機械学習を使用して決定される。いくつかのケースでは、機械学習はニューラルネットワークに基づく。例えば、性能データおよびユーザデータをニューラルネットワークに入力することができ、ニューラルネットワークは、性能データおよびユーザデータの処理に基づいて品質推奨を出力することができる。
【0188】
[0201]いくつかの例では、プロセス1100は、性能データおよびユーザデータをサーバに送ることと、サーバから品質推奨を受信することとを含む。例えば、マルチキャスト処理システム(例えば、マルチキャスト処理システム308のユーザ挙動および計算能力アナライザ362)は、性能およびユーザデータをメディアプラットフォームサーバ(例えば、メディアプラットフォームサーバ312)に送ることができ、メディアプラットフォームサーバ(例えば、AIシステム364)は、品質推奨をマルチキャスト処理システムのトランスコーダ(例えば、マルチキャスト処理システム308のトランスコーダ330)に送ることができる。
【0189】
[0202]上述の方法およびシステムは、既存のシステムに勝る多くのを利点を提供する。例えば、上述のように、(図5Aに示したような)マルチユニキャストトランスコーディングおよび再配信アプローチのケースでは、サーバが障害を起こした場合、障害は、そのサーバからマルチユニキャストストリームを得るすべてのユーザに影響を及ぼす。マルチキャスト処理システム(例えば、システム108、208、および/または308)を使用する利点は、マルチキャスト処理システムがプロセスの間のある点で障害を起こした場合、障害を被ったコンピューティングデバイスのみが影響を受けることである。ネットワークから直接マルチキャストストリームに参加するネットワーク上の他のコンピューティングデバイスは、元のマルチキャストコンテンツを受信し続け、それぞれのマルチキャスト処理システムを使用してコンテンツを処理することができる。(例えば、図5Aに示したような)サーバベースのマルチユニキャストアプローチに対する(例えば、図5Bに示したような)配信、クライアント計算アプローチの利点の別の例は、更新および定期的保守に関する。(例えば、図5Aに示したような)トランスコーディングサーバおよび再配信サーバは、ソフトウェア修正およびセキュリティ更新のために更新およびパッチを当てる必要があり、更新およびパッチが必要とされるたびに停止する必要がある。停止すると、サーバは、コンピューティングデバイスにストリームを提供せず、サービスアップタイムを維持することをより困難にし、ITが更新を調節およびロールアウトすることをより困難にする。(例えば、図5Bに示したような)クライアント計算アプローチは、同じタイプのボトルネックを有さない。
【0190】
[0203]プロセス900、1000、および1100は、実行可能命令で構成された1つ以上のコンピュータシステムの制御下で実行されてもよく、ハードウェア、またはその組み合わせによって、1つ以上のプロセッサ上で集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実現されてもよい。例えば、コンピュータシステムは、システム102、システム202、およびシステム302のうちの1つ以上を実現することができる。上記のように、コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ読取可能または機械読取可能記憶媒体上に記憶されてもよい。コンピュータ読取可能または機械読取可能記憶媒体は、非一時的であってもよい。
【0191】
[0204]図12は、本出願のさまざまな実施形態が実現されてもよい例示的なコンピュータシステム1200を図示している。システム1200は、上述したコンピュータシステムのうちのいずれかを実現するために、使用されてもよい。図に示すように、コンピュータシステム1200は、バスサブシステム1202を介して、多数の周辺サブシステムと通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、記憶サブシステム1218、および通信サブシステム1224を含んでいてもよい。記憶サブシステム1218は、有形コンピュータ読取可能記憶媒体1222およびシステムメモリ1210を含む。
【0192】
[0205]バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムに、意図されたように互いに通信させるためのメカニズムを提供する。バスサブシステム1202は、単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態は、複数のバスを利用してもよい。バスサブシステム1202は、さまざまなバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリ制御装置、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。例えば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスを含んでいてもよいが、これらは、IEEE P1386.1規格に合わせて製造されたメザニンバスとして実現することができる。
【0193】
[0206]1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロ制御装置)として実現されてもよい処理ユニット1204は、コンピュータシステム1200の動作を制御する。1つ以上のプロセッサが処理ユニット1204に含まれてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理ユニット1204は、各処理ユニットに含まれるシングルまたはマルチコアプロセッサを有する1つ以上の独立した処理ユニット1232および/または1234として実現されてもよい。他の実施形態では、処理ユニット1204はまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実現されてもよい。
【0194】
[0207]さまざまな実施形態では、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時に実行するプログラムまたはプロセスを維持することができる。任意の所定の時間に、実行されるプログラムコードのうちのいくつかまたはすべては、プロセッサ1204および/または記憶サブシステム1218に存在することができる。適切なプログラミングを通じて、プロセッサ1204は、上述のさまざまな機能性を提供することができる。コンピュータシステム1200は、デジタル信号プロセッサ(DSP)、特殊目的プロセッサ、および/またはこれらに類するものを含むことができる、処理加速ユニット1206をさらに含むことができる。
【0195】
[0208]I/Oサブシステム1208は、ユーザインターフェース入力デバイスおよびユーザインターフェース出力デバイスを含んでいてもよい。ユーザインターフェース入力デバイスは、キーボード、マウスまたはトラックボールのようなポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有するオーディオ入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでいてもよい。ユーザインターフェース入力デバイスは、例えば、ジェスチャおよび発話コマンドを使用するナチュラルユーザインターフェースを通して、ユーザが、Microsoft Xbox(登録商標)360ゲームコントローラのような入力デバイスを制御し、それと相互作用することを可能にする、Microsoft Kinect(登録商標)運動センサのような運動感知および/またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェース入力デバイスはまた、ユーザから眼球活動(例えば、写真を撮るおよび/またはメニュー選択を行う間の「瞬き」)を検出し、眼球ジェスチャを入力デバイス(例えば、Google Glass(登録商標))への入力として変換する、Google Glass瞬き検出器のような眼球ジェスチャ認識デバイスを含んでもよい。加えて、ユーザインターフェース入力デバイスは、ユーザが、音声コマンドを通して、音声認識システム(例えば、Siri(登録商標)ナビゲータ)と相互作用することを可能にする、音声認識感知デバイスを含んでもよい。
【0196】
[0209]ユーザインターフェース入力デバイスはまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカー、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤー、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡デバイスのようなオーディオ/ビジュアルデバイスに限定されないが、これらを含んでいてもよい。加えて、ユーザインターフェース入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴映像法、ポジトロン放出断層撮影、医療用超音波検査デバイスのような医用画像入力デバイスを含んでもよい。ユーザインターフェース入力デバイスはまた、例えば、MIDIキーボード、デジタル楽器のようなオーディオ入力デバイスを含んでいてもよい。
【0197】
[0210]ユーザインターフェース出力デバイスは、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイス等のような非視覚ディスプレイを含んでいてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するもののようなフラットパネルデバイス、投影デバイス、タッチスクリーン、およびこれらに類するものであってもよい。一般的に、「出力デバイス」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのすべての可能なタイプのデバイスおよびメカニズムを含むように意図されている。例えば、ユーザインターフェース出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムのような、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝えるさまざまなディスプレイデバイスに限定されないが、これらを含んでいてもよい。
【0198】
[0211]コンピュータシステム1200は、システムメモリ1210内に現在位置付けられているものとして示されるソフトウェア要素を備える記憶サブシステム1218を備えてもよい。システムメモリ1210は、処理ユニット1204上でロード可能および実行可能であるプログラム命令とともに、これらのプログラムの実行の間に生成されるデータを記憶してもよい。
【0199】
[0212]コンピュータシステム1200のコンフィギュレーションおよびタイプに依存して、システムメモリ1210は、(ランダムアクセスメモリ(RAM)のような)揮発性および/または(リードオンリーメモリ(ROM)、フラッシュメモリ等のような)不揮発性であってもよい。RAMは、典型的には、処理ユニット1204によって直ちにアクセス可能であり、および/または現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかのインプリメンテーションでは、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)のような、複数の異なるタイプのメモリを含んでいてもよい。いくつかのインプリメンテーションでは、起動の間のようなコンピュータシステム1200内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶されてもよい。限定ではなく例として、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)等を含んでいてもよいアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216も図示している。例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLINUX(登録商標)オペレーティングシステムのさまざまなバージョン、(さまざまなGNU/LINUX(登録商標)オペレーティングシステム、Google Chrome(登録商標)OS、およびこれらに類するものを含むがこれらに限定されない)さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム、ならびに/あるいはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10OS、およびPalm(登録商標)OSオペレーティングシステムのような移動体オペレーティングシステムを含んでいてもよい。
【0200】
[0213]記憶サブシステム1218はまた、いくつかの実施形態の機能性を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されるとき、上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行されてもよい。記憶サブシステム1218はまた、本願にしたがって使用されるデータを記憶するためのリポジトリを提供してもよい。
【0201】
[0214]記憶サブシステム1200はまた、コンピュータ読取可能記憶媒体1222にさらに接続されることができるコンピュータ読取可能記憶媒体リーダ1220を含んでいてもよい。コンピュータ読取可能記憶媒体1222は、システムメモリ1210と組み合わせて、ともに、およびオプション的に、遠隔、ローカル、固定、および/または取り外し可能記憶デバイスに加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、記憶し、送信し、取り出すための記憶媒体を包括的に表してもよい。
【0202】
[0215]コードまたはコードの部分を含むコンピュータ読取可能記憶媒体1222はまた、情報の記憶および/または送信のための任意の方法またはテクノロジーで実現される揮発性および不揮発性、取り外し可能および非取り外し可能媒体に限定されないがこれらのような記憶媒体および通信媒体を含む、当技術分野で知られているまたは使用される任意の適切な媒体を含むことができる。これは、RAM、ROM、電子的消去可能プログラム可能ROM(EEPROM(登録商標))、フラッシュメモリまたは他のメモリテクノロジー、CD-ROM、デジタル多用途ディスク(DVD)、あるいは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは他の有形コンピュータ読取可能媒体のような有形コンピュータ読取可能記憶媒体を含むことができる。これはまた、データ信号、データ送信、または所望の情報を送信するために使用されることができ、コンピューティングシステム1200によってアクセスされることができる他の何らかの媒体のような、非有形コンピュータ読取可能媒体を含むことができる。
【0203】
[0216]例として、コンピュータ読取可能記憶媒体1222は、非取り外し可能不揮発性磁気媒体から読み取るかまたはそれに書き込むハードディスクドライブ、取り外し可能不揮発性磁気ディスクから読み取るかまたはそれに書き込む磁気ディスクドライブ、ならびにCD ROM、DVD、およびBlu-Ray(登録商標)ディスクのような取り外し可能不揮発性光ディスクまたは他の光媒体から読み取るかまたはそれに書き込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープ、およびこれらに類するものを含んでいてもよいが、これらに限定されない。コンピュータ読取可能記憶媒体1222はまた、フラッシュメモリベースのソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROM、およびこれらに類するもののような不揮発性メモリに基づくSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDの組み合わせを使用するハイブリッドSSDのような揮発性メモリに基づくSSDを含んでいてもよい。ディスクドライブおよびこれらに関係付けられているコンピュータ読取可能媒体は、コンピュータシステム1200のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶装置を提供してもよい。
【0204】
[0217]通信サブシステム1224は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1224は、他のシステムからデータを受信し、コンピュータシステム1220から他のシステムにデータを送信するためのインタフェースとして機能する。例えば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つ以上のデバイスに接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム1224は、(例えば、セルラ電話機テクノロジー、3G、4G、またはEDGE(enhansed data rates for global evolution)のような高度データネットワークテクノロジー、WiFi(IEEE802.11ファミリー規格、または他の移動体通信技術、またはこれらの任意の組み合わせ)を使用する)ワイヤレス音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含むことができる。いくつかの実施形態では、通信サブシステム1224は、ワイヤレスインターフェースに加えて、またはその代わりに、ワイヤードネットワーク接続性(例えば、イーサネット(登録商標))を提供することができる。
【0205】
[0218]いくつかの実施形態では、通信サブシステム1224はまた、コンピュータシステム1200を使用してもよい1人以上のユーザの代わりに、構造化および/または非構造化データフィード1226、イベントストリーム1227、イベント更新1230、およびこれらに類するもののような形態の入力通信を受信してもよい。
【0206】
[0219]例として、通信サブシステム1224は、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのウェブフィード、および/または1つ以上の第3者情報源からのリアルタイム更新のような、ソーシャルネットワークおよび/または他の通信サービスのユーザからリアルタイムでデータフィード1226を受信するように構成されてもよい。
【0207】
[0220]加えて、通信サブシステム1224はまた、連続的なデータストリームの形態でデータを受信するように構成されてもよく、これは、明示的な終了を伴わずに本質的に連続的または無制限であってもよい、リアルタイムイベントのイベントストリーム1228および/またはイベント更新1230を含んでいてもよい。連続データを生成するアプリケーションの例は、例えば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車トラフィック監視、およびこれらに類するものを含んでいてもよい。
【0208】
[0221]通信サブシステム1224はまた、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230、およびこれらに類するものを、コンピュータシステム1200に結合された1つ以上のストリーミングデータソースコンピュータと通信してもよい1つ以上のデータベースに出力するように構成されてもよい。
【0209】
[0222]コンピュータシステム1200は、ハンドヘルドポータブルデバイス(例えば、iPhone(登録商標)セルラ電話機、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または、他のタイプのデータ処理システムを含む、さまざまなタイプのうちの1つであることがある。
【0210】
[0223]コンピュータおよびネットワークの常に変化する性質により、図に描かれるコンピュータシステム1200の説明は、特定の例としてのみ意図される。図に描かれるシステムよりも多いまたは少ないコンポーネントを有する多くの他のコンフィギュレーションが可能である。例えば、カスタマイズされたハードウェアも使用してもよく、ならびに/あるいは、特定の要素は、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または、組み合わせで実現してもよい。さらに、ネットワーク入力/出力デバイスのような他のコンピューティングデバイスへの接続を用いてもよい。ここで提供される開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の方法および/または手法を認識するだろう。
【0211】
[0224]前述の明細書では、本出願の態様は、その特定の実施形態を参照して説明されるが、当業者は、本出願がそれに限定されないことを認識するだろう。上述の出願のさまざまな特徴および態様は、個別にまたは共に使用することができる。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、ここで説明したもの超えるの任意の数の環境および用途において利用することができる。それゆえに、本明細書および図面は、限定的よりもむしろ、実例的にみなすべきである。
【0212】
[0225] 特定の要件にしたがって、実質的なバリエーションがなされてもよい。例えば、カスタマイズされたハードウェアも使用してもよく、および/または、特定の要素は、ハードウェア、(アプレット等のようなポータブルソフトウェアを含む)ソフトウェア、または、両方で実現してもよい。さらに、ネットワーク入力/出力デバイスのような、他のアクセスまたはコンピューティングデバイスへの接続を用いてもよい。
【0213】
[0226]前述の明細書では、本出願の態様は、その特定の実施形態を参照して説明されているが、当業者は、本出願の主題がそれに限定されないことを認識するだろう。上記で説明した例のさまざまな特徴および態様は、個々にまたは共に使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、ここで説明したものを超える任意の数の環境および用途において利用することができる。それゆえに、本明細書および図面は、限定的よりもむしろ、実例的にみなすべきである。
【0214】
[0227]上記の説明では、実例の目的で、方法を特定の順序で説明した。代替実施形態では、方法は、説明した順序とは異なる順序で実行されてもよいことを認識されたい。また、上述の方法は、ハードウェアコンポーネントによって実行されてもよく、または機械実行可能命令のシーケンスで具現化されてもよく、機械実行可能命令のシーケンスは、命令を有するプログラムされた汎用または特殊目的プロセッサまたは論理回路のような機械に、方法を実行させるために使用されてもよいことを認識されたい。これらの機械実行可能命令は、CD-ROMまたは他のタイプの光ディスク、フロッピー(登録商標)ディスケット、ROM、RAM、EPROM、EEPROM、磁気または光カード、フラッシュメモリ、あるいは電子命令を記憶するのに適した他のタイプの機械読取可能媒体のような、1つ以上の機械読取可能媒体上に記憶されてもよい。代替的に、方法は、ハードウェアおよびソフトウェアの組み合わせによって実行されてもよい。
【0215】
[0228]コンポーネントがある動作を実行するように構成されるものとして説明される場合、そのようなコンフィギュレーションは、例えば、動作を実行するように電子回路または他のハードウェアを設計することによって、動作を実行するようにプログラム可能電子回路(例えば、マイクロプロセッサまたは他の適切な電子回路)をプログラミングすることによって、またはそれらの任意の組み合わせによって達成できる。
【0216】
[0229]本出願の実例的な実施形態をここで詳細に説明してきたが、本発明の概念は、他の方法でさまざまに具現化および採用されてもよいこと、ならびに添付の特許請求の範囲は、従来技術によって限定されるものを除いて、そのようなバリエーションを含むように解釈されることが意図されることを理解されたい。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1] メディアデータを処理する方法であって、
コンピューティングデバイスにおいて、メディアコンテンツのマルチキャストストリームを受信することと、
前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割することと、
ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを、再生のための前記コンピューティングデバイスのブラウザに送信することと、を含む方法。
[2] 前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードすることをさらに含み、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、[1]に記載の方法。
[3] ローカルのハイパーテキスト転送プロトコル(HTTP)ポート上で前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを受信することをさらに含み、前記1つ以上のデータフラグメントは、前記ウェブソケットプロトコルを使用して、前記HTTPポートから前記ブラウザに送信される、[1]に記載の方法。
[4] 前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のペイロードを解読することをさらに含む、[1]に記載の方法。
[5] 前記1つ以上のデータフラグメントを前記ブラウザに送信する前に、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを暗号化することをさらに含む、[1]に記載の方法。
[6] 前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを表示することをさらに含む、[1]に記載の方法。
[7] 前記メディアコンテンツのマルチキャストストリームの前記データフラグメントを記憶することをさらに含む、[1]に記載の方法。
[8] 前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することをさらに含む、[1]に記載の方法。
[9] 前記メディアコンテンツのマルチキャストストリームのうちの前記記憶された1つ以上のビデオフレームは、トランスコードされない、[8]に記載の方法。
[10] 前記コンピューティングデバイスによって、前記ブラウザを使用して、前記記憶された1つ以上のビデオフレームを表示することをさらに含む、[8]に記載の方法。
[11] 前記コンピューティングデバイスにおいて、追加のメディアコンテンツのマルチキャストストリームを受信することと、
前記追加のメディアコンテンツのマルチキャストストリームのうちの1つ以上のビデオフレームを記憶することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを前記コンピューティングデバイスのディスプレイの第1の部分に表示することと、
前記ブラウザを使用する前記コンピューティングデバイスによって、前記追加のメディアコンテンツのマルチキャストストリームのうちの前記記憶された1つ以上のビデオフレームを前記コンピューティングデバイスのディスプレイの第2の部分に表示することとをさらに含む、[1]に記載の方法。
[12] 前記コンピューティングデバイスに関係付けられた性能データを取得することと、
前記コンピューティングデバイスに関係付けられたユーザデータを取得することと、前記ユーザデータは、前記コンピューティングデバイスのメディアプレーヤを使用してユーザによって視聴される1つ以上のタイプのチャネル、および、前記ユーザに関係付けられたビデオの視聴コンフィギュレーションのうちの少なくとも1つを含み、
特定のチャネルが前記コンピューティングデバイス上で前記ユーザによって選択されるときに生成するトランスコーディング品質を示す品質推奨を取得することとをさらに含み、前記品質推奨は、前記性能データおよび前記ユーザデータに基づく、[1]に記載の方法。
[13] 前記性能データおよび前記ユーザデータをサーバに送ることと、
前記サーバから前記品質推奨を受信することとをさらに含む、[12]に記載の方法。
[14] 前記トランスコーディング品質は、解像度、フレームレート、および、ビデオのビットレートのうちの少なくとも1つを含む、[12]に記載の方法。
[15] 前記品質推奨は、機械学習を使用して決定される、[12]に記載の方法。
[16] 前記機械学習は、ニューラルネットワークに基づく、[15]に記載の方法。
[17] 装置であって、
1つ以上のプロセッサと、
命令を含む1つ以上の非一時的コンピュータ読取可能記憶媒体とを備え、
前記命令は、前記1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記メディアコンテンツのマルチキャストストリームのうちの1つ以上のデータフラグメントを、再生のためのコンピューティングデバイスのブラウザに送信させる、装置。
[18] 命令をさらに含み、
前記命令は、前記1つ以上のプロセッサ上で実行されるとき、前記1つ以上のプロセッサに、
前記メディアコンテンツのマルチキャストストリームを第1のメディアフォーマットから第2のメディアフォーマットにトランスコードさせ、前記メディアコンテンツのマルチキャストストリームを分割することは、前記トランスコードされたメディアコンテンツのマルチキャストストリームを前記データフラグメントに分割することを含む、[17]に記載の装置。
[19] 命令をさらに含み、
前記命令は、前記1つ以上のプロセッサ上で実行されるとき、前記1つ以上のプロセッサに、
ローカルのハイパーテキスト転送プロトコル(HTTP)ポート上で前記メディアコンテンツのマルチキャストストリームのうちの前記1つ以上のデータフラグメントを受信させ、前記1つ以上のデータフラグメントは、前記ウェブソケットプロトコルを使用して、前記HTTPポートから前記ブラウザに送信される、[17]に記載の装置。
[20] 命令を含む非一時的機械読取可能記憶媒体中で有形に具現化されるコンピュータプログラム製品であって、
前記命令は、1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに、
メディアコンテンツのマルチキャストストリームを受信させ、
前記メディアコンテンツのマルチキャストストリームをデータフラグメントに分割させ、
ウェブソケットプロトコルを使用する1つ以上の送信制御プロトコル(TCP)チャネルを通して、前記メディアコンテンツのマルチキャストストリームの1つ以上のデータフラグメントを、再生のためのコンピューティングデバイスのブラウザに送信させる、コンピュータプログラム製品。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
図11
図12