(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6581884
(24)【登録日】2019年9月6日
(45)【発行日】2019年9月25日
(54)【発明の名称】受信装置、バッファ管理方法、及びプログラム
(51)【国際特許分類】
H04N 21/462 20110101AFI20190912BHJP
H04N 21/438 20110101ALI20190912BHJP
H04N 21/44 20110101ALI20190912BHJP
G06F 13/00 20060101ALI20190912BHJP
【FI】
H04N21/462
H04N21/438
H04N21/44
G06F13/00 550P
【請求項の数】6
【全頁数】14
(21)【出願番号】特願2015-227891(P2015-227891)
(22)【出願日】2015年11月20日
(65)【公開番号】特開2017-98704(P2017-98704A)
(43)【公開日】2017年6月1日
【審査請求日】2018年10月1日
【権利譲渡・実施許諾】特許権者において、実施許諾の用意がある。
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100161148
【弁理士】
【氏名又は名称】福尾 誠
(72)【発明者】
【氏名】西村 敏
(72)【発明者】
【氏名】松村 欣司
(72)【発明者】
【氏名】藤沢 寛
(72)【発明者】
【氏名】山本 正男
(72)【発明者】
【氏名】遠藤 洋介
【審査官】
古川 哲也
(56)【参考文献】
【文献】
米国特許出願公開第2010/0269133(US,A1)
【文献】
特表2011−517229(JP,A)
【文献】
特開2010−154006(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 − 21/858
G06F 13/00
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
複数のセグメントから構成されるコンテンツが時系列に連結されて構成される番組を、セグメントごとに受信してストリーミング再生を行う受信装置であって、
セグメントを取得するセグメント取得部と、
前記セグメントを、セグメント開始時刻及び再生継続時間を対応付けて保存するバッファと、
前記バッファに保存されたコンテンツを構成する全セグメントの時間尺が、前記コンテンツの尺を示すメタ情報から得られるコンテンツ尺よりも短い場合に、再生継続時間が前記コンテンツ尺及び前記全セグメントの時間尺の差分以上のフィラーセグメントを生成するフィラーセグメント生成部と、
前記フィラーセグメントを前記コンテンツの最後のセグメントに続けて前記バッファに挿入するバッファ制御部と、
を備えることを特徴とする受信装置。
【請求項2】
前記フィラーセグメント生成部は、前記バッファに挿入されたセグメントのメディア形式が映像の場合には、前記フィラーセグメントを白画像又は黒画像をエンコードしたセグメントとすることを特徴とする、請求項1に記載の受信装置。
【請求項3】
前記フィラーセグメント生成部は、前記バッファに挿入されたセグメントのメディア形式が音声の場合には、前記フィラーセグメントを、無音をエンコードしたセグメントとすることを特徴とする、請求項1に記載の受信装置。
【請求項4】
前記フィラーセグメント生成部は、予め用意されたテンプレートセグメントを連結することにより前記フィラーセグメントを生成することを特徴とする、請求項1から3のいずれか一項に記載の受信装置。
【請求項5】
複数のセグメントから構成されるコンテンツが時系列に連結されて構成される番組をセグメントごとに受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、
セグメントを取得するステップと、
前記セグメントを、セグメント開始時刻及び再生継続時間を対応付けてバッファに保存するステップと、
前記バッファに保存されたコンテンツを構成する全セグメントの時間尺が、前記コンテンツの尺を示すメタ情報であるコンテンツ尺よりも短い場合に、再生継続時間が前記コンテンツ尺及び前記全セグメントの時間尺の差分以上のフィラーセグメントを生成するステップと、
前記フィラーセグメントを前記コンテンツの最後のセグメントに続けて前記バッファに挿入するステップと、
を含むことを特徴とするバッファ管理方法。
【請求項6】
コンピュータを、請求項1から4のいずれか一項に記載の受信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のセグメントから構成されるコンテンツをセグメントごとに受信してストリーミング再生を行う受信装置、該受信装置のバッファ管理方法、及び該受信装置として機能させるためのプログラムに関する。
【背景技術】
【0002】
昨今のインターネットにおけるストリーミング動画配信では、専用のサーバと専用のプロトコルによるストリーミング配信方式から、汎用的なWebサーバによりHTTPプロトコルを用いてストリーミング配信する方式への移行が進んでおり、多くのデバイス向けの配信において主流となっている。このようなHTTPプロトコルによるストリーミング配信方式(アダプティブストリーミング)としては、ITベンダによる独自技術が普及している他、これらストリーミング方式の統一を意図した国際標準規格であるMPEG−DASH(ISO/IEC23009−1)が策定された。
【0003】
いずれの技術も基本的なコンセプトは同様であり、Webサーバには動画コンテンツを一つ又は複数の品質(画面サイズやビットレート)でエンコードしたストリームをそれぞれ数秒から数十秒程度のファイルに分割したもの(セグメント)と、それらの動画コンテンツの属性やURLを記述したマニフェストファイルを用意する。受信装置はマニフェストファイルから当該受信装置の画面サイズや伝送路のネットワーク帯域の状態等を考慮して、適時品質を選択して次々とセグメントを受信し、1本の動画コンテンツにつなぎ合わせて再生するものである(例えば、非特許文献1参照)。
【0004】
図5にアダプティブストリーミングの一例を示す。
図5では、映像が複数品質でエンコードされ、それぞれの品質ごとに数秒単位に分割されたセグメントが生成されている。この例では、エンコーダは映像を低品質のセグメント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】
ここで、
図6を参照してMSEのバッファモデルについて説明する。
図6はMSEのバッファモデルの一例を示す図である。バッファ(SourceBuffer)は、セグメント開始時刻と再生継続時間に対応付けてセグメントを管理する。
図6では、斜線の入ったブロックがセグメントを示しており、セグメント単位の再生開始時刻であるセグメント開始時刻が0秒かつ再生継続時間が5秒、セグメント開始時刻が5秒かつ再生継続時間が5秒、及びセグメント開始時刻が15秒かつ再生継続時間が5秒の3つのセグメントがバッファに挿入されている。この時、バッファのバッファリング範囲(buffered属性)は0〜10秒、15〜20秒となる。
【0010】
また、
図7に示すように、既にセグメントが挿入されている範囲に再生時刻が重なる別のセグメントを挿入して上書きすることも可能である。
図7では、
図6に示した例に、新しいセグメントとして、セグメント開始時刻が12秒かつ再生継続時間が10秒のセグメントを挿入した例を示している。その結果、12秒から22秒の範囲が新しいセグメントに差し替わるとともに、バッファリング範囲も0〜10秒、12〜22秒に更新されている。
【0011】
動画のストリーミングサービスの提供方法として、一つの番組の途中にCM等の動画クリップを挿入することや、放送のように編成に従って番組を次々と提供すること等、時系列に連結されたコンテンツを切り替えながら視聴するサービス形態が考えられる。MPEG−DASHにおいては、このようなサービスを可能とするマニフェストファイルの記述方法が定義されている。
【0012】
図8にMPEG−DASHのMPD(Media Presentation Description)形式のマニフェストファイルの概念図を示す。MPD形式ではPeriod,AdaptationSet,Representationの順に階層構造となっている。Periodはマニフェストファイルを時間方向に区切った一区画(一つのコンテンツ)を示しており、
図8の例では、それぞれのコンテンツ尺(duration)が300秒、30秒、300秒のPeriodが連結されていることを示している。Periodは一つ又は複数のAdaptationSetから構成される。
【0013】
AdaptationSetはメディアのコンポーネント(映像、音声、テキスト等)の情報を示しており、同じメディアでパラメータ(ビットレートや画面サイズ、音声のチャンネル数等)の異なる複数のコンポーネントを含むことができる。AdaptationSetに含まれるそれぞれのメディアのコンポーネントの情報はRepresentationで示される。Representationは一つ又は複数のセグメントで構成される。
【0014】
このようなマニフェストファイルとすることで、再生時刻に従って、時系列に連結されたコンテンツを形成するセグメント(
図8のInitialization Segment,Media Segment)を順次受信することが可能となる。
【0015】
また、ストリーミング再生におけるコンテンツの切り替えに関しては、バッファ量が不足した場合に、再生コンテンツの区切りが良い時点において、再生するコンテンツを切り替えることができる情報処理装置、及び情報処理方法が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2011−77597号公報
【非特許文献】
【0017】
【非特許文献1】“次世代動画配信技術「MPEG−DASH」技術概要と標準化・関連技術動向”,映像情報メディア学会誌,Vol.67, No.2, 2013, p.109-115
【非特許文献2】W3C、“Media Source Extensions W3C Candidate Recommendation 17 July 2014”、[2015年11月6日検索]、インターネット<URL:http://www.w3.org/TR/media-source/>
【発明の概要】
【発明が解決しようとする課題】
【0018】
しかしながら、上述した時系列に連結されたコンテンツを再生しようとすると、コンテンツが異なるエンコーダにより生成されていた場合等に、Periodのdurationの値よりもコンテンツを構成する全セグメントの時間尺がわずかに短くなることがある。すると、コンテンツの切り替え時(Periodの変わり目)にバッファ内に時間的な隙間が生じてしまう。
【0019】
図9にバッファ内に時間的な隙間が生じる例を示す。
図9では切り替え前のPeriodをPeriod#1、切り替え後のPeriodをPeriod#2としており、Period#1のdurationパラメータが300秒、Period#1の全セグメントの合計の時間尺が299.9秒の例を示している。この場合、Period#1とPeriod#2の連結部分においてバッファに0.1秒の隙間が生じてしまう。このような場合に、Periodの変わり目で再生が停止してしまうおそれがあった。
【0020】
また、特許文献1には、ストリーミング再生におけるコンテンツの切り替えに関して、バッファ量が不足した場合に、再生コンテンツの区切りが良い時点において、再生するコンテンツを切り替えることが記載されているが、上記課題のようなバッファの細部の状況については触れておらず、課題の解決に必ずしも利用できる手法ではなかった。
【0021】
かかる事情に鑑みてなされた本発明の目的は、時系列に連結されたコンテンツから構成される番組をストリーミング再生する際に、コンテンツの切り替えをスムーズに行うことができる受信装置、バッファ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0022】
上記課題を解決するため、本発明に係る受信装置は、複数のセグメントから構成されるコンテンツが時系列に連結されて構成される番組を、セグメントごとに受信してストリーミング再生を行う受信装置であって、セグメントを取得するセグメント取得部と、前記セグメントを、セグメント開始時刻及び再生継続時間を対応付けて保存するバッファと、前記バッファに保存されたコンテンツを構成する全セグメントの時間尺が、前記コンテンツの尺を示すメタ情報から得られるコンテンツ尺よりも短い場合に、再生継続時間が前記コンテンツ尺及び前記全セグメントの時間尺の差分以上のフィラーセグメントを生成するフィラーセグメント生成部と、前記フィラーセグメントを前記コンテンツの最後のセグメントに続けて前記バッファに挿入するバッファ制御部と、を備えることを特徴とする。
【0023】
さらに、本発明に係る受信装置は、前記フィラーセグメント生成部は、前記バッファに挿入されたセグメントのメディア形式が映像の場合には、前記フィラーセグメントを白画像又は黒画像をエンコードしたセグメントとすることを特徴とする。
【0024】
さらに、本発明に係る受信装置は、前記フィラーセグメント生成部は、前記バッファに挿入されたセグメントのメディア形式が音声の場合には、前記フィラーセグメントを、無音をエンコードしたセグメントとすることを特徴とする。
【0025】
さらに、本発明に係る受信装置は、前記フィラーセグメント生成部は、予め用意されたテンプレートセグメントを連結することにより前記フィラーセグメントを生成することを特徴とする。
【0026】
また、上記課題を解決するため、本発明に係るバッファ管理方法は、複数のセグメントから構成されるコンテンツが時系列に連結されて構成される番組をセグメントごとに受信してストリーミング再生を行う受信装置におけるバッファ管理方法であって、セグメントを取得するステップと、前記セグメントを、セグメント開始時刻及び再生継続時間を対応付けて
バッファに保存するステップと、前記バッファに保存されたコンテンツを構成する全セグメントの時間尺が、前記コンテンツの尺を示すメタ情報であるコンテンツ尺よりも短い場合に、再生継続時間が前記コンテンツ尺及び前記全セグメントの時間尺の差分以上のフィラーセグメントを生成するステップと、前記フィラーセグメントを前記コンテンツの最後のセグメントに続けて前記バッファに挿入するステップと、を含むことを特徴とする。
【0027】
また、上記課題を解決するため、本発明に係るプログラムは、コンピュータを、上記受信装置として機能させることを特徴とする。
【発明の効果】
【0028】
本発明によれば、セグメント開始時刻と再生継続時間の情報に対応つけてセグメントを管理するバッファを用いて時系列に連結されたコンテンツから構成される番組のストリーミング再生を行う受信装置において、マニフェストにおいて設定された個々のコンテンツのコンテンツ尺よりも、コンテンツを構成する全セグメントの時間尺の方が短い場合でも、コンテンツ切り替えがスムーズに行えることにより安定した視聴が可能となる。
【図面の簡単な説明】
【0029】
【
図1】本発明の一実施形態に係る受信装置の構成例を示すブロック図である。
【
図2】本発明の一実施形態に係る受信装置が取得するマニフェストファイルの一例を示す図である。
【
図3】本発明の一実施形態に係る受信装置が生成するフィラーセグメントの一例を示す図である。
【
図4】本発明の一実施形態に係る受信装置のバッファ管理方法を示すフローチャートである。
【
図5】従来のアダプティブストリーミングの一例を示す図である。
【
図6】従来のMSEのバッファモデルの一例を示す図である。
【
図7】従来のMSEのバッファモデルにおいて、セグメントをバッファに上書き挿入する例を示す図である。
【
図8】従来のマニフェストファイルの概念を示す図である。
【発明を実施するための形態】
【0030】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。以下に説明する本実施形態では一例として、マニフェストファイルをMPEG−DASH(ISO/IEC23009−1)のMPD(Media Presentation Description)形式とし、セグメントをISOBMFF(ISO/IEC14496−12)形式とする。また、再生時刻のうち、セグメントの先頭に該当する時刻を「セグメント開始時刻」と称する。
【0031】
図2にマニフェストファイルの一例(抜粋)を示す。
図2の例ではコンテンツ尺(duration)が3分のPeriodが二つ連結されており、それぞれのPeriodには、AdaptationSetが一つずつ存在し、さらにそれぞれのAdaptationSetにはRepresentationが一つずつ存在している。
【0032】
ある再生時刻におけるセグメントのURLは、マニフェストファイルの情報から求めることができる。
図2の例をもとに説明する。2行目のstartの値から、Periodの開始時刻は0である。4行目のtimescaleの値から、AdaptationSetのタイムスケール(1秒間の目盛数)は、90000である。6行目のdurationの値から、セグメントの継続時間は、450000である。6行目のstartNumberの値から、セグメントの開始番号は1である。以上から、ある再生時刻t(秒)に対するセグメント番号は以下の式(1)で算出できる。なお、少数以下は切り捨てる。
Number=(t-start)×timescale/duration+startNumber (1)
【0033】
次に、6行目のmediaの値から、セグメントのURLのテンプレート“content_v_$Number$.mp4”を取得し、$Number$を先に算出したNumber値に差し替えることにより、セグメントのURLを取得することができる。
【0034】
なお、上記例は
図2の一つ目のPeriodを元に説明したが、二つ目のPeriodについても同様に算出できる。また、本実施形態ではMPDファイル全体により再生される情報を「番組」と称し、個々のPeriodにより再生される情報を「コンテンツ」と称する。すなわち、番組はコンテンツが時系列に連結されて構成されたものである。
【0035】
(受信装置の構成)
次に、本発明の一実施形態に係る受信装置の構成例について、
図1を参照して説明する。
【0036】
受信装置1は、インターネットを介して配信サーバ2と接続され、配信サーバ2から複数のセグメントにより構成されるコンテンツをセグメントごとに受信し、ストリーミング再生を行う。
【0037】
配信サーバ2は、受信装置1によって指定されたURLのマニフェストファイルやセグメントを配信するサーバであり、例えば一般的なWebサーバとすることができる。
【0038】
図1に示す受信装置1は、通信I/F10と、マニフェスト取得部11と、セグメント取得部12と、フィラーセグメント生成部13と、バッファ14と、バッファ制御部15と、再生制御部16と、再生制御ユーザI/F17と、再生部18と、表示部19とを備える。
【0039】
再生制御ユーザI/F17は、ユーザの操作によって、再生命令及び停止命令を再生制御部16に出力する。再生命令には再生開始時刻を示す再生開始時刻情報が含まれる。
【0040】
再生制御ユーザI/F17は、再生開始・停止ボタンを用意するとともに、コンテンツの開始、終了時刻、及び再生制御部16から入力された現在再生時刻情報をもとに、現在の再生時刻(再生位置)をグラフィカルに表示してもよい。例えば、再生画面の下部にコンテンツの開始時刻を左端、終了時刻を右端とする横長の棒状で表示し、それと重なるようにつまみ状の操作部分を配置し、つまみ上の操作部分を再生が進むにつれて左端から右端に移動させることによって、ユーザは再生時間全体のうち今どの部分を再生しているのかを一目で把握することができる。また、このつまみをマウス等のユーザ操作によって動かすことにより、任意の再生時刻を指定できるようにしてもよい。
【0041】
再生制御部16は、再生制御ユーザI/F17から停止命令を入力すると、再生部18に停止を指示する。
【0042】
また、再生制御部16は、再生制御ユーザI/F17から再生命令を入力すると、再生命令から再生開始時刻を抽出し、再生開始時刻情報をバッファ制御部15に出力する。そして、再生制御部16は、バッファ制御部15からバッファ規定値(例えば5秒)を超えたことを示す通知を入力したら、再生部18に再生開始時刻情報を出力するとともに、再生開始を指示する。
【0043】
また、再生制御部16は、現在の再生状態(再生中、停止中)、及び再生部18から入力された現在再生時刻情報を再生制御ユーザI/F17に出力する。
【0044】
マニフェスト取得部11は、アプリケーション起動時又は番組選択時に、配信サーバ2から所望の番組のマニフェストファイル(MPDファイル)を通信I/F10を介して取得する。そして、マニフェストファイルをもとにセグメント開始時刻及びセグメントのURLを対応付けたセグメントURLリストを生成し、セグメント取得部12及びバッファ制御部15に出力する。
【0045】
バッファ制御部15は、再生制御部16から入力された再生開始時刻情報、及びバッファ14から入力されたバッファリング範囲(バッファ済みセグメント範囲)情報に基づき、取得対象のセグメントのセグメント開始時刻を決定する。そして、マニフェスト取得部11から入力されたセグメントURLリストから、セグメント開始時刻に対応付けられたセグメントのURLを抽出し、セグメント取得部12に出力する。また、バッファ制御部15は、セグメント取得部12からセグメントが入力されると、該セグメントをバッファ14に挿入する。
【0046】
セグメント取得部12は、バッファ制御部15から入力された取得対象のセグメントのURLに基づいて対応するセグメントを取得し、バッファ制御部15に出力する。具体的には、セグメントのURLを含むセグメント要求(リクエスト)を生成して通信I/F10を介して配信サーバ2に送信し、配信サーバ2から通信I/F10を介して該要求に対するレスポンスとして対応するセグメントを取得する。なお、セグメント取得部12は、バッファ制御部15からセグメント開始時刻を入力し、セグメント取得部12がセグメントURLリストからセグメント開始時刻に対応付けられたセグメントのURLを抽出するようにしてもよい。
【0047】
バッファ14は、バッファ制御部15からセグメントを入力し、該セグメントを、セグメント開始時刻及び再生継続時間を対応付けて保存する。
【0048】
また、バッファ14は、バッファリング範囲情報をバッファ制御部15に出力する。ここで、バッファリング範囲情報とは、バッファ14にコンテンツのセグメントが挿入されている範囲を示す情報のことであり、例えば現在の保存中の全セグメントのセグメント開始時刻及び再生継続時間の情報とする。
【0049】
また、バッファ14は、再生部18から要求されたセグメントを、順次再生部18に出力する。
【0050】
再生部18は、再生制御部16から停止命令を入力した場合には、再生を停止する。
【0051】
また、再生部18は、再生制御部16から再生開始時刻情報を含む再生命令を入力すると、再生開始時刻に基づいてセグメントを順次バッファ14から入力し、該入力したセグメントをセグメントのメディアの形式(映像、音声、テキスト等)に従ってデコードし、表示部19に出力する。再生部18は、再生とともに更新される再生時刻の情報である現在再生時刻情報を再生制御部16に出力する。
【0052】
表示部19は、再生部18から入力されたデコード済みのメディアデータをそのメディアの形式に従って表示する。
【0053】
以下に、フィラーセグメントの生成について説明する。
【0054】
バッファ制御部15は、バッファ14に挿入したセグメントが現在再生中のピリオド(Period)の最後のセグメントであった場合には、全セグメントの時間尺(バッファリング範囲の最大値)と、ピリオドの終了時刻を比較する。ここで、ピリオドの終了時刻は、ピリオドの開始時刻(start)にコンテンツ尺を加算した時刻である。コンテンツ尺は、コンテンツの尺を示すメタ情報(duration)から得られる。ピリオドの開始時刻を0とすると、ピリオドの終了時刻とコンテンツ尺は同一である。
【0055】
バッファ制御部15は、バッファ14に保存されたコンテンツを構成するバッファリング範囲の最大値がピリオドの終了時刻より小さい場合、すなわち全セグメントの時間尺がコンテンツ尺よりも短い場合には、バッファリング範囲の最大値を挿入開始時刻、ピリオド終了時刻とバッファリング範囲の最大値との差分を隙間時間と決定し、挿入開始時刻及び隙間時間を示すフィラー情報をフィラーセグメント生成部13に出力する。また、バッファ制御部15は、フィラーセグメント生成部13からフィラーセグメントが入力されると、該フィラーセグメントをコンテンツの最後のセグメントに続けてバッファ14に挿入する。
【0056】
フィラーセグメント生成部13は、バッファ制御部15からフィラー情報を入力すると、挿入開始時刻から始まり再生継続時間が隙間時間以上のフィラーセグメントを生成し、バッファ制御部15に出力する。ここで、フィラーセグメントは、例えば、セグメントのメディア形式が映像の場合には白画像又は黒画像をエンコードしたデータとする。セグメントのメディア形式が音声の場合には無音をエンコードしたデータとする。フィラーセグメントの再生継続時間が隙間時間以上であれば、次のピリオドのセグメントをフィラーセグメントに上書きすることで、ピリオドの変わり目における隙間をなくし、ピリオドの変わり目で再生が停止することを防止することができる。
【0057】
また、フィラーセグメント生成部13は、データサイズが小さいメディアデータを予めセグメント化してテンプレートとして用意しておき、フィラー情報をもとに、テンプレートのパラメータを差し替えたデータとすることができる。フィラーセグメントのテンプレートは、受信装置1に記憶しておくこともできるし、コンテンツ再生開始時に、例えば配信サーバ2から取得するようにしてもよい。
【0058】
図3を参照して、フィラーセグメントの一例を説明する。
図3は、フィラーセグメントを、ISOBMFF(ISO/IEC14496−12)形式とした場合の一例である。なお、一つのセグメントにMovie Fragmentを複数含むことも可能であるが、本例では一つとする。
【0059】
本発明に関連する一部のパラメータについて説明する。sidxに含まれるtimescaleはタイムスケールを表している。earliest_presentation_timeは、このセグメントの最初のMovie Fragmentの最初のメディアデータの再生時刻を示している。subsegment_durationは、このMovie Fragmentごとの再生継続時間を示している。また、Movie Fragment内の、moof/traf/tfdtに含まれるbaseMediaDecodeTimeは、当該Movie Fragmentの再生継続時間を示している。例えば、timescale=90000とした場合、再生開始時刻t、再生継続時間d秒のセグメントは、
earliest_presentation_time=90000×t
subsegment_duration = baseMediaDecodeTime=90000×d
となる。
【0060】
つまり、挿入開始時刻15秒、再生継続時間0.5秒のフィラーセグメントを生成するには、earliest_presentation_timeを1350000に、baseMediaDecodeTimeを45000に修正すればよい。なお、再生継続時間を修正しようとすると、mdat内部の情報まで修正範囲が及ぶことから処理負荷が大きくなる。そのため、テンプレートセグメントを予め用意しておき、テンプレートセグメントを再生継続時間が隙間時間を上回るまで複数連結することで、再生継続時間を修正せずに、所望のフィラーセグメントを生成することができる。
【0061】
(再生開始時のバッファ管理方法)
次に、受信装置1の再生開始時のバッファ管理方法について、
図4に示すフローチャートを参照して説明する。
【0062】
図4に示すフローチャートは、既にマニフェストファイルを取得しており、セグメントURLリストも作成済みの状態から開始するものとする。また、受信装置1は、ネットワークの混雑状況に応じて受信帯域が常に変動することを見越して、再生開始時刻を起点として予め設定したバッファ規定値(例えば5秒)以上のセグメントがバッファ14に挿入されてから再生を開始するものとする。
【0063】
まず、再生制御ユーザI/F17において再生開始操作が実行されると(ステップS001)、再生制御部16は、新規に再生を開始する場合には番組の冒頭の再生開始時刻(0秒)を、一時停止等の操作の後に再生を再開した場合には一時停止操作がなされた時点の再生開始時刻を再生開始時刻情報として抽出し、バッファ制御部15に出力する(ステップS002)。
【0064】
次に、バッファ制御部15は、バッファ14内に再生開始時刻情報から予め設定したバッファ規定値以上の範囲のセグメントが存在するか否かを確認する(ステップS003)。該セグメントが存在しない場合には(ステップS003−NO)、ステップS004に進み、該セグメントが存在する場合には(ステップS003−YES)、再生を開始し(ステップS012)、その後ステップS004に進む。
【0065】
ステップS004では、バッファ制御部15は再生時刻を含むバッファリング範囲の最後のセグメントに続くセグメントのURLが、セグメントURLリストに存在するか否かを確認する。該セグメントのURLが存在する場合には(ステップS004−YES)、バッファ制御部15はセグメントURLリストから該セグメントのURLを抽出し、セグメント取得部12に出力する(ステップS005)。続いて、セグメント取得部12は、抽出されたセグメントのURLを含むセグメント要求を配信サーバ2に送信し、該要求に対応するセグメントを受信し、バッファ制御部15に出力する(ステップS005)。バッファ制御部15は、ステップS005にて受信したセグメントをバッファ14に挿入する(ステップS006)。
【0066】
次に、バッファ制御部15はバッファ14に挿入したセグメントが現在再生中のピリオド(Period)の最後のセグメントであるか否かを確認する(ステップS007)。ピリオドの最後のセグメントである場合には(ステップS007−YES)、バッファリング範囲の最大値と、ピリオドの終了時刻とを比較する(ステップS008)。
【0067】
バッファリング範囲の最大値がピリオドの終了時刻より小さい場合には(ステップS008−YES)、フィラーセグメント生成部13は、バッファリング範囲の最大値を挿入開始時刻、ピリオド終了時刻とバッファリング範囲の最大値との差分以上を再生継続時間としてフィラーセグメントを生成してバッファ制御部15に出力し、バッファ制御部15は該フィラーセグメントをバッファ14に挿入する(ステップS009)。
【0068】
ステップS004,S007,S008においてNOであった場合には、現在再生中か否かを確認する(ステップS010)。再生中でない場合には(ステップS010−NO)、ステップS003に戻る。再生中である場合には(ステップS010−YES)、バッファ14の最後に到達したか、又は再生制御ユーザI/F17において停止ボタンが押されたかを確認する(ステップS011)。いずれかの条件を満たした場合には(ステップS011−YES)、処理を終了する。また、ステップS010がNOであった場合にはステップS003に戻り、ステップS011がNOの場合にはステップS004に戻る。
【0069】
以上により、再生中のピリオドのコンテンツ尺よりもピリオドを構成する全セグメントの時間尺の方が短い場合には、再生継続時間がピリオドのコンテンツ尺及び全セグメントの時間尺の差分以上のフィラーセグメントを生成し、ピリオドの最終セグメント(コンテンツの最後のセグメント)に続けてバッファ14に挿入することにより、ピリオド(コンテンツ)間のバッファ14の隙間を埋めることができるため、ピリオド(コンテンツ)の切り替えがスムーズとなり安定した視聴が可能となる。
【0070】
なお、上述した受信装置1として機能させるためにコンピュータを好適に用いることができ、そのようなコンピュータは、受信装置1の各機能を実現する処理内容を記述したプログラムを該コンピュータの記憶部に格納しておき、該コンピュータのCPUによってこのプログラムを読み出して実行させることで実現することができる。なお、このプログラムは、コンピュータ読取り可能な記録媒体に記録可能である。
【0071】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態に記載の構成ブロック又は処理ステップについて、複数を1つに組み合わせたり、1つを複数に分割したりすることが可能である。
【符号の説明】
【0072】
1 受信装置
2 配信サーバ
10 通信I/F
11 マニフェスト取得部
12 セグメント取得部
13 フィラーセグメント生成部
14 バッファ
15 バッファ制御部
16 再生制御部
17 再生制御ユーザI/F
18 再生部
19 表示部