(57)【要約】  【課題】  ビデオオンデマンドシステムにおいて、クライアントのＣＰＵ負荷があがったり、ビデオサーバのディスク負荷があがったりしても再生速度を一定に保ち、視聴者の違和感を少なくする。  【解決手段】  サーバ１０１は、はじめに指定された再生速度を維持するためのＩフレーム送信時間間隔と映像ファイル上で次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する。そしてビデオサーバまたはクライアントの負荷の上昇により実際のＩフレーム送信時間間隔が延びたとき、指定された再生速度を維持するようにはじめのＩフレーム送信時間間隔とシーク時間間隔を補正する。【選択図】  図１
2005318190.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置による映像配信方法において、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定するステップと、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出すステップと、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信するステップと、
実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正するステップとを有し、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出すステップと前記クライアント装置へ送信するステップを実行することを特徴とする映像配信方法。
【請求項２】
可能なＩフレーム送信時間間隔がほぼ補正前の前記Ｉフレーム送信時間間隔になったとき、補正後の前記Ｉフレーム送信時間間隔を補正前の前記Ｉフレーム送信時間間隔に戻すことを特徴とする請求項１に記載の映像配信方法。
【請求項３】
クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置による映像配信方法において、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定するステップと、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出すステップと、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信するステップと、
前記クライアント装置から現在の表示時間間隔を取得するステップと、
実際のＩフレーム送信時間間隔が前記現在の表示時間間隔より小さい場合に、前記実際のＩフレーム送信時間間隔を前記現在の表示時間間隔に修正するステップと、
前記実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正するステップとを有し、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出すステップと前記クライアント装置へ送信するステップを実行することを特徴とする映像配信方法。
【請求項４】
クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置に、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する機能、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出す機能、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信する機能、および
実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正する機能を実現させ、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出す機能と前記クライアント装置へ送信する機能を実現させることを特徴とするプログラム。
【請求項５】
クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置に、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する機能、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出す機能、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信する機能、
前記クライアント装置から現在の表示時間間隔を取得する機能、
実際のＩフレーム送信時間間隔が前記現在の表示時間間隔より小さい場合に、前記実際のＩフレーム送信時間間隔を前記現在の表示時間間隔に修正する機能、および
前記実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正する機能を実現させ、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出す機能と前記クライアント装置へ送信する機能を実現させることを特徴とするプログラム。
【請求項６】
映像データの配信を要求するクライアント装置と、前記クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置とを有する映像配信システムにおいて、前記サーバ装置は、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する手段と、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出す手段と、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信する手段と、
実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正する手段とを有し、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出す手段と、前記クライアント装置へ送信する手段の処理を実行する手段を有することを特徴とする映像配信システム。
【請求項７】
前記サーバ装置は、さらに可能なＩフレーム送信時間間隔がほぼ補正前の前記Ｉフレーム送信時間間隔になったとき、補正後の前記Ｉフレーム送信時間間隔を補正前の前記Ｉフレーム送信時間間隔に戻す手段を有することを特徴とする請求項６に記載の映像配信システム。
【請求項８】
映像データの配信を要求するクライアント装置と、前記クライアント装置からの要求に従いネットワークを介してＩフレームデータを前記クライアント装置に配信するサーバ装置とを有する映像配信システムにおいて、前記サーバ装置は、
前記クライアント装置側の再生速度、最大表示フレームレートおよび前記サーバ装置側の映像ファイルに挿入されるＩフレームの時間間隔を意味するＩフレーム挿入時間間隔から、送信可能なだけのＩフレームを送信するためにＩフレーム送信時間間隔と次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する手段と、
前記シーク時間間隔で前記映像ファイルから次のＩフレームを読み出す手段と、
読み出したＩフレームを前記Ｉフレーム送信時間間隔で前記クライアント装置へ送信する手段と、
前記クライアント装置から現在の表示時間間隔を取得する手段と、
実際のＩフレーム送信時間間隔が前記現在の表示時間間隔より小さい場合に、前記実際のＩフレーム送信時間間隔を前記現在の表示時間間隔に修正する手段と、
前記実際のＩフレーム送信時間間隔が前記Ｉフレーム送信時間間隔より大きい場合に、前記実際のＩフレーム送信時間間隔によって前記Ｉフレーム送信時間間隔を補正し、前記実際のＩフレーム送信時間間隔と前記再生速度によって前記シーク時間間隔を補正する手段とを有し、
補正後の前記Ｉフレーム送信時間間隔と前記シーク時間間隔とを用いて前記次のＩフレームを読み出す手段と前記クライアント装置へ送信する手段の処理を実行する手段を有することを特徴とする映像配信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオサーバの映像データ送出制御技術に係り、特に映像のＩフレームのみを配信する映像高速再生技術に関する。
【背景技術】
【０００２】
映像圧縮技術の向上とネットワークの高速化により、映像をサーバに蓄積し、ユーザの要求に応じて映像を配信するビデオオンデマンドという視聴形態が普及してきた。ビデオオンデマンドには、ネットワーク帯域という有限のリソースを利用するという制約が存在する。そしてこの制約の下で従来ビデオデッキで可能であった早送り機能が備わっていることが求められる。
【０００３】
ビデオオンデマンドシステムで早送りを実現する方法には、サーバが全映像データを通常再生時より高速に送信し、クライアントが受け取ったデータをすべてデコードする滑らかな早送り方式と、サーバが映像のすべてを送信するのではなく、フレーム間相関を利用しないアルゴリズムで符号化されているIフレームのみを送信するフレーム飛ばし方式の２つがある。
【０００４】
利用可能なネットワーク帯域とクライアントのデコード能力には限界があるため、ビデオオンデマンドシステムでは、通常フレーム飛ばし方式の高速再生をサポートする。
【０００５】
フレーム飛ばし方式の高速再生を実現する従来技術としては、特開平１０−３２８０９号公報に記載された技術がある。これは映像ファイル中のＩフレームの挿入間隔と要求された再生速度から、送信すべきＩフレームを選択し、クライアントにおける表示時間間隔を算出し正確な速度でフレーム飛ばし再生を実現する方式を示したものである。
【０００６】
【特許文献１】特開平１０−３２８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の従来技術によれば、Iフレームのみを送信する再生方式を利用し、指定した速度で映像を再生できる。しかしクライアントのＰＣ（パソコン）においてＣＰＵ負荷が高く、サーバから送られた映像のレンダリングが予定通り行われなかった場合や、サーバにおいて映像を格納するディスクのディスク負荷が高く、予定した時間内で映像ファイルの読み込みができない場合には、映像再生速度が遅くなったり、正常に再生できなかったりするといった問題があった。
【０００８】
本発明は、クライアントおよびサーバの負荷を考慮するフレーム飛ばしの配信技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、はじめに指定された再生速度を維持するためのＩフレーム送信時間間隔と映像ファイル上で次のＩフレームまでのシーク時間を意味するシーク時間間隔とを設定する。そしてビデオサーバまたはクライアントの負荷の上昇により実際のＩフレーム送信時間間隔が延びたとき、指定された再生速度を維持するようにはじめのＩフレーム送信時間間隔とシーク時間間隔を補正する。
【発明の効果】
【００１０】
本発明によれば、クライアントのＣＰＵ負荷があがったり、ビデオサーバのディスク負荷があがったりしても再生速度を一定に保つことができるため、視聴者の違和感を少なくすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について図面を用いて説明する。
【実施例１】
【００１２】
図１は、実施形態のビデオオンデマンドシステムの構成図である。本システムは、クライアント１０２からネットワーク１０５を介して映像制御コマンドを受け取り、映像ファイルの該当個所をクライアント１０２に送出するサーバ１０１と、サーバ１０１からネットワーク１０５を介して映像データを受け取って再生するクライアント１０２と、ネットワーク１０５からなる。
【００１３】
サーバ１０１は、映像配信パラメータを保持し管理する配信設定管理部１０３と、クライアントからの映像制御コマンドを受け付ける制御コマンド受信部１０４と、映像制御コマンドを受け映像データの配信処理を行うストリーム送出制御部１０９と、映像ファイルにアクセスし映像データを読み出すファイル読み出し部１０８と、映像ファイル１１２を格納する記憶装置１１１とから構成される。ただし記憶装置１１１は別のサーバ上にあってもよい。
【００１４】
クライアント１０２は、外部の入力装置１００から入力された映像制御コマンドに従って制御コマンドの送出から映像データの再生までの全体を制御するプレーヤ制御部１０７と、サーバに対し映像制御コマンドを送信する制御コマンド送信部１０６と、サーバから映像データを受信するストリーム受信部１１０と、受信した映像データの映像部分と音声部分を分離するＡ／Ｖ多重化解除部１１３と、符号化された映像をデコードして映像を復元する映像デコード部１１４と、映像データをモニタ１１６に表示する映像レンダラ１１５と、符号化された音声データをデコードして音声を復元するオーディオデコード部１１７と、音声を生成してスピーカ１１９に再生するオーディオレンダラ１１８とから構成される。
【００１５】
クライアント１０２を構成する各コンポーネントを詳細に説明する。
【００１６】
プレーヤ制御部１０７は、入力装置１００から映像制御コマンドを受けると、制御コマンド送信部１０６に制御コマンド送信を指示する。制御コマンドは、サーバとクライアントを接続するための接続コマンドと、映像の再生、早送りまたは巻き戻しを要求する再生コマンドと、クライアントとサーバとの間のコネクションを切断するための切断コマンドの３種類を備える。
【００１７】
制御コマンド送信部１０６は、プレーヤ制御部１０７から受けた指令が接続コマンドの場合は、ネットワーク１０５を介してサーバ１０１の制御コマンド受信部１０４に接続要求メッセージを送信し、その応答として接続応答メッセージを受信する。制御コマンド送信部１０６は、接続応答メッセージに含まれるセッションＩＤと映像ファイル１１２の宛先であるＵＲＬをストリーム受信部１１０に渡す。再生コマンドの場合は、制御コマンド送信部１０６は、ストリーム受信部１１０にコマンドをそのまま渡す。
【００１８】
ストリーム受信部１１０は、制御コマンド送信部１０６から再生コマンドを受け取ると、先に受け取ったＵＲＬに対して、ＨＴＴＰプロトコルのＰＯＳＴ命令を用いて映像再生要求メッセージ２２０を送信する。このメッセージの応答として、ストリーム受信部１１０は、映像データを受信し、受信した映像データをＡ／Ｖ多重化解除部１１３へ渡す。
【００１９】
Ａ／Ｖ多重化解除部１１３は、受け取ったデータをビデオとオーディオに分解し、それぞれ映像デコード部１１４と、オーディオデコード部１１７へ渡す。
【００２０】
映像デコード部１１４は、圧縮されたビデオデータを伸張して映像データを生成し、再生すべき時間とともに映像レンダラ１１５へ渡す。映像レンダラ１１５は、映像デコード部１１４から受け取った映像データをモニタ１１６に表示する。
【００２１】
クライアント１０２は、ＰＣのような計算機であり、ＣＰＵとメモリを備える。クライアント１０２の図示するコンポーネントは、ＣＰＵがメモリに格納されたプログラムを実行することによって実現される。
【００２２】
続いてサーバ１０１を構成するコンポーネントの詳細を説明する。
【００２３】
制御コマンド受信部１０４は、制御コマンド送信部１０６が送信した接続要求メッセージを受信した場合には、その要求を配信設定管理部１０３に転送し、配信設定管理部１０３が生成したセッションＩＤとＵＲＬを受け取り、制御コマンド送信部１０６へ接続応答メッセージを返信する。
【００２４】
配信設定管理部１０３は、制御コマンド受信部１０４から接続コマンドを受けたときには、セッションＩＤとＵＲＬを生成し、内部に保持する配信設定テーブルに格納する。また再生コマンドを受けたときには、該当するセッションＩＤに対応してその制御コマンドと最大再生フレームレート、再生開始位置を記録する。配信設定管理部１０３が配信情報を集中して管理することにより、ビデオサーバの状態を監視するのが容易になる。
【００２５】
ストリーム送出制御部１０９は、ファイル読み出し部１０８に映像ファイル１１２の指定範囲の読み出し指令を発行し、読み出した映像データをネットワーク１０５経由でクライアント１０２のストリーム受信部１１０に送信する。特に高速再生コマンドの場合には、ストリーム送出制御部１０９は、Ｉフレームデータを送信する。なお再生コマンド処理時の処理手順の詳細は後述する。
【００２６】
ファイル読み出し部１０８は、ストリーム送出制御部１０９から受けたファイル読み出し命令に従い、映像ファイル１１２の該当するデータの範囲を読み出し、ストリーム送出部１０９に渡す。
【００２７】
サーバ１０１は、サーバ計算機のような計算機であり、ＣＰＵとメモリを備える。サーバ１０１の図示するコンポーネントは、そのＣＰＵがメモリに格納されたプログラムを実行することによって実現される。
【００２８】
次に図２を用いて、映像制御コマンドメッセージのデータ形式について説明する。映像制御コマンドメッセージには、接続要求メッセージ２００と、その応答である接続応答メッセージ２１０と、再生、早送り、巻き戻しを要求する映像再生要求メッセージ２２０と、その応答である映像再生応答メッセージがある。
【００２９】
接続要求メッセージ２００は、送信されるデータがない。接続応答メッセージ２１０は、サーバとクライアントとの間の接続を識別可能なセッションＩＤ２１１と、映像データを受信するサイトのアドレスであるＵＲＬ２１２からなる。映像再生要求メッセージ２２０は、接続を管理するためのセッションＩＤ２１１と、制御コマンド２２２と、再生速度２２３と、再生開始位置２２４と、フレーム飛ばし再生時の最大表示フレームレートであるクライアント最大表示ｆｐｓ２２５からなる。映像再生応答メッセージ２３０は、映像再生要求の実行が成功したか否かを表す可否２３１から成る。
【００３０】
次に図３を用いて配信設定管理部１０３が保持する配信設定テーブルについて説明する。配信設定テーブル３００は、配信先を一意に識別するためのセッションＩＤ３０２と、制御コマンドの種類を示す制御コマンド３０３と、再生速度３０４と、再生開始位置３０５と、フレーム飛ばし再生時の最大表示フレームレートである最大送信フレームレート３０６と、映像配信用のＵＲＬ３０７などを有する。再生速度３０４は、ｎ倍速のｎを示す無次元数である。
【００３１】
次にストリーム送出制御部１０９がファイル読み出し部１０８とともに実行する高速再生処理の処理手順について図４のＰＡＤ図を用いて説明する。本アルゴリズムは、クライアントの映像再生速度を意味する「再生速度」と、映像ファイル内に挿入されているIフレームの時間間隔を意味する「Iフレーム挿入時間間隔」と、クライアント側で受け付け可能な映像の最大フレームレートを意味する「最大表示フレームレート」と、サーバでIフレームを送信する時間間隔を意味する「Iフレーム送信時間間隔」（ｍｓｅｃ）と、次に探索の対象とするＩフレームまでのシーク時間を意味する「シーク時間間隔」（ｍｓｅｃ）と、予定の「シーク位置時間」と読み出したIフレームのタイムスタンプ（ｍｓｅｃ）との差分時間であるIフレーム誤差時間（ｍｓｅｃ）と、「シーク位置時間」（ｍｓｅｃ）を保存する変数である「前回のシーク位置時間」と、「シーク位置」（バイト）を保存する変数である「前回のシーク位置」を変数として使用する。以下、「」は一般用語ではなく変数を意味する。
【００３２】
ステップ４０１では、ストリーム送出制御部１０９は、配信設定管理部１０３から当該セッションについて「再生速度」と「最大表示フレームレート」を取得し、これらのパラメータと当該映像ファイルの「Ｉフレーム挿入時間間隔」とから、「Ｉフレーム送信時間間隔」（ｍｓｅｃ)」と「シーク時間間隔」（ｍｓｅｃ）を算出する。
【００３３】
「Iフレーム送信時間間隔」は、(１)「再生速度」<=「最大表示フレームレート」×「Iフレーム挿入時間間隔」、(２) 「再生速度」>「最大表示フレームレート」×「Iフレーム挿入時間間隔」、によって算出の仕方が異なる。  
(１)の条件では、ファイル内のすべてのＩフレームを送信可能であるため、
「Ｉフレーム送信時間間隔」＝「Iフレーム挿入時間間隔」/「再生速度」（無次元）
「シーク時間間隔」＝「Iフレーム挿入時間間隔」
である。この値では、ファイル内のすべてのIフレームを送信することになる。
【００３４】
(２)の条件では、ファイル内のすべてのIフレームを送信できないため、
「Ｉフレーム送信時間間隔」=１０００/「最大表示フレームレート」（ｓｅｃ）
「シーク時間間隔」=「Ｉフレーム送信時間間隔」×「再生速度」
である。この条件では、ファイル内に存在するIフレームを適切に読み飛ばして送信することになる。
【００３５】
ステップ４０２では、ストリーム送出制御部１０９は、「シーク位置時間」（ｍｓｅｃ）に「再生開始位置」（ｍｓｅｃ）を代入し、「Iフレーム誤差時間」（ｍｓｅｃ）を０に初期化する。「再生開始位置」は、映像ファイルの先頭を０ｍｓｅｃとする変数であり、その初期値は制御コマンド受信部１０４から渡される。
【００３６】
ステップ４２０では、ストリーム送出制御部１０９は、映像ファイルの終端に達するなど配信終了条件を満たすまでステップ４０３〜ステップ４１１を繰り返し実行する。
【００３７】
ステップ４０３では、ストリーム送出制御部１０９は、「シーク位置時間」と「シーク位置」を計算する。まず現在の「シーク位置時間」を「前回のシーク位置時間」に代入し、現在の「シーク位置」を「前回のシーク位置」に保存する。次に新しい「シーク位置時間」は、「前回のシーク位置時間」＋「シーク時間間隔」―「Iフレーム誤差時間」とする。新しい「シーク位置」は、「前回のシーク位置」＋（「シーク位置時間」―「前回のシーク位置時間」）×「映像ビットレート」（ビット数／ｍｓ）とする。
【００３８】
「前回のシーク位置時間」から「Iフレーム誤差時間」を減算することにより、１．５倍速のような中途半端な倍速値のときであっても正確な早送り時間を実現することができる。
【００３９】
あらかじめサーバ１０１にIフレームデータのシーク位置とタイムスタンプの関係を記録したIフレーム格納ファイルを保存し、Iフレームのシーク時に参照することによって、シーク位置時間が実際のIフレームデータの位置にあうように補正してもよい。Iフレーム格納ファイルがない場合は、ステップ４０４においてIフレームデータの探索を行う。
【００４０】
ステップ４０４では、ファイル読み出し部１０８は、ステップ４０３で得られた「シーク位置」までシークし、早送りなら前方に、巻き戻しなら後方にIフレームデータを探索して、Iフレームデータを読み出す。ここでIフレームのシーク位置とタイムスタンプを取得し、「Iフレーム誤差時間」←（「Iフレームのタイムスタンプ」−「シーク位置時間」）とし、「シーク位置時間」←「Iフレームのタイムスタンプ」とする。
【００４１】
ステップ４０４では、記憶装置の負荷が高い場合には、予定したファイル読み込み処理が即座に実行されず待たされる場合がある。またステップ４０４ではあらかじめ作成したIフレーム格納ファイルを参照し、Iフレーム探索処理を省いてもよい。
【００４２】
またステップ４０４では、映像ファイルから目的のＩフレーム以外に映像データをすべて取得してもよい。その場合には、Ｉフレームデータと映像データの双方をストリーム受信部１１０へ送ることになる。
【００４３】
またステップ４０４では、取得したIフレームに対してなんらかの加工を行ってもよい。前回のIフレーム送信で遅れを検出したときに、Ｉフレームデータをデコードして画像を復元し、画像サイズを縮小した後、同一のエンコードを行い、エンコードを行ったデータをクライアントに送信する。この場合は、サーバ１０１にクライアント１０２と同等の処理能力をもつデコーダおよびエンコーダを備える。
【００４４】
ステップ４０５では、ストリーム送出制御部１０９は、取得したIフレームデータをＴＣＰ／ＩＰの送信バッファに出力する。送信バッファに出力されたIフレームデータはクライアント１０２へ送信される。ここではＴＣＰ／ＩＰバッファに空きがない場合にデータ送信をブロックさせる設定とする。送信バッファが満たされている場合はデータ書き込み処理がブロックされるため、クライアント１０２のデータ受信によるバッファのデータ量の減少がない限り、書き込み処理はブロックされる。ここでブロックされている時間を計測することによって、クライアント１０２のＣＰＵ負荷による映像レンダリングの遅れを検出することが可能である。
【００４５】
ステップ４０６では、ストリーム送出制御部１０９は、現在時刻が（「前回送信時刻」＋「Iフレーム送信時間間隔」）になるまで処理を一時停止する。これにより「Ｉフレーム送信時間間隔」でデータを定期的に送出することができる。さらにIフレーム送信時間間隔から一時停止時間を除いた実現可能な送信時間間隔を計算し、メモリに保存する。最初のＩフレーム送信では送信時刻だけ記録し、一時停止しない。
【００４６】
ステップ４０７では、ストリーム送出制御部１０９は、「実際の送信時間間隔」に（「現在時刻」―「前回送信時刻」）を代入する。最初のＩフレーム送信では「実際の送信時間間隔」は０である。
【００４７】
ステップ４０８では、ストリーム送出制御部１０９は、「実際の送信時間間隔」と「Iフレーム送信時間間隔」を比較し、「実際の送信時間間隔」の方が大きい場合にはステップ４０９に進む。
【００４８】
ステップ４０９は、送信パラメータである「Iフレーム送信時間間隔」と、「シーク時間間隔」を変更するステップである。ストリーム送出制御部１０９は、「Iフレーム送信時間間隔」←「実際の送信時間間隔」とし、「シーク時間間隔」←「実際の送信時間間隔」×「再生速度」とする。このパラメータ修正により、サーバ１０１のディスク負荷が高い場合と、クライアント１０２のＣＰＵ負荷が高い場合に、Ｉフレーム映像の送信時間間隔、すなわちクライアント側の表示時間間隔を広げることができる。しかもサーバ１０１またはクライアント１０２の負荷がそのピークを過ぎて下がっても次のステップ４１０の補正条件を満足するまで一定の表示時間間隔と一定の再生速度を維持することができる。
【００４９】
ステップ４１０では、ストリーム送出制御部１０９は、ステップ４０６で保存したIフレームの可能な送信時間間隔とステップ４０１で算出した初期のIフレーム送信時間間隔とを比較する。すなわちサーバ１０１またはクライアント１０２の負荷が下がり、可能な送信時間間隔がほぼ初期のIフレーム送信時間間隔に戻ったか、あるいは前者が後者以下になったと判定したとき、ステップ４１１に進む。
【００５０】
ステップ４１１は、「Iフレーム送信時間間隔」と「シーク時間間隔」をステップ４０１で算出した初期値に補正するステップである。「Iフレーム送信時間間隔」←初期の「Iフレーム送信時間間隔」、「シーク時間間隔」←初期の「シーク時間間隔」とする。これにより一時的に広くなったIフレーム送信時間間隔を元に戻すことができる。
【００５１】
次に実施形態のサーバ１０１およびクライアント１０２のハードウエア構成について図５を用いて説明する。
【００５２】
クライアント１０２は、記憶装置６０１、メモリ６０２、ＣＰＵ６０３、ネットワークインタフェース６０４、バス６０５、サウンドカード６０６、モニタ１１６、入力装置１００、スピーカ１１９およびビデオカード６１０から構成される。記憶装置６０１は、ＯＳ６１９のほかにすでに説明したプログラムのコンポーネントを格納する。
【００５３】
サーバ１０１は、メモリ６５１、ＣＰＵ６５２、ネットワークインタフェースと６５３、バス６５４、記憶装置１１１、ビデオカード６５６、モニタ６５７および入力装置６５８から構成される。記憶装置１１１は、ＯＳ６６４と映像ファイル１１２のほかにすでに説明したプログラムのコンポーネントを格納する。映像ファイル１１２を外部の記憶装置やファイルサーバに格納してもよい。
【００５４】
次に図６を用いてクライアント１０２のモニタ１１６に表示される画面の例について説明する。クライアントに表示される画面は、映像表示部７０１と、シークバー７０２と、巻き戻しボタン７０３と、再生ボタン７０４と、早送りボタン７０５を備える。入力装置１００のマウスで表示画面上のコンポーネントをクリックすることによりプレーヤ制御部１０７に指令が入力され、映像を制御できる。映像表示部７０１は、受信した映像データを表示する。
【００５５】
シークバー７０２がマウスでクリックされると、プレーヤ制御部１０７はシークバー７０２の値から計算した再生位置をもとに映像の再生を行う。巻き戻しボタン７０３がマウスでクリックされると、プレーヤ制御部１０７は巻き戻し指令を実行する。再生ボタン７０４がマウスでクリックされると、プレーヤ制御部１０７は再生指令を実行する。早送りボタン７０５がマウスでクリックされると、プレーヤ制御部１０７は早送り指令を実行する。
【実施例２】
【００５６】
実施例２は、映像の配信プロトコルとしてＵＤＰ／ＩＰプロトコルを利用する。ＵＤＰ／ＩＰプロトコルの場合も正確な速度でで高速早送りを実現できる。実施例１は、ＴＣＰ／ＩＰの送信バッファへのデータ書き込みをブロックすることによってクライアント１０２の再生の遅れを検知する方式であったが、実施例２は、サーバ１０１がクライアント１０２から映像の表示時間間隔を受信し、再生の遅れをチェックする方式である。
【００５７】
プレーヤ制御部１０７は、映像デコード部１１４からIフレームのデコードが終了するたびに終了通知を受け、その時刻から表示時間間隔を計算し、制御コマンド送信部１０６を介してサーバ１０１へ表示時間間隔を送信する。ただしクライアント１０２は、Iフレームのデコードが終了するたびに表示時間間隔を送信するのではなく、一定時間間隔で送るようにしてもよい。
【００５８】
制御コマンド受信部１０４は、実施例１の映像制御コマンドメッセージのほかに、クライアント１０２から表示時間間隔メッセージを受信し、配信設定管理部１０３に通知する。表示時間間隔メッセージは、セッションＩＤと表示時間間隔を含む。
【００５９】
配信設定管理部１０３は、実施例１で保持する情報のほかに、セッション対応に表示時間間隔を保持する。
【００６０】
ストリーム送出制御部１０９は、高速再生時にクライアントの表示時間間隔を参照し、クライアントの表示時間間隔を実際の送信時間間隔とする補正をする。
【００６１】
実施例１の処理手順のステップ４０７とステップ４０８の間に、図７のステップ５０１、ステップ５０２およびステップ５０３を追加して実行することにより実施例２を実現することができる。なお実施例２ではステップ４０５における書き込み処理のブロックはない。
【００６２】
ステップ５０１では、ストリーム送出制御部１０９は、配信設定管理部１０３からクライアントの表示時間間隔を取得する。
【００６３】
ステップ５０２では、ストリーム送出制御部１０９は、サーバ１０１の実際の送信時間間隔とクライアント１０２の表示時間間隔とを比べ、クライアント１０２の表示時間間隔の方が長い、すなわちクライアント側の負荷が高く再生が間に合っていない状態のときには、ステップ５０３を実行する。
【００６４】
ステップ５０３では、ストリーム送出制御部１０９は、クライアントの再生の遅れを考慮して配信のパラメータを修正する。すなわちクライアントの表示時間間隔を実際の送信時間間隔とする。これによりクライアントが処理可能なフレームレートで映像を送信することができる。
【００６５】
上記の手順によりストリーム送出制御部１０９は、映像配信プロトコルとしてＵＤＰ／ＩＰプロトコルを利用する場合であっても、クライアント１０２の負荷状況を示す情報の取得が可能になる。
【００６６】
実施例２によりＵＤＰ／ＩＰプロトコルに従って映像データを配信する場合であっても、クライアントの負荷を考慮して最適なフレームレートの早送り映像を送ることが可能になる。
【図面の簡単な説明】
【００６７】
【図１】実施形態のビデオオンデマンドシステムの構成図である。
【図２】映像制御コマンドメッセージのデータ形式を示す図である。
【図３】配信設定テーブルの例を示す図である。
【図４】実施例１の高速再生処理の手順を示すＰＡＤ図である。
【図５】サーバおよびクライアントのハードウエア構成図である。
【図６】クライアントの表示画面の例を示す図である。
【図７】実施例２の高速再生処理の手順を示すＰＡＤ図である。
【符号の説明】
【００６８】
１０１：サーバ、１０２：クライアント、１０３：配信設定管理部、１０８：ファイル読み出し部、１０９：ストリーム送出制御部
【図１】
2005318190.tif 000003
【図２】
2005318190.tif 000004
【図３】
2005318190.tif 000005
【図４】
2005318190.tif 000006
【図５】
2005318190.tif 000007
【図６】
2005318190.tif 000008
【図７】
2005318190.tif 000009