(57)【特許請求の範囲】
【請求項１】
複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置であって、
再生開始時刻及び再生継続時間の情報に対応付けてセグメントを保存するバッファと、
シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するバッファ制御部と、
前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成する極小セグメント生成部と、
前記バッファからセグメントを読み出してデコードする再生部と、を備え、
前記バッファ制御部は、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保することを特徴とする受信装置。
【請求項２】
前記極小セグメント生成部は、黒画像をエンコードして前記極小セグメントを生成することを特徴とする、請求項１に記載の受信装置。
【請求項３】
前記極小セグメント生成部は、予め記憶されたテンプレートセグメントを連結することにより前記極小セグメントを生成することを特徴とする、請求項１又は２に記載の受信装置。
【請求項４】
複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、
再生開始時刻及び再生継続時間の情報に対応付けてセグメントをバッファに保存するステップと、
シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するステップと、
前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成するステップと、
前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保するステップと、
前記バッファからセグメントを読み出してデコードするステップと、
を含むことを特徴とするバッファ管理方法。
【請求項５】
コンピュータを、請求項１から３のいずれか一項に記載の受信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置、該受信装置のバッファ管理方法、及び該受信装置として機能させるためのプログラムに関する。
【背景技術】
【０００２】
昨今のインターネットにおけるストリーミング動画配信では、専用のサーバと専用のプロトコルによるストリーミング配信方式から、汎用的なＷｅｂサーバによりＨＴＴＰプロトコルを用いてストリーミング配信する方式への移行が進んでおり、多くのデバイス向けの配信において主流となっている。このようなＨＴＴＰプロトコルによるストリーミング配信方式（アダプティブストリーミング）としては、ＩＴベンダによる独自技術が普及している他、これらストリーミング方式の統一を意図した国際標準規格であるＭＰＥＧ−ＤＡＳＨ（ＩＳＯ／ＩＥＣ２３００９−１）が策定された。
【０００３】
いずれの技術も基本的なコンセプトは同様であり、Ｗｅｂサーバには動画コンテンツを一つ又は複数の品質（画面サイズやビットレート）でエンコードしたストリームをそれぞれ数秒から数十秒程度のファイルに分割したもの（セグメント）と、それらの動画コンテンツの属性やＵＲＬを記述したマニフェストファイルを用意する。受信装置はマニフェストファイルから当該受信装置の画面サイズや伝送路のネットワーク帯域の状態などを考慮して、適時品質を選択して次々とセグメントを受信し、１本の動画コンテンツにつなぎ合わせて再生するものである（例えば、非特許文献１参照）。
【０００４】
図６にアダプティブストリーミングの一例を示す。図６では、映像が複数品質でエンコードされ、それぞれの品質毎に数秒単位に分割されたセグメントが生成されている。この例では、エンコーダは映像を低品質のセグメント１〜４、中品質のセグメント１’〜４’、及び高品質のセグメント１”〜４”に分割している。マニフェストファイルには、セグメントのＵＲＬや、それぞれの品質毎のビットレートや画像サイズなどの属性情報が登録される。セグメント及びマニフェストファイルはＷｅｂサーバに供給される。
【０００５】
受信装置は、Ｗｅｂサーバからマニフェストファイルを受信し、マニフェストファイルからビットレートやセグメントの構成を把握し（ステップＡ）、受信装置の画面サイズやネットワークの受信帯域の状況をもとにセグメント単位で品質を選択し、ＨＴＴＰプロトコルにより受信する（ステップＢ）。続いて、受信したセグメントをマニフェストファイルに従って順番通りにつなぎ合わせて再生する（ステップＣ）。このようにステップＢ，Ｃの処理を繰り返すことにより、一連のコンテンツを受信し再生を継続することができる。
【０００６】
受信装置においては、多くのデバイスで普及が進むＨＴＭＬ５ブラウザを利用することにより、マルチデバイス（ＰＣ、テレビ受信機、タブレット装置等）に対応可能な視聴環境を構築することができる。
【０００７】
しかし、従来ＨＴＭＬ５ブラウザで動画を再生するための機能であるビデオ要素（ｖｉｄｅｏタグ）では、ソースとしてメディアファイルを参照することしかできなかったため、このようなアダプティブストリーミングの視聴を実現するためには、別途ブラウザプラグインのインストールが必要だった。そのため、どのブラウザでも共通で利用できる視聴環境を構築することが困難だった。このような状況から、ＨＴＭＬ５ブラウザのビデオ要素（ｖｉｄｅｏタグ）及びJavascript（登録商標）によってアダプティブストリーミングの視聴を実現するための機能として、Ｗｅｂで利用される技術の標準化をすすめる国際的な非営利団体であるＷ３ＣにおいてＭＳＥ（Media Source Extensions）の規格化が進んでいる（例えば、非特許文献２参照）。
【０００８】
ＭＳＥを用いることにより、ビデオ要素はソースとしてバッファを参照することが可能となる。そのバッファへはJavascriptによって受信したセグメントを挿入することができるようになることから、多様なアダプティブストリーミングの視聴がＨＴＭＬ５のビデオ要素とJavascriptにより実現可能となる。
【０００９】
ここで、図７を参照してＭＳＥのバッファモデルについて説明する。図７はＭＳＥのバッファモデルの一例を示す図である。バッファ（SourceBuffer）は、再生開始時刻（再生開始位置）と再生継続時間（尺）の情報に対応つけてセグメントを管理する。図７では、斜線の入ったブロックがセグメントを示しており、再生開始時刻が０かつ再生継続時間が５秒、再生開始時刻が５かつ再生継続時間が５秒、再生開始時刻が１５かつ再生継続時間が５秒のセグメントがバッファに挿入されている。この時、バッファのバッファリング範囲（buffered属性）は０〜１０秒、１５〜２０秒となる。
【００１０】
また、図８に示すように、既にセグメントが挿入されている範囲に再生時刻が重なる別のセグメントを挿入して上書きすることも可能である。図８では、図７に示した例に、新しいセグメントとして再生開始時刻１２かつ再生継続時間１０秒のセグメントを挿入した例を示している。その結果、１２秒から２２秒の範囲が新しいセグメントに差し替わるとともに、バッファリング範囲も０〜１０秒、１２〜２２秒に更新されている。
【００１１】
一般にストリーミングを視聴する際には、ネットワークの混雑状況に応じて受信帯域が常に変動することから、バッファ容量の許す限り現在の再生時刻よりも数秒から数十秒先のデータまで受信してバッファに挿入しておくことにより、視聴の安定性を向上することができる。
【００１２】
コンテンツの視聴においては、コンテンツの最初から最後まで通して視聴する場合もあるが、視聴中にコンテンツの任意の位置を指定して再生を行うシーク再生をする場合もありうる。しかしながら、シーク再生をしようとする場合、バッファ容量の最大値近くまで未再生のセグメントが残っていると、指定した位置（時刻）のセグメントを受信してもバッファに挿入することができず、再生を開始できない可能性があった。
【００１３】
図９にシーク動作時に再生を開始できない例を示す。図９では、バッファは３個分のセグメントを挿入可能な容量を確保しているとする。現在の再生時刻は１５であり、バッファには１５秒〜３０秒のセグメントが挿入されている。この状態で、時刻５の位置へのシークを行ったとする。このとき、１５秒から３０秒のセグメントは未再生の状態でバッファに残されている。この状態で時刻５のセグメントを取得しても、バッファに３個分のセグメントが残り続けているため、バッファに挿入することができない。したがって、シーク再生を始めることができない状況に陥っている。
【００１４】
ＭＳＥでは、非特許文献３に示すバージョン以降においては、removeメソッドというＡＰＩが追加され、任意の範囲を指定してバッファのセグメントを消去することが可能である。
【００１５】
また、特許文献１には、データをバッファに溜める際に、バッファ容量が一杯だった場合に、再生済みデータの中から古いデータを優先的に消去することや、再生済みデータがバッファに残っていない場合は、任意の位置指定前にバッファに残っているデータの中から新しいデータを優先的に消去する技術が開示されている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１３−１６９２０号公報
【非特許文献】
【００１７】
【非特許文献１】“次世代動画配信技術「ＭＰＥＧ−ＤＡＳＨ」技術概要と標準化・関連技術動向”，映像情報メディア学会誌，Vol.67, No.2, 2013, p.109-115
【非特許文献２】Ｗ３Ｃ、“Media Source Extensions W3C Candidate Recommendation 17 July 2014”、[2015年1月6日検索]、インターネットURL:http://www.w3.org/TR/media-source/
【非特許文献３】Ｗ３Ｃ、“Media Source Extensions W3C Editor's Draft 25 February 2013”、[2015年1月6日検索]、インターネット<URL:https://dvcs.w3.org/hg/html-media/raw-file/668a1c82fb88/media-source/media-source.html>
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、非特許文献３に示すバージョンよりも前のバージョンが実装された受信装置が既に数多く存在しており、それらの受信装置ではremoveメソッドを用いてバッファのセグメントを消去することができなかった。
【００１９】
また、特許文献１に開示された技術によれば、ストリーミング再生でユーザが任意の位置を指定して再生を行うときに生じていた待ち時間に、見かけ上シームレスな切替えを行うことができるが、ＭＳＥを用いる場合はバッファからデータを消去する方法は実装依存となっており、この技術を必ずしも適用できるとは限らなかった。
【００２０】
かかる事情に鑑みてなされた本発明の目的は、ストリーミング再生においてシーク動作を安定に行うことを可能とする受信装置、バッファ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００２１】
上記課題を解決するため、本発明に係る受信装置は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置であって、再生開始時刻及び再生継続時間の情報に対応付けてセグメントを保存するバッファと、シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するバッファ制御部と、前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成する極小セグメント生成部と、前記バッファからセグメントを読み出してデコードする再生部と、を備え、前記バッファ制御部は、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保することを特徴とする。
【００２２】
さらに、前記受信装置において、前記極小セグメント生成部は、黒画像をエンコードして前記極小セグメントを生成することを特徴とする。
【００２３】
さらに、前記受信装置において、前記極小セグメント生成部は、予め記憶されたテンプレートセグメントを連結することにより前記極小セグメントを生成することを特徴とする。
【００２４】
また、上記課題を解決するため、本発明に係るバッファ管理方法は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、再生開始時刻及び再生継続時間の情報に対応付けてセグメントをバッファに保存するステップと、シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するステップと、前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成するステップと、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保するステップと、前記バッファからセグメントを読み出してデコードするステップと、を含むことを特徴とする。
【００２５】
また、上記課題を解決するため、本発明に係るプログラムは、コンピュータを、上記受信装置として機能させることを特徴とする。
【発明の効果】
【００２６】
本発明によれば、ストリーミング再生を行う際に、バッファから任意のセグメントを指定して消去する機能が無くても、安定したシーク動作が可能となる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係る受信装置の構成例を示す図である。
【図２】ＭＰＤ（Media Presentation Description）の一例を示す図である。
【図３】本発明の一実施形態に係る受信装置におけるテンプレートセグメントの一例を示す図である。
【図４】本発明の一実施形態に係る受信装置のバッファ管理方法を示すフローチャートである。
【図５】本発明の一実施形態に係る受信装置において、極小セグメントをバッファに上書き挿入する例を示す図である。
【図６】従来のアダプティブストリーミングの一例を示す図である。
【図７】従来のＭＳＥのバッファモデルの一例を示す図である。
【図８】従来のＭＳＥのバッファモデルにおいて、セグメントをバッファに上書き挿入する例を示す図である。
【図９】従来のＭＳＥのバッファモデルにおいて、シーク動作時に再生を開始できない例を示す図である。
【発明を実施するための形態】
【００２８】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。以下に説明する本実施形態では一例として、マニフェストファイルをＭＰＥＧ−ＤＡＳＨ（ＩＳＯ／ＩＥＣ２３００９−１）のＭＰＤ（Media Presentation Description）形式とし、セグメントをＩＳＯＢＭＦＦ（ＩＳＯ／ＩＥＣ１４４９６−１２）形式とする。
【００２９】
図１は、本発明の一実施形態に係る受信装置の構成例を示す図である。受信装置１と配信サーバ２はインターネットを介して接続される。受信装置１は、配信サーバ２から複数のセグメントにより構成されるコンテンツをセグメント毎に受信し、ストリーミング再生を行う。
【００３０】
配信サーバ２は、受信装置１によって指定されたＵＲＬのマニフェストファイルやセグメントを配信するサーバであり、例えば一般的なＷｅｂサーバとすることができる。
【００３１】
図１の例では、受信装置１は、通信Ｉ／Ｆ１０と、マニフェスト受信部１１と、セグメントリクエスト部１２と、バッファ１３と、バッファ制御部１４と、極小セグメント生成部１５と、再生部１６と、再生制御部１７と、再生制御ユーザＩ／Ｆ１８と、表示部１９とを備える。
【００３２】
マニフェスト受信部１１は、配信サーバ２から通信Ｉ／Ｆ１０を介して所望のコンテンツのマニフェストファイル（ＭＰＤ）を受信し、マニフェストファイルをもとに再生時刻とセグメントのＵＲＬとを対応付けたセグメントＵＲＬリストを生成し、セグメントリクエスト部１２に出力する。
【００３３】
図２にＭＰＤの一例を示す。ＭＰＤはPeriod，AdaptationSet，Representationの順に階層構造となっている。Periodは番組を時間方向に一つ又は複数に区切った一区画を示している。図２の例では開始時刻が０であり、時間が３分間であることを示している。Periodは一つ又は複数（図２の例では一つ）のAdaptationSetから構成される。AdaptationSetはメディアのコンポーネント（映像、音声、テキスト等）の情報を示しており、同じメディアでパラメータ（ビットレートや画面サイズ、音声のチャンネル数など）の異なる複数（図２の例では一つ）のコンポーネントを含むことができる。AdaptationSetに含まれるそれぞれのメディアのコンポーネントの情報はRepresentationで示される。Representationは一つ又は複数のセグメントで構成される。
【００３４】
ある再生時刻におけるセグメントのＵＲＬは、ＭＰＤの情報から求めることができる。図６に示すＭＰＤを例に説明する。２行目のstartの値から、Periodの開始時刻は０である。４行目のtimescaleの値から、AdaptationSetのタイムスケール（１秒間の目盛数）は、９００００である。６行目のdurationの値から、セグメントの継続時間は、４５００００である。６行目のstartNumberの値から、セグメントの開始番号は１である。以上から、ある再生時刻ｔ（秒）に対するセグメント番号Numberは以下の式（１）で算出できる。なお、少数以下を切り捨てとする。
Number = (t - start)× timescale/duration + startNumber                 (１)
【００３５】
次に、６行目のmediaの値から、セグメントのＵＲＬのテンプレート“content_v_$Number$.mp4”を取得し、$Number$を先に算出したNumber値に差し替えることにより、セグメントのＵＲＬを取得することができる。
【００３６】
再び図１に戻り、セグメントリクエスト部１２は、バッファ制御部１４から取得対象のセグメントの再生時刻情報を入力し、該入力した再生時刻情報に対応するセグメントのＵＲＬをセグメントＵＲＬリストから抽出し、該抽出したセグメントのＵＲＬを含むセグメントリクエストを配信サーバ２に要求し、該要求に対応するセグメントを受信する。
【００３７】
バッファ１３は、バッファ制御部１４からセグメントを入力し、セグメントの再生開始時刻及び再生継続時間を対応付けてセグメントを保存し、現在の保存中の全セグメントの再生時刻及び再生継続時間の情報をバッファ制御部１４に出力する。また、再生部１６から要求された再生時刻のセグメントを順次再生部１６に出力する。
【００３８】
再生制御ユーザＩ／Ｆ１８は、ユーザの操作によって再生を制御する機能である。再生開始・停止ボタンを用意するとともに、コンテンツの開始時刻及び終了時刻を表示し、さらに再生制御部１７から入力する再生時刻情報をもとに、現在の再生位置をグラフィカルに表示してもよい。例えば、再生画面の下部にコンテンツの開始時刻を左端、終了時刻を右端とする横長の棒状で表示し、それと重なるようにつまみ状の操作部分を配置し、つまみ上の操作部分を再生が進むにつれて左端から右端に移動させることによって、ユーザは再生時間全体のうち今どの部分を再生しているのかを一目で把握することができる。
【００３９】
また、このつまみをマウス等のユーザ操作によって動かすことにより、任意の再生位置を指定できるようにしてもよい。ユーザ操作によって、再生開始命令、停止命令、シーク再生命令、及び新規再生時刻情報を再生制御部１７に出力する。
【００４０】
再生制御部１７は、現在の再生状態（再生中、停止中）及び再生部１６から入力される再生時刻情報を再生制御ユーザＩ／Ｆ１８に出力する。また、再生制御ユーザＩ／Ｆ１８から再生開始命令、停止命令が入力されると、再生部１６に再生開始・停止を指示する。また、再生制御ユーザＩ／Ｆ１８からシーク再生（再生位置変更）命令が入力されると、変更後の再生時刻を示す情報である新規再生時刻情報をバッファ制御部１４に出力し、バッファ制御部１４からバッファ規定値を超えたことを示す通知が入力されると、再生部１６に新規再生時刻情報を出力するとともに、再生開始を指示する。
【００４１】
再生部１６は、再生制御部１７から再生開始命令及び新規再生時刻情報を入力したら、当該新規再生時刻情報が示す再生開始時刻のセグメントを順次バッファ１３から読み出しし、該読み出したセグメントをセグメントのメディアの形式（映像、音声、テキスト等）に従ってデコードして表示部１９に出力するとともに、再生とともに更新される再生時刻の情報である再生時刻情報を再生制御部１７に出力する。再生制御部１７から停止命令を入力した場合は、再生を停止する。
【００４２】
表示部１９は、再生部１６から入力されたデコード済みのメディアデータをそのメディアの形式に従って表示する。
【００４３】
バッファ制御部１４は、再生制御部１７から新規再生時刻情報が入力されると、バッファ１３においてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得する。冗長セグメント範囲の情報とは、冗長セグメント範囲の開始時刻を示す上書き開始時刻、及び冗長セグメント範囲の継続時間を示す上書き継続時間である。
【００４４】
極小セグメント生成部１５は、冗長セグメント範囲を含む範囲のセグメントであって、冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成し、バッファ制御部１４に出力する。つまり、バッファ制御部１４から上書き開始時刻情報及び上書き継続時間情報を入力すると、該入力した上書き開始時刻情報（又はそれよりも少し前）から始まり、上書き継続時間情報よりも長い極小セグメントを生成する。ダミーデータはサイズの小さいデータであれば特に限定されるものではないが、例えば黒画像とすることができる。
【００４５】
極小セグメント生成部１５は、極小セグメントを予め記憶されたテンプレートセグメントを連結することにより生成してもよい。ここでテンプレートセグメントとは、データサイズが小さいダミーのメディアデータをエンコードして予めセグメント化したものである。テンプレートセグメントは、受信装置１に記憶しておくこともできるし、コンテンツ再生開始時に、例えば配信サーバ２から取得するようにしてもよい。極小セグメントは、上書き開始時刻情報及び上書き継続時間情報をもとにテンプレートセグメントのパラメータを差し替えたデータとすることで生成される。
【００４６】
ここで、図３を参照して、テンプレートセグメントの一例を説明する。図３は、テンプレートセグメントを、ＩＳＯＢＭＦＦ（ＩＳＯ／ＩＥＣ１４４９６−１２）形式とした場合の一例である。なお、一つのセグメントにMovie Fragmentを複数含むことも可能であるが、本例では一つとする。
【００４７】
本発明に関連する一部のパラメータについて説明する。sidxに含まれるtimescaleはタイムスケールを表している。earliest_presentation_timeは、このセグメントの最初のMovie Fragmentの最初の動画データの再生時刻を示している。subsegment_durationは、このMovie Fragment毎の再生継続時間を示している。また、Movie Fragment内の、moof/traf/tfdtに含まれるbaseMediaDecodeTimeは、当該Movie Fragmentのデコード時刻を示している。例えば、timescale＝９００００とした場合、再生開始時刻１０、再生継続時間５秒のセグメントのearliest_presentation_time＝baseMediaDecodeTime＝timescale×１０＝９０００００となる。また、subsegment_duration＝timescale×５＝４５００００となる。
【００４８】
つまり、上書き開始時刻１５、上書き継続時間５秒の極小セグメントを生成するには、earliest_presentation_timeを１３５００００に修正すればよい。なお、再生継続時間を修正しようとすると、mdat内部の情報まで修正範囲が及ぶことから処理負荷が大きくなる。そのため、テンプレートセグメントを再生継続時間が上書き継続時間を上回るまで複数連結することで、再生継続時間を修正せずに、所望の極小セグメントを生成することができる。例えば、再生継続時間がそれぞれ１秒，２秒，５秒のテンプレートセグメントを用意しておき、上書き継続時間の長さに応じて適宜組み合わせることもできる。
【００４９】
（バッファ管理方法）
次に、本発明における受信装置１のシーク動作時のバッファ管理方法について説明する。
【００５０】
図４は、本発明の一実施形態に係るバッファ管理方法を示すフローチャートである。本フローチャートは、既にマニフェストファイルを取得しており、セグメントＵＲＬリストも作成済みの状態から開始するものとする。また、ネットワークの混雑状況に応じて受信帯域が常に変動することを見越して、再生開始時刻を起点として、予め設定したバッファ規定値（例えば５秒）以上のセグメントがバッファ１３に挿入されてから再生を開始するものとする。
【００５１】
また、バッファ１３は、コンテンツの開始時刻から終了時刻までの範囲を持っており、セグメントを再生開始時刻と再生継続時刻の情報と対応つけて保存しているものとする。また、バッファ１３にコンテンツのセグメントが挿入されている範囲をバッファ済みセグメント範囲と称する。
【００５２】
まず、再生制御ユーザＩ／Ｆ１８からシーク操作が実行され、シーク再生命令を受信したら（ステップＳ００１）、再生制御部１７は、シーク再生命令から新規再生時刻情報を抽出しバッファ制御部１４に出力する（ステップＳ００２）。
【００５３】
次に、バッファ制御部１４は、バッファ１３内に新規再生時刻から予め設定したバッファ規定値以上の範囲のセグメントが存在するか否かを確認する（ステップＳ００３）。ステップＳ００３がＹＥＳの場合はバッファ１３に保存されたデータをそのまま再生可能であるため、再生制御部１７において再生を開始する（ステップＳ０１３）。一方、ステップＳ００３がＮＯの場合は、データを取得する必要があるため、バッファ１３に１セグメント分の空き容量が存在するか否かを確認する（ステップＳ００４）。
【００５４】
バッファ１３に１セグメント分の空き容量が存在しない場合は（ステップＳ００４−ＮＯ）、バッファ１３内に新規再生時刻を含まないバッファ済みセグメント範囲である冗長セグメント範囲が存在するか否かを確認する（ステップＳ００５）。バッファ１３内に冗長セグメント範囲が存在する場合は（ステップＳ００５−ＹＥＳ）、冗長セグメント範囲を抽出し、冗長セグメント範囲の最小値を上書き開始時刻、冗長セグメント範囲の長さを上書き継続時間として極小セグメント生成部１５に出力し、極小セグメント生成部１５は該入力した上書き開始時刻及び上書き継続時間をもとに極小セグメントを生成し、バッファ制御部１４に出力する（ステップＳ００６）。バッファ制御部１４は入力された極小セグメントをバッファ１３に挿入して冗長セグメント範囲を上書きし（ステップＳ００７）、ステップＳ００４に戻る。
【００５５】
図５は、極小セグメントをバッファ１３に上書き挿入する例を示す図である。図５に示すように、例えばバッファ１３に開始時刻１５から開始時刻３０までの１５秒間のセグメントが保存されており、新規再生時刻が５であった場合、バッファ１３に保存されたセグメントは無駄（冗長）なセグメントと考えることができる。よって、この場合は開始時刻１５から３０を冗長セグメント範囲とし、この冗長セグメント範囲に、生成した極小セグメントを上書きする。この図では極小セグメントのデータ容量が小さいことを示すために、極小セグメントの面積を擬似的に小さく表示している。このようにしてデータ量の小さい極小セグメントを上書きすることにより、空き容量を確保することができる。
【００５６】
次に、ステップＳ００５に戻り、バッファ１３内に冗長セグメント範囲が存在しない場合は（ステップＳ００５−ＮＯ）、バッファ１３から再生済みセグメントが消去されるまで待機し（ステップＳ００８）、ステップＳ００４に戻る。
【００５７】
ステップＳ００４に戻り、バッファ１３に１セグメント分の空き容量が存在する場合は（ステップＳ００４−ＹＥＳ）、セグメントリクエスト部１２は以下の動作を行う。バッファ１３内に新規再生時刻を含むセグメントが存在しない場合には、新規再生時刻を含むセグメントのＵＲＬが、セグメントＵＲＬリストに存在するか否かを確認する（ステップＳ００９）。また、バッファ１３内に新規再生時刻を含むセグメントが存在する場合には、新規再生時刻を含むバッファ済みセグメント範囲の最大値を含むセグメントに続くセグメント（すなわち、新規再生時刻を含むバッファ済みセグメントに続くセグメント）のＵＲＬが、セグメントＵＲＬリストに存在するか否かを確認する（ステップＳ００９）。該セグメントのＵＲＬがセグメントＵＲＬリストに存在する場合は（ステップＳ００９−ＹＥＳ）、セグメントＵＲＬリストから当該セグメントのＵＲＬを抽出する。セグメントリクエスト部１２は、該抽出したセグメントのＵＲＬを含むセグメント要求を配信サーバ２に送信し、該要求に対応するセグメントを受信しバッファ制御部１４に出力する（ステップＳ０１０）。バッファ制御部１４は該受信したセグメントをバッファ１３に挿入する（ステップＳ０１１）。
【００５８】
ステップＳ００９がＮＯの場合は、何もせずにステップＳ０１２に移行する。ステップＳ０１２では再生制御部１７において現在再生中か否かを確認し、再生が開始されていない場合は（ステップＳ０１２−ＮＯ）、ステップＳ００３に戻る。一方、再生が開始されている場合は（ステップＳ０１２−ＹＥＳ）、バッファ１３の最後に到達したか、再生制御ユーザＩ／Ｆ１８において停止ボタンが押されたか否かを確認し、いずれも満たさない場合は（ステップＳ０１４−ＮＯ）、ステップＳ００４に戻る。いずれかを満たした場合は（ステップＳ０１４−ＹＥＳ）、再生を停止し、処理を終了する。
【００５９】
以上により、バッファ１３内にセグメントを挿入するのに必要な空き容量が不足している場合にも、新規再生時刻を含まないバッファ済みセグメント範囲である冗長セグメント範囲を極小セグメントで上書きすることにより、迅速に空き容量を確保することが可能となり、シーク操作後の再生開始までの時間を短縮して安定した再生が可能となる。
【００６０】
一例をあげると、８Ｍｂｐｓで再生継続時間が５秒のセグメントが５ＭＢであるのに対し、黒画像をエンコードした５秒の極小セグメントが約７ＫＢであることから、冗長セグメント範囲を極小セグメントで上書きすることにより、５ＭＢ（４．９９３ＭＢ）近くの空き容量を確保することが可能となる。
【００６１】
上述したように、受信装置１は、シーク再生命令を受信した時に、冗長セグメント範囲を極小セグメントで上書きすることにより、バッファ１３の空き容量を確保することができる。かくして、受信装置１は、バッファ１３から任意のセグメントを指定して消去する機能が無くても、安定してシーク動作を行うことが可能となる。
【００６２】
なお、上述した受信装置１として機能させるためにコンピュータを好適に用いることができ、そのようなコンピュータは、受信装置１の各機能を実現する処理内容を記述したプログラムを該コンピュータの記憶部に格納しておき、該コンピュータのＣＰＵによってこのプログラムを読み出して実行させることで実現することができる。なお、このプログラムは、コンピュータ読取り可能な記録媒体に記録可能である。
【００６３】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態に記載の複数の構成ブロックやステップを１つに組み合わせたり、あるいは１つの構成ブロックやステップを分割したりすることが可能である。
【符号の説明】
【００６４】
１    受信装置
２    配信サーバ
１０  通信Ｉ／Ｆ
１１  マニフェスト受信部
１２  セグメントリクエスト部
１３  バッファ
１４  バッファ制御部
１５  極小セグメント生成部
１６  再生部
１７  再生制御部
１８  再生制御ユーザＩ／Ｆ
１９  表示部
【図１】
0006397341.tif 000002
【図２】
0006397341.tif 000003
【図３】
0006397341.tif 000004
【図４】
0006397341.tif 000005
【図５】
0006397341.tif 000006
【図６】
0006397341.tif 000007
【図７】
0006397341.tif 000008
【図８】
0006397341.tif 000009
【図９】
0006397341.tif 000010