(57)【要約】分岐再生のあるストリーミングメディアに対し、各ビデオの繋ぎ目で発生していた非表示区間をなくし、シームレスな再生を実現する。スケジューリング部（２１）は、一方のメディアの再生後に連続再生または分岐再生する他方のメディアに対して、一方のメディアの再生処理終了時間から他方のメディアの再生処理開始時間までのタイムラグを除去するようにスケジューリングを施す。復号化処理部（２２）は、スケジューリングにもとづいて配分されたメディアの復号化処理を並列して行う複数のデコーダ（２２−１）〜（２２−ｎ）を含む。表示制御部（２３）は、デコーダ（２２−１）〜（２２−ｎ）からの再生出力の切替えを行い、再生されたメディアを表示する。
2005006748.tif 000002
【特許請求の範囲】
【請求項１】
ストリーミングメディアの再生を行うメディア再生装置において、
一方のメディアの再生後に連続再生または分岐再生する他方のメディアに対して、一方のメディアの再生処理終了時間から他方のメディアの再生処理開始時間までのタイムラグを除去するようにスケジューリングを施すスケジューリング部と、
前記スケジューリングにもとづいて配分されたメディアの復号化処理を並列して行う複数のデコーダを含む復号化処理部と、
デコーダからの再生出力の切替えを行い、再生されたメディアを表示する表示制御部と、
を有することを特徴とするメディア再生装置。
【請求項２】
前記スケジューリング部は、分岐時間をＴｂ、メディアの初期化処理に要する時間をΔｓとした場合に、時間（Ｔｂ＋Δｓ）をスケジューリング区間とし、前記スケジューリング区間に含まれるメディアをスケジューリング候補とすることを特徴とする請求の範囲第１項記載のメディア再生装置。
【請求項３】
前記スケジューリング部は、分岐時間に到達した場合、または分岐時間前に分岐が確定した場合は、分岐しなかったメディアが配分されたデコーダは開放し、開放されたデコーダにあらたな分岐先ビデオの再配分を行うことを特徴とする請求の範囲第１項記載のメディア再生装置。
【請求項４】
前記スケジューリング部は、デコーダに第１のメディアを配分して、次に第２のメディアの配分を行う場合、第１のメディアと第２のメディアとのメディア実体の格納場所が等しく、かつメディア時間上で、第１のメディアの再生終了時間と第２のメディアの再生開始時間が等しく、かつシナリオ時間上で、第１のメディアの再生終了時間と第２のメディアの再生開始時間とが等しい場合には、第２のメディアは、第１のメディアを配分した同じデコーダに配分することを特徴とする請求の範囲第１項記載のメディア再生装置。
【請求項５】
前記スケジューリング部は、第１のメディアの再生終了時間をＴ、第１のメディアの終了処理に要する時間をΔｅ、第２のメディアの再生開始時間をＶ＊ｍｂ．ｓｔａｒｔ、第２のメディアの初期化処理に要する時間をΔｓとした場合、
（Ｖ＊ｍｂ．ｓｔａｒｔ−Δｓ）≧（Ｔ＋Δｅ）
の条件式を満たすデコーダに対して、第２のメディアを配分することを特徴とする請求の範囲第１項記載のメディア再生装置。
【請求項６】
前記デコーダは、デコード対象のメディアをＶ＊ｍ、現在のシナリオ時間をＴｓ、メディアＶ＊ｍのシナリオ時間での再生処理開始時間をＶ＊ｍ．ｓｔａｒｔとした場合に、
Ｔｓ＜Ｖ＊ｍ．ｓｔａｒｔ
の第１の条件を満たす場合には初期化処理を行い、
Ｖ＊ｍ．ｓｔａｒｔ≦Ｔｓ＜Ｖ＊ｍ．ｓｔａｒｔ＋Ｖ＊ｍ．ｄｕｒａｔｉｏｎ
の第２の条件を満たす場合には再生処理を行い、
Ｖ＊ｍ．ｓｔａｒｔ＋Ｖ＊ｍ．ｄｕｒａｔｉｏｎ≦Ｔｓ
の第３の条件を満たす場合には終了処理を行うことを特徴とする請求の範囲第１項記載のメディア再生装置。
【請求項７】
前記デコーダは、前記第３の条件を満たしていても、第１のメディアと第２のメディアとのメディア実体の格納場所が等しく、かつメディア時間上で、第１のメディアの再生終了時間と第２のメディアの再生開始時間が等しく、かつシナリオ時間上で、第１のメディアの再生終了時間と第２のメディアの再生開始時間とが等しいビデオＶ＊ｍ＋１が存在する場合は、ビデオＶ＊ｍ＋１の前記第２の条件による再生を優先することを特徴とする請求の範囲第６項記載のメディア再生装置。
【請求項８】
前記デコーダは、前記第１の条件で初期化処理を含むプリフェッチ状態への遷移がおきたにもかかわらず、プリフェッチ遷移が完了せずに前記第２の条件に合致した場合は、プリフェッチ遷移が完了するまでは、再生開始時間であるシナリオ時間を増加させず、プリフェッチが完了した後に、再生状態に遷移して、シナリオ時間を増加することを特徴とする請求の範囲第６項記載のメディア再生装置。
【発明の詳細な説明】
【技術分野】  本発明はメディア再生装置に関し、特にストリーミングメディアの再生を行うメディア再生装置に関する。
【背景技術】  近年、インターネットを中心とするＩＰネットワーク・トラフィックの爆発的な増大に伴い、画像／音声データの配信が盛んに行われており、さらなるサービスの高度化、広域化が望まれている。ネットワークを使った配信サービスとして欠かせない技術にストリーミングメディア配信がある。
ストリーミングメディアとは、時間軸にしたがって再生される音声や動画などのメディアのことである。ストリーミングメディアは、クライアント側のソフトウェアが再生する場合に、メディア全体が送信されている必要はなく、ある瞬間で再生するのに必要なだけのデータが送信されていればよい。このため、クライアント側では、ファイルを受信しながらの再生が可能であり（クライアント端末側での大容量の保存が不要）、これによりデータ量が膨大な長時間ビデオでも、クライアントはインターネットで見ることができる。
ストリーミングメディア配信の活用例としては、インタラクティブドラマやｅ−Ｌｅｒｎｉｎｇなどがある。インタラクティブドラマは、視聴者の指示にもとづいて、ドラマの進行が変わるタイプの放送であり、例えば、視聴者がドラマ中の主人公に成り代って指示を出す度に、サーバ側では、指示にもとづく場面のビデオ映像を配信したりする。
また、ｅ−Ｌｅｒｎｉｎｇは、自宅のパソコンからネットワークを介してサーバにアクセスし、サーバの中にある教材コンテンツを使って学習を行う教育システムであり、生徒は、時間や場所の制約を受けずに、自分に適したレベルの学習を受けられる。また、サーバ側では、生徒の学習進度や生徒が提出した問題解答にもとづいて、難易度を変化させた教材ビデオを配信したりする。
一方、このようなストリーミングメディア配信で、複数ビデオをネットワーク経由で連続的にストリーミング再生すると、ビデオの繋ぎ目の部分でビデオ映像が表示されない時間帯が生じる。これはビデオの繋ぎ目で、前段のビデオが終了した後に、後段のビデオが再生開始するまでのタイムラグによるものである。
図２６はビデオの繋ぎ目における非表示区間の発生を示す図である。ビデオＶ１を再生して、時間ｔ１でビデオＶ１が再生終了し、時間ｔ１以降ではビデオＶ２−１またはビデオＶ２−２のいずれかが再生（分岐再生）されるとする。
例えば、インタラクティブドラマでは、ビデオＶ１のドラマが進行中にクライアントが場面変更の指示を出して、時間ｔ１でビデオＶ２−１、ビデオＶ２−２のいずれかの場面に変更するような場合や、ｅ−Ｌｅｒｎｉｎｇでは、ビデオＶ１の教材の問題に対してクライアントが解答を出したとき、解答の正誤によって、時間ｔ１で難易度の異なるビデオＶ２−１、ビデオＶ２−２のいずれかの教材に変更するような場合である。
このようなストーリ分岐のあるビデオ表示に対して、ビデオＶ１からビデオＶ２−１へ分岐再生したとすると、ビデオの繋ぎ目部分である時間ｔ１から即時に再生は行われず、タイムラグ後の時間ｔ２からビデオＶ２−１が再生開始することになり、時間ｔ１〜ｔ２の間は非表示区間となる。この非表示区間は、ストリーミングビデオの終了処理や初期化処理に起因している。
図２７は非表示区間の発生理由を示す図である。ビデオＶ１からビデオＶ２−１へ分岐再生する場合、受信側のデコーダモジュールでは、ビデオＶ１の終了処理を行った後に、ビデオＶ２−１の初期化処理を行い、その後に再生処理を行う。
したがって、１台のデコーダモジュールでストリーミングビデオの分岐再生を行うと、ビデオの繋ぎ目の部分で、前段ビデオの終了処理に要する時間Δｅと後段ビデオの初期化処理に要する時間ΔｓによるΔｅ＋Δｓのタイムラグが生じ、この時間帯はビデオを表示することはできない。
タイムラグを見かけ上なくす従来技術としては、繰り返し再生の開始位置が指定された場合、出力の行われているデコーダとは別のデコーダで、繰り返し再生準備を行って、デコーダ出力を切り替える技術が提案されている（例えば、特許文献１参照）。
また、ファイルの頭だし用のプリロードデータを分岐先候補画像のプリロード部分に挿入して、分岐先決定時にはプリロードデータを再生し、この間に後続の画像データをロードする技術が提案されている（例えば、特許文献２参照）。
【特許文献１】      特開２００１−２０３９７７号公報（段落番号〔００１６〕〜〔００６６〕，第１図）
【特許文献２】      特開平７−７９３９９号公報（段落番号〔０００６〕〜〔０００７〕，第１図）
しかし、上記のような従来技術（特開２００１−２０３９７７号公報）は、再生するビデオを複数繋げるものの、そのビデオの繋がりはあらかじめ一意に決まっていることを前提としており、分岐指定のパラメータが与えられるまで、どのビデオが分岐されるかがわからいようなインタラクティブドラマやｅ−Ｌｅｒｎｉｎｇのようなサービスには適用することができない。
また、従来技術（特開平７−７９３９９号公報）では、メディアとしてＣＤ−ＲＯＭを想定しており、かつ映像表示のタイムラグの原因としてＣＤ−ＲＯＭからの再生データの読込み時間を想定している。そのためタイムラグの解消方法として再生分岐先となるビデオデータのうち最初の区間を小サイズのプリロード画像として準備することを提案しており、ストリーミングでの配信に応用可能な技術とはいえない。
【発明の開示】
本発明はこのような点に鑑みてなされたものであり、各ビデオの繋ぎ目で発生していた非表示区間をなくし、分岐再生のあるストリーミングメディアのシームレスな再生を実現したメディア再生装置を提供することを目的とする。
本発明では上記課題を解決するために、図１に示すような、ストリーミングメディアの再生を行うメディア再生装置２０において、一方のメディアの再生後に連続再生または分岐再生する他方のメディアに対して、一方のメディアの再生処理終了時間から他方のメディアの再生処理開始時間までのタイムラグを除去するようにスケジューリングを施すスケジューリング部２１と、スケジューリングにもとづいて配分されたメディアの復号化処理を並列して行う複数のデコーダ２２−１〜２２−ｎを含む復号化処理部２２と、デコーダ２２−１〜２２−ｎからの再生出力の切替えを行い、再生されたメディアを表示する表示制御部２３と、を有することを特徴とするメディア再生装置２０が提供される。
ここで、スケジューリング部２１は、一方のメディアの再生後に連続再生または分岐再生する他方のメディアに対して、一方のメディアの再生処理終了時間から他方のメディアの再生処理開始時間までのタイムラグを除去するようにスケジューリングを施す。復号化処理部２２は、スケジューリングにもとづいて配分されたメディアの復号化処理を並列して行う複数のデコーダ２２−１〜２２−ｎを含む。表示制御部２３は、デコーダ２２−１〜２２−ｎからの再生出力の切替えを行い、再生されたメディアを表示する。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】  図１は、本発明のメディア再生装置の原理図である。
図２は、本発明により非表示区間をなくしたストリーミングビデオ再生を示す図である。
図３は、ストリーミングメディア配信システムの構成を示す図である。
図４は、ストリーミングメディア配信システムの構成を示す図である。
図５は、スケジューリング動作を示す図である。
図６は、ビデオソースの構造を示す図である。
図７は、ビデオソースの構造を示す図である。
図８は、サブシナリオの構造を示す図である。
図９は、シナリオの構造を示す図である。
図１０は、ＸＭＬ形式のシナリオコンテンツ例を示す図である。
図１１は、サブシナリオの例を示す図である。
図１２は、サブシナリオの例を示す図である。
図１３は、サブシナリオの例を示す図である。
図１４は、３つの条件式を満たすビデオを示す図である。
図１５は、デコーダを選択する際の条件を示す図である。
図１６は、デコーダを選択する際の条件を示す図である。
図１７は、デコーダ配分アルゴリズムを示すフローチャートである。
図１８は、デコーダ配分アルゴリズムを示すフローチャートである。
図１９は、シナリオ管理部の構成を示す図である。
図２０は、同期コントローラの状態遷移を示す図である。
図２１は、初期化処理を行っている状態を示す図である。
図２２は、再生処理を行っている状態を示す図である。
図２３は、終了処理を行っている状態を示す図である。
図２４は、ビデオプレイヤの状態遷移を示す図である。
図２５は、ビデオプレイヤの可視／不可視の切替えを示す図である。
図２６は、ビデオの繋ぎ目における非表示区間の発生を示す図である。
図２７は、非表示区間の発生理由を示す図である。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図面を参照して説明する。図１は本発明のメディア再生装置の原理図である。メディア再生装置２０は、クライアントの任意の操作により複数のビデオソースを切り替えて、ストリーミングメディアの再生表示を行う装置である。適用分野としては、ストリーミング配信によるインタラクティブドラマや、生徒の学習進度や解答により難易度を変化させるｅ−Ｌｅｒｎｉｎｇなどがあげられる。
スケジューリング部２１は、一方のメディアソース（ストリーミングビデオ）の再生後に連続再生または分岐再生する他方のメディアソースに対して、一方のメディアソースの再生処理終了時間から他方のメディアソースの再生処理開始時間までのタイムラグを除去するようにスケジューリングを施す。具体的には、シナリオ情報にもとづいて、一方のメディアソースの再生処理終了時間までに、他方のメディアソースの初期化処理が終了して、再生処理終了時間から他方のメディアソースの再生処理が可能となるようなスケジューリングを行う。
復号化処理部２２は、複数のデコーダ２２−１〜２２−ｎ（総称する場合はデコーダ２２とする）を含む。デコーダ２２−１〜２２−ｎは、スケジューリングにもとづいてそれぞれ配分（以下、割り当てとも呼ぶ）されたメディアソースの復号化処理（デコード：初期化処理、再生処理、終了処理の３つの処理を含む）を並列して行う。
なお、復号化処理部２２は、図には示さないが、ストリーミングバッファを有し、ネットワークの不安定さを緩和して安定したビデオ再生を行うために、ストリーミングバッファで数秒〜数十秒のビットストリームを一時格納した後にデコードを行う。
表示制御部２３は、表示切替えスイッチ２３ａ、表示部２３ｂを含み、デコーダ２２−１〜２２−ｎからの再生出力の切替えを行って、再生されたメディアソースを表示する。ここで、メディアソースとは、単一のメディアを意味する。以降ではメディア、メディアソースをビデオ、ビデオソースとも呼ぶ。
次に概略動作について説明する。図２は本発明により非表示区間をなくしたストリーミングビデオ再生を示す図である。ビデオの分岐再生時、非表示区間をなくしてシームレスな再生を実現するためには、複数のデコーダを用意して、ビデオのデコードを並列で行えばよい。
簡単な例として、２本のビデオＶ１、Ｖ２に対して、時間ｔ１でビデオＶ１からビデオＶ２へ分岐再生する場合を考える。ビデオＶ１、Ｖ２は、デコーダ２２−１、２２−２へ振り分けられて、ビデオＶ１のデコードはデコーダ２２−１で行い、ビデオＶ２のデコードはデコーダ２２−２で行うものとする。
このとき、一方のデコーダ２２−１でビデオＶ１の再生処理が終了したら、他方のデコーダ２２−２では即時にビデオＶ２の再生処理が開始できるような状態になっていれば、従来、分岐再生時間ｔ１で発生していた非表示区間をなくすことができる。
このため、スケジューリング部２１は、ビデオＶ１の再生処理終了時間ｔ１（＝分岐再生時間）までに、少なくともビデオＶ２の初期化処理が終了して、時間ｔ１からビデオＶ２の再生処理が開始できるようにスケジューリングしておけばよい。
ビデオＶ２の初期化処理に要する時間をΔｓとすると、デコーダ２２−１が時間ｔ０からビデオＶ１の再生処理の実行中、デコーダ２２−２では、時間（ｔ１−Δｓ）になるまでには、ビデオＶ２の初期化処理を開始しておく（すなわち、ビデオＶ２の初期化処理開始時間をｔｉとすると、ｔ０≦ｔｉ≦（ｔ−Δｓ）である）。そして、時間ｔ１においては、デコーダ２２−１は、ビデオＶ１の再生処理を終了して終了処理（終了処理に要する時間はΔｅ）を行い、デコーダ２２−２ではビデオＶ２の再生処理を行う（図では時間ｔ２でビデオＶ２の再生処理は終了している）。
このようにして、デコーダ２２−１、２２−２にビデオＶ１、Ｖ２を割り当てて（スケジューリングして）デコードを行い、表示切替えスイッチ２３ａで時間ｔ０〜ｔ１まではデコーダ２２−１の出力を選択し、時間ｔ１〜ｔ２まではデコーダ２２−２の出力を選択することで、表示部２３ｂでは、非表示区間のないシームレスなビデオ表示を行うことが可能になる。
次にメディア再生装置２０を含むシステム全体の構成について説明する。図３、図４はストリーミングメディア配信システムの構成を示す図である。ストリーミングメディア配信システム１は、図３に示すメディア配信サーバ１０と、図４に示すメディア再生装置２０とから構成され、ネットワーク３を介して、ストリーミングメディアの配信を行う。
メディア配信サーバ１０は、ストリーミングサーバ１１、コンテンツサーバ１２から構成される。ストリーミングサーバ１１は、ビデオＶ１〜ビデオＶｎの各種ビデオコンテンツを保存管理する。ストリーミングサーバ１１は、通常のＨＴＴＰサーバであって、Ｒｅａｌ  ＳｅｒｖｅｒやＷｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｓｅｒｖｅｒなどの既存製品が該当する。なお、シナリオ次第で複数個のストリーミングサーバを利用することになる。
コンテンツサーバ１２は、ビデオＶ１〜ビデオＶｎのシナリオを保存管理する。なお、シナリオとは、ビデオコンテンツの再生手順が記述されているものである。例えば、ビデオＡを時間ｔａから時間ｔｂまで再生した後に、ビデオＢに分岐して時間ｔｃから時間ｔｄまで再生する、といったような再生手順の内容（再生順番、分岐条件等）が記述されている。
メディア再生装置２０は、シナリオ管理部（スケジューリング部２１に該当）２１ａ、復号化処理部２２、表示制御部２３、全体制御部２４、ユーザインタフェース部２５から構成される。
ユーザインタフェース部２５は、再生するシナリオの指定（ＵＲＬ入力）、シナリオの再生、停止、一時停止などをクライアントが指示するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供し、キーボード、スイッチ、マウスなどに該当する。また、画面上のボタン操作により分岐パラメータの設定（クライアントによる分岐画面の選択）を行うことができる。
全体制御部２４は、ユーザインタフェース部２５で入力したクライアントからの指示を各モジュールへの動作指示に変換する。例えば、シナリオのＵＲＬ入力があると、全体制御部２４は、シナリオ管理部２１ａに対してシナリオの読み込みを指示する。
シナリオ管理部２１ａは、シナリオ配信要求をコンテンツサーバ１２に送信し、コンテンツサーバ１２に格納されているシナリオを取得する。そして、シナリオにもとづき、デコーダ割り当てのスケジューリングを行い、ストリーミングサーバ１１にビデオのストリーミング配信要求を通知する。
また、シナリオ管理部２１ａは、ユーザインタフェース部２５からの外部入力により、分岐パラメータを設定し、設定した分岐パラメータをシナリオに記載された分岐条件と比較し、条件に合ったビデオを選択し、所定のデコーダに再生開始を指示する。
次にシナリオ管理部２１ａのスケジューリング動作について説明する。図５はスケジューリング動作を示す図である。複数ビデオに対するスケジューリングを示している。ビデオＶ７、Ｖ８を連続再生した後に、分岐時間Ｔｂ１で、ビデオＶ９〜Ｖ１１の組またはビデオＶ１２、Ｖ１３の組のいずれかに分岐するシナリオに対して、クライアントの分岐パラメータ指示により、ビデオＶ１２、Ｖ１３の組が分岐選択された場合を表している。
なお、ビデオ再生時間の前半に表示している点線の区間は初期化処理であり、すべてのビデオの初期化処理に要する時間間隔はΔｓとする。また、ビデオ再生時間の後半に表示している点線の区間は終了処理であり、すべてのビデオの終了処理に要する時間間隔はΔｅとする。
まず、シナリオ管理部２１ａは、時間（Ｔｂ１＋Δｓ）の区間（図中、初期スケジューリング区間）にビデオ再生を開始する可能性のあるビデオをデコーダ２２−１〜２２−４に割り当てる。ここでは、時間（Ｔｂ１＋Δｓ）の区間には、ビデオＶ７、Ｖ８の他に、ビデオＶ９、Ｖ１０、Ｖ１２も含まれる。
デコーダ２２−１〜２２−４への割り当てとしては、デコーダ２２−１にビデオＶ７、デコーダ２２−２にビデオＶ８を割り当てる。また、分岐される一方の組の最初のビデオＶ９をデコーダ２２−３へ割り当て、分岐される他方の組の最初のビデオＶ１２をデコーダ２２−４へ割り当てる。さらに、ビデオＶ１０も初期スケジューリング区間に入るので、最も速くデコード処理が終わるデコーダ２２−１にビデオＶ１０を割り当てる。
それぞれのビデオのデコード開始スケジューリング時間は、デコーダ２２−１は、時間０．０からビデオＶ７の再生処理を行う。デコーダ２２−２は、ビデオＶ７の再生終了時間Ｔ１までにビデオＶ８の初期化処理が終了して、時間Ｔ１から再生処理を可能とするため、ビデオＶ８のデコード開始時間は、時間（Ｔ１−Δｓ）となる。
デコーダ２２−３は、分岐時間Ｔｂ１までにビデオＶ９の初期化処理が終了して、分岐時間Ｔｂ１から再生処理を可能とするため、ビデオＶ９のデコード開始時間は、時間（Ｔｂ１−Δｓ）となる。同様にデコーダ２２−４は、分岐時間Ｔｂ１までにビデオＶ１２の初期化処理が終了して、分岐時間Ｔｂ１から再生処理を可能とするため、ビデオＶ１２のデコード開始時間は、時間（Ｔｂ１−Δｓ）となる。
また、デコーダ２２−１は、ビデオＶ９の再生終了時間Ｔ２までにビデオＶ１０の初期化処理が終了して、時間Ｔ２から再生処理を可能とするため、ビデオＶ１０のデコード開始時間は、時間（Ｔ２−Δｓ）となる。
このような初期スケジューリング区間に対するスケジューリングが終わると、分岐時間Ｔｂ１より前の時間帯では、デコーダ２２−１、２２−２は、スケジューリングされた時間でビデオＶ７、Ｖ８をデコードし、デコーダ２２−３、２２−４は、スケジューリングされた時間で、ビデオＶ９、Ｖ１２の初期化処理を行う。
その後、分岐時間Ｔｂ１になって、クライアントがビデオＶ１２、１３の組を選択したとする。すると、デコーダ２２−４は、すでに初期化処理が終了しているビデオＶ１２の再生処理を開始する。また、選択されなかったビデオＶ９、Ｖ１０が割り当てられたデコーダ２２−１、２２−３は開放する。
そして、次の分岐時間Ｔｂ２のスケジューリング区間（時間（Ｔｂ２＋Δｓ）−時間Ｔｂ１）に対するスケジューリングを再び行う。この場合は、ビデオＶ１３がデコーダ２２−２に割り当てられて再生が続けられる。
また、表示切替えスイッチ２３ａは、時間０．０から時間Ｔ１まではデコーダ２２−１の出力を選択し、時間Ｔ１から時間Ｔｂ１まではデコーダ２２−２の出力を選択し、時間Ｔｂ１から時間Ｔ３（ビデオＶ１２の再生終了時間）まではデコーダ２２−４の出力を選択し、時間Ｔ３から時間Ｔ４（ビデオＶ１３の再生終了時間）まではデコーダ２２−２の出力を選択する。
このようなスケジューリングを施して、デコード及び表示切替えを行うことにより、再生ビデオの繋ぎ目から非表示区間をなくすことができ、シームレスな再生表示が可能になる。
次にコンテンツサーバ１２に格納されるシナリオの構造について説明する。図６はビデオソースの構造を示す図である。ビデオソースＶｍは、ＵＲＬ、ｓｔａｒｔ、ｌｏｃａｌ  ｓｔａｒｔ、ｄｕｒａｔｉｏｎ、ｄｅｃｏｄｅｒの項目から構成される。ＵＲＬはビデオソース実体の格納場所（アドレス）であり、ｓｔａｒｔはシナリオ時間内で再生開始する時間である。ｌｏｃａｌ  ｓｔａｒｔは、ビデオ時間（ビデオローカル時間）での再生開始時間であり、ｄｕｒａｔｉｏｎは、ビデオソースの再生時間間隔であり、ｄｅｃｏｄｅｒは配分されるデコーダのＩＤである。
図７はビデオソースの構造を示す図である。図６を図式化したものである。ビデオソースＶｍの実体は、コンテンツサーバ１２のアドレス（ＵＲＬ）に格納されている。また、ビデオソースＶｍの１本の再生時間（ビデオ時間）に対し、ｌｏｃａｌ  ｓｔａｒｔは、ビデオソースＶｍの再生開始時間、ｄｕｒａｔｉｏｎはビデオソースＶｍの再生時間であるので、例えば、ビデオソースＶｍが１時間のビデオで、開始１０秒後から３０秒後までを再生するならば、ｌｏｃａｌ  ｓｔａｒｔは１０秒、ｄｕｒａｔｉｏｎは２０秒となる。さらに、このビデオソースＶｍが実際に再生される時間が、シナリオ時間としてのｓｔａｒｔとなる。
図８はサブシナリオの構造を示す図である。サブシナリオｓｉは、サブシナリオＩＤ、ビデオソース配列、分岐時間、分岐条件、分岐先サブシナリオ配列の項目から構成される。なお、サブシナリオとは、分岐と分岐の間に挟まれたビデオのことである。例えば、図５では、ビデオＶ７、Ｖ８が１つのサブシナリオ、ビデオＶ９〜Ｖ１１が１つのサブシナリオ、ビデオＶ１２、Ｖ１３が１つのサブシナリオに該当する。
ビデオソース配列は、サブシナリオＩＤに属する、図６、図７で上述したビデオソースＶｍを、ｓｔａｒｔで昇順（再生時間の速い順）にソートして配列させる。分岐時間には実行時の分岐時間が格納し、分岐条件には実行時の分岐条件が格納される。分岐先サブシナリオ配列には、分岐先となるサブシナリオＩＤが格納される。
図９はシナリオの構造を示す図である。図５を例にしたシナリオ構造を示している。ビデオＶ７、Ｖ８がサブシナリオｓ１、ビデオＶ９〜Ｖ１１がサブシナリオｓ２、ビデオＶ１２、Ｖ１３がサブシナリオｓ３とする。
サブシナリオｓ１は、ビデオソース配列にビデオソースＶ７、Ｖ８が格納され、分岐先サブシナリオ配列として、サブシナリオｓ２、ｓ３が格納されている。また、分岐先のサブシナリオｓ２には、ビデオソース配列にビデオソースＶ９、Ｖ１０、Ｖ１１、・・・が格納され、分岐先のサブシナリオｓ３には、ビデオソース配列にビデオソースＶ１２、Ｖ１３、・・・が格納される。
なお、具体的な表記例を、図１０〜図１３に示す。図１０はＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ：ＳＧＭＬをベースに簡素化した、文書情報などの言語仕様を定義するための言語）形式のシナリオコンテンツのリストＬを示しており、図１１〜図１３はサブシナリオｓ１〜ｓ３の例を示す。
次に同一デコーダに対する配分アルゴリズムについて説明する。ここで、スケジューリング区間内に存在するビデオ（スケジューリング候補のビデオのこと）をビデオＶ＊ｍと記載する。例えば、図５の場合、初期スケジューリング区間内に存在するビデオは、Ｖ７〜Ｖ１０とＶ１２の５個あるので、Ｖ＊ｍ（ｍ＝７〜１０、１２）であり、再生時間の速い順に、Ｖ＊７＝Ｖ７、Ｖ＊８＝Ｖ８、Ｖ＊９＝Ｖ９、Ｖ＊１２＝Ｖ１２、Ｖ＊１０＝Ｖ１０である。
今、複数のデコーダ２２−１〜２２−ｎの中の１つのデコーダに、ビデオＶ＊ｍａのデコードを割り当てたとする。このとき、次にデコードすべきビデオをＶ＊ｍｂとしたときに、ビデオＶ＊ｍｂを再生すると、そのままビデオＶ＊ｍａの継続再生につながるような場合には（前段ビデオの終了処理及び後段ビデオの初期化処理が不要の場合には）、ビデオＶ＊ｍｂは、ビデオＶ＊ｍａをデコードしているデコーダに割り当てることが望ましい。
したがって、ビデオＶ＊ｍｂのデコーダへの割り当てを行う場合には、まず、すでに割り当てたビデオＶ＊ｍａとの関係を調べて、ビデオＶ＊ｍａと同じデコーダに割り当てるか否かの判断処理を行うことにする。この判断に用いる条件式は、以下の式（１ａ）、（１ｂ）、（１ｃ）であり、これら３つの式が成り立てば、ビデオＶ＊ｍｂは、ビデオＶ＊ｍａと同じデコーダに割り当てることになる。
2005006748.tif 000003
図１４は３つの条件式（１ａ）、（１ｂ）、（１ｃ）を満たすビデオＶ＊ｍｂを示す図である。上記の式を図式化したものである。式（１ａ）は、ビデオＶ＊ｍｂのＵＲＬと、ビデオＶ＊ｍａのＵＲＬとが等しい（ビデオの実体が等しい）ことを表している。式（１ｂ）は、ビデオ時間上で、ビデオＶ＊ｍａの再生終了時間（＝Ｖ＊ｍａ．ｌｏｃａｌ  ｓｔａｒｔ＋Ｖ＊ｍａ．ｄｕｒａｔｉｏｎ）と、ビデオＶ＊ｍｂの再生開始時間（＝Ｖ＊ｍｂ．ｌｏｃａｌ  ｓｔａｒｔ）とが等しいことを表している。
さらに、式（１ｃ）は、シナリオ時間上で、ビデオＶ＊ｍａの再生終了時間（＝Ｖ＊ｍａ．ｓｔａｒｔ＋Ｖ＊ｍａ．ｄｕｒａｔｉｏｎ）と、ビデオＶ＊ｍｂの再生開始時間（＝Ｖ＊ｍｂ．ｓｔａｒｔ）とが等しいことを表している。
式（１ａ）で、ビデオＶ＊ｍｂがビデオＶ＊ｍａと同じＵＲＬであり、式（１ｂ）のビデオ時間上でビデオＶ＊ｍａの終了時間と、ビデオＶ＊ｍｂの開始時間とが一致し、式（１ｃ）のシナリオ時間上でビデオＶ＊ｍａの終了時間と、ビデオＶ＊ｍｂの開始時間とが一致すれば、１つのビデオ上の連続区間として再生できるので、ビデオＶ＊ｍｂは、ビデオＶ＊ｍａを割り当てた同じデコーダに割り当てる（ビデオＶ＊ｍａの終了処理と、ビデオＶ＊ｍｂの初期化処理とが不要）。
次に上記の条件式を満たさない場合のデコーダ配分について説明する。ビデオＶ＊ｍａをデコーダに配分して、次にビデオＶ＊ｍｂの配分を行う場合、上記で示した３つの条件式（１ａ）、（１ｂ）、（１ｃ）を１つでも満たさない場合には、時間Ｖ＊ｍｂ．ｓｔａｒｔにおいて、空きのあるデコーダを選択することになる。
図１５、図１６はデコーダを選択する際の条件を示す図である。ビデオＶ＊ｍａの再生終了時間がＴ、ビデオＶ＊ｍａの終了処理に要する時間がΔｅ、ビデオＶ＊ｍｂの再生開始時間がＶ＊ｍｂ．ｓｔａｒｔ、ビデオＶ＊ｍｂの初期化処理に要する時間がΔｓとする。
このとき、ビデオＶ＊ｍｂを時間（Ｖ＊ｍｂ．ｓｔａｒｔ−Δｓ）で再生処理が可能とするには、ビデオＶ＊ｍａは、時間ＴまでにはビデオＶ＊ｍａの再生処理が終了している必要がある。したがって、時間Ｖ＊ｍｂ．ｓｔａｒｔで選択できるデコーダの条件は以下の式（２）となる。
2005006748.tif 000004
図１５は式（２）の等号が成り立つ場合、図１６は式（２）の不等号が成り立つ場合を図式化している。式（２）の右辺（Ｔ＋Δｅ）は、該当デコーダが再利用可能となる時間を示しており、左辺（Ｖ＊ｍｂ．ｓｔａｒｔ−Δｓ）は、ビデオＶ＊ｍａが指定時間Ｖ＊ｍｂ．ｓｔａｒｔに再生可能となるための初期化開始期限を示している。左辺の値が右辺の値より小さい場合は、該当デコーダではＶ＊ｍｂ．ｓｔａｒｔまでに初期化を終了できないことを意味しており、ビデオＶ＊ｍｂの処理は不可能とわかる。
次にシナリオ管理部２１ａにおける上記のデコーダ配分アルゴリズムのフローチャートを示す。図１７、図１８はデコーダ配分アルゴリズムを示すフローチャートである。
〔Ｓ１〕ビデオソースの番号を示すｍを初期化する（ｍ←１：図５の初期スケジューリング区間の場合では、ｍは７からである）。
〔Ｓ２〕ビデオＶ＊ｍｂをデコーダへ配分する際、式（１ａ）、（１ｂ）、（１ｃ）のすべての条件を満たす、ビデオＶ＊ｍａが配分されているデコーダの検索を行う。
〔Ｓ３〕式（１ａ）、（１ｂ）、（１ｃ）の条件を満たすデコーダがあればステップＳ５へいき、なければステップＳ４へいく。
〔Ｓ４〕ビデオＶ＊ｍａが配分されているデコーダにビデオＶ＊ｍｂを配分する。ステップＳ１０へいく。
〔Ｓ５〕式（２）の条件を満たす、時間Ｖ＊ｍｂ．ｓｔａｒｔにおける空きデコーダの検索を行う。
〔Ｓ６〕式（２）の条件を満たすデコーダが１個あればステップＳ７へいき、複数個あればステップＳ８へいき、存在しなければステップＳ９へいく。
〔Ｓ７〕該当する１個のデコーダにビデオＶ＊ｍｂを配分する。ステップＳ１０へいく。
〔Ｓ８〕式（２）の条件を満たすデコーダ中で、最初にデコード処理が終了するデコーダにビデオＶ＊ｍｂを配分する（初期化処理のΔｓ及び終了処理のΔｅは、ネットワーク３のトラフィック状態によって変動する可能性がある。このため、デコード処理が最初に終了して最も余裕のあるデコーダを選択する）。ステップＳ１０へいく。
〔Ｓ９〕すべてのデコーダ中で一番速くデコード処理が終了するデコーダにビデオＶ＊ｍｂを配分する。
〔Ｓ１０〕ｍを更新する（ｍ←ｍ＋１）。
〔Ｓ１１〕スケジューリング区間内のすべてのビデオソースをデコーダに配分したならば終了し、そうでなければステップＳ２へ戻る。
次にシナリオ管理部２１ａの詳細構成について説明する。図１９はシナリオ管理部２１ａの構成を示す図である。シナリオ管理部２１ａは、シナリオパーザ（ｐａｒｓｅｒ）２１ａ−１、同期コントローラ２１ａ−２、スケジューラ２１ａ−３、分岐判定部２１ａ−４から構成される。
シナリオパーザ２１ａ−１は、シナリオ読み込み指示がなされたときに、コンテンツサーバ１２と通信して該当するシナリオをダウンロードし、内部形式に変換する（シナリオをサーバから読み込み、サブシナリオに展開する）。読み込んだシナリオデータは、全体制御部２４経由で同期コントローラ２１ａ−２の再生対象としてセットされる。
同期コントローラ２１ａ−２は、シナリオがセットされると、デコーダ２２−１〜２２−ｎとスケジューラ２１ａ−３との同期を管理する。また、同期コントローラ２１ａ−２は、全体制御部２４からシナリオ再生指示があると、微小時間（例えば数ｍｓｅｃ）毎に周期起動されるようになる。この場合、シナリオ一時停止指定があると周期起動を中断し、かつシナリオ時間の増加も停止する。シナリオ停止指定があると周期起動を中断し、かつシナリオ時間を初期状態（０．０ｓｅｃ）に戻す（詳細な状態遷移は図２０で後述する）。
スケジューラ２１ａ−３は、図１７、図１８のフローチャートで上述したデコーダ配分アルゴリズムを実行する。分岐判定部２１ａ−４は、ユーザインタフェース部２５を通じて設定された分岐パラメータを、シナリオに記載された分岐条件と比較し、条件に合ったビデオを選択して、選択指示を同期コントローラ２１ａ−２に与える。
一方、ビデオ再生時間が再生中のサブシナリオの分岐時間に達すると（または分岐時間前に分岐が確定した場合）、同期コントローラ２１ａ−２は、分岐判定部２１ａ−４に次の分岐先サブシナリオを問い合わせる。分岐判定部２１ａ−４は、ユーザインタフェース部２５により指定されている分岐パラメータとサブシナリオの分岐条件を比較し、次のサブシナリオを選択する。
次のサブシナリオｓｉ＋１が選択されると、同期コントローラ２１ａ−２は、選択されなかった分岐のビデオソースが配分されたデコーダ２２を開放すると共に、スケジューラ２１ａ−３は新たなビデオソースをデコーダ２２に配分する。
図２０は同期コントローラ２１ａ−２の状態遷移を示す図である。
〔Ｓ２１〕初期状態からシナリオｓｉがセットされると、シナリオ停止状態へ遷移する。シナリオ停止状態では、周期起動がＯＦＦ、シナリオ時間Ｔｓ＝０．０ｓｅｃとなる。シナリオ時間Ｔｓは、同期コントローラ２１ａ−２が周期起動したときに、シナリオ再生開始からの経過時間を反映した時間である。
〔Ｓ２２〕シナリオ停止状態において、全体制御部２４からシナリオ再生指示（Ｐｌａｙ）があると、シナリオ再生状態（周期起動ＯＮ）へ遷移する。
〔Ｓ２３ａ〕シナリオ再生状態において、全体制御部２４からシナリオ一時停止（Ｐａｕｓｅ）があると、シナリオ一時停止状態（周期起動ＯＦＦ）へ遷移する。
〔Ｓ２３ｂ〕シナリオ再生状態において、全体制御部２４からシナリオ停止（Ｓｔｏｐ）があると、シナリオ停止状態へ遷移する。
〔Ｓ２４ａ〕シナリオ一時停止状態において、全体制御部２４からシナリオ再生指示（Ｐｌａｙ）があると、シナリオ停止状態（周期起動ＯＦＦ）へ遷移する。
〔Ｓ２４ｂ〕シナリオ一時停止状態において、全体制御部２４からシナリオ停止（Ｓｔｏｐ）があると、シナリオ再生状態へ遷移する。
次にデコーダ２２の動作について説明する。デコーダ２２は、ビデオＶ＊ｍに対して、初期化処理、再生処理、終了処理を行うが、現在時間（シナリオ時間Ｔｓとする）において、どの処理を行っているかは以下の式（３ａ）、（３ｂ）、（３ｃ）にもとづく。
2005006748.tif 000005
以下、式（３ａ）、（３ｂ）、（３ｃ）の意味を図２１〜図２３を用いて説明する。図２１は初期化処理を行っている状態を示す図である。式（３ａ）は、初期化処理を行う場合であり、現在のシナリオ時間Ｔｓが式（３ａ）を満たし、かつ該当デコーダが停止している場合にはビデオＶ＊ｍの初期化処理が行われる。
すなわち、ビデオＶ＊ｍ−１が停止中ならば、ビデオＶ＊ｍのＵＲＬを設定してプリフェッチを行うことになる。プリフェッチとは、ビデオ再生の前処理のことであり（バッファリングや初期化処理などが含まれる）、ビデオを即時に再生可能な状態にもっていく処理のことである（プリフェッチ処理を行った後は、ユーザはスイッチを押せばすぐに映像が表示されることになる）。
図２２は再生処理を行っている状態を示す図である。ビデオ時間で現在再生されている位置を再生位置ｐとして、この再生位置ｐをシナリオ時間Ｔｓとすると、Ｔｓが満たす条件が式（３ｂ）となる。ビデオＶ＊ｍの再生開始時間は、シナリオ時間で見ると、（Ｖ＊ｍ．ｌｏｃａｌ  ｓｔａｒｔ＋Ｖ＊ｍ．ｓｔａｒｔ−Ｔｓ）ｓｅｃである。
図２３は終了処理を行っている状態を示す図である。式（３ｃ）は、終了処理を行う場合であり、現在のシナリオ時間Ｔｓが式（３ｃ）を満たす場合にはビデオＶ＊ｍの終了処理が行われる。すなわち、ビデオＶ＊ｍが再生中で、シナリオ時間ＴｓがＶ＊ｍ．ｓｔａｒｔ＋Ｖ＊ｍ．ｄｕｒａｔｉｏｎを過ぎたらすみやかに再生を終了する（停止状態に遷移する）。
なお、上記の式（３ａ）は、ｍ＝１のとき、すなわち稼動しているデコーダが存在しないときは、この条件のみが適用される。また、ビデオＶ＊ｍが式（３ｃ）を満たした場合でも、図１４で上述した式（１ａ）、（１ｂ）、（１ｃ）をを満たすビデオＶ＊ｍ＋１が存在する場合は、後段のビデオＶ＊ｍ＋１の式（３ｂ）の条件による再生を優先する（ビデオＶ＊ｍのデコード終了条件を満たしていても、ビデオＶ＊ｍに継続するＶ＊ｍ＋１が存在する場合は、ビデオＶ＊ｍ＋１の再生条件を優先する）。すなわち、同じデコーダＶ＊ｍ．ｄｅｃｏｄｅｒ（＝Ｖ＊ｍ＋１．ｄｅｃｏｄｅｒ）において、同一ＵＲＬのビデオが連続的に再生され続けることになる。
さらに、式（３ａ）でプリフェッチ状態への遷移がおきたにもかかわらず、プリフェッチ遷移が完了せずに式（３ｂ）の条件に合致してしまった場合（すなわち、初期化処理が延長してしまい、Ｖ＊ｍ．ｓｔａｒｔに達してしまった場合）、そのデコードは再生を開始することができない。この場合、プリフェッチ遷移完了までＴｓ＝Ｖ＊ｍ．ｓｔａｒｔからＴｓを増加させないようにして（ビデオ再生可能状態に遷移）、プリフェッチが完了次第、ビデオ再生状態に遷移して、Ｔｓの増加を再開する（再生開始時間を遅らせるということ）。
次にデコーダ２２及び表示制御部２３の状態遷移について説明する。デコーダ２２及び表示制御部２３を含めて、以下、ビデオプレイヤと記す。図２４はビデオプレイヤの状態遷移を示す図である。
〔Ｓ３１〕停止状態からビデオＶ＊ｍ．ＵＲＬがセットされると、プリフェッチ状態へ遷移する。
〔Ｓ３２〕プリフェッチ状態において、プリフェッチが完了すると、ビデオ再生可能状態へ遷移する。
〔Ｓ３３ａ〕ビデオ再生可能状態（動画の一時停止かつ不可視状態）において、ビデオ再生（Ｐｌａｙ）があると、ビデオ再生に遷移する。
〔Ｓ３３ｂ〕ビデオ再生可能状態において、ビデオ停止（Ｓｔｏｐ）があると、停止状態に遷移する。
〔Ｓ３４ａ〕ビデオ再生状態（動画の可視状態）において、ビデオ一時停止（Ｐａｕｓｅ）があると、ビデオ再生可能状態へ遷移する。
〔Ｓ３４ｂ〕ビデオ再生状態において、ビデオ停止（Ｓｔｏｐ）があると、停止状態に遷移する。
図２５はビデオプレイヤの可視／不可視の切替えを示す図である。ビデオプレイヤでは、画面２３ｂ−１の中の同一領域に対して、複数のビデオ再生画（メディアプレイヤ画面）をスケジューリングにもとづき作成しておく（重畳表示可能にしておく）。
そして、各メディアプレイヤ画面に対して、不可視（ビデオ再生可能状態）とするには、属性が“ｈｉｄｄｅｎ”となり、可視（ビデオ再生状態）とするには、属性が“ｖｉｓｉｂｌｅ”となることで画面表示を行う。このように、あらかじめ再生画を作成しておき、可視／不可視の属性を変えることで、スイッチング機能を行うことになり、所望の画面を表示する。
このように、本発明によれば、複数のストリーミングが配信されるビデオシナリオにおいて、クライアント指示により分岐がある場合でも、シナリオに記述したとおりの順番で、かつ各ビデオの繋ぎ目部分で非表示がなく、なめらかにビデオを連続して再生することが可能になる。
以上説明したように、本発明のメディア再生装置は、一方のメディアの再生処理終了時間から他方のメディアの再生処理開始時間までのタイムラグを除去するように、複数のデコーダにスケジューリングを施し、デコーダからの再生出力の切替えを行ってメディアを表示する構成とした。これにより、分岐再生のあるストリーミングメディアに対し、各ビデオの繋ぎ目で発生していた非表示区間をなくすことができるので、シームレスなビデオ再生を実現することが可能になる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【図１】
2005006748.tif 000006
【図２】
2005006748.tif 000007
【図３】
2005006748.tif 000008
【図４】
2005006748.tif 000009
【図５】
2005006748.tif 000010
【図６】
2005006748.tif 000011
【図７】
2005006748.tif 000012
【図８】
2005006748.tif 000013
【図９】
2005006748.tif 000014
【図１０】
2005006748.tif 000015
【図１１】
2005006748.tif 000016
【図１２】
2005006748.tif 000017
【図１３】
2005006748.tif 000018
【図１４】
2005006748.tif 000019
【図１５】
2005006748.tif 000020
【図１６】
2005006748.tif 000021
【図１７】
2005006748.tif 000022
【図１８】
2005006748.tif 000023
【図１９】
2005006748.tif 000024
【図２０】
2005006748.tif 000025
【図２１】
2005006748.tif 000026
【図２２】
2005006748.tif 000027
【図２３】
2005006748.tif 000028
【図２４】
2005006748.tif 000029
【図２５】
2005006748.tif 000030
【図２６】
2005006748.tif 000031
【図２７】
2005006748.tif 000032
【国際調査報告】
2005006748.tif 000033
2005006748.tif 000034