特許第6397341号(P6397341)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本放送協会の特許一覧

特許6397341受信装置、バッファ管理方法、及びプログラム
<>
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000002
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000003
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000004
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000005
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000006
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000007
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000008
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000009
  • 特許6397341-受信装置、バッファ管理方法、及びプログラム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6397341
(24)【登録日】2018年9月7日
(45)【発行日】2018年9月26日
(54)【発明の名称】受信装置、バッファ管理方法、及びプログラム
(51)【国際特許分類】
   H04N 21/438 20110101AFI20180913BHJP
   H04N 21/4335 20110101ALI20180913BHJP
   G06F 13/00 20060101ALI20180913BHJP
【FI】
   H04N21/438
   H04N21/4335
   G06F13/00 520B
   G06F13/00 353Q
【請求項の数】5
【全頁数】14
(21)【出願番号】特願2015-11388(P2015-11388)
(22)【出願日】2015年1月23日
(65)【公開番号】特開2016-136676(P2016-136676A)
(43)【公開日】2016年7月28日
【審査請求日】2017年11月28日
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100161148
【弁理士】
【氏名又は名称】福尾 誠
(72)【発明者】
【氏名】西村 敏
(72)【発明者】
【氏名】大西 正芳
(72)【発明者】
【氏名】松村 欣司
(72)【発明者】
【氏名】藤沢 寛
(72)【発明者】
【氏名】遠藤 洋介
【審査官】 富樫 明
(56)【参考文献】
【文献】 特開2013−027051(JP,A)
【文献】 特許第5106671(JP,B1)
【文献】 羽田野 太巳,HTML5 Web標準APIバイブル,ソシム株式会社,2014年 2月 3日,第1版,pp.442-452
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00−21/858
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置であって、
再生開始時刻及び再生継続時間の情報に対応付けてセグメントを保存するバッファと、
シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するバッファ制御部と、
前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成する極小セグメント生成部と、
前記バッファからセグメントを読み出してデコードする再生部と、を備え、
前記バッファ制御部は、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保することを特徴とする受信装置。
【請求項2】
前記極小セグメント生成部は、黒画像をエンコードして前記極小セグメントを生成することを特徴とする、請求項1に記載の受信装置。
【請求項3】
前記極小セグメント生成部は、予め記憶されたテンプレートセグメントを連結することにより前記極小セグメントを生成することを特徴とする、請求項1又は2に記載の受信装置。
【請求項4】
複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、
再生開始時刻及び再生継続時間の情報に対応付けてセグメントをバッファに保存するステップと、
シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するステップと、
前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成するステップと、
前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保するステップと、
前記バッファからセグメントを読み出してデコードするステップと、
を含むことを特徴とするバッファ管理方法。
【請求項5】
コンピュータを、請求項1から3のいずれか一項に記載の受信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置、該受信装置のバッファ管理方法、及び該受信装置として機能させるためのプログラムに関する。
【背景技術】
【0002】
昨今のインターネットにおけるストリーミング動画配信では、専用のサーバと専用のプロトコルによるストリーミング配信方式から、汎用的なWebサーバによりHTTPプロトコルを用いてストリーミング配信する方式への移行が進んでおり、多くのデバイス向けの配信において主流となっている。このようなHTTPプロトコルによるストリーミング配信方式(アダプティブストリーミング)としては、ITベンダによる独自技術が普及している他、これらストリーミング方式の統一を意図した国際標準規格であるMPEG−DASH(ISO/IEC23009−1)が策定された。
【0003】
いずれの技術も基本的なコンセプトは同様であり、Webサーバには動画コンテンツを一つ又は複数の品質(画面サイズやビットレート)でエンコードしたストリームをそれぞれ数秒から数十秒程度のファイルに分割したもの(セグメント)と、それらの動画コンテンツの属性やURLを記述したマニフェストファイルを用意する。受信装置はマニフェストファイルから当該受信装置の画面サイズや伝送路のネットワーク帯域の状態などを考慮して、適時品質を選択して次々とセグメントを受信し、1本の動画コンテンツにつなぎ合わせて再生するものである(例えば、非特許文献1参照)。
【0004】
図6にアダプティブストリーミングの一例を示す。図6では、映像が複数品質でエンコードされ、それぞれの品質毎に数秒単位に分割されたセグメントが生成されている。この例では、エンコーダは映像を低品質のセグメント1〜4、中品質のセグメント1’〜4’、及び高品質のセグメント1”〜4”に分割している。マニフェストファイルには、セグメントのURLや、それぞれの品質毎のビットレートや画像サイズなどの属性情報が登録される。セグメント及びマニフェストファイルはWebサーバに供給される。
【0005】
受信装置は、Webサーバからマニフェストファイルを受信し、マニフェストファイルからビットレートやセグメントの構成を把握し(ステップA)、受信装置の画面サイズやネットワークの受信帯域の状況をもとにセグメント単位で品質を選択し、HTTPプロトコルにより受信する(ステップB)。続いて、受信したセグメントをマニフェストファイルに従って順番通りにつなぎ合わせて再生する(ステップC)。このようにステップB,Cの処理を繰り返すことにより、一連のコンテンツを受信し再生を継続することができる。
【0006】
受信装置においては、多くのデバイスで普及が進むHTML5ブラウザを利用することにより、マルチデバイス(PC、テレビ受信機、タブレット装置等)に対応可能な視聴環境を構築することができる。
【0007】
しかし、従来HTML5ブラウザで動画を再生するための機能であるビデオ要素(videoタグ)では、ソースとしてメディアファイルを参照することしかできなかったため、このようなアダプティブストリーミングの視聴を実現するためには、別途ブラウザプラグインのインストールが必要だった。そのため、どのブラウザでも共通で利用できる視聴環境を構築することが困難だった。このような状況から、HTML5ブラウザのビデオ要素(videoタグ)及びJavascript(登録商標)によってアダプティブストリーミングの視聴を実現するための機能として、Webで利用される技術の標準化をすすめる国際的な非営利団体であるW3CにおいてMSE(Media Source Extensions)の規格化が進んでいる(例えば、非特許文献2参照)。
【0008】
MSEを用いることにより、ビデオ要素はソースとしてバッファを参照することが可能となる。そのバッファへはJavascriptによって受信したセグメントを挿入することができるようになることから、多様なアダプティブストリーミングの視聴がHTML5のビデオ要素とJavascriptにより実現可能となる。
【0009】
ここで、図7を参照してMSEのバッファモデルについて説明する。図7はMSEのバッファモデルの一例を示す図である。バッファ(SourceBuffer)は、再生開始時刻(再生開始位置)と再生継続時間(尺)の情報に対応つけてセグメントを管理する。図7では、斜線の入ったブロックがセグメントを示しており、再生開始時刻が0かつ再生継続時間が5秒、再生開始時刻が5かつ再生継続時間が5秒、再生開始時刻が15かつ再生継続時間が5秒のセグメントがバッファに挿入されている。この時、バッファのバッファリング範囲(buffered属性)は0〜10秒、15〜20秒となる。
【0010】
また、図8に示すように、既にセグメントが挿入されている範囲に再生時刻が重なる別のセグメントを挿入して上書きすることも可能である。図8では、図7に示した例に、新しいセグメントとして再生開始時刻12かつ再生継続時間10秒のセグメントを挿入した例を示している。その結果、12秒から22秒の範囲が新しいセグメントに差し替わるとともに、バッファリング範囲も0〜10秒、12〜22秒に更新されている。
【0011】
一般にストリーミングを視聴する際には、ネットワークの混雑状況に応じて受信帯域が常に変動することから、バッファ容量の許す限り現在の再生時刻よりも数秒から数十秒先のデータまで受信してバッファに挿入しておくことにより、視聴の安定性を向上することができる。
【0012】
コンテンツの視聴においては、コンテンツの最初から最後まで通して視聴する場合もあるが、視聴中にコンテンツの任意の位置を指定して再生を行うシーク再生をする場合もありうる。しかしながら、シーク再生をしようとする場合、バッファ容量の最大値近くまで未再生のセグメントが残っていると、指定した位置(時刻)のセグメントを受信してもバッファに挿入することができず、再生を開始できない可能性があった。
【0013】
図9にシーク動作時に再生を開始できない例を示す。図9では、バッファは3個分のセグメントを挿入可能な容量を確保しているとする。現在の再生時刻は15であり、バッファには15秒〜30秒のセグメントが挿入されている。この状態で、時刻5の位置へのシークを行ったとする。このとき、15秒から30秒のセグメントは未再生の状態でバッファに残されている。この状態で時刻5のセグメントを取得しても、バッファに3個分のセグメントが残り続けているため、バッファに挿入することができない。したがって、シーク再生を始めることができない状況に陥っている。
【0014】
MSEでは、非特許文献3に示すバージョン以降においては、removeメソッドというAPIが追加され、任意の範囲を指定してバッファのセグメントを消去することが可能である。
【0015】
また、特許文献1には、データをバッファに溜める際に、バッファ容量が一杯だった場合に、再生済みデータの中から古いデータを優先的に消去することや、再生済みデータがバッファに残っていない場合は、任意の位置指定前にバッファに残っているデータの中から新しいデータを優先的に消去する技術が開示されている。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2013−16920号公報
【非特許文献】
【0017】
【非特許文献1】“次世代動画配信技術「MPEG−DASH」技術概要と標準化・関連技術動向”,映像情報メディア学会誌,Vol.67, No.2, 2013, p.109-115
【非特許文献2】W3C、“Media Source Extensions W3C Candidate Recommendation 17 July 2014”、[2015年1月6日検索]、インターネットURL:http://www.w3.org/TR/media-source/
【非特許文献3】W3C、“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>
【発明の概要】
【発明が解決しようとする課題】
【0018】
しかしながら、非特許文献3に示すバージョンよりも前のバージョンが実装された受信装置が既に数多く存在しており、それらの受信装置ではremoveメソッドを用いてバッファのセグメントを消去することができなかった。
【0019】
また、特許文献1に開示された技術によれば、ストリーミング再生でユーザが任意の位置を指定して再生を行うときに生じていた待ち時間に、見かけ上シームレスな切替えを行うことができるが、MSEを用いる場合はバッファからデータを消去する方法は実装依存となっており、この技術を必ずしも適用できるとは限らなかった。
【0020】
かかる事情に鑑みてなされた本発明の目的は、ストリーミング再生においてシーク動作を安定に行うことを可能とする受信装置、バッファ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0021】
上記課題を解決するため、本発明に係る受信装置は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置であって、再生開始時刻及び再生継続時間の情報に対応付けてセグメントを保存するバッファと、シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するバッファ制御部と、前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成する極小セグメント生成部と、前記バッファからセグメントを読み出してデコードする再生部と、を備え、前記バッファ制御部は、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保することを特徴とする。
【0022】
さらに、前記受信装置において、前記極小セグメント生成部は、黒画像をエンコードして前記極小セグメントを生成することを特徴とする。
【0023】
さらに、前記受信装置において、前記極小セグメント生成部は、予め記憶されたテンプレートセグメントを連結することにより前記極小セグメントを生成することを特徴とする。
【0024】
また、上記課題を解決するため、本発明に係るバッファ管理方法は、複数のセグメントから構成されるコンテンツをセグメント毎に受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、再生開始時刻及び再生継続時間の情報に対応付けてセグメントをバッファに保存するステップと、シーク再生命令を受信した時に、前記バッファにおいてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、シーク再生命令により指定された再生時刻である新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得するステップと、前記冗長セグメント範囲を含む範囲のセグメントであって、前記冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成するステップと、前記冗長セグメント範囲を前記極小セグメントで上書きすることにより、前記バッファの空き容量を確保するステップと、前記バッファからセグメントを読み出してデコードするステップと、を含むことを特徴とする。
【0025】
また、上記課題を解決するため、本発明に係るプログラムは、コンピュータを、上記受信装置として機能させることを特徴とする。
【発明の効果】
【0026】
本発明によれば、ストリーミング再生を行う際に、バッファから任意のセグメントを指定して消去する機能が無くても、安定したシーク動作が可能となる。
【図面の簡単な説明】
【0027】
図1】本発明の一実施形態に係る受信装置の構成例を示す図である。
図2】MPD(Media Presentation Description)の一例を示す図である。
図3】本発明の一実施形態に係る受信装置におけるテンプレートセグメントの一例を示す図である。
図4】本発明の一実施形態に係る受信装置のバッファ管理方法を示すフローチャートである。
図5】本発明の一実施形態に係る受信装置において、極小セグメントをバッファに上書き挿入する例を示す図である。
図6】従来のアダプティブストリーミングの一例を示す図である。
図7】従来のMSEのバッファモデルの一例を示す図である。
図8】従来のMSEのバッファモデルにおいて、セグメントをバッファに上書き挿入する例を示す図である。
図9】従来のMSEのバッファモデルにおいて、シーク動作時に再生を開始できない例を示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。以下に説明する本実施形態では一例として、マニフェストファイルをMPEG−DASH(ISO/IEC23009−1)のMPD(Media Presentation Description)形式とし、セグメントをISOBMFF(ISO/IEC14496−12)形式とする。
【0029】
図1は、本発明の一実施形態に係る受信装置の構成例を示す図である。受信装置1と配信サーバ2はインターネットを介して接続される。受信装置1は、配信サーバ2から複数のセグメントにより構成されるコンテンツをセグメント毎に受信し、ストリーミング再生を行う。
【0030】
配信サーバ2は、受信装置1によって指定されたURLのマニフェストファイルやセグメントを配信するサーバであり、例えば一般的なWebサーバとすることができる。
【0031】
図1の例では、受信装置1は、通信I/F10と、マニフェスト受信部11と、セグメントリクエスト部12と、バッファ13と、バッファ制御部14と、極小セグメント生成部15と、再生部16と、再生制御部17と、再生制御ユーザI/F18と、表示部19とを備える。
【0032】
マニフェスト受信部11は、配信サーバ2から通信I/F10を介して所望のコンテンツのマニフェストファイル(MPD)を受信し、マニフェストファイルをもとに再生時刻とセグメントのURLとを対応付けたセグメントURLリストを生成し、セグメントリクエスト部12に出力する。
【0033】
図2にMPDの一例を示す。MPDはPeriod,AdaptationSet,Representationの順に階層構造となっている。Periodは番組を時間方向に一つ又は複数に区切った一区画を示している。図2の例では開始時刻が0であり、時間が3分間であることを示している。Periodは一つ又は複数(図2の例では一つ)のAdaptationSetから構成される。AdaptationSetはメディアのコンポーネント(映像、音声、テキスト等)の情報を示しており、同じメディアでパラメータ(ビットレートや画面サイズ、音声のチャンネル数など)の異なる複数(図2の例では一つ)のコンポーネントを含むことができる。AdaptationSetに含まれるそれぞれのメディアのコンポーネントの情報はRepresentationで示される。Representationは一つ又は複数のセグメントで構成される。
【0034】
ある再生時刻におけるセグメントのURLは、MPDの情報から求めることができる。図6に示すMPDを例に説明する。2行目のstartの値から、Periodの開始時刻は0である。4行目のtimescaleの値から、AdaptationSetのタイムスケール(1秒間の目盛数)は、90000である。6行目のdurationの値から、セグメントの継続時間は、450000である。6行目のstartNumberの値から、セグメントの開始番号は1である。以上から、ある再生時刻t(秒)に対するセグメント番号Numberは以下の式(1)で算出できる。なお、少数以下を切り捨てとする。
Number = (t - start)× timescale/duration + startNumber (1)
【0035】
次に、6行目のmediaの値から、セグメントのURLのテンプレート“content_v_$Number$.mp4”を取得し、$Number$を先に算出したNumber値に差し替えることにより、セグメントのURLを取得することができる。
【0036】
再び図1に戻り、セグメントリクエスト部12は、バッファ制御部14から取得対象のセグメントの再生時刻情報を入力し、該入力した再生時刻情報に対応するセグメントのURLをセグメントURLリストから抽出し、該抽出したセグメントのURLを含むセグメントリクエストを配信サーバ2に要求し、該要求に対応するセグメントを受信する。
【0037】
バッファ13は、バッファ制御部14からセグメントを入力し、セグメントの再生開始時刻及び再生継続時間を対応付けてセグメントを保存し、現在の保存中の全セグメントの再生時刻及び再生継続時間の情報をバッファ制御部14に出力する。また、再生部16から要求された再生時刻のセグメントを順次再生部16に出力する。
【0038】
再生制御ユーザI/F18は、ユーザの操作によって再生を制御する機能である。再生開始・停止ボタンを用意するとともに、コンテンツの開始時刻及び終了時刻を表示し、さらに再生制御部17から入力する再生時刻情報をもとに、現在の再生位置をグラフィカルに表示してもよい。例えば、再生画面の下部にコンテンツの開始時刻を左端、終了時刻を右端とする横長の棒状で表示し、それと重なるようにつまみ状の操作部分を配置し、つまみ上の操作部分を再生が進むにつれて左端から右端に移動させることによって、ユーザは再生時間全体のうち今どの部分を再生しているのかを一目で把握することができる。
【0039】
また、このつまみをマウス等のユーザ操作によって動かすことにより、任意の再生位置を指定できるようにしてもよい。ユーザ操作によって、再生開始命令、停止命令、シーク再生命令、及び新規再生時刻情報を再生制御部17に出力する。
【0040】
再生制御部17は、現在の再生状態(再生中、停止中)及び再生部16から入力される再生時刻情報を再生制御ユーザI/F18に出力する。また、再生制御ユーザI/F18から再生開始命令、停止命令が入力されると、再生部16に再生開始・停止を指示する。また、再生制御ユーザI/F18からシーク再生(再生位置変更)命令が入力されると、変更後の再生時刻を示す情報である新規再生時刻情報をバッファ制御部14に出力し、バッファ制御部14からバッファ規定値を超えたことを示す通知が入力されると、再生部16に新規再生時刻情報を出力するとともに、再生開始を指示する。
【0041】
再生部16は、再生制御部17から再生開始命令及び新規再生時刻情報を入力したら、当該新規再生時刻情報が示す再生開始時刻のセグメントを順次バッファ13から読み出しし、該読み出したセグメントをセグメントのメディアの形式(映像、音声、テキスト等)に従ってデコードして表示部19に出力するとともに、再生とともに更新される再生時刻の情報である再生時刻情報を再生制御部17に出力する。再生制御部17から停止命令を入力した場合は、再生を停止する。
【0042】
表示部19は、再生部16から入力されたデコード済みのメディアデータをそのメディアの形式に従って表示する。
【0043】
バッファ制御部14は、再生制御部17から新規再生時刻情報が入力されると、バッファ13においてセグメントが挿入されている範囲を示すバッファ済みセグメント範囲のうち、新規再生時刻を含まない範囲である冗長セグメント範囲の情報を取得する。冗長セグメント範囲の情報とは、冗長セグメント範囲の開始時刻を示す上書き開始時刻、及び冗長セグメント範囲の継続時間を示す上書き継続時間である。
【0044】
極小セグメント生成部15は、冗長セグメント範囲を含む範囲のセグメントであって、冗長セグメント範囲に保存されたデータよりもサイズの小さいダミーデータをエンコードしたセグメントである極小セグメントを生成し、バッファ制御部14に出力する。つまり、バッファ制御部14から上書き開始時刻情報及び上書き継続時間情報を入力すると、該入力した上書き開始時刻情報(又はそれよりも少し前)から始まり、上書き継続時間情報よりも長い極小セグメントを生成する。ダミーデータはサイズの小さいデータであれば特に限定されるものではないが、例えば黒画像とすることができる。
【0045】
極小セグメント生成部15は、極小セグメントを予め記憶されたテンプレートセグメントを連結することにより生成してもよい。ここでテンプレートセグメントとは、データサイズが小さいダミーのメディアデータをエンコードして予めセグメント化したものである。テンプレートセグメントは、受信装置1に記憶しておくこともできるし、コンテンツ再生開始時に、例えば配信サーバ2から取得するようにしてもよい。極小セグメントは、上書き開始時刻情報及び上書き継続時間情報をもとにテンプレートセグメントのパラメータを差し替えたデータとすることで生成される。
【0046】
ここで、図3を参照して、テンプレートセグメントの一例を説明する。図3は、テンプレートセグメントを、ISOBMFF(ISO/IEC14496−12)形式とした場合の一例である。なお、一つのセグメントにMovie Fragmentを複数含むことも可能であるが、本例では一つとする。
【0047】
本発明に関連する一部のパラメータについて説明する。sidxに含まれるtimescaleはタイムスケールを表している。earliest_presentation_timeは、このセグメントの最初のMovie Fragmentの最初の動画データの再生時刻を示している。subsegment_durationは、このMovie Fragment毎の再生継続時間を示している。また、Movie Fragment内の、moof/traf/tfdtに含まれるbaseMediaDecodeTimeは、当該Movie Fragmentのデコード時刻を示している。例えば、timescale=90000とした場合、再生開始時刻10、再生継続時間5秒のセグメントのearliest_presentation_time=baseMediaDecodeTime=timescale×10=900000となる。また、subsegment_duration=timescale×5=450000となる。
【0048】
つまり、上書き開始時刻15、上書き継続時間5秒の極小セグメントを生成するには、earliest_presentation_timeを1350000に修正すればよい。なお、再生継続時間を修正しようとすると、mdat内部の情報まで修正範囲が及ぶことから処理負荷が大きくなる。そのため、テンプレートセグメントを再生継続時間が上書き継続時間を上回るまで複数連結することで、再生継続時間を修正せずに、所望の極小セグメントを生成することができる。例えば、再生継続時間がそれぞれ1秒,2秒,5秒のテンプレートセグメントを用意しておき、上書き継続時間の長さに応じて適宜組み合わせることもできる。
【0049】
(バッファ管理方法)
次に、本発明における受信装置1のシーク動作時のバッファ管理方法について説明する。
【0050】
図4は、本発明の一実施形態に係るバッファ管理方法を示すフローチャートである。本フローチャートは、既にマニフェストファイルを取得しており、セグメントURLリストも作成済みの状態から開始するものとする。また、ネットワークの混雑状況に応じて受信帯域が常に変動することを見越して、再生開始時刻を起点として、予め設定したバッファ規定値(例えば5秒)以上のセグメントがバッファ13に挿入されてから再生を開始するものとする。
【0051】
また、バッファ13は、コンテンツの開始時刻から終了時刻までの範囲を持っており、セグメントを再生開始時刻と再生継続時刻の情報と対応つけて保存しているものとする。また、バッファ13にコンテンツのセグメントが挿入されている範囲をバッファ済みセグメント範囲と称する。
【0052】
まず、再生制御ユーザI/F18からシーク操作が実行され、シーク再生命令を受信したら(ステップS001)、再生制御部17は、シーク再生命令から新規再生時刻情報を抽出しバッファ制御部14に出力する(ステップS002)。
【0053】
次に、バッファ制御部14は、バッファ13内に新規再生時刻から予め設定したバッファ規定値以上の範囲のセグメントが存在するか否かを確認する(ステップS003)。ステップS003がYESの場合はバッファ13に保存されたデータをそのまま再生可能であるため、再生制御部17において再生を開始する(ステップS013)。一方、ステップS003がNOの場合は、データを取得する必要があるため、バッファ13に1セグメント分の空き容量が存在するか否かを確認する(ステップS004)。
【0054】
バッファ13に1セグメント分の空き容量が存在しない場合は(ステップS004−NO)、バッファ13内に新規再生時刻を含まないバッファ済みセグメント範囲である冗長セグメント範囲が存在するか否かを確認する(ステップS005)。バッファ13内に冗長セグメント範囲が存在する場合は(ステップS005−YES)、冗長セグメント範囲を抽出し、冗長セグメント範囲の最小値を上書き開始時刻、冗長セグメント範囲の長さを上書き継続時間として極小セグメント生成部15に出力し、極小セグメント生成部15は該入力した上書き開始時刻及び上書き継続時間をもとに極小セグメントを生成し、バッファ制御部14に出力する(ステップS006)。バッファ制御部14は入力された極小セグメントをバッファ13に挿入して冗長セグメント範囲を上書きし(ステップS007)、ステップS004に戻る。
【0055】
図5は、極小セグメントをバッファ13に上書き挿入する例を示す図である。図5に示すように、例えばバッファ13に開始時刻15から開始時刻30までの15秒間のセグメントが保存されており、新規再生時刻が5であった場合、バッファ13に保存されたセグメントは無駄(冗長)なセグメントと考えることができる。よって、この場合は開始時刻15から30を冗長セグメント範囲とし、この冗長セグメント範囲に、生成した極小セグメントを上書きする。この図では極小セグメントのデータ容量が小さいことを示すために、極小セグメントの面積を擬似的に小さく表示している。このようにしてデータ量の小さい極小セグメントを上書きすることにより、空き容量を確保することができる。
【0056】
次に、ステップS005に戻り、バッファ13内に冗長セグメント範囲が存在しない場合は(ステップS005−NO)、バッファ13から再生済みセグメントが消去されるまで待機し(ステップS008)、ステップS004に戻る。
【0057】
ステップS004に戻り、バッファ13に1セグメント分の空き容量が存在する場合は(ステップS004−YES)、セグメントリクエスト部12は以下の動作を行う。バッファ13内に新規再生時刻を含むセグメントが存在しない場合には、新規再生時刻を含むセグメントのURLが、セグメントURLリストに存在するか否かを確認する(ステップS009)。また、バッファ13内に新規再生時刻を含むセグメントが存在する場合には、新規再生時刻を含むバッファ済みセグメント範囲の最大値を含むセグメントに続くセグメント(すなわち、新規再生時刻を含むバッファ済みセグメントに続くセグメント)のURLが、セグメントURLリストに存在するか否かを確認する(ステップS009)。該セグメントのURLがセグメントURLリストに存在する場合は(ステップS009−YES)、セグメントURLリストから当該セグメントのURLを抽出する。セグメントリクエスト部12は、該抽出したセグメントのURLを含むセグメント要求を配信サーバ2に送信し、該要求に対応するセグメントを受信しバッファ制御部14に出力する(ステップS010)。バッファ制御部14は該受信したセグメントをバッファ13に挿入する(ステップS011)。
【0058】
ステップS009がNOの場合は、何もせずにステップS012に移行する。ステップS012では再生制御部17において現在再生中か否かを確認し、再生が開始されていない場合は(ステップS012−NO)、ステップS003に戻る。一方、再生が開始されている場合は(ステップS012−YES)、バッファ13の最後に到達したか、再生制御ユーザI/F18において停止ボタンが押されたか否かを確認し、いずれも満たさない場合は(ステップS014−NO)、ステップS004に戻る。いずれかを満たした場合は(ステップS014−YES)、再生を停止し、処理を終了する。
【0059】
以上により、バッファ13内にセグメントを挿入するのに必要な空き容量が不足している場合にも、新規再生時刻を含まないバッファ済みセグメント範囲である冗長セグメント範囲を極小セグメントで上書きすることにより、迅速に空き容量を確保することが可能となり、シーク操作後の再生開始までの時間を短縮して安定した再生が可能となる。
【0060】
一例をあげると、8Mbpsで再生継続時間が5秒のセグメントが5MBであるのに対し、黒画像をエンコードした5秒の極小セグメントが約7KBであることから、冗長セグメント範囲を極小セグメントで上書きすることにより、5MB(4.993MB)近くの空き容量を確保することが可能となる。
【0061】
上述したように、受信装置1は、シーク再生命令を受信した時に、冗長セグメント範囲を極小セグメントで上書きすることにより、バッファ13の空き容量を確保することができる。かくして、受信装置1は、バッファ13から任意のセグメントを指定して消去する機能が無くても、安定してシーク動作を行うことが可能となる。
【0062】
なお、上述した受信装置1として機能させるためにコンピュータを好適に用いることができ、そのようなコンピュータは、受信装置1の各機能を実現する処理内容を記述したプログラムを該コンピュータの記憶部に格納しておき、該コンピュータのCPUによってこのプログラムを読み出して実行させることで実現することができる。なお、このプログラムは、コンピュータ読取り可能な記録媒体に記録可能である。
【0063】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態に記載の複数の構成ブロックやステップを1つに組み合わせたり、あるいは1つの構成ブロックやステップを分割したりすることが可能である。
【符号の説明】
【0064】
1 受信装置
2 配信サーバ
10 通信I/F
11 マニフェスト受信部
12 セグメントリクエスト部
13 バッファ
14 バッファ制御部
15 極小セグメント生成部
16 再生部
17 再生制御部
18 再生制御ユーザI/F
19 表示部
図1
図2
図3
図4
図5
図6
図7
図8
図9