(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-11
(45)【発行日】2024-09-20
(54)【発明の名称】フォールトトレラントなライブビデオストリーミング
(51)【国際特許分類】
H04N 21/24 20110101AFI20240912BHJP
H04N 21/266 20110101ALI20240912BHJP
H04H 20/26 20080101ALI20240912BHJP
H04H 60/82 20080101ALI20240912BHJP
【FI】
H04N21/24
H04N21/266
H04H20/26
H04H60/82
(21)【出願番号】P 2021566287
(86)(22)【出願日】2020-05-08
(86)【国際出願番号】 US2020032212
(87)【国際公開番号】W WO2020227679
(87)【国際公開日】2020-11-12
【審査請求日】2023-03-13
(32)【優先日】2019-05-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521316660
【氏名又は名称】ブライトコーブ インコーポレイテッド
【氏名又は名称原語表記】BRIGHTCOVE INC.
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】センザノ フェレット、ホルヘ
(72)【発明者】
【氏名】クロフシック、テッド
(72)【発明者】
【氏名】ニール、マシュー
(72)【発明者】
【氏名】ハーティ、マイケル
(72)【発明者】
【氏名】レズニック、ユーリー
【審査官】醍醐 一貴
(56)【参考文献】
【文献】米国特許出願公開第2014/0344443(US,A1)
【文献】米国特許出願公開第2017/0171590(US,A1)
【文献】特表2016-509400(JP,A)
【文献】特開2006-067483(JP,A)
【文献】米国特許出願公開第2013/0308436(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00-21/858
H04H 20/00-20/46
H04H 40/90-60/98
(57)【特許請求の範囲】
【請求項1】
フォールトトレラントなライブビデオストリーミングを提供する方法であって、
第1の冗長制御ユニットを使用して以下のステップを実行することであって、
第1の
クラウドビデオトランスコーダから
の第1のトランスコードビデオストリーム
と第2の
クラウドビデオトランスコーダから
の第2のトランスコードビデオストリーム
とを取得する
ステップであって、
前記第1の冗長制御ユニットに対する入力が前記第1のトランスコードビデオストリームと前記第2のトランスコードビデオストリームとを含み、前記第1のトランスコードビデオストリームが、第1のトランスコードマニフェストと、前記第1のクラウドビデオトランスコーダによって生成された第1のトランスコードビデオセグメントのセットとからなり、前記第2のトランスコードビデオストリームが、第2のトランスコードマニフェストと、前記第2のクラウドビデオトランスコーダによって生成された第2のトランスコードビデオセグメントのセットとからなる、前記取得するステップと、
前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメントを使用して第1の出力ビデオストリームを提供する
ための第1の
出力マニフェストを
第1のオリジンサーバに出力する
ステップであって、前記第1の出力マニフェストが前記第1のトランスコードマニフェストに基づく、前記出力するステップと、
前記第1のトランスコードマニフェストを監視して前記第1のトランスコードビデオストリームでの障害状態を特定する
ステップと、
前記障害状態の特定に応答して前記第1の
出力マニフェストを更新することにより、前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することに切り替える
ステップであって、前記第1の出力マニフェストを更新することが前記第2のトランスコードマニフェストに基づく、前記切り替えるステップと、
前記更新された第1の出力マニフェストを前記第1のオリジンサーバに出力するステップと、
前記第1の出力ビデオストリームを前記第1のオリジンサーバに提供するステップと、
を前記第1の冗長制御ユニットを使用して実行することを備える方法。
【請求項2】
前記更新された第1の
出力マニフェストは、前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを使用する前に配置されたEXT-X-DISCONTINUITYマーカーを含むハイパーテキスト転送プロトコル(HTTP)ライブストリーミング(HLS)マニフェストである、請求項1に記載の方法。
【請求項3】
前記更新された第1の
出力マニフェストは、DASHマニフェストであり、前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットをメディアプレゼンテーションの新たな期間として指定する、請求項1に記載の方法。
【請求項4】
前記更新された第1の
出力マニフェストは、前記切り替え前における
前記第1の
トランスコードビデオストリームの最後のメディアセグメント
内の、HTTPによる動的適応ストリーミング(DASH)または共通メディアアプリケーションフォーマット(CMAF)のイベントメッセージとしてさらにエンコードおよび配置されたDASHマニフェストである、請求項1に記載の方法。
【請求項5】
デコーダによる連続的なデコード可能性を保証するのを助けるために、前記切り替え後の前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを更新することをさらに備える請求項1に記載の方法。
【請求項6】
前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを更新することは、
シーケンスパラメータセット(SPS)、
画像パラメータセット(PPS)、
プレゼンテーションタイムスタンプ(PTS)、
ディスプレイタイムスタンプ(DTS)、
プログラムクロックリファレンス(PCR)、
システムクロックリファレンス(SCR)、または
それらの任意の組み合わせ、
を変更することを含む、請求項5に記載の方法。
【請求項7】
前記障害状態が、
しきい値時間よりも長い
前記第1のトランスコードビデオストリームの出力の遅延、
前記第1のトランスコードビデオストリームのビデオセグメントへのアクセスできないリンク、または
それらの任意の組み合わせ、
を含む、請求項1に記載の方法。
【請求項8】
第2の冗長制御ユニットを使用することであって、
前記第1の
クラウドビデオトランスコーダから前記第1のトランスコードビデオストリームを取得するとともに、前記第2の
クラウドビデオトランスコーダから前記第2のトランスコードビデオストリームを取得し、
前記第1のトランスコードビデオストリーム、前記第2のトランスコードビデオストリーム、またはその両方のビデオセグメントを使用して第2の出力ビデオストリームを提供する第2のマニフェストを出力する前記第2の冗長制御ユニットを使用すること、
をさらに備える請求項
1に記載の方法。
【請求項9】
前記第1の出力ビデオストリームを第1のコンテンツ配信ネットワーク(CDN)に提供すること、
前記第2の出力ビデオストリームを第2のCDNに提供すること、
をさらに備える請求項
8に記載の方法。
【請求項10】
前記第1の出力ビデオストリームを前記第2のCDNに提供すること、
前記第2の出力ビデオストリームを前記第1のCDNに提供すること、
をさらに備える請求項
9に記載の方法。
【請求項11】
前記第1の出力ビデオストリームを
前記第1のオリジンサーバに提供すること、
前記第2の出力ビデオストリームを第2のオリジンサーバに提供すること、
をさらに備える請求項
8に記載の方法。
【請求項12】
前記第1の出力ビデオストリーム
を第2のオリジンサーバに提供することをさらに備える請求項1に記載の方法。
【請求項13】
フォールトトレラントなライブビデオストリーミングを提供するシステムであって、
メモリと、
前記メモリと通信可能に結合され
、第1の冗長制御ユニットを使用する1つまたは複数の処理ユニットと、
を備え、
前記第1の冗長制御ユニットが、
第1の
クラウドビデオトランスコーダから
の第1のトランスコードビデオストリーム
と第2の
クラウドビデオトランスコーダから
の第2のトランスコードビデオストリーム
とを取得
するステップであって、
前記第1の冗長制御ユニットに対する入力が前記第1のトランスコードビデオストリームと前記第2のトランスコードビデオストリームとを含み、前記第1のトランスコードビデオストリームが、第1のトランスコードマニフェストと、前記第1のクラウドビデオトランスコーダによって生成された第1のトランスコードビデオセグメントのセットとからなり、前記第2のトランスコードビデオストリームが、第2のトランスコードマニフェストと、前記第2のクラウドビデオトランスコーダによって生成された第2のトランスコードビデオセグメントのセットとからなる、前記取得するステップと、
前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメントを使用して第1の出力ビデオストリームを提供する
ための第1の
出力マニフェストを
第1のオリジンサーバに出力
するステップであって、前記第1の出力マニフェストが前記第1のトランスコードマニフェストに基づく、前記出力するステップと、
前記第1のトランスコードマニフェストを監視して前記第1のトランスコードビデオストリームでの障害状態を特定
するステップと、
前記障害状態の特定に応答して前記第1の
出力マニフェストを更新することにより、前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することに切り替え
るステップであって、前記第1の出力マニフェストを更新することが前記第2のトランスコードマニフェストに基づく、前記切り替えるステップと、
前記更新された第1の出力マニフェストを前記第1のオリジンサーバに出力するステップと、
前記第1の出力ビデオストリームを前記第1のオリジンサーバに提供するステップと、
を実行するように構成されている、システム。
【請求項14】
前記1つまたは複数の処理ユニットは、ハイパーテキスト転送プロトコル(HTTP)ライブストリーミング(HLS)フォーマットまたはHTTPによる動的適応ストリーミング(DASH)フォーマットを含む前記第1のトランスコードビデオストリームおよび前記第2のトランスコードビデオストリームを取得するように構成されている、請求項
13に記載のシステム。
【請求項15】
前記1つまたは複数の処理ユニットは、
しきい値時間よりも長い
前記第1のトランスコードビデオストリームの出力の遅延、
前記第1のトランスコードビデオストリームのビデオセグメントへのアクセスできないリンク、または
それらの任意の組み合わせ、
を少なくとも部分的に特定することによって前記障害状態を特定するように構成されている、請求項
13に記載のシステム。
【請求項16】
前記1つまたは複数の処理ユニットはさらに、第2の冗長制御ユニットを使用して、
前記第1の
クラウドビデオトランスコーダから前記第1のトランスコードビデオストリームを取得するとともに、前記第2の
クラウドビデオトランスコーダから前記第2のトランスコードビデオストリームを取得し、
前記第1のトランスコードビデオストリーム、前記第2のトランスコードビデオストリーム、またはその両方のビデオセグメントを使用して第2の出力ビデオストリームを提供する第2のマニフェストを出力する、
ように構成されている、請求項
13に記載のシステム。
【請求項17】
前記1つまたは複数の処理ユニットはさらに、
前記第1の出力ビデオストリームを第1のコンテンツ配信ネットワーク(CDN)に提供し、
前記第2の出力ビデオストリームを第2のCDNに提供する、
ように構成されている、請求項
16に記載のシステム。
【請求項18】
命令を記憶した非一時的なコンピュータ可読媒体であって、
1つまたは複数の処理ユニットによって前記命令が実行されることにより前記1つまたは複数の処理ユニット
が第1の冗長制御ユニットを使用して以下のステップを実行させるものであって、
前記1つまたは複数の処理ユニットが、
第1の
クラウドビデオトランスコーダから
の第1のトランスコードビデオストリーム
と第2の
クラウドビデオトランスコーダから
の第2のトランスコードビデオストリーム
とを取得
するステップであって、
前記第1の冗長制御ユニットに対する入力が前記第1のトランスコードビデオストリームと前記第2のトランスコードビデオストリームとを含み、前記第1のトランスコードビデオストリームが、第1のトランスコードマニフェストと、前記第1のクラウドビデオトランスコーダによって生成された第1のトランスコードビデオセグメントのセットとからなり、前記第2のトランスコードビデオストリームが、第2のトランスコードマニフェストと、前記第2のクラウドビデオトランスコーダによって生成された第2のトランスコードビデオセグメントのセットとからなる、前記取得するステップと、
前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメントを使用して第1の出力ビデオストリームを提供する
ための第1の
出力マニフェストを
第1のオリジンサーバに出力
するステップであって、前記第1の出力マニフェストが前記第1のトランスコードマニフェストに基づく、前記出力するステップと、
前記第1のトランスコードマニフェストを監視して前記第1のトランスコードビデオストリームでの障害状態を特定
するステップと、
前記障害状態の特定に応答して前記第1の
出力マニフェストを更新することにより、前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットを使用して前記第1の出力ビデオストリームを提供することに切り替え
るステップであって、前記第1の出力マニフェストを更新することが前記第2のトランスコードマニフェストに基づく、前記切り替えるステップと、
前記更新された第1の出力マニフェストを前記第1のオリジンサーバに出力するステップと、
前記第1の出力ビデオストリームを前記第1のオリジンサーバに提供するステップと、
を前記第1の冗長制御ユニットを使用して実行させるものであり、
前記第1の
出力マニフェストの更新は、前記第1の
出力マニフェストが前記第1のトランスコードビデオストリームの
前記第1のトランスコードビデオセグメント
のセットの使用から前記第2のトランスコードビデオストリームの
前記第2のトランスコードビデオセグメント
のセットの使用へと切り替えるポイントを示す識別子を前記第1の
出力マニフェストに含めることを含む、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、フォールトトレラントなライブビデオストリーミングに関し、2019年5月9日に出願された米国仮特許出願第62/845,492号の優先権の利益を主張し、その全内容が参照により本明細書に組み込まれる。
【背景技術】
【0002】
インターネットを介したクラウドベースのライブビデオストリーミングは、ビデオソース(例えば、カメラ)からエンドユーザによって閲覧されるプレーヤ(例えば、コンピュータ上、携帯電話上などで実行されるメディアソフトウェアアプリケーション)にライブビデオを中継(および処理)するように構成された一連の通信可能に結合されたコンポーネントのチェーンを必要とし得る。しかしながら、ライブストリーミング配信チェーンのいずれかのコンポーネントで障害が発生すると、そのイベントの視聴エクスペリエンスが中断され、エンドユーザの観点からはユーザエクスペリエンスの品質が低下することにより、ビデオプロバイダに対するライブビデオの価値が低下し得る。
【0003】
従来のソリューションは、冗長なビデオストリームを提供し、必要に応じて、障害のあるストリームを動作可能なストリームに切り替えることで、視聴エクスペリエンスが中断される可能性を減らすのに有用とされている。しかしながら、このようなソリューションは、特別なハードウェアおよび/またはソフトウェアをビデオソースに必要とする場合が多く、実装に費用がかかる可能性がある。
【発明の概要】
【0004】
本明細書における実施形態は、2つ以上のトランスコーダによって出力される複数のトランスコードビデオストリーム間を切り替え可能な冗長制御ユニットを含むフォールトトレラントなクラウドベースアーキテクチャを提供することによって、上記および他の問題を克服する。冗長制御ユニットは、複数のトランスコードビデオストリームのうちの1つからマニフェストを出力し、そのストリームでの障害を検出すると、マニフェストを修正して複数のトランスコードビデオストリームのうちの別の一つに切り替え得る。冗長制御ユニットはさらに、ビデオストリームの不連続性にフラグを立てるようにマニフェストを修正し、これによって、プレーヤはエラーを伴うことなく新たなトランスコードビデオストリームに切り替えることが可能となる。他の実施形態は、追加のフォールトトレランスを提供するのに有用な追加の冗長性を含み得る。これらの実施形態は、特別なハードウェアおよび/またはソフトウェアをビデオソースに必要としない(例えば、コントリビューションエンコーダは一般的な既製のエンコーダとすることができる)ため、従来の冗長性ソリューションよりも大幅に費用効果に優れたものとなり得る。
【0005】
本明細書によるフォールトトレラントなライブビデオストリーミングを提供する例示的な方法は、第1のビデオトランスコーダから第1のトランスコードビデオストリームを取得するとともに第2のビデオトランスコーダから第2のトランスコードビデオストリームを取得すること、前記第1のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供する第1のマニフェストを出力すること、前記第1のトランスコードビデオストリームでの障害状態を特定すること、および、前記障害状態の特定に応答して前記第1のマニフェストを更新することにより、前記第1のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することに切り替えることを備える。
【0006】
本明細書による例示的なシステムは、メモリと、前記メモリに通信可能に結合された1つまたは複数の処理ユニットとを備える。前記1つまたは複数の処理ユニットは、第1のビデオトランスコーダから第1のトランスコードビデオストリームを取得するとともに第2のビデオトランスコーダから第2のトランスコードビデオストリームを取得し、前記第1のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供する第1のマニフェストを出力し、前記第1のトランスコードビデオストリームでの障害状態を特定し、前記障害状態の特定に応答して前記第1のマニフェストを更新することにより、前記第1のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することに切り替えるように構成されている。
【0007】
本明細書による例示的な非一時的コンピュータ可読媒体は、命令を記憶し、1つまたは複数の処理ユニットによって前記命令が実行されることにより、前記1つまたは複数の処理ユニットは、第1のビデオトランスコーダから第1のトランスコードビデオストリームを取得するとともに第2のビデオトランスコーダからの第2のトランスコードビデオストリームを取得し、前記第1のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供する第1のマニフェストを出力し、前記第1のトランスコードビデオストリームでの障害状態を特定し、前記障害状態の特定に応答して前記第1のマニフェストを更新することにより、前記第1のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することから、前記第2のトランスコードビデオストリームのビデオセグメントを使用して前記第1の出力ビデオストリームを提供することに切り替える。
【図面の簡単な説明】
【0008】
【
図1】現代のクラウドベースのライブビデオ配信チェーンの全体構造を示すブロック図である。
【
図2】
図2A~
図2Cは、いくつかの実施形態によるフォールトトレラントライブビデオ配信システムで利用され得る切り替えメカニズムの図である。
【
図3】一実施形態によるポストトランスコーダスイッチを備えたフォールトトレラントビデオ配信システムのブロック図である。
【
図4】あるビデオストリームから別のビデオストリームへの切り替えに起因するプレーヤの問題を最小限に抑えるためにマニフェストを修正する方法の一例を示す図である。
【
図5】フォールトトレラントビデオ配信システムの追加の実施形態のブロック図である。
【
図6】フォールトトレラントビデオ配信システムの追加の実施形態のブロック図である。
【
図7】フォールトトレラントビデオ配信システムの追加の実施形態のブロック図である。
【
図8】一実施形態によるフォールトトレラントライブビデオストリーミングを提供する方法800を示すフロー図である。
【
図9】コンピュータシステムの一実施形態のブロック図である。
【発明を実施するための形態】
【0009】
種々の図面における同様の参照記号は、特定の実装例にしたがった同様の要素を示す。また、要素の複数のインスタンスは、要素の第1の番号の後に、文字またはハイフンと第2の番号とを付けて示す場合がある。例えば、要素110の複数のインスタンスは、110-1,110-2,110-3、または110a,110b,110cなどで示され得る。そのような要素を第1の番号のみを使用して参照する場合、要素の任意のインスタンスを指すものと理解され得る(例えば、先の例での要素110は、要素110-1,110-2,110-3または要素110a,110b,110cを指すものとなる)。
【0010】
以下、本明細書の一部を形成する添付の図面に関して、いくつかの例示的な実施形態を説明する。本開示の1つまたは複数の態様を実施可能な特定の実施形態を以下に説明するが、本開示の範囲または添付の特許請求の範囲の思想から逸脱することなく他の実施形態を使用して種々の変更を行うことができる。
【0011】
インターネットストリーミングは、DASH[1]、HLS[2]などの既存のチャンク配信プロトコルの1つを利用した継続的メディア配信および再生のモデルである。ライブまたは事前に録画されたソースから発信されたビデオの配信にインターネットストリーミングを使用することができる。従来、ストリーミングの実装は、殆どオンプレミスで行われ、すべてのトランスコーディング、パッケージング、および広告スプライシング操作は専用のハードウェアコンポーネントによって行われている。しかしながら、近年、クラウドプラットフォームの出現によってこのモデルは変化しており、クラウドで実行される操作が増えている。本明細書で使用される「ビデオフィード」および「ビデオストリーム」という用語は、ビデオプレーヤが最終的にビデオを再生できるようにするために使用することが可能なビデオのビデオデータを指すために交換可能に使用され得る。
【0012】
図1は、現代のクラウドベースのライブビデオ配信チェーンの全体構造を示すブロック図である。この図において、コンポーネント間の線は、あるコンポーネントから次のコンポーネントへの通信リンクを表している。当業者は、この通信を提供するために使用される多くのデバイス、ネットワークなどが存在し得ることを理解し得る。ビデオ配信チェーンに関与する種々のエンティティ(ビデオパブリッシャー、クラウドサービスプロバイダ、コンテンツ配信ネットワーク(CDN)、およびユーザデバイス)は、例えばインターネットを介して通信可能に接続され得る。また、
図1の各ブロックに示された種々のコンポーネント(ビデオソース105、コントリビューションエンコーダ115、クラウドトランスコーダ125など)は、以下に説明するコンピューティングデバイスなどの1つまたは複数のコンピューティングデバイスによって実行され得る(コンピューティングデバイスは、メディアプレーヤ、ビデオカメラなどのより大きなデバイスの一部を含むおよび/またはそのデバイスに統合され得る)。
【0013】
このチェーンにおける入力ビデオは、ビデオソース105から発信され、このビデオソース105は、例えば、ライブイベントを撮影するプロダクションビデオカメラであってよい。ビデオソース105からの出力110は、コントリビューションエンコーダ115に提供され、このコントリビューションエンコーダ115は、ロー(raw)入力フォーマットのビデオ(例えば、シリアルデジタルインターフェース(SDI)を介して配信される非圧縮ビデオ)を、インターネットを介したビデオの送信に適したフォーマットに変換する。このフォーマットには、例えば、トランスポートストリーム(TS)ストリーム、TSストリーム+前方誤り訂正(FEC)、リアルタイムメッセージングプロトコル(RTMP)、またはセキュアリライアブルトランスポート(SRT)ストリームが含まれ得る。
図1に示すように、ビデオ配信チェーンのこれらの部分は、ビデオパブリッシャーによって実行され得る。
【0014】
コントリビューションエンコーダ115によりフォーマットされると、その出力120(例えば、インターネットを介した転送用にフォーマットされたビデオストリーム)は、クラウドサービスプロバイダに送信され得る。クラウドサービスプロバイダは、最初にクラウドトランスコーダ125を使用して入力ビデオストリームを1つまたは複数の出力フォーマットにトランスコードし得る。クラウドトランスコーダ125の出力130のフォーマットには、例えば、ハイパーテキスト転送プロトコル(HTTP)ライブストリーミング(HLS)、HTTPによる動的適応ストリーミング(DASH)フォーマット、および/またはCDN支援型HTTPベースの配信に一般的に使用される他のチャンクメディア配信フォーマットが含まれ得る。また、いくつかの実施形態では、クラウドトランスコーダ125の出力130は、広告挿入処理ロジックにより変更されてオリジンサーバ135上に配置され得る。このオリジンサーバ135は、CDN支援型配信用の入力として機能する。
【0015】
ライブビデオストリームの最終的な受信機は、パーソナルコンピュータ(PC)、携帯電話、タブレット、またはテレビなどのユーザデバイス上で動作するプレーヤ110であって、CDN145からのエンコードストリームのチャンクを取得するためにプレーヤ150(例えば、ソフトウェアアプリケーション)を使用する。プレーヤ150は、エンコードストリームをデコードして、そのデコードメディアをデバイス上で再生する。特定のライブビデオストリームの場合、プレーヤ150は多数(数十、数百、数千など)存在し得る。
【0016】
ライブストリーミング配信チェーンにおけるいずれかのコンポーネント(コントリビューションエンコーダ115、クラウドトランスコーダ125、オリジンサーバ135など)に障害が発生すると、プレーヤ150により実行されるユーザデバイスのユーザの視聴エクスペリエンスが中断され得る。この問題は、あらゆるビデオ配信モデル(放送、ケーブル、オーバーザトップ(OTT))でよく知られている。しかしながら、クラウドベースのOTT配信では、コンピューティングリソースの分散性、ならびにそれらの間の接続の遅延および品質の制御が不足しているため、この問題を解決することが特に困難である。異なるメディアストリーム間の正確な同期を確保するために、独自のハードウェアを利用していくつかのソリューションが作成されている。しかしながら、この正確な同期を実現することは難しく、そのために、このようなソリューションは通常、比較的高価であり、計算量が多いため、スケーリングが困難となり得る。
【0017】
本明細書の実施形態によれば、これらおよび他の問題は、フォールトトレラントなライブストリーミングシステムを提供することによって克服することができる。フォールトトレランスは、いくつかの実施形態によれば、エンコーダ、広告サーバ、およびオリジンサーバの複数の(冗長な)インスタンスを利用して、ライブ取り込み、エンコード、広告挿入、および配信操作を並行して実行することにより達成される。現在のライブストリームを配信するインスタンスが利用できなくなったり不安定になったりした場合、システムは冗長インスタンス間を切り替えることで、ユーザデバイスへのビデオストリームの継続的な配信を可能にし得る。異なる実施形態は、そのような切り替えの場合における不連続性およびエクスペリエンス品質(QoE)の影響を最小化するべく、そのようなエンコーダとオリジンサーバとの間の切り替えを処理する異なるアーキテクチャおよび異なる方法を含み得る。この提案されるシステムの実用的な利点としては、例えば、優れた信頼性、低い実装コストおよび運用コスト(それによるスケーラビリティの向上)、ならびに取り込みワークフローを変更したり入力に制限を課したりすることなく結果を達成できることなどが挙げられる。
【0018】
原則的に、多くの実用的なシステムにおいてより高いフォールトトレランスを実現するための確立されたアプローチは、冗長性の導入に依存する。
図1に示すシステムの場合、冗長性は、2つ以上のコントリビューションエンコーダ115、コントリビューションフィード120、クラウドトランスコーダ125(および存在する場合には対応する広告挿入サーバ)、オリジンサーバ135、および/または複数のCDN145の形態で導入され得る。しかしながら、このような冗長性は、どの冗長コンポーネントに障害が発生しているかを検出するための手段、および正常なバージョンへの配信の切り替えとも組み合わせる必要がある。
【0019】
図2A~
図2Cに示すように、利用可能な切り替えのメカニズムはいくつか存在する(なお、図示の実施形態は2つの入力間の切り替え能力を示しているが、代替の実施形態は任意の2つ以上の入力間を切り替え可能とすることができる)。例えば、
図2Aは、クラウド内の「冗長制御ユニット」、すなわちRCU200を示す図である。RCU200は、入力210に到来する2つ以上の他のクラウドベースの処理ユニット(例えば、トランスコーダ)からの入力データを得るためのコードを実行するクラウドインスタンスを備える。これらのユニットのうちの1つが応答しなくなった場合、RCU200は、その応答しないユニットからの入力210を、より正常であり正常な入力に対応する出力215を提供する別の入力210に切り替え得る。
【0020】
RCU210を使用することにより、クラウド処理チェーンのディベロッパーに、そのような切り替えをどのように実装することができるか、およびそのような切り替えを行う場合にコンテンツの不連続性の発現を最小化または防止するために出力215に送信されているビットストリームにどのような調整(もしあれば)を行う必要があるかについての最良の制御を提供することができる。
【0021】
純粋なクラウドレベルの切り替えに依存することの欠点は、コンテンツがクラウドにて処理される前またはその処理中に発生する問題の管理に制限される可能性があるということである。チェーンの後半(例えば、オリジンサーバ135またはCDN145)で問題が発生した場合は、代替の切り替えメカニズムを使用する必要がある。また、RCU210自体が障害の影響を受ける可能性もあり(例えば、RCUを実行するクラウドインスタンスが不安定になる可能性があり)、このため、そのようなメカニズムへの排他的依存は、原則的にシステムを完全にはフォールトトレラントにしない可能性がある。
【0022】
図2Bは、CDNレベルの切り替えロジックを含む切替可能CDN220を示す図である。この切り替えロジックは、オリジンサーバ135の1つが応答しなくなった場合、もしくは応答性が低下した場合に、2つ以上のオリジンサーバ135から受信した入力230の間をCDNにより切り替える(またはトラフィック負荷を分散する)ことを可能とする。このような機能が利用可能である場合には、オリジンサーバ135による障害があるとそれら入力230間の迅速な切り替えを実装するようにプログラムすることができる。
【0023】
図2Cは、プレーヤ側の切り替えロジックを有する切替プレーヤ240を示す図である。切替プレーヤ240は、ストリーミングセッション中にメディアセグメントの異なるソース(ユニフォームリソースロケータ(URL))間を切り替えることができる。この機能は、HLS[2]仕様とDASH仕様の双方で可能とされ、各々において、メディアセグメントを含む代替URLのリストをマニフェストで指定することができる。したがって、切替プレーヤ240によって実行される切り替えメカニズムは、ポイント障害がCDN145自体である場合に、連続的な再生を提供することができる。
【0024】
図2A~
図2Cに示される切り替えの3つの手段は、フォールトトレランスを保証する補完的な手段を提供することができ、以下の実施形態で説明するように、フォールトトレラントライブビデオストリーミングチェーンの種々の実施形態で使用され得る。
【0025】
図3は、ポストトランスコーダスイッチを備えた一実施形態によるフォールトトレラントビデオ配信システムのブロック図である。図示されるように、システムは、第1のコントリビューションエンコーダ115-1および第2のコントリビューションエンコーダ115-2を利用して、それぞれ第1のクラウドトランスコーダ125-1および第2のクラウドトランスコーダ125-2に出力を提供する。同期エンコーディングが必要なシステムとは異なり、
図3に示されるシステムのコントリビューションエンコーダ115-1,115-2は同期である必要はない。また、コントリビューションエンコーダ115-1,115-2からクラウドへのフィードも異なり、異なる配信プロトコルを使用し得る。したがって、クラウドトランスコーダ125-1,125-2への入力は完全に同期していない場合がある。各クラウドトランスコーダはビデオストリームを最終的な配信フォーマット(例えば、DASHまたはHLSなど)で出力し得るため、それらを再パッケージ化する個別の手順は必要ない。
【0026】
1つの代替実施形態では、クラウドトランスコーダは125-1であり、125-2は、ある時間間隔で元のライブフィードのコンテンツが他のソースからのコンテンツによって置き換えられる広告挿入機能を含み得る。別の代替実施形態では、広告挿入機能は、RCU200とオリジンサーバ135との間に配置された追加の論理ユニットとして追加され得る。
【0027】
RCU200への入力は、HLSまたはDASHマニフェストとエンコードセグメント(例えば、中間クラウドサーバに保存されている)の場所を表し得る。一例として、第1のクラウドトランスコーダ125-1は、プレーヤ150にルーティングされているライブビデオフィードを提供することができる。トランスコーダインスタンス125-1および第1のクラウドトランスコーダ125-1の上流のコンポーネント(例えば、ビデオソース105および第1のコントリビューションエンコーダ115-1)が動作している場合、マニフェストとメディアセグメントの両方がコンテンツの変更に応じて定期的に更新される。RCU200は、そのような変更を監視し、ライブフィードが動作可能であるとRCU200が判断する限り、第1のクラウドトランスコーダ125-1から受信したマニフェストとセグメントの両方をオリジンサーバ135に送信し続ける。RCU200は、例えば、フィードが定期的に更新されているかどうかおよび/または他の適切な動作の示唆に基づいて、ライブフィードが動作可能であるかどうかを決定し得る。
【0028】
一方、RCU200は、第1のクラウドトランスコーダ125-1から受信したビデオフィードが適切に動作していないこと(例えば、出力を提供していない、徐々に遅れているなど)の指示を受信すると、第2のクラウドトランスコーダ125-2からのライブビデオストリームの特性を検査し得る。第2のクラウドトランスコーダ125-2からのライブビデオストリームが動作可能である場合、RCU200はそのライブビデオストリームに切り替えて、第2のクラウドトランスコーダ125-2から受信したマニフェストおよびビデオセグメント位置をオリジンサーバ135に提供し得る。
【0029】
第1のクラウドトランスコーダ125-1および第2のクラウドトランスコーダ125-2によって配信されるビデオストリームは概して正確には同期されないので、オリジンサーバ135に提供されるビデオストリームの追加の適応は、エンドユーザが認識するそのような切り替えの影響を最小限に抑えるのを助けるために行われる必要があり得る。例えば、一部のプレーヤ150は、ビデオストリームが完全に同期されていない場合に、あるビデオストリームから別のビデオストリームへの切り替えを処理できない場合がある。
【0030】
この観点で、実施形態は、プレーヤ152が切り替えに適応できるようにマニフェストファイルを更新することを含み得る。例えば、HLSマニフェストでは、マニフェストファイルが、切り替え後の新たなメディアセグメントの参照前に配置された不連続マーカー(EXT-X-DISCONTINUITY)を含むように更新され得る。DASHマニフェスト(DASH MPD)では、プレゼンテーションの新たな期間の開始を示すようにマニフェストが更新されることにより、プレーヤは不連続性をより適切に処理可能となる。最後に、実施形態は、追加的または代替的に、メディアセグメントを更新することによって不連続性の処理を改善するための手段を提供し得る。例えば、切り替え後における第1のセグメントの切り替え前のチェーンの最後のセグメントを更新して、新たなマニフェストを含むDASHまたは共通メディアアプリケーションフォーマット(CMAF)イベントを含めることができ、これにより、メディアプレーヤはマニフェストをリロードして、新たなプレゼンテーションとして後続のセグメントの処理を続行することができる。あるいは、切り替え後のメディアセグメントをトランスマックスし、エレメンタリーストリームレベルで更新することで、そのようなストリームを継続的にデコード可能とすることができる。関連する変更は、シーケンスパラメータセット(SPS)、画像パラメータセット(PPS)、およびプレゼンテーションタイムスタンプ(PTS)、ディスプレイタイムスタンプ(DTS)、プログラムクロックリファレンス(PCR)、またはシステムクロックリファレンス(SCR)パラメータを更新することによって実行され得る。また、フィラービットを挿入して、ストリームを仮想参照デコーダ(HRD)レベルに準拠させることもできる。
図3に示されたシステムは、必ずしも冗長ストリーム間のシームレスな切り替えをもたらすとは限らないが、それでも、DASHおよびHLS標準に準拠するようにそのような切り替えの影響を最小限に抑えることができる。また、上記のように、この方法でRCU200を使用する場合には、コントリビューションエンコーダ、アップロードリンク、および配信チェーン内の他のコンポーネントを実行するための独自の高価なハードウェアを不要とし得る。
【0031】
図4は、あるビデオストリームから別のビデオストリームへの切り替えによって生じるプレーヤ150での問題を最小化するのを助けるために、
図3のRCU200によってHLSマニフェストがどのように変更され得るかについての例を提供する。この図では、各ブロックはライブビデオストリームのマニフェスト(M3U8ファイル)のコンテンツを含む。この例では、ブロック410のコンテンツは、第1のクラウドトランスコーダ125-1からのライブビデオストリームのマニフェストを含み、ブロック420のコンテンツは、第2のクラウドトランスコーダ125-2からのライブビデオストリームのマニフェストを含む。ブロック430のコンテンツはRCU200の出力を含み、第1のクラウドトランスコーダ125-1のビデオストリームの使用から第2のクラウドトランスコーダ125-2のビデオストリームの使用への切り替えが可能である。この例では、RCU200は、第1のクラウドトランスコーダ125-1から受信した出力を転送することから始まる。したがって、ブロック430内のコンテンツの最初の部分は、ブロック410の内容を含む。しかしながら、RCU200はその後、(例えば、第1のトランスコーダ125-1からのビデオストリームがビデオセグメントの生成を停止したと判断したことに応答して)第2のクラウドトランスコーダ125-2からの第2のビデオストリームに切り替わる。したがって、ブロック430内のコンテンツの後半部分は、第2のクラウドトランスコーダ125-2から受信したブロック420内のコンテンツの部分を含む。重要なことは、RCU200が、マニフェストに不連続性の表示440を挿入することである。これにより、ブロック430内のマニフェストの第1の部分とマニフェストの第2の部分との間の不連続性をプレーヤ150に指示することができる。この表示により、プレーヤ150は、再生エラーを引き起こすことなく、不連続性をよりよく処理することができる。DASHの場合、RCU200は同様に、プレゼンテーションの新たな期間の開始を通知することにより、表示された不連続性に出力マニフェストを提供することができる。
【0032】
図5は、フォールトトレラントビデオ配信システムの別の実施形態を示す。
図3のシステムと同様に、
図5のシステムは、2つのコントリビューションエンコーダ115-1,115-2と、2つのクラウドトランスコーダ125-1,125-2とを含む。しかしながら、
図5のシステムは、追加の障害のタイプに備えて、ダウンストリームコンポーネントにおける冗長性をさらに含む。これらの冗長コンポーネントは、第1のRCU200-1および第2のRCU200-2と、第1のオリジンサーバ135-1および第2のオリジンサーバ135-2と、第1のCDN145-1および第2のCDN145-2とを含む(上記と同様に、この実施形態の変形例は、同じタイプの3つ以上のコンポーネントを含んでもよい)。また、ユーザデバイスへのデュアルCDN配信のために、ユーザデバイスは、切替プレーヤ240を含み得る。
【0033】
対称的に配置されたRCU200-1,200-2のために、コンテンツの2つのバージョンを配信することができる。また、RCU200-1,200-2のいずれかに障害が発生した場合でも、これらのバージョンのいずれかのストリーミングが継続される。ストリームの配信はさらに、冗長オリジンサーバ135-1,135-2と、冗長CDN145-1,145-2(または同じCDN145内の異なる構成)を通過する。プレーヤ側の切り替えを使用することにより、クラウド内の配信チェーンの切り替えに加えて、追加のフォールトトレランス対策となり得る。切替プレーヤ240は、HLSおよびDASH実装において複数のプレイリストURL(またはベースセグメントURL)から動的に選択することができる。
【0034】
図3のシステムと比較すると、
図5のシステムが提供する追加の保護の程度は、追加の実装および運用コストが比較的少なくて済む。すなわち、追加のRCU200、オリジンサーバ135、およびCDN接続145に関連するコストは比較的低い。一方、任意の時点で、切替プレーヤ240は、接続されたCDN(145-1または145-2)のうちの1つのみを使用するので、両方のCDNによって配信される帯域幅の量は、単一のCDNを介した配信と同じになる。したがって、全体的な運用コストは同様になり得る。
【0035】
図5に提供されるシステムの代替の実施形態は、RCU200-1,200-2で追加の分散コンセンサスタイプのプロトコルを利用し得る。これにより、RCU200-1,200-2は、切り替えの際に生成される出力ストリームのプレゼンテーションタイムのずれを最小限に抑えるように切り替えを調整することができる。
【0036】
図6は、フォールトトレラントビデオ配信システムの別の実施形態を示す。
図6のシステムは、
図5のシステムと同様なコンポーネントおよび機能を有することに加えて、CDNレベルの切り替えを提供するためにCDN220-1,220-2の切り替えが追加されている。概略すると、一部のCDNは、アプリケーションプログラミングインターフェイス(API)に加えて、オリジンサーバ間を切り替える機能を提供する。したがって、フォールトトレラントシステムの実施形態は、そのような切り替えを利用して、フォールトトレランスを追加することができる。
図6に示すシステムは、このような切り替えが可能な切替CDN220-1,220-2を使用することで、2つのオリジンサーバ135-1,135-2に配置されたコンテンツ間を切り替える。オリジンサーバ135-1,135-2は異なる領域に配置され得るため、
図6のシステムは、提供されるクラウドサービスの全領域が機能しなくなる可能性がある場合に追加の復元力を提供し得る。
図6のシステムにおける切替プレーヤ240の使用は、CDN(例えば、220-1,220-2のいずれか、または両方の配信パスを有効にするために使用される同じCDNの異なる部分)に障害がある場合にも有用であり得る。
【0037】
最終的に、
図6のシステムは、
図3および
図5のシステムと比較して、追加の実装コストと運用コストを最小限に抑えながら、障害に対する保護のレイヤーを提供する。RCU200-1,200-2によって提供されるマニフェスト出力に加えて、CDNで実装された配信パスの切り替えを使用することで、切り替え中のストリームの標準への準拠と最小の不連続性を確保することができる。この場合も、RCU200-1,200-2、CDN145-1,145-2が提供する切り替えに加えてプレーヤ側の切り替えを使用することにより、追加のフォールトトレランス対策として機能するものとなる。
【0038】
図6に提供されるシステムの代替の実施形態は、RCU200-1,200-2で追加の分散コンセンサスタイプのプロトコルを利用し得る。これにより、RCU200-1,200-2は、切り替えの際に生成される出力ストリームのプレゼンテーションタイムのずれを最小限に抑えるように切り替えを調整することができる。
【0039】
図7は、フォールトトレラントビデオ配信システムのさらに別の実施形態を示す。上記で説明した実施形態の変形として、
図7に示された実施形態は、単一のRCU200を2つのオリジンサーバ135-1,135-2と組み合わせる。また、切替CDN220を利用するのではなく、
図7の実施形態は、オリジンサーバ135-1,135-2の両方から切替プレーヤ240(ビデオストリームを受信するためのオリジンサーバ135-1,135-2を選択する)にストリームを提供することができる単一CDN145の使用を示している。
図7のシステムの代替の実施形態は、追加のまたは代替のフォールトトレランスを提供するために、上記で説明したコンポーネントのいずれかを利用し得る。例えば、1つまたは複数の切替CDN220が、切替プレーヤ240に加えてまたはその代替として使用され得る。
【0040】
上記したように、
図3、
図5、
図6、および
図7のフォールトトレラントライブビデオストリーミングシステムの種々のコンポーネントならびにその代替の実施形態は、1つまたは複数のコンピュータシステム上に実装され得る。種々のビデオストリームが種々の地理的領域のコンピュータサーバを介してルーティングされ得るため、地理的領域の1つにあるサーバで機能停止が生じた場合の障害を回避するのに役立ち得る。フォールトトレラントライブビデオストリーミングシステムの実施形態の1つまたは複数のコンポーネントを実装することができる例示的なコンピュータシステムを
図9に示し、以下でより詳細に説明する。
【0041】
なお、実施形態は単一の冗長性を使用し得る(例えば、同じコンポーネントの2つを使用する)が、実施形態はそのように限定されない。実施形態は、必要に応じて、例えば、複数の冗長性(例えば、同じコンポーネントの2つ以上)を使用することができる。
【0042】
図8は、上記実施形態における1つまたは複数の技術を使用することができる一実施形態によるフォールトトレラントライブビデオストリーミングを提供する方法800を示すフロー図である。
図8に示されている機能は、一例として提供されている。代替の実施形態は、図示される機能を追加、省略、結合、分離、または変更することができる。
図8に示される1つまたは複数のブロックの機能は、例えば、上記のようなRCUによって実行され得る。上記したように、RCUは、以下でより詳細に説明される
図9に示されたコンピュータシステムなどのコンピュータシステムのソフトウェアおよび/またはハードウェアコンポーネントによって実装され得る。
【0043】
ブロック810において、機能は、第1のビデオトランスコーダから第1のトランスコードビデオストリームを取得し、第2のビデオトランスコーダから第2のトランスコードビデオストリームを取得することを含む。上記実施形態に示されるように、各ビデオトランスコーダは、単一のビデオソース(1つまたは複数のビデオカメラのセットを含み得る)から別個のビデオストリームをエンコードし得るそれぞれのコントリビューションエンコーダからビデオストリームを受信し得る。コントリビューションエンコーダは、TS、TS+FEC、RTMP、SRTなどの種々のフォーマットのいずれかを使用して、第1および第2のビデオトランスコーダにビデオストリームを提供し得る。いくつかの実施形態では、上記したように、第1のトランスコードビデオストリームおよび第2のトランスコードビデオストリームは、HLSフォーマットまたはDASHフォーマットである。コントリビューションエンコーダは、種々の通信手段(パブリックおよび/またはプライベートネットワーク、ワイヤレスおよび/または有線技術などを含む)のいずれかを使用して、インターネットを介して第1および第2のビデオトランスコーダにビデオストリームを提供し得る。いくつかの実施形態では、第1および第2のビデオトランスコーダは、異なる独立した通信パスを介して各コントリビューションエンコーダからビデオストリームを受信することで、一方の通信パスに障害が生じる場合に、他方の障害が生じないことを保証するのを助けることができる。当業者は理解するように、方法800は、追加の冗長性を提供するために、追加のトランスコーダから(すなわち、第1および第2のビデオトランスコーダに加えて)追加のビデオストリームを取得することを含み得る。
【0044】
ブロック820において、機能は、第1のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供する第1のマニフェストを出力することを含む。具体的には、実施形態は、第1のビデオトランスコーダにより提供されるマニフェストに基づいて第1のマニフェストを作成し得る。マニフェストは、第1のビデオトランスコーダのマニフェストと同じフォーマットを使用し得る(例えば、第1のビデオトランスコーダにより提供される出力マニフェストがHLSフォーマットである場合、第1のマニフェストもHLSフォーマットであってよい)。
【0045】
ブロック830において、機能は、第1のトランスコードビデオストリーム内の障害状態を特定することを含む。ここで、機能は、第1のビデオトランスコーダの出力マニフェストを監視して、その出力マニフェストが期待通りに更新されているかどうかを決定することを含み得る。マニフェストはビデオセグメントが見出され得る場所を特定するURLのリストを含み得るので、機能はさらに、マニフェスト内のURLが機能するかどうかを決定することを含み得る。したがって、第1のビデオトランスコーダがその出力マニフェストを時間どおりに更新できない場合(すなわち、第1のトランスコードビデオストリームの出力に閾値時間よりも長い遅延がある場合)、またはマニフェストのURLの1つが機能しない場合(すなわち、第1のトランスコードビデオストリームのビデオセグメントにアクセスできないリンクがある場合)には、フォール状態が特定され得る。
【0046】
ブロック840において、方法は、障害状態の特定に応答して第1のマニフェストを更新することにより、第1のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供することから、第2のトランスコードビデオストリームのビデオセグメントを使用して第1の出力ビデオストリームを提供することに切り替えることを含む。いくつかの実施形態では、第1のマニフェストは、第1のマニフェストが第1のトランスコードビデオストリームのビデオセグメントの使用から第2のトランスコードビデオストリームのビデオセグメントの使用へと切り替えるポイントを示す識別子をさらに含む。上記したように、この識別子は、第1の出力ビデオストリームにおける不連続性の表示、第1の出力ビデオストリーム内の新たな期間の表示、および/またはメディアセグメントのトランスマックスによってエンコードストリーム内に埋め込まれた表示を含み得る。
【0047】
方法800の実施形態は、所望の機能に応じて変化し得る。例えば、追加の冗長性が作成され得る。いくつかの実施形態では、第1の冗長制御ユニットを使用して、ブロック810~140の機能を実行することができる。このような実施形態はさらに、第2の冗長制御ユニットを使用して、第1のビデオトランスコーダから第1のトランスコードビデオストリームを取得するとともに第2のビデオトランスコーダから第2のトランスコードビデオストリームを取得し、第1のトランスコードビデオストリーム、第2のトランスコードビデオストリーム、またはその両方のビデオセグメントを使用して第2の出力ビデオストリームを提供する第2のマニフェストを出力することをさらに含み得る。これにより、CDNの切り替えが可能になる。すなわち、いくつかの実施形態では、方法は、
図5および
図6に示されるように、第1の出力ビデオストリームを第1のCDNに提供し、第2の出力ビデオストリームを第2のCDNに提供することをさらに含み得る。いくつかの実施形態は、
図6に示されるように、追加の冗長性のために、各出力ビデオストリームをCDNにさらに出力し得る。したがって、方法は、第1の出力ビデオストリームを第2のCDNに提供すること、および第2の出力ビデオストリームを第1のCDNに提供することをさらに含み得る。
【0048】
オリジンサーバは、必要な機能に応じて、異なる方法で使用され得る。いくつかの実施形態では、例えば、RCUが使用される場合、
図5および
図6に示されるように、第1の出力ビデオストリームおよび第2の出力ビデオストリームは、それぞれ第1のオリジンサーバおよび第2のオリジンサーバに提供され得る。あるいは、単一のオリジンサーバが(例えば、
図3に示すように)使用されてもよい。すなわち、単一の出力ビデオストリーム(例えば、第1の出力ビデオストリーム)は(例えば、
図7に示されるように)第1のオリジンサーバと第2のオリジンサーバに提供することができる。
【0049】
図9は、
図8に示された方法を含む本明細書に記載される方法の1つまたは複数の機能を実行するために全体的または部分的に使用され得るコンピュータシステム900の実施形態のブロック図である。コンピュータシステム900は、ビデオパブリッシャー、クラウドサービスプロバイダ、CDN、および/またはユーザデバイスのコンポーネントを含む、
図3および
図5~
図7に示されるようなフォールトトレラントライブビデオストリーミングを提供するためのシステムの1つまたは複数のコンポーネントに組み込まれ得る。
【0050】
図9は、種々のコンポーネントの一般化された例を提供することのみを意図しており、それらのいずれかまたはすべてが適切に利用され得る。したがって、
図9は、個々のシステム要素が比較的分離された形態または比較的統合された形態で実装され得る方法を大まかに示している。さらに、
図9に示されているコンポーネントは、単一のデバイスに局所化したり、種々の地理的位置に配置できる種々のネットワークデバイスに分散したりすることができる。
【0051】
コンピュータシステム900は、バス905を介して電気的に結合され得る(もしくは、必要に応じて通信し得る)ハードウェア要素を含むように示されている。ハードウェア要素は、処理ユニット910を含み得る。処理ユニット910は、これらに限定されないが、1つまたは複数の汎用プロセッサ、1つまたは複数の専用プロセッサ(デジタル信号処理チップ、グラフィックスアクセラレーションプロセッサなど)、および/または本明細書に記載された方法のうちの1つまたは複数を実行するように構成され得る他の処理構造を含み得る。また、コンピュータシステム900は、1つまたは複数の入力デバイス915と、1つまたは複数の出力デバイス920とを含み得る。入力デバイス915は、これらに限定されないが、マウス、キーボード、カメラ、マイクロフォンなどを含み得る。出力デバイス920は、これらに限定されないが、ディスプレイデバイス、プリンタなどを含み得る。
【0052】
コンピュータシステム900はさらに、1つまたは複数の非一時的ストレージデバイス925を含み得る(および/またはそれと通信可能とされる)。非一時的ストレージデバイス925は、これらに限定されないが、ローカルおよび/またはネットワークアクセス可能なストレージ、および/または、これらに限定されないが、ディスクドライブ、ドライブアレイ、光ストレージデバイス、ランダムアクセスメモリ(RAM)などのソリッドステートストレージデバイス、および/またはプログラム可能であってフラッシュ更新可能な読み取り専用メモリ(ROM)などを含み得る。このようなストレージデバイスは、これらに限定されないが、種々のファイルシステム、データベース構造などを含み得る任意の適切なデータストアを実装するように構成され得る。このようなデータストアは、本明細書に記載されるような1つまたは複数のデバイスに送信されるメッセージおよび/または他の情報を記憶および管理するために使用されるデータベースおよび/または他のデータ構造を含み得る。
【0053】
また、コンピュータシステム900は、通信サブシステム930を含み得る。通信サブシステム930は、無線通信インターフェースによって管理および制御される無線通信技術、ならびに有線技術(イーサネット(登録商標)、同軸通信、ユニバーサルシリアルバス(USB)など)を含み得る。したがって、通信サブシステム930は、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス、無線通信デバイス、および/またはチップセットなどを含み得るものであり、さらには/あるいは、通信サブシステム930は、コンピュータシステム900が、本明細書に記載される他のコンピュータシステムおよび/または他の電子デバイス(それらで実行される動作および/またはアプリケーションを含む)を含む各ネットワーク上の任意のデバイスと1つまたは複数の通信ネットワーク上で通信することを可能とし得る。したがって、通信サブシステム930を使用して、本明細書の実施形態に記載されるようなデータを送受信することができる。
【0054】
多くの実施形態では、コンピュータシステム900は、上記のようなRAMまたはROMデバイスを含み得るワーキングメモリ935をさらに含む。ワーキングメモリ935内に配置されるものとして示されているソフトウェア要素は、オペレーティングシステム940、デバイスドライバ、実行可能ライブラリ、および/または種々の実施形態によって提供されるコンピュータプログラムを含み得る1つまたは複数のアプリケーション945などの他のコードを含み得るものであり、さらには/あるいは、ソフトウェア要素は、本明細書に記載されるような他の実施形態によって提供される方法を実装するおよび/またはシステムを構築するように設計され得る。単に一例として、上記の方法に関して説明された1つまたは複数の手順は、コンピュータ(および/またはコンピュータ内の処理ユニット)によって実行可能なコードおよび/または命令として実装され得る。一態様では、そのようなコードおよび/または命令を使用して、説明された方法に従って1つまたは複数の動作を実行するように汎用コンピュータ(または他のデバイス)を構成および/または適合させることができる。
【0055】
これらの命令および/またはコードのセットは、上記のストレージデバイス925などの非一時的なコンピュータ可読記憶媒体に記憶され得る。いくつかの場合には、記憶媒体は、コンピュータシステム900などのコンピュータシステム内に組み込まれ得る。他の実施形態では、記憶媒体は、コンピュータシステム(例えば、光ディスクなどのリムーバブル媒体)から分離され得る、および/またはインストールパッケージで提供され得るものであり、記憶媒体は、汎用コンピュータを、記憶された命令/コードによりプログラミングしたり、構成したり、および/または適合させるようにしたりする。これらの命令は、コンピュータシステム900によって実行可能な実行可能コードの形態を取り得る、さらには/あるいは、ソースおよび/またはインストール可能コードの形態を取り得るものであり、(例えば、種々の一般的に利用可能なコンパイラ、インストールプログラム、圧縮/解凍ユーティリティなどのいずれかを使用した)コンピュータシステム900へのコンパイルおよび/またはインストール時に実行可能コードの形式を取り得る。
【0056】
特定の要件に従って実質的な変更を加えることができることは当業者には明らかである。例えば、特定のハードウェアも使用される場合があり、および/または特定の要素がハードウェアか、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)か、もしくはその両方に実装される場合がある。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続を使用することができる。
【0057】
添付の図を参照すると、メモリを構成し得るコンポーネントは、非一時的な機械可読媒体を含み得る。本明細書で使用される「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械を特定の方法で動作させるデータを提供することに関与する任意の記憶媒体を指す。上記で提供された実施形態では、種々の機械可読媒体が、実行のために処理ユニットおよび/または他のデバイスに命令/コードを提供することに関与し得る。追加的または代替的に、機械可読媒体を使用して、そのような命令/コードを記憶および/または伝送することができる。多くの実装では、コンピュータ可読媒体は、物理的なおよび/または有形の記憶媒体である。このような媒体は、これらに限定されないが、不揮発性媒体、揮発性媒体、および伝達媒体を含む多くの形態を取り得る。コンピュータ可読媒体の一般的な形態には、例えば、磁気および/または光学媒体、孔のパターンを有する他の任意の物理媒体、RAM、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、フラッシュEPROM、本明細書に記載される他の任意のメモリチップもしくはカートリッジ、またはコンピュータが命令および/またはコードを読み取ることが可能な他の任意の媒体が含まれ得る。
【0058】
本明細書に記載される方法、システム、およびデバイスは例である。種々の実施形態は、必要に応じて、種々の手順またはコンポーネントを省略、置換、または追加することができる。例えば、特定の実施形態に関して記載された特徴は、他の種々の実施形態において組み合わせることができる。実施形態の異なる態様および要素は、同様の方法で組み合わせることができる。本明細書で提供される図の種々のコンポーネントは、ハードウェアおよび/またはソフトウェアで具現化することができる。技術は進化しており、したがって、要素の多くは、開示の範囲をそれらの特定の例に限定しない例である。
【0059】
本明細書全体を通して「一例」、「例」、「ある例」、または「例示的な実装」への言及は、特徴および/または例に関連して説明される特定の特徴、構造、または特性が、請求項の主題の少なくとも1つの特徴および/または例に含まれ得ることを意味する。したがって、本明細書全体を通じた種々の箇所での「一例において」、「例において」、「ある例において」、「ある実装において」、または他の同様の表現は、必ずしもすべてが同じ特徴、例、および/または制限を指すとは限らない。さらに、特定の特徴、構造、または特性は、1つまたは複数の例および/または特徴に組み合わせることができる。
【0060】
本明細書に含まれる詳細な説明のいくつかの部分は、特定の装置または特定の用途のコンピューティングデバイスもしくはプラットフォームのメモリ内に記憶されたバイナリデジタル信号の動作のアルゴリズムまたは記号表現に関して提示されている。この特定の仕様の文脈において、特定の装置などの用語は、プログラムソフトウェアからの指示に従って特定の動作を実行するようにプログラムされた汎用コンピュータを含む。アルゴリズム記述または記号表現は、信号処理または関連技術の当業者が彼らの仕事の実体を当業者に伝えるために使用する技術の例である。アルゴリズムはここでは概して、所望の結果をもたらす自己矛盾のない一連の動作または同様の信号処理であると見なされる。この文脈では、動作または処理には物理量の物理的操作が含まれる。必ずしもそうではないが、典型的にはこのような物理量は、記憶、転送、結合、比較、または他の方法で操作することが可能な電気信号または磁気信号の形態を取り得る。ビット、データ、値、要素、記号、文字、用語、番号、数字などの信号を参照することは、主に一般的な使用法の理由から、時には便利であることが証明されている。しかしながら、これらの用語または同様の用語はすべて、適切な物理量に関連付けられており、単なる便利なラベルであることが理解され得る。特に明記しない限り、本明細書の説明から明らかなように、本明細書全体を通じて、「処理」、「演算」、「計算」、「決定」などの用語を利用する説明は、専用コンピュータ、専用コンピューティング装置、または同様の専用電子コンピューティングデバイスなどの特定の装置の動作または処理のことを言う。したがって、本明細書の文脈において、専用コンピュータまたは同様の専用電子コンピューティングデバイスは、典型的には、メモリ内、レジスタもしくは他の情報ストレージデバイス内、送信デバイス内、または専用コンピュータもしくは同様の専用電子コンピューティングデバイスの表示装置内の物理的電子または磁気量として表される信号を操作または変換することができる。
【0061】
本明細書で使用される「および」、「または」、および「および/または」という用語は、そのような用語が使用される文脈に少なくとも部分的に依存すると考えられる種々の意味を含み得る。典型的に、「または」は、A、B、Cなどのリストを関連付けるために使用される場合、包括的意味で使用されるA、B、およびCと、排他的意味で使用されるA、B、またはCを意味することが意図される。また、本明細書で使用される「1つまたは複数」という用語は、単数形の任意の特徴、構造、または特性を説明するために使用され得るか、または特徴、構造または特性の複数または他のいくつかの組み合わせを説明するために使用され得る。しかしながら、これは単なる例示であり、請求項の主題はこの例に限定されない。
【0062】
例示的な特徴であると現在考えられているものが図示および説明されているが、請求項の主題から逸脱することなく、種々の他の変更を行うことができ、等価物を置き換えることができることが当業者には理解され得る。また、本明細書に記載の中心的な概念から逸脱することなく、特定の状況を請求項の主題の教示に適合させるために多くの変形を行うことができる。
【0063】
したがって、請求項の主題は、開示された特定の例に限定されるものではなく、そのような請求項の主題は、添付の特許請求の範囲内に含まれるすべての態様およびその等価物も含み得ることが意図される。
【0064】
特に明記されない限り、本明細書で使用されるすべての技術的および科学的用語は、一般的または従来的に理解されているのと同じ意味を有する。本明細書で使用される「1つ」は、1つまたは複数(すなわち、少なくとも1つ)を指す。例として、「1つの要素」は、1つの要素、または2つ以上の要素を意味する。量や時間的持続時間などの測定可能値を指すときに本明細書で使用されている「約」および/または「およそ」は、本明細書に記載されるシステム、デバイス、回路、方法、および他の実装の文脈において適切である場合、指定された値に対して、±20%、±10%、±5%、または+0.1%の変動を包含する。量や時間的持続時間や物理的属性(頻度など)などの測定可能値を指すときに本明細書で使用される「実質的に」は、本明細書に記載されるシステム、デバイス、回路、方法、および他の実装の文脈において適切である場合、指定された値に対して、±20%、±10%、±5%、または+0.1%の変動を包含する。
【0065】
特許請求の範囲を含めて本明細書で使用される「少なくとも1つ」または「1つまたは複数」に続く項目のリストにおいて使用される「および」は、リストされた項目の任意の組み合わせを使用できることを示す。例えば、「A、B、およびCのうちの少なくとも1つ」のリストは、A、B、C、AB、AC、BC、および/またはABC(すなわち、AとBとC)の任意の組み合わせを含む。さらには、項目A、B、またはCの複数の発生または使用が可能である限り、A、B、および/またはCの複数の使用が、意図される組み合わせの一部を形成し得る。例えば、「A、B、およびCのうちの少なくとも1つ」のリストには、AA、AAB、AAA、BBなども含まれ得る。