以下、図面を参照して、本発明の一実施形態による映像配信装置及び映像再生装置を説明する。図1は同実施形態の構成を示すブロック図である。この図において、符号1は、映像再生装置として機能する再生端末である。符号2は、映像配信装置として機能する配信サーバである。符号3は、再生端末1と配信サーバ2とを情報通信可能に接続するネットワークである。
再生端末1は、送信部11、受信部12、両方向バッファ制御部13、映像出力部14、操作部15、復号部16、デコーダ部17、デコード画像制御部18、デコード画像バッファ部19から構成する。送信部11は、配信サーバ2に対して、逆配信要求または順配信要求と配信サーバが再生時間のどこから配信するかを示す再生時間情報を送信する。受信部12は、配信サーバ2から配信された映像情報を受信する。
両方向バッファ制御部13は、逆配信要求または順配信要求と配信サーバ2が再生時間のどこから配信すべきかを示す再生時間情報を送信部11に送る。また、両方向バッファ制御部13は、配信サーバ2から配信されたGOP(Group Of Picture)情報、1GOP符号化データの順で受信する。また、両方向バッファ制御部13は、GOP情報により1GOP単位で符号化データを管理し、再生時間順に並んだ複数のGOPで構成されたリングバッファを作成する。また、両方向バッファ制御部13は、リングバッファの符号化データをデコーダ部17に送る。
映像出力部14は、配信サーバ2から配信された映像と音声を再生するために、映像を表示する表示装置と、音声を発音するスピーカとで構成する。操作部15は、映像視聴者が映像を視聴するための操作を行う。操作部15は、ボタン押下等の操作で順再生、順コマ送り再生、逆再生、逆コマ送り再生の操作を行う。図16に示すように、順再生は、今再生している時間から未来方向に向かった再生である。一方、逆再生は、今再生している時間から過去の方向に向かった再生である。図16は、映像再生方向を示す説明図である。
再生操作には以下の操作がある。(1)逆コマ送りボタン押下1回ごとに、1フレーム毎逆コマ再生される。(2)逆再生ボタン押下1回で再生時間の過去の方に1フレーム単位で連続(15フレーム/sec)して再生される。(3)逆スロー再生ボタン押下1回で再生時間の過去の方に1フレーム単位でスロー(15フレーム/secより遅い)再生される。(4)順コマ送りボタン押下1回ごとに、1フレーム毎順コマ再生される。(5)順再生ボタン押下1回で再生時間の未来の方に1フレーム単位で連続(15フレーム/sec)して再生される。(6)順スロー再生ボタン押下1回で再生時間の未来の方に1フレーム単位でスロー(15フレーム/secより遅い)再生される。また、操作部15は、両方向バッファ制御部13、デコード画像制御部18に対して逆再生または順再生を行うための指示を通知する。図17に、操作部15の各操作ボタンの例を示す。
復号部16は、受信部12によって受信した符号化データを復号する。デコーダ部17は、少なくとも1GOPのデコードした映像/音声を一時保存できるバッファ容量を有しており、リングバッファから受け取った符号化データを1GOP単位でデコードし、デコード画像バッファ部19へデコードした映像/音声を送る。デコード画像制御部18は、デコード画像の制御を行う。デコード画像バッファ部19は、バッファが溢れないようにするため1GOPより大きい容量(1GOP+Xフレーム)を有しており、順再生方向あるいは逆再生方向に映像/音声を映像出力部14に送り、映像出力部14に送信後すぐに映像/音声を削除しない。映像出力部14は、デコードバッファ部19から受信した映像/音声を再生する。また、音声は必ずしも再生する必要はない。
配信サーバ2は、受信部21、要求内容解析部22、再生データ保存部23、送信部24から構成する。受信部21は、再生端末1からの要求を受け取り、要求内容解析部22に送る。要求内容解析部22は、要求内容を解析し要求が逆配信の場合は、再生データ保存部23へ要求された再生時間のGOPの先頭から1GOP単位で再生時間の過去の方向に符号化データの読み出しの指示を出す。また、要求内容解析部22は、要求内容を解析し要求が順配信の場合は、再生データ保存部23へ要求された再生時間のGOPの先頭から未来の方向に符号化データの読み出しの指示を出す。
再生データ保存部23は、要求内容解析部22から逆配信の指示を受け取ると、配信要求された再生時間のGOPの先頭から1GOP単位で再生時間の過去の方向に符号化データを読み出し、さらにこの1GOPの再生時間などの情報が入ったGOP情報を作成し、GOP情報、1GOP符号化データの順で送信部24へ送る。また、再生データ保存部23は、要求内容解析部22から順配信の指示を受け取ると、配信要求された再生時間のGOPの先頭から1GOP単位で再生時間の未来の方向に符号化データを読み出し、さらに1GOP毎に再生時間などの情報が入ったGOP情報を作成し、GOP情報、1GOP符号化データの順で送信部へ送る。
送信部24は、GOP情報、1GOP符号化データの順で要求元の再生端末1に符号化データの配信レートよりオーバレート配信する。配信サーバ2の送信部24と再生端末1の受信部12間で配信のフロー制御を行っているため、オーバレート配信であっても再生端末1の両方向バッファ制御部13のバッファが溢れることはない。ここでは1GOPを0.5秒、15フレーム/secとするがこの限りではない。
次に、図2を参照して、再生開始のリングバッファシフトの動作を説明する。図2は、再生開始のリングバッファシフトの動作を示す説明図である。両方向バッファ制御部13は、符号化データをGOPで管理し、複数のGOPで構成されたリングバッファを作成する。リングバッファ作成は、リングバッファのGOP数によって決定する。リングバッファを過去GOP(以後、過去)、現在GOP(以後、現在)、未来GOP(以後、未来)と分類し、現在の再生時間より再生時間が戻ったGOPは過去、現在の再生時間より再生時間が先に進んだGOPは未来とする。現在は1つ、過去、未来は1つずつとは限らず複数でもよい。過去、未来の数はそれぞれ同じ数でなくてもよい。
ここでは、過去2、現在1、未来2の5つのGOPからなるリングバッファとする。再生開始時は、現在の位置に受信した符号化データを入れ、現在の符号化データをデコーダ部17に送信する。まず、再生開始時は、現在A1に符号化データ(0−0.5秒)を入れ(図2(1))、現在A1の符号化データをデコーダ部17に送信する。再生開始(0秒から)は、順再生とする。次に、現在A1の符号化データ(0−0.5秒)を全てデコーダ部17に送信が終わったら、過去へ1GOPシフトする。符号化データ(0.5−1.0秒)を現在A2に入れ(図2(2))、現在A2の符号化データ(0.5−1.0秒)をデコーダ部17に送信する。
次に、図3を参照して、順再生のリングバッファシフトの動作を説明する。図3は、順再生時のリングバッファシフトの動作を示す説明図である。まず、現在A2の符号化データ(0.5−1.0秒)を全てデコーダ部17に送信が終わったら、過去へ1GOPシフトする。符号化データ(1.0−1.5秒)を現在A3に入れ(図3(1))、現在A3の符号化データ(1.0−1.5秒)をデコーダ部17に送信する。
次に、現在A3の符号化データ(1.0−1.5秒)を全てデコーダ部17に送信が終わったら、過去へ1GOPシフトする。過去のGOPが2つのため、過去へ1つシフトするとき、A1(0−0.5秒)を削除する。符号化データ(1.5−2.0秒)を現在A4に入れ(図3(2))、A4現在の符号化データ(1.5−2.0秒)をデコーダ部17に送信する。
次に、図4を参照して、順再生から逆再生へ移行する際のリングバッファシフトの動作を説明する。図4は、順再生から逆再生へ移行する際のリングバッファシフトの動作を示す説明図である。まず、順再生を継続して行い、リングバッファの現在A10(4.5−5.0秒)の時(図4(1))に逆再生が要求されたものとする。過去が2GOPであるが、過去2GOPに符号化データの有無を確認し、この例では2GOPともに符号化データが入っているため、現在A10の4.5秒から3GOP過去の3.0秒(再生時間情報)からの逆配信を要求する。過去GOPに入っている符号化データの有無を確認し、過去GOP数と符号化データの有無によって、再生時間情報を決定する。
次に、現在A10の符号化データ(4.5−5.0秒)を全てデコーダ部17に送信が終わったら、現在A10(4.5−5.0秒)を未来、過去A9(4.0−4.5)が現在、過去A8(3.5−4.0)を過去へ1GOPずつシフトする。そして、逆配信で受信した符号化データ(3.0−3.5秒)を過去C1に入れ(図4(2))、現在A9の符号化データ(4.0−4.5)をデコーダ部17に送信する。
次に、図5を参照して、逆再生のリングバッファシフトの動作を説明する。図5は、逆再生のリングバッファシフトの動作を示す説明図である。まず、現在A9の符号化データ(4.0−4.5秒)を全てデコーダ部17に送信が終わったら、現在A9(4.0−4.5秒)を未来、過去A8(3.5−4.0)を現在、過去C1(3.0−3.5秒)を過去、未来A10(4.5−5.0秒)を未来へ1GOPずつ右にシフトする。そして、逆配信で受信した符号化データ(2.5−3.0秒)を過去C2に入れ(図5(1))、現在A8の符号化データ(3.5−4.0秒)をデコーダ部17に送信する。
次に、現在の符号化データA8(3.5−4.0秒)を全てデコーダ部17に送信が終わったら、現在A8(3.5−4.0秒)を未来、過去C1(3.0−3.5秒)を現在、過去C2(2.5−3.0秒)を過去、未来A9(4.0−4.5秒)を未来へ右に1GOPずつシフトする。そして、未来のGOPが2つのため、未来へ1つシフトするとき、A10(4.5−5.0秒)を削除する。続いて、逆配信で受信した符号化データ(2.0−2.5秒)を過去C3に入れ(図5(2))、現在C1の符号化データ(3.0−3.5秒)をデコーダ部17に送信する。
次に、図6を参照して、順再生の処理動作を説明する。図6は、順再生の処理動作を示す説明図である。ここでは、過去GOP1、現在GOP1、未来GOP1の3つのGOPからなるリングバッファとする。まず、両方向バッファ制御部13は、リングバッファの現在A10(4.5−5.0秒)をデコーダ部17に送る(図6(1))。次に、デコーダ部17は、現在A10(4.5−5.0秒)の符号化データを受け取り、デコードし、デコードした映像/音声をデコード画像バッファ部19に送る(図6(2))。
次に、デコード画像バッファ部19は、すでに映像出力部14に送った映像/音声A9を削除しながら、デコーダ部17からA10の先頭4.5秒から映像/音声を受け取る。そして、デコード画像バッファ部19は、再生時間の順方向に映像/音声を映像出力部14に送る。映像出力部14に送信した映像/音声は直ぐに削除しない(図6(3))。次に、映像出力部14は、デコード画像バッファ部19から受け取った映像/音声を再生する(図6(4))。音声は必ずしも再生する必要はない。
次に、図7を参照して、順再生(図6に示す処理動作)から逆再生へ移行する処理動作を説明する。図7は、順再生から逆再生へ移行する際の処理動作を示す説明図である。順再生から逆コマ送りボタン押下を行うと、操作部15は、両方向バッファ制御部13、デコード画像制御部18へ逆再生の指示を通知する(図7(1))。デコード画像制御部18は、操作部15から逆再生の指示を受け取ると、デコーダ部17にデコード画像バッファ部19へ映像/音声の送信を停止する指示を送る(図7(2))。これを受けて、デコード画像バッファ部を1つ追加する。順再生で使用していたデコード画像バッファ部をデコード画像バッファ部19−Aとし、新しく追加したデコード画像バッファ部をデコード画像バッファ部19−Bとする。
次に、両方向バッファ制御部13は、操作部15から逆再生の指示を受け取ると、逆配信要求と配信サーバ2が再生時間のどこから配信すべきかを示す再生時間情報(図6)のリングバッファの現在A10(4.5−5.0秒)からXGOP過去(ここでは、過去の符号化データが1つであり、過去A9が存在するため再生時間:3.5秒)を送信部11へ送る(図7(3))。過去が2GOPで2GOPとも符号化データが存在する場合に時間情報は、3.0秒となる。過去GOPに入っている符号化データの有無を確認し、過去GOP数と符号化データの有無によって、再生時間情報を決定する。また、両方向バッファ制御部13は、リングバッファ以外の符号化データを削除する。そして、送信部11は、配信サーバ2へ逆配信要求と再生時間情報(3.5秒)を送る(図7(4)))。逆配信要求と再生時間情報は、最初の1回のみ配信サーバ2へ送る。
次に、デコード画像バッファ部19−Aは、デコード画像制御部18から逆コマ再生要求を受け取るとそのタイミングに合わせて映像出力部14に順再生で最後に送った時間(例えば4.8秒)から、過去の再生時間方向に向かって、1フレーム毎に映像/音声を映像出力部14に送る(図7(5))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19−Aから受け取った映像/音声を再生する(図7(6))。再生が順再生から逆方向になっても順再生した時間(4.8秒)から再生時間が飛ぶことなく、1フレーム毎逆コマ再生される。音声は必ずしも再生する必要はない。
次に、デコード画像バッファ部19−Aを再生している間に、デコード画像制御部18はデコーダ部17に対して、デコーダ部17に残っているデコード映像/音声を削除する指示を出す(図7(7))。さらに、次にデコードした映像/音声は、もう1つのデコード画像バッファ部19−Bへ送る指示を出す。
次に、デコード画像バッファ部19−Aを再生している間に、両方向バッファ制御部13は逆配信された符号化データを受信し、A10を未来、A9を現在にシフトし、逆配信された符号化データ(3.5−4.0秒)を過去C1に入れる。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する(図7(8))。そして、両方向バッファ制御部13は、リングバッファの現在A9の符号化データ(4.0−4.5秒)をデコーダ部17に送る(図7(9))。これを受けて、デコーダ部17は、A9(4.0−4.5秒)の符号化データを受け取り、デコードする(図7(10))。デコードした映像/音声をデコード画像バッファ部19−Bに送る。
次に、デコード画像制御部18は、デコード画像バッファ部19−Aの再生が終わったら、操作部15から逆コマ再生要求を受け取ると、そのタイミングに合わせて1フレーム毎に、再生時間がデコード画像バッファ部19−Aの再生時間の続き(4.3秒)から過去の再生時間方向に向かって、映像/音声を映像出力部14に送る指示をデコード画像バッファ部19−Bに対して出す(図7(11))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る指示を出す。
次に、デコード画像バッファ部19−Bは、デコード画像制御部18から逆コマ再生要求を受け取ると、そのタイミングに合わせて1フレーム毎に、映像出力部14にデコード画像バッファ部19−Aの再生時間の続き(4.3秒)から過去の再生時間方向に向かって、映像/音声を映像出力部14に送る(図7(12))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19−Bから受け取った映像/音声を再生する(図7(13))。再生が逆方向になっても順再生した時間(4.3秒)から再生時間が飛ぶことなく、順再生から1フレーム毎逆コマ送り再生される。また、逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって再生される。音声は必ずしも再生する必要はない。
次に、図8を参照して、図7に示す処理動作に続く逆再生の処理動作を説明する。図8は、逆再生の処理動作を示す説明図である。デコード画像制御部18は、デコード画像バッファ部19−Bを再生している間に、デコーダ部17に対して次にデコードした映像/音声はデコード画像バッファ部19−Aへ送る指示を出す。そして、デコード画像バッファ部19−Aの映像/音声を削除する指示を送る(図8(1))。
次に、両方向バッファ制御部13は、リングバッファの現在A9の符号化データ(図7)を全てデコーダ部17に送り終わると、リングバッファのA9を未来、C1を現在にシフトし、逆配信された符号化データ(3.0−3.5秒)をC2に入れる。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する(図8(2))。
次に、両方向バッファ制御部13は、リングバッファの現在C1の符号化データ(3.5−4.0秒)をデコーダ部17に送る(図8(3))。これを受けて、デコーダ部17は、符号化データC1(3.5−4.0秒)を受け取り、デコードする。デコードした映像/音声をデコード画像バッファ部19−Aに送る(図8(4))。
次に、デコード画像制御部18は、デコード画像バッファ部19−Bの再生が終わったら、操作部15から逆コマ再生要求を受け取るとそのタイミングに合わせて1フレーム毎に、過去の再生時間方向に向かって映像/音声を映像出力部14に送る指示をデコード画像バッファ部19−Aに対して出す(図8(5))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る指示を出す。
次に、デコード画像バッファ部19−Aは、デコード画像制御部18から逆コマ再生要求を受け取ると、そのタイミングに合わせて1フレーム毎に過去の再生時間方向に向かって映像/音声を映像出力部14に送る。つまり、操作部15で逆コマ送りボタン押下1回ごとに、1フレーム毎逆コマ再生する(図8(6))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19−Aから受け取った映像/音声を再生する(図8(7))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって再生される。音声は必ずしも再生する必要はない。
次に、図9を参照して、図8に示す処理動作に続く逆再生の処理動作を説明する。図9は、逆再生の処理動作を示す説明図である。デコード画像制御部18は、デコード画像バッファ部19−Aの映像を再生している間に、デコーダ部17に対して次にデコードした画像をデコード画像バッファ部19−Bへ送る指示を出すとともに、デコード画像バッファ部19−Bの映像/音声を削除する指示を送る(図9(1))。
次に、両方向バッファ制御部13は、現在C1の符号化データ(図8)をデコーダ部17に送り終わると、C1を未来、C2を現在にシフトし、逆配信された符号化データ(2.5−3.0秒)をC3に入れる。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する(図9(2))。
次に、両方向バッファ制御部13は、リングバッファのC2現在符号化データ(3.0−3.5秒)をデコーダ部17に送る(図9(3))。これを受けて、デコーダ部17は、符号化データC2(3.0−3.5秒)を受け取り、デコードする。そして、デコードした映像/音声をデコード画像バッファ部19−Bに送る(図9(4))。
次に、デコード画像制御部18は、デコード画像バッファ部19−Aの再生が終わったら、操作部15から逆コマ再生要求を受け取るとそのタイミングに合わせて1フレーム毎に、過去の再生時間方向に向かって映像/音声を映像出力部14に送る指示をデコード画像バッファ部19−Bに対して出す(図9(5))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る指示を出す。
次に、デコード画像バッファ部19−Bは、デコード画像制御部18から逆コマ再生要求を受け取るとそのタイミングに合わせて1フレーム毎に過去の再生時間方向に向かって映像/音声を映像出力部14に送る。つまり、操作部15で逆コマ送りボタン押下1回ごとに、1フレーム毎逆コマ再生する(図9(6))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19−Bから受け取った映像/音声を再生する(図9(7))。逆再生要求の場合は、1フレーム単位で連続して過去の再生時間方向に向かって再生する。音声は必ずしも再生する必要はない。
次に、図10を参照して、配信サーバ2における逆配信の処理動作を説明する。図10は、逆配信の処理動作を示す説明図である。まず、受信部21は、再生端末1から要求を受け取り、要求内容解析部22へ送る(図10(1))。要求内容解析部22は、要求内容を解析し逆配信要求を受け取ると、再生データ保存部23へ要求された再生時間のGOPの先頭から1GOP単位で再生時間を過去の方向にさかのぼった符号化データの読み出しの指示を出す(図10(2))。
次に、再生データ保存部23は、要求内容解析部22から逆配信の指示を受け取ると、配信要求された再生時間(例:3.5秒)のGOPの先頭(3.5秒)から1GOP符号化データを読み出す。次に、今読み出したGOPから1GOPさかのぼったGOPの先頭(3.0秒)から1GOP符号化データを読み出す(図10(3))。このように、1GOP単位で過去の方向に符号化データを読み出す。また、再生データ保存部23は、送信部24へ1GOP符号化データ送信の前にこのGOPの再生時間などの情報が入ったGOP情報を作成し、GOP情報(図10においては、情報と記載)、1GOP符号化データの順で送信部24へ送る。
次に、送信部24は、GOP情報、1GOP符号化データの順で要求元の再生端末1へ符号化データ配信レートよりオーバレートで配信する(図10(4))。符号化データは、動画像データ及び音声データに圧縮処理を施した多重化データ、または、圧縮処理を施した動画データのみであってもよい。そして、配信サーバ2が再生端末1から順配信要求を受け取るまで逆配信となる。
なお、再生の途中に別の再生時間にジャンプして再生する場合に、ジャンプ先が9.3秒の場合、配信要求される再生時間情報は9.3秒であり、再生データ保存部23はこのGOPの先頭(9.0秒)から符号化データを読み出す。
次に、図11を参照して、逆再生から順再生に移行する処理動作を説明する。図11は、逆再生から順再生に移行する処理動作を示す説明図である。ここでは、過去GOP1、現在GOP1、未来GOP1の3つのGOPからなるリングバッファとする。まず、逆再生から順コマ送りボタン押下を行うと、操作部15は、両方向バッファ制御部13、デコード画像制御部18へ順再生を行う指示を通知する(図11(1))。
次に、デコード画像制御部18は、操作部15から順再生を受け取ると、デコーダ部17に逆再生で使用していたデコード画像バッファ部19−Bへ映像/音声の送信を停止する指示を送る(図11(2))。さらに、逆再生で使用していたデコード画像バッファ部19−B(デコード画像バッファ部19−Aの場合もある)に対して、デコード画像バッファ部19−B(デコード画像バッファ部19−Aの場合もある)からデコード画像バッファ部19へ名称変更を通知する。さらに、デコード画像バッファ部19−Aを削除する。順再生の場合、デコード画像バッファ部19を1つにする。
次に、両方向バッファ制御部13は、操作部15から順再生を受け取ると、順配信要求と配信サーバ2が再生時間のどこから配信すべきかを示す再生時間情報(図11のリングバッファの現在C2(3.0−3.5秒)からXGOP未来(ここでは、未来の符号化データC1が存在するため再生時間:4.0秒))を送信部11へ送る(図11(3))。未来が2GOPで2GOPとも符号化データが存在する場合に時間情報は、4.5秒となる。未来GOPに入っている符号化データの有無を確認し、未来GOP数と符号化データの有無によって、再生時間情報を決定する。また、両方向バッファ制御部13は、リングバッファ以外の符号化データを削除する。
次に、送信部11は、配信サーバ2へ順配信要求と再生時間情報(4.0秒)を送る(図11(4)))。順配信要求と再生時間情報は、最初の1回のみ配信サーバ2へ送る。
次に、デコード画像制御部18は、逆再生で使用していたデコード画像バッファ部19に対して、操作部15から順コマ再生要求を受け取るとそのタイミングに合わせて、逆再生で最後に映像出力部14へ送った時間(例えば3.2秒)から1フレーム毎に、未来の再生時間方向に向かって映像/音声を映像出力部14に送る指示を出す(図11(5))。順再生要求の場合は、1フレーム単位で連続して未来の再生時間方向に向かって、映像/音声を映像出力部14に送る指示を出す。
次に、デコード画像バッファ部19は、デコード画像制御部18から順コマ再生要求を受け取るとそのタイミングに合わせて、逆再生で最後に映像出力部14に送った時間(3.2秒)から1フレーム毎に未来の再生時間方向に向かって映像/音声を映像出力部14に送る(図11(6))。再生方向が逆になっても再生時間が飛ぶこと無く、1フレーム毎順コマ再生される。順再生要求の場合は、1フレーム単位で連続して未来の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19から受け取った映像/音声を再生する(図11(7))。順再生要求の場合は、1フレーム単位で連続して未来の再生時間方向に向かって再生する。音声は必ずしも再生する必要はない。
次に、図12を参照して、図11に示す処理動作に続く逆再生から順再生に移行する処理動作を説明する。図12は、逆再生から順再生に移行する処理動作を示す説明図である。まず、デコード画像バッファ部19の映像を再生している間に、両方向バッファ制御部13は、リングバッファから現在C2の符号化データ(図11)をデコーダ部17へ全て送り終わると、リングバッファからC3を削除、C2を過去、C1を現在にシフトし、順配信された符号化データ(4.0−4.5秒)をB1に入れる。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する(図12(1))。
次に、両方向バッファ制御部13は、リングバッファの現在C1の符号化データ(3.5−4.0秒)をデコーダ部17に送る(図12(2))。これを受けて、デコーダ部17は、C1(3.5−4.0秒)の符号化データを受け取り、デコードする。デコードした映像/音声をデコード画像バッファ部19に送る(図12(3))。
次に、デコード画像バッファ部19は、再生した映像/音声C2を削除しながら、デコーダ部17からC1の先頭3.5秒から映像/音声を受け取る。また、デコード画像制御部18から順コマ再生要求を受け取るとそのタイミングに合わせて1フレーム毎に未来の再生時間方向に向かって映像/音声を映像出力部14に送る(図12(4))。つまり、操作部15で順コマ送りボタン押下1回ごとに、1フレーム毎順コマ再生する。順再生要求の場合は、1フレーム単位で連続して未来の再生時間方向に向かって、映像/音声を映像出力部14に送る。
次に、映像出力部14は、デコード画像バッファ部19から受け取った映像/音声を再生する(図12(5))。順再生要求の場合は、1フレーム単位で連続して未来の再生時間方向に向かって再生する。音声は必ずしも再生する必要はない。
次に、図13を参照して、配信サーバ2における順配信の処理動作を説明する。図13は、配信サーバ2における順配信の処理動作を示す説明図である。まず、受信部21は、再生端末1から要求を受け取り、要求内容解析部22へ送る(図13(1))。要求内容解析部22は、要求内容を解析し順配信要求を受け取ると、再生データ保存部23へ要求された再生時間のGOPの先頭から1GOP単位で再生時間を未来の方向に向かった符号化データの読み出しの指示を出す(図13(2))。
次に、再生データ保存部23は、要求内容解析部22から順配信の指示を受け取ると、配信要求された再生時間(例:4.0秒)のGOPの先頭(4.0秒)から符号化データを読み出す。続いて、再生データ保存部23は、1GOPの再生時間などの情報が入ったGOP情報を作成し、GOP情報、1GOP符号化データの順で送信部24へ送る(図13(3))。
次に、送信部24は、GOP情報、1GOP符号化データの順で要求元の再生端末1へ符号化データ配信レートよりオーバレートで配信する(図13(4))。符号化データは、動画像データ及び音声データに圧縮処理を施した多重化データ、または、圧縮処理を施した動画データのみであってもよい。して、配信サーバ2が再生端末1から逆配信要求を受け取るまで順配信となる。
なお、再生の途中に別の再生時間にジャンプして再生する場合に、ジャンプ先が9.3秒の場合、配信要求される再生時間情報は9.3秒であり、再生データ保存部23はこのGOPの先頭(9.0秒)から符号化データを読み出す。
次に、図14を参照して、ジャンプ再生のリングバッファシフトの処理動作を説明する。図14は、ジャンプ再生のリングバッファシフトの処理動作を示す説明図である。図14は、順再生中にジャンプ再生を行い、ジャンプ再生直後に逆再生に移行した例である。ジャンプ再生は、現在視聴している再生時間から過去や未来にジャンプした先からの再生をおこなうもので、再生端末1からジャンプ先の再生時間情報を配信サーバ2へ送る。ジャンプ再生要求時には、配信サーバ2へは再生時間情報のみを送り、逆配信または順配信はそのまま継続される。図17で示すように、操作部15で再生の経過を表示するシークバー上を現在再生している再生時間から過去や未来の方向にマウス等でクリックすることで、操作部15は、ジャンプ再生と理解する。操作部15から両方向バッファ制御部13とデコード画像制御部18へジャンプ再生と再生時間情報を通知する。また、操作部15は、送信部11へジャンプ先の再生時間情報を送る。送信部11は、配信サーバ2へジャンプ先の再生時間情報を送る。受信部21は、送信部11から再生時間情報を受け取り、要求解析部22は、受信部21から再生時間情報を受け取ると、再生データ保存部23へ、要求された再生時間情報のGOPの先頭から読み出す指示を出す。再生データ保存部23は、逆配信または、順配信は継続したままで、今読み出しているGOPを読み出し終了後、要求された再生時間のGOPの先頭から過去の方向または、未来の方向に向かって読み出す。符号化データの読み出し方、GOP情報作成、GOP情報、符号化データの配信、受信方法は同じである。ジャンプ再生の場合、両方向バッファ制御部13の符号化データを一旦全て削除する。ここでは、過去GOP2、現在GOP1、未来GOP2の5つのGOPからなるリングバッファとする。デコード画像制御部18は、ジャンプ再生を受け取ると、デコード画像バッファ部19に映像出力部14への映像/音声の送信停止と、デコード画像バッファ部19の映像/音声削除の指示を出す。また、デコーダ部17へは、デコード画像バッファ部19へ映像/音声の送信停止とデコーダ部17に残っている映像/音声の削除の指示を出す。
両方向バッファ制御部13は、ジャンプ先の再生時間の符号化データを受信すると、ジャンプ先の符号化データ(9.0−9.5秒)を現在A1に入れる(図14(1))。現在A1の符号化データをデコーダ部17に送信する。ジャンプ先の符号化データ現在A1(9.0−9.5秒)の時に逆再生が要求された時、過去が2GOPであるが、過去2GOPに符号化データの有無を確認し、この例では2GOPともに空のため、現在A1の9.0秒から1GOP過去の8.5秒(再生時間情報)からの逆配信を要求する。過去GOPに入っている符号化データの有無を確認し、過去GOP数と符号化データの有無によって、再生時間情報を決定する。
現在A1の符号化データ(9.0−9.5秒)を全てデコーダ部17に送信が終わったら、未来へ1つシフトし、逆配信の符号化データ(8.5−9.0秒)を現在C1に入れ(図14(2))、現在C1の符号化データ(8.5−9.0秒)をデコーダ部17に送信する。デコーダ部17は、デコードしたC1映像/音声を新しく追加したもう1つのデコード画像バッファ部19−Bに送る。逆再生は、図4、5、7〜10に示す処理動作と同じであるため、ここでは詳細な説明を省略する。リングバッファシフトは、未来方向に1GOPずつシフトしながら、現在GOPに逆配信の符号化データを入れる。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する。
次に、図15を参照して、ジャンプ再生のリングバッファシフトの処理動作を説明する。図15は、ジャンプ再生のリングバッファシフトの処理動作を示す説明図である。図15は、逆再生中にジャンプ再生を行い、ジャンプ再生直後に順再生に移行した例である。
デコード画像制御部18は、ジャンプ再生を受け取ると、今現在逆再生で使用しているデコード画像バッファ部19−A(19−Bの場合もある)へ映像出力部14への映像/音声の送信停止と、映像/音声削除の指示を出す。また、デコーダ部17へは、今現在逆再生で使用しているデコード画像バッファ部19−A(19−Bの場合もある)へ映像/音声の送信停止とデコーダ部17に残っている映像/音声の削除の指示を出す。
両方向バッファ制御部13は、ジャンプ先の再生時間の符号化データを受信すると、ジャンプ先の符号化データ(4.0−4.5秒)を現在A1に入れる(図15(1))。現在A1の符号化データをデコーダ部17に送信する。ジャンプ先の符号化データ現在A1(4.0−4.5秒)の時に順再生が要求された時、未来が2GOPであるが、未来2GOPに符号化データの有無を確認し、この例では2GOPともに空のため、現在A1の4.0秒から1GOP未来の4.5秒(再生時間情報)からの順配信を要求する。未来GOPに入っている符号化データの有無を確認し、未来GOP数と符号化データの有無によって、再生時間情報を決定する。
現在A1の符号化データ(4.0−4.5秒)を全てデコーダ部17に送信が終わったら、過去へ1つシフトし、順配信の符号化データ(4.5−5.0秒)を現在B1に入れ(図15(2))、現在B1の符号化データ(4.5−5.0秒)をデコーダ部17に送信する。デコーダ部17は、デコードした映像/音声を今現在逆再生で使用しているデコード画像バッファ部19−A(19−Bの場合もある)に送る。今現在逆再生で使用しているデコード画像バッファ部19−A(19−Bの場合もある)を残し、片方のデコード画像バッファ部19−Aまたは19−Bを削除する。順再生の場合、デコード画像バッファ部19を1つにする。順再生は、図2、3、6、11、12、13に示す処理動作と同じであるため、ここでは詳細な説明を省略する。リングバッファシフトは、過去方向に1GOPずつシフトしながら、現在GOPに順配信の符号化データを入れる。
以上説明したように、符号化データをストリーム配信で受信しながらも再生が途切れることなく順再生から逆再生、逆コマ送り再生を行うために、再生端末1は、配信サーバ2へ再生時間情報を付与して逆配信要求を行い、配信サーバ2は、逆配信要求の場合に、要求された再生時間のGOPからGOP単位で過去の再生方向へ向かってGOP情報、1GOP符号化データの順で配信する。再生端末1は、配信サーバ2から配信されたGOP情報、1GOP符号化データの順で受信する。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する。再生時間の過去からの順に少なくとも3つのGOPをリングバッファとして管理し、3GOPを再生時間の順に過去GOP、現在GOP、未来GOPと分類し、逆再生の場合、GOP単位で未来方向にシフトさせ、リングバッファに逆配信要求した符号化データを入れ、リングバッファの現在GOPの1GOP符号化データを復号し、デコード画像バッファを少なくとも2つ用意し、これらのデコード画像バッファを制御し逆方向に再生する。逆再生の場合、過去GOPに入っている符号化データの有無を確認し、過去GOP数と符号化データの有無によって、配信サーバ2が再生時間のどこから配信すべきかを示す再生時間情報を決定する。
また、符号化データをストリーム配信で受信しながらも再生が途切れることなく逆再生から順再生、順コマ送り再生を行うために、再生端末1は、配信サーバ2へ再生時間情報を付与して順配信要求を行い、配信サーバ2は、順配信要求の場合に、要求された再生時間のGOPからGOP単位で未来の再生方向へ向かって、GOP情報、1GOP符号化データを配信する。再生端末1は、配信サーバ2から配信されたGOP情報、1GOP符号化データの順で受信する。両方向バッファ制御部13は、GOP情報を受信し、1GOP単位で符号化データを管理する。再生時間の過去からの順に少なくとも3つのGOPをリングバッファとして管理し、3GOPを再生時間の順に過去GOP、現在GOP、未来GOPと分類し、順再生の場合、GOP単位で過去方向にシフトさせ、リングバッファに順配信要求した符号化データを入れ、リングバッファの現在GOPの1GOP符号化データを復号し、デコード画像バッファを少なくとも1つ用意し、このデコード画像バッファを制御し順方向に再生する。順再生の場合、未来GOPに入っている符号化データの有無を確認し、未来GOP数と符号化データの有無によって、配信サーバが再生時間のどこから配信すべきかを示す再生時間情報を決定する。
また、順再生から逆再生、逆再生から順再生と再生方向が逆になった時に、再生の途切れを発生させないために、符号化データの配信レートよりもオーバレートで配信する。
逆再生の場合、再生端末1から配信サーバ2に逆配信を要求し、配信サーバ2からはGOP単位で過去の方向に符号化データをオーバレートで配信し、再生端末1は、受信した符号化データをGOP単位で管理し、再生時間の過去からの順に少なくとも3つのGOPをリングバッファとして管理し、リングバッファの現在の1GOP符号化データを復号し、デコード画像バッファを少なくとも2つ用意し、これらのデコード画像バッファを制御することにより、ストリーム配信であっても映像が途切れることなく、Iピクチャ、Pピクチャ、Bピクチャを含むすべてのピクチャを順再生から逆コマ送り再生、逆送り再生が可能となる。
また、順再生の場合、再生端末1から配信サーバ2に順配信を要求し、配信サーバ2からはGOP単位で未来の方向に符号化データをオーバレートで配信し、再生端末1は、受信した符号化データをGOP単位で管理し、再生時間の過去からの順に少なくとも3つのGOPをリングバッファとして管理し、リングバッファの現在の1GOP符号化データを復号し、デコード画像バッファを少なくとも1つ用意し、デコード画像バッファを制御することにより、ストリーム配信であっても映像が途切れることなく、Iピクチャ、Pピクチャ、Bピクチャを含むすべてのピクチャを逆再生から順コマ送り再生、順再生が可能となる。
なお、図1における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより映像配信処理及び映像再生処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行っても良い。