【文献】
Information technology - Dynamic adaptive streaming Over HTTP (DASH) - Part 1: Media presentation description and segment formats,INTERNATIONAL STANDARD_ISO/IEC23009-1_First edition,ISO,2012年04月01日,pp.14-33,57-58,92-96,114-115
(58)【調査した分野】(Int.Cl.,DB名)
前記リクエスト生成部が前記コマンドを含まないMPDリクエストを生成するとき、前記送信部は、前記初期化セグメントファイルの送信なしに前記MPDファイルを送信することを前記他の情報処理装置に要求するために、前記コマンドを含まない前記MPDリクエストを送信する
請求項1に記載の情報処理装置。
前記送信部は、所定の符号化ビットレートの所定の再生時刻のコンテンツのファイルと、前記他の情報処理装置により許容範囲内で選択された符号化ビットレートの前記所定の再生時刻より後の再生時刻の前記コンテンツである後続コンテンツのファイルとの送信を、前記他の情報処理装置に要求するコンテンツファイル要求情報を送信する
ように構成された
請求項2に記載の情報処理装置。
所定の符号化ビットレートの所定の再生時刻のコンテンツのファイルと、前記情報処理装置により許容範囲内で選択された符号化ビットレートの前記所定の再生時刻より後の再生時刻の前記コンテンツである後続コンテンツのファイルの送信を要求するコンテンツファイル要求情報と、ネットワークの帯域とに基づいて、前記許容範囲内の符号化ビットレートから、前記後続コンテンツの符号化ビットレートを選択する選択部
をさらに備え、
前記通信部は、前記所定の符号化ビットレートの前記所定の再生時刻のコンテンツのファイルと、前記選択部により選択された前記符号化ビットレートの前記後続コンテンツのファイルとを送信する
ように構成された
請求項10に記載の情報処理装置。
【発明を実施するための形態】
【0029】
以下、本開示を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.第1実施の形態:情報処理システム(
図1乃至
図6)
2.第2実施の形態:情報処理システム(
図7乃至
図10)
3.第3実施の形態:コンピュータ(
図11)
【0030】
<第1実施の形態>
(MPDファイルの説明)
図1は、MPEG-DASHにおけるMPDファイルの階層構造を説明する図である。
【0031】
MPDファイルには、動画コンテンツの符号化方式、符号化ビットレート、映像の解像度、言語などの情報が階層化されて、XML形式で記述される。
【0032】
具体的には、
図1に示すように、MPDファイルには、ピリオド(Period)、アダプテーションセット(AdaptationSet)、リプレゼンテーション(Representation)、セグメントインフォ(SegmentInfo)等の要素が階層的に含まれている。
【0033】
MPDファイルでは、自分が管理する動画コンテンツが所定の時間範囲(例えば、番組、CM(Commercial)などの単位)で分割される。ピリオド要素は、分割された動画コンテンツごとに記述される。ピリオド要素は、動画コンテンツのプログラム(同期を取った1組の映像データや音声データなどのデータ)の再生開始時刻などの情報を有する。
【0034】
アダプテーションセット要素は、ピリオド要素に含まれ、そのピリオド要素に対応する動画コンテンツのリプレゼンテーション要素をメディア種別や属性などによってグルーピングする。アダプテーションセット要素は、グループに含まれるリプレゼンテーション要素に対応する動画コンテンツに共通のメディア種別、属性などを有する。
【0035】
リプレゼンテーション要素は、それをグルーピングするアダプテーションセット要素に含まれ、上位層のピリオド要素に対応する動画コンテンツのうちの、メディア種別および属性が同一である動画コンテンツのセグメントファイル群ごとに記述される。リプレゼンテーション要素は、このリプレゼンテーション要素に対応するセグメントファイル群に共通の属性、URLなどを有する。
【0036】
セグメントインフォ要素は、リプレゼンテーション要素に含まれ、そのリプレゼンテーションに対応するセグメントファイル群の各セグメントファイルに関する情報(例えば、URLなど)を有する。
【0037】
(情報処理システムの第1実施の形態の構成例)
図2は、本開示を適用した情報処理システムの第1実施の形態の構成例を示すブロック図である。
【0038】
図2の情報処理システム10は、配信サーバ11と再生クライアント12がネットワーク13を介して接続することにより構成される。情報処理システム10は、HTTP/2に準拠して、MPEG-DASHによるダイナミック・アダプティブ・ストリーミングを行う。
【0039】
具体的には、情報処理システム10の配信サーバ11は、記憶部30、httpサーバ31、解析部32、計測部33、選択部34、および選択部35により構成される。
【0040】
配信サーバ11の記憶部30(ストレージ)は、複数のメディア種別の各属性の動画コンテンツのセグメントファイルを管理するMPDファイルと、そのセグメントファイルとを記憶する。
【0041】
セグメントファイルは、動画コンテンツの符号化ストリームをセグメントと呼ばれる数秒から10秒程度の時間単位で格納するメディアセグメントファイルと、その符号化ストリームを復号する際に用いられるパラメータを含む初期化セグメントファイルとにより構成される。
【0042】
メディアセグメントファイルに格納される符号化ストリームは、メディア種別および属性ごとに、動画コンテンツが符号化された符号化ストリームである。第1実施の形態では、属性の種類は、言語、役割(目的)、および符号化ビットレートであるものとする。従って、例えば、符号化ビットレートが異なる符号化ストリームや言語が異なる符号化ストリームは、それぞれ、異なるメディアセグメント
ファイルに格納される。
【0043】
httpサーバ31は、HTTP/2に準拠してネットワーク13を介して再生クライアント12と通信を行う。具体的には、httpサーバ31は、再生クライアント12から送信されてくる、MPDファイルの送信を配信サーバ11に要求するHTTP GETリクエスト(以下、MPDリクエストという)を受信する。httpサーバ31は、MPDリクエスト(管理ファイル要求情報)で指定されたMPDファイルのURLに基づいて、記憶部30からMPDファイルを読み出し、再生クライアント12に送信する。また、httpサーバ31は、MPDリクエストのヘッダを解析部32に供給する。
【0044】
また、httpサーバ31は、再生クライアント12から送信されてくる、所定のメディア種別の所定の属性の所定の再生時刻のメディアセグメントファイルの送信を配信サーバ11に要求するHTTP GETリクエスト(以下、メディアリクエストという)を受信する。httpサーバ31は、メディアリクエスト(コンテンツファイル要求情報)で指定されたURLに基づいて、記憶部30から
選択部35を介してメディアセグメントファイルを読み出し、再生クライアント12に送信する。また、httpサーバ31は、メディアリクエストのヘッダを解析部32に供給する。
【0045】
さらに、httpサーバ31(送信部)は、選択部34から供給される初期化セグメントファイルおよび選択部35から供給されるメディアセグメントファイルを、再生クライアント12に送信する。
【0046】
解析部32は、httpサーバ31から供給されるMPDリクエストのヘッダを解析し、push-init-segment指令を記述する拡張ヘッダを抽出する。push-init-segment指令は、記憶部30に記憶される複数のメディア種別の各属性の動画コンテンツの初期化セグメントファイルのうちの、所定のメディア種別の所定の属性の初期化セグメントファイルの送信を配信サーバ11に要求するプッシュ指令である。
【0047】
push-init-segment指令を記述する拡張ヘッダの記述は、「Accept-push-policy: “type”=“push-init-segment”, PUSH_PARAMS」である。「Accept-push-policy」は、拡張ヘッダの名前であり、配信サーバ11に対するプッシュ指令を記述する拡張ヘッダであることを示している。「Accept-push-policy」以降の記述は、パラメータを示すコードと、そのパラメータの値とをイコールで結ぶことにより、各パラメータの値を指定する。
【0048】
即ち、「“type”=“push-init-segment”」では、プッシュ指令のタイプ(種類)をパラメータとして示すコード「type」と、そのパラメータの値である「push-init-segment」とがイコールで結ばれている。従って、拡張ヘッダに記述されるプッシュ指令のタイプとして、push-init-segment指令が指定されている。
【0049】
また、「“type”=“push-init-segment”」の後の「PUSH_PARAMS」は、push-init-segment指令により
配信サーバ11が送信を要求される初期化セグメントファイルのメディア種別(種類)または属性の種類をパラメータとして示すコードと、そのパラメータの値とをイコールで結ぶ記述である。この記述により、push-init-segment指令により
配信サーバ11が送信を要求される初期化セグメントファイルのメディア種別または属性が指定される。
【0050】
例えば、「PUSH_PARAMS」では、メディア種別をパラメータとして示すコード「media」と、メディア種別を示す値であるMIME-typeとがイコールで結ばれる。これにより、push-init-segment指令により送信を要求する初期化セグメントファイルのメディア種別が指定される。メディア種別を示すMIME-typeとしては、「video/mp4」、「audio/mp4」などがある。「video/mp4」は、メディア種別としてMP4形式でファイル化される映像を示し、「audio/mp4」は、メディア種別としてMP4形式でファイル化される音声を示す。
【0051】
また、「PUSH_PARAMS」では、言語をパラメータとして示すコード「lang」と、言語の属性を示す属性情報としてのISO 639-1に基づく言語コードとがイコールで結ばれる。これにより、push-init-segment指令により送信を要求する初期化セグメントファイルの言語の属性が指定される。例えば、言語の属性として日本語を指定する場合、「PUSH_PARAMS」には、「“lang”=”ja”」が記述される。なお、言語の属性は、メディア種別として音声または字幕が指定される場合にのみ指定することができる。
【0052】
さらに、「PUSH_PARAMS」では、目的(役割)をパラメータとして示すコード「role」と、目的(役割)の属性情報としてのMPDファイルのアダプテーションセット要素が有し得るroleアトリビュートの値とがイコールで結ばれる。これにより、push-init-segment指令により送信を要求する初期化セグメントファイルの目的(役割)の属性が指定される。MPDファイルが有し得るroleアトリビュートの値としては、「main」、「alternate」、「supplementary」、「commentary」、「dub(吹替え)」、「description」などがある。
【0053】
また、「PUSH_PARAMS」では、符号化ビットレートをパラメータとして示すコード「bitrate」と、符号化ビットレートの属性情報としての1秒あたりの符号化ビットレートの範囲とがイコールで結ばれる。これにより、push-init-segment指令により送信を要求する初期化セグメントファイルの符号化ビットレートの属性の範囲が指定される。
【0054】
従って、例えば、push-init-segment指令により送信を要求する初期化セグメントファイルのメディア種別、目的(役割)、および符号化ビットレートを指定するpush-init-segment指令を記述する拡張ヘッダの記述は、「Accept-push-policy: “type”=“push-init-segment”,”media”=”video/mp4”,”role”=”main”,”bitrate”=”400000-8000000”」になる。
【0055】
この場合、push-init-segment指令により送信を要求する初期化セグメントファイルのメディア種別として、MP4形式でファイル化される映像が指定されており、目的(役割)の属性情報として「main」が指定されている。また、符号化ビットレートの属性情報の範囲として400kbpsから8Mbpsまでの範囲が指定されている。
【0056】
解析部32は、push-init-segment指令を記述する拡張ヘッダの「PUSH_PARAMS」により指定されたメディア種別および属性を認識し、選択部34に供給する。
【0057】
また、解析部32は、httpサーバ31から供給されるメディアリクエストのヘッダを解析し、push-media-adapted指令を記述する拡張ヘッダを抽出する。push-media-adapted指令は、送信元により許容範囲内で選択された符号化ビットレートの後続メディアセグメントファイル(後続コンテンツのファイル)の送信を配信サーバ11に要求するプッシュ指令である。なお、後続メディアセグメントファイルとは、メディアリクエストで送信が要求されるメディアセグメントファイルの再生時刻より後の再生時刻の、そのメディアセグメントファイルと符号化ビットレート以外の属性が同一であるメディアセグメントファイルである。
【0058】
push-media-adapted指令を記述する拡張ヘッダの記述は、「Accept-push-policy: “type”=“push-media-adapted”, PUSH_PARAMS」である。push-media-adapted指令を記述する拡張ヘッダの記述は、プッシュ指令のタイプと、PUSH_PARAMSにおけるパラメータとを除いて、push-init-segment指令を記述する拡張ヘッダの記述と同様である。
【0059】
即ち、push-media-adapted指令を記述する拡張ヘッダの記述では、「“type”=“push-media-adapted”」において、コード「type」と「push-init-segment」とがイコールで結ばれている。従って、拡張ヘッダに記述されるプッシュ指令のタイプとして、push-media-adapted指令が指定されている。
【0060】
また、「“type”=“push-media-adapted”」の後の「PUSH_PARAMS」は、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの期間と符号化ビットレートの許容範囲をパラメータとして示すコードと、そのパラメータの値とをイコールで結ぶ記述である。この記述により、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの期間および符号化ビットレートの許容範囲が指定される。
【0061】
後続メディアセグメントファイルの期間をパラメータとして示すコードとしては、例えば、「duration」または「number」がある。後続メディアセグメントファイルの期間を示すコードが「duration」である場合、「PUSH_PARAMS」では、コード「duration」と、後続メディアセグメントファイルの期間を示す情報としての再生時間を秒単位で示す整数値とがイコールで結ばれる。一方、後続メディアセグメントファイルの期間を示すコードが「number」である場合、「PUSH_PARAMS」では、コード「
number」と、後続メディアセグメントファイルの期間を示す情報としてのファイル数を示す整数値とがイコールで結ばれる。これにより、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの期間が指定される。
【0062】
また、「PUSH_PARAMS」では、符号化ビットレートの許容範囲をパラメータとして示すコード「bitrate」と、符号化ビットレートの許容範囲を示す範囲情報としての1秒あたりの符号化ビットレートの範囲とがイコールで結ばれる。これにより、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの符号化ビットレートの範囲情報が指定される。
【0063】
従って、例えば、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの期間を再生時間で指定するpush-media-adapted指令を記述する拡張ヘッダの記述は、「accept-push-policy:“type”=“push-media-adapted”,”duration”=”120”,”bitrate”=”400000-8000000”」になる。この場合、push-media-adapted指令により送信を要求する後続メディアセグメントファイルの再生時間として120秒が指定されており、符号化ビットレートの許容範囲として400kbpsから8Mbpsまでの範囲が指定されている。
【0064】
解析部32は、push-media-adapted指令を記述する拡張ヘッダの「PUSH_PARAMS」により指定された期間と符号化ビットレートの許容範囲を認識し、選択部35に供給する。
【0065】
計測部33は、httpサーバ31から送信されるMPDファイル、初期化セグメントファイル、およびメディアセグメントファイルの実効的なデータ送信レートを計測する。具体的には、配信サーバ11と再生クライアント12の間の伝送では、データの受信時、そのデータの受信通知としてACK信号を送信する。従って、計測部33は、例えば、TCP(Transfer Control Protocol)レイヤにおける再生クライアント12からのACK信号の状況に基づいて、実効的なデータ送信レートを計測する。計測部33は、計測の結果得られるデータ送信レートを、ネットワーク13の実効帯域を示す計測ビットレートとして選択部35に供給する。
【0066】
選択部34は、記憶部30に記憶されているMPDファイルに基づいて、解析部32から供給される、指定されたメディア種別および属性の初期化セグメントファイルのURLを登録した送信リストを生成し、保持する。
【0067】
具体的には、選択部34は、MPDファイルに記述される全てのリプレゼンテーション要素から、指定されたメディア種別を有するアダプテーションセット要素のリプレゼンテーション要素を選択する。そして、選択部34は、選択されたリプレゼンテーション要素から、そのリプレゼンテーション要素またはリプレゼンテーション要素をグルーピングするアダプテーションセット要素が、指定された属性を有するリプレゼンテーション要素を選択する。
【0068】
例えば、MPDファイルでは、リプレゼンテーション要素が、符号化ビットレートの属性情報をbandwidthアトリビュートとして有する。従って、指定された属性の種類が符号化ビットレートのみである場合、選択部34は、選択されたリプレゼンテーション要素から、指定された符号化ビットレートの属性の範囲内の属性の属性情報をbandwidthアトリビュートとして有するリプレゼンテーション要素を選択する。
【0069】
なお、指定された属性の種類の数が複数である場合には、全種類の属性に対応するリプレゼンテーション要素が選択される。しかしながら、全種類の属性に対応するリプレゼンテーション要素が存在しない場合には、選択部34は、各属性の種類の優先度に基づいて選択に用いる属性の種類を削減する。
【0070】
ここでは、各属性の種類の優先度は、予め決められているものとするが、PUSH_PARAMSにより指定される順番に基づいて決められてもよい。
【0071】
選択部34は、以上のようにして選択されたリプレゼンテーション要素が有する初期化セグメントファイルのURLを登録した送信リストを、初期化セグメントファイルの送信リストとして生成し、保持する。選択部34は、初期化セグメントファイルの送信リストに登録されているURLに基づいて、記憶部30から初期化セグメントファイルを読み出し、httpサーバ31に供給する。
【0072】
選択部35は、計測ビットレート、MPDファイル、並びに、解析部32から供給される期間および符号化ビットレートの許容範囲に基づいて、許容範囲内の符号化ビットレートから、後続メディアセグメントファイルの符号化ビットレートを選択する。
【0073】
具体的には、選択部35は、MPDファイルから、許容範囲内の符号化ビットレートをbandwidthアトリビュートとして有する後続メディアセグメントファイルが属するリプレゼンテーション要素を選択する。そして、選択部35は、選択されたリプレゼンテーション要素から、計測ビットレートに適した符号化ビットレートをbandwidthアトリビュートとして有するリプレゼンテーション要素を選択する。
【0074】
選択部35は、選択されたリプレゼンテーション要素に属する後続メディアセグメントファイルのURLを登録した送信リストを、後続メディアセグメントファイルの送信リストとして生成し、保持する。選択部35は、後続メディアセグメントファイルの送信リストに登録されているURLに基づいて、記憶部30から後続メディアセグメントファイルを読み出し、httpサーバ31に供給する。
【0075】
再生クライアント12は、リクエスト生成部50、httpクライアント51、MPDパーサ52、選択部53、受信バッファ54、および再生部56により構成される。
【0076】
再生クライアント12のリクエスト生成部50は、ヘッダにpush-init-segment指令を含むMPDリクエスト生成する。具体的には、再生クライアント12は、MPDリクエストの生成時には、まだMPDファイルを取得していないため、配信サーバ11に実際に記憶されている初期化セグメントファイルの属性およびメディア種別は未知である。しかしながら、再生クライアント12は、再生クライアント12の特性やユーザの嗜好などに基づいて、初期化セグメントファイルのメディア種別および属性としてとり得る値から、必要となり得る初期化セグメントファイルのメディア種別および属性を選択することは可能である。
【0077】
従って、リクエスト生成部50は、必要となり得る初期化セグメントファイルのメディア種別および属性を指定するpush-init-segment指令を記述する拡張ヘッダを生成し、その拡張ヘッダをヘッダに含むMPDリクエストを生成する。リクエスト生成部50は、MPDリクエストをhttpクライアント51に供給する。
【0078】
また、リクエスト生成部50は、選択部53から供給されるURLと符号化ビットレートの許容範囲とに基づいて、ヘッダにpush-media-adapted指令を含むメディアリクエストを生成する。具体的には、リクエスト生成部50は、URLをデータ部(ボディ)に配置し、後続メディアセグメントファイルの期間と符号化ビットレートの許容範囲を指定するpush-media-adapted指令を記述する拡張ヘッダをヘッダ部に配置したメディアリクエストを生成する。リクエスト生成部50は、メディアリクエストをhttpクライアント51に供給する。
【0079】
httpクライアント51(送信部)は、HTTP/2に準拠してネットワーク13を介して配信サーバ11と通信を行う。具体的には、httpクライアント51は、リクエスト生成部50から供給されるMPDリクエストおよびメディアリクエストを、配信サーバ11に送信する。httpクライアント51は、MPDリクエストに応じて配信サーバ11から送信されてくるMPDファイルと初期化セグメントファイルを受信する。
【0080】
httpクライアント51は、MPDファイルをMPDパーサ52に供給し、初期化セグメントファイルを受信バッファ54に供給する。また、httpクライアント51は、メディアリクエストに応じて配信サーバ11から送信されてくるメディアセグメントファイルを受信し、受信バッファ54に供給する。
【0081】
MPDパーサ52は、httpクライアント51から供給されるMPDファイルを解析し、各リプレゼンテーション要素に対応するメディア種別、属性、URLなどを含むリプレゼンテーション情報を、選択部53に供給する。
【0082】
選択部53は、帯域推定部57から供給される計測ビットレート、再生クライアント12の特性、ユーザの嗜好などに基づいて、メディアリクエストでURLを指定するメディアセグメントファイルのメディア種別と属性を決定する。
【0083】
選択部53は、決定されたメディア種別および属性に基づいて、MPDパーサ52から供給されるリプレゼンテーション情報から、メディアリクエストでURLを指定するメディアセグメントファイルのリプレゼンテーション情報を選択する。また、選択部53は、メディアリクエストでURLを指定するメディアセグメントファイルの再生時刻と、選択されたリプレゼンテーション情報とに基づいて、メディアリクエストで指定するメディアセグメントファイルのURLを決定し、リクエスト生成部50に供給する。
【0084】
また、選択部53は、計測ビットレート、再生クライアント12の特性、ユーザの嗜好などに基づいて、後続メディアセグメントファイルの符号化ビットレートの許容範囲を決定し、リクエスト生成部50に供給する。
【0085】
受信バッファ54は、httpクライアント51から供給される初期化セグメントファイルとメディアセグメントファイルを保持する。
【0086】
再生部56は、受信バッファ54から再生対象の初期化セグメントファイルを読み出し、その初期化セグメントファイルに含まれるパラメータを設定する。また、再生部56は、受信バッファ54から再生対象のメディアセグメントファイルを読み出す。再生部56は、設定されたパラメータを用いて、読み出されたメディアセグメントファイルに格納される符号化ストリームを復号し、再生する。
【0087】
帯域推定部57は、受信バッファ54に保持される初期化セグメントファイルやメディアセグメントファイルのデータ量に基づいて、実効的なデータ受信レートを計測する。帯域推定部57は、計測の結果得られるデータ受信レートを、計測ビットレートとして選択部53に供給する。
【0088】
(再生クライアントのソフトウエアの階層構造の例)
図3は、
図2の再生クライアント12のソフトウエアの階層構造の例を示す図である。
【0089】
図3に示すように、再生クライアント12のソフトウエアの最下層は、受信バッファ54と再生部70により構成されるハードウエア層である。また、中間層は、DASHクライアント部71、帯域推定部72、および再生制御部73により構成され、最上層は、アプリケーション部74により構成される。
【0090】
DASHクライアント部71は、httpクライアント51とMPDパーサ52を実現するソフトウエアであり、帯域推定部72は、帯域推定部57を実現するソフトウエアである。また、再生制御部73は、再生部70を制御するソフトウエアであり、再生部70と再生制御部73により、再生部56が実現される。アプリケーション部74は、リクエスト生成部50、選択部53等を実現するソフトウエアである。
【0091】
(情報処理システムの処理の説明)
図4は、
図2の情報処理システム10の処理を説明するフローチャートである。
【0092】
図4のステップS11において、再生クライアント12のリクエスト生成部50は、初期化セグメントファイルのメディア種別および属性としてとり得る値から、必要となり得る初期化セグメントファイルのメディア種別および属性を選択する。
【0093】
ステップS12において、リクエスト生成部50は、選択されたメディア種別および属性を指定するpush-init-segment指令を記述する拡張ヘッダをヘッダに含むMPDリクエストを生成し、配信サーバ11に送信する。
【0094】
ステップS41において、配信サーバ11のhttpサーバ31は、再生クライアント12から送信されてくるMPDリクエストを受信する。そして、httpサーバ31は、MPDリクエストで指定されたMPDファイルのURLに基づいて、記憶部30からMPDファイルを読み出す。ステップS42において、httpサーバ31は、読み出されたMPDファイルを、MPDリクエストのレスポンスとして、再生クライアント12に送信する。また、httpサーバ31は、MPDリクエストのヘッダを解析部32に供給する。
【0095】
ステップS13において、httpクライアント51は、配信サーバ11から送信されてくるMPDファイルを受信し、MPDパーサ52に供給する。MPDパーサ52は、httpクライアント51から供給されるMPDファイルを解析し、各リプレゼンテーション要素のリプレゼンテーション情報を、選択部53に供給する。
【0096】
ステップS43において、配信サーバ11は、MPDリクエストのヘッダに含まれるpush-init-segment指令とMPDファイルとに基づいて、初期化セグメントファイルの送信リストを生成する初期化セグメント送信リスト生成処理を行う。この初期化セグメント送信リスト生成処理の詳細は、後述する
図5を参照して説明する。
【0097】
ステップS44において、選択部35は、初期化セグメントファイルの送信リストに登録されている先頭から1番目のURLに基づいて、記憶部30から初期化セグメントファイルを読み出し、httpサーバ31を介して再生クライアント12に送信する。なお、以下では、初期化セグメントファイルの送信リストに登録されている先頭からi番目のURLに対応する初期化セグメントファイルを初期化セグメントファイル#iという。
【0098】
ステップS14において、httpクライアント51は、配信サーバ11から送信されてくる初期化セグメントファイル
#1を受信し、受信バッファ54に供給して保持させる。
【0099】
ステップS44の処理後、ステップS44の処理と同様に、初期化セグメントファイル#i+1乃至#n−1が再生クライアント12に順次送信される。そして、ステップS14の処理後、ステップS14の処理と同様に、初期化セグメントファイル#i+1乃至#n−1が配信サーバ11から順次受信される。なお、nとは、初期化セグメントファイルの送信リストに登録されているURLの数であり、1以上の整数である。
【0100】
初期化セグメントファイル#n−1の送信後、ステップS45において、選択部35は、ステップS44の処理と同様に、初期化セグメントファイル#nを再生クライアント12に送信する。
【0101】
そして、初期化セグメントファイル#n−1の受信後、ステップS15において、httpクライアント51は、ステップS14の処理と同様に、初期化セグメントファイル#nを配信サーバ11から受信し、受信バッファ54に供給して保持させる。
【0102】
ステップS16において、選択部53は、帯域推定部57から供給される計測ビットレート、再生クライアント12の特性、ユーザの嗜好などに基づいて、メディアリクエストで指定するメディアセグメントファイルのURLを決定する。また、選択部53は、計測ビットレート、再生クライアント12の特性、ユーザの嗜好などに基づいて、後続メディアセグメントファイルの符号化ビットレートの属性の許容範囲を決定する。そして、選択部53は、決定されたURLと許容範囲をリクエスト生成部50に供給する。
【0103】
ステップS17において、選択部53から供給されるURLと符号化ビットレートの許容範囲とに基づいて、ヘッダにpush-media-adapted指令を含むメディアリクエストを
生成し、httpクライアント51を介して、配信サーバ11に送信する。
【0104】
ステップS46において、httpサーバ31は、
再生クライアント12から送信されてくるメディアリクエストを受信する。ステップS47において、httpサーバ31は、メディアリクエストで指定されたURLに基づいて、記憶部30から
選択部35を介してメディアセグメントファイルを読み出し、再生クライアント12に送信する。また、httpサーバ31は、メディアリクエストのヘッダを解析部32に供給する。
【0105】
ステップS18において、httpクライアント51は、配信サーバ11から送信されてくるメディアセグメントファイルを受信し、受信バッファ54に供給して保持させる。
【0106】
ステップS48において、配信サーバ11は、メディアリクエストのヘッダに含まれるpush-media-adapted指令とMPDファイルとに基づいて、後続メディアセグメントファイルの送信リストを生成する後続メディアセグメントファイル送信リスト生成処理を行う。この後続メディアセグメント
ファイル送信リスト生成処理の詳細は、後述する
図6を参照して説明する。
【0107】
ステップS49において、選択部35は、後続メディアセグメントファイルの送信リストに登録されている先頭から1番目のURLに基づいて、記憶部30から後続メディアセグメントファイルを読み出し、httpサーバ31を介して再生クライアント12に送信する。なお、以下では、後続メディアセグメントファイルの送信リストに登録されている先頭からi番目のURLに対応する後続メディアセグメントファイルを後続メディアセグメントファイル#iという。
【0108】
ステップS19において、httpクライアント51は、配信サーバ11から送信されてくる後続メディアセグメントファイル
#1を受信し、受信バッファ54に供給して保持させる。
【0109】
ステップS49の処理後、ステップS49の処理と同様に、後続メディアセグメントファイル#i+1乃至#m−1が再生クライアント12に順次送信される。そして、ステップS19の処理後、ステップS19の処理と同様に、後続メディアセグメントファイル#i+1乃至#m−1が配信サーバ11から順次受信される。なお、mとは、後続メディアセグメントファイルの送信リストに登録されているURLの数であり、1以上の整数である。
【0110】
後続メディアセグメントファイル#m−1の送信後、ステップS50において、選択部35は、ステップS49の処理と同様に、後続メディアセグメントファイル#mをhttpサーバ31を介して再生クライアント12に送信する。
【0111】
そして、後続メディアセグメントファイル#m−1の受信後、ステップS20において、httpクライアント51は、ステップS19の処理と同様に、後続メディアセグメントファイル#mを配信サーバ11から受信し、受信バッファ54に供給して保持させる。
【0112】
以上のようにして保持された初期化セグメントファイルと後続メディアセグメントファイルのうちの、再生対象の初期化セグメントファイルと後続メディアセグメントファイルは、再生部56により読み出される。その結果、後続メディアセグメントファイルの再生が行われる。
【0113】
図5は、
図4のステップS43の初期化セグメント送信リスト生成処理の詳細を説明するフローチャートである。
【0114】
なお、
図5の例では、各属性の優先度は、言語、役割、符号化ビットレートの順に高くなっている。
【0115】
図5のステップS71において、解析部32は、httpサーバ31から供給されるヘッダにpush-init-segment指令が含まれているかどうかを判定する。具体的には、解析部32は、httpサーバ31から供給されるヘッダに、ヘッダ名が「accept-push-policy」である拡張ヘッダが含まれており、その拡張ヘッダに「“type”=“push-init-segment”」が含まれているかどうかを判定する。
【0116】
ステップS71でpush-init-segment指令が含まれていると判定された場合、処理はステップS72に進む。ステップS72において、選択部34は、MPDファイルに記述される全てのリプレゼンテーション要素に対応する初期化セグメントファイルをプッシュ対象(送信対象)とし、そのリプレゼンテーション要素が有する初期化セグメントファイルのURLを送信リストに登録する。
【0117】
ステップS73において、解析部32は、push-init-segment指令でメディア種別が指定されているかどうか、即ち拡張ヘッダにコード「
media」が含まれているかどうかを判定する。ステップS73でpush-init-segment指令でメディア種別が指定されていると判定された場合、解析部32は、コード「media-type」とイコールで結ばれるMIME-typeが示すメディア種別を、指定されたメディア種別として認識し、選択部34に供給する。
【0118】
ステップS74において、選択部34は、解析部32から供給される、指定されたメディア種別以外のメディア種別に対応するURLを送信リストから削除する。具体的には、選択部34は、指定されたメディア種別以外のメディア種別を有するアダプテーションセット要素によりグルーピングされるリプレゼンテーション要素が有する初期化セグメントファイルのURLを送信リストから削除する。そして、処理はステップS75に進む。
【0119】
一方、ステップS73でpush-init-segment
指令でメディア種別が指定されていないと判定された場合、処理はステップS74をスキップし、ステップS75に進む。
【0120】
ステップS75において、選択部34は、push-init-segment指令で言語の属性が指定されており、その言語の属性に対応するURLが送信リストに存在するかどうかを判定する。即ち、拡張ヘッダにコード「lang」が含まれており、解析部32から、コード「lang」とイコールで結ばれる言語コードが示す属性が、指定された言語の属性として供給された場合、選択部34は、その属性のリプレゼンテーション要素が有する初期化セグメントファイルのURLが送信リストに存在するかどうかを判定する。
【0121】
ステップS75でpush-init-segment指令で言語の属性が指定されており、その言語の属性に対応するURLが送信リストに存在すると判定された場合、処理はステップS76に進む。
【0122】
ステップS76において、選択部34は、解析部32から供給される、指定された言語の属性以外の言語の属性に対応するURLを送信リストから削除する。そして、処理はステップS77に進む。
【0123】
一方、ステップS75でpush-init-segment指令で言語の属性が指定されていないか、または、push-init-segment指令で指定された言語の属性に対応するURLが送信リストに存在しないと判定された場合、処理はステップS76をスキップし、ステップS77に進む。
【0124】
ステップS77において、選択部34は、push-init-segment指令で役割の属性が指定されており、その役割の属性に対応するURLが送信リストに存在するかどうかを判定する。即ち、拡張ヘッダにコード「role」が含まれており、解析部32から、コード「role」とイコールで結ばれるroleアトリビュートの値が示す属性が、指定された役割の属性として供給された場合、選択部34は、その属性のリプレゼンテーション要素が有する初期化セグメントファイルのURLが送信リストに存在するかどうかを判定する。
【0125】
ステップS77でpush-init-segment指令で役割の属性が指定されており、その役割の属性に対応するURLが送信リストに存在すると判定された場合、処理はステップS78に進む。
【0126】
ステップS78において、選択部34は、解析部32から供給される、指定された役割の属性以外の役割の属性に対応するURLを送信リストから削除する。そして、処理はステップS79に進む。
【0127】
一方、ステップS77でpush-init-segment指令で役割の属性が指定されていないか、または、push-init-segment指令で指定された役割の属性に対応するURLが送信リストに存在しないと判定された場合、処理はステップS78をスキップし、ステップS79に進む。
【0128】
ステップS79において、選択部34は、push-init-segment指令で符号化ビットレートの属性の範囲が指定されており、その範囲内の符号化ビットレートに対応するURLが送信リストに存在するかどうかを判定する。即ち、拡張ヘッダにコード「bitrate」が含まれており、解析部32から、コード「bitrate」とイコールで結ばれる属性情報が示す属性の範囲が、指定された符号化ビットレートの属性の範囲として供給された場合、選択部34は、その属性の範囲内の符号化ビットレートのリプレゼンテーション要素が有する初期化セグメントファイルのURLが送信リストに存在するかどうかを判定する。
【0129】
ステップS79でpush-init-segment指令で符号化ビットレートの属性の範囲が指定されており、その範囲内の符号化ビットレートに対応するURLが送信リストに存在すると判定された場合、処理はステップS80に進む。
【0130】
ステップS80において、選択部34は、解析部32から供給される、指定された符号化ビットレートの属性の範囲外の符号化ビットレートに対応するURLを送信リストから削除する。そして、処理は終了する。
【0131】
一方、ステップS79でpush-init-segment指令で符号化ビットレートの属性の範囲が指定されていないか、または、push-init-segment指令で指定された符号化ビットレートの属性の範囲内の符号化ビットレートに対応するURLが送信リストに存在しないと判定された場合、処理はステップS80をスキップし、終了する。
【0132】
また、ステップS71でpush-init-segment指令が含まれていないと判定された場合、処理は終了する。
【0133】
なお、ステップS74,S76,S78において、送信リストに登録されている全てのURLを削除することになる場合には、選択部34は削除を行わない。また、ステップS80において、送信リストに登録されている全てのURLを削除することになる場合には、選択部34は、指定された符号化ビットレートの属性の範囲の下限値または上限値に最も近い符号化ビットレートに対応するURLを送信リストから削除せずに残す。
【0134】
例えば、送信リストに登録されている全てのURLに対応する符号化ビットレートが、指定された範囲より小さい場合、選択部34は、指定された範囲の下限値に最も近い符号化ビットレートに対応するURLを残す。一方、送信リストに登録されている全てのURLに対応する符号化ビットレートが、指定された範囲より大きい場合、選択部34は、指定された範囲の上限値に最も近い符号化ビットレートに対応するURLを残す。
【0135】
図6は、
図4のステップS48の後続メディアセグメント送信リスト生成処理スタートの詳細を説明するフローチャートである。
【0136】
図6のステップS101において、解析部32は、httpサーバ31から供給されるヘッダにpush-media-adapted指令が含まれているかどうかを判定する。具体的には、解析部32は、httpサーバ31から供給されるヘッダに、ヘッダ名が「accept-push-policy」である拡張ヘッダが含まれており、その拡張ヘッダに「“type”=“push-media-adapted”」が含まれているかどうかを判定する。
【0137】
ステップS101でpush-media-adapted指令が含まれていると判定された場合、ステップS102において、解析部32は、push-media-adapted指令で指定される後続メディアセグメントファイルの期間と符号化ビットレートの許容範囲を認識し、保持する。
【0138】
ステップS103において、選択部35は、現在の送信対象のメディアセグメントファイルの送信ビットレートが、計測部33から供給される計測ビットレートより高いかどうかを判定する。ステップS103で送信ビットレートが計測ビットレートより高いと判定された場合、処理はステップS104に進む。
【0139】
ステップS104において、選択部35は、解析部32から許容範囲を読み出し、送信ビットレートが、その許容範囲の下限値より高いかどうかを判定する。ステップS104で送信ビットレートが許容範囲の下限値より高いと判定された場合、処理はステップS105に進む。
【0140】
ステップS105において、選択部35は、MPDファイルに記述されている後続メディアセグメントファイルが属するリプレゼンテーション要素がBandwidthとして有する、送信ビットレートの次に低い符号化ビットレートが、許容範囲の下限値以上であるかどうかを判定する。
【0141】
ステップS105で許容範囲の下限値以上であると判定された場合、ステップS106において、選択部35は、送信ビットレートの次に低い符号化ビットレートのリプレゼンテーション要素に属する後続メディアセグメントファイルのURLを送信リストに登録する。そして、処理はステップS112に進む。
【0142】
一方、ステップS103で送信ビットレートが計測ビットレートより高くはないと判定された場合、ステップS107において、選択部35は、送信ビットレートが計測ビットレートより低いかどうかを判定する。ステップS107で送信ビットレートが計測ビットレートより低いと判定された場合、処理はステップS108に進む。
【0143】
ステップS108において、選択部35は、解析部32から許容範囲を読み出し、送信ビットレートが、その許容範囲の上限値より低いかどうかを判定する。ステップS108で送信ビットレートが許容範囲の上限値より低いと判定された場合、処理はステップS109に進む。
【0144】
ステップS109において、選択部35は、MPDファイルに記述されている後続メディアセグメントファイルが属するリプレゼンテーション要素がBandwidthとして有する、送信ビットレートの次に高いビットレートが、許容範囲の上限値以下であるかどうかを判定する。
【0145】
ステップS109で許容範囲の上限値以下であると判定された場合、ステップS110において、選択部35は、送信ビットレートの次に高い符号化ビットレートのリプレゼンテーション要素に属する後続メディアセグメントファイルのURLを送信リストに登録する。そして、処理はステップS112に進む。
【0146】
また、ステップS104で送信ビットレートが許容範囲の下限値より高くはないと判定された場合、または、ステップS105で送信ビットレートの次に低い符号化ビットレートが許容範囲の下限値より低いと判定された場合、処理はステップS111に進む。
【0147】
さらに、ステップS107で送信ビットレートが計測ビットレートより低くはないと判定された場合、即ち送信ビットレートと計測ビットレートが同一である場合、処理はステップS111に進む。
【0148】
また、ステップS108で送信ビットレートが許容範囲の上限値より低くはないと判定された場合、または、ステップS109で送信ビットレートの次に高い符号化ビットレートが許容範囲の上限値より高いと判定された場合、処理はステップS111に進む。
【0149】
ステップS111において、選択部35は、送信ビットレートのリプレゼンテーション要素に属する後続メディアセグメントファイルのURLを送信リストに登録する。そして、処理はステップS112に進む。
【0150】
ステップS112において、選択部35は、解析部32から後続メディアセグメントファイルの期間を読み出し、その期間分の後続メディアセグメントファイルのURLを送信リストに登録したかどうかを判定する。
【0151】
ステップS112で、読み出された期間分の後続メディアセグメントファイルのURLを送信リストにまだ登録していないと判定された場合、処理はステップS103に戻り、ステップS103乃至S112の処理が繰り返される。
【0152】
一方、ステップS112で、読み出された期間分の後続メディアセグメントファイルのURLを送信リストに既に登録したと判定された場合、処理は終了する。
【0153】
また、ステップS101でpush-media-adapted指令が含まれていないと判定された場合、処理は終了する。
【0154】
以上のように、情報処理システム10では、再生クライアント12が、push-init-segment指令を含むMPDリクエストを送信する。従って、再生クライアント12は、MPDリクエストを送信するだけで、MPDファイルと初期化セグメントファイルの両方を受信することができる。即ち、再生クライアント12は、初期化セグメントファイルの送信を要求するHTTP GETリクエストを送信する必要がない。従って、再生クライアント12は、初期化セグメントファイルの送信の要求を効率的に行うことができる。また、配信サーバ11は、初期化セグメントファイルの送信を要求するHTTP GETの受信を待つ必要がないため、初期化セグメントファイルの送信を効率的に行うことができる。
【0155】
また、push-init-segment指令では、送信を要求する初期化セグメントファイルのメディア種別や属性を指定することができる。従って、不要な初期化セグメントファイルを無駄に受信する必要がなく、初期化セグメントファイルの受信の更なる効率化を実現することができる。その結果、スタートアップを高速化することができる。
【0156】
これに対して、MPDリクエストに含まれるプッシュ指令において、送信を要求する初期化セグメントファイルのメディア種別や属性を指定することができない場合、MPDリクエストに応じて、全てのメディア種別および属性の初期化セグメントファイルが送信される。例えば、MPDリクエストに含まれるプッシュ指令において、初期化セグメントファイルのURLのみを指定することができる場合、再生クライアント12は、MPDリクエスト時にMPDファイルを取得しておらず、URLを指定することはできない。従って、全てのメディア種別および属性の初期化セグメントファイルが送信される。
【0157】
その結果、受信バッファ54は、受信した初期化セグメントファイルを保持するために多くの容量を必要とする。例えば、メディア種別や属性の数が多数である場合、受信バッファ54は、再生に必要な初期化セグメントファイルのデータ量の何倍ものデータ量の初期化セグメントファイルを保持する必要がある。
【0158】
よって、受信バッファ54の容量が小さく、全てのメディア種別および属性の初期化セグメントファイルを保持することができない場合、再生クライアント12は、プッシュ指令をMPDリクエストに含めることはできない。その結果、再生クライアント12は、MPDファイルの受信後、初期化セグメントファイルごとに、再生に必要な初期化セグメントファイルの送信を要求するHTTP GETリクエストを送信する必要がある。
【0159】
また、再生クライアント12は、push-media-adapted指令を含むメディアリクエストを送信する。従って、再生クライアント12は、メディアリクエストを送信するだけで、メディアリクエストでURLが指定されるメディアセグメントファイルだけでなく、後続メディアセグメントファイルも受信することができる。即ち、再生クライアント12は、後続メディアセグメントファイルごとに、メディアリクエストを送信する必要がない。従って、再生クライアント12は、後続メディアセグメントファイルの送信の要求を効率的に行うことができる。また、配信サーバ11は、後続メディアセグメントファイルの送信を要求するメディアリクエストの受信を待つ必要がないため、後続メディアセグメントファイルの送信を効率的に行うことができる。
【0160】
さらに、push-media-adapted指令では、後続メディアセグメントファイルの符号化ビットレートの許容範囲を指定することができる。従って、配信サーバ11は、ネットワーク13の実効帯域に応じて、送信する後続メディアセグメントファイルの符号化ビットレートを許容範囲内で変更させることができる。その結果、再生品質が向上する。
【0161】
即ち、例えば、配信サーバ11と再生クライアント12の間のストリーミングの開始時、帯域推定部57は、まだネットワーク13の実効帯域を推定することができない。従って、この場合、選択部53は、メディアリクエストによりURLが指定されるメディアセグメントファイルの符号化ビットレートとして、比較的低い符号化ビットレートを設定する。よって、この符号化ビットレートを後続メディアセグメントファイルの符号化ビットレートに適用した場合、後続メディアセグメントファイルの符号化ビットレートは、ネットワーク13の実効帯域に適した符号化ビットレートではない。
【0162】
従って、再生クライアント12は、push-media-adapted指令において後続メディアセグメントファイルの符号化ビットレートの許容範囲を指定する。これにより、再生クライアント12は、受信する後続メディアセグメントファイルの符号化ビットレートを、許容範囲内でネットワーク13の実効帯域に適した符号化ビットレートに変更させることができる。その結果、再生品質が向上する。
【0163】
また、再生クライアント12は、ネットワーク13の実効帯域に適した符号化ビットレートの後続メディアセグメントファイルを受信するために、ネットワーク13の実効帯域に応じた指令を配信サーバ11に送信する必要がない。従って、ネットワーク13の実効帯域に適した符号化ビットレートの後続メディアセグメントを効率的に受信することができる。
【0164】
これに対して、メディアリクエストに含まれるプッシュ指令において、後続メディアセグメントファイルの期間のみが指定され、符号化ビットレートの許容範囲が指定されない場合、後続メディアセグメントファイルの期間内でネットワーク13の実効帯域が変化すると、再生クライアント12は、プッシュ指令をキャンセルする必要がある。そして、再生クライアント12は、実行帯域に適した符号化ビットレートを指定するプッシュ指令を含むメディアリクエストを新たに送信し直す必要がある。従って、後続メディアセグメントファイルの期間として長い期間を指定しても、プッシュ指令のキャンセルとメディアリクエストの送信を行う確率が増加するため、メディアセグメントファイルの送信に要する時間を抑制できない場合がある。
【0165】
また、push-media-adapted指令では、符号化ビットレートの許容範囲とともに、後続メディアセグメントファイルの期間を指定することができる。従って、再生クライアント12は、符号化ビットレートの許容範囲を段階的に変化させることができる。再生クライアント12は、符号化ビットレートの許容範囲を段階的に広げることにより、再生品質を緩やかに変化させることができる。
【0166】
なお、push-init-segment指令では、「PUSH_PARAMS」により複数のメディア種別が指定されてもよい。この場合、コード「media」と、複数のメディア種別のMIME-typeがカンマで区切られた記述とがイコールで結ばれる。同様に、push-init-segment指令では、「PUSH_PARAMS」により、ある種類の属性の属性情報が複数指定されてもよい。
【0167】
また、push-init-segment指令やpush-media-adapted指令では、パラメータの値の範囲として、その範囲の下限値または上限値のみが指定されるようにしてもよい。この場合、指定されない下限値または上限値は、指定されないことを示す0とされる。例えば、符号化ビットレートの属性の下限値として400kbpsを指定し、上限値を指定しない場合、「”bitrate”= “400000-0”」が記述され、下限値を指定せず、上限値として8Mbpsを指定する場合、「”bitrate”= “0-8000000“」が記述される。
【0168】
さらに、再生クライアント12は、push-init-segment指令により送信される初期化セグメントファイル以外の初期化セグメント
ファイルの送信を要求するHTTP GETリクエストを送信してもよい。この場合であっても、全ての初期化セグメントファイルの送信をHTTP GETリクエストで要求する場合に比べて、HTTP GETリクエストの数を削減することができる。
【0169】
また、第1実施の形態では、再生クライアント12が、メディアリクエストに必ずpush-media-adapted指令を含めたが、push-media-adapted指令以外のプッシュ指令を含めてもよい。例えば、再生クライアント12は、後続メディアセグメントファイルの期間のみを指定するプッシュ指令をメディアリクエストに含めてもよい。この場合、プッシュ指令に含まれる後続メディアセグメントファイルの期間を示す情報は、例えば、後続メディアセグメントファイルの数(Push-next)、再生時間(Push-time)、もしくは、URLのリストまたはURLのテンプレートとテンプレートを適用する範囲($number$)を指定するパラメータ(Push-template)である。また、この場合、メディアリクエストでURLが指定されたメディアセグメントファイルと同一の符号化ビットレートの後続メディアセグメントファイルが再生クライアント12に送信される。
【0170】
なお、第1実施の形態では、アダプテーションセット要素が、メディア種別、言語、役割の属性を有し、リプレゼンテーション要素が、符号化ビットレートの属性を有するようにした。しかしながら、メディア種別および属性は、アダプテーションセット要素とリプレゼンテーション要素のいずれが有するようにしてもよい。
【0171】
また、第1実施の形態では、属性の種類は、動画コンテンツの符号化ビットレート、言語、および役割(目的)としたが、映像の解像度やフレームレート、音声のサンプリングレートやチャンネル数などであってもよい。
【0172】
例えば、push-init-segment指令で映像の解像度を指定する場合、映像の解像度をパラメータとして示すコード「resolution」と、映像の解像度の属性情報としての縦方向の画素数の範囲とがイコールで結ばれる。映像の解像度の属性情報は、属性が4k解像度である場合2160であり、フルHD解像度である場合1080であり、SD解像度である場合480である。また、MPDファイルでは、映像のリプレゼンテーション要素が、映像の解像度の属性情報をheightアトリビュートとして有する。
【0173】
また、push-init-segment指令で音声のサンプリングレートを指定する場合、音声のサンプリングレートをパラメータとして示すコード「audioSamplingRate」と、音声のサンプリングレートの属性情報としてのサンプリングレートの範囲とがイコールで結ばれる。例えば、音声のサンプリングレートの属性が48kHzである場合、属性情報は48000である。また、MPDファイルでは、音声のリプレゼンテーション要素が、音声のサンプリングレートの属性情報をaudioSamplingRate アトリビュートとして有する。
【0174】
さらに、範囲情報は、許容範囲内の符号化ビットレートをBandwidthとして有する後続メディアセグメントファイルが属するリプレゼンテーション要素を特定する情報(例えば、Representation idなど)や、そのリプレゼンテーション要素に属する後続メディアセグメントファイルのURLの範囲などであってもよい。
【0175】
<第2実施の形態>
(WebSocketプロトコルにおけるフレームの構成例)
本開示を適用した情報処理システムの第2実施の形態の構成は、WebSocketプロトコルに準拠して配信サーバ11と再生クライアント12の間の通信が行われる点を除いて、
図1の情報処理システム10の構成と同一である。従って、以下では、配信サーバ11と再生クライアント12の間の通信についてのみ説明する。
【0176】
図7は、WebSocketプロトコルにおけるフレームの構成例を示す図である。
【0177】
図7に示すように、WebSocketプロトコルにおけるフレームは、ペイロードデータ(Payload Data)部と、それより前のヘッダ部とにより構成される。ヘッダ部は、WebSocketプロトコルの基本機能を実現するためのものである。特定用途の機能は、ペイロード部を用いて実現される。なお、WebSocketプロトコルにおけるフレームの詳細は、非特許文献2等に記載されている。
【0178】
ペイロード部により特定用途の機能を実現する場合、ペイロード部のプロトコルとして、サブプロトコルを定義し、ペイロード部のデータ構造を、サブフレーム(sub-frame)として定義する必要がある。
【0179】
第2実施の形態では、WebSocketプロトコルに準拠して配信サーバ11と再生クライアント12の間の通信が行われる。従って、WebSocketプロトコルにおけるフレームにおいて、MPEG-DASHによるストリーミングを特定用途の機能として実現する必要がある。よって、MPEG-DASHによるストリーミングを実現するためのサブプロトコルであるDASHサブプロトコルとサブフレームが定義される。
【0180】
(サブフレームの構造例)
図8は、第2実施の形態におけるサブフレームの構造例を示す図である。
【0181】
図8のサブフレームは、STREAM_ID,CMD_CODE,F,EXT_LENGTH,EXTENSION等により構成される。STREAM_IDは、WebSocketプロトコルでやり取りされるストリームのIDを示す8ビットの値である。なお、WebSocketプロトコルでは、1つのコネクションで複数のストリーム の送受信が可能である。
【0182】
CMD_CODEは、DASHサブプロトコルで定義されるコマンドの種別を示す8ビットの値である。例えば、このサブフレームがMPDリクエストを送信する際に用いられるサブフレームである場合、CMD_CODEは1であり、メディアリクエストを送信する際に用いられるサブフレームである場合、CMD_CODEは2である。
【0183】
また、このサブフレームがMPDリクエストに対するレスポンスとしてMPDファイルを送信する際に用いられるサブフレームである場合、CMD_CODEは3である。このサブフレームがメディアリクエストに対するレスポンスとしてメディアセグメントファイルを送信する際に用いられるサブフレームである場合、CMD_CODEは4である。さらに、このサブフレームが、プッシュ指令をキャンセルする際に用いられるサブフレームである場合、CMD_CODEは255である。
【0184】
Fは、コマンドごとに規定される3ビットのフラグである。EXT_LENGTHは、EXTENSIONのサイズを示す13ビットの値である。EXTENSIONには、第1実施の形態においてMPDリクエストやメディアリクエストのヘッダに記述されるパラメータがJSON(JavaScript(登録商標) Object Notation)エンコードされた値が格納される。JSONエンコードの詳細は、https://tools.ietf.org/html/rfc4627に記載されている。
【0185】
(EXTENSIONの例)
図9は、MPDリクエストを送信する際に用いられるサブフレームのEXTENSIONの例を示す図であり、
図10は、メディアリクエスト送信する際に用いられるサブフレームのEXTENSIONの例を示す図である。
【0186】
図9および
図10に示すように、EXTENSIONでは、パラメータを示すコードと、そのパラメータの値とがコロンで結ばれることにより、各パラメータの値が指定される。
【0187】
具体的には、
図9のEXTENSIONでは、コード「push-type」と「init-segment」とがコロンで結ばれている。従って、EXTENSIONに記述されるプッシュ指令のタイプとして、push-init-segment指令が指定されている。
【0188】
また、コード「media」と「video/mp4」とがコロンで結ばれているので、メディア種別として、MP4形式でファイル化される映像が指定されている。コード「lang」と「ja」とがコロンで結ばれているので、言語の属性として日本語が指定されている。
【0189】
さらに、コード「role」と「main」とがコロンで結ばれているので、目的の属性情報として「main」が指定されている。コード「bitrate」と「400000-8000000」とがコロンで結ばれているので、符号化ビットレートの属性情報の範囲として、400kbpsから8Mbpsまでの範囲が指定されている。
【0190】
一方、
図10のEXTENSIONでは、コード「push-type」と「segment-adapted」とがコロンで結ばれている。従って、EXTENSIONに記述されるプッシュ指令のタイプとして、push-segment-adapted指令が指定されている。
【0191】
また、コード「duration」と「120」とがコロンで結ばれているので、後続メディアセグメントファイルの期間として、120秒が指定されている。さらに、コード「bitrate」と「400000-8000000」とがコロンで結ばれているので、後続メディアセグメントファイルの符号化ビットレートの許容範囲として、400kbpsから8Mbpsまでの範囲が指定されている。
【0192】
なお、第1実施の形態と同様に、コード「duration」の代わりに、コード「number」が記述されるようにしてもよい。この場合、コード「number」と、後続メディアセグメントファイル数を示す整数値とがコロンで結ばれる。
【0193】
<第3実施の形態>
(本開示を適用したコンピュータの説明)
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0194】
図11は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【0195】
コンピュータ200において、CPU(Central Processing Unit)201,ROM(Read Only Memory)202,RAM(Random Access Memory)203は、バス204により相互に接続されている。
【0196】
バス204には、さらに、入出力インタフェース205が接続されている。入出力インタフェース205には、入力部206、出力部207、記憶部208、通信部209、及びドライブ210が接続されている。
【0197】
入力部206は、キーボード、マウス、マイクロフォンなどよりなる。出力部207は、ディスプレイ、スピーカなどよりなる。記憶部208は、ハードディスクや不揮発性のメモリなどよりなる。通信部209は、ネットワークインタフェースなどよりなる。ドライブ210は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア211を駆動する。
【0198】
以上のように構成されるコンピュータ200では、CPU201が、例えば、記憶部208に記憶されているプログラムを、入出力インタフェース205及びバス204を介して、RAM203にロードして実行することにより、上述した一連の処理が行われる。
【0199】
コンピュータ200(CPU201)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア211に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0200】
コンピュータ200では、プログラムは、リムーバブルメディア211をドライブ210に装着することにより、入出力インタフェース205を介して、記憶部208にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部209で受信し、記憶部208にインストールすることができる。その他、プログラムは、ROM202や記憶部208に、あらかじめインストールしておくことができる。
【0201】
なお、コンピュータ200が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0202】
また、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
【0203】
さらに、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【0204】
また、本開示の実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【0205】
例えば、push-media-adapted指令において、符号化ビットレート以外の属性の範囲が指定されてもよい。
【0206】
なお、本開示は、以下のような構成もとることができる。
【0207】
(1)
複数の属性のコンテンツを管理する管理ファイルと、前記複数の属性のうちの所定の属性のコンテンツの初期化ファイルの送信を、他の情報処理装置に要求する管理ファイル要求情報を送信する送信部
を備える情報処理装置。
(2)
前記管理ファイルは、MPD(Media Presentation Description)ファイルであり、
前記初期化ファイルは、初期化セグメントファイルであり、
前記管理ファイル要求情報は、前記所定の属性を示す属性情報を含む
ように構成された
前記(1)に記載の情報処理装置。
(3)
前記MPDファイルは、複数の種類の前記コンテンツを管理し、
前記管理ファイル要求情報は、前記初期化セグメントファイルに対応する前記コンテンツの種類を示す情報を含む
ように構成された
前記(2)に記載の情報処理装置。
(4)
前記送信部は、所定の符号化ビットレートの所定の再生時刻のコンテンツのファイルと、前記他の情報処理装置により許容範囲内で選択された符号化ビットレートの前記所定の再生時刻より後の再生時刻の前記コンテンツである後続コンテンツのファイルの送信を、前記他の情報処理装置に要求するコンテンツファイル要求情報を送信する
ように構成された
前記(1)に記載の情報処理装置。
(5)
前記管理ファイルは、MPD(Media Presentation Description)ファイルであり、
前記ファイルは、メディアセグメントファイルであり、
前記コンテンツファイル要求情報は、前記許容範囲を示す範囲情報を含む
ように構成された
前記(4)に記載の情報処理装置。
(6)
前記コンテンツファイル要求情報は、前記後続コンテンツの期間を示す情報を含む
ように構成された
前記(5)に記載の情報処理装置。
(7)
前記属性の種類は、前記コンテンツの符号化ビットレート、言語、役割、解像度、サンプリングレート、フレームレート、およびチャンネル数の少なくとも1つである
ように構成された
前記(1)乃至(6)のいずれかに記載の情報処理装置。
(8)
前記送信部は、HTTP(HyperText Transfer Protocol)/2またはWebSocketプロトコルに準拠した送信を行う
ように構成された
前記(1)乃至(7)のいずれかに記載の情報処理装置。
(9)
情報処理装置が、
複数の属性のコンテンツを管理する管理ファイルと、前記複数の属性のうちの所定の属性のコンテンツの初期化ファイルの送信を、他の情報処理装置に要求する管理ファイル要求情報を送信する送信ステップ
を含む情報処理方法。
(10)
複数の属性のコンテンツを管理する管理ファイルと、前記複数の属性のうちの所定の属性のコンテンツの初期化ファイルの送信を要求する管理ファイル要求情報に基づいて、前記管理ファイルと前記所定の属性のコンテンツの初期化ファイルを送信する送信部と
を備える情報処理装置。
(11)
前記管理ファイルは、MPD(Media Presentation Description)ファイルであり、
前記初期化ファイルは、初期化セグメントファイルであり、
前記管理ファイル要求情報は、前記所定の属性を示す属性情報を含む
ように構成された
前記(10)に記載の情報処理装置。
(12)
前記MPDファイルは、複数の種類の前記コンテンツを管理し、
前記管理ファイル要求情報は、前記初期化セグメントファイルに対応する前記コンテンツの種類を示す情報を含む
ように構成された
前記(11)に記載の情報処理装置。
(13)
所定の符号化ビットレートの所定の再生時刻のコンテンツのファイルと、前記情報処理装置により許容範囲内で選択された符号化ビットレートの前記所定の再生時刻より後の再生時刻の前記コンテンツである後続コンテンツのファイルの送信を要求するコンテンツファイル要求情報と、ネットワークの帯域とに基づいて、前記許容範囲内の符号化ビットレートから、前記後続コンテンツの符号化ビットレートを選択する選択部
をさらに備え、
前記送信部は、前記所定の符号化ビットレートの前記所定の再生時刻のコンテンツのファイルと、前記選択部により選択された前記符号化ビットレートの前記後続コンテンツのファイルを送信する
ように構成された
前記(10)に記載の情報処理装置。
(14)
前記管理ファイルは、MPD(Media Presentation Description)ファイルであり、
前記ファイルは、メディアセグメントファイルであり、
前記コンテンツファイル要求情報は、前記許容範囲を示す範囲情報を含む
ように構成された
前記(13)に記載の情報処理装置。
(15)
前記コンテンツファイル要求情報は、前記後続コンテンツの期間を示す情報を含む
ように構成された
前記(14)に記載の情報処理装置。
(16)
前記属性の種類は、前記コンテンツの符号化ビットレート、言語、役割、解像度、サンプリングレート、フレームレート、およびチャンネル数の少なくとも1つである
ように構成された
前記(10)乃至(15)のいずれかに記載の情報処理装置。
(17)
前記送信部は、HTTP(HyperText Transfer Protocol)/2またはWebSocketプロトコルに準拠した送信を行う
ように構成された
前記(10)乃至(16)のいずれかに記載の情報処理装置。
(18)
情報処理装置が、
複数の属性のコンテンツを管理する管理ファイルと、前記複数の属性のうちの所定の属性のコンテンツの初期化ファイルの送信を要求する管理ファイル要求情報に基づいて、前記管理ファイルと前記所定の属性のコンテンツの初期化ファイルを送信する送信ステップと
を含む情報処理方法。