以下に、本発明による映像再生装置の実施の形態を、図面を参照して説明する。図1は、本発明の実施形態に係る映像再生装置を含む映像通信システムの構成を示すブロック図である。
この映像通信システムは、映像サーバ装置1と、映像再生装置2と、映像サーバ装置1と映像再生装置2とを接続する通信網3とからなる。
図2は、映像サーバ装置1の構成を示すブロック図である。映像サーバ装置1は、装置全体の制御を行う制御部11と、通信部12と、再生指示受信部13と、パケット送信部14と、映像コンテンツ記憶部15とからなる。
映像コンテンツ記憶部15には、映像コンテンツが記憶される。図3は、映像コンテンツ記憶部15に記憶される映像コンテンツ15aの形式を示す。映像コンテンツ15aは、第1の映像フレーム15b1、第2の映像フレーム15b2、第3の映像フレーム15b3、…からなる。
第1〜3…の映像フレーム15b1〜15b3…は、映像を所定時間間隔(以後、この間隔時間幅をDXと称する。)でサンプリングした静止画を符号化した情報である。上記符号化は、例えば、モーションJPEG方式によるフレーム内符号化によって行われるが、これに限るものではなく、その他の方式によるフレーム内符号化が行われても良い。
図4は、映像再生装置2の構成を示すブロック図である。映像再生装置2は、装置全体の制御を行い、また、実時刻を示すクロック部を内蔵する制御部21と、通信部22と、入力装置23と、再生指示送信部24と、映像バッファ部25と、デコーダ部26と、静止画を表示する映像表示部27とからなる。
映像バッファ部25には、映像データ25aが記憶される。図5は、映像バッファ部25に記憶される映像データ25aの形式を示す。映像データ25aは、第1の映像データパケット25b1、第2の映像データパケット25b2、第3の映像データパケット25b3、…からなる。
第1の映像データパケット25b1は、パケット番号25c1と、タイムスタンプ25d1と、第1の映像フレーム25e1とからなる。第2の映像データパケット25b2は、パケット番号25c2と、タイムスタンプ25d2と、第2の映像フレーム25e2とからなる。第3の映像データパケット25b3は、パケット番号25c3と、タイムスタンプ25d3と、第3の映像フレーム25e3とからなる。第4以降の、第mの映像データパケット25bmは、パケット番号25cmと、タイムスタンプ25dmと、第mの映像フレーム25emとからなる。
ここで、映像サーバ装置1が映像コンテンツ15aの映像フレーム15b1、15b2、15b3、…を第1の映像フレーム15b1から抜けなく、かつ、順次後述するように送信し、映像再生装置2は、映像サーバ装置1によって送信された全ての映像フレーム15b1、15b2、15b3、…を後述するように受信した場合、第1の映像フレーム25e1は、映像コンテンツ15aの第1の映像フレーム15b1と同じ情報である。
更に、第2の映像フレーム25e2は、映像コンテンツ15aの第2の映像フレーム15b2と同じ情報である。第3の映像フレーム25e3は、映像コンテンツ15aの第3の映像フレーム15b3と同じ情報である。また、第mの映像フレーム25emは、映像コンテンツ15aの第mの映像フレーム15bmと同じ情報である。
更に、パケット番号25c1、25c2、25c3、…は、詳しくは後述するように、一連番号である。また、タイムスタンプ25d1、25d2、25d3、…は、詳しくは後述するように、第1、第2、第3、…の映像フレーム25e1、25e2、25e3、…を表示する相対時刻である。
上記のように構成された、本発明の実施形態に係る映像通信システムの動作を、まず、図2を参照して、映像サーバ装置1の各部の動作から説明する。
まず、通信部12の動作を説明する。通信部12は、通信網3を経由して受信されたRTSP(Real Time Streaming Protocol)プロトコルに従った映像コンテンツ15aの再生指示を再生指示受信部13に送信する。また、通信部12は、パケット送信部14から送信された、上記再生指示に対するRTSPプロトコルに従った応答を通信網3を経由して送信し、かつ、パケット送信部14から送信された、上記再生指示に対する映像フレーム15bからなるRTP(Real-time Transport Protocol)プロトコルに従ったパケットを通信網3を経由して送信する。
次に、再生指示受信部13の動作を説明する。再生指示受信部13は、通信部12から送信された映像コンテンツ15aの再生指示を受信し、受信された指示に従って、パケット送信部14に映像コンテンツ15aを通信部12を経由して送信させる装置である。上記指示は、通常速度再生と、再生速度係数を指定したスロー再生と、再生速度係数を指定した早送り再生と、コマ送り再生と、一時停止とを含む。なお、再生指示受信部13は、受信された指示を待ち行列に記憶し、受信された順に処理する。
次に、パケット送信部14の動作を説明する。まず、パケット送信部14の通常速度再生の動作を説明する。映像コンテンツ15aを第1の映像フレーム15b1から再生する場合、パケット送信部14は、第1の映像フレーム15b1に対応するタイムスタンプとして「0」を、パケット番号として「1」を設定するものとして以下説明する。ここで、タイムスタンプは、第1の映像フレーム15b1を表示する相対時刻を示し、パケット番号は、第1の映像フレーム15b1を送信するRTPパケットの一連番号を示す。
そして、パケット送信部14は、通常速度再生の動作によって送信される最初のRTPパケットの一連番号をRTSP応答として、通信部12に送信させる。更に、上記設定されたパケット番号と、タイムスタンプと、第1の映像フレーム15b1とからなるRTPパケットを通信部12に送信させる。
図6は、映像フレーム15bを送信するRTPパケットの形式を示す。RTPパケット31は、パケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなる。詳しくは後述するように、前述した映像データ25aは、このRTPパケット31を映像バッファ部25に格納したものである。なお、1つの映像フレーム15b1、15b2、15b3、…は1つのRTPパケット31の映像フレーム31cとして送信されるとする。
次に、パケット送信部14は、映像フレーム31cとして第2の映像フレーム15b2を、タイムスタンプ31bとして「DX」を、パケット番号31aとして「2」を設定する。ここで、タイムスタンプ31bの「DX」は、前述したように、映像から静止画をサンプリングした間隔時間幅であって、それらの静止画から第1〜3…の映像フレーム15b1〜15b3…が作成される。即ち、「DX」は、第1の映像フレーム15b1が表示されてから第2の映像フレーム15b2が表示されるまでの時間幅を示す。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「1」であるRTPパケット31を通信部12に送信させてから「DX」経過後に、通信部12に送信させる。
次に、パケット送信部14は、映像フレーム31cとして第3の映像フレーム15b3を、タイムスタンプ31bとして「DX+DX」を、パケット番号31aとして「3」を設定する。ここで、タイムスタンプ31bの「DX+DX」は、パケット番号31aが「2」のRTPパケット31に含まれるタイムスタンプ31bの「DX」に、第2の映像フレーム15b2が表示されてから第3の映像フレーム15b3が表示されるまでの時間幅「DX」を加えた値を示す。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「2」であるRTPパケット31を通信部12に送信させてから「DX」経過後に、通信部12に送信させる。パケット送信部14は、第4以降の第mの映像フレーム15bmについても同様に送信させる。
次に、パケット送信部14の再生速度係数を指定したスロー再生の動作を説明する。映像コンテンツ15aを第1の映像フレーム15b1から再生速度係数(以後、この係数をpと称する。ここではスロー再生処理なので、p<1である。)を指定したスロー再生する場合、パケット送信部14は、映像フレーム31cとして第1の映像フレーム15b1を、タイムスタンプ31bとして「0」を、パケット番号31aとして「1」を設定する。
そして、パケット送信部14は、再生速度係数を指定したスロー再生の動作によって送信される最初のRTPパケット31のパケット番号31aをRTSP応答として、通信部12に送信させる。更に、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を通信部12に送信させる。
次に、パケット送信部14は、映像フレーム31cとして第2の映像フレーム15b2を、タイムスタンプ31bとして「DX÷p」を、パケット番号31aとして「2」を設定する。ここで、タイムスタンプ31bの「DX÷p」は、第1の映像フレーム15b1が表示されてから第2の映像フレーム15b2が表示されるまでの時間幅を示す。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「1」であるRTPパケット31を通信部12に送信させてから「DX÷p」経過後に、通信部12に送信させる。
次に、パケット送信部14は、映像フレーム31cとして第3の映像フレーム15b3を、タイムスタンプ31bとして「(DX÷p)+(DX÷p)」を、パケット番号31aとして「3」を設定する。ここで、タイムスタンプ31bの「(DX÷p)+(DX÷p)」は、パケット番号31aが「2」のRTPパケット31に含まれるタイムスタンプ31bの「DX÷p」に、第2の映像フレーム15b2が表示されてから第3の映像フレーム15b3が表示されるまでの時間巾「DX÷p」を加えた値を示す。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「2」であるRTPパケット31を通信部12に送信させてから「DX÷p」経過後に、通信部12に送信させる。
パケット送信部14は、第4以降の第mの映像フレーム15bmについても同様に送信させる。この動作によって、RTPパケット31が送信される間隔、及び、連続するRTPパケット31に含まれるタイムスタンプ31bの間隔が通常速度再生の際の「DX」から「DX÷p」に増加変更されることにより、スロー再生に対応したRTPパケット31の送信が行われる。
次に、パケット送信部14の再生速度係数を指定した早送り再生の動作を説明する。映像コンテンツ15aを第1の映像フレーム15b1から再生速度係数(p。ここでは早送り再生処理なので、p>1である。)を指定した早送り再生する場合、パケット送信部14は、映像フレーム31cとして第1の映像フレーム15b1を、タイムスタンプ31bとして「0」を、パケット番号31aとして「1」を設定する。
そして、パケット送信部14は、再生速度係数を指定した早送り再生の動作によって送信される最初のRTPパケットのパケット番号31aをRTSP応答として、通信部12に送信させる。更に、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を通信部12に送信させる。
次に、パケット送信部14は、第2の映像フレーム15b2、第3の映像フレーム15b3、第4以降の第mの映像フレーム15bmを、上記説明した、再生速度係数を指定したスロー再生の動作と同じ動作を行って、通信部12に送信させる。この動作によって、RTPパケット31が送信される間隔、及び、連続するRTPパケット31に含まれるタイムスタンプ31bの間隔が通常速度再生の際の「DX」から「DX÷p」に減少変更されることにより、早送り再生に対応したRTPパケット31の送信が行われる。
上記説明したパケット送信部14の再生速度係数を指定した早送り再生の動作によって、単位時間に通信部12よって送信されるRTPパケット31の数は増加する。例えば、通信網3の制約のため、上記増加が好ましくない場合、第2の映像フレーム15b2以降の映像フレームを間引いて通信部12に送信させても良い。
即ち、パケット送信部14は、映像フレーム31cとして映像コンテンツ15aの第mの映像フレーム15bmを、タイムスタンプ31bとして「DX」を、パケット番号31aとして「2」を設定する。ここで、mは、1+pであり、1は、パケット番号31aが「1」のRTPパケット31に含まれる映像フレーム31cが第1の映像フレーム15b1であることに対応する。また、1+pが整数でない場合、mは、1+pに最も近い整数である。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「1」であるRTPパケット31を通信部12に送信させてから「DX」経過後に、通信部12に送信させる。
次に、パケット送信部14は、映像フレーム31cとして映像コンテンツ15aの第nの映像フレーム15bnを、タイムスタンプ31bとして「DX+DX」を、パケット番号31aとして「3」を設定する。ここで、nは、1+2×pであり、1は、パケット番号31aが「1」のRTPパケット31に含まれる映像フレーム31cが第1の映像フレーム15b1であることに対応する。なお、1+2×pが整数でない場合、nは、1+2×pに最も近い整数とする。
そして、パケット送信部14は、上記設定されたパケット番号31aと、タイムスタンプ31bと、映像フレーム31cとからなるRTPパケット31を、パケット番号31aが「2」であるRTPパケット31を通信部12に送信させてから「DX」経過後に、通信部12に送信させる。
パケット送信部14は、以降のRTPパケット31を同様に作成して通信部12に送信させる。この動作によって、RTPパケット31が送信される間隔、及び、連続するRTPパケット31に含まれるタイムスタンプ31bの間隔を通常速度再生の際と同じとし、連続するRTPパケット31に含まれる映像フレーム31cを第mの映像フレーム15bmの次には第(m+p)の映像フレーム15bm+pとすることにより、早送り再生に対応するRTPパケット31の送信が行われる。
次に、パケット送信部14のコマ送り再生の動作を説明する。コマ送り再生の指示が受信された直前にRTPパケット31の要素として送信されたパケット番号31aをp1とし、そのRTPパケット31の要素として送信されたタイムスタンプ31bをts1とし、また、そのRTPパケット31の要素として送信された映像フレーム31cを映像コンテンツ15aの第mの映像フレーム15bmとする。
パケット送信部14は、再生速度係数pに依存して、パケット番号31aとして「(p1+1)」を設定し、タイムスタンプ31bとして「(ts1+DX÷p)」を設定し、映像フレーム31cとして映像コンテンツ15aの第(m+1)の映像フレーム15bm+1を設定したRTPパケット31を通信部12に送信させる。ここで、コマ送り再生の動作の直前に行った再生が通常速度再生であればp=1、上記再生がスロー再生であればp<1、早送り再生であれば、p>1である。
上記RTPパケット31を通信部12に送信させた後、パケット送信部14は、次に説明する一時停止の動作を行った後の状態になる。
次に、パケット送信部14の一時停止の動作を説明する。通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生の途中に、一時停止によって、パケット送信部14は、RTPパケット31の送信を停止する。そして、RTSP応答を通信部12に送信させる。
次に、通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生の後に、再生速度が異なる再生に変更になった、即ち、変更前の再生と、変更後の再生が異なる種類の再生である場合のパケット送信部14の動作を説明する。
これらの変更後の再生の指示が受信された直前にRTPパケット31に含めて送信されたパケット番号31aをp1とし、そのRTPパケット31に含めて送信されたタイムスタンプ31bをts1とし、そのRTPパケット31に含めて送信された映像フレーム31cを映像コンテンツ15aの第mの映像フレーム15bmとする。そして、変更後の再生の再生速度係数(p)は、スロー再生の場合、指定された1未満の数、早送り再生の場合、指定された1を超える数、そして、通常速度再生の場合、1である。
これらの指示が受信されると、パケット送信部14は、再生速度が変更されてから1番目のRTPパケット31を変更前の再生速度係数に従って設定して、設定されたRTPパケット31を通信部12に送信させる。
再生速度が変更されてから2番目以降にパケット送信部14が送信するRTPパケット31の内容は、変更後の再生が通常速度再生、再生速度係数(p)を指定したスロー再生、または、再生速度係数を指定した早送り再生であるかに依存して異なり、それぞれ、既に第1の映像フレーム15b1から再生する場合の第2の映像フレーム15b2以降の再生の動作で説明した通りであり、説明を省略する。なお、パケット送信部14は、上記再生速度が変更されてから2番目に送信されたRTPパケット31のパケット番号31a「(p1+2)」をRTSP応答として、通信部12に送信させる。
次に、映像再生装置2の各部の動作を、まず、図4を参照して、通信部22の動作から説明する。通信部22は、再生指示送信部24から送信されたRTSPプロトコルに従った映像コンテンツ15aの再生指示を、通信網3を経由して映像サーバ装置1に送信する。また、映像サーバ装置1から送信され、通信網3を経由して受信されたRTSPプロトコルに従った上記再生指示の応答を再生指示送信部24に送信する。更に、映像サーバ装置1から通信網3を経由して受信されたRTPパケット31を、そのRTPパケット31に含まれるパケット番号31aの順に映像バッファ部25に格納する。
入力装置23は、複数のキーからなり、入力装置23のキーが操作されると、このキーに対応した識別子が制御部21を経由して再生指示送信部24に通知される。この通知された識別子によって、利用者の映像コンテンツ15aの再生に関する指示が送信される。
次に、再生指示送信部24の動作を説明する。再生指示送信部24は、利用者の映像コンテンツ15aの再生に関する指示を受信する。上記指示は、通常速度再生と、再生速度係数を指定したスロー再生と、再生速度係数を指定した早送り再生と、コマ送り再生と、一時停止とを含む。
上記指示の中で、最初に受信される指示は、通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生のいずれかである。これらの再生以外の指示が受信された場合、これらの指示が受信されるまでは、再生指示送信部24は、受信された指示に対して動作をしない。再生指示送信部24は、上記受信された再生の指示を通信部22に送信して、映像サーバ装置1に送信させる。また、上記受信された再生の指示をデコーダ部26に送信する。
続いて、再生指示送信部24は、上記映像サーバ装置1に送信された指示に対する応答を通信部22から受信することによって、上記指示に対応して映像サーバ装置1から送信された最初のRTPパケット31のパケット番号31aを受信する。そして、そのRTPパケット番号31aを含むRTPパケット31が映像データ25aに含まれているか否かを所定時間間隔で調べて、上記指示を通信部22に送信してから上記RTPパケット31が映像バッファ部25に格納されるまでの経過時間(以後、WTと称する。)を算出する。
そして、再生指示送信部24は、算出されたWTを再生指示送信部24内の所定の記憶部(図示せず)に格納する。このWTは、再生指示送信部24が指示を映像サーバ装置1に向けて送信してから、その指示に従ったRTPパケット31が受信されるまでの時間として、詳しくは後述するように用いられる。
次に、上記再生の指示が受信されて、その指示に対する動作実行の後、その再生の再生速度とは異なる再生速度による再生の指示が受信された場合の、再生指示送信部24の動作を説明する。
まず、通常速度再生の動作実行の後、再生速度係数を指定したスロー再生の指示が受信された場合を例にとり、スロー再生の制御動作、即ち、ある再生速度で再生中にその再生速度より遅い再生速度での再生の指示が受信された場合の動作を、図7及び図8を参照して説明する。図7は、通常速度再生の動作実行の後、再生速度係数を指定したスロー再生の指示を受信した場合の再生指示送信部24の動作を示すフローチャートを示す。図8は、再生指示送信部24が図7のフローチャートで示す動作中の映像バッファ部25の記憶容量の使用量の変化の概要を示す。
再生指示送信部24は、再生速度係数(p。ここで、p<1。)を指定したスロー再生の指示を受信して、動作を開始する(ステップS24a)。この時の時刻はT0であり、映像バッファ部25の記憶容量の使用量は、適切な平均的な値であるとする。続いて、再生指示送信部24は、デコーダ部26に所定の速度係数pによる再生を指示し(ステップS24b)、通信部22を経由して、映像サーバ装置1に再生の一時停止を指示して(ステップS24c)、所定時間の待ちに入る(ステップS24d)。
ステップS24dで、再生指示送信部24は、直ちに映像サーバ装置1に再生速度係数pによる再生を指示しない理由は、以下の通りである。
即ち、時刻がT0〜T0+WT(以後、T0+WTをT1と称する。)までの間に、映像バッファ部25に新たに格納されるRTPパケット31の数は、デコーダ部26が時刻T0〜T1の間に通常速度再生を行うための個数であるのに対し、デコーダ部26が時刻T0〜T1の間に使用する映像データパケット25bの数は、速度係数pによる再生を行うための個数である。ここで、p<1であることから、時刻T0〜T1の間は、図8に示す通り、映像バッファ部25の記憶容量の使用量が適切な値と比較して増大を続けるからである。
再生指示送信部24は、上記所定の待ち時間を以下のように算出する。即ち、時刻T0〜T1の時間幅WTの間に、映像バッファ部25に新たに格納されるRTPパケット31の個数は、通常速度再生で
WT
の時間の表示分である。
一方、その間にデコーダ部26が使用する映像データパケット25bの個数は、通常速度再生で
p×WT
の時間の表示分であって、これらの差は、通常速度再生で(1−p)×WTの時間の表示分となる。
この差の情報をデコーダ部26が使用するまでには、
(1−p)×WT÷p
の実時間を要する。
即ち、一旦増加した映像バッファ部25の記憶容量の使用量が適切な値に戻るには、T0から
WT+(1−p)×WT÷p
=WT÷p
の実時間を経過した時点である。以後、この時刻をT2と称し、図8に、映像バッファ部25の記憶容量の使用量が適切な値に戻る状況を示す。
時刻T2以降に、デコーダ部26が速度係数pによる再生を行うのに必要なRTPパケット31を映像サーバ装置1から受信するためには、時刻T0から時刻(T2−WT)(以後、T2−WTをT3と称する。)まで、速度係数pによるスロー再生指示の映像サーバ装置1への送信を待つのが適切である。
即ち、上記待ち時間は、
T3−T0
=(T2−WT)−T0
=(T0+WT÷p)−WT−T0
=((1−p)÷p)×WT
である。
なお、0.5<p<1のときはT3<T1となり、映像再生装置2は、上記再生の一時停止指示の送信に対する映像サーバ装置1からのRTSP応答を受信する前に、上記再生速度係数pによる再生指示を送信するが、既に述べた通り、映像サーバ装置1は指示を受信順に処理するので問題ない。
ここで、時刻T0において、映像バッファ部25には、通常速度再生によって、ATの時間の表示分のRTPパケット31が記憶されているとする。この記憶された情報は、速度係数pによる再生によれば、
AT÷p
の実時間で使用される。
一方、時刻T2以後の定常状態において映像バッファ部25には、時刻T0における情報と同じデータ量の情報が記憶されるように制御するとする。この情報を、再生速度pによって映像サーバ装置1から受信するためには、
AT÷p
の実時間を要する。
即ち、この時間は、上記の時刻T0において映像バッファ部25に記憶されていた情報を使用する時間と等しいので、上記待ち時間の算出には影響しない。そこで、上記の説明では、説明を簡明にするために、時刻T0において映像バッファ部25に記憶されていた情報の量については省略した。
なお、時刻T2以後の定常状態において映像バッファ部25に記憶される情報のデータ量を時刻T0において映像バッファ部25に記憶される情報のデータ量と異なる量に制御するためには、その差に応じて、上記待ち時間の算出と同様の算出を行えば良い。
ステップS24dで、上記の時間の待ちの後、再生指示送信部24は、通信部22を経由して、映像サーバ装置1に再生速度係数をpと指定したスロー再生を指示し(ステップS24e)、その指示に対して最初に送信されたRTPパケット31のパケット番号31aを通信部22を経由して、映像サーバ装置1から受信する(ステップS24f)。
続いて、再生指示送信部24は、ステップS24fで受信されたパケット番号31aをデコーダ部26に送信して(ステップS24g)、動作を終了する(ステップS24h)。このパケット番号31aの用途は、デコーダ部26の動作説明の際に説明する。
次に、通常速度再生の動作実行の後、再生速度係数を指定した早送り再生の指示が受信された場合を例にとり、早送り再生の制御動作、即ち、ある再生速度で再生中にその再生速度より早い再生速度での再生の指示が受信された場合の再生指示送信部24の動作を図9及び図10を参照して説明する。
図9は、通常速度再生の動作実行の後、再生速度係数を指定した早送り再生の指示を受信した場合の再生指示送信部24の動作を示すフローチャートを示す。図10は、再生指示送信部24が図9のフローチャートで示す動作中の映像バッファ部25の記憶容量の使用量の変化の概要を示す。
再生指示送信部24は、再生速度係数(p。ここで、p>1。)を指定した早送り再生の指示を受信して、動作を開始する(ステップS24j)。この時の時刻はT0であり、映像バッファ部25の記憶容量の使用量は、適切な平均的な値であるとする。続いて、再生指示送信部24は、デコーダ部26に再生の一時停止を指示し(ステップS24k)、続いて、通信部22を経由して、映像サーバ装置1に再生速度係数をpと指定した早送り再生を指示し(ステップS24m)、所定時間の待ちに入る(ステップS24n)。
ステップS24kで、再生指示送信部24は、直ちにデコーダ部26に所定の速度係数pによる再生を指示しない理由は、以下の通りである。
即ち、もし、ステップS24kでデコーダ部26に所定の速度係数pによる再生を指示すると、時刻がT0からT0+WT(以後、T0+WTをT1と称する。)までの間には、映像バッファ部25に格納されるRTPパケット31は、デコーダ部26が通常速度再生を行うための個数である。一方、デコーダ部26が使用する映像データパケットは、速度係数pによる再生を行うための個数であり、p>1であることから、映像バッファ部25の記憶容量の使用量が適切な値と比較して減少し、アンダーフローが発生する恐れがあるからである。
再生指示送信部24は、上記所定の待ち時間を以下のように算出する。即ち、時刻T0からT1、即ち、時間幅WTの間に、映像バッファ部25に新たに格納されるRTPパケット31の個数は、通常速度再生で
WT
の時間の表示分である。一方、デコーダ部26は、速度係数pによる再生を行うと、この個数のRTPパケット31を
WT÷p
の実時間で使いはたす。
一方、ステップS24mで行った再生速度係数pを指定した早送り再生の指示に従って送信されたRTPパケット31が映像バッファ部25に格納され始めるのは、時刻T1、即ち、T0から
WT
の実時間が経過した時刻である。
そこで、映像バッファ部25の記憶容量の使用量を適切な値以上に保つためには、時刻T0から
WT−WT÷p
=((p−1)÷p)×WT
の実時間だけ、デコーダ部26は、再生を停止することが適切である。以後、時刻T0にこの時間を加えた時刻をT2と称する。時刻T2までは、図10に示すように、映像バッファ部25の記憶容量の使用量は増加する。
なお、時刻T0において、映像バッファ部25に記憶されていた情報のデータ量による上記待ち時間への影響は、既に、スロー再生の制御動作の説明で述べた通りであり、ここでは説明を省略する。
なお、再生指示送信部24は、ステップS24kでデコーダ部26に再生の一時停止を指示することとしたが、これに限るものではない。例えば、デコーダ部26にその前に再生されていた静止画を引き続き再生させても良い。また、再生指示送信部24内の所定の記憶部(図示せず)に記憶された所定の静止画を、デコーダ部26に継続して再生させても良い。更に、再生指示送信部24内の所定の記憶部(図示せず)に記憶された所定の映像コンテンツを、デコーダ部26に再生させても良い。
ステップS24nで、上記の時間の待ちの後、再生指示送信部24は、デコーダ部26に所定の速度係数pによる再生を指示する(ステップS24o)。そして、ステップS24mで行った映像サーバ装置1への指示に対して最初に送信されたRTPパケット31のパケット番号31aを、通信部22を経由して映像サーバ装置1から受信し(ステップS24p)、ステップS24pで受信されたパケット番号31aをデコーダ部26に送信して(ステップS24q)、動作を終了する(ステップS24r)。
次に、通常速度再生中に、一時停止の指示が受信され、その後、再度通常速度再生の指示が受信された場合を例にとり、映像バッファ部25の記憶容量の使用量を適切な値に修正する再生指示送信部24の動作を図11及び図12を参照して説明する。この例の中で、コマ送り再生の指示が受信された場合の動作も説明する。
図11は、通常速度再生中に、一時停止の指示を受信し、その後、再度通常速度再生の指示を受信した場合の再生指示送信部24の動作を示すフローチャートを示す。図12は、再生指示送信部24が図11のフローチャートで示す動作中の映像バッファ部25の記憶容量の使用量の変化の概要を示す図である。
再生指示送信部24は、通常速度再生中に一時停止の指示を受信し、動作を開始する(ステップS24s)。この時の時刻はT0であり、映像バッファ部25の記憶容量の使用量は、適切な平均的な値であるとする。続いて、再生指示送信部24は、一時停止をデコーダ部26に指示し(ステップS24t)、また、一時停止を映像サーバ装置1に指示する(ステップS24u)。
この状態が時間幅WT以上続くとする。すると、時刻がT0+WT(以後、T1と称する。)で、通常速度再生によるRTPパケット31の映像バッファ部25への新たな格納は終了し、図12に示すように、映像バッファ部25の記憶容量の使用量の増加は終了する。
次に、再生指示送信部24は、通常速度再生の指示を受信する(ステップS24v)。この時の時刻をT2とする。すると、直ちに、デコーダ部26に通常速度再生の指示を送信し(ステップS24w)、所定の時間の待ちに入る(ステップS24x)。
ここで、直ちに映像サーバ装置1に通常速度再生を指示しない理由は、以下の通りである。即ち、ステップS24uの一時停止の指示動作とステップS24vの再生指示動作との間に、具体的には、時刻がT0〜T1の間に、通常速度再生で
WT
の時間の表示分のRTPパケット31が映像バッファ部25に追加格納されている。そこで、この追加格納されたRTPパケット31をデコーダ部26が使用した後に映像サーバ装置1から送信されたRTPパケット31を映像バッファ部25に格納するのが適切だからである。
再生指示送信部24は、上記所定の待ち時間を以下のように算出する。即ち、時刻がT0〜T1、即ち、時間幅WTの間に、映像バッファ部25に格納されるRTPパケット31の個数は、通常速度再生で
WT
の時間の表示分である。このRTPパケット31をデコーダ部26が通常速度再生で使用するのに要する実時間は
WT
である。
一方、映像サーバ装置1に通常速度再生を指示してからRTPパケット31を受信するまでの実時間は
WT
である。そこで、上記待ち時間はWT−WT=0となる。そして、図12に示すように、時刻がT2+WT(以後、T3と称する。)において、映像バッファ部25の記憶容量の使用量は、適切な平均的な値に戻る。
ステップS24xで、上記の時間の待ちの後、再生指示送信部24は、通信部22を経由して、映像サーバ装置1に通常速度再生を指示して(ステップS24y)、動作を終了する(ステップS24z)。
なお、上記待ち時間が0となるのは、ステップS24sのこの動作の開始時点での再生速度と、ステップS24vで入力した再生速度が同じである場合に限る。ステップS24vで入力した指示が再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生である場合、再生速度係数pによって、ステップS24xにおける待ち時間が変化する。
即ち、時刻T0〜T1で映像バッファ部25に新たに格納されるRTPパケット31の個数は、通常速度再生で
WT
の時間の表示分である。このRTPパケット31をデコーダ部26が再生速度係数pによる再生で使用するのに要する実時間は
WT÷p
である。
一方、映像サーバ装置1に通常速度再生を指示してからRTPパケット31を受信するまでの実時間は
WT
である。そこで、上記待ち時間はWT÷p−WT=((1−p)÷p)×WTとなる。即ち、ステップS24vで入力した指示が再生速度係数を指定したスロー再生(p<1)である場合、上記時間の待ちをステップS24xで行う。
一方、ステップS24vで入力した指示が再生速度係数を指定した早送り再生(p>1)である場合、((1−p)÷p)×WTは負の値となる。即ち、ステップS24yの映像サーバ装置1への指示の送信と、ステップS24wのデコーダ部26への指示の送信の順を逆にし、それらの送信の間に、((p−1)÷p)×WTの待ち時間を取る。即ち、映像サーバ装置1への指示の送信からデコーダ部26への指示の送信までに、上記の待ち時間を取る。
なお、上記動作のステップS24uとステップS24vの間にコマ送り再生の指示が受信された場合、それが受信された都度、コマ送り再生の指示をデコーダ部26と、映像サーバ装置1に送る。図12に示す、映像バッファ部25の記憶容量の使用量の変化の概要には影響がない。
なお、既に説明した通り、映像サーバ装置1は、コマ送り再生を実行した後、一時停止状態に入る。そのため、コマ送り再生の指示を映像サーバ装置1に送った後、再生指示送信部24は、ステップS24uの動作を実行した状態にあるとして良い。
ここで、図7に示すフローチャートのステップS24f、S24gや、図9に示すステップS24p、S24qの、パケット番号31aの受信と、受信されたパケット番号31aのデコーダ部26への送信動作は、ステップS24sのこの動作の開始時点での再生速度と、ステップS24vで入力した再生速度が同じであるため、図11のフローチャートで示す動作では行う必要がない。これら2つの速度が異なる場合、上記再生速度の変更の際に説明したように、上記の2つのステップの動作を行う。
また、時刻T0において、映像バッファ部25に記憶されていた情報のデータ量による上記2つのステップの待ち時間への影響は、既に、スロー再生の制御動作の説明で述べた通りであり、ここでは説明を省略する。
なお、再生指示送信部24は、経過時間(WT)を、再生指示送信部24が動作を開始して最初に受信された再生の指示を通信部22に送信してから、上記指示に対応するRTPパケット31が映像バッファ部25に格納されるまでの時間として算出するとしたが、これに限るものではない。
再生速度を変更した再生の指示を通信部22に送信する度に経過時間(WT)を算出しても良い。または、その他の指示を通信部22に送信してから、上記指示に対応するRTSP応答を受信するまでの時間として経過時間(WT)を算出しても良い。そして、これらの場合に算出された経過時間(WT)によって、経過時間(WT)を更新しても良く、また、算出された経過時間(WT)の平均値を算出することによって経過時間(WT)としても良い。
次に、デコーダ部26の動作を説明する。デコーダ部26は、再生指示送信部24から送信された指示に基いて、映像バッファ部25に記憶された映像データパケット25bに含まれる映像フレーム25eを復号し、復号された映像フレームからなる静止画を映像表示部27に表示する装置である。
デコーダ部26は、通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生のいずれかの指示を再生指示送信部24から受信して、動作を開始する。そして、映像バッファ部25に適切な個数の映像データパケット25bが記憶されたことを待って、映像バッファ部25の先頭に記憶された映像データパケット25b、即ち、第1の映像データパケット25b1を読み出す。そして、第1の映像フレーム25e1を復号して、復号された映像フレームを映像表示部27に表示し、第1の映像データパケット25b1を映像バッファ部25から削除する。
この表示の時、第1の映像データパケット25b1のタイムスタンプ25d1を基準タイムスタンプ(以後、TSxと称する。)としてデコーダ部26内の所定の記憶部(図示せず)に記憶する。また、この表示の時の実時刻を、基準時刻(以後、Txと称する。)としてデコーダ部26内の所定の記憶部(図示せず)に記憶する。
次に、デコーダ部26は、第1の映像データパケット25b1が映像バッファ部25から削除された後、映像バッファ部25の先頭に記憶された映像データパケット25b、即ち、第2の映像データパケット25b2を読み出して、第2の映像フレーム25e2を復号する。そして、実時刻が(Tx+第2の映像データパケット25b2のタイムスタンプ25d2−TSx)となった際に、上記復号された映像フレームを映像表示部27に表示し、第2の映像データパケット25b2を映像バッファ部25から削除する。
以降に映像バッファ部25の先頭に記憶された映像データパケット25b、即ち、第3の映像データパケット25b3以降の表示についても、上記と同様であって、第3の映像フレーム25e3を復号して、実時刻が(Tx+第3の映像データパケット25b3のタイムスタンプ25d3−TSx)となった際に、上記復号された映像フレームを映像表示部27に表示し、第3の映像データパケット25b3を映像バッファ部25から削除する。これ以降の映像データパケット25bも、上記説明した通り、順次読み出し、復号、表示の処理を行う。
次に、デコーダ部26がコマ送り再生の指示を再生指示送信部24から受信した場合の動作を説明する。デコーダ部26は、コマ送り再生の指示を再生指示送信部24から受信すると、映像バッファ部25の先頭に記憶された第mの映像データパケット25bmを読み出し、第mの映像データパケット25bmの第mの映像フレーム25emを復号して、上記復号された映像フレームを映像表示部27に表示し続け、上記読み出された第mの映像データパケット25bmを映像バッファ部25から削除する。
次に、デコーダ部26が一時停止の指示を再生指示送信部24から受信した場合の動作を説明する。デコーダ部26は、一時停止の指示を再生指示送信部24から受信すると、映像バッファ部25に記憶された映像データパケット25bを読み出す処理を停止して、映像データパケット25bの映像フレーム25eを復号、表示する処理を停止する。そして、映像表示部27に表示されていた静止画を引き続き表示し続ける。
映像フレームを映像表示部27に表示する処理を停止する際、デコーダ部26は、映像表示部27に表示されていた静止画を引き続き表示し続けるとしたが、これに限るものではない。例えば、何も表示させないとしても良く、また、デコーダ部26内の所定の記憶部(図示せず)に記憶された所定の静止画を表示し続けても良い。更に、デコーダ部26内の所定の記憶部(図示せず)に記憶された所定の映像コンテンツを表示しても良い。
次に、デコーダ部26が、通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生のいずれかの指示に基いた動作を行い、その後、一時停止及び/またはコマ送りの動作を行い、再度、一時停止及び/またはコマ送りの動作の前に行っていた速度と同じ速度での再生の指示が受信された場合の動作を説明する。
デコーダ部26は、上記同じ速度での再生の指示を再生指示送信部24から受信して動作を開始する。そして、上記説明した、映像バッファ部25に適切な個数の映像データパケット25bが記憶された時にデコーダ部26が動作を開始した場合の動作を行う。
ただし、映像バッファ部25に記憶された映像データパケット25bの個数に係らず動作を行う。また、先頭の第mの映像データパケット25bmのタイムスタンプ25dmを、基準タイムスタンプ(TSx)としてデコーダ部26内の所定の記憶部に更新記憶する。また、先頭の第mの映像データパケット25bmの第mの映像フレーム25emを復号し、映像表示部27に表示した時の実時刻を、基準時刻(Tx)としてデコーダ部26内の所定の記憶部に更新記憶する。
次に、デコーダ部26が、通常速度再生、再生速度係数を指定したスロー再生、または、再生速度係数を指定した早送り再生のいずれかの指示に基いた動作を行い、その後、一時停止及び/またはコマ送りの動作の有無に係らず、上記指示に基づいた動作の際の速度と異なる速度での、即ち、速度の変更を伴った再生の指示が受信された場合の動作を説明する。ここで、変更前の再生速度に対して、変更後の再生速度はq倍であるとする。ここで、qは1ではない。
図13は、デコーダ部26の速度の変更を伴った再生の指示を受信した場合の動作のフローチャートを示す。デコーダ部26は、再生速度の変更を伴った再生の指示を受信して動作を開始し(ステップS26a)、続いて、上記説明した通り、映像バッファ部25の先頭に記憶された第mの映像データパケット25bmを読み出す。そして、その第mの映像データパケット25bmに含まる第mの映像フレーム25emを復号して、復号された映像フレームを映像表示部27に表示する。
なお、表示時刻は、変更前の再生速度に従って、タイムスタンプ25dmと基準タイムスタンプ(TSx)と基準時刻(Tx)とによって決定する。実時刻が上記決定された時刻より遅ければ、直ちに表示する。そして、その第mの映像データパケット25bmを映像バッファ部25から削除する(ステップS26b)。
続いて、デコーダ部26は、ステップS26bで読み出した第mの映像データパケット25bmのタイムスタンプ25dmを、基準タイムスタンプ(TSx)としてデコーダ部26内の所定の記憶部に更新記憶する。また、その第mの映像データパケット25bmの第mの映像フレーム25emを復号し、映像表示部27に表示した時の実時刻を、基準時刻(Tx)としてデコーダ部26内の所定の記憶部に更新記憶する(ステップS26c)。
続いて、デコーダ部26は、ステップS26bで説明した動作と同様の動作を行うが、読み出した映像データパケット25bのタイムスタンプ25dは、変更前の再生速度に依存した値が記憶されている。そこで、復号された映像フレームを映像表示部27に表示する実時刻は、(Tx+(その映像データパケット25bのタイムスタンプ25d−TSx)÷q)と調整する(ステップS26d)。この調整された時刻に表示することによって、変更前の再生速度に依存したタイムスタンプ25dを含む映像データパケット25bの映像フレーム25eを、変更後の再生速度で再生することができる。
なお、変更前の再生速度に依存したタイムスタンプ25dを含む映像データパケット25bの映像フレーム25eを、変更後の再生速度で再生するステップS26dの動作は、上記タイムスタンプ25dの調整のみに限るものではない。
変更後の再生速度が変更前の再生速度より大なる場合(q>1)、デコーダ部26は、q個の映像データパケット25bから1個の映像データパケット25bのみを映像バッファ部25から読み出して、読み出された映像データパケット25bの映像フレーム25eを復号して、上記調整された実時刻に表示しても良い。
この場合、読み出されなかった映像データパケット25bは、その映像データパケット25bの映像フレーム25eが復号、表示されることなく、映像バッファ部25から削除される。これによって、デコーダ部26の単位時間あたりに処理する映像データパケット25bの数が増加することを防ぐことができる。
既に再生指示受信部13の動作説明及び再生指示送信部24の動作説明で説明した通り、変更後の再生速度に依存したタイムスタンプ25dを含む最初の映像データパケット25bのパケット番号25cがデコーダ部26に通知される(図13には、図示せず。)。
そこで、デコーダ部26は、ステップS26dで処理した映像データパケット25bのパケット番号25cと、上記通知された変更後の再生速度に依存した最初の映像データパケット25bのパケット番号25cとを比較する(ステップS26e)。そして、前者のパケット番号25cが後者のパケット番号25c未満の場合(ステップS26eの「YES」)、ステップS26dへ戻って、先頭の映像データパケット25bの映像フレーム25eを復号し、復号された映像フレームを上記調整された時刻に表示し、そして、先頭の映像データパケット25bを削除する。
前者のパケット番号25cが後者のパケット番号25c以上の場合(ステップS26eの「NO」)、デコーダ部26は、ステップS26dで処理した映像データパケット25bのタイムスタンプ25dを、基準タイムスタンプ(TSx)としてデコーダ部26内の所定の記憶部に更新記憶する。また、その映像データパケットの映像フレームを復号し、映像表示部27に表示した時の実時刻を、基準時刻(Tx)としてデコーダ部26内の所定の記憶部に更新記憶する(ステップS26f)。
引き続き、デコーダ部26は、先頭の映像データパケット25bの映像フレーム25eを復号して、復号された映像フレームを映像表示部27に表示し、そして、先頭の映像データパケット25bを削除する動作を繰返す(ステップS26g)。ここで、その表示を行う時刻は、(Tx+その映像データパケット25bのタイムスタンプ25d−TSx)であり、上記調整は行わない。なぜなら、処理する映像データパケット25bのタイムスタンプ25dは、変更後の再生速度に依存した値となっているからである。
以上説明したように、スロー再生及び早送り再生において、変更後の再生速度に従って映像サーバ装置1から送信されたRTPパケット31に基づいて記憶された映像データパケット25bであれば、その映像データパケット25bのタイムスタンプ25dには実時間での相対再生時刻が記憶されている。そこで、デコーダ部27は、再生速度に関わらず、タイムスタンプ25dからその映像データパケット25bの映像フレーム25eを表示する時刻を算出すれば良い。
しかし、入力装置23によって再生速度の変更が指示されてから、変更後の再生速度に従って映像サーバ装置1から送信されたRTPパケット31に基づいて記憶された映像データパケット25bをデコーダ部27が処理するまでには遅延がある。そこで、デコーダ部27は、変更前の再生速度に従って映像サーバ装置1から送信されたRTPパケット31に基づいて記憶された映像データパケット25bの映像フレーム25eを変更後の再生速度で表示するため、その表示の時刻は、その映像データパケット25bのタイムスタンプ25dを上記調整の上、算出する。
以上の説明では、映像フレーム15bは1つのRTPパケット31に含まれるとしたが、これに限るものではない。映像フレーム15bが大きい場合、映像フレーム15bは、分割され、分割された映像フレーム15bがそれぞれ別のRTPパケット31に含まれるとしても良い。それらのRTPパケット31に含まれるタイムスタンプ31bには、同じ値が格納される。
また、映像フレーム15b1〜15b3…は、映像を一定の所定時間間隔「DX」でサンプリングした静止画を符号化した情報であるとしたが、これに限るものではない、直前の映像フレームをサンプリングしてから次の映像フレームをサンプリングするまでの時間間隔は、映像フレーム15b1〜15b3…によって異なっていても良い。
また、映像フレーム15bの符号化は、モーションJPEG方式によるフレーム内符号化であるとしたが、これに限るものではない。例えば、MPEG−4方式によってフレーム間符号化されても良い。フレーム間符号化されている場合、映像フレーム15bを間引く処理の際には、フレーム内符号化された映像フレーム15bを用い、フレーム間符号化された映像フレーム15bを間引けば良い。
また、映像データパケット25bを間引く処理の際には、その映像データパケット25bの映像フレーム25eがフレーム内符号化されたパケットを用い、その映像フレーム25e2がフレーム間符号化されたパケットを間引けば良い。
更に、フレーム間符号化されている場合、映像フレーム15bがフレーム内符号化されているか、フレーム間符号化されているかに従って、その映像フレーム15bを含むRTPパケット31が送信される間隔は異なる。それらの間隔の平均をRTPパケット31が送信される間隔とすれば良い。
また、モーションJPEG方式等によってフレーム内符号化されている場合、映像フレーム15bの情報量は、必ずしも一定ではない。そのため、その映像フレーム15bを含むRTPパケット31が送信される間隔は必ずしも一定ではない。それらの間隔の平均をRTPパケット31が送信される間隔とすれば良い。
また、以上の説明は、映像の再生についてであったが、映像コンテンツ15aは、更に、音声フレームの情報を含み、また、映像再生装置2は、更に、スピーカなどの発音手段を備え、映像に加えて音声を再生しても良い。音声は、通常速度再生の場合にのみ再生し、スロー再生と早送り再生の場合には再生しないものとしても良いし、また、スロー再生と早送り再生の場合の音声は、映像サーバ装置1が再生速度に応じた変形を行い、変形が行われた音声を映像再生装置2が再生するとしても良い。
更に、以上の説明は、順方向の再生についてであったが、逆方向の再生ができるようにしても良い。即ち、パケット送信部14が、映像コンテンツ15aを最後から逆順に送信できるようにしても良い。
また、映像サーバ装置1と、映像再生装置2とは、通信網3によって接続されているとしたが、これに限るものではない。例えば、信号線によって接続されていても良い。更に、1つの筐体に格納されていても良い。本発明は以上の構成に限定されるものではなく、種々の変形が可能である。