以下、本発明の実施形態について図面に基づいて説明する。
(第1の実施形態)
図1は、第1の実施形態に係る情報配信システムの構成例を示す図である。情報配信システムは、情報配信装置101と、通信装置102と、ネットワーク103とを有する。例えば、情報配信装置101は、ネットワークカメラであり、ネットワーク103は、LAN(Local Area Network)等のIPネットワークである。通信装置102は、例えばPC等の情報処理装置である。情報配信装置101と通信装置102は、ネットワーク103を介して、相互に通信可能に接続されている。通信装置102は、情報配信装置101の外部機器である。通信装置102は、例えばPCであり、情報配信装置101に対して各種要求コマンドを送信する。情報配信装置101は、それらのコマンドに対するレスポンスを通信装置102に送信する。ネットワーク103は、Ethernet(登録商標)等の通信規格を満足する複数のルータ、スイッチ、ケーブル等を有する。ネットワーク103は、情報配信装置101及び通信装置102間の通信が行えるものであれば、その通信規格、規模、構成が限定されない。ネットワーク103は、インターネットから無線LANにまで適用可能である。なお、図1では、説明の簡略化のために、情報配信装置101は1台としているが、2台以上であってもよい。また、通信装置102以外にも、情報配信装置101に接続するクライアントがあってもよい。
図2は、本実施形態に係る情報配信装置101のハードウェア構成例を示す図である。情報配信装置101では、CPU201、一次記憶装置202、二次記憶装置203、画像キャプチャインタフェース(IF)206、ネットワークIF207が内部バス204を介して相互に接続されている。情報配信装置101は、撮像素子205を有する。一次記憶装置202は、例えばRAMであり、書き込み可能な高速の記憶装置であり、OSや各種プログラム及び各種データがロードされ、またOSや各種プログラムの作業領域として使用される。二次記憶装置203は、例えばフラッシュメモリ、HDD、SDカード等の不揮発性記憶装置である。二次記憶装置203は、OSや各種プログラム及び各種データの永続的な記憶領域として使用され、短期的な各種データの記憶領域として使用される。CPU201は、二次記憶装置203に記憶されているプログラムを一次記憶装置202に展開して実行することにより、情報配信装置101の処理を行う。
画像キャプチャIF206には、CCDセンサやCMOSセンサからなる撮像素子205が接続され、撮像素子205から取得した画像データを所定のフォーマットに変換・圧縮して一次記憶装置202に転送する。ネットワークIF207は、ネットワーク103を介して通信装置102に接続するインタフェースであり、通信装置102との通信を担う。
なお、通信装置102のハードウェア構成は、図2を参照しつつ説明した情報配信装置101のハードウェア構成とほぼ同様である。なお、通信装置102は、撮像素子205及び画像キャプチャIF206を備えなくともよい。また、通信装置102は、表示部や操作部等のインタフェースをさらに備えるものとする。
図3は、本実施形態に係る情報配信装置101の機能構成例を示す図である。情報配信装置101は、受信部301、ビットレート算出部302、プレイリスト生成部303、映像データ生成部304、セグメント生成部305、及び配信部306を有する。受信部301、ビットレート算出部302、プレイリスト生成部303、映像データ生成部304、セグメント生成部305、及び配信部306は、図2のCPU201がプログラムを実行することにより機能する処理部である。
映像データ生成部304は、画像キャプチャIF206により一次記憶装置202に転送された画像データに対し符号化処理を行い、映像データとして映像メタデータ及び映像フレームを生成する。映像データの符号化方式には、例えばH.264/AVC又はH.265/HEVCを用いることができる。但し、符号化方式はこれらに限らず、種々の符号化方式でよく、映像データを生成可能なものであればよい。なお、映像データは、メディアデータの一例であり、映像メタデータ及び映像フレームを生成する処理は、メディアデータ生成処理の一例である。
映像メタデータは、例えばSPS(Sequence Parameter Set)やPPS(Picture Parameter Set)等の映像再生を開始するために必要なデータである。映像フレームは、映像再生時に継続して表示される映像1コマ単位の情報を示す映像データである。映像フレーム及び映像メタデータは映像データ生成部304が生成する映像データの最小単位であり、後述のセグメント生成部305が生成するセグメントは、1以上の映像フレームまたは映像メタデータを含みうるデータである。
映像フレームには、例えば、独立フレーム又は従属フレームがある。独立フレームは、フレーム内符号化処理によって生成され、復号時に他の映像フレームの情報を必要としない映像フレームであり、例えばIフレームである。従属フレームは、フレーム間符号化処理によって生成され、他の映像フレームとの差分情報から構成される映像フレームであり、例えばPフレーム又はBフレームである。映像データ生成部304は、解像度、フレームレート、符号化方式、配信ビットレート等、自身が生成する映像データに関する情報としてのストリーム情報に基づいて、映像データを生成することができる。ストリーム情報は、二次記憶装置203に記憶されている。
映像データ生成部304は、GOP(Group Of Picuture)長の時間毎に独立フレームを一つ生成し、GOP長の時間内のその他の映像フレームを従属フレームとして生成する。二次記憶装置203に記憶されているストリーム情報は、GOP長の時間を含んでいるものとする。
セグメント生成部305は、映像データ生成部304が生成した映像メタデータと映像フレームにヘッダ部を付加し、それぞれ初期化セグメント及びメディアセグメントを生成し、一次記憶装置202に格納する。メディアセグメントは、所定の時間(セグメント時間)分の映像フレームを含むようにセグメント生成部305により生成される。二次記憶装置203に記憶されるストリーム情報がセグメント時間を含むこととする。セグメント生成部305は、セグメント時間を読み出してメディアセグメントを生成する。以下、初期化セグメント及びメディアセグメントを併せてセグメントと呼称する。セグメントは例えばISO/IEC14496-12にて定義される構造を持つものとすることができる。
受信部301は、プレイリスト又はセグメントの配信要求を通信装置102から受信する。プレイリスト及びセグメントの詳細なデータ構造については後述する。受信部301は、プレイリスト配信要求を通信装置102から受信すると同時に、プレイリスト生成部303にプレイリスト要求通知を行う。受信部301は、セグメント配信要求を通信装置102から受信すると、通信装置102に対しレスポンスを配信する指示を配信部306に行う。セグメント配信要求は、セグメント生成部305が生成するセグメントに対する配信要求である。なお、受信部301は、配信要求が行われたセグメントが一次記憶装置202に存在すれば配信要求が行われたセグメントのデータをレスポンスとして配信する指示を出し、存在しなければHTTP404等のエラーレスポンスを配信する指示を出す。
ビットレート算出部302は、映像データ生成部304が生成する映像データのデータサイズ、または、セグメント生成部305が生成するセグメントのデータサイズに基づいて配信ビットレートを算出し、一次記憶装置202に格納する。具体的には、ビットレート算出部302は、例えば、セグメント1つのデータサイズをセグメントの時間長で除して配信ビットレートを算出する。ここで、セグメント1つのデータサイズは、単位メディア当たりのデータサイズの一例である。
また、他の例としては、ビットレート算出部302は、映像データ生成部304が生成したGOP長分の映像データのデータサイズをGOP長の時間で除して、配信ビットレートを算出してもよい。また、他の例としては、ビットレート算出部302は、過去に配信済みの同一解像度、同一フレームレートのセグメントの配信ビットレートの履歴を参照し、履歴中の配信ビットレートの平均値を配信ビットレートとして算出してもよい。また、他の例としては、ビットレート算出部302は、H.264/AVC又はH.265/HEVCにおけるLevel limitsテーブルにおける、映像の解像度、フレームレートに対応するビットレート上限値を配信ビットレートとして算出してもよい。また、ビットレート算出部302は、一次記憶装置202に記憶されている、配信前のセグメントのデータサイズの平均値を配信ビットレートとしてもよい。なお、ビットレート算出部302による配信ビットレートの算出方法は実施形態に限定されるものではない。
ビットレート算出部302は、一次記憶装置202に格納した配信ビットレートと二次記憶装置203に格納されているストリーム情報の配信ビットレートの差分を求める。そして、ビットレート算出部302は、差分が所定の閾値を超える場合、セグメント生成部305に対し、セグメントにイベントヘッダを付加するイベントヘッダ付加指示を行う。ここで、イベントヘッダ付加指示は、プレイリストの更新通知の一例である。また、閾値は、予め設定されているものとする。閾値は、現在のビットレート情報に対する所定の割合(例えば50%)でもよい。また、閾値は、H.264/AVC又はH.265/HEVCにおけるLevel limitsテーブルにおける、映像の解像度、フレームレートに対応するビットレート上限値に基づく値でもよい。なお、閾値はこれらの値に限定されるものではない。
ビットレート算出部302は、イベントヘッダ付加指示後、二次記憶装置203に記憶されているストリーム情報の配信ビットレートを、一次記憶装置202に保持した配信ビットレートに置き換える。
プレイリスト生成部303は、プレイリスト要求通知を受信部301から受信すると、二次記憶装置203からストリーム情報を読み出し、読み出したストリーム情報に基づいてプレイリストを生成し、一次記憶装置202に格納する。本処理は、プレイリスト生成処理の一例である。その後、プレイリスト生成部303は、プレイリストのデータを通信装置102に配信する指示を配信部306に対して行う。プレイリスト生成部303は、情報配信装置101の処理負荷増大等により、一時的にプレイリストが生成不可である場合には、HTTP503等のエラーレスポンスを配信する指示を行うものとしてもよい。プレイリストの一例として、ISO/IEC23009-1にて定義されるMPDを用いることができる。MPDでは、情報配信装置101が配信可能であるセグメントの情報を、配信ビットレート情報、セグメントの映像データの解像度情報、フレームレート情報、符号化方式情報、セグメント時間情報等を用いて記述することができる。
配信部306は、プレイリスト、セグメントの配信要求を受信すると、それぞれプレイリスト、セグメントを通信装置102に対し配信する。上記において配信部306が通信装置102からの配信要求を受信してからセグメントを配信する例を説明したが、これに限定されない。配信部306は、HTTP/2やWebsocketなどのプロトコルによっては通信装置102から配信要求を受信しなくても、セグメント生成部305からセグメントが生成完了する度にセグメント生成通知を受信してもよい。この場合、配信部306は、セグメントが生成完了した時点で次々と配信するものとする。このような配信方式をサーバプッシュと呼ぶこともある。
図4は、セグメント生成部305が生成する初期化セグメント400及びメディアセグメント430のデータ構成を説明する図である。初期化セグメント400は、セグメントヘッダ410と、前述の映像メタデータ420を含む。
メディアセグメント430は、セグメントヘッダ440を含み、映像フレーム461~463を符号化順に含む。セグメントヘッダ440は、具体的にはセグメントヘッダ441またはセグメントヘッダ442のような構成である。セグメントヘッダ442は、セグメント生成部305がイベントヘッダ付加指示を受信した際に生成するセグメントヘッダである。セグメントヘッダ441は、それ以外の際にセグメント生成部305が生成するセグメントヘッダである。
セグメントヘッダ441は、一種のファイルヘッダとして作用するstypボックス451、セグメントに関する時間情報やランダムアクセス情報を示すsidxボックス452、映像フレームの詳細情報を示すmoofボックス453を含む。セグメントヘッダ442は、セグメント生成部305がイベントヘッダ付加指示を受信した際に、セグメントヘッダ441のデータ構成にemsgボックス454を付加した構成で生成される。
以下、emsgボックス454の各種情報がどのようにデータとして含まれるかを説明する。scheme_id_uriは、スキーマ文書のuriを指定することができる。valueはscheme_id_uriのスキーマにおけるイベントの種別を示す。timescaleは、後述のpresentation_time_delta、event_durationの値と合わせて時間を表現するための値である。
presentation_time_deltaでは、セグメントヘッダ442を含むセグメントの再生時間から、(presentation_time_delta)/(timescale)[秒]の時間が経過した後にイベントを有効化することができる。event_durationでは、(event_duration)/(timescale)[秒]として、イベントの長さを定義することができるが、0x0000ffffとすることで、イベントの長さは不定とすることができる。idは、後述のMPDのRepresentationにて示されるイベントidを示す。
message_dataは、scheme_id_uriのスキーマにおけるvalueに該当するイベントに関係する値を定義することができる。
例えば、
scheme_id_uri="urn:mpeg:dash:event:2012"
value=1
timescale=120000
presentation_time_delta=240000
event_duration=0x0000ffff
id=1
message_delta[]="2018-10-01T08:30:10.0"
の値が指定されたemsgボックス454では、セグメントヘッダ442を含むセグメントの再生時間から2秒後に、発行時間が"2018-10-01T08:30:10.0"であるMPD(後述)を無効化することができる。
映像フレーム461~463については、例えば、461を独立フレーム、462、463を従属フレームとすることができる。なお、メディアセグメント430の先頭の映像フレームを独立フレームとしたが、メディアセグメントの先頭の映像フレームが独立フレームでないメディアセグメントがあってもよい。情報配信装置101は、メディアセグメント430を含む複数のメディアセグメントを、通信装置102の配信要求に応じてネットワークIF207を通して次々に配信することができる。
図5は、情報配信装置101が通信装置102に配信するMPD500の構成の一例を示す図である。プレイリスト生成部303は、二次記憶装置203に記憶されているストリーム情報に基づいて、プレイリスト、すなわちMPD500を作成する。MPD500は、Period501、AdaptationSet502、Representation503、523、SegmentTemplate504、524の順の要素の階層構造となっている。この階層構造によって情報配信装置101が通信装置102に配信することが可能なセグメントに関する情報を定義することができる。
Period501は下位階層の要素が定義される期間の範囲を定義する。例えば、Period501では、Period501の開始時間startを0と記述し、Period501の期間の時間長durationを記述しないことにする。これにより、MPD500が有効である期間に情報配信装置101が配信する全てのセグメントの情報を定義することができる。AdaptationSet502は,映像の情報を示しており、例えば同じPeriod501の期間で別の視点の映像ごとに定義することができる。
Representation503では、セグメントの映像の情報として解像度やフレームレート等を定義することができる。Representationid505は、Representation503の識別子であり、例えば1とすることができる。Representation503は、解像度情報(width、height)、フレームレート情報(frameRate)、符号化方式情報(codecs)、SegmentTemplate504中のセグメント時間情報を含む。Representation503は、さらに配信ビットレート情報506(bandwidth)等を含む。配信ビットレート情報506は、セグメントを配信する配信ビットレートが、4000000[bps]であることを示す。
また、Representation503は、初期化セグメントURI情報509、及び、メディアセグメントURI情報510を含んでいる。通信装置102は、情報配信装置101のIPアドレスを含むMPDBaseURI情報511、RepresentationBaseURI情報512を使用することにより、下記のURIにアクセスすることができる。通信装置102は、Representationid505から$RepresentationID$を1とする。そして、通信装置102は、Representation503の初期化セグメントURI及びメディアセグメントURIを、それぞれ式(1)及び式(2)で決定する。
(Representation503の初期化セグメントURI)
=(MPDBaseURI情報511)+(RepresentationBaseURI情報512)+(初期化セグメントURI情報509)
="http://192.169.100.1:80/video/stream1/init1.mp4" ・・・式(1)
(Representation503のメディアセグメントURI)
=(MPDBaseURI情報511)+(RepresentationBaseURI情報512)+(メディアセグメントURI情報510)
="http://192.169.100.1:80/video/stream1/media1_$Number$.m4s"・・・式(2)
上記の式で、A+Bは、要素Aの文字列の右側に要素Bの文字列を結合すること意味する。Number$は、テンプレート表現であり、メディアセグメントURI情報510のstartNumberの値からメディアセグメントの映像の時系列順又は符号化順に評価値がインクリメントされていく。
実際の各メディアセグメントのURIは、以下の通りとなる。
"http://192.169.100.1:80/video/stream1/media1_1.m4s"、"http://192.169.100.1:80/video/stream1/media1_2.m4s"
通信装置102は、Representation503についての情報を、503~512から取得可能であるのと同様に、Representation523についての情報を、523~532から取得可能である。二次記憶装置203では、MPD500に含まれるRepresentation分のセグメントに係るストリーム情報を記憶する。
配信部306は、このようなMPD500を通信装置102に配信することで、通信装置102は情報配信装置101に対し、初期化セグメント又はメディアセグメントの配信要求を上記のようなURIに基づいて次々に行うことが可能となる。例えば、まず、通信装置102は初期化セグメントを取得し、映像再生のための初期化処理を行う。そして、通信装置102は、タイムスケール情報、セグメント時間情報に基づいたセグメント時間毎にメディアセグメントの配信要求を行って、順次、メディアセグメントを取得し映像を再生する。
また、MPD500中では、InbandEventStream551にて、対応するイベントのスキーマ文書のuri、及び、そのスキーマ文書中におけるイベント種別を示すvalueを記述する。これにより、情報配信装置101が上記のイベント通知を行うことを予めクライアントに示すことができる。
MPD500中のpublishTime522は、MPD500の発行時間を示す。通信装置102はpublishTime522の値を保持することにより、受信したセグメント中のemsgボックス454のmessage_dataと一致した場合に、MPD500を無効化し、新たなMPDの配信要求を情報配信装置101に対し行う。
図6は、情報配信装置101による配信処理を示すフローチャートである。ステップS601において、受信部301は、イベントの発生を待ち、発生イベントの判定によって、処理動作を切り替える。受信部301は、発生イベントが、通信装置102からのMPD配信要求イベントであると判定した場合には、ステップS602に処理を進める。また、受信部301は、発生イベントが、通信装置102からのセグメント配信要求イベントであると判定した場合には、ステップS605に処理を進める。また、受信部301は、発生イベントが、通信装置102からの配信終了要求のイベントであると判定した場合には処理を終了する。
ステップS602において、受信部301は、プレイリスト生成部303に対しMPD要求通知を行う。次に、ステップS603において、プレイリスト生成部303は、二次記憶装置203からストリーム情報を読み出し、ストリーム情報に基づいてMPDを作成し、MPDを一次記憶装置202に格納する。次に、ステップS604において、配信部306は、一次記憶装置202に記憶されているMPDを通信装置102に対し配信し、その後、処理をステップS601へ進める。
ステップS605において、配信部306は、要求されたセグメントが一次記憶装置202に存在するか否かを判定する。配信部306は、要求されたセグメントが一次記憶装置202に存在する場合は(S605でYES)、処理をステップS606へ進める。配信部306は、要求されたセグメントが一次記憶装置202に存在しない場合は(S605でNO)、処理をステップS611へ進める。ステップS606において、ビットレート算出部302は、要求されたセグメントのデータサイズをセグメント時間で除して配信ビットレートを算出し、一次記憶装置202に格納する。
ステップS607において、ビットレート算出部302は、一次記憶装置202に格納した配信ビットレートと二次記憶装置203に保持されているストリーム情報の配信ビットレートの差分が前述の所定の閾値以上か否かを判定する。ビットレート算出部302は、差分が閾値以上の場合(S607でYES)、処理をステップS608へ進める。ビットレート算出部302は、差分が閾値未満の場合は(S607でNO)、処理をステップS610へ進める。
ステップS608において、ビットレート算出部302は、二次記憶装置203に記憶されているストリーム情報の配信ビットレートを、一次記憶装置202に格納した配信ビットレートに更新する。次に、ステップS609において、セグメント生成部305は、一次記憶装置202に存在する、通信装置102から要求されたセグメントのデータにイベントヘッダを付加する。次に、ステップS610において、配信部306は、通信装置102から要求されたセグメントのデータを一次記憶装置202から読み出し、通信装置102に対して配信し、その後処理をステップS601へ進める。また、ステップS611においては、配信部306は、通信装置102に対しHTTPエラーのレスポンスを配信し、その後処理をステップS601へ進める。
図7は、情報配信装置101と通信装置102とによる配信処理を示すシーケンス図である。まず、ステップS701において、通信装置102は、情報配信装置101に対しMPD751の配信要求を行う。情報配信装置101は、MPD751の配信要求を受信すると、ステップS702において、MPD751を作成して通信装置102に配信する。
次に、ステップS703において、通信装置102は、MPD751を取得して分析した後、自己のCPU能力や表示解像度及び通信帯域などから、受信するセグメントのRepesentationを選択し、初期化セグメントの配信要求を行う。ここでは、Representationidが1のRepresentationを選択、初期化セグメントinit1.mp4の配信要求を行う場合を例に説明する。なお、通信装置102は、MPD751に記載される他のRepresentaionの初期化セグメントの配信要求を行ってもよく、また、初期化セグメントを情報配信装置101からサーバプッシュ方式で取得してもよい。次に、ステップS704において、情報配信装置101は、要求された初期化セグメントを通信装置102に返信する。本実施形態においては、情報配信装置101は、初期化セグメントinit1.mp4を通信装置102に返信する。
次に、ステップS705において、通信装置102は、ステップS703で選択したRepresentationのメディアセグメントの配信要求を情報配信装置101に行う。本実施形態においては、通信装置102は、メディアセグメントmedia1-1.m4sの配信要求を行うものとする。なお、通信装置102は、MPD500に記載される他のメディアセグメントの配信要求を行ってもよく、また、メディアセグメントを情報配信装置101からサーバプッシュ方式で取得してもよい。
次に、ステップS706において、情報配信装置101は、要求されたメディアセグメントのビットレートを算出する。本実施形態においては、情報配信装置101は、メディアセグメントmedia1-1.m4sのビットレートを4000000[bps]と算出するものとする。
次に、ステップS707において、情報配信装置101は、S706にて算出したビットレートと前述のストリーム情報における配信ビットレートの差が、所定の閾値より大きいかを判定する。本実施形態においては、所定の閾値を4000000[bps]×50[%]=2000000[bps]とする。本実施形態においては、情報配信装置101は、(式1)よりビットレートの差が、所定の閾値以下と判定する。
|(media1-1.m4sのビットレート=4000000[bps])―(Representationidが1のRepresentationの配信ビットレート=4000000[bps])|=0
≦(所定の閾値=2000000[bps]) …(式1)
なお、所定の閾値は、実施形態に限定されるものではなく、MPDに記載のRepresentationの配信ビットレートの50[%]以外の値でもよい。
次に、ステップS708において、情報配信装置101は、要求されたメディアセグメントを通信装置102に返信する。本実施形態においては、情報配信装置101は、メディアセグメントmedia1-1.m4sを通信装置102に返信する。
次に、ステップS709において、通信装置102は、ステップS708で取得したメディアセグメントの次のメディアセグメントの配信要求を情報配信装置101に行う。本実施形態においては、メディアセグメントmedia1-2.m4sの配信要求を行うものとする。なお、通信装置102は、MPD500に記載される他のメディアセグメントの配信要求を行ってもよい。次に、ステップS710において、情報配信装置101は、要求されたメディアセグメントのビットレートを算出する。ここでは、情報配信装置101は、メディアセグメントmedia1-2.m4sのビットレートを7000000[bps]と算出するものとする。
次に、ステップS711において、情報配信装置101は、S710にて算出したビットレートと前述のストリーム情報における配信ビットレートの差が、所定の閾値より大きいかを判定する。本実施形態においては、(式2)よりビットレートの差が、所定の閾値より大きいと判定する。
|(media1-2.m4sのビットレート=7000000[bps])―(Representationidが1のRepresentationの配信ビットレート=4000000[bps])|=3000000[bps]
>(所定の閾値=2000000[bps]) …(式2)
ステップS712において、情報配信装置101は、ステップS711の判定により、要求されたメディアセグメントにイベントヘッダを付加する。次に、ステップS713において、情報配信装置101は、ステップS712でイベントヘッダを付加したメディアセグメントを通信装置102に返信する。本実施形態においては、情報配信装置101は、セグメントヘッダにイベントヘッダが付加されたメディアセグメントmedia1-2.m4sを通信装置102に返信する。
次に、ステップS714において、通信装置102は、メディアセグメントmedia1-2.m4sを取得してイベントヘッダの存在を検出した後、MPD751を無効化する。つまり、通信装置102は、以降のMPD751の記述に基づくセグメントの配信要求を中止する。ステップS715において、通信装置102は、情報配信装置101に対しMPD752の配信要求を行う。
ステップS716において、情報配信装置101は、MPD752の配信要求を受信すると、MPD752を作成して通信装置102に配信する。情報配信装置101は、MPD751の記載のうち、少なくともRepresentationidが1のRepresentationの配信ビットレート情報の数値を、media1-2.m4sのビットレートに置き換える。これにより、MPD751のRepresentationidが1のRepresentationの配信ビットレート情報の数値は、4000000から7000000に置き換わる。MPD751のRepresentationidが1のRepresentationの配信ビットレート情報の数値が置き換得られたものが、MPD752として作成される。
ステップS717において、通信装置102は、MPD752を取得して分析した後、ステップS703同様Repesentationを選択し、初期化セグメントの配信要求を行う。本実施形態においては、MPD752でRepresentationidが2のRepresentationを選択し、初期化セグメントinit2.mp4の配信要求を行うものとする。なお、通信装置102は、MPD752に記載される他のRepresentaionの初期化セグメントの配信要求を行ってもよく、また、初期化セグメントを情報配信装置101からサーバプッシュ方式で取得してもよい。また、init1.mp4等必要な初期化セグメントのデータが既に通信装置102内に存在する場合は、初期化セグメントの配信要求を行わなくてもよい。
次に、ステップS718において、情報配信装置101は、要求された初期化セグメントを通信装置102に返信する。図7の場合、情報配信装置101は、初期化セグメントinit2.mp4を通信装置102に返信する。次に、ステップS719において、通信装置102は、情報配信装置101に対し、通信装置102は、ステップS715で選択したRepresentationのメディアセグメントの配信要求を情報配信装置101に行う。本実施形態においては、通信装置102は、メディアセグメントmedia2-3.m4sの配信要求を行うものとする。
次に、ステップS720において、情報配信装置101は、要求されたメディアセグメントのビットレートを算出する。本実施形態においては、情報配信装置101は、メディアセグメントmedia2-3.m4sのビットレートを2500000[bps]と算出するものとする。
次に、ステップS721において、情報配信装置101は、S720にて算出したビットレートとストリーム情報における配信ビットレートの差が、所定の閾値より大きいかを判定する。本実施形態においては、所定の閾値を2000000[bps]×50[%]=1000000[bps]とする。本実施形態においては、情報配信装置101は、(式3)よりビットレートの差が、所定の閾値以下と判定する。
|(media2-3.m4sのビットレート=2500000[bps])―(Representationidが2のRepresentationの配信ビットレート=2000000[bps])|=500000
≦(所定の閾値=1000000[bps]) …(式3)
次に、ステップS722において、情報配信装置101は、要求されたメディアセグメントを通信装置102に返信する。本実施形態においては、情報配信装置101は、メディアセグメントmedia2-3.m4sを通信装置102に返信する。
なお、ステップS716において、情報配信装置101は、Representationidが1のRepresentationの配信ビットレート情報の数値を更新した。このとき、情報配信装置101は、その他のRepresentationidのRepresentationの配信ビットレート情報も更新してもよい。その後も同様に、通信装置102は、情報配信装置101からMPD、セグメントを順次取得する。情報配信装置101は、要求されたメディアセグメントを通信装置102に返信する。
セグメントヘッダ442は、セグメント生成部305がイベントヘッダ付加指示を受信した際に、セグメントヘッダ441のデータ構成に対し、イベントヘッダとして作用するemsgボックス454を付加して生成されるものとした。ただし、予めイベントヘッダを含むセグメントヘッダを用いてセグメントを生成してもよい。
このように、情報配信装置101は、通信装置102に配信するセグメントのビットレートとMPD500に係るビットレートの差が閾値を超える際に、イベントヘッダを付加したセグメントを通信装置102に配信しMPD500の取得を促す。これにより、情報配信装置101は、通信装置102に対し、セグメントのビットレートの情報をリアルタイムに供給することができる。これにより、情報配信装置101は、クライアント装置としての通信装置102に特別な仕組みを準備することなく、情報配信装置101から配信されるメディアデータの配信時の品質劣化を防ぐことができる。
本実施形態では、セグメント生成部305が生成するセグメントは映像データを含むものとしたが、セグメント生成部305は音声データを含むメディアセグメントを生成可能としてもよい。
また、本実施形態では、情報配信装置101の機能構成に、映像データ生成部304が含まれるものとした。ただし、情報配信装置101は、映像データ生成部304の機能を持つ他の装置と通信を行うことにより、機能構成に受信部301、ビットレート算出部302、プレイリスト生成部303、セグメント生成部305、配信部306のみを含むものとしてもよい。このように、複数の装置の協働により、本実施形態に係る情報配信装置101の機能構成を実現することとしてもよい。
(第2の実施形態)
次に、第2の実施形態に係る情報配信システムについて、第1の実施形態に係る情報配信システムと異なる点を主に説明する。図8は、第2の実施形態に係る情報配信装置101による配信処理を示すフローチャートである。なお、図8に示す配信処理の各処理のうち、図6を参照しつつ説明した第1の実施形態に係る配信処理の各処理と同一の処理には、同一の番号を付している。
S605において、配信部306は、要求されたセグメントが一次記憶装置202に存在する場合には(S605でYES)、処理をS801へ進める。S801において、ビットレート算出部302は、要求されたセグメントに対応するRepresentationの映像フレーム生成について、GOP長の時間が経過したかどうかを判定する。ビットレート算出部302は、GOP長の時間が経過した場合は(S801でYES)、処理をS802へ進める。ビットレート算出部302は、GOP長の時間が経過していない場合は(S801でNO)、処理をS610へ進める。
GOP長の時間が経過したかどうかを判定するには、例えば、MPD500における各Representationの映像フレーム生成についてのGOP長の時間が二次記憶装置203において、ストリーム情報として格納されているものとする。そして、ビットレート算出部302は、タイマでGOP長の時間の経過をカウントし、S801において、ビットレート算出部302は、GOP長の時間が経過した場合には、タイマのカウントをリセットするようにすればよい。なお、GOP長の時間の経過の判定方法はこれに限らない。
S802において、ビットレート算出部302は、配信部306が配信したGOP長の時間分のセグメントに含まれる映像データのデータサイズの合計をGOP長の時間で除して配信ビットレートを算出し、一次記憶装置202に格納する。ビットレート算出部302は、S802の処理の後、処理をS607へ進める。ここで、GOPは、1以上のフレームを含んだグループであって、かつグループ内のメディアデータを他のグループを参照せずに復号可能なグループの一例である。なお、これ以外の第2の実施形態に係る情報配信システムの構成及び処理は、第1の実施形態において説明した情報配信システムの構成及び処理と同様である。
このように、第2の情報配信装置101は、通信装置102に対し配信する映像データのGOP時間分の配信ビットレートとMPD500に係るビットレートの差が閾値を超える際に、イベントヘッダを付加することで、通信装置102にMPDの取得を促す。
一般に独立フレームのデータサイズは従属フレームのデータサイズより非常に大きい。例えば、図4にて示したような独立フレームを含むメディアセグメントのデータサイズは、独立フレームを含まないメディアセグメントのデータサイズより非常に大きくなる傾向がある。そのため、独立フレームを含むメディアセグメントと独立フレームを含まないメディアセグメントの両者とも、情報配信装置101が配信する場合、通信装置102に配信するメディアセグメントのデータサイズに変動が生じやすくなる。変動はGOP時間の単位で周期性を持つ傾向がある。したがって、本実施形態では、情報配信装置101は、通信装置102に対し、個々のセグメントのデータサイズが変動しつつも周期性があるような場合に正確にビットレートの情報を供給することができる。
なお、上述の実施形態においては、DASH配信を例に説明した。但し、情報配信装置101及び通信装置102の上記処理は、HLS配信など他のアダプティブストリーミング技術にも適用可能である。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。