以下、各図面に示す同一または類似の構成要素、部材、手順または信号には、すべての図面において同様の符号を付し、それによって重複する説明は適宜省略される。また、各図面の説明において重要でない一部部材は省略される。
本開示の一部の実施態様に基づくライブストリーミングシステム1は、ユーザ間のコミュニケーションと交流を円滑にする強化機能を提供する。より具体的には、技術的な方法で視聴者やライブストリーマーを楽しませるものである。
図1に本開示の一部の実施態様に基づくライブストリーミングシステム1の構成を示す概略図を示す。当該ライブストリーミングシステム1は、ストリーミングのライブストリーマー(ライバー、ストリーマー、または配信者とも呼ばれる)LVと視聴者(オーディエンスとも呼ばれる)AU(AU1、AU2...)に、リアルタイムで相互交流するためのライブストリーミングサービスを提供する。図1に示すように、当該ライブストリーミングシステム1は、サーバ10と、ユーザ端末20と、ユーザ端末30(30a、30b...)を含むことができる。当該ユーザ端末20はライブストリーマー、当該ユーザ端末30は視聴者であってもよい。一部の実施態様において、当該ライブストリーマーと視聴者はユーザと呼ばれてもよい。当該サーバ10は、ネットワークNWを介して接続された、1または複数の情報処理装置を含むことができる。当該ユーザ端末20、30は、例えば、スマートフォン、タブレット、ノートPC、レコーダー、携帯ゲーム機、ウェアラブル端末などの携帯端末や、デスクトップPCなどの据置型コンピュータであってもよい。当該サーバ10、ユーザ端末20、ユーザ端末30は、任意の種類の有線または無線ネットワークNWにより通信可能に接続されてもよい。
当該ライブストリーミングシステム1には、当該ライブストリーマーLV、当該視聴者AU、当該サーバ10を提供するアプリプロバイダー(図示せず)が関与する。当該ライブストリーマーLVは、自身の歌、トーク、パフォーマンス、ゲームストリーミングなどのコンテンツを自身のユーザ端末20で収録して当該サーバ10にアップロードし、リアルタイムでコンテンツを配信する者となることができる。一部の実施態様において、当該ライブストリーマーLVは、当該ライブストリーミングを介して当該視聴者AUと交流することができる。
当該アプリプロバイダーは、当該サーバ10においてライブストリーミングされるコンテンツのためのプラットフォームを提供することができる。一部の実施態様において、当該アプリプロバイダーは、当該ライブストリーマーLVと当該視聴者AU間のリアルタイム通信を管理するメディアまたはマネージャーであってもよい。当該視聴者AUは、当該ユーザ端末30により当該プラットフォームにアクセスし、自身が視聴したいコンテンツを選択して視聴することができる。当該視聴者AUは、当該ユーザ端末30により、当該ライブストリーマーに対してコメントしたり、応援したりなど、当該ライブストリーマーと交流するための操作を行うことができる。コンテンツを提供する当該ライブストリーマーは、当該コメントや応援に応答することができる。当該ライブストリーマーの応答は、映像及び(または)音声などにより当該視聴者AUに送信することができる。従って、当該ライブストリーマーと視聴者間の相互通信を達成することができる。
本明細書でいう「ライブストリーミング」とは、当該ライブストリーマーLVが当該ユーザ端末20により記録したコンテンツを、当該視聴者AUが当該ユーザ端末30を介して実質的に再生・視聴することを可能にする、データ伝送を指すことができる。一部の実施態様において、「ライブストリーミング」は、上述のデータ伝送により実現されるストリーミングを指すこともある。当該ライブストリーミングは、HTTPライブストリーミング、CMAF(Common Media Application Format)、WebRTC(Web Real-Time Communications)、RTMP(Real―Time Messaging Protocol)、MPEG DASHなど、公知の技術によって実現することができる。当該ライブストリーミングは、さらに、当該ライブストリーマーがコンテンツを記録している間、当該視聴者AUが特定の遅延をもって当該コンテンツを再生または視聴することができる、実施形態を含んでもよい。当該遅延の程度については、少なくとも当該ライブストリーマーLVと当該視聴者AUがコミュニケーションを行うことができる程度に小さいことが望ましい。ただし、ライブストリーミングは、いわゆるオンデマンド配信とは異なる。より具体的に、当該オンデマンド配信とは、当該コンテンツを記録したすべてのデータをサーバに格納し、ユーザの要求に応じてランダムなタイミングで当該サーバから当該ユーザにデータを提供することを指してもよい。
本明細書における「ストリーミングデータ」とは、画像データや音声データを含むデータを指すことができる。より具体的に、当該画像データ(ビデオデータと呼んでもよい)は、当該ユーザ端末20と30の画像キャプチャ機能によって生成されてもよい。当該音声データ(オーディオデータと呼んでもよい)は、当該ユーザ端末20と30の音声入力機能により生成されてもよい。当該ストリーミングデータを当該ユーザ端末20、30で再生し、ユーザに関するコンテンツを視聴できるようにしてもよい。一部の実施態様において、当該ライブストリーマーの当該ユーザ端末でストリーミングデータが生成されてから、当該視聴者の当該ユーザ端末で再生されるまでの間、圧縮、拡張、エンコード、デコード、トランスコードなど、データの形式、サイズ規格を変更する処理が想定される。このような処理の前と後、当該コンテンツ(映像や音声)は実質的に変更されず、このため、本開示の現在の実施態様においては、処理される前のストリーミングデータと処理された後のストリーミングデータは同じであると説明される。つまり、当該ライブストリーマーの当該ユーザ端末により生成された当該ストリーミングデータが、当該サーバ10を介して当該視聴者の当該ユーザ端末で再生される場合、当該ライブストリーマーの当該ユーザ端末で生成された当該ストリーミングデータ、当該サーバ10を通過した当該ストリーミングデータ、そして当該視聴者の当該ユーザ端末が受信して再生する当該ストリーミングデータは、すべて同じストリーミングデータである。
図1に示すように、当該ライブストリーマーLVはライブストリーミングを提供する。当該ライブストリーマーのユーザ端末20は、当該ストリーマーの映像及び(または)音声を記録することにより、ストリーミングデータを生成し、ネットワークNWを介してサーバ10に送信する。同時に、当該ユーザ端末20は映像VDを当該ユーザ端末20のディスプレイ上に表示し、当該ライブストリーマーLVのストリーミングコンテンツをチェックすることができる。
当該ライブストリーマーのライブストリーミングの提供をプラットフォームに要求するユーザ端末30a、30bの視聴者AU1、AU2は、当該ネットワークNWを介して当該ライブストリーミングに対応するストリーミングデータを受信し、受信したストリーミングデータを再生してディスプレイ上に映像VD1、VD2を表示し、スピーカーなどから音声を出力することができる。当該ユーザ端末30a、30b上にそれぞれ表示される当該映像VD1、VD2は、当該ライブストリーマーLVの当該ユーザ端末により記録された当該映像と実質的に同じであり、当該ユーザ端末30a、30bから出力される当該音声は、当該ライブストリーマーLVの当該ユーザ端末により記録された当該音声と実質的に同じである。
当該ライブストリーマーの当該ユーザ端末20での記録は、当該視聴者AU1、AU2の当該ユーザ端末30a、30bでのストリーミングデータの再生と同時であってもよい。当該視聴者AU1が当該ライブストリーマーLVのコンテンツに関するコメントを当該ユーザ端末30aに入力すると、当該サーバ10は、当該コメントを当該ライブストリーマーの当該ユーザ端末20にリアルタイムで表示するとともに、当該視聴者AU1、AU2の当該ユーザ端末30a、30bにもそれぞれ表示する。当該ライブストリーマーLVが当該コメントに応答した場合、当該応答を当該視聴者AU1、AU2の当該ユーザ端末30a、30bからテキスト、画像、映像または音声として出力し、当該ライブストリーマーLVと当該視聴者AU1、AU2のコミュニケーションを実現することができる。従って、当該ライブストリーミングシステムは、双方向通信のライブストリーミングを実現することができる。
図2は、本開示の実施態様に基づく、図1に示すユーザ端末20の機能と構成を示すブロック図である。当該ユーザ端末30は、当該ユーザ端末20と同様の機能と構成を有する。本明細書のブロック図に描かれているブロックは、コンピュータのCPUなどのデバイスや機械部品などのハードウェア、およびこれらの要素の連携によって実施される機能ブロックを表現する、コンピュータプログラムなどのソフトウェアで実施される。したがって、機能ブロックは、ハードウェアとソフトウェアの組み合わせによる多様な態様で実装され得ることが、当業者には理解されよう。
当該ライブストリーマーLVと視聴者AUは、ネットワークNWを介して、ダウンロードサイトから本開示のライブストリーミングアプリケーション(ライブストリーミングアプリ)を当該ユーザ端末20と30にダウンロードしてインストールすることができる。または、当該ライブストリーミングアプリは、当該ユーザ端末20と30に予めインストールされていてもよい。当該ユーザ端末20と30によるライブストリーミングの実行により、当該ユーザ端末20と30は、当該ネットワークNWを介して当該サーバ10と通信し、複数の機能を実現することができる。当該ユーザ端末20と30(より具体的に、CPUなどのプロセッサ)による当該ライブストリーミングアプリの実行により実現される当該機能は、当該ユーザ端末20と30の機能として以下で説明される。当該機能は基本的に、当該ライブストリーミングアプリが当該ユーザ端末20と30に実現させる機能である。一部の実施態様において、これらの機能は、ネットワークNWを介して当該サーバ10から当該ユーザ端末20と30のウェブブラウザに送信し、当該ウェブブラウザのコンピュータプログラムにより実行されることにより実現されてもよい。当該コンピュータプログラムは、HTML(Hyper Text Markup Language)などのプログラミング言語で書かれていてもよい。
当該ユーザ端末20は、ストリーミングユニット100と視聴ユニット200を含む。一部の実施態様において、当該ストリーミングユニット100は、ユーザのオーディオ及び(または)ビデオデータを記録し、当該サーバ10に送信するストリーミングデータを生成するように構成される。当該視聴ユニット200は、サーバ10からストリーミングデータを受信し、再生するように構成される。一部の実施態様において、ユーザは、ブロードキャスト時に当該ストリーミングユニット100を作動させる、またはストリーミングを視聴するときに当該視聴ユニット200を作動させることができる。一部の実施態様において、当該ストリーミングユニット100を作動させる当該ユーザ端末は、ライブストリーマーと呼ぶことができ、またはストリーミングデータを生成する当該ユーザ端末と呼ぶことができる。当該視聴ユニット200を作動させる当該ユーザ端末は、視聴者と呼ぶことができ、または当該ストリーミングデータを再生する当該ユーザ端末と呼ぶことができる。
当該ストリーミングユニット100は、ビデオコントロールユニット102と、オーディオコントロールユニット104と、配信ユニット106と、UIコントロールユニット108を含むことができる。当該ビデオコントロールユニット102は、カメラ(図示せず)に接続されてもよく、当該映像は当該カメラにより制御される。当該ビデオコントロールユニット102は、当該カメラから当該ビデオデータを取得することができる。当該オーディオコントロールユニット104は、マイク(図示せず)に接続されてもよく、音声は当該マイクにより制御される。当該オーディオコントロールユニット104は、当該マイクから当該オーディオデータを取得することができる。
当該配信ユニット106は、当該ビデオコントロールユニット102からのビデオデータと、当該オーディオコントロールユニット104からのオーディオデータを含むストリーミングデータを受信し、ネットワークNWを介して当該サーバ10に送信する。一部の実施態様において、当該配信ユニット106は当該ストリーミングデータをリアルタイムで送信する。つまり、当該ビデオコントロールユニット102と当該オーディオコントロールユニット104からの当該ストリーミングデータの生成と、当該配信ユニット106の配信は同時に実行される。
当該UIコントロールユニット108は、当該ライブストリーマーのUIを制御する。当該UIコントロールユニット108はディスプレイ(図示しない)に接続され、当該配信ユニット106が当該ストリーミングデータを送信し、再生して当該ディスプレイ上に表示する相手に対して当該ストリーミングデータを生成するように構成される。当該UIコントロールユニット108は、操作するオブジェクトまたは指示を受けるオブジェクトをディスプレイ上に表示し、当該ライブストリーマーからのタップ入力を受け付けるように構成される。
当該視聴ユニット200は、UIコントロールユニット202と、レンダリングユニット204と、入力送信ユニット206と、を含んでもよい。当該視聴ユニット200は、ネットワークNWを介してサーバ10からストリーミングデータを受信するように構成される。当該UIコントロールユニット202は、当該視聴者のUIを制御する。当該UIコントロールユニット202は、ディスプレイ(図示せず)及び(または)スピーカー(図示せず)に接続され、当該ストリーミングデータを再生することにより、当該ディスプレイ上に映像を表示し、当該スピーカーから音声を出力するように構成される。一部の実施態様において、当該ディスプレイ上に映像を出力し、当該スピーカーから音声を出力することを「ストリーミングデータを再生する」ことと呼んでもよい。当該UIコントロールユニット202は、タッチパネルやキーボード、ディスプレイなどの入力ユニットに接続され、ユーザからの入力を取得することができる。
当該レンダリングユニット204は、当該サーバ10からのストリーミングデータと、フレーム画像とをレンダリングするように構成されてもよい。当該フレーム画像は、ユーザからの入力、視聴者により入力されたコメント、当該サーバ10から受信したデータを受け付けるためのユーザインターフェイスオブジェクトを含んでもよい。当該入力送信ユニット206は、当該UIコントロールユニット202から当該ユーザ入力を受信し、当該ネットワークNWを介して当該サーバ10に送信するように構成される。
一部の実施態様において、当該ユーザ入力は、ライブストリームの選択、コメントの入力、贈り物の送信、ユーザのフォローまたはフォロー解除、イベントでの投票、ゲームなど、当該ユーザ端末の画面上のオブジェクトをクリックすることであってもよい。例えば、当該入力送信ユニット206は、視聴者の当該ユーザ端末が当該ライブストリーマーに贈り物を送るために画面上の贈り物オブジェクトをクリックした場合に、贈り物情報を生成し、インターネットNWを介して当該サーバ10に送信してもよい。
図3は、本開示の一部の実施態様に基づくサーバ10のブロック図である。当該サーバ10は、ストリーミング情報ユニット302、中継ユニット304、記録ユニット306、処理ユニット308、コンテキストユニット310、クリップユニット312、ストリームDB320、ユーザDB322、アーカイブDB324、コンテキストDB326、クリップDB328を含んでもよい。
当該ストリーミング情報ユニット302は、当該ネットワークNWを介して当該ライブストリーマーの当該ユーザ端末20からライブストリーミングの要求を受信する。要求を受信すると、当該ストリーミング情報ユニット302は、当該ライブストリーミングの情報を当該ストリームDB320に登録する。一部の実施態様において、当該ライブストリーミングの情報は、当該ライブストリーミングのストリームID及び(または)当該ライブストリーミングに対応する当該ライブストリーマーのライブストリーマーIDであってもよい。
当該視聴者から当該ネットワークNWを介して当該ユーザ端末30の当該視聴ユニット200から当該ライブストリーミングの当該情報の提供要求を受信すると、当該ストリーミング情報ユニット302は当該ストリームDB320を参照し、利用可能なライブストリーミングのリストを生成する。
その後当該ストリーミング情報ユニット302は、当該ネットワークNWを介して当該ユーザ端末30に当該リストを送信する。当該ユーザ端末30の当該UIコントロールユニット202は、当該リストに基づいてライブストリーミング選択画面を生成し、当該ユーザ端末30のディスプレイ上に当該リストを表示する。
当該ユーザ端末30の当該入力送信ユニット206は、当該ライブストリーミング選択画面上での当該視聴者によるライブストリーミングの選択を受信すると、選択された当該ライブストリーミングの当該ストリームIDを含む配信要求を生成し、当該ネットワークを介して当該サーバ10に送信する。当該ストリーミング情報ユニット302は、当該配信要求で当該ストリームIDにより指定された当該ライブストリーミングの当該ユーザ端末30に対する提供を開始することができる。当該ストリーミング情報ユニット302は、当該ストリームDB320を更新し、当該ユーザ端末30の当該視聴者の視聴者IDを当該ストリームIDの当該ライブストリーマーIDに追加することができる。
当該中継ユニット304は、当該ストリーミング情報ユニット302により開始された当該ライブストリーミングにおいて、当該ライブストリーマーの当該ユーザ端末20から、当該視聴者の当該ユーザ端末30へのライブストリーミングの送信を中継することができる。当該中継ユニット304は、ストリーミングデータの再生中に、当該視聴者からのユーザ入力を示す信号を当該入力送信ユニット206から受信することができる。当該ユーザ入力を示す当該信号は、当該ユーザ端末30のディスプレイに表示されるオブジェクトの指定を示すオブジェクト指定信号であってもよい。当該オブジェクト指定信号は、当該視聴者の視聴者ID、当該視聴者が視聴しているライブストリーミングを配信するライブストリーマーのライブストリーマーID、及び当該オブジェクトにより指定されるオブジェクトIDを含んでもよい。当該オブジェクトが贈り物などである場合、当該オブジェクトIDは、贈り物IDなどであってもよい。同様に、当該中継ユニット304は、ストリーミングデータの再生中に、当該ユーザ端末20の当該ストリーミングユニット100から、例えば当該オブジェクト指定信号など、当該ライブストリーマーのユーザ入力を示す信号を受信することができる。
当該記録ユニット306は、当該ライブストリーミングを記録するように構成されてもよい。一部の実施態様において、当該記録ユニット306は、当該ストリーマーの当該ユーザ端末20による設定に基づき、自動でまたは手動で当該ライブストリーミングを記録してもよい。例えば、当該ストリーマーは当該ライブストリーミングを開始する前に、当該ライブストリーミングを自動的に記録してアーカイブするために、自動アーカイブ機能をオンにしてもよい。当該記録ユニット306は、当該ストリーマーが配信を開始したとき当該ライブストリーミングの記録を開始し、当該ライブストリーミングが終了したら記録を停止してもよい。また一部の実施態様において、当該ストリーマーまたは当該視聴者は、当該ライブストリーミング中、手動で当該ライブストリーミングをクリップしてもよい。
一部の実施態様において、当該記録ユニット306は、当該アーカイブコンテンツの最大期間、例えば8時間など、当該ライブストリーミングを記録してもよい。例えば、当該記録ユニット306は、最大8時間などの期間、当該ライブストリーミングを記録してもよい。当該ライブストリーミングの持続期間が8時間未満の場合、当該記録ユニット306は、当該ライブストリーミングを記録してアーカイブしてもよい。しかし、当該ライブストリーミングが8時間より長い場合、当該記録ユニット306は当該ライブストリーミングを8時間記録し、さらに次の8時間またはそれ以下の別の記録を開始してもよい。
一部の実施態様において、当該ライブストリーミングの当該アーカイブコンテンツは、Google Cloudなどのストレージに格納され、当該アーカイブコンテンツのデータが参照とさらなる処理のために当該アーカイブDB322に登録されてもよい。一部の実施態様において、HTTPライブストリーミング(HLS)などの任意の可能な伝送プロトコルが、当該サーバと当該ユーザ端末との間で適用されてもよい。一部の実施態様において、当該記録ユニット306は、ストリーミングソースからライブストリーミングを受信し、当該ライブストリーミングをアーカイブコンテンツとして記録してもよい。
ライブストリーミングの通信時には、異なる伝送プロトコルが使用されてもよい。ここでは、HTTPライブストリーミング(HLS)を例に挙げて説明する。HTTPライブストリーミング(HLS)は、Apple社が提唱するHTTPベースのストリーミングメディアネットワーク伝送プロトコルである。HLSは、M3U8セグメントインデックスファイルとトランスポートストリーム(TS)セグメントとで構成される。
M3U8ファイルは、tsセグメントのインデックスファイルと呼ばれてもよく、tsセグメントのダウンロードアドレスをサーバに格納するために使用されてもよい。ユーザ端末は、M3U8ファイルに基づき、tsセグメントを順番に読み出すことができる。tsセグメントは、ビデオファイル全体やビデオストリームを分割して得られるビデオクリップと呼んでもよい。各tsセグメントは、映像の複数のフレームを含んでもよい。1つのtsセグメントは、1~2秒程度などであってもよい。各tsセグメントは、映像の複数のフレームを含む1つ以上のGOP(Group Of Picture)構造を含んでもよい。1つのGOPは、Iフレーム、Pフレーム、Bフレームなどの異なるフレームタイプを含んでもよい。SEIメッセージは、Iフレームに挿入して保存することができる。
HLSは、オーディオおよびビデオストリーム全体をダウンロード用にHTTPベースの小さなファイルに分割し、毎回ファイルの一部のみがダウンロードされてもよい。メディアストリームの再生時、視聴者は、多くの異なる代替ソースから異なるレートで同じリソースをダウンロードすることを選択し、ストリーミングメディアセッションが異なるデータレートに適応するようにしてもよい。
異なるストリーミングソースは、FLVまたはM3U8などのストリーミングデータの異なる形式を提供してもよい。当該記録ユニット306は、ストリーミングソースからストリーミングデータを受信し、当該ストリーミングデータの形式を任意の種類の形式に変換して処理してもよい。当該記録ユニット306は、当該アーカイブコンテンツを任意の可能な形式のストリーミングデータとして記録し、格納してもよい。ここでは、tsセグメントを用いたM3U8プレイリストを例に挙げて説明する。当該記録ユニット306は、当該処理ユニット308が確認し、ストレージに格納するために、当該ライブストリーミングのストリーミングデータをtsセグメントとして記録してもよい。
当該処理ユニット308は、当該アーカイブコンテンツを処理するように構成されてもよい。一部の実施態様において、当該処理ユニット308は、当該アーカイブコンテンツをチェックし、トランスポートストリーム(TS)セグメントとして格納してもよい。当該処理ユニット308は、当該TSセグメントに対してM3U8再生リストをさらに生成してもよい。一部の実施態様において、当該処理ユニット308は、7日、14日などの特定の期間、ストレージおよびデータベースに当該アーカイブコンテンツを保持してもよい。これにより、メモリが効率的に使用される。
当該コンテキストユニット310は、インタラクション情報のコンテキストを取り扱うように構成されてもよい。ここで、当該コンテキストとは、レンダリングコンテキストを指してもよい。当該コンテキストは、視聴者からのインタラクション情報を含んでもよい。例えば、視聴者は、ストリーマーにメッセージを送信したり、贈り物を送信したりしてもよく、当該コンテキストは、メッセージ、贈り物メッセージ、アニメーション、贈り物アニメーション等の情報を含んでもよい。当該コンテキストユニット310は、視聴者からのインタラクション情報を受信し、当該インタラクション情報を当該コンテキストDB324に格納してもよい。一部の実施態様において、当該コンテキストユニット310は、異なるユーザからのコンテキストを処理するための複数の作業ユニットを含んでもよい。
一部の実施態様において、当該コンテキストユニット310は、バックエンドサーバを介して視聴者からインタラクション情報を受信してもよい。一部の実施態様において、当該コンテキストユニット310は、バックエンドサーバを介してストリーマー端末からのインタラクション情報を受信してもよい。例えば、ストリーマーは、視聴者にメッセージを送信するなどしてもよい。一部の実施態様において、当該コンテキストユニット310は、当該バックエンドサーバからインタラクション情報を直接受信してもよい。例えば、バックエンドサーバは、VIPユーザがオンラインであり、ライブストリーミングに参加することを通知するメッセージを送信してもよく、コンテキストは、VIPオンライン通知のインタラクション情報を含んでもよい。一部の実施態様において、当該バックエンドサーバは、UTC時刻情報などの識別子を含むインタラクション情報を送信してもよい。一部の実施態様において、当該コンテキストユニット310は、ライブストリーミング中に、テキスト、画像、アニメーション、通知などの任意の種類のインタラクション情報を受信してもよい。
当該クリップユニット312は、クリップコンテンツを処理するように構成されてもよい。一部の実施態様において、当該クリップユニット312は、ストリーミングデータとインタラクションデータを取得し、レンダリングと記録のためにECMに送信してもよい。個々で、当該インタラクションデータは、メッセージ、コメント、贈り物、フォロー、ゲーム、VIPオンライン通知、入室アニメーションなど、当該ライブストリーミングルーム内におけるあらゆる可能なインタラクティブ情報であってもよい。
一部の実施態様において、当該ストリーミングデータとインタラクションデータは、当該アーカイブDB324とコンテキストDB326からのアーカイブデータとコンテキストデータであってもよい。一部の実施態様において、当該ストリーミングデータとインタラクションデータは、例えば、ストリーミングサーバとバックエンドサーバなどからのライブストリーミングデータまたはライブインタラクションデータであってもよい。つまり、当該ストリーミングデータとインタラクションデータは、当該アーカイブDB324とコンテキストDB326からのアーカイブデータとコンテキストデータ、あるいはリアルタイムのライブストリーミングからのものであってもよい。
一部の実施態様において、当該クリップユニット312は、ストレージとデータベースに当該クリップコンテンツを保存してもよい。また、一部の実施態様において、当該クリップユニット312は、当該クリップコンテンツへのリンクを生成してもよい。一部の実施態様において、当該クリップコンテンツは、永久に保存されるか、7日、14日などの一定期間後に削除されてもよい。一部の実施態様において、当該クリップコンテンツの設定は、実際の必要性に応じて柔軟に決定されてもよい。
図4は、図3のストリームDB320の例示的データ構造を示す表である。当該ストリームDB320は、現在行われているライブストリームに関する情報を保持する。当該ストリームDB320は、当該ライブストリーミングシステム1が提供するライブストリーミングプラットフォーム上のライブストリームを識別するためのストリームID、当該ライブストリームを提供するライブストリーマーを識別するためのライブストリーマーID、及び当該ライブストリームの視聴者を識別するための視聴者IDを、互いに関連付けて格納する。
図5は、図3のユーザDB322の例示的データ構造を示す表である。当該ユーザDB322は、ユーザに関する情報を保持する。当該ユーザDB322は、ユーザを識別するためのユーザID、当該ユーザが蓄積したポイントを特定するためのポイント、当該ユーザのレベルを識別するためのレベル、当該ユーザのステータスを識別するためのステータスを、相互に関連付けて格納する。当該ポイントは、当該ライブストリーミングプラットフォーム内で流通する電子的な価値である。当該レベルは、当該ライブストリーミングプラットフォームにおける当該ユーザの活動またはエンゲージメントの量の指標であってもよい。当該ステータスは、当該ライブストリーミングプラットフォームにおける当該ユーザのアイデンティティまたはメンバーシップステータスであってもよい。
図6に、図3のアーカイブDB322の例示的データ構造を示す表を示す。当該アーカイブDB322は、アーカイブコンテンツに関する情報を保持する。当該アーカイブDB322は、当該アーカイブコンテンツを識別するアーカイブIDと、当該アーカイブコンテンツの時刻情報を識別するタイムスタンプと、当該アーカイブコンテンツの持続時間を識別する持続時間と、当該アーカイブコンテンツの場所を識別するアーカイブURLとを相互に関連付けて格納する。
図7に、図3のコンテキストDB324の例示的データ構造を示す。当該コンテキストDB324は、コンテキストデータに関する情報を保持する。当該コンテキストDB324は、当該コンテキストデータを識別するコンテキストID、当該コンテキストデータのタイプを識別するタイプ、当該コンテキストの時間情報を識別するタイムスタンプを、互いに関連付けて格納する。一部の実施態様において、メッセージ、コメント、贈り物、フォロー、ゲーム、VIPオンライン通知など、ライブストリーマー端末、視聴者端末、またはバックエンドサーバからの任意の種類のインタラクション情報が、当該コンテキストユニット310からクエリされてもよい。
図8は、図3のクリップDB328の例示的データ構造を示す表である。当該クリップDB328は、クリップコンテンツに関する情報を保持する。当該クリップDB328は、当該クリップコンテンツを識別するクリップIDと、当該クリップコンテンツの持続時間を識別する持続時間と、当該クリップコンテンツの場所を特定するクリップURLとを、互いに関連付けて格納する。一部の実施態様において、当該クリップDB328はさらに、例えば、アーカイブID、コンテキストIDなど、アーカイブデータとコンテキストデータに関する情報を含んでもよい。
図9は、本開示の一部の実施態様に基づくライブストリーミングシステム1の例示的な機能的構造である。図9に示すように、当該ストリーマーは、アプリにおいてアーカイブ機能をオンにしてもよい。一部の実施態様において、当該ストリーマーはアーカイブ機能のアイコンを切り替え、ライブストリーミングをアーカイブしたいことを示してもよい。バックエンドは、アーカイブ制御マネージャに、当該ストリーマーのためのアーカイブタスクを登録するように通知してもよい。一部の実施態様において、当該バックエンドは、メッセージングなどによって、アーカイブ機能のセットアップが成功したことを当該ストリーマーにさらに通知してもよい。
当該ストリーマーは、ストリーミングデータを当該ストリーミングサーバにプッシュすることにより、ライブストリーミングをさらに開始してもよい。一部の実施態様において、当該ストリーマーは、スマートフォンなどの携帯端末によってライブストリーミングを開始してもよい。一部の実施態様において、当該ストリーマーは、OBS(Open Broadcaster Software)等のコンピュータ上のソフトウェアによって当該ライブストリーミングを開始してもよい。当該アーカイブサービスは、当該ストリーマーからの任意の種類のストリーミング方式に適用されてもよい。当該記録ユニット306は、記録のために当該ライブストリーミングを引き出してもよい。一部の実施態様において、当該記録ユニット306は、ライブストリーミングを記録しながら、アーカイブ映像のフレームに識別子を挿入してもよい。例えば、当該識別子は、当該アーカイブ映像のフレームのSEI(Supplemental Enhancement Information、補助拡張情報)内にそれぞれ挿入されてもよい。したがって、アーカイブ映像の当該フレームは、識別子情報を含んでもよい。
一部の実施態様において、当該tsセグメントの持続時間は1秒であってもよく、当該tsセグメントは1つのGOP構造を含んでもよい。1つのGOP構造は、1つのIフレーム及びいくつかのPフレームを含んでもよい。Iフレームは主フレームであってもよく、Pフレームは補助フレームであってもよい。例えば、Iフレームは、ライブストリーミングのオリジナルフレームの主フレーム情報を含んでもよく、Pフレームは、現在のIフレームと以前のIフレームとの差分などのいくつかの補助的な情報を含んでもよい。本実施態様によれば、伝送量を低減することができる。
一部の実施態様において、1つのtsセグメントは、1つのIフレームを有する1つのGOPを含んでもよく、これは識別子を有するSEIメッセージを挿入するために使用されてもよい。つまり、1つのtsセグメントは、UTC時刻情報など1つの識別子を含んでもよい。一部の実施態様において、1つのtsセグメントは、記録または接続により、より多くのIフレームを有するより多くのGOPを含んでもよいため、1つのtsセグメントは、複数のUTC時刻情報などを含んでもよい。
SEIは、オーディオおよび映像のビットストリームに挿入され、追加情報を伝えるためのテキストデータと呼ぶことができる。SEIは、H.264ビデオコーディングにおける標準的なNAL(ネットワーク抽象化レイヤ)であり、映像のさまざまな特性を記述するさまざまなタイプのデータを含むことができる。また、SEIメッセージには、任意のユーザ定義データを含めることができる。さらに、SEIメッセージは、コアデコーディングプロセスに影響を与えることなく、映像をどのように後処理または表示することが推奨されるかを示すことができる。
一部の実施態様において、当該識別子は、当該SEIメッセージに含まれてもよい。一部の実施態様において、当該識別子は、アーカイブビデオ専用のUUID(Universal Unique Identifier、個体識別番号)を含んでもよい。当該識別子は、当該アーカイブ映像のフレームに保存されてもよい。一部の実施態様において、当該識別子は、一意の一連の数字、文字、テキスト、記号、上記の組み合わせなどであってもよい。一部の実施態様において、当該識別子は、映像のフレームまたは映像のtsセグメントを互いに識別してもよい。つまり、当該映像のフレームまたは当該映像の各tsセグメントの識別子は、一意であり、他とは異なっていてもよい。
一部の実施態様において、当該識別子は、当該アーカイブ映像のフレームの時間情報であってもよい。一部の実施態様において、当該時間情報は、相対時間であってもよい。例えば、当該時間情報は、当該アーカイブ映像の先頭を基準としたフレームの時間長さ、または当該アーカイブ映像の前のフレームを基準としたフレームの時間長さなどを示していてもよい。
一部の実施態様において、当該時間情報は、ライブストリーミングの絶対時間情報であってもよい。例えば、当該記録ユニット306は、ライブストリーミングをアーカイブ映像として記録しながら、各フレームの絶対時間を保存してもよい。一部の実施態様において、当該絶対時間は、グリニッジ標準時(GMT)、協定世界時(UTC)等の標準時刻であってもよい。例えば、ストリーマーが2022-08-05T06:00:00Zから2022-08-05T07:00:00Zまでのライブストリーミングを開始する場合、当該記録ユニット306は、アーカイブ映像のフレームのSEIメッセージにUTCタイムスタンプを書き込み、当該アーカイブ映像の対応するフレームにSEIメッセージを保存してもよい。
一部の実施態様において、当該識別子は、記録中に当該記録ユニット306によってタグ付けされるタグであってもよい。例えば、当該記録ユニット306は、アーカイブ映像のフレームにタグを追加してもよい。当該バックエンドサーバは、さらに、対応するタグを有するコンテキストを当該コンテキストユニット310に送信してもよい。したがって、当該コンテキストユニット310は、アーカイブ視聴者が当該タグを有するコンテキストをクエリしたとき、対応するタグを有するコンテキストを当該アーカイブ視聴者に送信してもよい。一部の実施態様において、当該識別子は、アーカイブコンテンツのフレームを互いに識別し、フレームを対応するコンテキストとそれぞれ接続する一意のコードであってもよい。一部の実施態様において、当該コードは、サーバ10または別のサードパーティのサーバ等によって生成されてもよい。
一部の実施態様において、当該アーカイブ映像の各フレームにタグを挿入するために、AIタギング技術が適用されてもよい。ここで、AIタギングとは、人工知能を用いてメディアファイルにメタデータのタグ付けを行う処理を指してもよい。例えば、当該記録ユニット306が特定の機能を持つタグを自動的に追加し、当該バックエンドサーバが対応するタグを持つコンテキストを生成するようにしてもよい。当該AIタギングは、ストリーマーや視聴者からの音声、映像、テキスト、画像、アニメーションなどを検出し、当該アーカイブ映像の対応するフレームに挿入されるタグを生成してもよい。例えば、ストリーマーが車について話し、その会話中にAIタグが挿入されてもよい。当該バックエンドサーバはさらに、「車について会話が進行中」または車の広告映像などの情報を生成し、対応するタグを挿入して、当該コンテキストユニット310に送信してもよい。これにより、当該アーカイブ映像は、ストリーマーが話していた話題をより理解することができる。また、視聴者がストリーマーの話の重点を聞き取れなかった場合、当該視聴者は、画面上に表示されたより多くの情報を有するアーカイブ映像にアクセスしてもよい。
一部の実施態様において、当該AIタギングは、ストリーマーまたは視聴者の位置情報や時間情報に基づいて、適用されてもよい。例えば、ストリーマーがカフェで放送していた場合、当該記録ユニット306は、カフェの場所を示すタグを挿入してもよい。当該アーカイブ視聴者は、アーカイブコンテンツを確認しながら、当該カフェの情報を受信してもよい。さらに、当該記録ユニット306は、1時間など定期的にタグを挿入し、アーカイブ視聴者が視聴した時間を示す、またはアーカイブ視聴者に休憩を取るよう通知するために、対応するタグを有するメッセージのコンテキストを生成してもよい。
一部の実施態様において、当該視聴者は、ライブストリーミングを視聴するために、ストリーミングサーバからライブストリーミングを引き出してもよい。当該視聴者は、コメント、贈り物などでストリーマーと交流(インタラクション)してもよく、インタラクション情報がバックエンドサーバを介して当該ストリーマーまたは他の視聴者に送信されてもよい。一部の実施態様において、当該バックエンドサーバはさらに当該コンテキストユニット310に当該インタラクション情報を送信してもよい。当該コンテキストユニット310は、当該インタラクション情報を処理するための1つまたは複数の作業ユニットを含んでもよい。例えば、当該作業ユニットは、当該インタラクション情報を当該コンテキストDB324に書き込んでもよい。
一部の実施態様において、当該バックエンドサーバが当該インタラクション情報を当該コンテキストユニット310に送信するとき、当該インタラクション情報は、識別子も含んでいてもよい。より具体的に、当該識別子は、当該バックエンドサーバが当該インタラクション情報を受信するための当該時間情報であってもよい。一部の実施態様において、当該時間情報は、相対時間あるいは、GMT時刻、UTC時刻などの絶対時間であってもよい。例えば、視聴者は、当該バックエンドサーバを介してストリーマーにメッセージを送信してもよく、当該バックエンドサーバは、当該時間情報を当該インタラクション情報内の識別子として保存してもよい。一部の実施態様において、当該コンテキストユニット310はさらに、識別子を有する当該インタラクション情報を受信し、当該コンテキストDB324に書き込んでもよい。
一部の実施態様において、別の視聴者のユーザ端末(アーカイブ視聴者と称してもよい)は、当該アーカイブサービスからアーカイブコンテンツを要求してもよい。当該処理ユニット308は、当該tsセグメントに対してM3U8再生リストを生成してもよい。当該M3U8再生リストは、tsセグメントのリストと、各フレームまたはtsセグメントの識別子情報とを含んでもよい。当該識別子情報は、例えば、各フレームまたはtsセグメントそれぞれのUTC情報を含んでもよい。
当該アーカイブ視聴者が当該アーカイブコンテンツを再生するとき、当該アーカイブ視聴者のユーザ端末は、当該アーカイブ映像のフレーム内のSEIメッセージを解析し、当該UTC情報を含む当該識別子情報を取得してもよい。一部の実施態様において、当該アーカイブ視聴者のユーザ端末は、当該UTC情報に基づき、対応するコンテキストについて当該コンテキストユニット310にさらにクエリしてもよい。一部の実施態様において、当該アーカイブ視聴者のユーザ端末は、当該アーカイブ視聴者が再生したいと思う時間点に基づき、コンテキストをクエリしてもよい。例えば、当該アーカイブ視聴者は、当該アーカイブ映像の先頭から、または当該アーカイブ映像の特定の時間点から、当該アーカイブ映像を再生してもよい。当該アーカイブ視聴者のユーザ端末は、当該アーカイブ視聴者が再生したい当該アーカイブコンテンツのフレーム内のSEIメッセージを解析し、当該識別子情報を取得してもよい。例えば、当該アーカイブ視聴者が当該アーカイブ映像の先頭から再生し、UTC情報が2022-08-05T06:00:00Zである場合、当該アーカイブ視聴者のユーザ端末は、当該UTC情報のタイムスタンプを有するコンテキストをクエリしてもよい。
一部の実施態様において、当該レンダリングユニット204は、当該識別子情報に基づき、インタラクション情報のコンテキストを有するアーカイブコンテンツをレンダリングしてもよい。例えば、当該レンダリングユニット204は、UTC情報に基づいたインタラクション情報のコンテキストで当該アーカイブ映像のフレームをレンダリングしてもよい。したがって、当該アーカイブ視聴者は、すべてのインタラクション情報が含まれたアーカイブ映像を視聴してもよい。一部の実施態様において、当該インタラクション情報は、映像及び音声ストリーミングデータを除いたライブストリーミングルーム内の情報であってもよい。例えば、当該インタラクション情報は、視聴者が「いいね」ボタンをクリックしたことのメッセージであってもよいし、ストリーミングルームのタイトルをストリーマーが変更したことのメッセージであってもよい。当該インタラクション情報は、視聴者がタイトルを取得するアニメーションや、ドラゴンがストリーミングルームを飛び交うアニメーション等であってもよい。
本実施形態によれば、当該コンテキストユニット310は、任意の形式のインタラクション情報を受信・送信し、ただ当該UTC情報に基づいて当該インタラクション情報を視聴者の端末に送信してもよい。したがって、任意の形式のインタラクション情報をアーカイブコンテンツに表示及び同期させることができ、ユーザエクスペリエンスを向上させることができる。
一部の実施態様において、別の視聴者ユーザ端末(クリップ視聴者と呼ばれてもよい)は、当該ライブストリーミングルームで当該ライブストリーマーを視聴している間に、当該ライブストリーミングからのクリップを要求してもよい。例えば、当該視聴者は、当該ライブストリーミングルーム内のハイライトモーメントをクリップし、当該ハイライトを他のソーシャルメディアなどに共有してもよい。一部の実施態様において、当該視聴者は、図11のクリップオブジェクト612などのボタンをクリックして、クリッピングについての要求をサーバ10に送信してもよい。一部の実施態様において、当該クリップは、当該ライブストリーミングの人気度や、視聴者数、コメントなど、当該ライブストリーミングルーム内のパラメータに基づいて自動的に生成されてもよい。
一部の実施態様において、当該視聴者は、当該クリップの長さ、開始時間、終了時間などを決定してもよい。また当該視聴者は、例えば、解像度、サムネイル、ビデオ形式なども決定してもよい。当該視聴者からの当該クリップの設定が完了すると、当該要求の情報が当該バックエンドサーバに送信されてもよい。当該バックエンドサーバは、当該要求についてタスクキューシステム内でタスクキューを生成してもよい。一部の実施態様において、当該タスクキューシステムは、内部システムまたはRedis Queue Systemなどのサードパーティシステムであってもよい。そのようなシステムにおいて、タスクはキューに入れられ、ワーカープロセスまたはサーバによって非同期に処理される。
一部の実施態様において、当該要求のキューはさらにロードバランササーバに送信されてもよい。当該ロードバランササーバは、複数のソースからの要求を当該キュー内の複数のインスタンスやワーカープロセスに分配してもよく、これは、ワークロードの分散、システムの可用性向上、システムの拡張性向上、トラフィック制御に役立つ可能性がある。一部の実施態様において、当該ロードバランササーバはさらに、当該要求のキューを当該クリップの記録のためにエミュレータコントロールマネージャー(Emulator Control Manager、ECM)に分配してもよい。一部の実施態様において、当該ロードバランサは、サーバ10の内部のロードバランサ、またはサードパーティのサービスプロバイダーによって提供されるサービスであってもよい。
図10は、本開示の一部の実施態様に基づくライブストリーミングシステム1の機能構成例を示す概略図である。図10に示すように、当該ECMは、1つ以上の仮想マシンVMを含んでもよい。当該仮想マシン(VM)は、別のコンピューティング環境をシミュレートすることを目的としている。当該仮想マシンの機能は、複数の独立した仮想コンピューティング環境を可能にする抽象化レイヤを提供することである。これにより、コンピューティング環境に柔軟性、管理性、強化されたセキュリティがもたらされる。
当該ロードバランササーバは、1つ以上の仮想マシンに当該要求の当該キューを分配してもよい。当該仮想マシンは、当該要求に応答して1つ以上のエミュレータEMを生成してもよい。当該「エミュレータ」とは、ハードウェアプラットフォームやデバイスをシミュレートし、それを異なる環境で実行できるようにすることもできる、ソフトウェアまたはハードウェアツールを指してもよい。つまり、当該エミュレータは、ターゲットとなるハードウェアまたはソフトウェア環境をシミュレートすることで、1つのシステム向けに設計されたソフトウェアを別のシステムで実行できるようにしてもよい。一部の実施態様において、当該エミュレータEMは、AndroidオペレーティングシステムにおけるAndroid Package、または他のプラットフォームにおける他のパッケージであってもよい。Android環境において、開発者はAndroidエミュレータを使用してアプリケーションのテストとデバッグを行うことがよくあり、これらのエミュレータは、ファイル拡張子が.apkのアプリケーションパッケージをロードして実行する必要があってもよい。
一部の実施態様において、1つ以上のアプリケーションAPPが、当該エミュレータEMで起動またはシミュレートされてもよい。つまり、APPプロバイダーからの当該アプリケーションAPPが、当該エミュレータEMで起動またはシミュレートされてもよい。一部の実施態様において、当該エミュレータEMは、スマートフォンやコンピュータなどのユーザ端末をシミュレートしてもよい。当該エミュレータEMによる当該アプリケーションの起動またはシミュレーションが完了した後、当該エミュレータEMは当該アプリケーションを介してアーカイブデータまたはコンテキストデータを受信してもよい。さらに、当該エミュレータEMは、当該アプリケーションを介して、例えば、当該アーカイブDB324とコンテキストDB326から、当該アーカイブデータを当該コンテキストデータとともにレンダリングしてもよい。
一部の実施態様において、当該エミュレータEMは、レンダリングされた当該アーカイブデータと当該コンテキストデータをクリップとして記録してもよい。例えば、当該クリップの長さ、開始時間、終了時間などの情報を使用して、レンダリングまたは記録する部分を決定してもよい。当該クリップのレンダリングと記録が完了したら、当該クリップはさらにストレージに格納されてもよい。一部の実施態様において、当該ストレージは、サーバ10内の内部領域またはGoogle Cloud Storageなどサードパーティサービスプロバイダーにより提供されるサービスであってもよい。一部の実施態様において、クリップの記録が完了すると、当該タスクキューシステムからの当該要求の当該キューを削除するために、APIが当該キューシステムに送信されてもよい。
一部の実施態様において、格納された当該クリップへのリンクが生成され、当該クリップ視聴者に送信されてもよい。当該クリップ視聴者はさらに、当該クリップを視聴したり、当該クリップを他のソーシャルメディアサイトに共有したりしてもよい。一部の実施態様において、当該リンクは、ウェブサイト、URL、サムネイルなどであってもよい。当該クリップ視聴者は、当該ユーザ端末を介して当該クリップを視聴したり、当該クリップを再編集したりしてもよい。
当該アーカイブ視聴者には、クライアント端末がアーカイブコンテンツを要求したときに当該ストリーミングデータとインタラクションデータが再構築される。一部の実施態様によれば、これは、当該アーカイブの再生時点で期限切れや古くなった贈り物やコメント(例えば、外部の著作権者とのコラボレーションによる贈り物で、当該ライブストリーミングサービスがそのプラットフォーム上でそのような贈り物を利用できる期間が定められているもの)など、任意のインタラクションデータを当該アーカイブコンテンツから容易に削除することができるという点でメリットがある可能性がある。他のサービスでは、ライブ時に当該ライブストリーミングの全体のビューが(スクリーンショットのように)記録され、その記録されたデータがアーカイブに使用される方法を実装している。これは、後で当該アーカイブから贈り物/コメントを削除することはできない。
当該クリップ視聴者にとって、上述の実施態様は、ユーザの要求に応じてクリップコンテンツを生成すると同時に、アーカイブコンテンツに関する上記のメリットを維持するためのものであってもよい。したがって、エミュレータはクリップコンテンツの生成に使用されるが、アーカイブコンテンツの生成には使用されない。より具体的に、当該アーカイブコンテンツは、当該エミュレータによって生成されない。しかしながら、一部の実施態様において、当該アーカイブコンテンツはまた、当該エミュレータなどによって生成されてもよい。一部の実施態様において、アーカイビングとクリッピング機能の設計は、柔軟に決定されてもよい。
図11から図14は、ライブストリーマーのユーザ端末20または視聴者のユーザ端末30のディスプレイ上に表示されるライブストリーミングルーム画面600の例示的な画面イメージである。視聴者がライブストリーミングルームを選択して入室すると、ライブストリーマーのライブストリーミングルーム画面600が当該ディスプレイに表示されてもよい。当該ライブストリーミングルーム画面600は、ライブストリーマー情報オブジェクト602、ライブストリーマー画像604、メッセージゾーン606、メッセージ入力ボックス608、贈り物オブジェクト610、クリップオブジェクト612等を含んでもよい。
当該視聴者は、当該ライブストリーマーと交流してもよい。例えば、当該視聴者は、当該贈り物オブジェクト610をタップしてもよく、贈り物リスト(図示しない)が当該画面600上に表示されてもよい。当該贈り物リストは、複数の贈り物オブジェクトを含んでもよく、当該視聴者は、当該ライブストリーマーに送信する贈り物オブジェクトを選択してもよい。図11に示すように、当該視聴者が当該贈り物オブジェクトをクリックすると、当該贈り物オブジェクトのエフェクトEと情報INが当該画面600上に表示されてもよい。
一部の実施態様において、当該視聴者は、当該クリップオブジェクト612をクリックすることで、当該ライブストリーミングをクリッピングしてもよい。例えば、当該視聴者は、当該エフェクトEが当該画面600上に表示されている間に当該ライブストリーミングの当該部分をクリッピングしてもよく、また当該贈り物を受け取っているときの当該ライブストリーマーの表情をキャプチャしてもよい。一部の実施態様によれば、当該視聴者は、後で見るため、または当該ライブストリーマーからパフォーマンスを宣伝するために、当該ライブストリーミング内のハイライトを保存または共有してもよい。
当該クリップオブジェクト612がクリックされると、図12に示すように、クリッピングツール614が当該画面600上に表示されてもよい。一部の実施態様において、当該クリッピングツール614は、当該ストリーミングデータ、アーカイブデータ、及び(または)コンテンツデータなどを含む、当該ライブストリーミングの一部分を含んでもよい。当該ライブストリーミングの当該部分Pは、柔軟に決定されてもよい。例えば、当該視聴者が当該クリップオブジェクト612をクリックした時点から、当該ライブストリーミングの90秒前または90秒後までの当該ライブストリーミングの90秒が、当該部分Pで提供されてもよい。また、当該部分Pは、当該視聴者が当該クリップオブジェクト612をクリックした時点から、45秒前と45秒後までであってもよい。一部の実施態様において、当該部分Pの持続時間は柔軟に決定されてもよい。
また、一部の実施態様において、当該クリップ視聴者に対し、当該クリップの長さ、持続時間、開始時間、終了時間など、当該クリップの情報を決定するために、編集ツール616が提供されてもよい。一部の実施態様において、当該編集ツール616はまた、例えば、継続時間、タイトル、視聴者情報、ライブストリーマー情報などを含んでもよい。一部の実施態様において、当該視聴者は、例えば、解像度、品質、サイズなどを調整してもよい。一部の実施態様において、当該編集ツール616の機能は、実際の必要性に応じて柔軟に決定されてもよい。
一部の実施態様において、当該クリップの情報が決定されたら、当該視聴者はさらにクリップ生成ボタン618をクリックして、当該クリップを生成してもよい。当該クリップ生成ボタン618がクリックされると、当該クリップに対する要求がサーバ10に送信され、当該クリップが生成されてもよい。当該クリップの生成は、図9と図10に示す工程にしたがって実現されてもよい。
クリップの生成が完了すると、当該クリップ視聴者が確認できるように、当該クリップの情報が当該画面600上に表示されてもよい。例えば、当該クリップのサムネイルTHが表示されてもよく、また、図13に示すように、当該視聴者が共有、ダウンロードなどを行うことができるように、共有ボタンSやダウンロードボタンDも当該画面600上に表示されてもよい。一部の実施態様において、URLなどのリンクも提供されてもよい。一部の実施態様において、当該クリッピング機能のレイアウトとUIは柔軟に決定されてもよい。
一部の実施態様において、当該ライブストリーミングのクリップCPが、図14に示すように、当該ユーザのプロフィールページPRに保存されてもよい。一部の実施態様において、当該プロフィールページPRは、当該ユーザがクリックして、当該ユーザから当該クリップCPへのアクセスを取得するためのタブTを含んでもよい。当該ユーザは、当該プロフィールページPRなどにある当該タブTをクリックすることにより、当該クリップCPへのアクセスを取得してもよい。一部の実施態様において、当該レイアウト及びUIは、実際の必要に応じて柔軟に決定されてもよい。
図15は、本開示の一部の実施態様に基づくライブストリーミングシステム1の構成の動作を示す例示的なシーケンス図である。一部の実施態様において、当該視聴者は、クリップオブジェクト612をクリックして当該ライブストリーミングの一部分をクリップするなどの操作を実行してもよい。図15に示すように、当該クリップオブジェクト612が当該視聴者によってクリックされると、クリッピングの要求が当該バックエンドサーバに送信されてもよい(S302)。
一部の実施態様において、当該バックエンドはさらに、ディープリンクを含む当該要求を当該APIサーバに送信してもよい(S304)。より具体的に、当該バックエンドは当該APIサーバに要求を送信してもよく、この要求がディープリンクを含む。この種の要求は、APIサーバが特定のアクションを実行すべきことを示す特定のパス、パラメータ、または識別子を含んでもよく、モバイルアプリケーション内の特定のコンテンツや機能に当該ユーザを誘導する。一部の実施態様において、当該ディープリンクは、エミュレータの生成、アプリケーションの起動などのアクションにリンクされてもよい。一部の実施態様において、当該APIサーバは、サーバ10内の内部APIサーバ、またはサード―パーティプロバイダーによって提供されるサーバであってもよい。
一部の実施態様において、当該APIサーバはさらに、レコードジョブを作成し、当該要求のキューをロードバランササーバに送信してもよい(S306)。当該ロードバランササーバはさらに、クリップを生成するために当該要求を1つ以上のエミュレータに分配してもよい(S308)。一部の実施態様において、工程306と工程308が成功し(S310)、当該ECMサーバが記録を開始する準備ができている場合、当該APIサーバは当該要求が受け入れられたことを示す「成功」という応答を当該バックエンドに送信し、その後当該エミュレータEMで記録工程が開始されてもよい(S322)。
一部の実施態様において、工程306と工程308が成功しなかった場合、当該APIサーバは「失敗」という応答を理由とともに当該バックエンドに送信してもよい(S312)。一部の実施態様において、「失敗」の当該応答の当該理由は、タイムアウト要求(requesting time―out)やサーバ過負荷(server overload)などであってもよい。ここで、「タイムアウト要求(requesting time―out)」とは、ネットワーク要求中にタイムアウトが要求されることを指してもよい。タイムアウトは、指定された時間内に応答または結果が受信されない場合に発生する。例えば、300秒以内に「成功」の応答が受信されない場合、「タイムアウト要求(requesting time―out)」の理由とともに「失敗」の応答が当該バックエンドサーバに送信されてもよい。一部の実施態様において、当該ECMサーバが過負荷の場合、「サーバ過負荷(server overload)」の理由とともに「失敗」の応答が当該バックエンドサーバに送信されてもよい。
一部の実施態様において、当該バックエンドサーバは、一定時間スリープ(S314)後に当該要求をディープリンクとともに当該APIサーバに再び送信してもよい(S316)。ここで、一定時間スリープとは、再試行時間を待機してから、再試行時間後に当該要求を当該APIサーバに再び送信することを指してもよい。例えば、当該バックエンドサーバは、5、10、30秒などの再試行時間を決定してもよい。当該バックエンドサーバは、当該再試行時間後に当該クリップに関する次の要求をさらに送信してもよい。一部の実施態様において、当該APIサーバはさらに、レコードジョブを作成し、当該要求のキューをロードバランササーバに送信してもよい(S318)。当該ロードバランササーバはさらに、クリップを生成するために当該要求を1つ以上のエミュレータに分配してもよい(S320)。
上述の工程が完了し、当該バックエンドに「成功」の応答が送信された後、当該エミュレータEMにおける当該記録工程が開始されてもよい(S322)。当該エミュレータは、長さ、開始時間、終了時間などの当該要求の情報に基づいて当該クリップを記録してもよい。当該クリップの記録が完了した後、当該クリップはGoogle Cloud Storageなどのストレージに保存されてもよく、当該クリップへのリンクが作成されてもよい(S324)。当該エミュレータEMはさらに、当該バックエンドに記録とアップロードの完了と、当該リンクなどを通知してもよい。一部の実施態様において、当該リンクは当該ストレージ内の当該クリップコンテンツの場所を示すURLであってもよい。
一部の実施態様において、当該リンクは、工程S304において当該バックエンドが当該要求を当該APIサーバに送信する間に、当該バックエンドサーバによって決定されてもよい。当該クリップコンテンツは、当該バックエンドからの当該API要求に含まれる当該リンクに基づいて、ストレージにアップロードされてもよい。つまり、当該バックエンドからの当該API要求は、当該リンクの情報を含んでいてもよく、それにより、記録が完了した後当該エミュレータEMが当該クリップコンテンツを当該リンクにアップロードしてもよい。したがって、当該クリップコンテンツの記録とアップロードが完了すると、当該バックエンドは当該クリップコンテンツの当該リンク情報も受信してもよい。一部の実施態様において、当該クリップは、.mp4ファイルなどの形式で保存されてもよい。一部の実施態様において、当該クリップコンテンツの形式は、柔軟に決定されてもよい。
一部の実施態様において、当該バックエンドサーバは、当該クリップコンテンツの記録とアップロードの完了について通知を受けてもよい(S326)。例えば、当該エミュレータEMは、当該クリップの記録とアップロードの完了について当該バックエンドに通知してもよい。また一部の実施態様において、当該エミュレータEMは、当該リンクなどを当該バックエンドサーバに送信してもよい。また一部の実施態様において、当該バックエンドサーバ、当該エミュレータEMなどに当該クリップに関する情報を要求してもよい。
一部の実施態様において、当該ユーザはさらに、当該クリップコンテンツへのアクセスを取得してもよい(S328)。例えば、当該ユーザは、当該クリップコンテンツをチェック、ダウンロード、または共有してもよい。また、一部の実施態様において、当該クリップコンテンツの情報が、当該ユーザがアクセスできるように当該ユーザの個人ページに表示されてもよい。例えば、当該ユーザは当該プロフィールページにあるクリップタブを開き、当該クリップコンテンツをチェックするなどしてもよい。
当該ユーザが当該クリップコンテンツへのアクセス取得を要求すると、当該バックエンドサーバは、当該ユーザに当該ストレージ内の当該クリップコンテンツにアクセスさせてもよい(S330)。一部の実施態様において、当該ユーザが当該APPを開くと、当該クリップコンテンツの情報が当該ユーザのプロフィールページなどに表示されてもよい。一部の実施態様において、当該ユーザはダウンロードボタンまたは共有ボタンをクリックしてもよく、それにより当該ユーザは当該リンクを介して当該クリップコンテンツに誘導され、当該クリップコンテンツをダウンロード、転送などすることができる。本実施態様によれば、当該ライブストリーミング内のハイライトをより効率的かつ円滑にクリップすることができる。
一部の実施態様において、当該エミュレータEMは、当該アーカイブDB324とコンテキストDB326からそれぞれアーカイブデータとコンテキストデータを受信した後、記録するために当該アーカイブデータとコンテキストデータをレンダリングしてもよい。また、一部の実施態様において、当該エミュレータEMは、当該ストリーミングサーバとバックエンドサーバから記録のためにストリーミングデータとコンテキストデータを受信してもよい。当該アーカイブデータとコンテキストデータのレンダリングは、当該データのタイムスタンプなどに基づいていてもよい。
一部の実施態様において、当該クリップ視聴者は、当該ライブストリーミングを視聴し、当該ライブストリーミングの一部分をハイライトとしてクリップしてもよい。また、一部の実施態様において、当該クリップ視聴者は、当該アーカイブ映像を視聴して、当該アーカイブの一部分をハイライトとしてクリップしてもよい。一部の実施態様において、当該ライブストリーマーと当該視聴者は、当該ライブストリーミングの一部分をハイライトとしてクリップしてもよく、当該ハイライトもまた、当該ライブストリーミングルームの人気度やコメント数、視聴者のコメントなどのパラメータにより自動的にクリップされてもよい。また一部の実施態様において、当該ハイライトは、機械学習技術などによって自動的にクリップされてもよい。
一部の実施態様において、サーバ10は、当該ライブストリーミングを自動的にアーカイブしてもよい。また、サーバ10は、当該ライブストリーマーまたは当該視聴者からの要求に応答して、当該ライブストリーミングをアーカイブしてもよい。一部の実施態様において、当該ライブストリーマーが自動アーカイブ機能をオンにした場合、当該ライブストリーミングの一部分がハイライトとしてクリップされてもよい。一部の実施態様において、当該ライブストリーマーが自動アーカイブ機能をオンにしなくても、サーバ10は、当該ストリーミングサーバ内の当該ストリーミングデータと当該バックエンドサーバ内の当該コンテキストデータから、当該ライブストリーミングの一部分をクリップしてもよい。一部の実施態様において、当該アーカイブとクリップの設定は、柔軟に決定されてもよい。
当該ユーザ端末を介したレンダリング及び記録と比較して、当該サーバ10でのレンダリングと記録の品質は、より高品質の当該クリップを提供できる可能性がある。より具体的に、当該ユーザ端末側でのクリップの記録は、予期できない問題に直面する可能性がある。例えば、LINEアプリのメッセージや更新通知が突然開き、動画の品質が低下する可能性がある。さらに、サーバ10でのレンダリングと記録は、多様なパラメータの調整などを提供してもよい。例えば、クリップの解像度やサイズは当該視聴者またはサーバ10により決定されてもよく、それにより当該クリップは携帯電話やタブレット、コンピュータなどの多様なデバイスに適したものとされてもよい。
一部の実施態様において、当該再試行時間は固定値であるか、再試行回数の増加とともに増加する。ここで「再試行回数」とは、当該バックエンドサーバがディープリンクを含む当該要求の当該APIサーバへの送信を再試行する回数を指してもよい。一部の実施態様において、当該再試行時間は当該再試行回数に基づいて増加してもよい。一部の実施態様において、当該再試行回数と再試行時間との関係は、実際の必要に応じて柔軟に決定されてもよい。
本開示によれば、当該クリップがより効率的かつ正確に生成され、当該クリップの視聴においてより没入感のある体験が提供される可能性がある。さらに、より柔軟にクリップの見直しと共有ができる可能性がある。したがって、ユーザエクスペリエンスが向上される可能性がある。
図16は、本開示の一部の実施態様に基づくシステム構成および処理を実行するためのコンピュータハードウェアの概略ブロック図である。図16の情報処理装置900は、例えば、本開示の一部の実施態様に基づく当該サーバ10と当該ユーザ端末20、30をそれぞれ実現するように構成される。
当該情報処理装置900は、CPU901と、リードオンリーメモリ(ROM)903、ランダムアクセスメモリ(RAM)905を含む。さらに、当該情報処理装置900は、ホストバス907、ブリッジ909、外部バス911、インターフェイス913、入力ユニット915、出力ユニット917、ストレージユニット919、ドライブ921、接続ポート925、通信ユニット929を含んでもよい。当該情報処理装置900は、カメラなどの撮像装置(図示せず)を含んでもよい。CPU901は、本明細書中に記載されている構成要素により実現される機能を実現するためのハードウェア構成の例である。本明細書に記載されている機能は、当該記載された機能を実現するようにプログラムされた回路(circuitry)により実現されてもよい。本明細書に記載されている機能を実現するようにプログラムされた回路(circuitry)は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、汎用プロセッサ、特定用途プロセッサ、集積回路、ASICs (Application Specific Integrated Circuits)、および/又はこれらの組合せを含む。本明細書において特定の機能を実現するユニット、は、当該機能を実現するようにプログラムされた回路として実現されてもよい。このユニットには、ストリーミングユニット100、ビデオコントロールユニット102、オーディオコントロールユニット104、配信ユニット106、UIコントロールユニット108、視聴ユニット200、UIコントロールユニット202、レンダリングユニット204、入力送信ユニット206、ストリーミング情報ユニット302、中継ユニット304、記録ユニット306、処理ユニット308、コンテキストユニット310、クリップユニット312、ストリームDB320、ユーザDB322、アーカイブDB324、コンテキストDB326、クリップDB328を含むが、これらには限られない。
当該CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージユニット919、またはリムーバブル記録媒体923に記録された各種プログラムに従って、当該情報処理装置900の全体動作またはその一部の動作を制御する。例えば、当該CPU901は、上述した実施態様の当該サーバ10および当該ユーザ端末20、30に含まれる各機能ユニットの動作全般を制御する。当該ROM903は、当該CPU901が使用するプログラム、動作パラメータなどを記憶する。当該RAM905は、当該CPU901が実行する際に使用するプログラムや、当該プログラムを実行する際に適宜変化するパラメータを過渡的に記憶する。当該CPU901、当該ROM903、当該RAM905は、CPUバスなどの内部バスから構成されるホストバス907を介して互いに接続されている。当該ホストバス907は、当該ブリッジ909を介してペリフェラルコンポーネントインターコネクト/インターフェイス(PCI)バスなどの外部バス911に接続される。
当該入力ユニット915は、マウス、キーボード、タッチパネル、ボタン、スイッチ、レバーなど、ユーザによって操作される装置である。当該入力ユニット915は、オーディオセンサ(マイクなど)、加速度センサ、傾斜センサ、赤外線センサ、深度センサ、温度センサ、湿度センサなど、物理量を電気信号に変換する装置であってもよい。当該入力ユニット915は、例えば、赤外線や別の種類の電波を利用するリモートコントロール装置であってもよい。あるいは、当該入力ユニット915は、当該情報処理装置900の動作に対応する携帯電話などの外部接続端末927であってもよい。当該入力ユニット915は、ユーザから入力される情報に基づいて入力信号を生成し、生成した入力信号を当該CPU901に出力する入力制御回路を含む。当該ユーザは当該入力ユニット915を操作することにより、各種データを入力し、当該情報処理装置900に対する処理動作の指示を行う。
当該出力ユニット917は、取得した情報をユーザに対して視覚的または聴覚的に報知することができる装置を含む。当該出力ユニット917は、例えば、LCD、PDP、OLEDなどのディスプレイ装置、スピーカー、ヘッドホンなどの音声出力装置、プリンタなどであってもよい。当該出力ユニット917は、当該情報処理装置900が実行する処理によって得られた結果を、テキスト、画像などの映像、音声などのサウンドの形で出力する。
当該ストレージユニット919はデータストレージ用装置であり、当該情報処理装置900のストレージユニットの一例である。当該ストレージユニット919は、例えば、ハードディスクドライブ(HDD)などの磁気記憶装置、半導体記憶装置、光記憶装置、光磁気記憶装置などを含む。当該ストレージユニット919は、当該CPU901が実行するプログラムや各種データ、及び外部から取得された各種データを格納する。
当該ドライブ921は、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブル記録媒体923のリーダー/ライターであり、当該情報処理装置900に内蔵または外付けされる。当該ドライブ921は、装着された当該リムーバブル記録媒体923に記録された情報を読み出し、当該RAM905に出力する。当該ドライブ921は、装着された当該リムーバブル記録媒体923に記録を書き込む。
当該接続ポート925は、当該情報処理装置900に機器を直接接続するために用いられるポートである。当該接続ポート925は、例えば、USB(ユニバーサルシリアルバス)ポート、IEEE1394ポート、またはSCSI(小型計算機システムインターフェイス)ポートであってもよい。当該接続ポート925は、RS―232Cポート、光オーディオ端子、HDMI(高精細度マルチメディアインターフェイス(登録商標))ポートなどであってもよい。当該接続ポート925に外部接続端末927が接続されることにより、当該情報処理装置900と当該外部接続端末927間の各種データのやり取りが可能になる。
当該通信ユニット929は、例えば、通信ネットワークNWに接続するための通信装置を含む通信インターフェイスである。当該通信ユニット929は、例えば、有線または無線のローカルエリアネットワーク(LAN)、Bluetooth(登録商標)、または、無線USB(WUSB)用の通信カードであってもよい。
当該通信ユニット929は、例えば、光通信用のルータ、ADSL(非対称デジタル加入者線)用のルータ、または、各種通信用のモデムであってもよい。例えば、当該通信ユニット929は、TCP/IP等の所定のプロトコルを用いて、インターネットにおける信号の送受信や、他の通信装置との信号の送受信を行う。当該通信ユニット929が接続する当該通信ネットワークNWは、有線接続または無線接続により確立されたネットワークである。当該通信ネットワークNWは、例えば、インターネット、家庭内LAN、赤外線通信、電波通信、または衛星通信である。
当該撮像装置(図示せず)は、例えば、CCD(電荷結合デバイス)やCMOS(相補型金属酸化膜半導体)などの撮像素子と、当該撮像素子上の被写体像の結像を制御するためのレンズなど各種部材を用いて現実空間を撮像し、撮像画像を生成する装置である。当該撮像装置は、静止画を撮像しても、動画を撮像してもよい。
以上、本開示のライブストリーミングシステム1について、実施形態を参照しながら説明した。上述の実施態様は、単に説明のために記載されたものである。むしろ、実施態様の上述した構成要素や処理を多様に組み合わせ、さまざまな変更がなされ得ることは、当業者であれば容易に想到し得ることであり、これらも本開示の技術的範囲に包含される。
本明細書に記載された工程、特にフローチャートやフローチャートを用いて説明された工程は、工程を構成する工程の一部の省略、工程を構成する工程に明示的に含まれない工程の追加、及び(または)工程順序の並べ替えが可能である。このような省略、追加、並べ替えの対象となった工程も、本開示の要旨を逸脱しない限り、本開示の範囲に含まれる。
一部の実施態様において、当該サーバ10が実行する機能の少なくとも一部は、当該サーバ10以外が実行してもよく、例えば、当該ユーザ端末20または30が実行するようにしてもよい。一部の実施態様において、当該ユーザ端末20または30が実行する機能の少なくとも一部を、当該ユーザ端末20または30以外が実行してもよく、例えば、当該サーバ10が実行するようにしてもよい。一部の実施態様において、フレーム画像のレンダリングは、視聴者、サーバ、ライブストリーマー等の当該ユーザ端末が実行するようにしてもよい。
さらに、上記実施態様で説明したシステムまたは方法は、固体記憶装置、光ディスク記憶装置、磁気ディスク記憶装置などの非一時的なコンピュータ可読ストレージ装置、またはコンピュータプログラム製品などで提供されてもよい。あるいは、プログラムは、インターネットを介してサーバからダウンロードされるものとしてもよい。
以上、本開示の技術的内容及び特徴を説明したが、本開示の属する技術分野において通常の知識を有する者であれば、本開示の教示及び開示から逸脱することなく、なお多くの変形及び修正を行うことができる。したがって、本開示の範囲は、既に開示された実施態様に限定されず、本開示から逸脱しない別の変形や修正を含む、後付の特許請求の範囲に含まれる範囲である。