以下、本発明の実施形態を図面に基づいて説明する。
[1.通信システムの構成及び動作概要]
始めに、図1を参照して、本発明の実施形態の通信システムSの構成及び動作概要について説明する。図1は、本実施形態の通信システムSの概要構成例を示す図である。図1に示すように、通信システムSは、配信サーバ1及び複数のクライアント端末2a〜2hを含んで構成される。配信サーバ1は、本発明のサーバ装置の一例である。なお、図1に示すクライアント端末の数は一例であり、この数には限定されるものではない。クライアント端末2a〜2hは、本発明の第1端末装置、及び第2端末装置の一例である。配信サーバ1及びクライアント端末2a〜2hは、それぞれ、ネットワークNWに接続される。ネットワークNWは、例えば、インターネット等により構成される。なお、以下の説明では、クライアント端末2a〜2hを総称して、クライアント端末2という場合がある。
配信サーバ1は、例えば、図示しない撮影装置から送信されたコンテンツを記憶部12に記憶する。コンテンツには、少なくとも動画データが含まれる。動画データは、撮影装置により撮影された動画のデータである。カメラにより撮影された動画を、以下、「オリジナル動画」という。コンテンツには、コンテンツIDが付与される。オリジナル動画は、複数の画像フレームから構成される。また、各画像フレームは複数の画素から構成される。コンテンツIDは、オリジナル動画を識別可能な第1識別情報の一例である。オリジナル動画の一例として、例えばパノラマ動画がある。パノラマ動画は、例えば高解像度のカメラで、且つ広範囲を撮影可能なレンズを搭載するカメラにより被写体が撮影された動画である。広範囲を撮影可能なレンズには、ワイドレンズ、魚眼レンズ、360度レンズ等がある。また、パノラマ動画は、複数カメラの映像を合成して作成される場合もある。なお、コンテンツには、動画データとともに音声データが含まれる場合もある。
配信サーバ1は、例えば、クライアント端末2からの配信要求に応じて、ネットワークNWを介してクライアント端末2へ上記コンテンツを配信する。コンテンツの配信は、例えばライブ配信により行われる。ライブ配信とは、撮影装置により撮影された動画データを含むコンテンツを順次ストリーミング配信用のデータにエンコードしてリアルタイムに配信することをいう。なお、コンテンツの配信は、オンデマンド配信であってもよい。配信されるコンテンツのヘッダには、このコンテンツのコンテンツIDが含まれる。
また、配信サーバ1は、ネットワークNWを介してアクセスした例えばクライアント端末2aからの所定のオリジナル動画の再生開始メッセージに応じて、URL(Uniform Resource Locator)をクライアント端末2aへ送信する。このURLは、クライアント端末2aに情報を送信させる送信先を示す。また、この再生開始メッセージは、ユーザによる所定のオリジナル動画の視聴開始を示す。情報を送信させる送信先を示すURLは、ネットワークNW上の情報の取得場所を示す所在情報の一例である。このURLが示す取得場所は、例えば配信サーバ1の記憶部12内に割り当てられた記憶領域である。或いは、このURLが示す取得場所は、配信サーバ1とは異なる所定の情報処理装置の記憶部内に割り当てられた記憶領域であってもよい。この情報処理装置は、所定のサーバ、またはクライアント端末2であってもよい。なお、クライアント端末2a〜2hには、それぞれ異なるURLが割り当てられる。例えばクライアント端末2aは、配信サーバ1から受信したURLへ接続し、再生開始された所定のオリジナル動画のコンテンツID、及びこの動画に対するカメラワークデータを配信サーバ1へ所定時間間隔で順次送信する。つまり、例えばクライアント端末2aは、所定のオリジナル動画に対するカメラワークデータを、上記URLが示す送信先に向けてアップロードする。そして、配信サーバ1は、クライアント端末2aから所定時間間隔で受信されたコンテンツIDとカメラワークデータとを対応付けて、クライアント端末2aに割り当てられたURLが示す取得場所に記憶する。
ここで、カメラワークデータは、オリジナル動画の上記画像フレームにおける仮想カメラの位置、仮想カメラの向き(アングル)、及び仮想カメラの画角のうち少なくとも何れかを表す仮想カメラデータと、動画データの再生時間とを対応付けて含む。仮想カメラとは、二次元平面または三次元仮想空間における仮想スクリーンに投影されるオリジナル動画に対して仮想的に設定された視点をいう。仮想スクリーンには、平面スクリーン、円筒形のスクリーン、及び球形のスクリーンがある。例えば、動画を撮影したカメラのレンズが魚眼レンズや360度レンズである場合、仮想スクリーンは球形のスクリーンとなる。カメラワークデータによれば、二次元平面または三次元仮想空間における仮想スクリーンに投影されるオリジナル動画の全部または一部を仮想的に撮影する仮想カメラの動きを規定することができる。そして、カメラワークデータによりオリジナル動画における特定の画素領域が特定される。この画素領域は、1画像フレームのうちクライアント端末2の表示画面に描画される描画領域に相当する。言い換えれば、画素領域は、画像フレームから切り出される表示範囲である。また、仮想カメラの動きは、疑似的なカメラワーク(以下、「疑似カメラワーク」という)により制御される。疑似カメラワークの操作には、例えば、仮想カメラのパン(左右振り)の操作、仮想カメラのチルト(上下振り)の操作、及び仮想カメラのズームの操作がある。仮想カメラのパン及びチルトの操作により、仮想カメラの向きが決まる。また、仮想カメラのズームの操作により、仮想カメラの画角が決まる。なお、仮想スクリーンが平面スクリーンの場合、オリジナル動画の画像フレームにおける仮想カメラの位置は、(X,Y)座標で規定される。本実施形態のカメラワークデータは、仮想カメラデータとして、pan(パン)、tilt(チルト)、及びzoom(ズーム)のパラメータを含む。本実施形態のカメラワークデータによれば、疑似カメラワークを再現することができる。また、本実施形態では、カメラワークデータは、動画データの再生開始からの再生終了までの再生時間において所定時間ごとに複数生成される。
次に、配信サーバ1は、例えばクライアント端末2dからのURL要求に応じて、例えばクライアント端末2aに割り当てられたURLをクライアント端末2dへ送信する。このとき、配信サーバ1は、複数のクライアント端末2それぞれに割り当てられた複数のURLを含むリストをクライアント端末2dへ送信してもよい。このリストは、カメラワークデータが記憶された取得場所を示す1または複数のURLを含む。このカメラワークデータには、例えば、クライアント端末2dにより再生中のコンテンツのコンテンツIDが対応付けられている。そして、配信サーバ1は、クライアント端末2dへ送信されたURLの指定をクライアント端末2dから受け付ける。この指定は、例えば、クライアント端末2dのユーザにより行われる。なお、複数のURLを含むリストがクライアント端末2dへ送信されている場合がある。この場合、配信サーバ1は、上記リストが含む複数のURLの中から、例えば1つのURLの指定をクライアント端末2dから受け付ける。そして、配信サーバ1は、URLの指定が受け付けられたことに応じて、指定されたURLが示す取得場所に所定時間間隔で記憶されたカメラワークデータを、クライアント端末2dへ順次送信する。これにより、クライアント端末2dは、例えば、ストリーミングでコンテンツを受信しながら、受信したカメラワークデータによりオリジナル動画から再生時間ごとに特定された特定の画素領域に対応する動画を表示する。つまり、クライアント端末2dは、受信されたカメラワークデータとを用いて、動画データの再生時間に従って、例えばpan、tilt、及びzoomにより特定された特定の画素領域を表示画面に表示する。そして、クライアント端末2dは、クライアント端末2dに割り当てられたURLへ接続し、再生中の動画に対応するコンテンツID、及びこの動画に対するカメラワークデータを配信サーバ1へ所定時間間隔で順次送信する。そして、配信サーバ1は、クライアント端末2dから所定時間間隔で受信されたコンテンツIDとカメラワークデータとを対応付けて、クライアント端末2dに割り当てられたURLが示す取得場所に記憶する。
また、配信サーバ1は、上記リストが含む複数のURLの中から、複数のURLの指定をクライアント端末2dから受け付ける場合がある。この場合、配信サーバ1は、指定されたそれぞれのURLが示す取得場所に記憶された、それぞれのカメラワークデータを、クライアント端末2dへ順次送信する。この場合、クライアント端末2dは、受信したコンテンツに含まれる動画と複数のカメラワークデータのそれぞれを用いて、この動画の再生時間について、カメラワークデータそれぞれによりオリジナル動画から再生時間ごとに特定された複数の特定の画素領域それぞれに対応する動画を表示させる。このとき、クライアント端末2dのユーザは、動画の編集操作を行うことができる。クライアント端末2dは、ユーザによる動画の編集操作に従って、カメラワークデータそれぞれにより特定された複数の特定の画素領域に対応する動画を合成して表示する。
ここで、動画を合成して表示する例として、例えば、並列表示、重ね合わせ表示、嵌め込み表示、切り替え表示などある。並列表示とは、複数の特定の画素領域を並列させて表示することをいう。また、重ね合わせ表示とは、一方の特定の画素領域を他方の画素領域上に重ね合わせて表示することをいう。嵌め込み表示とは、一方の特定の画素領域を他方の画素領域内に嵌め込んで表示することをいう。重ね合わせ表示または嵌め込み表示は、PinP(ピクチャーインピクチャー)とも呼ばれる。切り替え表示とは、一方の特定の画素領域と他方の画素領域を切り替えながら表示することをいう。また、動画の加工を伴う合成もある。動画の加工には、特定の画素領域のサイズ変更、変形、回転、アルファブレンドなどがある。アルファブレンドを伴う合成は、アルファブレンド合成と呼ばれる。動画の加工を伴う合成の例として、クロスフェード(ディゾルブ)やワイプなどがある。
そして、クライアント端末2dは、再生中の動画に対応するコンテンツID、及びこの動画に対する合成カメラワークデータを配信サーバ1へ所定時間間隔で順次送信する。この合成カメラワークデータは、映像加工情報ともいう。合成カメラワークデータは、カメラワークデータの一種である。そして、配信サーバ1は、クライアント端末2dから所定時間間隔で受信されたコンテンツIDと合成カメラワークデータとを対応付けて、クライアント端末2dに割り当てられたURLが示す取得場所に記憶する。ここで、合成カメラワークデータは、複数の特定の画素領域の表示画面における位置関係と、pan、tilt、及びzoomと、動画データの再生時間とを対応付けて含む。ここで、複数の特定の画素領域は、複数のカメラワークデータが含む複数のpan、tilt、及びzoomそれぞれにより特定される。動画データの再生時間は、複数の特定の画素領域が表示画面に表示された再生時間である。なお、合成カメラワークデータは、上記位置関係と、透過度と、pan、tilt、及びzoomと、動画データの再生時間とを対応付けて含む場合もある。ここで、透過度は、複数の特定の画素領域のうち少なくとも1つの画素領域に設定されるパラメータである。合成カメラワークデータによれば、オリジナル動画を構成する画像フレームから特定される複数の特定の画素領域を合成した動画を表示させることができる。
[2.各装置の構成]
次に、図1を参照して、本実施形態の通信システムSに含まれる各装置の構成について説明する。配信サーバ1は、図1に示すように、制御部11、記憶部12、及びインターフェース部13等を備えて構成される。これらの構成要素は、バス14に接続されている。インターフェース部13は、ネットワークNWに接続される。制御部11は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。記憶部12は、例えば、例えばハードディスクドライブにより構成される。記憶部12には、OS、及びサーバプログラム等が記憶されている。サーバプログラムは、制御部11のCPUに、コンテンツの送受信処理及びカメラワークデータの送受信処理を実行させるプログラムである。記憶部12には、撮影装置から受信されたコンテンツが記憶される。また、記憶部12には、コンテンツの視聴ユーザリストが記憶される。コンテンツの視聴ユーザリストは、コンテンツを受信しているクライアント端末2a〜2hのユーザの情報を登録するリストである。コンテンツの視聴ユーザリストには、コンテンツID、ユーザ名、パスワード、セッションID、カメラワークデータの取得場所を示すURL、ユーザのコメント、フォロワー数等の情報が対応付けられてユーザごとに登録される。ユーザ名及びパスワードは、ユーザがシステムにログインする際に使用される。セッションIDは、配信サーバ1とクライアント端末2との通信セッションを識別するIDである。カメラワークデータの取得場所を示すURLは、クライアント端末2ごとに割り当てられたURLである。ユーザのコメントには、例えば、このユーザがクライアント端末2から提供するカメラワークデータの紹介文が含まれる。フォロワー数は、ユーザをフォローしている他のユーザの数を示す。
次に、クライアント端末2a〜2hは、図1に示すように、制御部21、記憶部22、ビデオRAM23、映像制御部24、操作処理部25、音声制御部26、及びインターフェース部27等を備えて構成される。これらの構成要素は、バス28に接続されている。映像制御部24には、ディスプレイを備える表示部24aが接続される。表示部24aは、本発明の受信手段、取得手段、第1表示制御手段、第2表示制御手段、及び送信手段の一例である。操作処理部25には、操作部25aが接続される。操作部25aには、例えば、マウス、キーボード、リモコン等がある。表示部24aと操作部25aとを兼ねるタッチパネルが適用されてもよい。制御部21は、ユーザによる操作部25aからの操作指示を、操作処理部25を介して受け付ける。ユーザは、操作部25aを用いて、上述した疑似カメラワークの操作、及び動画の編集操作を行うことができる。音声制御部26には、スピーカ26aが接続される。インターフェース部27は、ネットワークNWに接続される。制御部21は、コンピュータとしてのCPU、ROM、及びRAM等により構成される。記憶部22は、例えば、ハードディスクドライブ(HDD)により構成される。記憶部22には、OS、及びプレイヤーソフトウェア等が記憶されている。プレイヤーソフトウェアは、コンテンツの受信及び再生処理、及びカメラワークデータの送受信処理を実行させるプログラムである。
制御部21は、プレイヤーソフトウェアを実行することで、受信されたコンテンツと、受信されたカメラワークデータ等を用いて、コンテンツを再生するプレイヤーとして機能する。また、プレイヤーの機能により、表示部24aにおけるディスプレイには、表示画面が表示される。表示画面は、ウインドウともいう。表示画面には、メイン画面とサブ画面とがある。メイン画面には、ユーザによる疑似カメラワークの操作、またはカメラワークデータに従って、動画が表示される。この動画は、オリジナル動画から再生時間ごとに特定された特定の画素領域に対応する動画である。サブ画面には、カメラワークデータに従って、メイン画面に表示される候補となる動画が表示される。サブ画面は、メイン画面上に重畳されて表示されてもよい。なお、カメラワークデータによりオリジナル動画から再生時間ごとに特定された特定の画素領域に対応する動画を、カメラワークデータの適用動画という。また、制御部21におけるRAMにはバッファメモリが設けられている。バッファメモリには、受信されたコンテンツに含まれる動画データ等が一時的に保持される。制御部21は、バッファメモリからビデオRAM23へ動画データを出力する。ビデオRAM23には、描画データを書き込まれるフレームバッファが設けられている。映像制御部24は、制御部21からの制御信号に従って、フレームバッファに書き込まれた描画データを表示画面に描画することで表示させる。また、バッファメモリに保持されたコンテンツに音声データが含まれる場合がある。この場合、制御部21は、バッファメモリから音声データを再生して音声制御部26へ出力する。音声制御部26は、音声データからアナログ音声信号を生成し、生成したアナログ音声信号をスピーカ26aへ出力する。
[3.通信システムSの動作]
次に、本実施形態の通信システムSの動作について説明する。先ず、図2を参照して、通信システムSにおけるクライアント端末2a〜2hの動作について説明する。図2は、通信システムSにおけるクライアント端末2a〜2hの動作の一例を示す概念図である。
図2において、クライアント端末2dは、クライアント端末2aから送信されたカメラワークデータAと、クライアント端末2bから送信されたカメラワークデータBとを、クライアント端末2a及び2bそれぞれに割り当てられたURLが示す取得場所を介して取得している。これにより、クライアント端末2dは、受信されたオリジナル動画、カメラワークデータA、及びカメラワークデータBを用いて、カメラワークデータAの適用動画と、カメラワークデータBの適用動画とをサブ画面に表示する。そして、クライアント端末2dは、カメラワークデータAとカメラワークデータBの中から選択されたカメラワークデータBの適用動画をメイン画面に表示する。また、図2において、クライアント端末2fは、クライアント端末dから送信されたカメラワークデータBと、クライアント端末2cから送信されたカメラワークデータCとを、クライアント端末2d及び2cそれぞれに割り当てられたURLが示す取得場所を介して取得している。クライアント端末2fは、受信されたオリジナル動画、カメラワークデータB、及びカメラワークデータCを用いて、カメラワークデータBの適用動画と、カメラワークデータCの適用動画とをサブ画面に表示する。そして、クライアント端末2fは、ユーザによる動画の編集操作に従って、カメラワークデータBとカメラワークデータCそれぞれによりオリジナル動画から再生時間ごとに特定された複数の特定の画素領域に対応する動画を合成してメイン画面に表示する。つまり、クライアント端末2fは、受信された動画データと、受信された複数のカメラワークデータとを用いて、動画データの再生時間に従って、複数の特定の画素領域に対応する動画をメイン画面に表示する。ここで、複数の特定の画素領域は、オリジナル動画における複数の画素の中から、複数のカメラワークデータが含む複数のpan、tilt、及びzoomそれぞれにより特定される。そして、クライアント端末2fは、複数のカメラワークデータB,Cを用いて所定のオリジナル動画から再生時間ごとに特定された複数の特定の画素領域を異なる視点で表示させる合成カメラワークデータを、上述したURLが示す取得場所へアップロードする。また、図2において、クライアント端末2gは、クライアント端末fから送信された合成カメラワークデータを、クライアント端末2gに割り当てられたURLが示す取得場所を介して取得している。クライアント端末2gは、受信されたオリジナル動画、及び合成カメラワークデータを用いて、合成カメラワークデータの適用動画をメイン画面に表示する。これにより、クライアント端末2gは、他のクライアント端末2によりアップロードされた合成カメラワークデータを用いて、所定のオリジナル動画から再生時間ごとに特定された複数の特定の画素領域を異なる視点で表示することができる。
ここで、図3及び図4を参照して、合成カメラワークデータについて説明する。図3は、クライアント端末2dにより生成された合成カメラワークデータの一例を示す概念図である。図3(A)〜(C)において、カメラワークデータAは、pan(パン):-0.1、tilt(チルト):-0.1、及びzoom(ズーム):1のパラメータを含む。また、カメラワークデータBは、pan(パン):0.4、tilt(チルト):-0.3、及びzoom(ズーム):3のパラメータを含む。なお、pan、tilt、及びzoomは、オリジナル動画を構成する画像フレームにおける特定の画素領域を特定するパラメータである。また、オリジナル動画“0”は、コンテンツID“0”のオリジナル動画を示す。また、図3(A)に示すviewport(ビューポート):[x,y,w,h] は、メイン画面を分割し、複数の特定の画素領域を並列させて表示させる命令を含む。viewportは、複数の特定の画素領域のメイン画面における位置関係を示すパラメータでもある。viewport は、例えば、ユーザによる動画の編集操作により指定される。ここで、“x”は、メイン画面の横方向のx座標を示す。“y”は、メイン画面の縦方向のy座標を示す。“w”は、メイン画面を分割した後の分割領域の幅(画面幅)を示す。“h”は、メイン画面を分割した後の分割領域の高さ(画面高さ)を示す。ただし、メイン画面の左上座標(0,0)とし、メイン画面のサイズ(1,1)とする割合で表記している。図3(A)の例では、クライアント端末2dは、カメラワークデータAとカメラワークデータBによりオリジナル動画“0”から特定されたそれぞれの特定の画素領域を、動画の編集操作により指定されたviewportに従って、メイン画面を左右に分割したそれぞれの分割領域に表示させる。これにより、カメラワークデータAの適用動画とカメラワークデータBの適用動画とが合成された動画が、最終出力動画としてメイン画面に表示される。このとき図3(A)に示すような合成カメラワークデータが生成される。図3(A)に示す合成カメラワークデータにおいて、“p”は、オリジナル動画の再生開始からの再生位置に対応する再生時間を示す。つまり、図3(A)に示す合成カメラワークデータは、再生位置p=20000の合成カメラワークデータである。
一方、図3(B)に示すalphablend(アルファブレンド)は、オリジナル動画から特定された特定の画素領域に所定の透過度を設定するパラメータである。このalphablendは、例えば、ユーザによる動画の編集操作により指定される。なお、alphablend:0.5は、50%の透過度を設定することを意味する。図3(B)の例では、クライアント端末2dは、動画の編集操作により指定されたalphablendに従って、カメラワークデータBにより特定された画素領域に50%の透過度を設定した後に、上述したように特定されたそれぞれの特定の画素領域をメイン画面に重ね合わせて表示させる。これにより、カメラワークデータAの適用動画とカメラワークデータBの適用動画とが合成された動画が、最終出力動画としてメイン画面に表示される。つまり、この場合、カメラワークデータBにより特定された画素領域は、alphablend:0.5によって半透明化されているため、合成結果はアルファブレンド合成となる。制御部21が、再生位置に応じてalphablendの値を少しずつ変えていくと、クロスフェード効果が得られる。このとき図3(B)に示すような合成カメラワークデータが生成される。なお、図3(B)に示すように、viewportが記述されない合成カメラワークデータは、複数の特定の画素領域のメイン画面における位置(位置関係)は同一であることを示す。
一方、図3(C)に示すcrop(クロップ):[x,y,w,h] は、オリジナル動画から特定された一方の画素領域上の所定位置[x,y,w,h]を、他方の画素領域上の所定位置[x,y,w,h]に嵌め込む命令である。言い換えれば、cropは、オリジナル動画から特定された一方の画素領域上の一部を切り取って、他方の画素領域上に重ね合わせる命令である。cropは、複数の特定の画素領域のメイン画面における位置関係を示すパラメータでもある。cropは、例えば、ユーザによる動画の編集操作により指定される。図3(C)の例では、クライアント端末2dは、動画の編集操作により指定されたcropに従って、上述したように特定された一方の特定の画素領域を、他方の画素領域内に嵌め込んでメイン画面に表示させる。これにより、カメラワークデータAの適用動画とカメラワークデータBの適用動画とが合成された動画が、最終出力動画としてメイン画面に表示される。このとき図3(C)に示すような合成カメラワークデータが生成される。制御部21が、再生位置に応じて、所定位置[x,y,w,h]を少しずつ変えていくと、一方の画素領域と他方の画素領域との境界線が少しずつ変わる。これにより、ワイプトランジションの効果が得られる。
図4は、複数のクライアント端末2で動画の合成が行われた場合の合成カメラワークデータの一例を示す概念図である。図4において、例えば、合成Xはクライアント端末2dにより行われ、合成Yはクライアント端末2fにより行われ、合成Zはクライアント端末2gにより行われるとする。この場合、クライアント端末2dは、アップロードされたカメラワークデータA及びカメラワークデータBを、それぞれの取得場所から取得する。クライアント端末2dは、取得したカメラワークデータAとカメラワークデータBとを用いて、カメラワークデータAの適用動画と、カメラワークデータBの適用動画とを合成Xする。このとき、クライアント端末2dは、合成カメラワークデータαを生成する。合成カメラワークデータαは、カメラワークデータAに含まれるpan、tilt、及びzoomと、カメラワークデータBに含まれるpan、tilt、及びzoomとを含む。そして、クライアント端末2dは、生成した合成カメラワークデータαを、上述したURLが示す取得場所へアップロードする。
一方、クライアント端末2fは、アップロードされたカメラワークデータC及びカメラワークデータDを、それぞれの取得場所から取得する。クライアント端末2fは、取得したカメラワークデータCとカメラワークデータDとを用いて、カメラワークデータCの適用動画と、カメラワークデータDの適用動画とを合成Yする。このとき、クライアント端末2fは、合成カメラワークデータβを生成する。合成カメラワークデータβは、カメラワークデータCに含まれるpan、tilt、及びzoomと、カメラワークデータDに含まれるpan、tilt、及びzoomとを含む。そして、クライアント端末2fは、生成した合成カメラワークデータβを、上述したURLが示す取得場所へアップロードする。
一方、クライアント端末2gは、アップロードされた合成カメラワークデータα及び合成カメラワークデータβを、それぞれの取得場所から取得する。クライアント端末2gは、取得した合成カメラワークデータαと合成カメラワークデータβとを用いて、合成カメラワークデータαの適用動画と、合成カメラワークデータβの適用動画とを合成Zする。このとき、クライアント端末2gは、合成カメラワークデータγを生成する。合成カメラワークデータγは、合成カメラワークデータαに含まれるpan、tilt、及びzoomと、合成カメラワークデータβに含まれるpan、tilt、及びzoomとを含む。クライアント端末2gにより生成される合成カメラワークデータγは、図4(A)に示すように記述される。つまり、図4(A)に示す合成カメラワークデータγは、カメラワークデータA〜Dのそれぞれに含まれるpan、tilt、及びzoomを含む。
ただし、動画の合成の繰り返しが長くなりすぎると、元々のカメラワークデータが生成されてからの遅延が大きくなってしまう。つまり、例えば、クライアント端末2dが、他のクライアント端末2でカメラワークデータA,Bが生成されてから取得するまでには少なからず遅延が発生する。クライアント端末2dが、取得したカメラワークデータA,Bを保存したとすると、さらに遅延が蓄積されることになる。これが階層的に行われると、上記遅延が無視できないほど大きくなってしまうおそれがある。そこで、例えば、クライアント端末2gは、合成カメラワークデータγにおいて、カメラワークデータA〜Dそれぞれに含まれるpan、tilt、及びzoomのパラメータ部分を、図4(B)に示すように、カメラワークデータA〜Dそれぞれの取得場所を示すURLに置き換えるとよい。これにより、クライアント端末2gは、カメラワークデータA〜Dを、それぞれの取得場所から直接取得する。そして、クライアント端末2gは、取得したカメラワークデータA〜Dに含まれるpan、tilt、及びzoomと、合成カメラワークデータγとを用いて合成した動画を表示する。そのため、クライアント端末2gが、クライアント端末2dとクライアント端末2fのそれぞれによりアップロードされた合成カメラワークデータα,βを取得して図4(A)に示す合成カメラワークデータγを生成するよりも、遅延を短縮することができる。
次に、図5を参照して、クライアント端末2の制御部21の処理について説明する。図5は、クライアント端末2の制御部21またはCPUにより実行される処理の一例を示すフローチャートである。なお、図5に示す処理は、クライアント端末2a〜2hで共通である。以下の説明では、クライアント端末2aを例にとって説明する。
図5に示す処理は、クライアント端末2aにおいてプレイヤーの起動後に、例えば、クライアント端末2aのユーザが所望のコンテンツを選択することにより開始される。制御部21は、例えば、配信サーバ1へアクセスし、上記選択されたコンテンツに含まれる所定のオリジナル動画の再生開始を示すメッセージを配信サーバ1へ送信する(ステップS1)。なお、クライアント端末2aは、配信サーバ1にアクセスした後、ログイン要求メッセージを配信サーバ1へ送信することによりログインしているものとする。また、再生開始を示すメッセージには、例えばユーザのユーザ名、及び、ユーザにより選択されたコンテンツのコンテンツIDが含まれる。次いで、制御部21は、再生開始を示すメッセージに応じて、配信サーバ1から返信されたURL及びセッションIDを取得する(ステップS2)。このURLは、カメラワークデータの送信先として、配信サーバ1によりクライアント端末2aに割り当てられたURLである。また、セッションIDは、配信サーバ1とクライアント端末2aとの通信セッションを識別するIDである。
次いで、制御部21は、コンテンツの受信及び再生処理を開始する(ステップS3)。コンテンツの受信及び再生処理では、制御部21は、配信サーバ1から例えばストリーミングで配信されたコンテンツを受信して再生する。次いで、制御部21は、ステップS2で取得したURLに接続する(ステップS4)。
次いで、制御部21は、コンテンツの終了指示があったか、またはコンテンツの再生終了になったかを判定する(ステップS5)。ユーザによりコンテンツの終了指示があった、またはコンテンツの再生終了になったと判定された場合(ステップS5:YES)、図5に示す処理が終了する。一方、コンテンツの終了指示があったと判定されず、且つ、コンテンツの再生終了になっていないと判定された場合(ステップS5:NO)、制御部21は、ステップS6へ進む。
ステップS6では、制御部21は、他のクライアント端末2により送信されたカメラワークデータの取得場所を示すURLの取得指示があったか否かを判定する。ユーザによりURLの取得指示があったと判定された場合(ステップS6:YES)、制御部21は、ステップS7へ進む。一方、URLの取得指示がないと判定された場合(ステップS6:NO)、制御部21は、ステップS10へ進む。
ステップS7では、制御部21は、URL要求を示すメッセージを配信サーバ1へ送信する。URL要求を示すメッセージには、現在再生中のコンテンツのコンテンツID、及びセッションIDが含まれる。なお、URL要求を示すメッセージには、ユーザがカメラワークデータを絞り込むためのキーワード等の絞り込み条件が含まれてもよい。次いで、制御部21は、URL要求を示すメッセージに応じて、配信サーバ1から配信されたURLリストを取得する(ステップS8)。URLリストには、例えば、カメラワークデータの取得場所を示すURL、他のユーザのユーザ名、他のユーザのコメント、及びフォロワー数等の情報が含まれる。ここで、他のユーザは、カメラワークデータまたは合成カメラワークデータを送信した他のクライアント端末2のユーザである。
次いで、制御部21は、取得したURLリストに含まれる情報をカメラワーク一覧として例えば動画に重畳させてメイン画面に表示し(ステップS9)、ステップS10へ進む。カメラワーク一覧には、カメラワークデータまたは合成カメラワークデータの適用動画が表示されてもよい。これにより、ユーザに対してカメラワークデータによる仮想カメラのアングル等を把握させることができる。なお、URLリストに含まれるURLは、ユーザ名等にハイパーリンクとして設定されてもよい。
ステップS10では、制御部21は、カメラワーク一覧から1または複数のURLが指定されているか否かを判定する。カメラワーク一覧からURLが指定されていないと判定された場合(ステップS10:NO)、制御部21は、ステップS11へ進む。一方、ユーザによりカメラワーク一覧から1または複数のURLが指定されていると判定された場合(ステップS10:YES)、制御部21は、ステップS12へ進む。
ステップS11では、制御部21は、ユーザによる疑似カメラワークの操作に従って、オリジナル動画から再生時間ごとに特定された特定の画素領域に対応する動画をメイン画面に表示する。このとき、制御部21は、pan、tilt、及びzoomと、動画データの再生時間とを対応付けて含むカメラワークデータを生成する。
ステップS12では、制御部21は、ユーザにより指定されたURLが示す取得場所からカメラワークデータを取得する。例えば、制御部21は、URL指定を示すメッセージを例えば配信サーバ1へ送信する。このメッセージには、ユーザにより指定されたURL及び再生中のコンテンツのコンテンツIDが含まれる。
次いで、制御部21は、取得したカメラワークデータに従って、オリジナル動画から再生時間ごとに特定した特定の画素領域に対応する動画をメイン画面に表示する(ステップS13)。なお、複数のURLが示す取得場所それぞれからカメラワークデータが取得される場合がある。この場合、制御部21は、それぞれのカメラワークデータの適用動画をサブ画面に表示する。そして、制御部21は、複数のカメラワークデータの中から選択したカメラワークデータの適用動画をメイン画面に表示する。例えば、例えばユーザにより選択指示されたカメラワークデータ、または最初に取得されたカメラワークデータが選択される。
次いで、制御部21は、動画の編集操作があったか否かを判定する(ステップS14)。ユーザにより動画の編集操作があったと判定された場合(ステップS14:YES)、制御部21は、ステップS15へ進む。一方、動画の編集操作がないと判定された場合(ステップS14:NO)、制御部21は、ステップS16へ進む。
ステップS15では、制御部21は、ユーザによる動画の編集操作に従って、上述したように、オリジナル動画から特定した複数の特定の画素領域に対応する動画を合成してメイン画面に表示させる。ここで、複数の特定の画素領域は、再生時間ごとの複数のカメラワークデータそれぞれにより特定される。このとき、制御部21は、合成カメラワークデータを生成する。この合成カメラワークデータは、複数の特定の画素領域の表示画面における位置関係と、pan、tilt、及びzoomと、動画データの再生時間とを対応付けて含む。なお、合成カメラワークデータの生成に用いられる複数のカメラワークデータの一つには、クライアント端末2aにおいて、上記ステップS11で生成されたカメラワークデータが含まれる場合もある。
ステップS16では、制御部21は、カメラワークデータまたは合成カメラワークデータと、再生中のコンテンツのコンテンツIDとを、ステップS4で接続したURLが示す送信先に向けて送信し、ステップS5へ戻る。つまり、カメラワークデータまたは合成カメラワークデータが、上記URLが示す送信先に向けてアップロードされる。ここで、アップロード対象となるカメラワークデータは、上記ステップS11で生成されたカメラワークデータと、上記ステップS12で取得されたカメラワークデータと、上記ステップS15で生成された合成カメラワークデータとの中の何れかである。特に、合成カメラワークデータのアップロードにより、複数の特定の画素領域を異なる視点で表示させる合成カメラワークデータを、複数のクライアント端末2のユーザ間で共有させることができる。
次に、図6を参照して、配信サーバ1の制御部11の処理について説明する。図6は、配信サーバ1の制御部11またはCPUにより実行される処理の一例を示すフローチャートである。なお、図6に示す処理は、カメラワークデータの取得場所が配信サーバ1内、または配信サーバ1が制御する情報処理装置内にある場合の処理である。
図6において、配信サーバ1の制御部11は、再生開始を示すメッセージを受信したか否かを判定する(ステップS21)。例えばクライアント端末2aから送信された再生開始を示すメッセージを受信したと判定された場合(ステップS21:YES)、制御部11は、ステップS22へ進む。一方、再生開始を示すメッセージを受信していないと判定された場合(ステップS21:NO)、制御部11は、ステップS26へ進む。
ステップS22では、制御部11は、クライアント端末2aに固有のセッションIDを生成する。次いで、制御部11は、生成したセッションIDと結び付けて、カメラワークデータの取得場所を示すURLを生成する(ステップS23)。こうして、カメラワークデータの取得場所を示すURLが例えばクライアント端末2aに割り当てられる。なお、このURLには、例えば、生成されたセッションIDが識別子として含まれる。次いで、制御部11は、生成したセッションIDと、生成したURLと、再生開始を示すメッセージに含まれるユーザ名及びコンテンツIDとを対応付けてコンテンツの視聴ユーザリストに登録する(ステップS24)。次いで、制御部11は、生成したセッションIDと生成したURLとを、例えばクライアント端末2aへ返信する(ステップS25)。これにより、返信されたURL及びセッションIDは、例えば、上述したステップS2でクライアント端末2aにより取得される。
ステップS26では、制御部11は、URL要求を示すメッセージを受信したか否かを判定する。例えばクライアント端末2aから送信されたURL要求を示すメッセージを受信したと判定された場合(ステップS26:YES)、制御部11は、ステップS27へ進む。一方、URL要求を示すメッセージを受信していないと判定された場合(ステップS26:NO)、制御部11は、ステップS29へ進む。
ステップS27では、制御部11は、受信したURL要求を示すメッセージに含まれるコンテンツIDに対応付けられたURL、ユーザ名、コメント、及びフォロワー数等の情報をコンテンツの視聴ユーザリストから取得する。このとき、URL要求を示すメッセージに含まれるセッションIDに対応付けられたURL等の情報は取得対象外となる。つまり、クライアント端末2aが再生中のコンテンツと同じコンテンツを再生している他のクライアント端末2により生成されたカメラワークデータの取得場所を示すURLが取得される。なお、URL要求を示すメッセージには、絞り込み条件が含まれている場合がある。この場合、制御部11は、例えば、絞り込み条件が示すキーワードが含まれるユーザのコメントを特定する。そして、制御部11は、URL要求を示すメッセージに含まれるコンテンツIDに対応付けられ、且つ、特定したコメントに対応付けられたURL、ユーザ名、コメント、及びフォロワー数等の情報をコンテンツの視聴ユーザリストから取得する。
次いで、制御部11は、取得したURL等の情報を含むURLリストを、例えばクライアント端末2aへ返信する(ステップS28)。このURLリストは、例えば、上述したステップS8でクライアント端末2aにより取得される。なお、URLリストは、クライアント端末2aから再生開始メッセージを受信した後に、クライアント端末2aへ返信される。これにより、例えば配信サーバ1は、クライアント端末2aによる所定のオリジナル動画の再生開始に応じてクライアント端末2aから順次送信されるカメラワークデータを、上記URLが示す取得場所から他のクライアント端末2へ迅速に順次送信することができる。なお、上述したステップS9で表示されるカメラワーク一覧に、カメラワークデータまたは合成カメラワークデータの適用動画を表示させる場合がある。この場合、上記ステップS27において、制御部11は、URL要求を示すメッセージに含まれるコンテンツIDに対応付けられたURLが示す取得場所からカメラワークデータまたは合成カメラワークデータを取得する。そして、上記ステップS28において、制御部11は、取得したカメラワークデータまたは合成カメラワークデータの全部又は一部を、上記URLリストに含めてクライアント端末2aへ返信する。
ステップS29では、制御部11は、URL指定を示すメッセージを受信したか否かを判定する。例えばクライアント端末2aから送信されたURL指定を示すメッセージを受信したと判定された場合(ステップS29:YES)、制御部11は、ステップS30へ進む。一方、URL指定を示すメッセージを受信していないと判定された場合(ステップS29:NO)、制御部11は、ステップS32へ進む。
ステップS30では、制御部11は、受信したURL指定を示すメッセージに含まれるURLが示す取得場所から、URL指定を示すメッセージに含まれるコンテンツIDに対応付けられたカメラワークデータを取得する。次いで、制御部11は、取得したカメラワークデータを、例えばクライアント端末2aへ返信する(ステップS31)。これにより、例えば、配信サーバ1は、URLの指定を受け付けたことに応じて、カメラワークデータをクライアント端末2aへ迅速に順次送信することができる。このカメラワークデータは、URLのリストから指定されたURLが示す取得場所に記憶されたデータである。
ステップS32では、制御部11は、カメラワークデータまたは合成カメラワークデータを受信したか否かを判定する。例えばクライアント端末2aから送信されたカメラワークデータまたは合成カメラワークデータを受信したと判定された場合(ステップS32:YES)、制御部11は、ステップS33へ進む。一方、カメラワークデータと合成カメラワークデータのいずれも受信していないと判定された場合(ステップS32:NO)、ステップS21へ戻る。なお、図6に示す処理は、例えば、電源オフにより終了する。
ステップS33では、制御部11は、受信したカメラワークデータまたは合成カメラワークデータと、受信したコンテンツIDとを対応付けて、クライアント端末2aが接続しているURLが示す取得場所に記憶する。
以上説明したように、本実施形態によれば、例えばクライアント端末2aは、複数のカメラワークデータを用いて所定のオリジナル動画から再生時間ごとに特定された複数の特定の画素領域を異なる視点で表示させる合成カメラワークデータを他のクライアント端末から取得可能にアップロードすることができる。そのため、例えばライブ配信される動画であっても、合成カメラワークデータを複数のクライアント端末2のユーザ間で共有させることができる。