以下、本発明の実施形態を図面に基づいて説明する。
[1.通信システムSの構成及び動作概要]
始めに、図1等を参照して、本実施形態の通信システムの構成及び動作概要について説明する。図1は、本実施形態の通信システムSの概要構成例を示す図である。図1に示すように、通信システムSは、配信サーバ1、及び複数のクライアント2を含んで構成される。クライアント2は、本発明の端末装置の一例である。また、配信サーバ1とクライアント2とはネットワークNWを介して通信可能になっている。ネットワークNWは、例えば、インターネット等により構成される。
配信サーバ1は、例えばクライアント2からのコンテンツ、またはコンテンツのカメラワークデータのアップロードを受け付ける。配信サーバ1は、例えばクライアント2からのコンテンツ要求に応じて、コンテンツをクライアント2へ送信する。コンテンツは、動画データを含む。なお、コンテンツは、音声データを含んでもよい。コンテンツの送信は、例えば、ネットワークNWを介してストリーミング配信により行われる。クライアント2は、配信サーバ1からストリーミング配信されたコンテンツを受信する。
本実施形態では、動画データは、動画(以下、オリジナル動画)という)を構成する画像フレーム内で、表示手段により表示される表示範囲が、オリジナル動画の再生位置に応じて変化可能である。オリジナル動画は、本発明の第1動画の一例である。オリジナル動画には、例えば、カメラにより撮影された動画や編集により生成された動画等が含まれる。このような動画データの一例として、例えばパノラマ動画がある。パノラマ動画は、例えば高解像度のカメラで、且つ広範囲を撮影可能なレンズを搭載するカメラにより被写体が撮影された動画である。広範囲を撮影可能なレンズには、ワイドレンズ、魚眼レンズ、360度レンズ等がある。再生位置とは、動画データの再生開始からの経過時間である。また、1つのコンテンツには、撮影位置、カメラの種類、またはレンズの種類等が異なる複数のカメラそれぞれにより撮影された複数の動画データが含まれる場合もある。1つのコンテンツに含まれる複数の動画データの例として、複数のカメラにより同じ被写体が別の視点から同期して撮影された複数の動画データが挙げられる。また、別の例として、複数のカメラにより異なる被写体が同期して撮影された複数の動画データが挙げられる。例えば、ステージで歌唱する人物が撮影された動画データと、このステージの裏で待機する人物が撮影された動画データと、が挙げられる。また、動画データは、解像度の異なる複数の動画データであってもよい。なお、1つのカメラにより撮影された動画データであっても良い。
また、配信サーバ1は、例えばクライアント2からカメラワークデータのリクエストに応じて、コンテンツのカメラワークデータをクライアント2へ送信する。カメラワークデータは、仮想スクリーンに表れるオリジナル動画に対して、二次元平面または三次元仮想空間における仮想カメラの位置または仮想カメラの向きと、画角(視野範囲)と、仮想カメラの位置または仮想カメラの向きが指定された時間とが対応付けられたデータである。なお、三次元仮想空間は、例えば、コンピュータを用いて表示可能な仮想的な三次元空間を示す。ここで、本実施形態において、仮想カメラとは、二次元平面または三次元仮想空間における仮想スクリーンに表れるオリジナル動画に対して仮想的に設定された視点をいう。「仮想スクリーンに表れる」とは、例えば、仮想スクリーンに投影されることを意味する。カメラワークデータによれば、二次元平面または三次元仮想空間における仮想スクリーンに表れるオリジナル動画の全部または一部を仮想的に撮影する仮想カメラの動きを規定することができる。そして、カメラワークデータによりオリジナル動画における表示範囲が特定される。この表示範囲は、1画像フレームのうち表示画面に描画される描画領域に相当する。言い換えれば、表示範囲は、オリジナル動画を構成する画像フレームから切り出される範囲である。また、仮想カメラの動きは、上述した疑似的なカメラワーク(以下、「疑似カメラワーク」という)により制御される。つまり、疑似カメラワークにより、オリジナル動画に対する仮想カメラの向きや視界の広さなどが決定される。本実施形態のカメラワークデータによれば、疑似カメラワークを再現することができる。また、1つのカメラワークデータは、例えば、動画データの再生開始からの再生終了までの再生時間に対応するとは限らない。つまり、1つのカメラワークデータは、再生時間における一部の時間範囲に対応する場合もある。クライアント2は、例えば、ストリーミングでコンテンツを受信しながら、取得したカメラワークデータに従ってオリジナル動画内の所定の表示範囲に含まれる動画を表示画面に表示する。
配信サーバ1は、記憶装置3と接続可能になっている。記憶装置3は、例えばハードディスクドライブ(HDD)により構成される。記憶装置3は、配信サーバ1に備えられる。或いは、記憶装置3は、配信サーバ1とは異なるサーバに備えられてもよい。記憶装置3は、クライアント2からの要求に応じて、クライアント2へ送信されるWebページのデータが記憶される。さらに、記憶装置3には、動画データ記憶領域31a、音声データ記憶領域31b、及びワークファイル記憶領域31cが設けられている。
動画データ記憶領域31aには、複数の動画データが記憶される。動画データ記憶領域31aに記憶された動画データは、配信サーバ1にアクセス可能な複数のクライアント2間で共有することができる。音声データ記憶領域31bには、複数の音声データが記憶される。音声データ記憶領域31bに記憶された音声データは、配信サーバ1にアクセス可能な複数のクライアント間で共有することができる。
次に、ワークファイル記憶領域31cには、ワークファイルがコンテンツごとに対応付けられて記憶される。ワークファイルには、例えば、コンテンツのタイトル、疑似カメラワークの特徴を示す情報、及びカメラワークデータ等が格納される。ワークファイルには、例えば、このワークファイルを識別するワークIDが付与される。1つのコンテンツに動画データが複数含まれる場合、ワークファイルには、複数の動画データそれぞれに対応する疑似カメラワークの特徴を示す情報、及びカメラワークデータが含まれてもよい。疑似カメラワークの特徴を示す情報には、例えば疑似カメラワークにより表示画面に表示される被写体やシーンの名称や説明文等が含まれる。コンテンツのタイトル及び疑似カメラワークの特徴を示す情報は、カメラワークデータの検索に用いられる。なお、ワークファイルには、コンテンツを識別するコンテンツIDが含まれてもよい。ワークファイル記憶領域31cに記憶されるワークファイルには、例えば、クライアント2からアップロードされたワークファイルも含まれる。なお、1つのコンテンツには、複数のワークファイルが対応付けられる場合もある。例えば、あるコンテンツに対して、複数のユーザそれぞれにより行われた疑似カメラワークに対応するカメラワークデータが対応付けられる。
そして、配信サーバ1は、図1に示すように、制御部11及びインターフェース部12を備えて構成される。制御部11は、CPU、ROM、及びRAM等により構成される。制御部11は、コンテンツの送信又は受信制御、及びカメラワークデータの送信又は受信制御等を行う。
次に、クライアント2は、図1に示すように、制御部21、記憶部22、ビデオRAM23、映像制御部24、操作処理部25、音声制御部26、インターフェース部27、及びバス28等を備えて構成される。これらの構成要素は、バス28に接続されている。映像制御部24には、ディスプレイを備える表示部24aが接続される。操作処理部25には、操作部25aが接続される。操作部25aには、例えば、マウス、キーボード、リモコン等がある。表示部24aと操作部25aとを兼ねるタッチパネルが適用されてもよい。制御部21は、ユーザによる操作部25aからの操作指示を、操作処理部25を介して受け付ける。ユーザは、操作部25aを用いて、上述した疑似カメラワークの操作を行うことができる。音声制御部26には、スピーカ26aが接続される。インターフェース部27は、ネットワークNWに接続される。
制御部21は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。制御部21は、タイマー機能を備える。制御部21は、本発明の取得手段、特定手段、決定手段、及び制御手段の一例である。記憶部22は、例えば、ハードディスクドライブ(HDD)により構成される。記憶部22には、OS(Operating System)、及びプレイヤーソフトウェア等が記憶されている。プレイヤーソフトウェアは、コンテンツを再生するためのプログラムである。プレイヤーソフトウェアには、本発明のプログラムが含まれる。なお、プレイヤーソフトウェアは、例えば、ネットワークNWに接続された所定のサーバからダウンロードされるようにしてもよい。或いは、プレイヤーソフトウェアは、例えば、記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしてもよい。なお、HDDの代わりにフラッシュメモリーが用いられても良い。
制御部21は、プレイヤーソフトウェアを実行することでコンテンツを再生するプレイヤーとして機能する。制御部21はプレイヤーの機能により、配信サーバ1からストリーミング配信されたコンテンツを順次取得し、コンテンツを再生させる。また、制御部21はプレイヤーの機能により、コンテンツに含まれる動画データに対応する複数のカメラワークデータを配信サーバ1から取得する。また、プレイヤーの機能により、ディスプレイまたは、プレイヤーソフトウェアによりディスプレイに表れるウィンドウには、メイン画面とサムネイル画面の少なくとも何れか一方が表示される。メイン画面は、オリジナル動画を表示可能な表示画面である。メイン画面は、例えば表示部24aにおけるディスプレイの表示領域全体である。或いは、メイン画面は、ディスプレイの表示領域上に表れるウィンドウ画面である。一方、サムネイル画面は、カメラワークデータによりオリジナル動画から特定される表示範囲に含まれる動画(以下、「サブ動画」という)を表示可能な表示画面である。サブ動画は、例えば、カメラワークデータによりオリジナル動画から特定される表示範囲から切り出された動画の一部であってもよい。なお、サブ動画は、本発明の第2動画の一例である。例えば、サムネイル画面は、メイン画面上に重畳されて表示される。或いは、サムネイル画面は、画面分割により表示される。
図2(A)は、メイン画面、及びメイン画面上に重畳された複数のサムネイル画面の一例を示す図である。図2(A)の例では、1つのメイン画面MVと、6つのサムネイル画面SV1〜SV6とが表示されている。また、図2(A)の例では、サムネイル画面SV2とサムネイル画面SV3、サムネイル画面SV2とサムネイル画面SV6、及びサムネイル画面SV5とサムネイル画面SV6は、その一部領域が重なっている。メイン画面MVには、オリジナル動画が表示される。一方、サムネイル画面SV1〜SV6には、6つのカメラワークデータそれぞれによりオリジナル動画から特定された表示範囲に含まれるサブ動画が表示される。サブ動画は、カメラワークデータによりオリジナル動画から特定される位置に対応する座標位置に表示される。ここで、オリジナル動画から特定される位置は、例えば、オリジナル動画においてカメラワークデータにより特定される表示範囲の例えば中心位置である。座標位置は、メイン画面MVの2次元の座標(x,y)で示される。また、サムネイル画面SV1〜SV6に表示されているサブ動画の再生位置は同一になっている。なお、6つのカメラワークデータには、メイン画面MVに表示されているオリジナル動画とは異なるオリジナル動画における表示範囲を示すカメラワークデータが含まれる場合もある。また、サムネイル画面SV1〜SV6に表示されたサブ動画は、ユーザにより選択可能になっている。何れかのサムネイル画面SV1〜SV6がユーザにより操作部25aを介して選択された場合、サムネイル画面が例えばメイン画面MVと同じ大きさに広がることで、選択されたサブ動画が拡大表示される。図2(A)の例では、サブ動画を選択するためのカーソル(太枠)Kが、サムネイル画面SV5の縁に重なっている。このような状態で、ユーザが操作部25aにより選択指示を行うと、サブ動画が拡大表示されることになる。
図2(B)は、画面分割により表示された複数のサムネイル画面の一例を示す図である。図2(B)の例では、6つのサムネイル画面SV11〜SV16が表示されている。図2(B)の例では、6つのサムネイル画面SV11〜SV16が重ならないように表示画面Vが区切られて表示されている。サムネイル画面SV11〜SV16には、6つのカメラワークデータそれぞれによりオリジナル動画から特定された表示範囲に含まれるサブ動画が表示されている。なお、6つのカメラワークデータには、異なるオリジナル動画から特定される表示範囲を示すカメラワークデータが含まれる場合もある。また、サムネイル画面SV11〜SV16に表示されたサブ動画は、図2(A)と同様、ユーザにより選択可能になっている。何れかのサブ動画がユーザにより操作部25aを介して選択された場合、サムネイル画面が例えば表示画面Vと同じ大きさに広がることで、選択されたサブ動画が拡大表示される。
制御部21におけるRAMにはバッファメモリが設けられている。バッファメモリには、例えば配信サーバ1からストリーミング配信されたコンテンツに含まれる動画データ等が一時的に保持される。また、バッファメモリには、例えば配信サーバ1から配信されたカメラワークデータが一時的に保持される。制御部21は、バッファメモリからビデオRAM23へ動画データを出力する。ビデオRAM23には、メイン画面及びサムネイル画面の描画結果を格納するフレームバッファがRAMに設けられている。映像制御部24は、制御部21からの制御信号に従って、フレームバッファに書き込まれた画像データを表示画面に描画することで表示させる。例えば、制御部21は、ストリーミングで動画データを受信しながら、メイン画面MVにオリジナル動画を表示し、且つ、カメラワークデータに従ってサムネイル画面SV1〜SV6にサブ動画を表示させる。また、例えば配信サーバ1からバッファメモリに保持されたコンテンツに音声データが含まれる場合がある。この場合、制御部21は、バッファメモリから音声データを再生して音声制御部26へ出力する。音声制御部26は、音声データからアナログ音声信号を生成し、生成したアナログ音声信号をスピーカ26aへ出力する。
また、制御部21は、ユーザの疑似カメラワークの操作により、メイン画面MVに表示中のオリジナル動画、または拡大表示されたサブ動画における表示範囲の指示をユーザから受け付ける。言い換えれば、ユーザは、疑似カメラワークの操作により、二次元平面または三次元仮想空間に配置された仮想スクリーンに投影されるオリジナル動画等に対して、仮想カメラの位置、仮想カメラの向き、及び画角(視野範囲)のうち少なくとも何れか1つを変更することで、オリジナル動画または拡大表示されたサブ動画の表示範囲を変更させることができる。ここで、仮想スクリーンの種類は、オリジナル動画を撮影したカメラやレンズの種類によって異なる。例えば、カメラのレンズがワイドレンズである場合、仮想スクリーンは円筒形のスクリーンとなる。一方、例えば、カメラのレンズが魚眼レンズや360度レンズである場合、仮想スクリーンは球形のスクリーンとなる。
図3(A)〜(C)は、仮想スクリーンの例と、仮想スクリーンに対する表示範囲の例とを示す図である。図3(A)の例では、二次元平面における仮想スクリーンとしてスクリーンSC1が定義される。スクリーンSC1は、長方形の平面スクリーンであり、長方形の平面に動画が投影される。スクリーンSC1上の表示範囲R11は、例えば、X座標、Y座標、幅及び高さにより規定される。例えば、スクリーンSC1の左上の頂点をスクリーンSC1の座標系における原点とする。X座標及びY座標は、仮想カメラの位置を定める。X座標は、表示範囲R11の左上の頂点の横方向の座標であり、Y座標は、表示範囲R11の左上の頂点の縦方向の座標である。例えば三次元仮想空間において、スクリーンSC1から所定距離離れている視点を仮想カメラの位置と仮定してもよい。例えば、視点を通り、スクリーンSC1と垂直に交わる線を、視線(光軸)とする。視線とスクリーンSC1とが交わる点が、表示範囲R11の中心となる。幅及び高さは、視野範囲を定める。幅及び高さは、表示範囲R11の横の長さ及び縦の長さである。
図3(B)の例では、仮想スクリーンとしてスクリーンSC2が定義される。スクリーンSC2は、円筒形のスクリーンであり、円筒の側面に動画が投影される。円筒の側面は、仮想立体面である。スクリーンSC2には、例えば円筒状のパノラマ動画が投影される。パノラマ動画は、例えば、全方位映像である。パノラマ動画は、360度より視野角が狭い部分方位映像であってもよい。スクリーンSC2上の表示範囲R12は、例えば、方位角、横視野角、及び高さにより規定される。方位角は、視点からの仮想カメラの向き(視線方向)を定める。この視点は、仮想カメラの位置であり、例えば、スクリーンSC2の円筒の中心軸の中点とする。また、視点を、三次元仮想空間の座標系における原点とし、スクリーンSC2の中心軸をZ軸とする。X軸は、原点を通り、Y軸及びZ軸に垂直である。Y軸は、原点を通り、X軸及びZ軸に垂直である。視線は、例えば、Z軸と垂直である。このとき、方位角は、例えば、X軸と視線とがなす角度である。横視野角及び高さは、視野範囲を定める。横視野角は、視線の方向を中心とした横方向の視野の範囲を示す角度である。高さは、表示範囲R12の縦の長さである。方位角、横視野角及び高さに基づいて、三次元仮想空間における視野範囲を示す四角錐が定義される。この四角錐がビューボリュームである。ビューボリュームとは、三次元仮想空間において、投影変換の対象となる範囲をいう。実際のビューボリュームは四角錐台であるが、説明の便宜上、四角錐を用いる。ビューボリュームの頂点が視点であり、ビューボリュームの底面の中心を視線が通る。ビューボリュームの側面P21〜P24のうち、Z軸と平行な側面P21と側面P22とがなす角度が横視野角である。ビューボリュームとスクリーンSC2とが交わる面の縦方向の長さが、高さである。そして、ビューボリュームとスクリーンSC2とが交わる面が、表示範囲R12である。
図3(C)の例では、仮想スクリーンとしてスクリーンSC3が定義される。スクリーンSC3は、球形のスクリーンであり、球面に動画が表示される。スクリーンSC3には、例えば球形のパノラマ動画が表示される。スクリーンSC3上の表示範囲R13は、例えば、方位角、仰俯角、横視野角、縦視野角により規定される。方位角及び仰俯角は、視点からの仮想カメラの向き(視線方向)を定める。この視点は、仮想カメラの位置であり、スクリーンSC3に囲まれている範囲内に位置する。例えば、視点は、スクリーンSC3の球の中心とする。また、視点を、三次元仮想空間の座標系における原点とし、縦方向の座標軸をZ軸とする。X軸は、原点を通り、Y軸及びZ軸に垂直である。Y軸は、原点を通り、X軸及びZ軸に垂直である。このとき、方位角は、例えば、XZ平面と視線とがなす角度である。仰俯角は、例えば、XY平面と視線とがなす角度である。横視野角及び縦視野角は、視野範囲を定める。横視野角は、視線の方向を中心とした横方向の視野の範囲を示す角度である。縦視野角は、視線の方向を中心とした縦方向の視野の範囲を示す角度である。XY平面上の線であって、原点を通り、視線と垂直に交わる線を、視線の縦回転軸とする。原点を通り、視線と縦回転軸とのそれぞれに垂直に交わる線を、視線の横回転軸とする。方位角、仰俯角、横視野角及び縦視野角に基づいて、三次元仮想空間における視野範囲を示す四角錐が定義される。この四角錐がビューボリュームである。ビューボリュームの頂点が視点であり、ビューボリュームの底面の中心を視線が通る。ビューボリュームの側面P31〜P34のうち、Z軸と平行な側面P31と側面P32とがなす角度が横視野角である。側面P33と側面P34とがなす角度が縦視野角である。そして、ビューボリュームとスクリーンSC3とが交わる面が、表示範囲R13である。そして、透視変換により、仮想カメラの位置、仮想カメラの向き、及び画角に基づいて、仮想スクリーン上の表示範囲の三次元座標が、二次元座標に変換される。変換された二次元座標により、例えばパノラマ動画を構成する画像フレームのうちどの部分が表示範囲内にあるかを特定することができる。方位角及び仰俯角の少なくとも何れかが変化することにより、視線方向が変化すると、視線方向に応じて表示範囲R13が変化する。また、縦視野角および横視野角の少なくとも何れかが変化することにより、視野範囲が変化すると、視野範囲に応じて表示範囲R13は変化する。つまり、表示範囲R13は、視線方向および視野範囲に応じた範囲となる。なお、スクリーンSC3は、一般に視点を完全に覆う立体であればよく、例えば、立方体等の形状をしたスクリーンであってもよい。
なお、スクリーンSC1〜SC3のうち何れの仮想スクリーンが用いられるかは、例えば、動画データの種類に応じて、仮想スクリーンが決定されてもよい。例えば、パノラマ動画以外の動画に対しては、スクリーンSC1が決定され、円筒状のパノラマ動画に対しては、スクリーンSC2が決定され、球形のパノラマ動画に対しては、スクリーンSC3が決定されてもよい。
また、制御部21は、ユーザの疑似カメラワークの操作により指定された表示範囲を示すカメラワークデータを生成する。図4(A)〜(C)は、制御部21により生成されたカメラワークデータの一例である。図4(A)は、仮想スクリーンが長方形の平面スクリーンである場合の例を示す。図4(B)は、仮想スクリーンが円筒形のスクリーンである場合の例を示す。図4(C)は、仮想スクリーンが球形のスクリーンである場合の例を示す。なお、図4(A)の例において、例えば、アスペクト比が16対9のように決まっている場合、幅と高さの何れか一方が決まれば他方が決まるので、カメラワークデータには幅と高さの何れか一方が含まれればよい。図4(A)〜図4(C)の例では、0ミリ秒、16ミリ秒、33ミリ秒、49ミリ秒等のそれぞれの再生位置の画像フレームにおける表示範囲を示すカメラワークデータを示している。なお、16ミリ秒は、ディスプレイのリフレッシュレート(60Hz)と同程度である。
ところで、1つのコンテンツに、例えばレンズの種類が異なる複数のカメラそれぞれにより撮影された複数の動画データが含まれる場合がある。この場合、仮想スクリーンに投影される各オリジナル動画の注目位置は、仮想スクリーンの中央にあるとは限らない。なお、注目位置には、例えば撮影対象のステージの中央が該当する。本実施形態では、それぞれの仮想スクリーンに投影されたオリジナル動画における注目位置を例えば原点(0,0)として揃え、仮想スクリーンの種類に依らないようにカメラワークデータを正規化する。これにより、ソースとなる動画データが異なっていても、上述したサブ動画が相対的にオリジナル動画のどの位置に対応するのかをユーザに直観的に把握させることが可能となる。
図5は、長方形の平面スクリーンに投影されるオリジナル動画に対応するカメラワークデータの正規化の例を示す図である。図5に示す長方形の平面スクリーンの場合、平面スクリーンの横の長さWと縦の長さHの比(アスペクト比)を横軸の取りうる範囲“aspect(=W/H)”とし、縦軸の取りうる範囲を“1”として正規化される。そして、オリジナル動画における注目位置が原点(0,0)になるように、長方形の平面スクリーンにおける左上の頂点の座標(0,0)が移動され、座標軸の向きが揃えられる。このようにして正規化されたカメラワークデータには、X座標、Y座標、幅及び高さのパラメータに代えて、パン・チルトパラメータ(pan,tilt)、及びズームパラメータ(zoom)が含まれる。パン・チルトパラメータ(pan,tilt)は、仮想カメラの位置または仮想カメラの向きを規定するパラメータである。パン・チルトパラメータ(pan,tilt)は、仮想カメラの左右振りを規定するパンに対応するパラメータと、仮想カメラの上下振りを規定するチルトに対応するパラメータとから構成される。ズームパラメータ(zoom)の値により図5に示す表示範囲(width’×height’)が特定される。なお、仮想スクリーンが円筒形のスクリーン及び球形のスクリーンの場合でも、辺の長さの代わりに角度を用いるだけであり、カメラワークデータの正規化の考え方は同じである。円筒形のスクリーン及び球形のスクリーンの場合でも、正規化されたカメラワークデータには、パン・チルトパラメータ(pan,tilt)、及びズームパラメータ(zoom)が含まれることになる。
[2.通信システムSの動作]
次に、通信システムSの動作について説明する。
(実施例1)
先ず、図6〜図8を参照して、実施例1におけるクライアント2の処理について説明する。実施例1では、サムネイル画面がメイン画面上に重畳されて表示される場合の実施例である。図6は、クライアント2の制御部21におけるメイン処理を示すフローチャートである。図7は、図6に示すステップS21における画面表示処理を示すフローチャートである。図8は、図7に示すステップS217における実施例1の表示画面割当処理を示すフローチャートである。
先ず、クライアント2においてプレイヤーソフトウェアが起動すると、クライアント2はページリクエストを配信サーバ1へ送信する。そして、クライアント2は、ページリクエストに応じて配信サーバ1から送信されたWebページを受信して表示部24aにおけるディスプレイに表示する。このWebページには、例えば、コンテンツの情報が選択可能に表示される。Webページに表示されるコンテンツの情報は、配信サーバ1にアップロードされた複数のコンテンツの中の一部のコンテンツの情報である。これには、例えば、ユーザに推奨されるコンテンツの情報、またはユーザにより入力されたキーワードに基づき検索されたコンテンツの情報が該当する。コンテンツの情報には、例えば、コンテンツのタイトル等の情報が含まれる。そして、ユーザが操作部25aを操作して再生対象のコンテンツの情報を選択すると、図6に示すメイン処理を開始する。メイン処理が開始されると、制御部21は、メイン画面を表示部24aにおけるディスプレイに表示する(ステップS1)。次いで、制御部21は、コンテンツの受信処理を開始する(ステップS2)。これにより、配信サーバ1から、例えばストリーミング配信されたコンテンツが受信され、コンテンツに含まれる動画データの再生が開始される。なお、コンテンツに音声データが含まれている場合、動画データの再生と同期して音声データの再生が開始される。
次いで、制御部21は、メイン画面に対する疑似カメラワークの操作入力を「手動」に設定する(ステップS3)。これにより、疑似カメラワークの操作入力がユーザによる手動入力となる。つまり、メイン画面に表示される動画の表示範囲は、カメラワークデータに依らず、ユーザの疑似カメラワークの操作により変化することになる。次いで、制御部21は、カメラワークデータのクエリ情報の初期化処理を実行する(ステップS4)。カメラワークデータのクエリ情報は、カメラワークデータのリクエストに含まれる情報である。クエリ情報には、例えば、再生対象のコンテンツのタイトル、動画の再生位置、及びカメラワークデータの最大返答数が含まれる。初期化処理では、ユーザにより選択された再生対象のコンテンツのタイトルがクエリ情報に設定され、且つ、動画の再生位置として0ミリ秒がクエリ情報に設定される。また、初期化処理では、カメラワークデータの最大返答数として、例えばサムネイル画面の数がクエリ情報に設定される。なお、クエリ情報には、コンテンツを識別するコンテンツIDが設定されてもよい。次いで、制御部21は、カメラワークデータのクエリ情報を含むリクエストを、ネットワークNWを介して配信サーバ1へ送信する(ステップS5)。このリクエストを受信した配信サーバ1は、例えば、クエリ情報に含まれるコンテンツIDに対応付けられたカメラワークデータをワークファイル記憶領域31cから検索する。そして、配信サーバ1は、検索により取得したカメラワークデータをクライアント2へ返信する。なお、配信サーバ1は、検索された複数のカメラワークデータの中から、ユーザに推奨するカメラワークデータを決定してもよい。例えば、複数のユーザにより評価の高いカメラワークデータが決定される。そして、配信サーバ1は、決定したカメラワークデータをクライアント2へ返信する。
次いで、制御部21は、例えばユーザから操作部25aを介して終了指示があったか否かを判定する(ステップS6)。終了指示があった場合(ステップS6:YES)、図6に示す処理は終了する。一方、終了指示がない場合(ステップS6:NO)、ステップS7へ進む。ステップS7では、制御部21は、配信サーバ1からカメラワークデータを受信したか否かを判定する。このカメラワークデータは、ステップS5、または後述するステップS20におけるリクエストに応じて、配信サーバ1から送信されたデータである。カメラワークデータを受信したと判定された場合(ステップS7:YES)、ステップS8へ進む。これにより、例えばユーザにより入力されたキーワードに基づき検索された複数のカメラワークデータ、またはユーザに推奨される複数のカメラワークデータが取得されることになる。一方、カメラワークデータを受信したと判定されない場合(ステップS7:NO)、ステップS9へ進む。
ステップS8では、制御部21は、既に記憶されているカメラワークデータの集合を、ステップS7の受信により取得されたカメラワークデータに置き換える。ステップS9では、制御部21は、サムネイル画面表示がオンに設定されているか否かを判定する。サムネイル画面表示がオンに設定されている場合(ステップS9:YES)、ステップS10へ進む。一方、サムネイル画面表示がオンに設定されていない場合(ステップS9:NO)、ステップS12へ進む。
ステップS10では、制御部21は、ユーザから操作部25aを介してサムネイル画面に表示された複数のサブ動画の中から、何れかのサブ動画が選択されたか否かを判定する。例えば、ユーザがマウスで選択したいサブ動画をクリックすると、サムネイル画面に表示中のサブ動画の選択指示があったと判定される。または、表示部24aのディスプレイがタッチパネルである場合、ユーザが指やペン等で選択したいサブ動画をタップすると、サムネイル画面に表示中のサブ動画の選択指示があったと判定される。そして、サムネイル画面に表示されたサブ動画の中から、何れかのサブ動画が選択されたと判定された場合(ステップS10:YES)、ステップS11へ進む。ステップS11では、制御部21は、サムネイル画面表示をオフに設定して、サブ動画を拡大表示し、ステップS13へ進む。具体的には、制御部21は、ユーザがマウスで選択したいサブ動画をクリック、またはユーザが指やペン等で選択したいサブ動画をタップした座標位置を決定し、決定した座標位置に表示されているサブ動画を決定する。そして、制御部21は、決定したサブ動画を拡大表示する。これにより、選択されたサブ動画がメイン画面に表示されることになる。一方、サムネイル画面に表示中のサブ動画が選択されないと判定された場合(ステップS10:NO)、ステップS15へ進む。サムネイル画面表示のオンまたはオフの設定は、例えば、ユーザがマウスで指示すること、またはユーザが指やペン等で表示画面をタップすることで、制御部21は、サムネイル画面表示のオンまたはオフの指示を受け付ける。
ステップS12では、制御部21は、ユーザから操作部25aを介してサムネイル画面表示をオンにする指示があったか否かを判定する。サムネイル画面表示をオンにする指示がないと判定された場合(ステップS12:NO)、ステップS13へ進む。一方、サムネイル画面表示をオンにする指示があったと判定された場合(ステップS12:YES)、ステップS15へ進む。
ステップS13では、制御部21は、ユーザから操作部25aを介して、疑似カメラワークの操作があったか否かを判定する。ここで、疑似カメラワークの具体的な操作として、例えば、ドラッグ操作、及びフリック操作がある。ドラッグ操作では、例えば、ユーザがメイン画面をマウスによりドラッグすることで表示範囲を移動させることができる。また、フリック操作では、例えば、ユーザがタッチパネル方式のメイン画面上で指やペン等の接触物を素早くスライドすることで表示範囲を移動させることができる。また、疑似カメラワークの具体的な操作として、例えば、ユーザが操作部25aに設けられたボタンや画面上に表示されたボタン等を押すことにより、表示範囲を拡大したり縮小させたりする操作がある。この操作の場合、表示範囲の単位時間あたり変動量が大きくなりながら表示範囲が拡大又は縮小する変動が行われ、その後、単位時間あたり変動量が一定となって、表示範囲が変動する。ユーザがボタンを押すことをやめる操作を行わない限り、表示範囲が変動し、表示範囲の大きさが最大又は最少となった時点で、変動は停止する。仮想スクリーンが長方形の平面スクリーンである場合、表示範囲の拡大・縮小は、表示範囲の幅及び高さの変動である。仮想スクリーンが円筒形のスクリーンである場合、表示範囲の拡大・縮小は、横視野角及び高さの変動である。仮想スクリーンが球形のスクリーンである場合、表示範囲の拡大・縮小は、横視野角及び縦視野角の変動である。なお、上述した操作は、あくまでも例示に過ぎず、その他の操作により疑似カメラワークが行われてもよい。
そして、疑似カメラワークの操作があったと判定された場合(ステップS13:YES)、ステップS14へ進む。ステップS14では、制御部21は、メイン画面に対する疑似カメラワークの操作入力が「手動」に設定されていなければ「手動」に設定し、ステップS15へ進む。一方、疑似カメラワークの操作がないと判定された場合(ステップS13:NO)、ステップS15へ進む。
ステップS15では、制御部21は、ユーザから操作部25aを介してキーワードの入力があったか否かを判定する。キーワードは、ユーザが所望のカメラワークデータを検索するためのものである。例えば、ユーザが、あるアーティストグループのコンサートの動画において特定の歌手だけを表示するためのカメラワークデータを検索したい場合があるとする。この場合、ユーザは、上記特定の歌手の名前をキーワードとして入力することになる。キーワードの入力があったと判定された場合(ステップS15:YES)、ステップS16へ進む。一方、キーワードの入力がないと判定された場合(ステップS15:NO)、ステップS17へ進む。
ステップS16では、制御部21は、ステップS15で入力されたキーワードをクエリ情報に設定し、ステップS20へ進む。ステップS17では、制御部21は、ユーザから操作部25aを介して入力されたキーワードのクリア指示があったか否かを判定する。キーワードのクリア指示があったと判定された場合(ステップS17:YES)、ステップS18へ進む。一方、キーワードのクリア指示がないと判定された場合(ステップS17:NO)、ステップS19へ進む。
ステップS18では、制御部21は、クエリ情報からキーワードを削除し、ステップS20へ進む。ステップS19では、制御部21は、ユーザによる操作がないまま所定時間が経過したか否かを判定する。この時間は、例えば1秒〜10秒程度に設定される。ユーザによる操作には、疑似カメラワークの操作が含まれる。ユーザによる操作がないまま所定時間が経過したと判定された場合(ステップS19:YES)、ステップS20へ進む。一方、ユーザによる操作がないまま所定時間が経過していないと判定された場合(ステップS19:NO)、ステップS21へ進む。なお、ステップS19において、前回のカメラワークデータのリクエストから所定時間が経過したか否かを判定するように構成してもよい。この場合、前回のカメラワークデータのリクエストから所定時間が経過したと判定された場合、ステップS20へ進む。
ステップS20では、制御部21は、カメラワークデータのクエリ情報を含むリクエストを、ネットワークNWを介して配信サーバ1へ送信し、ステップS21へ進む。このリクエストを受信した配信サーバ1は、例えば、クエリ情報に含まれるンツIDに対応付けられたカメラワークデータをワークファイル記憶領域31cから検索する。そして、配信サーバ1は、検索により取得したカメラワークデータの中から、クエリ情報に設定されたキーワードが対応付けられるカメラワークデータを決定する。そして、配信サーバ1は、決定したカメラワークデータをクライアント2へ返信する。ステップS21では、制御部21は、画面表示処理を実行する。次いで、制御部21は、動画データの現在の再生位置をクエリ情報に設定し(ステップS22)、ステップS6に戻る。
ステップS21における画面表示処理では、図7に示すように、制御部21は、動画データは再生可能な状態にあるか否かを判定する(ステップS211)。例えば、再生に十分な動画データがバッファメモリに保持されている場合、再生可能な状態にあると判定される。再生可能な状態にあると判定された場合(ステップS211:YES)、ステップS213へ進む。一方、再生可能な状態にないと判定された場合(ステップS211:NO)、再生中であれば一時停止し(ステップS212)、図6に示す処理に戻る。
ステップS213では、制御部21は、サムネイル画面表示がオンに設定されているか否かを判定する。サムネイル画面表示がオンに設定されている場合(ステップS213:YES)、ステップS215へ進む。なお、画面表示処理が初回の場合、ステップS213(YES)からステップS216へ進む。一方、サムネイル画面表示がオンに設定されていない場合(ステップS213:NO)、ステップS214へ進む。
ステップS214では、制御部21は、バッファメモリに保持されている動画データを、例えばユーザにより選択されたカメラワークデータに従ってメイン画面に表示させる。ステップ215では、制御部21は、前回の表示画面割当処理(ステップS217)から所定時間が経過したか否かを判定する。前回の表示画面割当処理から所定時間が経過したと判定された場合(ステップS215:YES)、ステップS216へ進む。この判定処理により、表示画面割当処理が毎回ではなく一定時間間隔で行われる。これにより、メイン画面上におけるサムネイル画面(言い換えれば、サブ動画)の位置がカメラワークデータに従って動き続けることを回避し、メイン画面上におけるサブ動画を見易くさせることができる。一方、前回の表示画面割当処理から所定時間が経過していないと判定された場合(ステップS215:NO)、ステップS218へ進む。
ステップS216では、制御部21は、取得済のカメラワークデータを1つのグループに設定する。ここで、取得済のカメラワークデータとは、ステップS7の受信により取得されたカメラワークデータである。なお、取得済のカメラワークデータを1つのグループに設定するのではなく1つの集合として設定してもよい。そして、制御部21は、後述する表示画面割当処理を実行し(ステップS217)、ステップS218へ進む。ステップS218では、制御部21は、サムネイル画面の表示処理を行う。この表示処理では、制御部21は、メイン画面上においてステップS217で決定された座標位置に、ステップS217で決定された表示サイズのサブ動画を含むサムネイル画面を表示させる。なお、ステップS215〜S217の処理により、制御部21は、カメラワークデータにより特定される表示範囲であってオリジナル動画における表示範囲を所定時間間隔で繰り返し特定し、特定した表示範囲のメイン画面上における座標位置を所定時間間隔で繰り返し決定することになる。これにより、カメラワークデータに応じてオリジナル動画における上記表示範囲が変化する場合、オリジナル動画の再生時間に従って、サムネイル画面もメイン画面上において移動することになる。これにより、ユーザは、オリジナル動画とサブ動画との位置関係で把握しやすくなり、かつ、ズームアウトして見る場合より、注目したい箇所を大きく見ることができる。
ところで、ステップS215〜S217における繰り返しの処理によって、メイン画面上におけるサムネイル画面(言い換えれば、サブ動画)の表示位置が一気に切り替えられると、サムネイル動画の移動過程が表示されないので、ユーザは、サムネイル画面がどのように再配置されたかが把握しにくい。そのため、サムネイル画面の移動過程をアニメーション処理により表すように構成してもよい。例えば、制御部21は、今回(現在)のステップS217の処理により決定された座標位置と前回のステップS217の処理により決定された座標位置との間を結ぶ線を特定する。そして、制御部21は、上記特定した線上において、サムネイル画面の座標位置を上記所定時間より短い時間間隔で徐々に変更する。これにより、サムネイル画面の移動過程を表すことができる。
なお、サブ動画の座標位置及び表示サイズによっては、このサブ動画を表示するためのサムネイル画像が、メイン画面に収まらない(言い換えれば、メイン画面からはみ出す)場合もある。この場合、メイン画面に収まらないサムネイル画面の一部分は、表示されない。また、サムネイル画面同士が重なり合った場合、例えば後から描画されるサムネイル画面が、先に表示されるサムネイル画面上に重畳されることになる。
ステップS217における実施例1の表示画面割当処理では、図8に示すように、制御部21は、変数Iに“1”をセットする(ステップS2171)。次いで、制御部21は、グループ内のカメラワークデータの数がI以上であるか否かを判定する(ステップS2172)。カメラワークデータの数がI以上でないと判定された場合(ステップS2172:NO)、図8に示す処理が終了する。一方、カメラワークデータの数がI以上であると判定された場合(ステップS2172:YES)、ステップS2173へ進む。つまり、グループ内に含まれる全てのカメラワークデータうち、まだステップS2173〜ステップS2180の処理が行われていないカメラワークデータがあれば、ステップS2173へ進む。これにより、複数のカメラワークデータが取得された場合、カメラワークデータごとにステップS2173〜ステップS2180の処理が行われる。なお、グループ内のカメラワークデータの数が1個である場合(ステップS2172:NO)、ステップS2173以降の処理は行われず、図7に示す処理に戻る。この場合のステップS218の処理では、サムネイル画面は表示されることなく、メイン画面の表示が継続される。
ステップS2173では、制御部21は、I番目のカメラワークデータにより特定される表示範囲であってオリジナル動画における表示範囲の位置をオリジナル動画の再生時間に沿って特定する。例えば、カメラワークデータに、パン・チルトパラメータ(pan,tilt)が含まれている場合がある。この場合、パン・チルトパラメータ(pan,tilt)が、カメラワークデータから取得されて上記表示範囲の位置として特定される。なお、図8に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、上記オリジナル動画における表示範囲の位置をオリジナル動画の再生時間に沿って所定時間間隔で特定することになる。
次いで、制御部21は、ステップS2173で特定された位置に対応する座標位置であって、I番目のカメラワークデータにより特定される表示範囲のメイン画面上における座標位置(Xwin, Ywin)を、I番目のカメラワークデータの表示範囲の座標位置としてオリジナル動画の再生時間に沿って決定する(ステップS2174)。この座標位置(Xwin, Ywin)は、例えば、メイン画面の左上の頂点を原点とする表示範囲の中心座標であり、上記特定された位置(pan,tilt)に基づいて下記(式1)及び(式2)により決定される。
Xwin=(pan−Pmin)×Wwin/(Pmax−Pmin)・・・(式1)
Ywin=(tilt−Tmin)×Hwin/(Tmax−Tmin)・・・(式2)
ここで、Pminは、panの値が取りうる範囲の最小であり、Pmaxは、panの値が取りうる範囲の最大である。Tminは、tiltの値が取りうる範囲の最小であり、Tmaxは、tiltの値が取りうる範囲の最大である。Wwinは、メイン画面の幅であり、Hwinは、メイン画面の高さである。この式により、パン・チルトパラメータ(pan,tilt)に対応するメイン画面上のX座標、Y座標が決定される。こうして、カメラワークデータの表示範囲は、オリジナル動画における位置に対応する座標位置に割り当てられることになる。例えば、オリジナル動画のフレームサイズとメイン画面のサイズが同じであれば、オリジナル動画における位置と同一の座標位置に割り当てられる。なお、上記座標位置(Xwin, Ywin)は、例えば、メイン画面の左上の頂点を原点とする表示範囲の4隅のうち何れか1隅の座標であってもよい。なお、図8に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、所定時間間隔でステップS2173の処理により特定される、上記オリジナル動画における表示範囲の位置に対応する座標位置を決定することになる。
なお、上記例では、仮想スクリーンの種類(言い換えれば、カメラの種類)に依らないように正規化されたパン・チルトパラメータ(pan,tilt)を含むカメラワークデータを用いて、メイン画面上のX座標、Y座標を決定するように構成した。しかし、カメラワークデータには、仮想スクリーンの種類に応じたパラメータが含まれる場合がある。例えば、図4に示すように、平面スクリーン、円筒形のスクリーン、及び球形のスクリーンに含まれるパラメータの種類は、仮想スクリーンの種類によって異なる。この場合、例えば、カメラワークデータには、仮想スクリーンを示す種類情報であってカメラワークデータに対応する種類情報が含まれる。制御部21は、例えばカメラワークデータから取得した種類情報に基づいて、ステップS2173で特定された位置に対応する座標位置であって、I番目のカメラワークデータにより特定される表示範囲のメイン画面上における座標位置(Xwin, Ywin)を決定することになる。例えば、制御部21は、プレイヤーソフトウェアのプログラム上でそれぞれの種類情報に対応付けられて規定された変換関数を用いて、それぞれのパラメータをメイン画面上における座標位置に変換することで、ステップS2173で特定された位置に対応する座標位置を決定する。
次いで、制御部21は、既に表示範囲の座標位置が決定された[1〜I−1]番目のカメラワークデータの中に、I番目のカメラワークデータの表示範囲の座標位置との間の距離が所定距離未満のカメラワークデータがあるか否かを判定する(ステップS2175)。例えば、I番目のカメラワークデータの表示範囲の座標位置と、I−1番目のカメラワークデータの表示範囲の座標位置との間の距離が所定距離未満である場合、所定距離未満のカメラワークデータがあると判定される。なお、所定距離は、例えば互いの表示範囲ができるだけ重ならないように設定される距離である。所定距離未満のカメラワークデータがあると判定された場合(ステップS2175:YES)、制御部21は、I番目のカメラワークデータの表示範囲の座標位置との間の距離が所定距離未満のカメラワークデータを特定し(ステップS2176)、ステップS2177へ進む。一方、所定距離未満のカメラワークデータがないと判定された場合(ステップS2175:NO)、ステップS2178へ進む。
ステップS2177では、制御部21は、I番目のカメラワークデータの表示範囲の座標位置と、ステップS2176で特定されたカメラワークデータの表示範囲の座標位置間の距離が所定距離以上離れた位置に、I番目のカメラワークデータの座標位置を調整し、調整した座標位置を再決定する。これにより、各カメラワークデータの表示範囲が重ならないようにすることができる。なお、カメラワークデータの数が多いと、全てのカメラワークデータの表示範囲を重ならないように調整することが困難な場合がある。この場合、表示範囲の一部が重なることを許容するため、所定距離の値を下げるように構成してもよい。または、表示範囲が重なって表示されてもよい。
ステップS2178では、制御部21は、ステップS2174またはS2177で決定された表示範囲の座標位置を、この表示範囲に含まれるサブ動画のメイン画面上における座標位置(例えば、中心座標)として決定する。次いで、制御部21は、座標位置が決定されたサブ動画の表示サイズを決定する(ステップS2179)。これにより、例えば複数のサブ動画が、メイン画面上の「カメラワークデータに応じた位置」に割り当てられる。なお、図8に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、所定時間間隔でステップS2174またはS2177の処理により決定される、表示範囲の座標位置を、この表示範囲に含まれるサブ動画のメイン画面上における座標位置として決定する。そのため、制御部21は、所定時間間隔で動的に変化しながらサムネイル画面が表示されるため、視覚効果の高い映像表示を実現することができる。次いで、制御部21は、変数Iを“1”をインクリメントし(ステップS2180)、ステップS2172に戻る。
ここで、サブ動画の表示サイズは、オリジナル動画における1以上の画素から構成される領域(以下、「部分領域」という)ごとの表示回数に基づいて決定されるように構成するとよい。部分領域ごとの表示回数は、例えば、ユーザの関心の度合いを示す数値である。表示回数が高い部分領域を含むシーンほど、多くのユーザが関心を示していると考えられる。表示回数が高い部分領域は、ユーザによる疑似カメラワークの操作によって、よく表示される領域である。部分領域ごとの表示回数は、例えば配信サーバ1により決定される。例えば、配信サーバ1は、ワークファイル記憶領域31cに記憶される複数のカメラワークデータそれぞれが示す表示範囲に基づいて、同一のオリジナル動画における画素または複数の画素から構成されるブロックごとに表示回数をオリジナル動画の再生位置ごとに決定する。つまり、表示範囲の重なりに応じて、重なった画素またはブロックごとの表示回数が算出される。配信サーバ1は、部分領域ごとの表示回数を示す表示回数情報を、例えばカメラワークデータと共にクライアント2へ送信する。なお、表示回数情報は、例えば、オリジナル動画の再生位置ごと、且つこの再生位置における画像フレーム上の部分領域の位置ごとに、表示回数が対応付けられて構成される。クライアント2の制御部21は、配信サーバ1から送信されたカメラワークデータ及び表示回数情報をステップS7で取得する。そして、制御部21は、取得された表示回数情報が示す表示回数に基づいて、カメラワークデータの表示範囲に含まれるサブ動画の表示サイズを決定する。つまり、制御部21は、表示回数が多い部分領域を含むサブ動画ほど、表示サイズを大きく決定する。これにより、多くのユーザが関心を示していると考えられるサブ動画ほど、オリジナル動画上でより大きく表示させることができる。
或いは、サブ動画の表示サイズは、ユーザにより入力されたキーワードに基づいて検索されたカメラワークデータの検索回数(言い換えれば、リクエスト回数)に応じて決定されるように構成してもよい。この場合、検索回数が多いカメラワークデータの表示範囲ほど、この表示範囲に含まれるサブ動画の表示サイズが大きく決定される。この場合、クライアント2の制御部21は、配信サーバ1から送信されたカメラワークデータ及び検索回数を示す情報をステップS7で取得することになる。或いは、サブ動画の表示サイズは、カメラワークデータのズームパラメータに応じて決定されるように構成してもよい。この場合、ズームインしている表示範囲ほど、この表示範囲に含まれるサブ動画の表示サイズが大きく決定される。上記の他にも、カメラワークデータに対するユーザの評価等に応じてサブ動画の表示サイズが決定されるように構成してもよい。なお、サブ動画の表示サイズは、例えばサブ動画ごとに、デフォルト設定された同じサイズに決定されるように構成してもよい。
以上説明したように、上記実施例1によれば、クライアント2は、オリジナル動画における表示範囲の位置を複数のカメラワークデータごとに特定し、特定した位置に応じた座標位置をオリジナル動画の再生時間に沿って複数のカメラワークデータごとに決定する。そして、クライアント2は、決定された表示画面における座標位置に、複数のカメラワークデータにより特定される表示範囲に含まれる複数の第2動画を表示させる。そのため、カメラワークデータにより特定される各視点のサブ動画が相対的にオリジナル動画のどの位置に対応するのかをユーザに直観的に把握させることができる。さらに、各カメラワークデータに対応する各サブ動画をユーザに選択し易くさせることができる。
(実施例2)
次に、図9及び図10を参照して、実施例2におけるクライアント2の処理について説明する。実施例2は、画面分割によりサムネイル画面が表示される場合の実施例である。図9及び図10は、図7に示すステップS217における実施例2の表示画面割当処理を示すフローチャートである。なお、上述した図6及び図7の処理は、実施例2においても同様に行われる。なお、以下の説明において、グループという場合、サブグループにも該当する場合がある。
先ず、図9に示す表示画面割当処理について説明する。なお、図9に示す表示画面割当処理は、ステップS2218、S2220、S2222、S2223、S2228、S2230、S2232、S2233の処理で再帰的に呼び出されて実行される。図9に示す表示画面割当処理において、制御部21は、グループ内のカメラワークデータの数が1であるか否かを判定する(ステップS2211)。グループ内のカメラワークデータの数が1でないと判定された場合(ステップS2211:NO)、ステップS2212へ進む。一方、グループ内のカメラワークデータの数が1であると判定された場合(ステップS2211:YES)、ステップS2234へ進む。なお、上記ステップS216において1つのグループではなく1つの集合として設定された場合、この集合内のカメラワークデータの数が1であるか否かが判定される。そして、後述する処理で1つの集合が2つのグループに分けられる。さらに、分けられたグループが2つのサブグループに分けられる。
ステップS2212では、制御部21は、表示画面の分割方法を決定する。この分割方法は、例えば予め設定された複数の分割方法うち、表示画面の種類に応じた分割方法が決定される。表示画面の分割方法の例として、以下の(a)〜(c)が挙げられる。
(a)左右分割(縦分割)と上下分割(横分割)を交互に繰り返す分割方法
(a)の分割方法では、表示画面割当処理が再帰的に呼び出されて実行される過程において、ステップS2213の処理で左右分割(ステップS2213:YES)と、上下分割(ステップS2213:NO)とが交互に決定されることになる。
(b)左右分割のみを繰り返す分割方法
(b)の分割方法では、表示画面割当処理が再帰的に呼び出されて実行される過程において、ステップS2213の処理で左右分割(ステップS2213:YES)のみが決定されることになる。
(c)上下分割のみを繰り返す分割方法
(c)の分割方法では、表示画面割当処理が再帰的に呼び出されて実行される過程において、ステップS2213の処理で上下分割(ステップS2213:NO)のみが決定されることになる。
例えば、メイン画面が正方形である場合、上記(a)の分割方法が決定される。また、例えば、メイン画面が横長の長方形である場合、上記(a)の分割方法、または上記(b)の分割方法が決定される。また、例えば、メイン画面が縦長の長方形である場合、上記(a)の分割方法、または上記(c)の分割方法が決定される。なお、(a)の分割方法では、左右分割と上下分割を交互に繰り返すが、交互でなくともよい。例えば、左右分割を2回行った後、上下分割を行うように構成してもよい。また、上記分割方法の例では、分割方向は縦と横であるが、分割方向は斜めであっても構わない。
次いで、制御部21は、ステップS2212で決定された分割方法に従って、表示画面を左右(縦)に分割するか否かを決定する(ステップS2213)。例えば、ステップS2212で決定された分割方法が、(a)左右分割(縦分割)と上下分割(横分割)を交互に繰り返す分割方法である場合がある。この場合、初回のステップS2213の処理では、例えば、表示画面を左右に分割する(ステップS2213:YES)と決定される。そして、再帰的に呼び出された2回目のステップS2213の処理では、表示画面を左右に分割しない、つまり、上下に分割する(ステップS2213:NO)と決定される。そして、再帰的に呼び出された3回目のステップS2213の処理では、表示画面を左右に分割すると決定される。表示画面を左右に分割すると決定された場合(ステップS2213:YES)、ステップS2214へ進む。一方、表示画面を左右に分割しないと決定された場合(ステップS2213:NO)、つまり、表示画面を上下(横)に分割する場合、ステップS2224へ進む。
ステップS2214では、制御部21は、図9に示す表示画面割当処理の繰り返し回数が所定回数以上であるか否かを判定する。この所定回数は、表示画面割当処理の繰り返し回数に上限を設定するためのものである。表示画面割当処理の繰り返し回数が所定回数以上でない場合(ステップS2214:NO)、ステップS2215へ進む。一方、表示画面割当処理の繰り返し回数が所定回数以上である場合(ステップS2214:YES)、ステップS2216へ進む。これにより、グループ内にカメラワークデータが多く含まれる場合に、分割される表示画面が小さくなりすぎることを回避することができる。また、例えば、カメラワークデータそれぞれのパン(pan)の値が同一又は中間値で分けること
ができないほど近い場合に、処理が無限に繰り返されることを回避し、処理負荷を低下させることができる。
ステップS2215では、制御部21は、グループ内の各カメラワークデータからパン・チルトパラメータ(pan,tilt)を取得する。そして、制御部21は、取得したパン・チルトパラメータ(pan,tilt)のうちパン(pan)の値の大きさに基づいて、グループ内の
複数のカメラワークデータを「右グループ」と「左グループ」の2つのサブグループに分け、ステップS2217へ進む。例えば、パン(pan)の値が、中間値より大きいかまた
は小さいかで、「右グループ」と「左グループ」の2つのサブグループに分けられる。ここで、中間値の例として、グループ内の各カメラワークデータから取得されたパンの値の平均値または中央値がある。或いは、中間値は、パンの値の最大値MAXと最小値MINを加算した値を2で割ることにより得られた値(=(MAX+MIN)/2)であってもよい。なお、図9に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、グループ内の各カメラワークデータからパン・チルトパラメータ(pan,tilt)を、オリジナル動画の再生時間に沿って所定時間間隔で取得する。
そして、制御部21は、所定時間間隔で取得されるパン・チルトパラメータ(pan,tilt)の値の大きさに基づいて複数のカメラワークデータを複数のグループに分けることになる。
ステップS2216では、制御部21は、グループ内の各カメラワークデータを、「右グループ」と「左グループ」内のカメラワークデータの数が均等になるように、「右グループ」と「左グループ」の2つのサブグループに分け、ステップS2217へ進む。
ステップS2217では、制御部21は、ステップS2215またはステップS2216で分けられた右グループ内のカメラワークデータの数が0であるか否かを判定する。右グループ内のカメラワークデータの数が0であると判定された場合(ステップS2217:YES)、ステップS2218へ進む。ステップS2218では、制御部21は、左グループについて上記表示画面割当処理を実行する。つまり、表示画面割当処理が再帰的に呼び出されて実行される。この場合、分割対象となる表示画面は、サブ表示画面ということになる。一方、右グループ内のカメラワークデータの数が0でないと判定された場合(ステップS2217:NO)、ステップS2219へ進む。
ステップS2219では、制御部21は、ステップS2215またはステップS2216で分けられた左グループ内のカメラワークデータの数が0であるか否かを判定する。左グループ内のカメラワークデータの数が0であると判定された場合(ステップS2219:YES)、ステップS2220へ進む。ステップS2220では、制御部21は、右グループについて上記表示画面割当処理を実行する。つまり、表示画面割当処理が再帰的に呼び出されて実行される。一方、左グループ内のカメラワークデータの数が0でないと判定された場合(ステップS2219:NO)、ステップS2221へ進む。
ステップS2221では、制御部21は、ステップS2215またはステップS2216で分けられた2つのサブグループに含まれるカメラワークデータの数に基づいて、オリジナル動画を表示可能な表示画面を左右に分割し、それぞれのサブグループ内のカメラワークデータの数に応じた大きさ(面積)のサブ表示画面をサブグループごとに決定する。つまり、制御部21は、それぞれのサブグループに含まれるカメラワークデータの数に基づいて、表示画面を、パンに対応するX軸と直交する線を境に分割する。そして、制御部21は、それぞれのグループに含まれるカメラワークデータの数に応じた大きさのサブ表示画面をサブグループごとに決定する。例えば、それぞれのサブグループ内のカメラワークデータの数の比で表示画面が右表示画面と左表示画面に分割される。この右表示画面と左表示画面は、サブ表示画面の一例である。例えば、右グループ内のカメラワークデータの数が「3」で、左グループ内のカメラワークデータの数が「1」である場合、右表示画面と左表示画面の面積比は、3対1となる。なお、図9に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、所定時間間隔で取得された分けられるそれぞれのサブグループに含まれるカメラワークデータの数に基づいて、表示画面を分割する。そして、制御部21は、それぞれのグループに含まれるカメラワークデータの数に応じた大きさのサブ表示画面をグループごとに決定することになる。
次いで、制御部21は、ステップS2215またはステップS2216で分けられた右グループについて上記表示画面割当処理を実行する(ステップS2222)。次の処理としてステップS2223へ進むことになる。そして、ステップS2223では、制御部21は、ステップS2215またはステップS2216で分けられた左グループについて上記表示画面割当処理を実行する。
一方、ステップS2224では、制御部21は、図9に示す表示画面割当処理の繰り返し回数が所定回数以上であるか否かを判定する。表示画面割当処理の繰り返し回数が所定回数以上でない場合(ステップS2224:NO)、ステップS2225へ進む。一方、表示画面割当処理の繰り返し回数が所定回数以上である場合(ステップS2224:YES)、ステップS2226へ進む。
ステップS2225では、制御部21は、グループ内の各カメラワークデータからパン・チルトパラメータ(pan,tilt)を取得し、取得したパン・チルトパラメータ(pan,tilt)のうちチルト(tilt)の値の大きさに基づいて、グループ内の複数のカメラワークデータを「上グループ」と「下グループ」の2つのサブグループに分け、ステップS2227へ進む。例えば、チルト(tilt)の値が、中間値より大きいかまたは小さいかで、「上グループ」と「下グループ」の2つのサブグループに分けられる。
ステップS2226では、制御部21は、グループ内の各カメラワークデータを、「上グループ」と「下グループ」内のカメラワークデータの数が均等になるように、「上グループ」と「下グループ」の2つのサブグループに分け、ステップS2227へ進む。
ステップS2227では、制御部21は、ステップS2225またはステップS2226で分けられた上グループ内のカメラワークデータの数が0であるか否かを判定する。上グループ内のカメラワークデータの数が0であると判定された場合(ステップS2227:YES)、ステップS2228へ進む。ステップS2228では、制御部21は、下グループについて上記表示画面割当処理を実行する。つまり、表示画面割当処理が再帰的に呼び出されて実行される。一方、上グループ内のカメラワークデータの数が0でないと判定された場合(ステップS2227:NO)、ステップS2229へ進む。
ステップS2229では、制御部21は、ステップS2225またはステップS2226で分けられた下グループ内のカメラワークデータの数が0であるか否かを判定する。下グループ内のカメラワークデータの数が0であると判定された場合(ステップS2229:YES)、ステップS2230へ進む。ステップS2230では、制御部21は、上グループについて上記表示画面割当処理を実行する。つまり、表示画面割当処理が再帰的に呼び出されて実行される。一方、下グループ内のカメラワークデータの数が0でないと判定された場合(ステップS2229:NO)、ステップS2231へ進む。
ステップS2231では、制御部21は、ステップS2225またはステップS2226で分けられた2つのサブグループに含まれるカメラワークデータの数に基づいて、オリジナル動画を表示可能な表示画面を上下に分割し、それぞれのサブグループ内のカメラワークデータの数に応じた大きさの表示画面をサブグループごとに決定する。つまり、それぞれのサブグループ内のカメラワークデータの数の比で表示画面が上表示画面と下表示画面に分割される。つまり、制御部21は、それぞれのサブグループに含まれるカメラワークデータの数に基づいて、表示画面を、チルトに対応するY軸と直交する線を境に分割する。そして、制御部21は、それぞれのグループに含まれるカメラワークデータの数に応じた大きさのサブ表示画面をサブグループごとに決定する。
次いで、制御部21は、ステップS2225またはステップS2226で分けられた上グループについて上記表示画面割当処理を実行する(ステップS2232)。次の処理としてステップS2233へ進むことになる。そして、ステップS2233では、制御部21は、ステップS2225またはステップS2226で分けられた下グループについて上記表示画面割当処理を実行する。
ステップS2234では、制御部21は、グループ内の各カメラワークデータにより特定される表示範囲に含まれるサブ動画を、各サブグループに対して決定されたサブ表示画面に割り当てる。なお、グループ内に1つのカメラワークデータだけが含まれる場合、つまり、図7に示す処理から表示画面割当処理へ移行直後のステップS2211において、グループ内のカメラワークデータの数が1であると判定される場合がある。この場合、図7に示す処理に戻り、このカメラワークデータにより特定される表示範囲に含まれるサブ動画が、分割されていない表示画面に割り当てられる。一方、ステップS2218、S2220、S2223、S2228、S2230、またはS2233から、図7に示す処理に戻り、制御部21は、サムネイル画面の表示処理を行う(ステップS218)。この表示処理では、制御部21は、上述したように割り当てられたサブ動画を含むサブ表示画面をサムネイル画面として表示させる。
なお、ステップS2231における表示画面の区切り方によっては、アスペクト比が保存されない場合がある。この場合、制御部21は、サムネイル画面を、レターボックスとクロップのどちらで構成するかを判定するように構成してもよい。例えば、カメラワークデータにより特定される表示範囲のアスペクト比が、サムネイル画面のアスペクト比と大きく異なる場合においてレターボックスで構成すると、サムネイル画面の多くを余白(例えば、動画以外の黒い部分)が占めてしまう。このため、カメラワークデータにより特定される表示範囲のアスペクト比が、サムネイル画面のアスペクト比と閾値以上異なる場合、サムネイル画面がクロップで構成されるようにするとよい。クロップでは、カメラワークデータにより特定される表示範囲のサブ動画の端が切り取られることでサムネイル画面全体にサブ動画を表示させることができる。
また、図9に示す表示画面割当処理は、所定時間間隔で実行される。そのため、制御部21は、所定時間間隔で、上記サブ動画を、各サブグループに対して決定されたサブ表示画面に割り当てサムネイル画面として表示させることができる。そのため、オリジナル動画の再生時間に沿ってカメラワークデータにより特定される表示範囲が変化する場合であっても、オリジナル動画におけるサムネイル画面の位置を動的に変化させることができる。これにより、所定時間間隔でアスペクト比まで含めて動的に変化しながらサムネイル画面が表示されるため、視覚効果の高い映像表示を実現することができる。
ステップS2211では、グループ(またはサブグループ)内のカメラワークデータの数が1であるか否かが判定されるように構成した。しかし、制御部21は、グループ(またはサブグループ)内のカメラワークデータの数が1より大きい所定数(例えば、5)以上であるか否かが判定されるように構成してもよい。この場合、グループに含まれる複数のカメラワークデータの数が1より大きい所定数以上である場合に、ステップS2212に移行して、このグループに含まれる複数のカメラワークデータが複数のサブグループに分けられる。一方、グループに含まれる複数のカメラワークデータの数が1より大きい所定数未満である場合、ステップS2234に移行される。この場合のステップS2234には、図8に示す表示画面割当処理を適用することができる。この場合、制御部21は、サブグループに含まれるカメラワークデータにより特定される表示範囲であってオリジナル動画における表示範囲の位置をオリジナル動画の再生時間に沿って、複数のカメラワークデータごとに特定する。制御部21は、特定された位置に対応する座標位置であって、カメラワークデータにより特定される表示範囲のメイン画面上における座標位置(Xwin, Ywin)を、オリジナル動画の再生時間に沿って、複数のカメラワークデータごとに決定する決定する。そして、制御部21は、サブグループに含まれる複数のカメラワークデータにより特定される表示範囲に含まれる各サブ動画を、上記決定されたサブ表示画面上における座標位置に割り当てる。これにより、ステップS218におけるサムネイル画面の表示処理において、複数のサブ動画が1つのサブ表示画面に表示される。つまり、表示画面が複数に分割されたサブ表示画面の中で少なくとも一つのサブ表示画面上には、図2(A)に示すように、複数のサブ動画が、オリジナル動画における位置に応じた座標位置に表示されることになる。これにより、1つあたりのサブ表示画面のサイズを一定以上に保つことでサブ動画の見易さを向上させることができる。なお、分割されるサブ表示画面は、基本的には、上記ステップS2221により、サブグループに含まれるカメラワークデータの数に応じたサイズになる。そのため、サブグループに含まれる各カメラワークデータに対応するサブ動画をオリジナル動画における位置に応じた座標位置に表示させることが可能となる。
次に、図10に示す表示画面割当処理について説明する。なお、図10に示す表示画面割当処理は、ステップS2317、S2319、S2321、S2322、S2325、S2327、S2329、S2330の処理で再帰的に呼び出されて実行される。また、図10に示すステップS2311及びS2312の処理は、図9に示すステップS2211及びS2212の処理と同様に行われる。図10に示すステップS2313では、制御部21は、図10に示す表示画面割当処理の繰り返し回数が所定回数以上であるか否かを判定する。表示画面割当処理の繰り返し回数が所定回数以上でない場合(ステップS2313:NO)、ステップS2314へ進む。一方、表示画面割当処理の繰り返し回数が所定回数以上である場合(ステップS2313:YES)、ステップS2331へ進む。ステップS2331の処理は、図10に示す表示画面割当処理が所定回数以上繰り返されてもまだグループ内のカメラワークデータが1つにならない場合に行われる。言い換えれば、ステップS2331の処理は、図10に示す表示画面割当処理が所定回数以上繰り返されても表示画面を分割しきれない場合に行われる。
ステップS2314では、制御部21は、ステップS2312で決定された分割方法に従って、上述したステップS2213と同様、表示画面を左右(縦)に分割するか否かを決定する。表示画面を左右に分割すると決定された場合(ステップS2314:YES)、ステップS2315へ進む。一方、表示画面を左右に分割しないと決定された場合(ステップS2314:NO)、ステップS2323へ進む。なお、ステップS2315〜2322の処理は、図9に示すステップS2215、S2217〜S2223の処理と同様に行われる。また、ステップS2323〜2330の処理は、図9に示すステップS2225、S2227〜S2233の処理と同様に行われる。また、ステップS2332の処理は、図9に示すステップS2234の処理と同様に行われる。
ステップS2331では、制御部21は、サブグループに含まれる複数のカメラワークデータのうち代表となるカメラワークデータにより特定される表示範囲に含まれるサブ動画を、このサブグループに対して決定された表示画面に割り当てる。そして、図7に示す処理に戻り、制御部21は、サムネイル画面の表示処理を行う(ステップS218)。この表示処理では、制御部21は、上述したように割り当てられたサブ動画を含む表示画面をサムネイル画面として表示させる。ここで、代表となるカメラワークデータとして、例えばメイン画面において最も中心に位置する表示範囲を示すカメラワークデータが特定される。なお、代表となるカメラワークデータは複数あってもよい。このサムネイル画面は、グループ内のカメラワークデータの数に応じて分割される。そのため、結果として、注目度の高い範囲の動画を、大きなサムネイル画面に割り当てることができる。以上のように、図10に示す表示画面割当処理では、制御部21は、複数のカメラワークデータが複数のサブグループに分けられた回数をカウントする。そして、制御部21は、カウントされた回数が所定回数以上である場合、サブグループに含まれる複数のカメラワークデータのうち代表となるカメラワークデータにより特定される表示範囲に含まれる第2動画を表示させることになる。これにより、1つあたりのサムネイル画面のサイズを一定以上に保つことできる。
以上説明したように、上記実施例2によれば、クライアント2は、複数のカメラワークデータから取得されたパラメータの値の大きさに基づいて複数のカメラワークデータを複数のグループに分け、それぞれのグループに含まれるカメラワークデータの数に基づいて表示画面を分割する。そして、クライアント2は、それぞれのグループに含まれるカメラワークデータの数に応じた大きさのサブ表示画面をグループごとに決定し、それぞれのグループに対応するサブ表示画面にサブ動画を表示させる。そのため、カメラワークデータにより特定される各視点のサブ動画の配置が重なることを回避し、各視点の動画の見易さを向上させることができる。さらに、各カメラワークデータに対応する各サブ動画をユーザに選択し易くさせることができる。
なお、上記実施形態において、クライアント2は配信サーバ1からコンテンツ及びコンテンツのカメラワークデータを受信する構成を示した。しかし、ハイブリッド型またはピア型のピアツーピアネットワークにおいて、クライアント2が他のクライアント2からコンテンツ及びコンテンツのカメラワークデータを受信する場合に対しても本発明は適用できる。また、上記実施形態において、クライアント2が記憶装置3と接続可能であるように構成してもよい。この場合、クライアント2は記憶装置3から取得したコンテンツを再生する。そして、クライアント2は、記憶装置3から取得したカメラワークデータに従って、動画を表示することになる。