以下、本発明の実施形態を図面に基づいて説明する。
(1.第1実施形態)
始めに、図1等を参照して、本発明の第1実施形態の通信システムS1の構成及び動作概要について説明する。図1は、第1の実施形態の通信システムS1の概要構成例を示す図である。図1に示すように、通信システムS1は、カメラ1、マイクロフォン2、エンコードサーバ3、配信サーバ4、及びクライアント端末5を含んで構成される。カメラ1は、本発明の撮影手段の一例である。エンコードサーバ3は、本発明の情報処理装置の一例である。配信サーバ4は、本発明の配信装置の一例である。クライアント端末5は、本発明の端末装置の一例である。カメラ1及びマイクロフォン2は、それぞれ、例えば通信ケーブルを介してエンコードサーバ3に接続される。なお、カメラ1及びマイクロフォン2は、それぞれ、無線によりエンコードサーバ3に接続されてもよい。エンコードサーバ3、配信サーバ4、及びクライアント端末5は、ネットワークNWに接続される。ネットワークNWは、例えば、インターネット等により構成される。なお、配信サーバ4は、ネットワークNWを介してクライアント端末5からの要求を受け、この要求に応じて応答するWebサーバの機能を有する。
カメラ1は、撮影者の指示に従って被写体を撮影し、その動画データを、通信ケーブルを介してエンコードサーバ3へ送信する。マイクロフォン2は、撮影者の指示に従って被写体の周囲の音声を集音し、その音声データを、通信ケーブルを介してエンコードサーバ3へ送信する。カメラ1により撮影された動画データを、以下、「オリジナル動画データ」という。オリジナル動画データの一例として、例えばパノラマ動画データがある。パノラマ動画データは、例えば高解像度のカメラ1で、且つ広範囲を撮影可能なレンズを搭載するカメラ1により被写体が撮影された動画データである。広範囲を撮影可能なレンズには、ワイドレンズ、魚眼レンズ、360度レンズ等がある。なお、カメラ1により撮影されたオリジナル動画データは、撮影者の端末を介してエンコードサーバ3に送信されてもよい。
エンコードサーバ3は、カメラ1からのオリジナル動画データを、通信ケーブルを介して取得する。また、エンコードサーバ3は、マイクロフォン2からの音声データを、通信ケーブルを介して取得する。また、エンコードサーバ3は、カメラ1からのオリジナル動画データに基づいて、解像度の異なる複数の動画データを生成する。つまり、解像度に応じた複数のレイヤごとに動画データが生成される。例えば、1つのオリジナル動画データから、低解像度の動画データ、中解像度の動画データ、及び高解像度の動画データが生成される。エンコードサーバ3は、中解像度の動画データ、及び高解像度の動画データを生成する際には、オリジナル動画データを構成する画像フレームの中の1画素以上を含むクリッピング領域(x,y,w,h)を決定する。クリッピング領域は、本発明の特定画素領域の一例である。クリッピング領域は、オリジナル動画データを構成する画像フレームからクリップされる範囲である。言い換えれば、クリッピング領域は、画像フレームから切り出される範囲である。この範囲は、例えば、X座標(x)、Y座標(y)、幅(w)及び高さ(h)により規定される。ここで、X座標は、例えば、オリジナル動画データを構成する画像フレームの左上の頂点の横方向の座標である。Y座標は、例えば、オリジナル動画データを構成する画像フレームの左上の頂点の縦方向の座標である。幅(w)及び高さ(h)は、オリジナル動画データを構成する画像フレームの横の長さ及び縦の長さである。そして、エンコードサーバ3は、上記クリッピング領域に対応する中解像度の動画データ、及び高解像度の動画データを、それぞれ生成する。なお、低解像度の動画データは、第1の解像度の第1の動画データの一例である。中解像度の動画データ、または高解像度の動画データは、第1の解像度より高い第2の解像度の第2の動画データの一例である。低解像度のレイヤを、以下、「レイヤ1」という。レイヤ1は最下位層である。中解像度のレイヤを、以下、「レイヤ2」という。高解像度のレイヤを、以下、「レイヤ3」という。本実施形態では、レイヤ1からレイヤ3までの3つのレイヤを例にとっているが、これに限定されるものではない。さらに、エンコードサーバ3は、生成した各レイヤの動画データのうち、所定のレイヤの動画データを構成する画像フレームの領域を複数の分割領域に分割する。例えば、レイヤ2またはレイヤ3の動画データを構成する画像フレームの領域が複数の分割領域に分割され、複数の分割領域に対応する複数の分割動画データが生成される。なお、画像フレーム中の分割領域で囲まれるフレームを、以下、「分割フレーム」という。
そして、エンコードサーバ3は、エンコードサーバ3と配信サーバ4との間のネットワークNWの帯域幅(bps)に応じて、生成されたレイヤ1の動画データと、生成されたレイヤ2またはレイヤ3の動画データと、上記クリッピング領域を示すデータとを、配信サーバ4へアップロードするアップロード対象として決定する。なお、アップロード対象として分割動画データが決定される場合もある。ここで、ネットワークNWの帯域幅とは、ネットワークNWで伝送可能なビットレートを意味する。ネットワークNWで伝送可能なビットレートとは、ネットワークNWの伝送路容量である。エンコードサーバ3は、アップロード対象として決定された動画データ、及び上記クリッピング領域を示すデータ等を、ネットワークNWを介して配信サーバ4へアップロードする。なお、エンコードサーバ3は、マイクロフォン2からの音声データを取得した場合、取得した音声データを動画データとともに配信サーバ4へアップロードする。
配信サーバ4は、エンコードサーバ3からアップロードされた動画データ、音声データ、及びクリッピング領域を示すデータを記憶する。アップロードされた分割動画データが記憶される場合もある。そして、配信サーバ4は、例えばクライアント端末5からのコンテンツの要求に応じて、例えば、動画データを含むコンテンツをクライアント端末5へ配信する。なお、コンテンツは、分割動画データが含まれる場合もある。また、コンテンツは、アップロードされた音声データを含んでもよい。コンテンツの配信は、例えば、ネットワークNWを介してストリーミングで行われる。クライアント端末5は、配信サーバ4から配信されたコンテンツを受信する。
また、配信サーバ4は、例えばクライアント端末5からのカメラワークデータのリクエストに応じて、コンテンツのカメラワークデータをクライアント端末5へ送信する。カメラワークデータは、仮想スクリーンに表れる動画に対して、二次元平面または三次元仮想空間における仮想カメラの位置または仮想カメラの向きと、画角(視野範囲)と、仮想カメラの位置または仮想カメラの向きが指定された時間とが対応付けられたデータである。なお、三次元仮想空間は、例えば、コンピュータを用いて表示可能な仮想的な三次元空間を示す。ここで、本実施形態において、仮想カメラとは、二次元平面または三次元仮想空間における仮想スクリーンに表れる動画に対して仮想的に設定された視点をいう。カメラワークデータによれば、二次元平面または三次元仮想空間における仮想スクリーンに表れる動画の全部または一部を仮想的に撮影する仮想カメラの動きを規定することができる。そして、カメラワークデータにより動画における表示範囲が特定される。この表示範囲は、1画像フレームのうち表示画面に描画される描画領域に相当する。言い換えれば、表示範囲は、画像フレームから切り出される範囲である。また、仮想カメラの動きは、疑似的なカメラワーク(以下、「疑似カメラワーク」という)により制御される。つまり、疑似カメラワークにより、動画に対する仮想カメラの向きや視界の広さなどが決定される。本実施形態のカメラワークデータによれば、疑似カメラワークを再現することができる。また、1つのカメラワークデータは、例えば、動画データの再生開始からの再生終了までの再生時間に対応するとは限らない。つまり、1つのカメラワークデータは、再生時間における一部の時間範囲に対応する場合もある。クライアント端末5は、例えば、ストリーミングでコンテンツを受信しながら、取得したカメラワークデータに応じた範囲内の動画を表示画面に表示する。
エンコードサーバ3は、図1に示すように、制御部31、記憶部32、及びインターフェース部33,34等を備えて構成される。これらの構成要素は、バス35に接続されている。制御部31は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。制御部31は、本発明の取得手段、第1生成手段、第2生成手段、第1決定手段、第2決定手段、第3決定手段、判定手段、及びアップロード手段の一例である。記憶部32は、例えば、例えばハードディスクドライブ(HDD)により構成される。記憶部32には、OS(Operating System)、及びサーバプログラム等が記憶されている。制御部31は、サーバプログラムを実行することで上述する処理を行う。
配信サーバ4は、図1に示すように、制御部41、記憶部42、及びインターフェース部43等を備えて構成される。これらの構成要素は、バス44に接続されている。制御部41は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。記憶部42は、例えば、例えばハードディスクドライブにより構成される。記憶部42には、OS、及びサーバプログラム等が記憶されている。記憶部42には、クライアント端末5からの要求に応じて、クライアント端末5へ送信されるWebページのデータが記憶される。さらに、記憶部42には、動画データ記憶領域42a、音声データ記憶領域42b、及びワークファイル記憶領域42cが設けられている。
動画データ記憶領域42aには、エンコードサーバ3からアップロードされた複数の動画データ、及び分割動画データが記憶される。音声データ記憶領域42bには、エンコードサーバ3からアップロードされた音声データが記憶される。ワークファイル記憶領域42cには、ワークファイルがコンテンツごとに対応付けられて記憶される。ワークファイルには、例えば、コンテンツのタイトル、疑似カメラワークの特徴を示す情報、及びカメラワークデータ等が格納される。疑似カメラワークの特徴を示す情報には、例えば疑似カメラワークにより表示画面に表示される被写体やシーンの名称や説明文等が含まれる。コンテンツのタイトル及び疑似カメラワークの特徴を示す情報は、カメラワークデータの検索に用いられる。なお、ワークファイルには、コンテンツを識別するコンテンツIDが含まれてもよい。ワークファイル記憶領域42cに記憶されるワークファイルには、例えば、クライアント端末5からアップロードされたワークファイルも含まれる。なお、1つのコンテンツには、複数のワークファイルが対応付けられる場合もある。例えば、あるコンテンツに対して、複数のユーザそれぞれにより行われた疑似カメラワークに対応するカメラワークデータが対応付けられる。
クライアント端末5は、図1に示すように、制御部51、記憶部52、ビデオRAM53、映像制御部54、操作処理部55、音声制御部56、及びインターフェース部57等を備えて構成される。これらの構成要素は、バス58に接続されている。映像制御部54には、ディスプレイを備える表示部54aが接続される。操作処理部55には、操作部55aが接続される。操作部55aには、例えば、マウス、キーボード、リモコン等がある。表示部54aと操作部55aとを兼ねるタッチパネルが適用されてもよい。制御部51は、ユーザによる操作部55aからの操作指示を、操作処理部55を介して受け付ける。ユーザは、操作部55aを用いて、上述した疑似カメラワークの操作を行うことができる。音声制御部56には、スピーカ56aが接続される。インターフェース部57は、ネットワークNWに接続される。制御部51は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。制御部51は、本発明の受信手段、及び描画手段の一例である。記憶部52は、例えば、ハードディスクドライブ(HDD)により構成される。記憶部52には、OS、及びプレイヤーソフトウェア等が記憶されている。プレイヤーソフトウェアは、コンテンツを再生するためのプログラムである。
制御部51は、プレイヤーソフトウェアを実行することでコンテンツを再生するプレイヤーとして機能する。制御部51はプレイヤーの機能により、配信サーバ4からストリーミングで配信されたコンテンツを順次取得し、コンテンツを再生させる。また、プレイヤーの機能により、ディスプレイには、動画を表示する表示画面が表示される。制御部51におけるRAMにはバッファメモリが設けられている。バッファメモリには、例えば配信サーバ4から配信されたコンテンツに含まれる動画データ等が一時的に保持される。また、バッファメモリには、例えば配信サーバ4から配信されたカメラワークデータが一時的に保持される。制御部51は、バッファメモリからビデオRAM53へ動画データを出力する。ビデオRAM53には、描画データを格納するフレームバッファがRAMに設けられている。映像制御部54は、制御部51からの制御信号に従って、フレームバッファに書き込まれた描画データを表示画面に描画することで表示させる。また、例えば配信サーバ4からバッファメモリに保持されたコンテンツに音声データが含まれる場合がある。この場合、制御部51は、バッファメモリから音声データを再生して音声制御部56へ出力する。音声制御部56は、音声データからアナログ音声信号を生成し、生成したアナログ音声信号をスピーカ56aへ出力する。
次に、図2を参照して、エンコードサーバ3が配信サーバ4へ動画データ及び音声データをアップロードするときの動作について説明する。図2(A)は、エンコードサーバ3の制御部31またはCPUにより実行されるアップロード処理を示すフローチャートである。図2(B)は、エンコードサーバ3の制御部31またはCPUにより実行されるアップロードストリーム生成処理の詳細を示すフローチャートである。図3は、エンコードサーバ3の制御部31またはCPUにより実行されるアップロードストリーム決定処理の詳細を示すフローチャートである。図2(A)に示す処理は、例えば、カメラ2により撮影されたオリジナル動画データの取得開始指示があった場合に開始される。図2(A)に示す処理が開始されると、エンコードサーバ3の制御部31は、カメラ2により撮影されたオリジナル動画データ、及びマイクロフォン2により集音された音声データの取得を開始する。
図2(A)に示す処理が開始されると、制御部31は、アップロードストリーム生成処理を開始する(ステップS1)。アップロードストリーム生成処理は、複数のレイヤごとにアップロード対象の動画データストリーム、及び後述するクリップ領域データストリームを生成する生成処理である。アップロードストリーム生成処理は、例えばOSのマルチタスクにより、アップロード処理におけるステップS2以降の処理と並列して実行される。なお、図2(B)の例では、アップロードストリーム生成処理により、音声データストリームについても生成される。
図2(B)に示すアップロードストリーム生成処理では、制御部31は、カメラ1から新たな画像フレームを取得したか否かを判定する(ステップS11)。カメラ1から新たな画像フレームを取得したと判定された場合(ステップS11:YES)、ステップS12へ進む。一方、カメラ1から新たな画像フレームを取得していないと判定された場合(ステップS11:NO)、ステップS19へ進む。ステップS12では、制御部31は、ステップS11で取得した画像フレームの中の1画素以上を含むクリッピング領域を決定する。例えばカメラ1の撮影画面の中心、或いはカメラ1で撮影されたステージの中心等を含む領域が、クリッピング領域として予め設定される。言い換えれば、視聴者により最も注目されると推定される領域が予め設定される。
或いは、撮影者が、映像に登場する話し手や歌い手等を中心とする領域をクリッピング領域として指定してもよい。例えば、撮影者は、例えばカメラ1を持ち、被写体に対する距離やアングルを適宜変更しながらクリッピング領域をカメラ1から指定する。撮影者により指定されたクリッピング領域を示す情報は、カメラ1からエンコードサーバ3へ送信される。そして、制御部31は、撮影者による指示に従って指定されたクリッピング領域を決定する。
或いは、カメラ1により撮影されたオリジナル動画データが撮影者の端末を介してエンコードサーバ3に送信される場合がある。この場合、撮影者が、端末の表示画面に表示された動画に対して、上述した疑似カメラワークの操作を行うことで特定される表示範囲をクリッピング領域として指定する。撮影者により指定されたクリッピング領域を示すデータは、撮影者の端末からエンコードサーバ3へ送信される。そして、制御部31は、撮影者により指定されたクリッピング領域を決定する。
或いは、制御部31は、例えば視聴者の上記動画に対する現在の視聴領域を示す情報を収集し集計処理することで、視聴者により注目されている領域をクリッピング領域として決定してもよい。例えば、オリジナル動画における複数の部分領域ごとに集計した表示回数に基づいてクリッピング領域が決定されるように構成するとよい。ここで、部分領域は、1画素以上を含む領域である。部分領域ごとの表示回数は、例えば、視聴者が注目する度合いを示す数値である。表示回数が高い部分領域を含むシーンほど、多くの視聴者が注目していると考えられる。表示回数が多い部分領域は、視聴者による疑似カメラワークの操作によって、よく表示される領域である。部分領域ごとの表示回数は、例えば配信サーバ4により決定される。例えば、配信サーバ4は、ワークファイル記憶領域42cに記憶される複数のカメラワークデータそれぞれが示す表示範囲に基づいて、上記オリジナル動画データを構成する複数の画像フレームそれぞれにおける部分領域ごとに表示回数を決定する。つまり、表示範囲の重なりに応じて、部分領域ごとの表示回数が算出される。エンコードサーバ3の制御部31は、部分領域ごとの表示回数を示す表示回数情報を、ネットワークNWを介して配信サーバ4から取得する。そして、制御部31は、エンコードサーバ3から取得した表示回数情報に基づいて、例えば表示回数が閾値より多い上位の部分領域により構成される領域を、クリッピング領域として決定する。
図4(A)は、オリジナル動画データを構成する画像フレーム上のクリッピング領域を示す図である。図4(A)に示すようなクリッピング領域Rの位置及びサイズ(面積)は、例えば撮影者による疑似カメラワークの操作に応じて変化する。
次いで、制御部31は、ステップS11で取得した画像フレームに基づいて、レイヤ1の画像フレームを生成する(ステップS13)。例えば、制御部31は、ステップS11で取得した画像フレームのピクセル数を例えば1/16にリサイズしてレイヤ1の画像フレームを生成する。次いで、制御部13は、ステップS13で生成したレイヤ1の画像フレームを、レイヤ1に対応する動画データストリームに追加して例えば記憶部32に記憶する(ステップS14)。ここで、動画データストリームは、ストリーミングで配信可能なデータ例である。動画データストリームには、1以上の動画データブロックを含む。動画データブロックは、例えば、動画データの先頭位置から終了位置までが所定の時間範囲で区切られたデータである。1つの動画データブロックには、例えば、複数の画像フレームが含まれることになる。なお、ステップS14の処理は、画像フレームが取得される度に行われるので、動画データストリームには、動画データを構成する画像フレームが時系列で追加されていくことになる。つまり、画像フレームが追加される処理過程においてレイヤ1の動画データが生成される。なお、この処理過程において、制御部31は、動画データをエンコードしてもよい。例えば、動画データは、MPEG等の所定の圧縮形式でエンコードされる。
次いで、制御部31は、ステップS11で取得した画像フレームを、ステップS12で決定したクリッピング領域でクリップする(ステップS15)。つまり、画像フレームからクリッピング領域の範囲が切り出される。次いで、制御部31は、ステップS15でクリップした画像フレームに基づいて、レイヤ1以外のレイヤの画像フレームを生成する(ステップS16)。例えば、制御部31は、クリップした画像フレームのピクセル数をレイヤ1の画像フレームのピクセス数と同等になるようにリサイズしてレイヤ2の画像フレームを生成する。また、制御部31は、クリップした画像フレームの領域を複数の分割領域に分割する。そして、制御部31は、各分割フレームのピクセル数をレイヤ1の画像フレームのピクセス数と同等になるようにリサイズしてレイヤ3の画像フレームを生成する。なお、レイヤ2の画像フレームの領域についても分割してもよい。
図4(B)は、各レイヤの1画像フレームを示す図である。図4(B)の例では、レイヤ1の1画像フレームあたりのピクセル数、及びレイヤ2の1画像フレームあたりのピクセル数は、それぞれ、1M(メガ)ピクセルである。また、レイヤ3の1画像フレームあたりのピクセル数は、4Mピクセルである。そして、図4(B)の例では、レイヤ3の1画像フレームの領域は4等分に分割されている。つまり、レイヤ3の1画像フレームから、パート1から4までの4つの分割フレームが得られる。このように、図4(B)の例では、レイヤ3それぞれの分割フレームのピクセル数は、レイヤ1の画像フレームのピクセル数と同一になっている。なお、レイヤ1の画像フレームについても、分割されるように構成してもよい。また、図4(B)の例では、レイヤ3の画像フレームが格子状に分割されるように構成したが、その他の形状に分割されてもよい。また、図4(B)の例では、レイヤ3における画像フレーム全体の面積が均等になるように分割されているが、不均等になるように分割されてもよい。
次いで、制御部13は、ステップS16で生成したレイヤ1以外のレイヤの画像フレームを、レイヤ1以外のレイヤに対応する動画データストリームに追加して例えば記憶部32に記憶する(ステップS17)。例えば、制御部31は、レイヤ2の画像フレームを、レイヤ2に対応する動画データストリームに追加して例えば記憶部32に記憶する。更に、制御部31は、レイヤ3のパートごとの分割フレームを、レイヤ3に対応するパートごとの動画データストリームに追加して例えば記憶部32に記憶する。なお、レイヤ3のパートごとの動画データブロックには、各パートに対応する複数の分割フレームが含まれることになる。この場合、動画データストリームには、分割動画データを構成する分割フレームが時系列で追加されていくことになる。つまり、分割フレームが追加される処理過程においてレイヤ3の各パートの分割動画データが生成される。なお、この処理過程において、制御部31は、分割動画データをエンコードしてもよい。
次いで、制御部31は、画像フレームごとのクリッピング領域を示すデータをクリップ領域データストリームに追加して例えば記憶部32に記憶する(ステップS18)。このクリッピング領域は、ステップS12で決定されたクリッピング領域である。次いで、制御部31は、マイクロフォン2から取得された音声データを、音声データストリームに追加して例えば記憶部12記憶し(ステップS19)、ステップS11に戻る。なお、音声データストリームに含まれる音声データが所定の圧縮形式でエンコードされてもよい。ステップS11に戻ると、制御部11は、直前のステップS12〜S18で処理された画像フレームの後に続く画像フレームを取得したか否かを判定することになる。
次いで、制御部31は、アップロードストリーム決定処理を行う(ステップS2)。アップロードストリーム決定処理は、実行中のアップロードストリーム生成処理において記憶される複数のストリームデータのうち、複数のレイヤごとにアップロード対象の動画データストリーム、及びクリップ領域データストリームを決定する決定処理である。言い換えれば、アップロードストリーム決定処理は、クライアント端末5へ配信対象となる動画データストリーム及びクリップ領域データストリームを決定する処理である。なお、図3の例では、アップロードストリーム決定処理により、アップロード対象の音声データストリームについても決定される。
図3に示すアップロードストリーム決定処理では、制御部31は、エンコードサーバ3と配信サーバ4との間のネットワークNWの帯域幅を取得する(ステップS21)。つまり、データストリームの決定処理中のネットワークNWの帯域幅を取得する。例えば、制御部31は、データストリームを配信サーバ4へアップロードしながら現在のアップロード速度を計測することでネットワークNWの帯域幅を取得する。
次いで、制御部31は、アップロードストリーム生成処理において記憶されたクリップ領域データストリーム、及び音声データストリームをアップロード対象として決定する(ステップS22)。次いで、制御部31は、アップロードストリーム生成処理において記憶された動画データストリームのうち、最下位層であるレイヤ1に対応する動画データストリームをアップロード対象として決定する(ステップS23)。レイヤ1に対応する動画データストリームは、第1のデータストリームの一例である。一方、レイヤ2に対応する動画データストリームとレイヤ3に対応する動画データストリームは、それぞれ、第2のデータストリームの一例である。
次いで、制御部31は、規定のクライアント端末の描画性能を示す値を、例えば記憶部32から取得する(ステップS24)。ここで、規定のクライアント端末とは、例えば平均的な性能を有するクライアント端末である。また、描画性能は、表示画面に単位時間あたり何ピクセル描画できるかを示すレンダリング能力である。言い換えれば、描画性能は、フレームバッファが1表示画面あたり何ピクセル分のデータをバッファリングできるかを示す。
次いで、制御部31は、ステップS24で取得した描画性能を示す値に基づいて、描画対象とするレイヤを決定する(ステップS25)。つまり、描画対象となるレイヤの範囲が決定される。なお、ステップS25の決定対象となるレイヤからレイヤ1は除かれる。例えば、規定のクライアント端末の描画性能を示す値が、2M(pixels/frame)であるとする。この場合、図4(B)の例では、レイヤ1及びレイヤ2の画像フレームは、1画像フレーム全体を描画できる。一方、レイヤ3の画像フレームは、画像フレームの1/2しか描画できない。そのため、この場合、上記ステップS25では、描画対象とするレイヤとして、レイヤ2が決定される。また、例えば、規定のクライアント端末の描画性能を示す値が、4M(pixels/frame)であるとする。この場合、図4(B)の例では、レイヤ1〜3の画像フレームは、1画像フレーム全体を描画できる。そのため、この場合、上記ステップS25では、描画対象とするレイヤとして、レイヤ2及びレイヤ3が決定される。
次いで、制御部31は、ステップS21で取得したネットワークNWの帯域幅から、レイヤ1に対応する動画データストリームのビットレートを引いた差分ビットレートを算出する(ステップS26)。つまり、ネットワークNWの帯域幅から、動画データストリームのビットレートが減算された差分ビットレートが算出される。ここで、差分ビットレートは、ネットワークNWの帯域幅と、レイヤ1に対応する動画データストリームを配信サーバ4へアップロードするために消費する帯域との差である。なお、動画データストリームのビットレートは、例えば動画データストリームに含まれる動画データブロックごとに算出されるビットレートの平均である。
次いで、制御部31は、ステップS25で決定したレイヤに対応する動画データストリームのビットレートと、ステップS26で算出した差分ビットレートとに基づいて、最適の動画データストリームを決定する(ステップS27))。例えば、ステップS25で決定されたレイヤごとに、「動画データストリームのビットレート≦差分ビットレート」の条件を満たすように、動画データストリームの中から動画データブロックが決定される。つまり、動画データストリームのビットレートが、差分ビットレート以下になるように、動画データブロックが決定される。例えば、アップロードストリーム生成処理において記憶された動画データストリームのうちレイヤ2に対応する動画データストリームのビットレートが、差分ビットレート以下である場合、この動画データストリームが決定される。また、例えば、レイヤ3のパート1〜パート4における動画データストリームのビットストリームの合計が差分ビットレートを超えるとする。この場合、例えば、レイヤ3のパート1〜パート3における動画データストリームのビットストリームの合計が差分ビットレート以下の場合、パート1〜パート3における動画データストリームが決定される。つまり、この場合、レイヤ3の画像フレームを構成する4つの分割フレームの中で、3つの分割フレームそれぞれに対応する動画データストリームが決定される。
次いで、制御部31は、ステップS25で決定したレイヤに対応する動画データストリームにおける画像フレームの描画率をレイヤごとに算出する(ステップS28)。ここで、画像フレームの描画率とは、上記クリッピング領域に占める画像フレームの割合をいう。次いで、制御部31は、ステップS28で算出した描画率が所定値以上のレイヤがあるか否かを判定する(ステップS29)。ここで、所定値は例えば70%程度に設定される。所定値を70%程度に設定すれば、高画質の動画データを提供することができる。例えば、ステップS27でレイヤ2に対応する動画データストリームが決定された場合、このレイヤ2における画像フレームの描画率は100%である。そのため、ステップS29で描画率が所定値以上のレイヤがあると判定される。また、ステップS27で、レイヤ3のパート1〜パート3に対応する動画データストリームが決定された場合、このレイヤ3における画像フレームの描画率は75%である。そのため、ステップS29描画率が所定値以上のレイヤがあると判定される。描画率が所定値以上のレイヤがあると判定された場合(ステップS29:YES)、ステップS30へ進む。一方、描画率が所定値以上のレイヤがないと判定された場合(ステップS29:NO)、ステップS31へ進む。
ステップS30では、制御部31は、描画率が所定値以上のレイヤの中で、画質が最も高いレイヤに対応する最適の動画データストリームをアップロード対象として決定し、図2(A)に示す処理に戻る。例えば、レイヤ1〜レイヤ3の中で、画質が最も高いレイヤはレイヤ3である。なお、描画率が所定値以上のレイヤが複数ある場合、複数のレイヤの中で画質が最も高いレイヤに対応する最適の動画データストリームがアップロード対象として決定される。一方、ステップS31では、制御部31は、ステップS25で決定したレイヤのうち、描画率が最も高いレイヤに対応する最適の動画データストリームをアップロード対象として決定し、図2(A)に示す処理に戻る。
図2(A)に示すステップS3では、制御部31は、ステップS2のアップロードストリーム決定処理によりアップロード対象として決定された動画データストリーム、クリップ領域データストリーム、及び音声データストリームを配信サーバ4へアップロードし、ステップS4へ進む。このアップロードは、例えば、エンコードサーバ3から配信サーバ4へのストリーミング配信により行われる。これにより、レイヤ1に対応する動画データストリーム、及びレイヤ2またはレイヤ3に対応する動画データストリーム等が、図2(A)に示す処理の終了まで配信サーバ4へストリーミングし続けられる。なお、上記例では、クリッピング領域を示すデータは、クリップ領域データストリームに含まれてストリーミングし続けられるように構成した。しかし、クリッピング領域を示すデータは、クリッピング領域が変化した時だけアップロードされるように構成してもよい。
ステップS4では、制御部31は、アップロード処理の終了指示があったか否かを判定する。終了指示がない場合(ステップS4:NO)、ステップS5へ進む。一方、例えば撮影者から終了指示があった場合(ステップS4:YES)、図2(A)に示すアップロード処理が終了する。なお、終了指示があった場合、図2(B)に示すアップロードストリーム生成処理も終了する。ステップS5では、制御部31は、撮影者による疑似カメラワークの操作があったか否かを判定する。例えば、上述したように、撮影者の疑似カメラワークの操作により指定されたクリッピング領域を示す情報は、撮影者の端末からエンコードサーバ3へ送信される。制御部31は、端末から受信した情報が示すクリッピング領域に変更があった場合、撮影者による疑似カメラワークの操作があったと判定する(ステップS5:YES)。この場合、制御部31は、ステップS2に戻り、アップロードストリーム決定処理をやり直す。一方、撮影者による疑似カメラワークの操作がないと判定された場合(ステップS5:NO)、ステップS6へ進む。
ステップS6では、制御部31は、計測している現在のアップロード速度に閾値以上の変化があったか否かを判定する。アップロード速度に閾値以上の変化があったと判定された場合(ステップS6:YES)、ステップS2に戻り、アップロードストリーム決定処理がやり直される。これは、ステップS26で算出される差分ビットレートの変化によりステップS27で決定される最適の動画データストリームが変わる場合があるためである。一方、アップロード速度に閾値以上の変化がないと判定された場合(ステップS6:NO)、ステップS3に戻る。
一方、配信サーバ4は、アップロードされた動画データストリーム、及びクリップ領域データストリーム、及び音声データストリームを取得して記憶する。
次に、図5を参照して、クライアント端末5が配信サーバ4からデータストリームを受信するときの動作について説明する。図5は、クライアント端末5の制御部51またはCPUにより実行される再生及び受信処理を示すフローチャートである。図5に示す処理は、例えば、ユーザによりデータストリームの受信開始指示があった場合に開始される。
図5に示す処理が開始されると、クライアント端末5の制御部51は、レイヤ1に対応する動画データストリーム、クリップ領域データストリーム、及び音声データストリームの受信処理を開始する(ステップS101)。この受信処理では、制御部51は、コンテンツを配信サーバ4へ要求する。配信サーバ4は、クライアント端末5からのコンテンツに応じて、レイヤ1に対応する動画データストリーム、クリップ領域データストリーム、及び音声データストリームをストリーミングでクライアント端末5へ配信する。これにより、疑似的なライブ配信を実現することができる。クライアント端末5の制御部51は、配信サーバ4から配信されたレイヤ1に対応する動画データストリーム、クリップ領域データストリーム、及び音声データストリームを受信してバッファメモリに一時的に保持させる。なお、クリッピング領域を示すデータは、クリッピング領域が変化した時だけクライアント端末5へ配信されるように構成してもよい。
ステップS102では、制御部51は、受信処理の終了指示があったか否かを判定する。終了指示がない場合(ステップS102:NO)、ステップS103へ進む。一方、例えばユーザから終了指示があった場合(ステップS102:YES)、図5に示す再生及び受信処理が終了する。
ステップS103では、制御部51は、ユーザから操作部55aを介して、疑似カメラワークの操作があったか否かを判定する。ここで、疑似カメラワークの具体的な操作として、例えば、ドラック操作、及びフリック操作がある。ドラック操作では、例えば、ユーザが表示画面をマウスによりドラックすることで表示範囲を移動させることができる。また、フリック操作では、例えば、ユーザがタッチパネル方式の表示画面上で指やペン等の接触物を素早くスライドすることで表示範囲を移動させることができる。また、疑似カメラワークの具体的な操作として、例えば、ユーザが操作部55aに設けられたボタンや画面上に表示されたボタン等を押すことにより、表示範囲を拡大したり縮小させたりする操作がある。この操作の場合、表示範囲の単位時間あたり変動量が大きくなりながら表示範囲が拡大又は縮小する変動が行われ、その後、単位時間あたり変動量が一定となって、表示範囲が変動する。ユーザがボタンを押すことをやめる操作を行わない限り、表示範囲が変動し、表示範囲の大きさが最大又は最少となった時点で、変動は停止する。なお、上述した操作は、あくまでも例示に過ぎず、その他の操作により疑似カメラワークが行われてもよい。そして、疑似カメラワークの操作があったと判定された場合(ステップS103:YES)、ステップS104へ進む。一方、疑似カメラワークの操作がないと判定された場合(ステップS103:NO)、ステップS105へ進む。
ステップS104では、制御部51は、ユーザにより疑似カメラワークの操作に従って変更されたカメラワークデータに従って動画の描画領域を変更し、ステップS105へ進む。ステップS105では、制御部51は、レイヤ1以外のレイヤに対応する動画データストリームが受信中であるか否かを判定する。つまり、例えば、レイヤ2に対応する動画データストリームと、レイヤ3に対応する動画データストリームの少なくとも一方の動画データストリームが受信中であるかが判定される。レイヤ1以外のレイヤに対応する動画データストリームが受信中であると判定された場合(ステップS105:YES)、ステップS106へ進む。一方、レイヤ1以外のレイヤに対応する動画データストリームが受信中でないと判定された場合(ステップS105:NO)、ステップS108へ進む。
ステップS106では、制御部51は、レイヤ1以外で受信中のレイヤに対応する動画データストリーム中の画像フレームまたは分割フレームが、動画の描画領域に含まれるか否かを判定する。レイヤ1以外で受信中のレイヤに対応する動画データストリーム中の画像フレームまたは分割フレームが、動画の描画領域に含まれないと判定された場合(ステップS106:NO)、ステップS107へ進む。ここで、動画の描画領域は、現在の再生位置における動画の描画領域である。図5の例では、受信中のレイヤ2に対応する動画データストリーム中の画像フレームと、受信中のレイヤ3に対応する動画データストリーム中の分割フレームのうち、少なくとも何れか一方が動画の描画領域に含まれないと判定された場合、ステップS107へ進む。受信中のレイヤ2に対応する動画データストリーム中の画像フレームと、受信中のレイヤ3に対応する動画データストリーム中の分割フレームの双方とも動画の描画領域に含まれると判定された場合(ステップS106:YES)、ステップS108へ進む。
ステップS107では、制御部51は、動画の描画領域に含まれないと判定された動画データストリームの受信を終了し、ステップS108へ進む。ステップS108では、制御部51は、動画の描画領域と、受信中のクリップ領域データストリームが示すクリッピング領域とが重なっているか否かを判定する。このクリッピング領域は、現在の再生位置におけるクリッピング領域である。動画の描画領域とクリッピング領域とが重なっていると判定された場合(ステップS108:YES)、ステップS109へ進む。なお、動画の描画領域とクリッピング領域の一部でも重なっていればよい。一方、動画の描画領域とクリッピング領域とが重なっていないと判定された場合(ステップS108:NO)、ステップS113へ進む。
ステップS109では、制御部51は、動画の描画領域と重なるレイヤ3の分割フレームを含む動画データストリームを所定数(例えば3つ)以上受信可能であるか否かを判定する。例えば、制御部51は、クライアント端末5と配信サーバ1との間のネットワークNWの帯域幅から、受信中のデータストリームのビットを引いた差分ビットレートを算出する。そして、制御部51は、レイヤ3に対応する所定数の動画データストリームのビットレートの総和が、差分ビットレート以下である場合、レイヤ3の分割フレームを含む動画データストリームを所定数以上受信可能であると判定する。動画データストリームを所定数以上受信可能であると判定された場合(ステップS109:YES)、ステップS110へ進む。一方、動画データストリームを所定数以上受信可能でないと判定された場合(ステップS109:NO)、ステップS111へ進む。
ステップS110では、制御部51は、レイヤ3に対応する所定数以上の動画データストリームの受信処理を開始し、ステップS113へ進む。この受信処理では、例えば、制御部51は、レイヤ3に対応する所定数以上の動画データストリームを配信サーバ4へ要求する。配信サーバ4は、要求されたレイヤ3に対応する動画データストリームをストリーミングでクライアント端末5へ配信する。クライアント端末5の制御部51は、配信サーバ4から配信されたレイヤ3に対応する動画データストリームを受信してバッファメモリに一時的に保持させる。
ステップS111では、動画の描画領域と重なるレイヤ2の画像フレームを含む動画データストリームを受信可能であるか否かを判定する。例えば、レイヤ2に対応する動画データストリームのビットレートが、上記差分ビットレート以下である場合、レイヤ2の画像フレームを含む動画データストリームを受信可能であると判定する。動画データストリームを受信可能であると判定された場合(ステップS111:YES)、ステップS112へ進む。一方、動画データストリームを受信可能でないと判定された場合(ステップS111:NO)、ステップS113へ進む。
ステップS112では、制御部51は、レイヤ2に対応する動画データストリームの受信処理を開始し、ステップS113へ進む。この受信処理では、例えば、制御部51は、レイヤ2に対応する動画データストリームを配信サーバ4へ要求する。配信サーバ4は、要求されたレイヤ2に対応する動画データストリームをストリーミングでクライアント端末5へ配信する。クライアント端末5の制御部51は、配信サーバ4から配信されたレイヤ2に対応する動画データストリームを受信してバッファメモリに一時的に保持させる。
ステップS113では、制御部51は、動画データストリームに対応する動画データの再生処理を実行し、ステップS102に戻る。この再生処理では、制御部51は、動画の描画領域と、受信済みの動画データストリームに含まれる画像フレームから最適な画像フレームを生成して表示画面に描画する。例えば、レイヤ3に対応する動画データストリームが受信されている場合、制御部51は、レイヤ3に対応する動画データストリームに含まれるレイヤ3の分割フレームをフレームバッファに書き込む。次いで、制御部51は、フレームバッファに書き込まれなかった領域に、レイヤ1に対応する動画データストリームに含まれるレイヤ1の画像フレームの一部を書き込む。そして、フレームバッファへの書き込みが完了すると、制御部51は、フレームバッファに書き込まれた最適な画像フレームを表示画面に描画することで動画を表示させる。つまり、動画の描画領域と、クリッピング領域とが重なっている場合に、低解像度の動画データとクリッピング領域に対応する高解像度の動画データに基づいて画像フレームが描画される。これにより、低解像度の動画データを構成する画像フレームにおいて例えばユーザが注目する領域に、高解像度の動画データを構成する分割フレームを表示させることができる。一方、例えば、レイヤ2に対応する動画データストリームが受信されている場合、制御部51は、レイヤ2に対応する動画データストリームに含まれるレイヤ2の画像フレームをフレームバッファに書き込む。次いで、制御部51は、フレームバッファに書き込まれなかった領域に、レイヤ1に対応する動画データストリームに含まれるレイヤ1の画像フレームの一部を書き込む。そして、フレームバッファへの書き込みが完了すると、制御部51は、フレームバッファに書き込まれた最適な画像フレームを表示画面に描画することで動画を表示させる。つまり、動画の描画領域と、クリッピング領域とが重なっている場合に、低解像度の動画データとクリッピング領域に対応する中解像度の動画データに基づいて画像フレームが描画される。これにより、低解像度の動画データを構成する画像フレームにおいて例えばユーザが注目する領域に、中解像度の動画データを構成する画像フレームを表示させることができる。なお、図示しないが、音声データストリームに対応する音声データの再生処理は、動画データの再生処理に同期して実行される。
以上説明したように、第1の実施形態によれば、エンコードサーバ3は、カメラ1により取得されたオリジナル動画データに基づいて低解像度の動画データを生成する。また、エンコードサーバ3は、オリジナル動画データを構成する画像フレームの中のクリッピング領域を決定し、決定したクリッピング領域に対応する中解像度及び高解像度の動画データを生成する。そして、エンコードサーバ3は、エンコードサーバ3と配信サーバ4との間のネットワークNWの帯域幅に応じて、低解像度の動画データ、及び中解像度または高解像度の動画データを、配信サーバ4へアップロードするアップロード対象として決定する。そして、エンコードサーバ3は、配信サーバ4へ、決定した動画データをアップロードするように構成した。そのため、エンコードサーバ3は、クライアント端末5へ動画データをライブ配信するために、配信サーバ4との間のネットワークNWの帯域幅に応じて、解像度の異なる動画データを配信サーバ4へ柔軟にアップロードすることができる。更に、第1の実施形態によれば、エンコードサーバ3は、オリジナル動画データからクリップするクリッピング領域を決定し、中解像度及び高解像度の動画データを生成する範囲を限定することで、アップロードするデータ量を削減することができる。
(2.第2の実施形態)
次に、図6等を参照して、本発明の第2実施形態の通信システムS2の構成及び動作概要について説明する。第1の実施形態の通信システムS1では、動画データがエンコードサーバ3から配信サーバ4を介してクライアント端末5へ配信されるように構成した。第2実施形態の通信システムS2では、動画データがエンコード配信サーバ3aからクライアント端末5へ配信されるように構成する。図6は、第2の実施形態の通信システムS2の概要構成例を示す図である。なお、第2実施形態の通信システムS2において、第1の実施形態の通信システムS1と同様の構成については同一の符号を付し、重複する説明を省略するものとする。
図6は、第2の実施形態の通信システムS2の概要構成例を示す図である。図6に示すように、通信システムS2は、カメラ1、マイクロフォン2、エンコード配信サーバ3a、転送サーバ4a、及びクライアント端末5を含んで構成される。エンコード配信サーバ3aは、本発明の情報処理装置の一例である。カメラ1及びマイクロフォン2は、それぞれ、例えば通信ケーブルを介してエンコード配信サーバ3aに接続される。エンコード配信サーバ3a、及び転送サーバ4aは、ネットワークNWに接続される。なお、転送サーバ4aは、ネットワークNWを介してクライアント端末5からの要求を受け、この要求に応じて応答するWebサーバの機能を有する。
エンコード配信サーバ3aは、カメラ1からのオリジナル動画データを、通信ケーブルを介して取得する。また、エンコード配信サーバ3aは、マイクロフォン2からの音声データを、通信ケーブルを介して取得する。また、エンコード配信サーバ3aは、エンコードサーバ3と同様に、カメラ1からのオリジナル動画データに基づいて、解像度の異なる複数の動画データを生成する。また、エンコード配信サーバ3aは、レイヤ2の動画データ、及びレイヤ3の動画データを生成する際には、エンコードサーバ3と同様に、オリジナル動画データを構成する画像フレームの中の1画素以上を含むクリッピング領域を決定する。そして、エンコードサーバ3は、上記クリッピング領域に対応する中解像度の動画データ、及び高解像度の動画データを、それぞれ生成する。なお、中解像度または高解像度の分割動画データが生成される場合もある。そして、エンコード配信サーバ3aは、クライアント端末5とエンコード配信サーバ3aとの間のネットワークNWの帯域幅に応じて、生成されたレイヤ1の動画データと、生成されたレイヤ2またはレイヤ3の動画データまたは分割動画データと、クリッピング領域を示すデータと、音声データとを、配信サーバ4へアップロードするアップロード対象として決定する。なお、アップロード対象として分割動画データが決定される場合もある。エンコード配信サーバ3aは、アップロード対象として決定された動画データ、クリッピング領域を示すデータ、及び音声データを記憶する。なお、アップロード対象として決定された分割動画データが記憶される場合もある。更に、エンコード配信サーバ3aは、例えば記憶した動画データ、分割動画データ、クリッピング領域を示すデータ、及び音声データそれぞれにアクセスするためのURL(Uniform Resource Locator)を、転送サーバ4aへ通知する。このURLには、例えば、エンコード配信サーバ3aのアドレス情報と、動画データ、分割動画データ、クリッピング領域を示すデータ、及び音声データそれぞれの記憶場所を示すパス名とが含まれる。アドレス情報は、エンコード配信サーバ3aのIPアドレスまたはドメイン名を示す。転送サーバ4aは、クライアント端末5からのコンテンツの要求に応じて、エンコード配信サーバ3aから通知されたURLをクライアント端末5へ送信する。これにより、クライアント端末5は、転送サーバ4aから取得したURLに従ってエンコード配信サーバ3aへアクセスしてコンテンツを要求する。この要求に応じて、エンコード配信サーバ3aは、例えば、動画データ、分割動画データ、クリッピング領域を示すデータ、及び音声データを、ネットワークNWを介してクライアント端末5へアップロードする。第2実施形態の通信システムS2におけるアップロードは、例えば、エンコード配信サーバ3aからクライアント端末5へのストリーミング配信により行われる。
また、エンコード配信サーバ3aは、エンコードサーバ3と同様、図6に示すように、制御部31、記憶部32、及びインターフェース部33、34等を備えて構成される。なお、上述したワークファイル記憶領域42cは、例えば、転送サーバ4aの記憶部に設けられる。ワークファイル記憶領域42cは、エンコード配信サーバ3aの記憶部32に設けられてもよい。また、上述した図2(A)に示すアップロード処理、図2(B)に示すアップロードストリーム生成処理、図3に示すアップロードストリーム決定処理は、エンコード配信サーバ3aに対しても適用される。この場合、図2(A)に示す処理は、クライアント端末5からのコンテンツの要求に応じて開始される。ただし、エンコード配信サーバ3aの制御部31によるステップS21では、エンコード配信サーバ3aとクライアント端末5との間のネットワークNWの帯域幅が取得される。この場合のステップS26では、エンコード配信サーバ3aとクライアント端末5との間のネットワークNWの帯域幅から、レイヤ1に対応する動画データストリームのビットレートを引いた差分ビットレートが算出され、ステップS27以降で用いられる。そして、この場合のステップS3では、エンコード配信サーバ3aの制御部31は、アップロード対象として決定された動画データストリーム、クリップ領域データストリーム、及び音声データストリームを、クライアント端末5から要求に応じて、クライアント端末5へストリーミングで配信することになる。なお、第2の実施形態においても、図5に示す再生及び受信処理は、クライアント端末5の制御部51またはCPUにより実行される。また、この場合のステップS6におけるアップロード速度は、エンコード配信サーバ3aがデータストリームをクライアント端末5へアップロードしながら計測する。
以上説明したように、第2の実施形態によれば、エンコード配信サーバ3aは、カメラ1により取得されたオリジナル動画データに基づいて低解像度の動画データを生成する。また、エンコード配信サーバ3aは、は、オリジナル動画データを構成する画像フレームの中のクリッピング領域を決定し、決定したクリッピング領域に対応する中解像度及び高解像度の動画データを生成する。そして、エンコード配信サーバ3aは、エンコード配信サーバ3aとクライアント端末5との間のネットワークNWの帯域幅に応じて、低解像度の動画データ、及び中解像度または高解像度の動画データをアップロード対象として決定する。そして、エンコード配信サーバ3aは、アップロード対象として決定した動画データをアップロードするように構成した。そのため、エンコード配信サーバ3aは、クライアント端末5へ動画データをライブ配信するために、クライアント端末5との間のネットワークNWの帯域幅に応じて、解像度の異なる動画データをクライアント端末5へ柔軟にアップロードすることができる。更に、第1の実施形態によれば、エンコード配信サーバ3aは、オリジナル動画データからクリップするクリッピング領域を決定し、中解像度及び高解像度の動画データを生成する範囲を限定することで、アップロードするデータ量を削減することができる。
なお、上記実施形態において、クライアント端末5は配信サーバ4またはエンコード配信サーバ3aからコンテンツを受信する構成を示した。しかし、ハイブリッド型またはピア型のピアツーピアネットワークにおいて、クライアント端末5が他のクライアント端末5からコンテンツを受信する場合に対しても本発明は適用できる。この場合、クライアント端末5が本発明の情報処理装置として機能する。