JP6861484B2 - 情報処理装置及びその制御方法、コンピュータプログラム - Google Patents

情報処理装置及びその制御方法、コンピュータプログラム Download PDF

Info

Publication number
JP6861484B2
JP6861484B2 JP2016145694A JP2016145694A JP6861484B2 JP 6861484 B2 JP6861484 B2 JP 6861484B2 JP 2016145694 A JP2016145694 A JP 2016145694A JP 2016145694 A JP2016145694 A JP 2016145694A JP 6861484 B2 JP6861484 B2 JP 6861484B2
Authority
JP
Japan
Prior art keywords
region
interest
stream
image data
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016145694A
Other languages
English (en)
Other versions
JP2018019143A (ja
Inventor
智哉 酒井
智哉 酒井
健介 安間
健介 安間
和矢 谷口
和矢 谷口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2016145694A priority Critical patent/JP6861484B2/ja
Priority to PCT/JP2017/022434 priority patent/WO2018020901A1/ja
Publication of JP2018019143A publication Critical patent/JP2018019143A/ja
Priority to US16/253,811 priority patent/US11202110B2/en
Application granted granted Critical
Publication of JP6861484B2 publication Critical patent/JP6861484B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234345Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/437Interfacing the upstream path of the transmission network, e.g. for transmitting client requests to a VOD server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は情報処理装置及びその制御方法、コンピュータプログラムに関し、特に、画像データの通信を行うデータ通信技術に関する。
近年、音声データや映像データ等により構成されるストリーミング形式のコンテンツをユーザにリアルタイムに配信する配信システムが提供されている。このような配信システムにより、ユーザは、自身の端末装置を介して、ライブ映像等の所望のコンテンツをリアルタイムで楽しむことができる。
映像データの中の着目領域(Region of Interest、以下「ROI」と記す。)の映像データを高精細に配信することが知られている。この構成によると、映像データをあらかじめタイル状に領域分割し、映像全体のデータとユーザの着目するオブジェクトが映り込む領域に対応するタイルの高精細データを送信することで、ROI部の映像を高精細にした映像データを配信することが可能になる。
特許文献1には、あらかじめ所定数の領域に分割された映像の中から、ユーザの視聴対象の領域に対応するデータを抽出して送信することが記載されている。
特開2011−24018号公報
特許文献1の構成では、着目領域とその周辺の領域を一つのビットストリームとして送信する。しかし、このような構成においては、周辺領域を一つのビットストリームに含んだ結果、ネットワークの帯域幅を消費してしまい、着目領域の送信が遅れてしまう場合があった。その結果、ユーザは映像データをスムーズに視聴することができない場合があった。
本発明は上記課題に鑑みなされたものであり、着目領域の画像データと非着目領域の画像データを通信する場合において、着目領域の画像データの通信に係る遅延を低減することが可能な技術を提供することを目的とする。
上記目的を達成するため、本発明による情報処理装置は以下の構成を備える。即ち、複数の部分領域に空間的に分割された画像データをサーバ装置から受信する情報処理装置であって、
前記画像データに対応する画像における着目領域を指定する指定手段と、
前記サーバ装置との間で、論理的な通信路であるコネクションを確立すると共に、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームと、が異なるストリームとなるように、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームとを含む複数のストリームを、前記サーバ装置との間の前記コネクションに基づく複数のストリームとして確立する確立手段と、
前記着目領域の画像データが前記部分領域よりも優先的に取得されるように前記複数のストリームを制御する制御手段と、
前記制御手段により制御された前記複数のストリームを用いて前記サーバ装置からプッシュ通信により画像データを受信する受信手段と、
前記サーバ装置との間のネットワークの帯域を取得する帯域取得手段と、
前記サーバ装置に対してメタデータのみをプッシュするように要求することにより前記画像データの部分領域のビットレートを取得するビットレート取得手段と、
前記ネットワークの帯域と前記部分領域のビットレートとの比較に基づいて、受信する前記画像データの部分領域の画質を判定する判定手段と
を備え
前記受信手段は、前記判定手段により判定された画質の部分領域の画像データを受信する。
本発明によれば、着目領域の画像データと非着目領域の画像データを通信する場合において、着目領域の画像データの通信に係る遅延を低減することが可能となる。
通信システムの構成図 映像データのレイヤ、タイル構成の一例を示す図 クライアントのハードウェア構成例を示すブロック図 クライアントの機能構成例を示すブロック図 サーバのハードウェア構成例を示すブロック図 サーバの機能構成例を示すブロック図 クライアントの動作を示すフローチャート 映像データのタイルとストリームの識別子との対応関係を示す図 クライアントの動作を示すフローチャート クライアントの動作を示すフローチャート クライアントの動作を示すフローチャート サーバの動作を示すフローチャート サーバの動作を示すフローチャート サーバの動作を示すフローチャート クライアントの動作を示すフローチャート サーバの動作を示すフローチャート 映像データの中で被写体が移動した様子を示す図
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<実施形態1>
以下、本発明の実施形態に係る通信装置、通信システムについて、添付の図面を参照しながら詳細に説明する。以下の実施形態は特許請求の範囲に関る本発明を限定するものではなく、また、以下の実施形態で説明されている特徴の組み合わせの全てが本発明に必須のものとは限らない。
(通信システムの構成)
図1は、通信システムの構成の一例を示す図である。通信システムは、複数の部分領域に空間的に分割された画像データを提供するサーバ(サーバ装置)102と、画像データを受信して再生するクライアント(クライアント装置)101とを備える。クライアント101は、例えば、DTV(Digital TV)、HMD(HeadMount Display)、スマートフォン、タブレット等の、表示機能を備える通信装置である。クライアント101は、スマートフォン、タブレット、PC等の情報処理装置上の、Webブラウザや、情報処理装置にインストールされたアプリケーションであってもよい。サーバ102は、デジタルカメラ、デジタルビデオカメラ、ネットワークカメラ、プロジェクタ、携帯電話、スマートフォン、PC、及びサーバ装置等の情報処理装置であり、画像データとしての映像データの送信元であるサーバ装置として機能する。本実施形態では、サーバ102を1台のPCによって実現しているが、クラウド上で分散して配置されていてもよい。ネットワーク103には、クライアント101とサーバ102とが接続される。本実施形態は、ネットワーク103の形態により限定されない。例えば、ネットワーク103は、LAN(Local Area Network)やWAN(Wide Area Network)、公衆移動体通信であるLTE(Long Term Evolution),又はそれらの組み合わせにより接続される。LANとしては、例えばEthernet(登録商標)に則った有線LANや、IEEE802.11シリーズに則った無線LANなどが用いられる。IEEEとは、Institute of Electrical and Electronics Engineersの略称である。WANとしては、例えばインターネットなどが用いられる。なお、クライアント101とサーバ102は、ネットワーク103を介さずに、直接接続されてもよい。例えば、無線アドホックネットワークを用いて、クライアント(通信装置)101とサーバ102とが通信するようにしてもよい。本実施形態では、画像データとして映像データ(動画像データ)を送受信する例を説明するが、静止画像を送受信するようにしてもよい。
本実施形態においては、通信プロトコルとしてHTTP/2を例に挙げて説明するが、これに限定されるものではなく、SPDY(スピーディー)、QUICなどでもよい。QUICとは、Quick UDP Internet Connectionsの略称である。また、一つのコネクション上で複数の論理的ストリームを処理する他のプロトコルであってもよい。
HTTP(Hyper Text Transfer Protocol)とは、インターネットの標準技術として、一般に広く利用されているアプリケーション層のプロトコルの一つである。IETF(Internet Engineering Task Force)では、HTTP/1.1の次の規格としてHTTP/2が提案されている。HTTP/2においては、サーバ装置とクライアント装置との間でコネクションを確立し、そのコネクション上においてストリームと呼ぶ独立した論理的な通信シーケンス(通信路)を複数構築することができる。そして、そのストリーム毎にサーバ装置とクライアント装置の間でメッセージを送受信することができる。
HTTP/1.1においては、クライアント装置とサーバ装置との間の通信シーケンスの多重化を可能にするために、HTTPパイプラインという枠組みが採用されていた。しかし、HTTPパイプラインでは、サーバはリクエストの順序通りにレスポンスを返さなければならないという制約があった。これに対して、HTTP/2の各ストリームにおいては、それぞれ独立にリクエストとレスポンスを通信することができ、サーバ装置は、リクエストの順序にかかわらず、応答が可能なものからクライアント装置へレスポンスを返すことができる。したがって、HTTP/2のストリームは、HTTPパイプラインと比較して、ストリーム間の独立性が高まっているといえる。
また、HTTP/2では、クライアント装置はストリームに対して優先度を設定することができる。ストリームに優先度が設定されると、サーバ装置は、より高い優先度が設定されたストリームを優先的に処理してより早くレスポンスを返す。したがって、優先度を適切に設定することで、クライアント装置におけるユーザ体験の質を高めることが可能となっている。さらに、HTTP/2では、クライアント装置のリクエストなしにサーバ装置からデータを送信するプッシュ通信などの仕組みが追加されている。
本実施形態は、後述するサーバ102のセグメント生成部514において、MPEG−DASHで規定されているMPD(Media Presentation Description)を利用する例を説明する。なお、MPEG−DASHのMPDに限らず、HLS(Http Live Streaming)などの、プレイリスト記述方式を有するものでもよい。後述するように、プレイリストとは、サーバ102が提供する映像データの内容、より具体的には、映像データの空間的な分割構成を示す情報である。
MPEG−DASH、HLSは、端末装置の能力や端末装置が置かれた通信状況に応じて、動的に取得するストリームを変更する方式である。DASHはDynamic Adaptive Streaming over HTTPの略称であり、HLSは、Http Live Streamingの略称である。近年、スマートフォンやタブレットのような端末の普及により、様々な端末装置によりいつでもどこでもライブ映像等のストリーミングコンテンツを楽しみたいという需要が高まって来ている。MPEG−DASH、HLSは、このような要求を実現するために規定されたものである。これらの方式では、映像データを細かい時間単位のセグメントに分割し、セグメントを取得するためのURL(Uniform Resource Locator)をプレイリストと呼ばれるファイルに記述する。受信装置は初めにこのプレイリストを取得し、プレイリストに記述されている情報を用いて所望の映像データを取得する。プレイリスト中に複数のバージョンの映像データセグメントに対するURLを記載することで、受信装置は自身の能力や通信環境に応じて、最適なバージョンの映像データセグメントを取得することができる。
(セグメント)
次に、図2を用いて取得するセグメントの具体例について説明する。本実施形態では、低画質層(ベースレイヤ)1001と高画質層(エンハンスメントレイヤ)1002を有する映像データの視聴をユーザが行っている場合の例を説明する。
1003、1005、1007は、時系列順に並んだ映像データの各時刻での再生された状態を示す。時刻iの場合、ユーザは1003で示される低画質層の映像データを視聴している。着目領域は1004に示される太実線で囲まれた領域(タイル番号11)である。また、周辺領域(隣接領域)は着目領域の周辺に存在する部分領域であり、図2の例では点線で囲まれた領域(タイル7、10、12、15)である。時刻jの場合、ユーザは1005で示される低画質層の映像データ(タイル番号10)を視聴している。着目領域は1006に示される太実線で囲まれた領域(タイル番号10)である。また周辺領域は、点線で囲まれた領域(タイル番号5、6、7、9、11、13、14、15)である。時刻kの場合、ユーザは1007で示される高画質層の映像データ(タイル番号26)を視聴している。また、周辺領域は、点線で囲まれた領域(タイル番号21、22、23、25、27、29、30、31)である。
なお、本実施形態では、着目領域が1つのタイルとなっているが、これに限定されず、複数のタイルを着目領域としてもよい。
また、本実施形態では、低画質レイヤと高画質レイヤの2つのレイヤがある例を説明するがこれに限定されない。例えば、低画質、中間画質、高画質を含む3つ以上のレイヤを有するようにしてもよい。
また、本実施形態では、低画質レイヤと高画質レイヤで領域の分割数が同じであるが、これに限定されない。例えば、低画質レイヤは2×2の4分割で、高画質レイヤは4×4の16分割であってもよい。また、低画質レイヤは1つの領域で、高画質レイヤは複数の領域に分割されていてもよい。また、複数のレイヤがあって、それぞれのレイヤの領域が1つであってもよい。
図2を参照して説明したような、映像データを符号化する符号化形式として、SVC、L−HEVCなどのスケーラブル符号化方式があるが、これらの符号化方式に限定されない。SVCはScalable Video Codingの略称であり、L−HEVCはLayered-High Efficiency Video Codingの略称である。また、レイヤが1つの場合、符号化方式としてはHEVC(High Efficiency Video Coding)のように映像を領域分割可能なものを利用できる。
(クライアントのハードウェア構成)
図3は、クライアント101のハードウェア構成例を示すブロック図である。図3において、制御部201は、クライアント101における動作を統括的に制御する中央演算処理装置(CPU)であり、システムバス211を介して、各構成部(202、205、206、208〜210)を制御する。
記憶部202は、各種データを記憶し管理する。記憶部202は、RAM(書込み可能メモリ)、ROM(読出し専用メモリ)、ストレージ(ハードディスク、SSD等)により実現される。表示部205は、例えば、液晶パネルを有し、制御部201の制御下で各種表示を行う。操作部206は、ユーザからの操作を受け付ける。操作部206は、例えば、タッチパネル、ポインティング装置、キーボード等により実現される。復号化部208は、映像データの復号化処理を行う。通信部209は、無線LANインターフェース210を制御し、各種通信処理を制御する。210は、無線LANインターフェースである。なお、本実施形態では、無線LANインターフェースを介して、無線LAN通信を行っているが、これに限らず、有線LANインターフェース、または、公衆移動体通信インターフェースを介した通信であってもよい。また、これらの通信方式に限定されず、Bluetooth(登録商標)などの他の無線方式であっても実現できる。また、これらのインターフェースを複数備えていてもよい。なお、本実施形態では、映像データを表示する表示部205が1つのハードウェアに含まれているが、表示部は、例えばHDMI(登録商標)などで接続された他の装置であってもよい。操作部206等の他の構成要素も同様である。
(クライアントの機能構成)
図4は、クライアント101の機能構成例を示すブロック図である。なお、本実施形態においては、以下に示す各機能ブロックの機能は、制御部201(CPU)が記憶部202に格納されているソフトウェアプログラム(コンピュータプログラム)を実行することにより実施される。但し、各機能ブロックに含まれる一部または全部がハードウェア化されていてもよい。
図4において、通信制御部301は、通信部209を介して通信を制御する。表示制御部302は、表示部205を介して、サーバ102から取得した映像データを表示する。表示制御部302は、セグメント解析部306がデコードしたセグメントを、映像データとして表示部205に表示させる。また、表示制御部302は、ユーザからの操作を受け付けるためのUIを表示する。操作制御部303は、操作部206を制御し、ユーザからの操作を受け付ける。記憶制御部304は、記憶部202を制御し、処理データ、または映像データ等のデータを記憶、又は削除する。
TCP/IP通信制御部305は、通信部209を利用して、サーバ102との間で、TCP/IP方式の通信制御を行う。なお、本実施形態ではTCP/IP通信を利用する例を示すが、これに限らず、UDP(User Datagram Protocol)を利用してもよい。セグメント解析部306は、サーバ102から取得した映像データであるセグメントをデコードする。
プレイリスト解析部307は、サーバ102から取得したプレイリストを解析する。サーバ102が生成するプレイリストは、MPEG−DASHで規定されているMPDに従う。
プレイリストには、特定のタイミングに、特定の画質の特定の領域のセグメントを取得するためにアクセスするURLが記述されている。また、プレイリストには、各レイヤのそれぞれの領域の、ビットレート、領域の位置を示す座標、領域の幅、領域の高さなどの情報が記述されている。また、プレイリストには、レイヤの数、各レイヤの映像データ全体の幅、高さ、などの映像データ全体に関する情報が記述されていてもよい。なお、本実施形態は、それぞれのタイルの情報をMPDに記述してクライアントに渡しているが、この方式に限定されない。例えば、これらのパラメータをHTMLファイルや、javascriptファイルなどのファイルを解析して取得してもよい。
HTTP/2通信処理部308は、HTTP/2(Hyper Text Transfer Protocol Version 2)において規定されるクライアントとしての通信処理を行う。
ストリーム設定部309は、ストリームを制御するための設定を行う。ストリーム設定部309は、HTTP/2通信処理部308を介して、ストリームに、優先度を設定する。
クライアント101は、ストリームに優先度を設定するために、プライオリティフレームを送信する。ストリーム設定部309は、着目領域を取得するストリーム、周辺領域を取得するストリーム、その他の領域を取得するストリームに対して、優先度を設定することができる。ストリーム設定部309は、着目領域の優先度を周辺領域と同等またはそれ以上の値に設定する。例えば、着目領域を取得するストリームに優先度16を設定し、周辺領域を取得するストリームには優先度8を設定し、その他の領域を取得するストリームに対しては優先度1を設定する。着目領域の優先度を周辺領域よりも高く大きな値に設定することで、着目領域を優先して取得するように設定できる。その結果、着目領域をスムーズに表示することができる。なお、優先度の値は本例で紹介した値に限定されない。また、複数のストリームのうち少なくとも1つに対して優先度の設定をしても良い。
本実施形態では優先度を設定する例を説明するが、これに限定されず、ストリーム間の依存関係を設定してもよい。例えば、周辺領域を取得するストリームは、着目領域を取得するためのストリームに依存するように設定する。このように設定すると、着目領域を取得するまでは、周辺領域のストリームでの送信は行われないようになる。その結果、着目領域の取得が完了するまで、周辺領域の取得に帯域が使われないので、着目領域を取得しスムーズに表示することができる。
また、ストリーム設定部309は、ストリーム毎に、プッシュポリシーを設定する。HTTP/2通信処理部308は、ストリーム設定部309が設定したプッシュポリシーをサーバに通知する。
プッシュポリシーとは、クライアントとサーバの間で、サーバのプッシュの振る舞いについて交渉を行う公知の技術である。プッシュポリシーは、Accept-Push-Policy Header Field(https://tools.ietf.org/html/draft-ruellan-http-accept-push-policy-00)に詳細な記述がある。
クライアントはサーバに対して、“accept−push−policy”というヘッダフィールドを送信する。クライアントはこのヘッダフィールドに、クライアントにとって好ましいサーバの振る舞いを設定して送信する。サーバは、クライアントから受け取ったプッシュポリシーに対して、サーバが選択したものを“push−policy”というヘッダフィールドに設定して送信する。本実施形態では、プッシュポリシーをストリーム毎に設定することで、より詳細なストリームの制御が可能になる。本実施形態では、クライアント101はHTTPリクエストにaccept−push−policyというプッシュポリシーを要求するためのヘッダフィールドを使用するが、ヘッダフィールドの名前はこれに限定されない。また、accept−push−policyには、ひとつまたは複数のプッシュポリシーを含めることができる。
クライアント101は、サーバ102に対してプッシュ送信をしないように要求することができる。この場合、クライアント101は、“none“というプッシュポリシーを使用する。クライアント101は、HTTPのリクエストを送信する時に、“accept−push−policy:none”と記述することで、サーバ102の該当するストリームに対してプッシュを行わないように要求する。着目領域以外の領域に対してはプッシュ送信をしないように設定することで、着目領域をスムーズに取得できるようになる。
クライアント101は、サーバ102に対してHTTPリクエストのレスポンスに含まれるメタデータのみをプッシュするように要求することができる。クライアント101は、HTTP Headリクエストを送信した場合のレスポンス、即ちメタデータのみをプッシュで受信できるようになる。クライアント101は、HTTPのリクエストを送信する時に、“accept−push−policy:head”と記述することで、サーバ102の該当するストリームに対して、メタデータのみをプッシュするように要求する。これにより、クライアント101は、事前にサーバ102がプッシュしてくるセグメントのサイズを取得することができる。これにより、クライアント101は、必要なネットワークの帯域をより高い精度で計算することができるようになる。更に詳細なストリームの制御を行うことができるようになる。
クライアント101は、サーバ102のデフォルトの振舞いを使用するように要求することができる。クライアント101は、HTTPリクエストを送信する時に、“accept−push−policy:default”と記述する。
また、クライアント101は、プッシュポリシーの仕組みを利用して、送信したストリームが、着目領域、周辺領域、または、それ以外であるかを設定することができる。クライアント101は、該当するストリームを着目領域であると設定する場合、HTTPリクエストを送信する時に、“accept−push−policy:tile:p”と記述する。これにより、サーバ102は、該当するストリームがクライアント101の着目領域であると判断できる。そして、サーバ102は、着目領域を優先してプッシュ送信することが可能となる。その結果、着目領域の映像データをスムーズに取得できる可能性が高まる。
クライアント101は、該当するストリームを周辺領域であると要求する場合、HTTPリクエストを送信する時に、“accept−push−policy:tile:s“と記述する。これにより、サーバ102は、該当するストリームがクライアント101の周辺領域であると判断できる。これにより、ネットワークの帯域幅に余裕がある場合に周辺領域もスムーズに取得できる可能性が高まる。周辺領域に対して、優先度(ストリームの優先度とは別)をつけてもよい。例えば着目領域が1つのタイルで、その周囲にある8つのタイルが周辺領域である場合、上下左右の4つのタイルと、斜め方向にある4つのタイルに対して異なる優先度をつけてもよい。
クライアント101は、該当するストリームが、着目領域でも周辺領域でもない場合、HTTPリクエストを送信する時に、“accept−push−policy:tile:n“と記述する。これにより、サーバ102は、該当するストリームがクライアント101の着目でも周辺領域でもないと判断できる。これにより、サーバ102は、クライアントの必要性が低い領域をプッシュしないように判断することができる。
クライアント101は、サーバ102から、要求したプッシュポリシーへの応答を受信する。ストリーム設定部309は、サーバ102から受信したプッシュポリシーを、ストリームのプッシュポリシーとして設定する。
動画情報管理部310は、プレイリスト解析部307が解析した結果を管理する。
ストリームID管理部311は、HTTP/2のストリーム識別子(ストリームID)と、映像データを構成する領域とを紐づけて管理する。ストリームID管理部311は、映像データを構成するレイヤ毎のそれぞれの領域について、HTTP/2通信処理部308が作成したストリームのIDを紐づけて記憶する。また、サーバ102から送信された予約要求(PUSH_PROMISE)に基づき、各レイヤの領域毎に、プッシュを受信するためのストリームのIDも記憶する。ストリームID管理部311の処理により、クライアント101が主導的にセグメントを取得するストリームと、サーバ102からプッシュされたセグメントを受信するためのストリームを管理することができるようになる。その結果、ストリームの細かな制御が可能になる。
ウィンドウサイズ計算部313は、取得するセグメントのビットレートとセグメント長をもとに、必要となるHTTP/2ウィンドウサイズを計算する。なお、本実施形態では、HTTP/2上でウィンドウサイズを制御する例を説明するが、TCPウィンドウサイズを制御するようにしてもよい。
帯域取得部314は、クライアント101とサーバ102間のネットワークの帯域幅を取得する。帯域取得部314は、各種計測プロトコルを使用し、ネットワークの帯域幅を実測してもよいし、サーバ102との通信履歴や、セグメントの送信履歴から、帯域を計算して取得してもよい。例えば、過去に2MByteのセグメントを、2秒で取得している場合、ネットワークの帯域幅が少なくとも(2MByte×8bit)÷2秒=8Mbpsという値を取得する。
着目領域取得部315は、ユーザの着目領域を取得する。クライアント101は、ユーザの着目領域をユーザの操作から取得する。なお、クライアント101がスマートフォン等の加速度センサの機能を持っている装置の場合、ユーザがスマホを傾けた位置から、着目領域を取得してもよい。なお、クライアント101がHMD等の装置の場合、ユーザの視点の角度、加速度センサ等の各種情報、または、これらを組み合わせて、ユーザが着目している領域を取得してもよい。
(サーバのハードウェア構成)
図5は、サーバ102のハードウェア構成例を示すブロック図である。図5において、制御部401は、サーバ102における動作を統括的に制御する中央演算処理装置(CPU)であり、システムバス411を介して、各構成部(402、405〜409)を制御する。
記憶部402は、各種データを記憶し管理する。記憶部402は、RAM(書込み可能メモリ)、ROM(読出し専用メモリ)、ストレージ(ハードディスク、SSD等)により実現される。表示部405は、例えば液晶パネルを有し、制御部401の制御下で各種表示を行う。操作部406は、ユーザからの操作を受け付ける。操作部406は、例えば、タッチパネル、ポインティング装置、キーボード等により実現される。撮像部407は、映像データの撮像を行う。符号化部408は、映像データの符号化処理を行う。通信部209は、有線LANインターフェース410を制御し、各種通信処理を制御する。410は、有線LANインターフェースである。なお、本実施形態では、通信制御部は有線LANインターフェースを制御しているが、これに限らず、無線LANインターフェース、または、公衆移動体通信インターフェースを制御して通信を行ってもよい。また、これらの通信方式に限定されず、Bluetooth(登録商標)など他の通信方式であっても実現できる。なお、本実施形態では、サーバ102が、撮像部407を含んでいるが、サーバ102は、他の装置から映像データを取得してもよい。なお、本実施形態では、サーバ102が、符号化部408を含んでいるが、サーバ102は他の装置から符号化済みのデータを取得してもよい。表示部405、操作部406等の構成要素はケーブル等により接続された他の装置であってもよい。
(サーバの機能構成)
図6において、通信制御部501は、通信部409を介して通信を制御する。表示制御部502は、表示部405を介して、ユーザからの操作を受け付けるためのUIを表示してもよい。操作制御部503は、操作部406を制御し、ユーザからの操作を受け付ける。記憶制御部304は、記憶部402を制御し、処理データ、または映像データ等のデータを記憶、又は削除する。
TCP/IP通信制御部505は、通信部409を利用して、クライアント101との間で、TCP/IP方式の通信制御を行う。なお、本実施形態ではTCP/IP通信を利用する例を示すが、これに限らず、UDP(User Datagram Protocol)を利用してもよい。HTTP/2通信処理部506は、HTTP/2(Hyper Text Transfer Protocol Version 2)において規定されるサーバとして通信処理を行う。
ストリーム設定部509は、クライアント101から受信したHTTP/2のプライオリティフレームに基づき、ストリームに優先度を設定する。
また、ストリーム設定部509は、クライアント101から受信したHTTPリクエストに含まれるプッシュポリシーをもとに、ストリームのプッシュポリシーを設定する。
ストリーム設定部509は、クライアント101へのHTTPレスポンスに、サーバ102が選択したプッシュポリシーを記述する。本実施形態では、サーバ102は、HTTPレスポンスにpush−policyというプッシュポリシーを記述するためのヘッダフィールドを使用する。本実施形態では、プッシュポリシーを使用しているが、これに限らず、ストリームに対してプッシュするかどうかを通知する方式を用いれば、本実施形態は実現可能である。
サーバ102は、プッシュ送信しないように、クライアント101に通知する。この場合、サーバ102は、“none”というプッシュポリシーを使用する。サーバ102は、HTTPのレスポンスを送信する時に“push−pulicy:none”と記述することで、クライアント101に、該当するストリームではプッシュを行わないことを通知する。
サーバ102は、HTTPレスポンスのメタデータのみをプッシュするように通知する。
サーバ102は、HTTP Headリクエストへのレスポンス、即ちメタデータのみをプッシュで送信する。サーバ102は、HTTPレスポンスを送信する時に、“push−pulicy:head”と記述することで、該当するストリームに対してメタデータのみをプッシュすることを通知する。
サーバ102は、クライアントからデフォルトのプッシュポリシーを使用するように通知を受けた場合、サーバが使用するプッシュポリシーを選択してクライアントに通知する。
サーバ102は、クライアント101から、着目領域を設定するプッシュポリシーを要求された場合、該当するストリームに紐づいている領域を、着目領域であると判断する。
サーバ102は、クライアントにHTTPレスポンスを送信する時に“push−pulicy:tile:p”と記述し、クライアントの要求を受け付けた応答を行う。
サーバ102は、クライアント101から、周辺領域を設定するプッシュポリシーを要求された場合、該当するストリームに紐づいている領域を周辺領域であると判断する。サーバ102は、クライアントにHTTPレスポンスを送信する時に“accept−push−policy:tile:s”と記述し、クライアントの要求を受け付けた応答を行う。
サーバ102は、クライアント101から、該当するストリームが着目領域でも周辺領域ないという設定を行うプッシュポリシーを要求された場合、該当するストリームに紐づいている領域を、着目領域でも周辺領域でもないと判断する。サーバ102は、クライアントにHTTPレスポンスを送信する時に“accept−push−policy:tile:n”と記述し、クライアントの要求を受け付けた応答を行う。
なお、プッシュポリシーの種類、および、記述方式は、本実施形態で紹介したものに限定されない。なお、クライアント101が複数のプッシュポリシーを要求してきた場合、サーバ102はサーバが対応しているプッシュポリシーを選択する。また、クライアント101が要求してきたプッシュポリシーにサーバ102が対応していない場合、サーバ102は自身が対応しているプッシュポリシーを通知してもよい。なお、サーバ102が、該当するストリームに対してプッシュを行わない場合、クライアントからのプッシュポリシーの要求に関わらず、“none”を送信してもよい。なお、サーバ102は、クライアントからのプッシュポリシーの送信がない場合でも、自身のポリシーを通知してもよい。
着目領域取得部510は、クライアント101が着目領域として選んでいる領域を取得する。クライアント101がHTTPリクエストを送信してきたセグメントに対応するタイルを着目領域として取得する。なお、この方式に限らず、プッシュポリシーから、着目領域を判断してもよい。また、クライアントからのHTTPリクエストに含まれるHTTPヘッダフィールドを使用して、着目領域を取得してもよい。
動画情報管理部511は、プレイリスト生成部515が生成したプレイリストに関連する映像データを構成する領域の数、映像データのレイヤの数、映像データの幅と高さ、それぞれの領域の幅と高さ、それぞれの領域のビットレート等の各種情報を管理する。ストリームID管理部512は、HTTP/2のストリーム識別子(ストリームID)と、映像データを構成する領域とを紐づけて管理する。ストリームID管理部512は、サーバ102が送信した予約要求(PUSH_PROMISEフレーム)に基づき、各レイヤの領域毎に、プッシュを送信するためのストリームIDも記憶する。帯域取得部513は、クライアント101とサーバ102間のネットワークの帯域幅を取得する。帯域取得部513は、各種計測プロトコルを使用して、ネットワークの帯域幅を実測してもよいし、クライアント101との通信履歴、セグメントの送信履歴から、帯域を計算して取得してもよい。セグメント生成部514は、符号化部408を介して、撮像部407が取得した映像データをエンコードする。そして、セグメント生成部514は、符号化部408で符号化された映像データをもとに、映像データの送信単位であるセグメントを生成する。なお、本実施形態におけるセグメントのファイルフォーマットとしてはISOBMFF(ISO Base Media File Format)を利用するが、これに限らずMPEG2TSや、その他の方式でもよい。プレイリスト生成部515はセグメント生成部514が作成したセグメントへのアクセスを可能とするURL(Uniform Resource Locator)を記載したプレイリストを生成する。
プレイリスト生成部515は、クライアントが、映像データの取得に使用するプレイリストを生成する。プレイリスト生成部515は、生成するプレイリストに、また、プレイリストには、各レイヤのそれぞれの領域の、ビットレート、領域の位置を示す座標、領域の幅、領域の高さなどの情報が記述されている。
また、プレイリストには、レイヤの数、各レイヤの映像データ全体の幅、高さ、などの映像データ全体に関する情報が記述されていてもよい。なお、本実施形態では、各レイヤの領域毎の情報を、プレイリストに記述しているが、これに限定されず、HTMLファイルや、javascriptファイルに記述してもよい。
(クライアントの動作)
●クライアント全体処理
次に、以上のような構成を備えた本実施形態のクライアント101、サーバ102の動作について説明する。まず、クライアント101によるセグメントの取得動作(全体処理)ついて、図7のフローチャートを参照しながら詳細に説明する。図7の各ステップは、クライアント101の制御部201(CPU)の制御に基づき実行される。
本実施形態では、図2で示すような低画質、高画質のレイヤと領域をもつ映像データについて説明する。なお、領域の数は図2で示すような分割数に限定されない。例えば、2×2、2×3、4×4というように領域が分割されていてもよい。
まず、HTTP/2通信処理部308は、サーバ102との間に、HTTP/2の接続を確立する(S601)。
クライアント101は、HTTP/2通信処理部308を介して、サーバ102からプレイリストを取得する(S602)。プレイリスト解析部307は、取得したプレイリストを解析する(S603)。プレイリスト解析部307は、プレイリストを解析して、各レイヤの各領域に対応するビットレート、領域の位置を示す座標、領域の幅、領域の高さ等の情報を取得する。動画情報管理部310は、プレイリスト解析部307が取得した情報を記憶する。
クライアント101は、HTTP/2通信処理部308を介して、各レイヤの領域毎に、HTTP/2のストリームを作成する(S604)。クライアント101は、各レイヤの各領域に、HTTP/2のストリームを作成する。ストリームID管理部311は、各レイヤの各領域と、ストリームのIDを紐づけて記憶する(S605)。また、ストリームID管理部311は、サーバ102から、プッシュ用のストリームを予約する予約要求(PUSH_PROMISE)を受け取った場合、プッシュを受信するためのストリームのIDも、各レイヤの各領域と紐づけて記憶する。
HTTP/2の標準では、予約要求はクライアントが作成したストリームに関連付けられている。このため、プッシュ予約要求が関連付けられているストリームから、プッシュ受信用のストリームが、どの領域に該当するかを特定する。
図8は、ストリームID管理部311が管理するストリームIDと各レイヤの領域毎の紐づけの例を示す。図8(A)は、高画質層の9個のタイルに分割された領域を表す。分割された領域には、それぞれタイル番号a〜iが割り当てられている。図8(B)の表では、図8(A)のタイル分割されたそれぞれの領域に対して、HTTP/2のストリームIDを割り当てた例を示している。図8(B)のa(11、12)は、タイルaに対して、クライアント101がセグメント取得のためにストリームID11のストリームを作成し、サーバ102がプッシュでセグメントを送信するためにID12のストリームを作成していることを示す。図8(C)は、低画質層の9個のタイルに分割された領域を表す。分割された領域には、それぞれタイル番号j〜rが割り当てられる。図8(D)では、図8(C)のタイル分割されたそれぞれの領域に対して、HTTP/2のストリームIDを割り当てた例を示している。
なお、本実施形態では、クライアント101は、各レイヤの領域毎にストリームを作成しているが、これに限定されない。例えば、複数の領域に対して、1つのストリームを割り当ててもよい。図8(A)の例を参照すると、タイルa、b、cを一つのストリームで管理してもよい。これによりクライアント101が管理するストリームの数が減り、処理負荷が軽減ざれる。また、1つストリームに対して、複数レイヤの同一領域を割り当ててもよい。図8の例を参照すると、タイルaとタイルjを同じストリームに紐づけてもよい。
着目領域取得部315は、表示する着目領域を取得する(S606)。着目領域は複数のタイル領域を含んでいてもよい。また、着目領域によって指定されているタイルは、低画質(ベースレイヤ)と高画質のもの(エンハンスメントレイヤ)が混在していてもよい。
クライアント101は着目領域をサーバ102に対して通知する。クライアントは、着目領域のサーバへの通知を、HTTP GETリクエストで行ってもよい。この場合、着目領域と周辺領域の区別をつけるために、周辺領域に対しては、HTTP HEADリクエストを送信する。また、クライアントは、着目領域のサーバへの通知を、HTTPリクエストに含まれるHTTPヘッダフィールドに記述してもよい。例えば、着目領域を通知する場合、“set−tile:p”と記述し、周辺領域を通知する場合、“set−tile:s”と記述し、その他の領域を通知する場合“set−tile:n”と記述することで、サーバに着目領域を通知することができる。なお、これらのヘッダフィールドを使用する場合、HTTPのHeadリクエストを送信することで、サーバ102からのメタデータのみを受け取ることができる。その結果、サーバ102との間で受信するデータの量を削減することができる。なお、クライアント101がサーバに対して、着目領域を通知するためのヘッダフィールドの記述方式は、本実施形態で紹介している方式に限定されない。
ストリーム設定部309は、ストリーム制御のための設定をHTTP/2のストリームに対して行う(S607)。ストリーム設定部309は、S606により取得された着目領域が、前回取得された着目領域と変更がない場合は本処理をスキップしてもよい。
具体的には、ストリーム設定部309は、着目領域と周辺領域に優先度を設定する。すなわち、着目領域の画像データを通信するためのストリームの優先度が、着目領域以外の部分領域の画像データを通信するためのストリームの優先度以上となるように、複数のストリームの少なくとも1つに対して優先度を設定する。例えば着目領域のビットレートが8Mbps、周辺領域のビットレートが1Mbpsの場合、着目領域に8、周辺領域に1という優先度を設定する。その他の領域には優先度0を設定する。また、ストリーム設定部309は、設定した優先度をHTTP/2通信処理部308を介して、HTTPのストリームに反映させる。ストリーム設定部309は、着目領域と周辺領域に設定した優先度の値をHTTP/2のストリームに対して設定する。HTTP/2のストリームに対する優先度は、これに限定されない。これにより、着目領域のセグメントを優先して取得できる可能性が高まる。
次に、ストリーム設定部309は、一つ、または、複数のストリームに対して、プッシュポリシーの要求を行う。なお、着目領域に変更がなかった場合、この処理はスキップしてもよい。また、着目領域に変更がなかった場合であっても、ストリームのプッシュポリシーの設定を変更したい場合は本処理を行ってもよい。ストリーム設定部309は、サーバ102からの応答にもとづき、各ストリームにプッシュポリシーを設定する。プッシュポリシーを設定することにより、着目領域に対するプッシュは受信し、周辺領域に対するプッシュは受信しない、といったより詳細な制御を行うことができる。
クライアント101は、着目領域を高画質で取得するかどうかを判断する(S608)。着目領域を高画質で取得するかどうかを判断する処理の詳細は、図10を参照して後述する。クライアント101が、着目領域を高画質で取得すると判断した場合(S608でYES)、クライアント101は、着目領域の高画質のセグメントの取得を開始する(S609)。着目領域の高画質のセグメントを取得する処理の詳細は、図11を参照して後述する。
次に、クライアント101は、周辺領域を高画質で取得するかを判断する(S610)。着目領域を高画質で取得するかどうかを判断する処理の詳細は、図10を参照して後述する。なお、クライアント101は、周辺領域に複数のタイル含まれている場合、その一部を高画質で取得し、残りを低画質で取得するよう処理してもよい。例えば、着目領域が1つのタイルでその周囲に上、下、左、右、右上、右下、左下、左上に8つのタイルがある場合、上下左右に位置するタイルは高画質で取得し、その他の4つのタイルは低画質で取得してもよい。クライアント101が、周辺領域を高画質で取得すると判断した場合(S610でYES)、クライアント101は、周辺領域の高画質のセグメントの取得を開始する(S611)。周辺領域の高画質のセグメントを取得する処理の詳細は、図11で後述する。表示制御部302は、セグメント解析部306がデコードしたデータを、表示部205に表示する(S612)。
なお、本実施形態では、周辺領域のセグメントの取得(S610、S611、S615)を行ってから、着目領域のセグメント表示処理(S612)を行っているが、これらは並列に行ってもよい。すなわち、クライアント101が着目領域をサーバから取得したら、表示制御部302は表示処理を行うことができる。
クライアント101が、周辺領域を高画質で取得しないと判断した場合(S610でNO)、クライアント101は、周辺領域を低画質で取得するかどうかを判断する(S614)。周辺領域を低画質で取得するかどうかを判断する処理の詳細は、図10を参照して後述する。クライアント101が、周辺領域を低画質で取得すると判断した場合(S614でYES)、クライアント101は、周辺領域の低画質のセグメントを取得する(S615)。周辺領域の低画質のセグメントを取得する処理の詳細は、図11を参照して後述する。そして、注目領域のセグメントを表示する(S612)。クライアント101が、周辺領域を低画質で取得しないと判断した場合(S614でNO)、クライアント101は着目領域の表示を行う(S612)。
S612の処理を終えると、クライアント101は、映像データ取得処理を終了するかを判断する(S613)。クライアント101が、映像データ取得処理を終了すると判断した場合(S613でYES)、クライアント101は、本フローチャートに沿った処理を終了する。クライアント101が、映像データ取得処理を終了しないと判断した場合(S613でNO)、クライアント101は、S606に進む。
クライアント101が、着目領域を高画質で取得しないと判断した場合(S608でNO)、クライアント101は、着目領域を低画質で取得するかどうかを判断する(S616)。クライアント101が、着目領域を低画質で取得するかどうかを判断する処理は、図10を参照して後述する。クライアント101が、着目領域を低画質で取得すると判断した場合(S616でYES)、クライアント101は、着目領域の低画質のセグメントを取得する(S617)。クライアント101が、着目領域の低画質のセグメントを取得する処理の詳細は、図11を参照して後述する。そして、S614へ進む。
クライアント101が、着目領域の低画質のセグメントを取得しないと判断した場合(S616でNO)、エラー表示を行う(S618)。例えば、回線の状況により映像データの取得が遅れている、といった表示を行う。そして、S613へ進む。
上記のように、本実施形態では、クライアント101は、注目領域の映像データを注目領域以外の映像データよりも優先的に受信して取得する。具体的には、本実施形態では、以下のような手法を採用している。
・着目領域の映像データを受信してから着目領域以外の部分領域の映像データを受信するようにしている。
・サーバ102との間のネットワークの帯域を取得(帯域取得)するとともに、映像データの部分領域のビットレートを取得(ビットレート取得)する。そして、ネットワークの帯域と部分領域のビットレートとの比較に基づいて、受信する映像データの部分領域の画質を判定して、その画質の部分領域の映像データを受信している。
・受信する映像データの部分領域の画質を判定する際には、着目領域に対して、当該着目領域以外の部分領域よりもより高い画質で受信するように判定している。
・さらに、ネットワークの帯域と部分領域のビットレートとの比較に基づいて、当該部分領域の映像データを受信するか否かを判定している。ここで、着目領域の映像データを受信してなおネットワークの帯域に余力がある場合に、着目領域以外の部分領域の映像データを受信すると判定し、余力がない場合は着目領域以外の部分領域の映像データは受信しないようにしている。
これらの手法により、クライアント101はネットワークの帯域が限られた場合であっても、着目領域を優先的に取得することができ、全画像のうちより重要度の高い領域をスムーズに視聴することが可能である。
●注目領域変更時の処理
図7では、S606の処理で、周期的にユーザからの着目領域の取得を行う処理を行っている。次に、図9では、着目領域の変更が行われた時の処理について説明する。
着目領域取得部315は、着目領域が現在の着目領域から変更されたことを取得する(S701)。クライアント101は、変更後の着目領域のセグメントを取得済みかどうか判断する(S702)。クライアント101が、変更後の着目領域のセグメントを取得済みと判断した場合(S702でYES)、表示制御部302は、表示部205に、変更後の着目領域の映像データを表示する(S703)。これによりクライアント101は、着目領域以外の周辺領域のセグメントや、画質の異なる同一の着目領域のセグメントを取得している場合、新たなセグメントの取得をせずに、映像データの表示を行うことができる。その結果、ユーザはシームレスに映像データの視聴を行うことができる可能性が高まる。クライアント101が、変更後の着目領域のセグメントを取得済みではないと判断した場合(S702でNO)、及び、S703の処理を終えた場合、本フローチャートによる処理を終了する。
●セグメント取得判断処理
図10は、図7のS608,S610,S614,S616のそれぞれから呼び出されるフローチャートである。ここでは、図10の呼び出し元で指定された領域を指定された画質で取得するかどうかの判断を行う。
S608は、着目領域を領域として指定し、高画質を画質として指定し、図10のフローチャートを呼び出す。S610は、周辺領域を領域として指定し、高画質を画質として指定し、図10のフローチャートを呼び出す。S614は、周辺領域を領域として指定し、低画質を画質として指定し、図10のフローチャートを呼び出す。S616は、着目領域を領域として指定し、低画質を画質として指定し、図10のフローチャートを呼び出す。
クライアント101は、取得の判断を行う領域のビットレートを取得する(S801)。クライアント101は、指定された領域が複数の領域である場合、複数の領域のビットレートの合計を取得する。なお、クライアント101はHTTP HEADリクエストを送信することで、該当する領域のセグメントのサイズを取得してもよい。クライアント101は、取得したセグメントサイズを、セグメントの時間で除算する(割る)ことで、ビットレートを取得してもよい。また、クライアント101がサーバ102に対して、プッシュポリシー(push−head)を送信している場合、サーバ102からHeadリクエストのレスポンスに含まれるファイルサイズを取得してもよい。
帯域取得部314は、サーバ102との間のネットワークの帯域を取得する(S802)。クライアント101は、他の取得中のセグメントのビットレートを取得する(S803)
周辺領域を取得可能か判断するために図10のフローチャートが呼び出された場合(S610、S614)、着目領域の取得のセグメントのビットレートを取得する(S609、S617)。なお、ビットレートに限らず、取得中のファイルサイズから、ビットレートを計算して取得してもよい。
クライアント101は、セグメントを取得するかどうかの判断を行う(S804)。例えば、利用可能な通信帯域が取得するセグメントのビットレート以上の場合はセグメントを取得すると判断し、帯域がビットレートを下回る場合は取得しないと判断することができる。具体的には、例えば、取得するセグメントのビットレートが8Mbpsで、帯域が10Mbpsの場合、ビットレートよりも帯域幅が大きいので、セグメントを取得すると判断する。別の例として、取得するセグメントのビットレートが8Mbpsで、帯域が6Mbpsの場合、ビットレートよりも帯域幅が小さいので、取得しないと判断する。
クライアント101がセグメントを取得すると判断した場合(S804でYES)、クライアント101は、セグメントを取得するための前処理を行う(S805)。具体的には、HTTP/2通信処理部308は、HTTP/2のコネクションと、該当する領域と紐づけられているストリームに対して、HTTP/2ウィンドウアップデート(WU:WINDOW_UPDATE)フレームの送信を行う。ここで、ウィンドウアップデートフレーム(ウィンドウ更新フレーム)において、加算するウィンドウサイズの値としてセグメント長×ビットレートを記述することができるが、これに限定されない。例えば、セグメントのファイルサイズを取得している場合、そのファイルサイズの値を、そのまま加算するウィンドウサイズとして、ウィンドウアップデートフレームに記述し、送信してもよい。また、ファイルサイズよりも大きな値をウィンドウアップデートフレームに記述してもよい。例えば、ファイルサイズの2倍の値や、3倍の値などが考えられる。これにより、複数のセグメントを取得するために必要なウィンドウアップデートを一つにまとめることができる。その結果、クライアントとサーバ間のデータのやり取りを削減することができる。
また、ウィンドウアップデートフレームを送らなくても、次のセグメントを受信可能である場合、ウィンドウアップデートフレームを送信しなくてもよい。なお、当該領域に紐づけられているHTTP/2のストリームが閉じられている場合、新たにストリームを作成してもよい。
次に、クライアント101は、セグメントを取得すると判断した場合の処理に進む(S806)。例えば、本フローがS608より呼び出された場合、S609に進む。
一方、S804で、クライアント101がセグメントを取得しないと判断した場合(S804でNO)、クライアントはセグメント取得の停止処理を行う(S807)。当該ストリームに対するウィンドウアップデートフレームの送信を停止する。例えば、当該ストリームに対して、GOAWAYフレームを送信してストリームを閉じてもよい。この結果、使用していないストリームを閉じることで、処理負荷を軽減することができる。また、サーバに対してプッシュポリシーを送信し、当該領域に対応するストリームへのプッシュを送信しないように設定してもよい。これにより、サーバ102からの不要なプッシュの送信を停止し、ネットワークの帯域幅を節約できる。その結果、セグメントをスムーズに取得できる可能性が高まる。
クライアント101は、セグメントを取得しないと判断した場合の処理へ進む(S808)。例えば、本フローがS608より呼び出された場合、S616へ進む。図10の処理によれば、着目領域の画像データを通信するためのストリームに割り当てられるバッファ容量が、当該着目領域以外の部分領域の画像データを通信するためのストリームに割り当てられるバッファ容量以上となる。このようにウィンドウサイズを制御することにより、着目領域の画像データを着目領域以外の部分領域の画像データよりも優先的に通信することができる。
●セグメント取得処理
図11では、セグメントの取得処理について説明する。本フローは図7のS609、S611、S615、S617から呼び出される。図11では、本フローチャートの呼び出し元で指定された領域を指定された画質で取得する処理を行う。
S609は、着目領域を領域として指定し、高画質を画質として指定し、本フローチャートを呼び出す。S611は、周辺領域を領域として指定し、高画質を画質として指定し、本フローチャートを呼び出す。S615は、周辺領域を領域として指定し、低画質を画質として指定し、本フローチャートを呼び出す。S617は、着目領域を領域として指定し、低画質を画質として指定し、本フローチャートを呼び出す。
クライアント101は、取得対象のセグメントが、サーバからプッシュされているかを判断する(S901)。クライアント101は、取得対象のセグメントが、サーバからプッシュされていると判断した場合(S901でYES)、処理は行わずに本フローを終了する。この処理の結果、クライアントは、プッシュでセグメントを受信済みの場合、新たなHTTPリクエストを送信する処理を行わなくてもよい。したがって、クライアント101の処理負荷とネットワークの負荷を軽減することができる。クライアント101は、取得対象のセグメントがサーバからプッシュされていないと判断した場合(S901でNO)、サーバ102に対して、HTTPリクエストを送信し、セグメントを要求する(S902)。
(サーバの動作)
●サーバ全体処理
次に、図6のような構成をサーバ102の動作について、図12のフローチャートを参照しながら詳細に説明を行う。図12の各ステップは、サーバ102の制御部401(CPU)の制御に基づき実行される。
HTTP/2通信処理部506は、クライアント101との間に、HTTP/2の接続を確立する(S1101)。サーバ102は、プレイリスト生成部515によって生成されたプレイリストを、HTTP/2通信処理部308を介して送信する(S1102)。
HTTP/2通信処理部506はストリームを作成する(S1116)。クライアント101が、各レイヤの各領域に対してHTTP/2のストリームを作成する。HTTP/2通信処理部506は、サーバからプッシュ送信を行うためのストリームを作成する。サーバ102は、クライアント101が作成した一部、または、全部のストリームに対して、プッシュ用のストリームを予約する予約要求(PUSH_PROMISEフレーム)を送信する。
なお、サーバ102が予約要求を出すストリームは、クライアント101のタイルに紐づけられているストリームと1対1対応でなくてもよい。例えば、クライアント101は各領域に対してストリームを作成するが、サーバ102はプッシュ用のストリームを1つだけ作成してもよい。これにより、サーバ102はストリーム数を削減し、処理負荷を軽減することができる。また、サーバ102は着目領域のセグメントをプッシュするストリームと、周辺領域のセグメントをプッシュするストリームを作成してもよい。これによりサーバ102はストリーム数を削減し、処理負荷を軽減することができる。また、サーバ102は、全ての領域に対するプッシュ用のストリームを作成しなくてもよい。プッシュ用のストリームを作成しなくてもよい。例えば、クライアント101から取得した着目領域と周辺領域のみに対してストリームを作成してもよい。これにより、サーバ102はストリーム数を削減し、処理負荷を軽減することができる。
ストリームID管理部512は、各レイヤの各領域と、ストリームのIDを紐づけて記憶する(S1103)。ストリームID管理部512は、サーバ102がプッシュ予約要求を送信して予約しているストリームIDについても、各レイヤの各領域と紐づけて記憶する。ストリームID管理部512の処理により、クライアント101が主導的にセグメントを取得するストリームと、サーバからプッシュされたセグメントを受信するためのストリームを別々に管理し制御可能になる。その結果、ストリームの細かな制御が可能になる。
着目領域取得部510は、クライアント101が着目している領域を取得する(S1104)。すなわち、画像データに対応する画像における着目領域の指定をクライアント101から受け付ける受付処理を行う。具体的には、着目領域取得部510は、クライアント101がHTTPのGETリクエストを送ってきたストリームに紐づいている領域を着目領域とする。これに限らず、サーバ102は別の方式でクライアント101が着目領域を取得することができる。例えば、サーバ102は、HTTPヘッダフィールドの値から着目領域を取得してもよい。例えば、サーバ102は、クライアント101から、“set−tile:p”と書かれたヘッダフィールドを含むHTTPリクエストを受け取った場合、このストリームに紐づけられている領域を着目領域と判断する。サーバ102は、クライアント101から、“set−tile:s”と書かれたヘッダフィールドを含むHTTPリクエストを受け取った場合、このストリームに紐づけられている領域を周辺領域と判断する。サーバ102は、クライアント101から、“set−tile:n”と書かれたヘッダフィールドを含むHTTPリクエストを受け取った場合、このストリームに紐づけられている領域を着目領域でも周辺領域でもないと判断する。なお、クライアント101がサーバに対して、着目領域を通知するためのヘッダフィールドの記述方式は、本実施形態で紹介している方式に限定されない。
ストリーム設定部509は、ストリーム制御の設定をHTTP/2のストリームに対して行う(S1105)。ストリーム設定部509は、クライアントから優先度を設定するためのプライオリティフレームが送信されてきた場合、その値に基づき、ストリームのプライオリティを設定する。
また、ストリーム設定部509は、クライアント101からプッシュポリシーを受け取った場合、該当するストリームに対してプッシュポリシーを設定する。サーバ102は設定したプッシュポリシーをクライアントに通知する、これにより、サーバ102は、それぞれのストリームに対してプッシュポリシーを設定することができる。この結果、サーバ102は、ストリームに対して、細かなプッシュ送信の制御を設定することができる。
サーバ102は、ネットワークの帯域に、着目領域を高画質で送信する余裕があるかを判断する(S1106)。具体的には、帯域取得部513は、クライアント101との間のネットワークの帯域幅を取得する。サーバ102は、着目領域の高画質のセグメントのビットレートを取得する。サーバ102は、指定された領域が複数のタイルである場合、複数のタイルのビットレートの合計を取得する。サーバ102は、着目領域の高画質のセグメントのサイズとセグメントの再生時間からビットレートを計算してもよい。
サーバ102は、ネットワークの帯域幅と、セグメントのビットレートを比較する。帯域取得部513で取得した帯域幅が、セグメントのビットレート以上の場合、サーバ102は、高画質で送信する余裕がある(S1106でYES)と判断する。帯域取得部513で取得した帯域幅が、セグメントのビットレートよりも小さい場合、サーバ102は送信する余裕がない(S1106でNO)と判断する。
例えば、セグメントのビットレートが8Mbpsで、帯域が10Mbpsの場合、ビットレートよりも帯域幅が大きいので、セグメントを送信する余裕がある(S1106でYES)と判断する。別の例として、セグメントのビットレートが8Mbpsで、帯域が6Mbpsの場合、ビットレートよりも帯域幅が小さいので、送信する余裕がない(S1106でNO)と判断する。S1106の処理の詳細は、図13を参照して後述する。
サーバ102が、S1106でYESと判断した場合、サーバ102は、クライアント101へ、着目領域の高画質のセグメントをプッシュで送信する(S1107)。S1107の処理の詳細は、図14を参照して後述する。
サーバ102は、ネットワークの帯域に、周辺領域を高画質で送信する余裕があるかを判断する(S1108)。具体的には、帯域取得部513は、クライアント101との間のネットワークの帯域幅を取得する。サーバ102は、送信中または送信予定の着目領域のセグメントが存在する場合、そのビットレートも取得する。サーバ102は、周辺領域の高画質のセグメントのビットレートを取得する。サーバ102は、帯域幅と、着目領域と周辺領域のセグメントのビットレートの和を比較する。サーバ102は、帯域幅が、着目領域と周辺領域のセグメントのビットレートの和以上の場合、高画質で送信する余裕がある(S1108でYES)と判断する。サーバ102は、帯域幅が、着目領域と周辺領域のセグメントのビットレートの和より小さい場合、送信する余裕がない(S1108でNO)と判断する。周辺領域を高画質で送信するかどうかを判断する処理の詳細は図13を参照して後述する。なお、サーバ102は、周辺領域に複数の領域が含まれている場合、その一部を高画質で送信し、残りを低画質で送信してもよい。例えば、着目領域が1つのタイルである場合、そのタイルの上下左右に位置するタイルは高画質で送信する。そして、右上、右下、左下、左上にある4つのタイルは低画質で送信してもよい。
サーバ102が、S1108で送信する余裕がある(S1108でYES)と判断した場合、サーバ102は、クライアント101に、周辺領域の高画質のセグメントをプッシュで送信する(S1109)。S1109の処理の詳細は、図14を参照して後述する。
サーバ102は、S1108で送信する余裕がない(S1108でNO)と判断した場合、サーバ102はネットワークの帯域に、周辺領域を低画質で送信する余裕があるかを判断する(S1111)。具体的には、帯域取得部513は、クライアント101との間のネットワークの帯域幅を取得する。サーバ102は、送信中、または送信予定の着目領域のセグメントが存在する場合、そのビットレートも取得する。サーバ102は、周辺領域の低画質のセグメントのビットレートを取得する。サーバ102は、帯域幅と、着目領域と周辺領域のセグメントのビットレートの和を比較する。サーバ102は、帯域幅が、着目領域と周辺領域のセグメントのビットレートの和以上の場合、低画質で送信する余裕がある(S1111でYES)と判断する。サーバ102は、帯域幅が、着目領域と周辺領域のセグメントのビットレートの和より小さい場合、送信する余裕がない(S1111でNO)と判断する。周辺領域を低画質で送信するかどうかを判断する処理の詳細は図13を参照して後述する。
サーバ102が、周辺領域を低画質で送信すると判断した場合(S1111でYES)、サーバ102は、クライアント101へ、周辺領域の低画質のセグメントをプッシュで送信する(S1112)。
サーバ102が、S1106で注目領域を高画質で送信する余裕がない(S1106でNO)と判断した場合、サーバ102は、ネットワークに帯域に、着目領域を低画質で送信する余裕があるかを判断する(S1113)。具体的には、帯域取得部513は、クライアント101との間のネットワークの帯域幅を取得する。サーバ102は、着目領域の低画質のセグメントのビットレートを取得する。サーバ102は、ネットワークの帯域幅と、着目領域のセグメントのビットレートを比較する。帯域取得部513で取得した帯域幅が、セグメントのビットレート以上の場合、サーバ102は、S1113でYESと判断する。帯域取得部513で取得した帯域幅が、セグメントのビットレートよりも小さい場合、サーバ102は低画質で送信する余裕がない(S1113でNO)と判断する。S1106の処理の詳細は図13を参照して後述する。
サーバ102が、着目領域を低画質で送信する余裕があると判断した場合(S1113でYES)、サーバ102は、クライアント101に、着目領域の低画質のセグメントをプッシュで送信する(S1114)。S1114の処理の詳細は、図14を参照して後述する。
上記処理を終えると、サーバ102は図12のフローを終了するかを判断する(S1110)。終了する場合(S1110でYES)はフローを終了し、終了しない場合(S1110でNO)はS1104に戻る。
●セグメント送信判断処理
図13は、図12のS1106、S1108、S1111、S1113から呼び出されるフローチャートである。図13では、図13の呼び出し元で指定された領域を指定された画質で送信するかどうかの判断を行う。
S1106は、着目領域を領域として指定し、高画質を画質として指定し、図13のフローチャートを呼び出す。S1108は、周辺領域を領域として指定し、高画質を画質として指定し、図13のフローチャートを呼び出す。S1111は、周辺領域を領域として指定し、低画質を画質として指定し、図13のフローチャートを呼び出す。S1113は、着目領域を領域として指定し、低画質を画質として指定し、図13のフローチャートを呼び出す。
サーバ102は、指定されたレイヤの指定された領域のセグメントのビットレートを取得する(S1201)。サーバ102は、指定された領域が複数のタイルである場合、複数のタイルのビットレートの合計を取得する。サーバ102は、指定された領域の指定されたセグメントのサイズと、セグメントの再生時間から、ビットレートを計算してもよい。
帯域取得部513は、クライアント101との間のネットワークの帯域を取得する(S1202)。帯域取得部513は、ネットワークの帯域を計測する既存の手法を使用して帯域を取得してもよいし、クライアント101に過去の送信履歴から、帯域の値を計算して取得してもよい。
サーバ102は、他に送信中のセグメントがあれば、そのセグメントのファイルサイズを取得する(S1203)。例えば、周辺領域が指定されて図13のフローチャートが呼び出された場合(S1108、S1113)、着目領域のセグメントのビットレートを取得する(S1203)
サーバ102は、セグメントを送信するかどうかの判断を行う(S1204)。例えば、帯域幅が送信するセグメントのビットレート以上の場合(S1204でYES)はセグメントを送信すると判断し、帯域幅がビットレートを下回る場合(S1204でNO)はセグメントを送信しないと判断する。具体的には、例えば、送信するセグメントのビットレートが8Mbpsで、帯域が10Mbpsの場合、ビットレートよりも帯域幅が大きいので、セグメントを送信すると判断する。別の例として、送信するセグメントのビットレートが8Mbpsで、帯域が6Mbpsの場合、ビットレートよりも帯域幅が小さいので、送信しないと判断する。
サーバ102は、セグメントの送信をする場合の処理に進む(S1206)。例えば、本フローがS1106から呼び出された場合はS1107に進む。サーバは、セグメントの送信をしない場合の処理に進む(S1208)。例えば、本フローがS1106から呼び出された場合はS1113に進む。
●セグメント送信処理
図14では、セグメントの送信処理について説明する。図14では、図14の呼び出し元で指定された領域を指定された画質で送信する処理を行う。
S1107は、着目領域を領域として指定し、高画質を画質として指定し、図14のフローチャートを呼び出す。S1109は、周辺領域を領域として指定し、高画質を画質として指定し、図14のフローチャートを呼び出す。S1112は、周辺領域を領域として指定し、低画質を画質として指定し、図14のフローチャートを呼び出す。S1113は、着目領域を領域として指定し、低画質を画質として指定し、図14のフローチャートを呼び出す。
サーバ102は、クライアントからセグメントの送信要求として、HTTPリクエストを受信しているかを判断する(S1301)。サーバ102が、クライアントからHTTPリクエストを受信していないと判断した場合(S1301でYES)、HTTPリクエストで要求されたセグメントを、HTTPレスポンスとして送信する(S1302)。
サーバ102が、クライアントからHTTPリクエストを受信していないと判断した場合(S1301でNO)、S1304へ進む。S1304において、サーバ102は、指定された領域の指定された画質のセグメントと紐づけられているプッシュ用のストリームでプッシュが可能かを判断する。例えば、サーバ102とクライアント101の間で確立したHTTP/2の接続がプッシュを送信できないように設定されている場合に、該当するストリームではプッシュ送信ができないと判断する。また、該当ストリームのプッシュポリシーとして、プッシュを送信しない設定がされている場合も、該当するストリームではプッシュできないと判断する。
サーバ102が、該当するストリームがプッシュ送信可能であると判断した場合(S1304でYES)、サーバ102は、指定された領域の指定された画質のセグメントをプッシュで送信する(S1305)。サーバ102が、該当するストリームがプッシュ送信可能でないと判断した場合(S1304でNO)、サーバ102は、クライアント101から、HTTPリクエストを受信する(S1306)。
なお、本実施形態では、低画質と高画質の2つのレイヤがある場合について説明したが、これに限らず、領域分割された一つのレイヤであっても本実施形態を適用できる。その場合、クライアント101は図7のフローチャートのS616、S617、S614、S615などの低画質のセグメントに関連する処理をスキップすることで実現できる。サーバ102は図12のS1111、S1112、S1113、S1114の低画質のセグメントに関連する処理をスキップすることで実現できる。
以上説明したように、本実施形態によれば、クライアント101は、論理的なストリームを用いて、着目領域と周辺領域の取得を制御する。具体的には、クライアント101は、サーバ102との間で、論理的な通信路である複数のストリームを確立し、映像データに対応する映像における着目領域を指定する。さらに、着目領域の映像データを受信するためのストリームと、着目領域以外の部分領域の映像データを受信するためのストリームとが異なるストリームとなるように、着目領域と着目領域以外の部分領域の映像データを受信するためのストリームを決定する。そして、決定したストリームをサーバ102へ通知する。サーバ102は、クライアント101から通知されたストリームを用いて、映像データをクライアント101へ送信する。ここで、サーバ102は、着目領域の映像データを優先的にクライアント101へ送信する。これにより、ネットワークの帯域を消費しないように、より詳細な制御が可能となり、その結果、ユーザが着目している領域の映像をシームレスに切り替えることができるようになる。したがって、画像データの領域ごとにストリームを確立し、着目領域を優先的に送受信することで、帯域が限られていても映像を可能な限りスムーズに視聴可能とすることが可能となる。
<実施形態2>
実施形態2には、サーバ102がクライアント101に対して、着目領域の変更を通知する例を説明する。本実施形態は、実施形態1との相違点を中心に説明し、実施形態1との共通する内容については説明を省略する。
(クライアントの動作)
図15は、実施形態2に係るクライアント101のフローチャートである。図15の各ステップは、クライアント101の制御部201(CPU)の制御に基づき実行される。ここでは、図7との差分を説明する。
S1501〜S1505の処理は図7のS601〜S605と同様である。S605の処理を終えると、S1519で、クライアント101は、サーバ102から着目領域の変更通知を受信しているかを判断する(S1519)。クライアント101は、サーバ102からプッシュで着目領域の変更通知を受信する。クライアント101は、新しい着目領域に対応する変更通知を受信したストリームのIDと紐づけられている領域から、新しい着目領域を判断する。注目領域の変更通知を受信している場合(S1519でYES)はS1507へ進み、受信していない場合(S1519でNO)はS1520へ進む。
クライアント101は、新しい着目領域に対応するセグメントを受信済みの場合、S1507以下の処理により表示部205に新しい着目領域のセグメントを即時に表示することができる。また、クライアント101が着目領域のセグメントを受信する場合、クライアントは表示部205に受信した新しい着目領域のセグメントを、即時に表示することができる。これにより、ユーザはシームレスに視聴している領域を切り替えることができる可能性が高まる。
なお、注目領域の変更通知を受信していない場合(S1519でNO)、クライアント101は、着目領域の変更通知を受信するためのストリームを作成してもよい。クライアント101は、表示部205に表示する映像データを、新しい着目領域に切り替える(S1520)。S1507〜S1518の処理は図7のS607〜S618と同様である。
上記のように、クライアント101は、サーバ102から着目領域の変更の通知を受信したことに応じて、着目領域の指定を更新する。このため、画像データの被写体が画像データにおいて占める位置の変化等に応じて、着目領域を更新して、より重要性の高い領域を優先的に視聴することが可能となる。
(サーバの動作)
図16は、実施形態2に係るサーバ102のフローチャートである。図16の各ステップは、サーバ102の制御部401(CPU)の制御に基づき実行される。図12との差分を説明する。
S1601、S1602、S1616、S1603の処理は図12のS1101、S1102、S1116、S1103と同様である。S1103の処理を終えると、サーバ102は、着目領域を変更するかを判断する(S1617)。
ここで、着目領域を変更する判断を行う方式の例を説明するが、この方式に限定されない。サーバ102は、図17で示すように、映像データ上の着目領域S1701にいる人物が、別の領域S1702に移動した場合に、着目領域を変更すると判断する(S1617でYES)。サーバ102は、監視対象の人物の情報をクライアント101から受け取って、該当する人物が映っている領域を着目領域としてもよいし、映像データの解析を行い、不審な人物が映っている領域を、着目領域としてもよい。
注目領域を変更すると判断した場合(S1617でYES)、サーバ102は、クライアント101に着目領域の変更を通知する(S1618)。サーバ102は、クライアント101は変更後の着目領域に紐づけられているプッシュ用のストリームを使用して、新しい着目領域を通知する。これにより、クライアント101は、着目領域の変更を受信したストリームのIDから、新しい着目領域を決定することができる。クライアント101は、着目領域の変更通知を送信するためのストリームを作成してもよい。クライアント101は、変更後の着目領域を示すURLを通知してもよいし、変更後の着目領域のセグメントを送信してもよい。サーバ102は、クライアント101に変更後の着目領域のセグメントを送信している場合は新しい着目領域の識別子だけ通知し、変更後の着目領域のセグメントを送信していない場合は、セグメントを送信してもよい。これにより、既に変更後の着目領域のセグメントを送信している場合は、セグメントを送る必要がなくなり、ネットワークの処理負荷を軽減できる。
上記のように、サーバ102は、画像データの被写体が画像データにおいて占める位置の変化に応じて着目領域の変更を検出し、着目領域の変更をクライアント101に通知する。その結果、クライアント101は着目領域をシームレスに切り替えることができる。 以上のように、本発明の各実施形態においては、映像データの領域と論理的ストリームを紐づけることで、詳細な取得制御を行う。このため、着目領域とその周辺領域の映像データを送信対象とする場合において、着目領域の映像データの遅れを低減できる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101:クライアント、308:HTTP/2通信処理部、309:ストリーム設定部、310:動画情報管理部、311:ストリームID管理部、315:着目領域取得部、102:サーバ、506:HTTP/2通信処理部、509:ストリーム設定部、510:着目領域取得部、511:動画情報管理部、512:ストリームID管理部

Claims (10)

  1. 複数の部分領域に空間的に分割された画像データをサーバ装置から受信する情報処理装置であって、
    前記画像データに対応する画像における着目領域を指定する指定手段と、
    前記サーバ装置との間で、論理的な通信路であるコネクションを確立すると共に、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームと、が異なるストリームとなるように、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームとを含む複数のストリームを、前記サーバ装置との間の前記コネクションに基づく複数のストリームとして確立する確立手段と、
    前記着目領域の画像データが前記部分領域よりも優先的に取得されるように前記複数のストリームを制御する制御手段と、
    前記制御手段により制御された前記複数のストリームを用いて前記サーバ装置からプッシュ通信により画像データを受信する受信手段と、
    前記サーバ装置との間のネットワークの帯域を取得する帯域取得手段と、
    前記サーバ装置に対してメタデータのみをプッシュするように要求することにより前記画像データの部分領域のビットレートを取得するビットレート取得手段と、
    前記ネットワークの帯域と前記部分領域のビットレートとの比較に基づいて、受信する前記画像データの部分領域の画質を判定する判定手段と
    を備え、
    前記受信手段は、前記判定手段により判定された画質の部分領域の画像データを受信することを特徴とする情報処理装置。
  2. 前記受信手段は、前記着目領域の画像データを受信してから前記着目領域以外の部分領域の画像データを受信することを特徴とする請求項1に記載の情報処理装置。
  3. 前記判定手段は、前記着目領域に対して、当該着目領域以外の部分領域よりもより高い画質を判定することを特徴とする請求項1に記載の情報処理装置。
  4. 前記判定手段は、前記ネットワークの帯域と前記部分領域のビットレートとの比較に基づいて、当該部分領域の画像データを受信するか否かを判定することを特徴とする請求項1又は3に記載の情報処理装置。
  5. 前記判定手段は、前記着目領域の画像データを受信してなお前記ネットワークの帯域に余力がある場合に、該着目領域以外の部分領域の画像データを受信すると判定することを特徴とする請求項4に記載の情報処理装置。
  6. 前記指定手段は、前記サーバ装置が提供する画像データの空間的な分割構成を示すプレイリストに基づき前記着目領域を指定する
    ことを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
  7. 前記制御手段は、前記着目領域の画像データを通信するためのストリームの優先度が、前記着目領域以外の部分領域の画像データを通信するためのストリームの優先度以上となるように、前記複数のストリームの少なくとも1つに対して優先度を設定することを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
  8. 前記制御手段は、前記着目領域の画像データを通信するためのストリームに割り当てられるバッファ容量が、前記部分領域の画像データを通信するためのストリームに割り当てられるバッファ容量以上となるように、前記複数のストリームに対して割り当てるウィンドウサイズを制御することを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
  9. 複数の部分領域に空間的に分割された画像データをサーバ装置から受信する情報処理装置の制御方法であって、
    前記画像データに対応する画像における着目領域を決定し、
    前記サーバ装置との間で、論理的な通信路であるコネクションを確立すると共に、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームと、が異なるストリームとなるように、前記着目領域の画像データを受信するためのストリームと、前記着目領域以外の部分領域の画像データを受信するためのストリームとを含む複数のストリームを、前記サーバ装置との間の前記コネクションに基づく複数のストリームとして確立し、
    前記着目領域の画像データが前記部分領域よりも優先的に取得されるように制御された前記複数のストリームを用いて前記サーバ装置からプッシュ通信により画像データを受信し、
    前記サーバ装置との間のネットワークの帯域を取得し、
    前記サーバ装置に対してメタデータのみをプッシュするように要求することにより前記画像データの部分領域のビットレートを取得し、
    前記ネットワークの帯域と前記部分領域のビットレートとの比較に基づいて、受信する前記画像データの部分領域の画質を判定し、
    前記判定により判定された画質の部分領域の画像データを受信することを特徴とする情報処理装置の制御方法。
  10. コンピュータを請求項1からのいずれか1項に記載の情報処理装置が備える各手段として機能させるためのコンピュータプログラム。
JP2016145694A 2016-07-25 2016-07-25 情報処理装置及びその制御方法、コンピュータプログラム Active JP6861484B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016145694A JP6861484B2 (ja) 2016-07-25 2016-07-25 情報処理装置及びその制御方法、コンピュータプログラム
PCT/JP2017/022434 WO2018020901A1 (ja) 2016-07-25 2017-06-19 情報処理装置及びその制御方法、コンピュータプログラム
US16/253,811 US11202110B2 (en) 2016-07-25 2019-01-22 Information processing apparatus, control method of the same, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016145694A JP6861484B2 (ja) 2016-07-25 2016-07-25 情報処理装置及びその制御方法、コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2018019143A JP2018019143A (ja) 2018-02-01
JP6861484B2 true JP6861484B2 (ja) 2021-04-21

Family

ID=61015836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016145694A Active JP6861484B2 (ja) 2016-07-25 2016-07-25 情報処理装置及びその制御方法、コンピュータプログラム

Country Status (3)

Country Link
US (1) US11202110B2 (ja)
JP (1) JP6861484B2 (ja)
WO (1) WO2018020901A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3528196A1 (en) * 2018-02-16 2019-08-21 Accenture Global Solutions Limited Dynamic content generation
JP2020017798A (ja) * 2018-07-23 2020-01-30 Supership株式会社 画像配信システム、画像配信装置、表示装置及び表示プログラム
US10911533B2 (en) * 2019-03-21 2021-02-02 Cisco Technology, Inc. Leveraging goaway messages to dynamically inform connection peers of IoT events
GB2609398A (en) * 2021-07-21 2023-02-08 Sony Interactive Entertainment Inc Display system and method
US20230087807A1 (en) * 2021-09-23 2023-03-23 Apple Inc. Techniques for activity based wireless device coexistence
CN116761019A (zh) * 2023-08-24 2023-09-15 瀚博半导体(上海)有限公司 视频处理方法、系统、计算机设备及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007033351A2 (en) * 2005-09-12 2007-03-22 3Vr Security, Inc. Specifying search criteria for searching video data
JP5089658B2 (ja) 2009-07-16 2012-12-05 株式会社Gnzo 送信装置及び送信方法
GB2509953B (en) * 2013-01-18 2015-05-20 Canon Kk Method of displaying a region of interest in a video stream
CN105532013B (zh) * 2013-07-12 2018-12-28 佳能株式会社 利用推送消息控制的自适应数据流传输方法
JP6305279B2 (ja) * 2014-08-26 2018-04-04 株式会社東芝 映像圧縮装置および映像再生装置

Also Published As

Publication number Publication date
US11202110B2 (en) 2021-12-14
WO2018020901A1 (ja) 2018-02-01
JP2018019143A (ja) 2018-02-01
US20190158899A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
JP6861484B2 (ja) 情報処理装置及びその制御方法、コンピュータプログラム
CN106068495B (zh) 将使用不同编码参数编码的多个编码成流
JP5326234B2 (ja) 画像送信装置、画像送信方法および画像送信システム
JP2020519094A (ja) ビデオ再生方法、デバイス、およびシステム
CN116389433A (zh) 用于减少360度视区自适应流媒体延迟的方法和装置
US20090327918A1 (en) Formatting information for transmission over a communication network
WO2017138387A1 (ja) 情報処理装置および情報処理方法
JP2011024018A (ja) 送信装置、受信装置、送信方法、受信方法及び伝送システム
US9894391B2 (en) Distribution management apparatus, distribution method, and program
JP7073128B2 (ja) 通信装置、通信方法、及びプログラム
US10708667B1 (en) Combining fragments with different encodings
JP2013255210A (ja) 映像表示方法、映像表示装置および映像表示プログラム
JP6560696B2 (ja) データのセグメント受信を制御するクライアント、プログラム及び方法
EP3371978B1 (en) Contiguous streaming of media stream
KR101944601B1 (ko) 기간들에 걸쳐 오브젝트들을 식별하기 위한 방법 및 이에 대응하는 디바이스
JP2014192566A (ja) 映像処理装置、映像処理方法およびコンピュータプログラム
JP6193569B2 (ja) 受信装置、受信方法、及びプログラム、撮像装置、撮像方法、及びプログラム、送信装置、送信方法、及びプログラム
JP2017022529A (ja) 通信システム、通信装置、通信方法、及び、プログラム
EP4312417A1 (en) Content delivery network (cdn) selection using performance metric
JP6589261B2 (ja) 配信制御システム、配信制御方法、及びプログラム
JP2019033362A (ja) 配信装置、受信装置及びプログラム
JP2018045674A (ja) 情報処理装置及びその制御方法、コンピュータプログラム
JP6400163B2 (ja) 受信装置、受信方法、送信装置、送信方法、及びプログラム
CN111869225B (zh) 信息处理装置、信息处理方法及非暂时性计算机可读存储介质
KR20110129064A (ko) 콘텐트 가상 세그멘테이션 방법과, 이를 이용한 스트리밍 서비스 제공 방법 및 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201211

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210330

R151 Written notification of patent or utility model registration

Ref document number: 6861484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151