JP2018509679A - サーバデバイスによるリソースの改善されたクライアント主導型プッシュ - Google Patents

サーバデバイスによるリソースの改善されたクライアント主導型プッシュ Download PDF

Info

Publication number
JP2018509679A
JP2018509679A JP2017537233A JP2017537233A JP2018509679A JP 2018509679 A JP2018509679 A JP 2018509679A JP 2017537233 A JP2017537233 A JP 2017537233A JP 2017537233 A JP2017537233 A JP 2017537233A JP 2018509679 A JP2018509679 A JP 2018509679A
Authority
JP
Japan
Prior art keywords
data
push
client
server
request
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.)
Granted
Application number
JP2017537233A
Other languages
English (en)
Other versions
JP2018509679A5 (ja
JP6686029B2 (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
Publication of JP2018509679A publication Critical patent/JP2018509679A/ja
Publication of JP2018509679A5 publication Critical patent/JP2018509679A5/ja
Application granted granted Critical
Publication of JP6686029B2 publication Critical patent/JP6686029B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/454Content or additional data filtering, e.g. blocking advertisements
    • 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/4722End-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 requesting additional data associated with the content
    • 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本発明は、HTTP通信ネットワークを通してのデータ送信、例えばデータストリーミング、に関する。サーバとクライアントとの間でデータを送信する方法は、サーバにおいて:第1データを得るHTTPリクエストをクライアントから受け取るステップであって、そのHTTPリクエストは、サーバ上の第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加ヘッダフィールドを含む、受け取るステップ;その第1データを取り出してクライアントに送るステップ;および、第2データをプッシュすることに関連するその指示を表す確認応答データをクライアントデバイスに送るステップ、を含む。【選択図】11a

Description

本発明は、HTTP(HyperText Transfer Protocolを表す)通信ネットワークを通してのデータ送信、例えばデータストリーミング、に関し、より正確にはサーバデバイスによるリソースのクライアント主導型プッシュに関する。
DASH(Dynamic Adaptive Streaming over HTTPの頭字語)メディアコンテンツストリーミングなどの、HTTPを通しての通信においては、クライアントデバイスによってサーバデバイスに対して大量のデータが要求されることがある。そうするために、クライアントデバイスは、普通、メソッド(例えば“GET”)と、場合によってはHTTPリクエスト内の1つまたは複数の追加のヘッダ(例えば、そのユニフォームリソースアイデンティファイア(URI:uniform resource identifier)により特定されるリソースの中のバイトレンジを提供するレンジ(Range)ヘッダ)と共に、サーバデバイス上の要求されたデータを特定して位置を示すURIとから成るリクエストラインを各々含むHTTPリクエストを送る。
クライアントデバイスによってまだ要求されていないデータをサーバデバイスが自発的にプッシュできるようにするためにサーバプッシュフィーチャが開発されている。これは、ウェブリソースのローディング時間を短縮するために有益なフィーチャである。
サーバプッシュフィーチャは、請求されていないウェブリソースリプリゼンテーションをサーバデバイスがクライアントデバイスに送ることを可能にするためにHTTP/2(これは単一の現存するコネクションの中で数個のリクエスト/レスポンスを交換すること、すなわち数個のストリームを持つこと、をも可能にする)において導入されている。ウェブページなどのウェブリソースは一般的に他のリソースへのリンクを含んでおり、それら自身が他のリソースへのリンクを含むことがある。ウェブページを完全に表示するためには、一般的に、全てのリンクされているリソースおよびサブリンクされているリソースがクライアントデバイスにより取り出されなければならない。この増加する発見は、特にモバイルネットワークなどの大レイテンシのネットワーク上では、ウェブページの低速の表示につながる可能性がある。
所与のウェブページに対するリクエストを受け取るとき、サーバデバイスは、要求されているリソースの完全な処理のために他のどのリソースが必要かを判定することができる。要求されたリソースと、リンクされているリソースとを同時に送ることにより、サーバデバイスはそのウェブページのローディング時間を短縮することを可能にする。従って、プッシュフィーチャを使って、サーバデバイスは、所与のリソースを要求された時点で追加リソースのリプリゼンテーションを送ることができる。
データのプッシュは、DASHと関連して、例えば本出願人の、特許文献1として公開された出願においても提案されている。
この刊行物は、ユーザの経験を最適化するためにデータストリーミングを、特にDASHベースの通信と関連して、改善しようとしている。その理由は、在来のメカニズムにおいては、クライアントおよびサーバデバイスにとっては約束されたデータが所要の時に送られ受け取られるかどうか分からず、クライアントデバイスにとってはビデオセグメントが何時どんな順序で送られるか分からないかもしれないことにある。さらに、サーバデバイスによってプッシュまたはアナウンスされた約束のデータはクライアントデバイスのニーズに合わないかもしれず(これは時間が経つにつれて進化する可能性がある)、従って特にサーバエンドにおいてリソースが浪費される結果につながるかもしれない。従って特許文献1は、サーバデバイスとクライアントデバイスとがプッシュポリシーを共有することを提案している。
この共有は、クライアントデバイスが、どのデータがプッシュされかけているかを前もって知り、その後、ネットワーク帯域幅の浪費を避けるためにそのようなプッシュのキャンセルを準備するために役立つ。
しかし、この刊行物において提案されているメカニズムは、特に、プッシュポリシーに従ってどのデータまたはリソースをプッシュするかを決定するためにXMLベースのDASH“メディアプレゼンテーション記述”ファイル(MPD:media presentation description)に対してプッシュポリシーを適用し得るように、サーバデバイスがDASHについての極めて複雑な知識を持つことを要求する。
MPDファイルはメディアコンテンツの構造をメディアセグメントに記述することに注意されたい。MPDファイルは、サーバデバイスとクライアントデバイスとの間で交換され、後者に、後者がメディアコンテンツのデリバリを制御することを可能にする、すなわち後者が各メディアセグメントを個別に要求することを可能にする、情報を与える。
国際公開第2015/004276号
この文脈において、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;
第2データをプッシュすることに関連する指示を表す確認応答データをクライアントデバイスに送るステップ;および
1つまたは複数のヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データの特定を可能にする第2データ特定情報を決定するステップ;
を含む。
従って、本発明の方法は、クライアントデバイスがサーバデバイスにより適用されるプッシュポリシーを考慮して自分の振る舞いを適合させることを可能にする。
複数の実施形態において、この方法はさらに:
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップを含む。
複数の実施形態において、確認応答データは、第2データをプッシュするための指示を表す。
複数の実施形態において、確認応答データは、HTTPリクエストに応じての第2データのプッシュは行われないことを示す。
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。
複数の実施形態において、確認応答データは第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの1つを含み、第2データをプッシュすることに関連するその少なくとも2つの異なる指示のうちの前記の1つは、クライアントデバイスにプッシュされるべき第2データを特定するために使用される。
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。
複数の実施形態において、第2データをプッシュすることに関連する指示は、メディアプレゼンテーション記述アップデートをプッシュすることに向けられる。
複数の実施形態において、確認応答データは、第2データをプッシュすることに関連する指示を含み、確認応答データ内の第2データをプッシュすることに関連する指示は、HTTPリクエスト内の第2データをプッシュすることに関連する指示とは異なる。
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともにサーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせまたはプッシュさせないためにHTTPリクエストをサーバデバイスに送るステップ;および
HTTPリクエストを送ることに応答して確認応答データをサーバデバイスから受け取るステップであって、確認応答データは第2データをプッシュすることに関連する指示を表す、受け取るステップ;を含み、
1つまたは複数の追加のヘッダフィールドは、1つまたは複数の追加のヘッダフィールドだけに、および場合によってはさらに第1データ特定情報に、基づいて、サーバデバイス上の特定されたデータから第2データの特定を可能にする第2データ特定情報を定義する。
従って、本発明の方法は、クライアントデバイスがサーバデバイスにより適用されるプッシュポリシーを考慮して自身の振る舞いを適合させることを可能にする
複数の実施形態において、確認応答データは、第2データをプッシュするための指示を表す。
複数の実施形態において、確認応答データは、HTTPリクエストに応答しての第2データのプッシュは行われないことを示す。
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。
複数の実施形態において、確認応答データは第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの1つを含み、第2データをプッシュすることに関連する少なくとも2つの異なる指示のうちの前記の1つは、クライアントデバイスにプッシュされるべき第2データを特定するためにサーバデバイスにより使用される。
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。
複数の実施形態において、第2データをプッシュすることに関連する指示は、記述データアップデートをプッシュすることに向けられる。
複数の実施形態において、確認応答データは、第2データをプッシュすることに関連する指示を含み、確認応答データ内の第2データをプッシュすることに関連する指示は、HTTPリクエスト内の第2データをプッシュすることに関連する指示とは異なる。
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
1つまたは複数の追加のフィールドに含まれる第2データをプッシュすることに関連する指示の関数として第2データをクライアントデバイスにプッシュするかまたはプッシュしないステップ;
を含む。
従って、本発明の方法は、有益なデータをクライアントデバイスにプッシュするサーバデバイスの能力を改善する。
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。
複数の実施形態において、第2データをプッシュすることに関連する指示は、記述データアップデートをプッシュすることに向けられる。
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともにサーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、生成するステップ;および
第1データを得るとともにサーバデバイスに第2データをプッシュさせまたはプッシュさせないためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
従って、本発明の方法は、有益なデータをクライアントデバイスにプッシュするサーバデバイスの能力を改善する。
複数の実施形態において、第2データをプッシュすることに関連する指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む。
複数の実施形態において、第2データをプッシュすることに関連する指示は第2データのデータのタイプと関連付けられ、そのデータのタイプは記述データタイプまたはコンテンツデータタイプを含み、第2データはコンテンツデータにまたは記述データに属する。
複数の実施形態において、第2データをプッシュすることに関連する指示は記述データアップデートをプッシュすることに向けられる。
複数の実施形態において、第2データをプッシュすることに関連する指示は、少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は、少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、クライアントデバイスによりサーバデバイスからデータを受け取る方法が提供され、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを送るステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、送るステップ;
もしクライアントがサーバデバイスに第1データと異なる第2データをプッシュしてほしくないならば、クライアントはサーバにHTTPリクエストに応じて第2データをプッシュしてほしくないということを示す情報アイテムを1つまた複数の追加のヘッダフィールドのうちの少なくとも1つに挿入するステップ;および
HTTPリクエストをサーバデバイスに送るステップ;
を含む。
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。
複数の実施形態において、クライアントはサーバに第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、データをサーバデバイスからクライアントデバイスに送る方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
サーバはHTTPリクエストに応じて第1データと異なる第2データをプッシュしないということを示す情報アイテムをクライアントに送るステップ;
を含む。
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、クライアントデバイスによりサーバデバイスからデータを受け取る方法が提供され、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを送るステップであって、HTTPリクエストは、サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、送るステップ;
もしクライアントがサーバデバイスに第1データと異なる第2データをプッシュしてほしくないならば、クライアントはサーバにHTTPリクエストに応じて第2データをプッシュしてほしくないということを示す情報アイテムを1つまた複数の追加のヘッダフィールドのうちの少なくとも1つに挿入するステップ;
HTTPリクエストをサーバデバイスに送るステップ;
HTTPリクエストを送ることに応答して、サーバデバイスから確認応答データを受け取るステップであって、確認応答データは、サーバは第1データと異なる第2データをプッシュしないということを示す情報アイテムを含む、受け取るステップ;
を含む。
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。
複数の実施形態において、クライアントはサーバに第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は、第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。
本発明の他の1つの目的に応じて、データをサーバデバイスからクライアントデバイスに送る方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストはサーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、クライアントはHTTPリクエストに応じてサーバにより第2データをプッシュしてほしくないということを示す情報アイテムを含む1つまたは複数の追加のヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
HTTPリクエストに応じて、サーバは第1データと異なる第2データをクライアントにプッシュしないということを示す情報アイテムを送るステップ;
を含む。
従って、本発明の方法は、サーバデバイスからクライアントデバイスにプッシュされる無駄なデータの送信を防止する。
複数の実施形態において、サーバは第2データをプッシュしないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、クライアントはサーバにより第2データをプッシュしてほしくないということを示す情報は少なくとも1つの一意識別子を含み、その少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す。
複数の実施形態において、一意識別子は集中リポジトリにおいて定義される。
複数の実施形態において、一意識別子は少なくとも1つのパラメータの関数としてセットされる。
複数の実施形態において、1つまたは複数の追加のヘッダフィールドは1つまたは複数の任意ヘッダフィールドである。
複数の実施形態において、第1および第2のデータ特定情報は、それぞれ、第1および第2のユニフォームリソースアイデンティファイア、URI、を含む。
複数の実施形態において、1つまたは複数の任意ヘッダフィールドは、HTTPリクエストの内容から第2URIを生成する少なくとも1つの構築ルールを含む。
複数の実施形態において、1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、代入情報は1つまたは複数の第2のURIを定義するために参照URIにおいて特定される変化サブパーツに取って代わる少なくとも1つの代入値を含む。
複数の実施形態において、参照URIは、受け取られたHTTPリクエストに含まれる第1URIを含む。
複数の実施形態において、変化部分情報は、代入情報に含まれるそれぞれの1つまたは複数の代入値を用いて置換されるべき参照URI内の2つ以上のサブパーツを特定する。
複数の実施形態において、変化部分情報は、2つ以上のサブパーツの代入値をそれらのそれぞれの優先レベルに応じて連続的に考慮するために参照URI内の2つ以上のサブパーツの各々をそれぞれの優先レベルと関連付ける。
複数の実施形態において、追加のヘッダフィールドは第2URIを明示的に含む。
複数の実施形態において、第1データ特定情報は、サーバデバイス上のメインリソースを特定する第1ユニフォームリソースアイデンティファイア、URI、を含むとともに、メインリソースのサブパーツを第1データとして定義するサブパーツ情報を含み;および
任意ヘッダフィールドは、第2データ特定情報を定義するために第1データ特定情報内のサブパーツ情報に取って代わる代入サブパーツ情報を含む。
複数の実施形態において、サブパーツ情報は、メインリソースの中のバイトのレンジ値を含む。
複数の実施形態において、第1および第2のデータは、それぞれ、DASHマニフェストプレゼンテーション記述内の第1および第2のデータ特定情報により特定されるメディアセグメントまたはメディアコンテンツサブパーツである。
本発明の他の1つの目的に応じて、サーバデバイスとクライアントデバイスとの間でデータを送信する方法が提供され、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに、第2データを特定することを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;および
もし任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ、を含む。すなわちHTTPリクエストの内容だけを使用して;および
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップ;
を含む。
クライアントの視点から、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報(すなわち、HTTPリクエストの内容だけ)、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
相関して、本発明はクライアントデバイスとデータを交換するためのサーバデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに第2データを特定することを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしHTTPリクエスト内に任意ヘッダフィールドが存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ;および
第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップおよび/または第2データをクライアントデバイスにプッシュするステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
さらに、本発明はサーバデバイスとデータを交換するためのクライアントデバイスを提供し、このデバイスは:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
HTTP/2においては、プッシュ約束メッセージは、対応するデータの実際のプッシュに先行する。他のプロトコル、特にウェブソケット(Web Sockets)またはSPDY(SpeeDYを表す)のような双方向プロトコル、は、先行するプッシュアナウンス無しに第2データを直ちにプッシュすることができる。
本発明により、クライアントデバイスは、サーバデバイスによるプッシュメカニズムを効率的に制御し、同時に、下位互換性を可能にする。それは、プッシュされるデータとクライアントのニーズとの不一致を低減する。その理由は、クライアントデバイスがプッシュしてほしい第2データ(リソース、またはリソースの一部)は在来のHTTPリクエストの任意ヘッダフィールドを用いて定義されることにある。さらに、下位互換性は、もしサーバデバイスが在来のものであるならば、すなわち任意ヘッダフィールドをサポートしなければ、それは依然としてHTTPリクエストを処理エラー無しに在来の仕方で処理することができるという事実から生じる。
任意ヘッダフィールドを理解するけれどもプッシュフィーチャをサポートしないサーバでは、そのサーバがコンテンツサーバではなくてリレーサーバである場合には、それは任意ヘッダフィールドからの情報を用いてリソースをプリフェッチすることができる。
さらに、この発明は、低スキルのサーバ、例えばDASH知識を持たないサーバ、に依拠することを可能にする。その理由は、プッシュされるべき第2データの特定は、MPDファイルなどが処理されることを要求しないことにある。本発明によれば、そのような特定を実行するために任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、が使用される。
従って本発明の複数の実施形態は、クライアント主導型サーバプッシュアプローチを含む、サーバ案内型ストリーミングのための軽量なメカニズムを提供する。複数の実施形態はDASHネットワークと関連して実装され得る。
本発明の複数の実施形態は、現存するHTTP/2フィーチャと両立し得る。これらのフィーチャは、本発明の複数の実施形態を実装するために有利に使用され得る。
ネットワークの性能は一般的に高められる。
方法およびデバイスの任意のフィーチャは、従属請求項において定義される。それらのうちの幾つかは、方法に関連して以下で説明される。しかし、それらは、対応するデバイスにも適用され得る。
一実施形態では、第1および第2のデータ特定情報は、それぞれ、第1および第2のユニフォームリソースアイデンティファイア、URI、を含む。
1つの特定の実施形態では、1つまたは複数の任意ヘッダフィールドは、HTTPリクエストの内容から第2URIを生成する少なくとも1つの構築ルールを含む。換言すれば、任意ヘッダフィールドは、構築ルールを用いて、1つまたは複数の第2URIを暗に定義する。上記から推測されるように、構築ルールは、1つまたは複数の第2URIを得るために任意ヘッダフィールド、および場合によってはさらに第1URI、を用いるだけである。
例えば、1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、代入情報は1つまたは複数の第2のURIを定義するために参照URIにおいて特定される変化サブパーツに取って代わる少なくとも1つの代入値を含む。従って、この規定は、構築ルールがどのように使用され得るかを定義する。
1つの特定のフィーチャによれば、参照URIは、受け取られたHTTPリクエストに含まれる第1URIを含む。換言すれば、構築ルール(代入プロセス)は、第1URIに、すなわち要求された第1データのURIに、適用される。それは、構築ルール(これは一般的なものであり得る)は、HTTPリクエストの内容だけを用いて、要求された第1データからプッシュされるべき第2データを推定することを意味する。
他の1つの特定のフィーチャによれば、変化部分情報は、代入情報に含まれるそれぞれの1つまたは複数の代入値を用いて置換されるべき参照URI内の2つ以上のサブパーツを特定する。従って、第1URIから複雑な第2URIが生成され得る。
さらに別の1つの特定のフィーチャによれば、変化部分情報は、2つ以上のサブパーツの代入値をそれらのそれぞれの優先レベルに応じて連続的に考慮するために参照URI内の2つ以上のサブパーツの各々をそれぞれの優先レベルと関連付ける。この規定により、クライアントデバイスは、複数の第2URIを順序付け、このように、第2データがサーバデバイスによりプッシュされる順序を主導する。
幾つかの実施形態では、任意ヘッダフィールドは、第2URIを明示的に含む。これは、例えば構築ルールを用いる1つまたは複数の第2URIの暗黙の定義とは反対である。
他の複数の実施形態において、第1データ特定情報は、サーバデバイス上のメインリソースを特定する第1ユニフォームリソースアイデンティファイア、URI、を含むとともにメインリソースのサブパーツを第1データとして定義するサブパーツ情報を含み;および
任意ヘッダフィールドは、第2データ特定情報を定義するために第1データ特定情報内のサブパーツ情報に取って代わる代入サブパーツ情報を含む。
サブパーツ情報の一例は、DASHにおいて使用されるレンジパラメータである。この例では、サブパーツ情報はメインリソースの中のバイトのレンジ値を含む。
複数の実施形態では、第1および第2のデータは、それぞれ、DASHマニフェストプレゼンテーション記述内の第1および第2のデータ特定情報により特定されるメディアセグメントまたはメディアコンテンツサブパーツである。DASHレンジパラメータの使用はメディアコンテンツ/セグメントサブパーツを特定することを可能にし、DASHにおけるURIは、普通、1つのメディアセグメント全体を特定するということに注意されたい。
公知の従来技術と比べると、クライアントデバイスがサーバのプッシュフィーチャを主導または案内するのを助ける必要もある。これと関連して、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法をも提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしその第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られるメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を含む。
プッシュ約束フィーチャを含むプロトコルに関しては、この方法は、第2データをプッシュする前に、第2データのプッシュをアナウンスするプッシュ約束メッセージをクライアントデバイスに送るステップをさらに含む。
クライアントの視点から、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− メインリソースのサブパーツを特定する時間レンジを用いて第1任意ヘッダフィールドにおいて定義される。
さらに、プッシュ約束メッセージも受け取られ得る。
相関して、本発明はクライアントデバイスとデータを交換するためのサーバデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もし第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られるメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を実行するように構成された少なくとも1つのマイクロプロセッサを含む。
1つまたは複数のフィルタリングパラメータは:
− リソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
− DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
− メインリソースのサブパーツを特定する時間レンジを用いて第1任意ヘッダフィールドにおいて定義される。
さらに、本発明はサーバデバイスとデータを交換するためのクライアントデバイスを提供し、このデバイスは:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を実行するように構成された少なくとも1つのマクロプロセッサを含む。
このアプローチの1つの例証は、第1データとしてのメインHTMLウェブページの要求である。このとき任意ヘッダフィールドは、そのHTMLページにおいて参照されるどの1つまたは複数のタイプのサブリソースがプッシュされるべきかを定義することができる。従って、任意ヘッダフィールドはフィルタリングパラメータとして振る舞う。例えば、それは、jpgイメージのサブセットだけをプッシュしてもらうためにサブリソースをフィルタリングするフィルタリングパラメータ“images/*.jpg”を提供することができる。
クライアントデバイスによるサーバプッシュフィーチャの改善された制御は、任意ヘッダフィールドを通して、リクエストにより特定されるデータに対して適用されるフィルタリングパラメータの使用を通して得られる。
重ねて、そのような任意ヘッダフィールドの使用は、サーバのエンドにおける下位互換性を可能にする。
このように本発明の実施形態は、クライアント主導型サーバプッシュアプローチを含む、サーバ案内型ストリーミングのための軽量なメカニズムを提供する。複数の実施形態は、DASHネットワークと関連して実装され得る。
本発明の複数の実施形態は、現存するHTTP/2フィーチャと両立し得る。これらのフィーチャは、本発明の実施形態を実装するために有利に使用され得る。
ネットワークの性能は一般的に高められる。
方法およびデバイスの任意のフィーチャは、従属請求項において定義される。それらのうちの幾つかは、方法と関連して以下で説明される。しかし、それらは、対応するデバイスにも適用され得る。
複数の実施形態において、メインリソースは第1データである。それは、単独で利用されるHTTPリクエストは、サーバデバイスが、プッシュされるべき全ての第2データを効率的に特定することを可能にするということを意味する。サーバデバイスは、上で論じられた従来技術のためのDASH知識などの追加の知識を必要としない。従って低スキルのサーバデバイスが使用され得る。
他の実施形態において、HTTPリクエストは、サーバデバイス上のメインリソースを特定するユニフォームリソースアイデンティファイア、URI、を定義する第2任意ヘッダフィールドを含む。そのような実施形態は、クライアントデバイスが初めにメインリソースを得、その後にそれを、メインリソースから適切な第2データを実際に選択するためにフィルタリングパラメータを特定する(および任意ヘッダフィールドを用いて定義する)ために分析する必要があるとき、実装され得る。実際、そのような場合、クライアントデバイスは、メインリソースを要求するとき、メインリソースの内容へのアクセスをまだ持っていないので、フィルタリングパラメータを定義することはできない。
この規定により、クライアントは、リソースタイプごとのリソースのリストを定義し得るサーバに格納されている静的設定ファイルを指定することができる。そのような静的設定ファイルを使用することは、サーバがリソースタイプフィルタリングパラメータに基づいてリソースを特定するために低スキルを必要とする。
さらに別の実施形態では、2つ(またはより多くの)フィルタリングパラメータがデータの2つ(またはより多くの)それぞれのグループおよび2つのそれぞれの優先レベルと関連付けられ;フィルタリングするステップは、第2データの順序リストを得るために、第2データを、それらがそれぞれデータするグループの優先レベルに応じて順序正しく配列し;プッシュするステップは、その順序リストに従って第2データをプッシュする。クライアントエンドにおいて、それは、2つのフィルタリングパラメータがデータの2つのグループおよび2つのそれぞれの優先レベルと関連付けられることを意味し;第2データは、それらがそれぞれ属するグループの優先レベルに応じた順序で受け取られる。このことは、クライアントデバイスが、プッシュされたデータを自身が受け取りたい順序を効率的に主導することを可能にする。
さらに別の実施形態では、各フィルタリングパラメータはリソースタイプを定義し;その1つまたは複数のリソースタイプは、アプリケーションタイプ(例えばjavascript(登録商標))、テキストタイプ(例えばcssまたはhtml)、イメージタイプ(例えばpngまたはjpg)ビデオタイプ(例えばmp4またはwebm)、オーディオタイプ(例えばmp3またはwav)からの1つまた複数のタイプを含む。
この規定は、特に、html、またはウェブページのロードのためのものなどの類似のエクスチェンジに適用される。もちろん、これらのリソースタイプのいずれの細区分も、特定のコンテンツ(例えば、イメージ、またはJavascriptファンクションのような組み込み型ファンクション)のロードを効率的に行わせるのに役立つであろう。
さらに別の実施形態では、第1任意ヘッダフィールド内の1つまた複数のフィルタリングパラメータは、DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定する。そのようなエレメントは、DASH MPDのAdaptationSetエレメント、PresentationエレメントまたはSegmentエレメントを含み得る。1つの実施形態では、HTTPリクエストにより要求される第1データはDASH MPDである。もちろん、1つの変化形では、DASH MPDは上記の第2任意ヘッダフィールドにおいて明示され得る。
この規定は、クライアントデバイスが、MPDにより定義されるメディアコンテンツの幾つかの部分のプッシュを制御することを可能にする。
さらに別の実施形態では、1つまたは複数のフィルタリングパラメータは、メインリソースのサブパーツを特定する時間レンジ、例えばDASHリクエストにおいて使用される時間レンジ、を用いて第1任意ヘッダフィールドにおいて定義される。すぐ前の規定と同様に、この一つも、クライアントデバイスが、DASHを用いてストリーミングされるメディアコンテンツのサブパーツがサーバデバイスによってどのようにプッシュされるかを制御することを可能にする。
本発明の他の1つの面は、デバイス内のマイクロプロセッサまたはコンピュータシステムにより実行されたときそのデバイスに上で定義されたいずれかの方法を実行させるプログラムを格納する非一時的コンピュータ可読媒体に関連する。
非一時的コンピュータ可読媒体は、方法およびデバイスに関連して上および下で記述されるものに類似するフィーチャおよび利点、特に、クライアントによるサーバプッシュフィーチャの制御を改善することおよび低スキルのサーバデバイスに依拠することについてのそれ、を有し得る。
本発明のさらに別の面は、上で定義されたいずれかの方法の各ステップを実行するようにされた手段を含むデバイスに関連する。
本発明のさらに別の面は、実質的に添付図面の図3aまたは3bまたは5aまたは5bまたは6aまたは7bまたは8と関連して上で記載されるとともにこれらに図示されている、サーバデバイスとクライアントデバイスとの間でリソースを送信する方法に関連する。
本発明による方法の少なくとも幾つかの部分はコンピュータで実行され得る。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)またはソフトウェア面と、全て本明細書において“回路”、“モジュール”または“システム”と一般的に称され得るハードウェア面とを組み合わせた実施形態の形をとることができる。さらに、本発明は、コンピュータ可用プログラムコードが媒体内に具体化されている任意の有形表現媒体において具体化されるコンピュータプログラム製品の形をとることができる。
本発明はソフトウェアを用いて実装され得るので、本発明は任意の適切な搬送媒体でプログラマブルな装置に供給されるコンピュータ可読コードとして具体化され得る。有形搬送媒体は、フロッピーディスク、CD−ROM、ハードディスクドライブ、磁気テープデバイスまたはソリッドステートメモリデバイスなどの記憶媒体を含み得る。一時的搬送媒体は電気信号、電子信号、光信号、音響信号、磁気信号または電磁信号、例えばマイクロウェーブもしくはRF信号、などの信号を含み得る。
本発明の他の特徴および利点は、添付図面と関連して、非限定的な例示的実施形態についての以下の記載から明らかになるであろう。
グラフを用いて、ウェブページなどの、メインリソースに連結されたリソースのセットを示す。 プッシュフィーチャを用いない、図1aのメインリソースのロードを示す。 プッシュフィーチャを用いる、図1aのメインリソースのロードを示す。 プッシュフィーチャが実装されたときのクライアントデバイスの在来のステップを、フローチャートを用いて、示す。 プッシュフィーチャが実装されたときのサーバデバイスの在来のステップを、フローチャートを用いて、示す。 ウェブページをロードするためのHTTPエクスチェンジを示す。 従来技術によるDASH指向クライアント−サーバシステムを示す。 本発明の実施形態が実装され得るクライアント−サーバシステムを示す。 本発明の実施形態が実装され得るDASH指向クライアント−サーバシステムを示す。 メディアプレゼンテーションの構築を示す。 DASHメディアプレゼンテーション記述、MPDファイルの構造を示す。 図3aのシステムにおけるクライアントの振る舞いを説明する主要ステップを示す。 図3bのシステムにおけるストリーミング指向クライアントの振る舞いを説明する主要ステップを示す。 図3aまたは3bのシステムにおけるサーバの振る舞いを説明する主要ステップを示す。 本発明によるプッシュヘッダの例示的構造を説明する。 SegmentTemplateを有する例示的MPDファイルを示す。 図7aのMPDファイルに基づく、本発明を実装するクライアント−サーバエクスチェンジを示す。 DASHストリーミングと関連する、本発明によるプッシュヘッダの例を示す。 実施形態によるデバイスの概略図である。 幾つかのレベルでのテンプレートURIの宣言を説明するMPDサンプルを示す。 サーバ内でのプッシュポリシー通知の確認応答の例を示す。 サーバ内でのプッシュポリシー通知の確認応答の例を示す。 サーバ内でのプッシュポリシー通知の確認応答の例を示す。 サーバ内でのプッシュポリシー通知の確認応答の例を示す。 サーバ内でのプッシュポリシー通知の確認応答の例を示す。 一意識別子に基づくクライアントとサーバとの間でのプッシュポリシーに関連する情報の交換の例を示す。 一意識別子に基づくクライアントとサーバとの間でのプッシュポリシーに関連する情報の交換の例を示す。
上で簡潔に紹介されたように、本発明はHTTP通信ネットワークを通してのデータ送信に関する。1つの用例はDASHなどの適応データストリーミングである。
HTTPは、ウェブリソース、通例ウェブページ、を送るために用いられるプロトコルである。HTTPはクライアントおよびサーバに対して次のことを暗示する:
− クライアントはサーバにリクエストを送り、そのリクエストは様々な種類の“ヘッダ”が任意に後に続く“request_line”から構成される。“request−line”は、普通、場合によってはレンジヘッダなどを用いてサーバ上の要求されたリソースまたはデータを特定する“Request−URI”パラメータと共にメソッド(例えば“GET”)を含む;
− サーバは、そのウェブリソースのリプリゼンテーションを含むレスポンスを用いてクライアントのリクエストに応える。
リクエストおよびレスポンスは、様々なパーツ、特にHTTPヘッダ、を含むメッセージである。HTTPヘッダは、値とともに名を含む。例えば、“Host: en.wikipedia.org”を考察すると、“Host”はヘッダ名であり、それの値は“en.wikipedia.org”である。それは、クエリされたリソースをホストに示すために使用される(例えば、HTTPを説明するWikipedia(ウィキペディア)ページはHTTP://en.wikipedia.org/wiki/HTTPから入手できる)。HTTPヘッダは、クライアントのリクエストおよびサーバのレスポンスにおいて出現する。
HTTPの新しいバージョンであるHTTP/2は、ストリームを通してリクエスト/レスポンスを交換することを可能にする。ストリームは、どのHTTPリクエストおよびレスポンスの交換のためにもHTTP/2コネクションの内部で生成される。フレームは、リクエストおよびレスポンスの内容、疑似ヘッダおよびヘッダを伝えるためにストリーム内で交換される。
HTTP/2は:
− HEADERS:HTTPヘッダの送信のために提供される
○HTTP/2はヘッダ(任意である。すなわち処理側デバイスに理解されなければ無視される)をより厳しいルールに従う疑似ヘッダから区別する。後者は、HTTPメソッドおよびrequest−URIを示すために以前のHTTPバージョンで定義されているrequest−lineのマッピングに対応する。本文書においては、“HTTPヘッダ”または“ヘッダ”は、任意のヘッダを指定するべく意図されているのであり、明示的にそのようなものとして指定される疑似ヘッダを指定するべく意図されているのではない。
○さらに、本文書においてもなお、“Request−URI”は、RFC2616で定義されているRequest−URI(すなわち、“request−line”に用いられているサーバ上の要求されているリソースを特定するパラメータ)またはそれの同等物/HTTP/2疑似ヘッダへの変換を指定するべく意図されている。
− DATA:これは、HTTPメッセージ内容の送信のために提供される
− PUSH_PROMISE:これはプッシュされる内容をアナウンスするために提供される
− PRIORITY:これはストリームの優先順位をセットするために提供される
− WINDOW_UPDATE:これは制御フローウィンドウの値をアップデートするために提供される
− SETTINGS:これは設定パラメータを伝えるために提供される
− CONTINUATION:これはヘッダブロックフラグメントのシーケンスを継続させるために提供される
− RST_STREAM:これはストリームを終端させまたはキャンセルするために提供される
などの様々な意味を有するフレームの限られたセットを定義する。
HTTP/2では、リクエストはそのとき第1HEADERフレームおよび1つまたは複数のDATAフレームに変換され、HTTP/1.xからのrequest−lineは、HTTP/2仕様に記載されているように疑似ヘッダフィールドに変換される。
本明細書は、クライアントからサーバへ送られるメッセージを示すために“リクエスト”または“HTTPリクエスト”を使用し、サーバからクライアントへのメッセージを示すために“レスポンス”または“HTTPレスポンス”を使用する。リクエストおよびレスポンスの他に、私たちは、サーバによりクライアントに対して開始されるメッセージに対応する通知またはサーバ通知についても語る。この用語は、HTTP/1.xおよびHTTP/2に準拠している。
サーバによるプッシュは、サーバが請求されていないウェブリソースリプリゼンテーションをクライアントに送ることを可能にするためにHTTP/2に導入されている。ウェブページなどのウェブリソースは一般的に他のリソースへのリンクを含み、それら自身は他のリソースへのリンクを含み得る。ウェブページを完全に表示するためには、リンクされまたはサブリンクされているリソースの全てがクライアントにより取り出されなければならないことがある。このますます増加する発見はウェブページの低速な表示を、特にモバイルネットワークなどの大レイテンシのネットワークにおいて、もたらすであろう。
所与のウェブページに対するリクエストを受け取ると、サーバは、要求されたリソースの完全な処理のために他のどのリソースが必要かを知ることができる。要求されたリソースとリンクされているリソースとを同時に送ることにより、サーバは、そのウェブページのローディング時間を短縮することを可能にする。従って、プッシュフィーチャを用いて、サーバは、所与のリソースを要求された時に追加のリソースリプリゼンテーションを送ることができる。
リンクされているリソースの例として、図1aは、サーバにより所有されているリソースのセットとそれらの関係とのグラフを示す。リソースのセットは絡み合っている:R、R、R、およびRは、クライアントにより適切に処理されるべく一緒にダウンロードされなければならないリソースである。さらに、サブリソースAからHが定義される。これらのサブリソースは1つ、2つまたは3つのリソースに関連付けられている。例えば、AはRにリンクされ、CはR、RおよびRにリンクされている。
図1eのフローチャートを参照して、プッシュフィーチャを実装するサーバの例示的動作モードが記載される。
ステップ100の間に、サーバは最初のリクエストを受け取る。次に、サーバは、ステップ101の間にレスポンスの一部としてプッシュするリソースを特定し、ステップ102の間にプッシュ約束メッセージをクライアントに送る。その後、それはステップ103の間にコンテンツレスポンスを送り始める。プッシュ約束メッセージは、サーバが、例えば図1aに示されている依存性に基づいてプッシュしようとしている他のリソースを特定する。これらのメッセージは、どのプッシュされるリソースが送られるかを前もってクライアントに知らせるために送られる。特に、これは、同時にプッシュされつつあるかまたはまさにプッシュされようとしているリソースに対するリクエストをクライアントが送るリスクを減らす。このリスクをさらに減らすために、サーバは、プッシュ約束メッセージを、そのプッシュ約束に記載されているリソースに関連するレスポンスの部分を送る前に、送るべきである。これは、クライアントが、約束されたリソースのプッシュを、もしクライアントがそれらのリソースを欲しくなければ、キャンセルすることも可能にする。次に、ステップ104の間にレスポンスと全ての約束されたリソースとを送る。プロセスはステップ105の間に終了する。
図1bおよび1cは、それぞれ、プッシュフィーチャを使用しないウェブページのロードおよびプッシュフィーチャを使用するウェブページのロードを示す。
図1bは、サーバのプッシュフィーチャを使用しないHTTPエクスチェンジを示す:クライアントはRを要求し、次にそれはR、A、B、CおよびDを発見してそれらを要求する。それらを受信した後、クライアントはR、R、FおよびGを要求する。最後にクライアントはHおよびIサブリソースを要求する。従って、必要とされるどのリソース:リソースRからRおよびサブリソースAからI、に対してもリクエストが送られなければならない。さらに、このプロセスは、リソースのセット全体を取り出すために4つのラウンドトリップを必要とする。
図1cは、直接連結されているサブリソースのサーバによるプッシュのフィーチャを使用するHTTPエクスチェンジを示す。Rの要求後、サーバはRを送るとともにA、B、CおよびDをプッシュする。クライアントはRを特定し、それを要求する。サーバはRを送り、FおよびGをプッシュする。最後にクライアントはR、Rを特定し、これらのリソースを要求する。サーバはR、Rを送り、HおよびIをプッシュする。このように、リクエストの数はエレメントRからRに限定される。エレメントAからIは図1aに示されている依存性に基づいてサーバによりクライアントに“プッシュ”され、これにより、関連するリクエストを不要にする。このプロセスは、リソースのセット全体を取り出すために3つのラウンドトリップを必要とする。
このように、図1bおよび1cに示されているように、サーバがプッシュフィーチャを使用すると、リソースをそのサブリソースと共にロードするのに必要なHTTPラウンドトリップ(リクエスト+レスポンス)の数が減らされる。これは、モバイルネットワークなどの大レイテンシのネットワークのために特に興味あることである。
リソースのセット、典型的にはウェブページとそのサブリソース、のローディング時間を短縮するためにHTTP/2は複数のリクエストおよびレスポンス優先順位を並行して交換することを可能にする。図2に示されているように、ウェブページは、JavaScript、イメージなどの数個のリソースのダウンロードを必要とすることがある。最初のHTTPエクスチェンジ200の間に、クライアントはHTMLファイルを取り出す。このHTMLファイルは、2つのJavaScriptファイル(JS1、JS2)、2つのイメージ(IMG1、IMG2)、1つのCSSファイルおよび1つのHTMLファイルへのリンクを含む。エクスチェンジ201の間に、クライアントは各ファイルに対するリクエストを送る。図2のエクスチェンジ201において与えられる順序はウェブページの順序に基づき、クライアントはリンクが発見されると直ちにリクエストを送る。その後サーバは、JS1、CSS、IMG1、HTML、IMG2およびJS2に対するリクエストを受信し、これらのリクエストをその順序に従って処理する。その後、クライアントはこれらのリソースをその順序で取り出す。
クライアントは、ウェブページ記述(HTMLファイル)において挙げられているサブリソースをダウンロードするために自身の適切な順序を持つことを望むであろう。そのような場合、サーバにとっては、特にその順序を用いてプッシュフィーチャを実行するために、この情報を持つことは貴重なことであろう。
図1dのフローチャートは、プッシュフィーチャが実行されるときのクライアント側でのプロセスを示す。
クライアントは、サーバから取り出すリソースを特定すると、初めにステップ106の間に、対応するデータが自身のキャッシュメモリ内に既に存在するか否かをチェックする。そのリソースが既にキャッシュメモリ内に存在するならば(Yes)、それはステップ107の間にそれから取り出される。キャッシュされているデータは、以前のリクエストから取り出されたデータまたは以前にサーバによりプッシュされたデータであろう。それがキャッシュメモリ内に存在しない場合(No)、クライアントはステップ108の間にリクエストを送ってサーバのレスポンスを待つ。
サーバからフレームを受け取ると、クライアントはステップ109の間にそのフレームがプッシュ約束に対応するフレームであるか否かをチェックする。もしそのデータフレームがプッシュ約束に対応するならば(Yes)、ステップ110の間に、クライアントはそのプッシュ約束を処理する。そうするために、クライアントは、プッシュされるべきリソースを特定する。クライアントがそのリソースを受け取ることを希望しなければ、クライアントはエラーメッセージをサーバに送ることができるのでサーバはそのリソースをプッシュしない。そうでなければ、クライアントは、対応するプッシュされたコンテンツを受け取るまでそのプッシュ約束を保存しておく。そのプッシュ約束は、約束されたリソースをサーバがプッシュしている間にクライアントがその約束されたリソースを要求しないように、使用される。
データフレームがプッシュ約束に対応しない場合(No)、ステップ111の間に、そのフレームがプッシュされたデータに関連するデータフレームであるか否かがチェックされる。それがプッシュされたデータに関連する場合(Yes)、クライアントはステップ112の間にそのプッシュされたデータを処理する。そのプッシュされたデータはクライアントのキャッシュの中に格納される。
そのフレームがプッシュされたデータに関連するデータフレームでない場合(No)、ステップ113の間に、それがサーバから受信されたレスポンスに対応するか否かがチェックされる。そのフレームがサーバからのレスポンスに対応する場合(Yes)、そのレスポンスはステップ114の間に処理される(例えば、アプリケーションに送られる)。
そうでない場合(No)、ステップ115の間に、そのフレームがレスポンスの終わりを特定するか(Yes)否かがチェックされる。この場合、プロセスはステップ116の間に終了される。そうでない場合、プロセスはステップ109に戻る。
このように、クライアントはレスポンスおよび約束されたリソースを受け取ると思われる。従って、取り出されたウェブページを表示するブラウザなどのアプリケーションによってレスポンスが使用されている間、約束されたリソースは一般的にクライアントのキャッシュに格納されている。プッシュされたリソースのうちの1つをクライアントアプリケーションが要求すると、そのリソースはネットワーク遅延を招くことなく直ちにクライアントのキャッシュから取り出される。
プッシュされたリソースのキャッシュにおける保存は、キャッシュ制御ディレクティブを使用して制御される。キャッシュ制御ディレクティブは、レスポンスの制御のためにも使用される。これらのディレクティブは特にプロキシに対して適用可能であり、リソースは、プッシュされたリソースであってもプッシュされたリソースでなくても、プロキシによりまたはクライアントのみにより、保存され得る。
上で言及されたように、クライアントは、ウェブページ記述(HTMLファイル)において挙げられているサブリソースをダウンロードする自身の適切な順序を持つことを望むであろうから、サーバのエンドにおけるプッシュフィーチャを主導するべきである。本発明は、この点での現下の状況を、例えばクライアントが第1リソースの要求後に希望することのある(サブ)リソースまたは(サブ)リソースの1つもしくは複数の部分の特定のセットをサーバに知らせるために、改善することを意図している。特に、本発明は、僅かのインテリジェンスしか持っていないサーバ、例えば、クライアントがそれらの(サブ)リソースを特定するための根拠としたウェブページ記述などを処理するための知識を持っていないサーバ、に適合しようとしている。
本発明に対するそのようなニーズは、HTTPを通してのHTTPストリーミングに関して、例えば、プッシュフィーチャを使用するとき、DASHなどの適応HTTPストリーミングと関連して、大きくなる。
HTTPを通してのメディアストリーミングの一般的原理が図3に示されている。HTTPを通しての適応メディアストリーミングのための新しいプロトコルおよび標準規格のほとんどは、この原理に基づいている。これはDASHの場合であり、以下の説明はこれについて言及する。
メディアサーバ300はクライアント310にデータをストリーミングする。メディアサーバはメディアプレゼンテーションを保存している。例えば、メディアプレゼンテーション301はオーディオおよびビデオデータを含む。オーディオおよびビデオは同じファイルにおいてインターリーブされ得る。メディアプレゼンテーションが構築される仕方は、以下で図4aと関連して記載される。メディアプレゼンテーションは、独立してアドレスされダウンロードされ得る小さな独立の連続的な、MP4セグメントなどの、一時的セグメント302a、302bおよび302cに時間的に分割される。これらの一時的セグメントの各々のためのメディアコンテンツのダウンロードアドレス(HTTP URL)は、クライアントに対してサーバによりセットされる。オーディオ/ビデオメディアコンテンツの各一時的セグメントは、1つのHTTPアドレスと関連付けられる。
メディアサーバは、メディアコンテンツ特性(例えばメディアのタイプ:オーディオ、ビデオ、オーディオ−ビデオ、テキストなど)、符号化フォーマット(例えば、ビットレート、タイミング情報など)、一時的メディアセグメントおよび関連URLのリストを含むメディアプレゼンテーションの内容を記述するマニフェストファイルドキュメント304(その一例が図7aに示されている)をも保存している。あるいは、このドキュメントは、一時的メディアセグメントおよび関連URLの明示的リストを再構築することを可能にするテンプレート情報を含む。このドキュメントは、エクステンシブルマークアップランゲージ(XML:eXtensible Markup Language)を用いて書かれ得る。
マニフェストファイルはクライアントに送られる。ステップ305中にマニフェストファイルを受け取ると、クライアントはメディアコンテンツの一時的セグメントとHTTPアドレスとの関連を知らされる。さらに、マニフェストファイルは、メディアプレゼンテーションの内容(本例ではインターリーブされているオーディオ/ビデオ)に関する情報をクライアントに提供する。この情報は、解像度、ビットレートなどを含み得る。
受信した情報に基づいて、クライアントのHTTPクライアントモジュール311は、マニフェストファイルに記載されているメディアコンテンツの一時的セグメントをダウンロードするためのHTTPリクエスト306を送ることができる。サーバのHTTPレスポンス307は、要求された一時的セグメントを伝える。HTTPクライアントモジュール311は、レスポンスから一時的メディアセグメントを抽出して、それらをメディアエンジン312の入力バッファ307に供給する。最後に、メディアセグメントは、それぞれのステップ308および309の間に復号されて表示され得る。
メディアエンジン312は、次の一時的セグメントを適時に出させるためのリクエストを得るためにDASH制御エンジン313と相互に作用する。次のセグメントは、マニフェストファイルから特定される。そのリクエストが発せられる時は、受信バッファ307が満杯であるか否かに依存する。DASH制御エンジン313は、バッファがオーバーロードされたり完全に空になったりするのを防止するためにバッファを制御する。
メディアプレゼンテーションおよびマニフェストファイルの生成は、図4aと関連して記載される。ステップ400および401の間に、オーディオおよびビデオデータが取得される。次に、オーディオデータが402の間に圧縮される。例えば、MP3標準規格が使用され得る。さらに、ステップ403の間にビデオデータが並行して圧縮される。MPEG4、MPEG/AVC、SVC、HEVCまたはスケーラブルHEVCなどのビデオ圧縮アルゴリズムが使用され得る。オーディオおよびビデオデータの圧縮が行われたならば、オーディオおよびビデオ基本ストリーム404、405が利用可能になる。基本ストリームは、ステップ406の間にグローバルメディアプレゼンテーションにエンキャプシュレートされる。例えば、符号化されたオーディオおよびビデオ基本ストリームの内容をグローバルメディアプレゼンテーションとして記述するためにISO BMFF標準規格(または、ISO BMFF標準規格のAVCへのエクステンション、SVC、HEVC、HEVCのスケーラブルエクステンションなど)が使用され得る。これにより得られたエンキャプシュレートされたメディアプレゼンテーション407は、ステップ408の間に、XMLマニフェストファイル409を生成するために使用される。ビデオデータ401およびオーディオデータ400の数個のリプリゼンテーションが取得され、圧縮され、エンキャプシュレートされ、メディアプレゼンテーション407において記述され得る。
図4bに示されているMPEG/DASHストリーミングプロトコルの特別の場合については、マニフェストファイルは“メディアプレゼンテーション記述(Media Presentation Description)”(あるいは“MPD”ファイル)と呼ばれる。このファイルのルートエレメントは、全てのプレゼンテーションとプロファイルまたはスキーマのようなDASH情報とに適用される属性を含むMPDエレメントである。メディアプレゼンテーションは、ピリオドエレメントにより表示される一時的ピリオドに分割される。MPDファイル410は、各一時的ピリオドに関連する全てのデータを含む。この情報を受け取ることにより、クライアントは時間の各ピリオドのためのコンテンツを知る。各ピリオド411について、AdaptationSetエレメントが定義される。
1つの可能な構成は、プレゼンテーションに含まれるメディアタイプごとに1つまたは複数のAdaptationSetを持つことである。ビデオに関連するAdaptationSet412は、サーバから入手し得る符号化されたビデオの様々な可能なリプリゼンテーションに関する情報を含む。各リプリゼンテーションは、リプリゼンテーションエレメントに記述される。例えば、第1リプリゼンテーションは、640×480の空間解像度で符号化され500kbits/sのビットレートで圧縮されたビデオであり得る。第2リプリゼンテーションは、同じではあるけれども250kbits/sのビットレートで圧縮されているビデオであり得る。
各ビデオは、その後、クライアントがそのビデオに関連するHTTPアドレスを知っているならば、HTTPリクエストによりダウンロードされ得る。各リプリゼンテーションの内容とHTTPアドレスとのアソシエーションは、追加のレベルの記述:一時的セグメントを用いて行われる。各ビデオリプリゼンテーションは一時的セグメント413(通例、数秒)に分割される。各一時的セグメントは、HTTPアドレス(URLまたは1バイトのレンジを有するURL)を介してアクセスし得るサーバに格納されているコンテンツを含む。MPDファイルに一時的セグメントを記述するために数個のエレメント:SegmentList、SegmentBaseまたはSegmentTemplate、が使用され得る。
さらに、特定のセグメント:初期化セグメント、が利用可能である。初期化セグメントは、(もしビデオがISO BMFFまたはそのエクステンションを用いてエンキャプシュレートされているならば)そのエンキャプシュレートされているビデオストリームを記述するMP4初期化情報を含む。例えば、それは、クライアントがそのビデオに関連する復号アルゴリズムをインスタンス化するのを助ける。
初期化セグメントおよびメディアセグメントのHTTPアドレスは、MPDファイルにおいて明示される。この説明において“セグメント”は一時的フラグメント(例:メディアがISO/IEC14496パート12およびパート15に従ってエンキャプシュレートされるときにはmp4ファイル内の1つまたは複数のmoof+mdatボックス)または一時的セグメント(例えば、“styp”指示から始まるmp4セグメント)を示すために使われることに留意しなければならない。
図7aに、例示的MPDファイルが示されている。示されているMPDファイルにおいて2つのビデオリプリゼンテーションが記述されている。第1のものは低解像度バージョン(“Representation id=“h264bl_low””)であり、第2のものはより大きな解像度のバージョン(“Representation id=“h264bl_full””)である。両方のビデオリプリゼンテーションが同じAdaptationSetに含まれ、各リプリゼンテーションの各セグメントがSegmentTemplate URLを通してアドレスされる(“media=“mp4−live−$RepresentationID$−$“Number$.m4s””。ここで$RepresentationID$は2つの可能なビデオリプリゼンテーションの間で変化し、$Number$はビデオの中での位置に沿って変化する)。
明瞭性を得るために、存在することのある関連付けられているオーディオストリームは表示されておらず、それらは別のAdaptationSetにおいて、それぞれ代わりのバージョンと共に、記述され得る。
ストリーミングセッションを開始するとき、DASHクライアントはマニフェストファイルを要求する。受け取ると、クライアントはそのマニフェストファイルを分析し、その環境に適するAdaptationSetのセットを選択する。次に、クライアントは、MPDの中の各AdaptationSet内の、その帯域幅、復号およびレンダリングの能力に適合するリプリゼンテーションを選択する。次に、それは、要求されるべきセグメントのリストを前もって、まず第1にメディアデコーダのための初期化情報から、構築する(図7aの例ではSegmentTemplate@initialization URL)。初期化情報がデコーダにより受信されると、それらは初期化され、クライアントは第1メディアデータを要求して、実際に表示を開始する前に最小限の量のデータをバッファリングする。
これらの複数のリクエスト/レスポンスは、ストリーミングセッションのスタートアップ時に遅延をもたらし得る。リスクは、サービスプロバイダが自身のクライアントがそのビデオを見始めることなくサービスから去るという事態に遭遇することである。この、クライアントによって実行される第1メディアデータチャンクに対する最初のHTTPリクエストと、そのメディアデータチャンクが実際に再生しはじめるときとの間の時間をスタートアップ遅延と呼ぶのは普通のことである。それはネットワークのラウンドトリップ時間だけでなくメディアセグメントのサイズにも依存する:セグメントが長いほど、スタートアップ遅延は長くなる。
さらに、ライブストリーミングでは、クライアントがメディアセグメントを要求した時点で、このセグメントはサーバにおいて準備状態ではないかもしれない。レイテンシを小さくするために、セグメントの長さを小さくすることは有益であるかもしれない。しかし、そのようにセグメントの長さを小さくすると、リクエスト/レスポンスの数が劇的に増加して、かなりのネットワークトラフィックオーバーヘッドがもたらされるかもしれない。
そのようなトラフィックオーバーヘッドの増加を低減するために、提案されるアプローチは、サーバの自発性だけに基づいてデータをクライアントにプッシュできるようにサーバにおいてHTTP/2のプッシュフィーチャを使用することである。より一般的にHTTPに関して、そのようなアプローチ(プッシュフィーチャの使用)は、リソースを多数のサブリソース(例えば、css、jscript、イメージを含むウェブページ;またはセグメントのリストを含むDASHマニフェスト)に編成し得るようにHTTPクライアントとHTTPサーバとの間でのラウンドトリップの数(および、次にレイテンシ)を減らすことを可能にする。
上で言及されたように、HTTPを通してのDASHストリーミングと関連してプッシュフィーチャをそのように使用することは、特許文献1において既に提案されている。
この刊行物において提案されているメカニズムは、特に、プッシュポリシーに従ってどのデータまたはリソースをプッシュするかを決定するためにMPDファイルにプッシュポリシーを適用できるように、サーバデバイスがDASHについての高度に複雑な知識を持つことを要求する。
これらのメカニズムは、HTTPを通しての適応ストリーミングの幾つかの有益な面に反する。
より正確には、HTTPを通しての適応ストリーミングは、クライアントが一般的に自身の目的のためにマルチメディアコンテンツの最良のバージョンを選択し得るのでクライアントがストリーミングを案内するという仮定に基づいている。例えば、クライアントは、自身のフォームファクタおよびスクリーン解像度に基づいてHDビデオを要求するべきかそれともSDビデオを要求するべきかを知るであろう。HTTPを通しての適応ストリーミングのためのプッシュフィーチャの使用は、そのような振る舞いを維持し、プッシュされるデータに関してクライアントがサーバを完全に主導できるようにするべきである。
さらに、MPEG DASH標準規格のようなHTTPを通しての適応ストリーミングはサーバ側においてほとんど全くインテリジェンスを必要としない:クライアントにより送られるHTTPリクエストは単純なのでマニフェストおよびメディアセグメントにサービスをするために単純なHTTPサーバで十分である。このようにサーバが単純であるので、HTTPの標準的ウェブ使用法以外の追加のコストをサーバリソースに要求することなく多数のストリーミングクライアントを供給することが可能である。特に、多数のストリーミングクライアントは、標準的HTTP最適化技術を用いてコンテンツ配信ネットワークを通して管理され得る。HTTPを通しての適応ストリーミングのためのプッシュフィーチャの使用は、このサーバの単純性を維持するべきである。
本発明は、HTTPと一般的に関連してプッシュフィーチャの使用を改善することを目指している。それは特に、HTTPを通してのストリーミングとDASHなどのHTTPを通しての適応ストリーミングとに適用される。しかし、本発明は、好ましくは、HTTPを通しての適応ストリーミングの現存する有益なフィーチャをなるべく維持するべきである。これは、次の要件:
− 潜在的な無用の(クライアントにとって)データがサーバによりプッシュされるのを避けるためにクライアント制御の送信を維持すること;
− 上で言及されたスケーラビリティの利点を維持するためにサーバ側での特定のアプリケーション知識の使用を防止すること;
− レガシークライアントおよび/または本発明を実装しないサーバの間でのインタオペラビリティおよびキャッシュ能力を維持するためにリソースおよびサブリソースを在来の仕方で要求する仕方を維持すること。例えば、DASHセグメントの場合、これは、要求されたセグメントを処理するために特定の動作(例えばリクエスト−URIの変換など)を必要とするリクエストフォーマットの導入を避けるべきである;
− サーバ側の処理を少なく保つこと;
のうちのなるべく多くが満たされるべきであることを意味する。
本発明のアイデアは、クライアントが(可能ならばプッシュメカニズムを用いて)受信したい追加のリソース/データまたは複数のリソースをサーバが判定するためのヒントを提供するか、あるいはクライアントが追加のリソースを受け取りたくないということをサーバが判断するためのヒントを提供する任意の情報を、第1データまたはリソースを要求する在来のHTTPリクエストに含めることである。特に、これらのヒントは、追加のリソース/データまたは複数のリソースの決定が文脈上の情報やリクエストの外側にある情報を使用しない仕方で定義される。HTTPリクエストは、追加のリソース/データまたは複数のリソースの定義に関して自動記述的リクエストと見られ得る。
そのようなヒントの例は後述され、明示的なURI/URLもしくはURI/URLのリスト、自動記述的HTTPリクエストに基づく構築ルールおよびリソース/データのフィルタリングルールの使用を通しての暗黙のURI/URLを含む。
本発明によるサーバ側方法は、サーバデバイスとクライアントデバイスとの間でデータを送信しようとするものであり、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、このHTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに第2データを可能にする1つまたは複数の任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もしその任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報、を用いて、サーバデバイス上の第2データを特定することを可能にする第2データ特定情報を決定するステップ、を含む。すなわち、HTTPリクエストは第2リソースを決定するために自給自足的である、すなわち、自己記述的である;および
第2データをクライアントデバイスにプッシュするとアナウンスするプッシュ約束メッセージを送るおよび/または第2データをクライアントデバイスにプッシュするステップ;
を含む。
特定の実施形態では、クライアントにより要求された第2データまたは追加リソースをサーバがプッシュすることをクライアントに知らせるために、サーバが第2データまたは追加リソースをプッシュしないことを知らせるために、またはサーバが送信し得る第2データまたは追加リソース/データまたは複数のリソースをクライアントが決定するためのヒントを提供するために、確認応答データがクライアントに送られる。
本発明によるクライアント側方法は、サーバデバイスとクライアントデバイスとの間でデータを送信しようとするものであり、クライアントデバイスにおいて:
サーバデバイスから得られるべきデータを特定するステップ;
その特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは、サーバデバイス上の第1データを特定することを可能にする第1データ特定情報を含むとともに1つまたは複数の任意ヘッダフィールドを含み、その任意ヘッダフィールドだけ、および場合によってはさらに第1データ特定情報(すなわち、HTTPリクエストの内容だけ)、に基づいて、サーバデバイス上の特定されたデータから第2データを特定することを可能にする第2データ特定情報を定義する、生成するステップ;
第1データを得るとともにサーバデバイスに第2データをプッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
特定の実施形態では、クライアントは、プッシュリクエストに関する確認応答データを受け取ると、第2データまたは追加リソースを得るために自身のストラテジーを適応させる。
第1データ特定情報は、普通、HTTPリクエスト(またはそれの、HTTP/2疑似ヘッダへの変換)の“request−line”の一部を形成するリクエストURIに対応する。
本発明により提案されるアプローチは、上記要件の全てまたは部分を満たす。
第1に、本発明の方法は、クライアントが、データを要求すると同時に、プッシュするべき1つまたは複数の追加のまたは関連するリソースをサーバに対して明示することを可能にする。クライアントはこれらのリソースを、これらに対する特別のリクエストを送ることなく、受け取るであろうから、ネットワークトラフィックおよびレイテンシが低減される。
さらに、それらは、(本発明による任意ヘッダの、サーバのサポートに依存して)クライアントが追加リソースを受け取るであるか、またはクライアントがそれらを要求しなければならないか、をクライアントが(プッシュ約束フレームを通じて)知らされることをも可能にする。このように現存するストリーミングサーバとの下位互換性は維持され、フィーチャの展開はより容易にされるはずである。
さらに、それらは、サーバがクライアントにプッシュされるべき次の1つまたは複数のリソースを、アプリケーション特有の知識を必要とすることなく、容易に特定することをも可能にする。従って、サーバ側での処理は限定され、多数のクライアントが同じサーバに要求することをオーソライズされ得る。
図3aは、本発明の実装のためのクライアント/サーバシステムの一般的説明図を示す。以下で、ビデオはメディアまたはコンテンツの特別の場合であることを分かった上で、リソースを示すために“ビデオ”、“メディア”または“コンテンツ”が差別されずに言及される。同様に、サーバからクライアントに送信されるべきメディアリソースの記述ファイルを示すために“MPD”または“マニフェスト”または“ストリーミングマニフェスト”または“HTMLページ”が差別されずに言及される。
本発明は、図3aに示されているようにクライアントとサーバとの間でのHTTP通信、特にデータストリーミング、を改善することを狙っており、より正確にはリソースのローディング時間およびネットワークトラフィックオーバーヘッドの両方を低減することを狙っている。
サーバ350は、クライアント380がダウンロードできるリソースを保存している。サーバ上のリソースは、サブリソース(352a、b、c)を参照または包含するメインリソース351に分類される。
例えば、メインリソースはHTMLページであり得、サブリソースは、cssリソース、イメージおよび/またはメディアファイル、javaスクリプトコードまたはメインリソースにおいて参照される他のHTMLページであり得る。これらのリソースのアクセス権および編成は、静的設定ファイル355において記述され得る。
クライアント380により発せられるHTTPリクエストはHTTPプロセッサ356により受信されて処理され、このプロセッサ356は、そのリクエストをリソース特定およびヘッダ処理に分解するリクエストパーサ357を含む。
本発明は、プッシュヘッダプロセッサ358により行われる1つの特定のヘッダ処理を考慮する。後者は、以下で記載されるようにHTTPリクエストにおいて任意的である1つまたは複数の特定のプッシュヘッダの処理を担当する。上で簡潔に紹介されたように、その1つまたは複数の特定のプッシュヘッダに基づき、HTTPリクエストだけを用いて、サーバは追加リソースへの1つまたは複数の参照を、それらをプッシュするために、生じさせることができる。
リソースマネージャ360は、リソースの存在/不在/鮮度のチェックおよび要求されたリソースのHTTPプロセッサ356への供給を担当する。次に、レスポンスジェネレータ359は、これらの供給されたリソースを、クライアントに送られる1つまたは複数のHTTPレスポンス(HTTP/1.x)またはフレーム(HTTP/2において)にエンキャプシュレートする。
クライアント380は、数個のクライアントモジュールにより処理されるコンテンツをユーザが選択し、それと相互作用しおよび見るためのユーザインターフェース381を有する。
ユーザインターフェース381は、ユーザのクリックを、HTTPクライアント382内のリクエストスケジューラ383により処理される追加コンテンツに対するリクエストに変換する。その追加コンテンツに対するリクエストは、ダウンロードされるべきリソースのリストとして変換され得る。HTTPクライアント382は、HTTPサーバ350との通信を処理する。
HTTPクライアントは、サーバ350に対してリソースを要求するためにHTTPリクエスト(HTTP1.x)またはフレーム(HTTP/2)を構築するリクエストジェネレータ384を含む。
本発明により、HTTPクライアント382は、リクエストスケジューラ383内で待機している次の1つまたは複数のリソースを明示しおよび/またはプッシュポリシー、プッシュストラテジーまたはプッシュディレクティブを明示する上記の特定の(任意の)プッシュヘッダをHTTPリクエストに挿入することを担当する特定のモジュール、すなわちプッシュヘッダジェネレータ385、を含む。特定の実施形態では、プッシュヘッダは、プッシュタイプ、および場合によっては関連するパラメータ、を含み得る。
サーバから受信されたレスポンスまたは通知は、データを抽出してそれらをクライアントキャッシュ/メモリ387に格納するレスポンスパーサ386により処理される。レスポンスヘッダにより運ばれる情報も、HTTPクライアント311により受け取られて処理され、DASH制御エンジン313が利用できるようにされ得る(例えば、DASHアプリケーションがXmlHTTPRequestを用いてjavascriptコードで書かれているとき)。
これらのデータはレンダリングエンジン388により使用され、このエンジンはデータをパース(389)してそれらを適切な復号モジュール390にディスパッチする。それらのデータに基づいて、後者は、復元されたデータを、ユーザインターフェース381でのレンダリングのために、ディスプレイ391に供給する。
本発明により、パースモジュール389は、ユーザにとって潜在的に興味あるものである追加リソースを特定するために、受け取られたデータの内容を分析することができる。そのような場合、パースモジュール389は、それらの追加リソースをリクエストスケジューラ383において追加する。
クライアントの振る舞いは図5aに示され、サーバの振る舞いは図6aに示されている。
図5aを参照すると、ステップ551において、クライアントは、HTTPリクエストを用いてメインリソース、例えばHTMLのウェブページまたはストリーミングマニフェスト、を要求する。そのウェブページのためのHTMLコードは、そのウェブページを構成するリソースを特定するためにステップ552で(モジュール389を用いて)パースされる。そのパースの結果を用いて、クライアントは、そのページ全体をレンダリングできるように、自身がダウンロードしなければならないリソースのリストを特定する。これはステップ553であり、そのリソースのリストはスケジューラ383に格納される。
ステップ554において、クライアントは、第1の特定されたリソースをサーバから得るために第1HTTPリクエストを生成して送る。本発明により、クライアント(モジュール385)は、特定のプッシュヘッダにおいて、自身がサーバにプッシュしてもらいたい追加の/関連するリソースのリストを明示することもできる。これはステップ555である。特定のプッシュヘッダのためのシンタックスの例が以下に与えられる。
ステップ556においてサーバから1つまたは複数のレスポンスを受け取ると、クライアント(モジュール384)は、データのプッシュをアナウンスするサーバ通知(すなわちプッシュ約束)が受け取られたか否かチェックする(ステップ557)。このチェックは、第1リソースについてのデータが完全に受け取られたとき、止められ得る。その理由は、要求された第1リソースに対応するストリームの終結後には、特定のプッシュヘッダにより定義された追加の/関連するリソースに関連するプッシュ約束は送られることができないことである。ここで、特定のプッシュヘッダをサポートしないサーバは、このヘッダで定義された追加の/関連するリソースのためのプッシュ約束を送らないで単にこのヘッダを無視するであろうということが想起される。
もしチェックが否定であれば、受け取られるデータは、要求された第1リソースのそれだけである。従って、それらはステップ560でモジュール384により処理されて、レンダリングエンジン388に供給される。プロセスはその後ステップ555に戻り、リクエストスケジューラ383に保存されているさらなるリソースを要求する(ステップ561)。
もしチェックが肯定で、サーバが特定のプッシュヘッダでクライアントにより示唆されたリソースのうちの幾つかをプッシュすることを意味するならば、クライアントはリクエストスケジューラ382内のダウンロードするべきリソースのリストをアップデートして、そのプッシュされるリソースをそこから撤回する。これはステップ558である。クライアントは、その後、ダウンロードするべきリソースがリクエストスケジューラ382に最早残っていなくなるまで反復する(ステップ561およびステップ555へのループ)前に、第1リソースのためのデータ(ステップ560)およびその他の追加の/関連するリソースのためのデータ(ステップ559)を処理する。
ここで図6aに転じて、クライアント380によりHTTPリクエストに設けられる特定のプッシュヘッダを処理するためにサーバ350は専用の“プッシュヘッダ”プロセッサ358を使用するということが想起される。さらに、HTTPプロセッサ356は、HTTPリクエストをパースすること、および、要求された第1リソースのURIおよび任意の1つまたは複数のヘッダを含む、リクエストに含まれている種々のパラメータを抽出することを担当する。このように、HTTPプロセッサ358は、特定の(任意の)プッシュヘッダをその名前によって特定し、それを処理させるべくプッシュヘッダプロセッサ358に転送する。
ステップ601において、サーバは、クライアント380からリクエストを受け取ってそれを、メインリソース、例えばストリーミングの文脈においてはストリーミングマニフェスト、を得るために処理する。それは、HTTPプロセッサ356により処理される。
次にステップ602において、サーバはマニフェストデータを送ることで応答する。ステップ603において、サーバは第1リソース、普通はマニフェストデータにおいて参照されている第1リソース、を要求するクライアントからの新しいリクエストを受け取る。これは、メディアストリーミングの文脈においてはメディアセグメントであり得る。
このリクエストにおいて、クライアントは自身が関心を持っている追加のあるいは関連するリソースを、特定のプッシュヘッダを用いて、明示しているかもしれない。従って、ステップ604において、サーバは、そのような特定のプッシュヘッダがリクエストに含まれているか否かをチェックする。
もしそれが含まれていて書き込まれているならば、サーバはその特定のプッシュヘッダを特定プッシュヘッダプロセッサ358に供給する。後者は、クライアントにより明示された追加のあるいは関連するリソースへの1つまたは複数の参照を生成するために、以下で記載されるようにそのプッシュヘッダの様々な部分をパースする。これはステップ605である。
任意に、サーバは、自身が所有しているリソースのリストに属する各リソースについて、それをプッシュできるか否かを宣言する事前設定されたオーソライゼーションファイルを持つことができる。このオーソライゼーションファイルは、ステップ605で得られた幾つかの参照を有効にまたは無効にするためにステップ606で考察され得る。
サーバは、オーソライゼーションファイルに従ってそのプッシュがオーソライズされているリソースだけのためにプッシュアナウンスメントメッセージ(例えば、PUSH_PROMISEフレーム)でクライアントに通知する。これはステップ607である。HTTP/2では、PUSH PROMISEフレームは、クライアントのリクエストに対応するストリームで、ステップ605において特定されたリソースあたりに1つのPUSH PROMISEフレームが、送られる。ステップ607にステップ608が続き、このステップでサーバは、要求された第1リソース(すなわち、ストリーミングの文脈においては第1メディアセグメント)を、要求しているクライアントに送る。
もし特定プッシュヘッダが存在しないかまたはサポートされなければ(テスト604がフォールス)、あるいはもし特定されたリソースについてプッシュが全くオーソライズされなければ(テスト606がフォールス)、要求された第1リソースだけがステップ608でクライアントに送り返される。
要求された第1リソースを送ると、次にサーバは、対応するストリームを閉じるとともに、プッシュアナウンスメントメッセージ(PUSH PROMISEフレーム)でアナウンスされたストリームを、もしクライアントによりキャンセルされなければ、用いて、ステップ605で特定された追加のまたは関連するリソースのためのデータをプッシュする。これはステップ609であり、このステップで送ることは、1つまたは複数のデータフレームを送ることに依拠し得る。
上記のように、特定の実施形態では、クライアントにより要求された第2データまたは追加のリソースをサーバがプッシュするであろうことをクライアントに知らせるか、第2データも追加リソースもサーバはプッシュしないであろうことを知らせるか、あるいはサーバが送信できる第2データまたは追加リソース/データもしくは複数のリソースをクライアントが決定するためのヒントを提供するために確認応答データがクライアントに送られる。
従って、参照記号610で示されているように、サーバは、クライアントにより要求された第2データまたは追加のリソースをサーバがプッシュするであろうことをクライアントに知らせるか、第2データも追加リソースもサーバはプッシュしないであろうことを知らせるか、あるいはサーバが送信できる第2データまたは追加リソース/データもしくは複数のリソースをクライアントが決定するためのヒントを提供するために、受信されたリクエストに応答して送られるレスポンスに確認応答データを付け加えることができる。そのような確認応答データの例は、図11aから11eを参照することにより与えられる。
図3bは、データストリーミング、例えばDASH、と関連するクライアント−サーバシステムを示す。図3のそれと同じコンポーネントは同じ参照数字を有する。
第1に、ダウンロードするべきメディアセグメントの決定を担当するDASH制御エンジン313において、DASH制御エンジン313の中のリクエストスケジューリングモジュールにより推測されたダウンロードするべき次のセグメントのリストをHTTPクライアント311と通信するための追加モジュールが付け加えられている。
この情報は、HTTPクライアント311において特定の“プッシュヘッダ”ジェネレータ314により処理される。ダウンロードするべき次のセグメントのリストから、プッシュヘッダジェネレータ314は、例えばダウンロードするべき次のセグメントのリストを特定プッシュヘッダの様々な部分にマッピングすることによって、特定プッシュヘッダのための適切なシンタックスを生成することを担当する。
プッシュヘッダジェネレータ314により出力された特定プッシュヘッダは、現在のHTTPリクエストに挿入されるべくHTTPクライアント311に供給される。
サーバ側で、HTTPプロセッサ320およびプッシュヘッダプロセッサ321は、図3aに関連して上で記載されたHTTPプロセッサ356およびプッシュヘッダプロセッサ358に類似してはいるが、ストリーミングおよびDASH指向である。
図5bは、図3bのシステムにおけるストリーミング指向クライアントの振る舞いを説明する主なステップを示す。
ステップ501において、クライアント310は、希望するメディアと関連付けられたストリーミングマニフェストをストリーミングサーバ300に要求する。ストリーミングマニフェストを受け取ると、クライアント310はステップ502でそれをパースし、次にステップ503でビデオリプリゼンテーションを選択する。
反復してメディアのストリーミングの間に、クライアントはサーバに対してダウンロードするように要求する次のセグメントを選択する。これはステップ504である。
次に、ステップ505はクライアントが必要とするかもしれない将来のセグメントを特定することである。この決定は、DASH制御エンジン313内のリクエストスケジューラにとっては将来のセグメントを予想することであり:例えば、それがすぐに切り替えるかあるいは同じリプリゼンテーションレベルにとどまるかを決定する。
次の1つまたは複数のセグメントのダウンロードを予想するために、クライアントは、後のレンダリングに必要な将来のセグメントの数“K”(Kは、クライアントによりセットされる)を特定することができる。
例えば、これは、現在の1つから次のK個のセグメントを取り出すためにMPD内のSegmentListをパースすることにより、またはMPDに設けられているSegmentTemplateを用いて次のK個のセグメントのためにセグメント番号を計算することにより、またはセグメントがバイトレンジを通してアドレスされるときにmp4ボックスから次のK個のバイトレンジを計算することによって、直接行われ得る。
しかし、ステップ505の特定するプロセスに異なる選択基準が使用され得る。
適応ストリーミングと関連して、選択基準は、リプリゼンテーション間で切り替えを行うときクライアントの切り替えストラテジーを含み得る。例えば、クライアントが積極的な切り替えストラテジーを採用するとき、Kはより精細な切り替えグラニュラリティを可能にするためにローとして定義される(例えば、5秒未満をカバーするセグメントの数に対応する)。一方、クライアントが保守的なストラテジーを採用していてあまり頻繁には切り替えをしないときには、Kはより大きくセットされ得る(例えば、10秒以上をカバーするセグメントの数に)。
なお適応ストリーミングと関連して、別の選択基準はサーバのPUSH PROMISE能力を含み得る。例えば、もしサーバがクライアントにより提案されたのと同じ数のセグメントを適時に約束しまたは送ることができなければ、クライアントはこの情報を考慮してKの値を小さくすることができる。その結果、毎回、より少ないメディアセグメントがプッシュされるべく提案されることとなる。
なお適応ストリーミングと関連して、別の選択基準はクライアントのプリフェッチストラテジーを含み得る。例えば、クライアントは、様々な期間の初めに、高速シークを目的として最初のセグメントを選択することができる。あるいは、もしビデオアプリケーションがビデオ中の非常に人気のある部分に関する情報を提供するならば、その基準は、それらの非常に人気のある部分に対応する最初のセグメントを選択することを含み得る。
別のあり得るストリーミング指向の選択基準は、マニフェスト、MPD、の分析からもたらされ得る。例えば、クライアントは、選択されたリプリゼンテーションと関連付けられているセグメントをプッシュすることをサーバに提案することができる。これは、関連付けられているリプリゼンテーション間のassociationIDを用いて容易に決定され得る。この提案は、associationType情報に依拠することができる。さらに、従属リプリゼンテーションについては、エンハンスメントレイヤのためのセグメントがプッシュされるべく提案され得る。
より一般的にHTTPを通してのリソースダウンロード、例えばウェブページ(図3aおよび5aを参照)、においては、クライアント(ウェブブラウザ、HTMLレンダラー)は、メインリソースを分析し、それにおいて参照されている、自身が急いでダウンロードしたい1つまたは複数のサブリソースを特定することができる。HTMLメインリソースをパースすることにより、クライアントは例えば:
− “プリフェッチ”または“次”を明示する“rel”値を有する<link>エレメント;
− 例えばCSSリソースを選択するスタイルシート関連リソースを明示する<link>エレメント;
− 例えばjavaスクリプトコードに対応するサブリソースを選択する<script>エレメント;
− <img>および/または<video>のようなメディアエレメント;
に依拠することができる。
HTMLページで宣言されていることのあるこれらのエレメントから、クライアントは、それらの“href”属性を通してURIのリストを選択することができる。URIのこのリストは、例えばリソースのタイプに応じて1つまたは複数の特定プッシュヘッダ内に置かれ、またはURIのリストとして単一のヘッダ内で連結され、または公知のAccept HTTPヘッダ内において“q”値に類似する優先順位付きリストとして編成され得る。
K個の追加のまたは関連するリソースを選択し特定するステップ505の後、クライアントはステップ504で特定された次のセグメントを得るHTTPリクエストを生成する。これはステップ506である。
(リクエストラインを形成するHTTPメソッドの他に)HTTPリクエストを形成するために次のセグメントのURLまたは1つのバイトレンジを有するSegmentBase URLが使用される。
本発明により、追加のステップ507は、HTTPクライアント311のプッシュヘッダプロセッサ314に関してステップ505でDASH制御エンジン313により決定された将来のセグメント(すなわち追加のリソース)のリストを得ること、および、これらの将来のセグメントを定義するために特定プッシュヘッダをセットすることである。
クライアントがサーバにプッシュしてもらいたいこれらの将来セグメントを宣言する幾つかの仕方が、以下で記載されるように実装され得る。
次のセグメントのためのリクエストラインを含むとともに追加セグメントのプッシュを提案するための特定プッシュヘッダを含むHTTPリクエストが準備状態になると、それはなおステップ507においてHTTPクライアント311によりサーバ300に送られる。
ステップ508でサーバからレスポンスを受け取ると、クライアントは、特定プッシュヘッダで定義された追加セグメントをサーバが進んで送ることを示すプッシュアナウンスメント通知をサーバが送っているかどうかチェックする。このチェックはステップ509である。
プッシュアナウンスメント通知は、将来のセグメント1つあたりに1つずつ、1つまたは複数のPUSH_PROMISEフレームを用いて例えばHTTP/2で行われ得る。
もしステップ504で選択されて要求された次のセグメントのためのデータが完全に受け取られ(対応するストリームはサーバにより閉じられる)プッシュアナウンスメント通知が受け取られていなければ(テスト509フォールス)、HTTPクライアント311は、要求する次のセグメントはその直後のセグメントであるということをDASH制御エンジンに知らせる。これはステップ510である。
そうでなければ(テスト509トゥルー)、新しいHTTPリクエストを用いて要求する次のセグメントは、プッシュされると約束された最後のセグメントの直後のセグメントである。クライアント側でのアップデートはステップ511で行われる。その間に、ステップ512で、K個の将来のセグメントのためのデータがサーバからHTTPクライアントにより受け取られる。
ステップ510および512の次に、ストリーミングが終了するまでプロセスを反復するためにプロセスはステップ505にループバックする。
代わりに、クライアント310は、得るべきK個の将来のセグメントの処理をHTTPクライアント311において実装することができる。そのような実装では、ダウンロードするべき次の1つまたは複数のセグメントの決定を担当するのはHTTPクライアントである。次のセグメントを要求するときに、DASHアプリケーションレベルにおいて知覚されるレイテンシが低減されるように、HTTPクライアント311により受け取られたプッシュされたデータは、そのとき、DASH制御エンジン313のために予めクライアントキャッシュ(307)を満たすであろう。
特定の実施形態では、クライアントは、プッシュリクエストに関する確認応答データを受け取ると、例えば第2データまたは追加のリソースを得る自身のストラテジーを適合させるために、受け取った確認応答データを処理する(ステップ513)。そのような確認応答データの処理の例は、図11aから11eを参照することにより与えられる。
全てのHTTPヘッダとして、特定プッシュヘッダのシンタックスを見ると、それは{名前、値}ペアによって特定され、その名前と値とはコロン‘:’によって分離される。
ヘッダ名は、例えば“Push−Request”であり得、あるいはそれが他の既存のヘッダ名と衝突しなければ他の任意の名前であり得る。もしそれがアプリケーション専用ヘッダであるならば、名前はアプリケーション名から始まることができる:例えば様々なケースに釣り合う“DASH−Push−Request”または“HTML−Push−Request”。
以下で、アプリケーション関連のプレフィックス無しで一般的ヘッダが考察される。
特定プッシュヘッダの目標は、1つまたは複数の一意リソース識別子(URI)またはロケータ(URL)などを定義して(サーバに)提供し、第1リソースを要求しているクライアントのために追加のリソースまたは関心の対象であるリソースの部分を特定することである。本発明により規定されるように、HTTPリクエストは、これらの追加リソースを決定するために自給自足的でなければならない、すなわち外部からのあるいは前後関係上の情報を用いずに決定しなければならない。
追加リソースまたはリソースの部分を定義する種々の実施形態が考えられる。
複数の実施形態において、特定プッシュヘッダは、これらの追加リソースを特定するためのURIまたはURLを明示的に含む。例えば:
<Push−Request:HTTP://server/path/segment−2.mp4>
他の複数の実施形態では、それらは構築ルールを通して示され、そのルールは特定プッシュヘッダに挿入される。換言すれば、関心の対象である追加リソースのリストは構築ルールとして表現される。特定プッシュヘッダのシンタックスは、図6bに示されている通りであり得る。
ヘッダ650のヘッダ値は予約文字、例えば‘;’、により分離される3つの別々の部分から構成される。
第1部分652は、2つの他の部分により定義される構築ルールがHTTPリクエストのどの部分に適用されなければならないかを定義する“サポート”である。特に、そのようなURIまたはURLは、HTTPリクエストにおいてセットされたリクエスト−URIの全部または一部であり得る。
このように、“サポート”という語は、最初のリクエスト−URI自体を指すことができるし、HTTPリクエスト内に存在する別のHTTPヘッダを指すこともできる。
第2部分653は、サポートからの抽出パターン、すなわちサポート部分652が指すURIまたはURLの変化部分、を定義する。
例えば、リクエスト−URIなどの中の変化部分は、予約文字を用いて明示され得る。1つの変化形では、変化部分は、抽出して修正するべきリクエスト−URIなどの部分を示す正規表現として表現され得る。
従って第2部分653は、変化部分情報を含んでいて、URIテンプレートの形をとることができる。
サポートが他の1つのHTTPヘッダであるときには、示すべき抽出パターンが無いことがあり、或いは、例880に関しては(以下を参照)、ヘッダ値全体が置換するべきパターンとして示される。
最後の部分654は、第2部分653により定義される変化部分の後継者として適用するべき1つまたは複数の代入値を任意に含む。
代入値は、値のコロン分離(または任意の専用セパレータ)リストを用いて、あるいは値のレンジを用いて、あるいはレンジのリストを用いても、定義され得る。そのような場合、プッシュヘッダプロセッサ321/358は、その値のリストまたは1つもしくは複数のレンジ全体を繰り返して代入値と同数のURLを推測するべきである。
例えば、第1部分と第2部分とがマージされるとき:
<Push−Request:HTTP://server/path/segment−{1}.mp4;{2−5}>
ここで{1}は変化部分を定義し、{2−5}は代入値である。
3つの別々の部分を有する別の例は次の通りである:
<Push−Request:request−URI;segment−{1}.mp4;{2−5}>
ここで“request−URI”はサポートであり、“segment−{1}.mp4”は変化部分{1}を有するサポートにより定義されるURIの部分であり、{2−5}は代入値である。
1つの問題は、構築ルールをなるべく一般的に構築することである。そのような構築のための例示的な重要な面は、適応ストリーミングと関連して提供される。
メディアセグメントまたはメディアコンテンツサブパーツを記述する種々の仕方:SegmentTemplate、SegmentBaseまたはSegmentList、がDASHで提供され、一度にこれら3つのうちの1つだけがRepresentation、AdaptationSetまたはPeriodエレメント内に存在する。
SegmentTemplateは、自身がダウンロードしたい次のセグメントに関してクライアントがサーバにヒントを提供するためのURIテンプレートを容易に構築する最も便利な方法である。その理由は、SegmentTemplateはマニフェストで定義されているセグメントURLのどの部分がまさに変化しようとしているかを、例えばリプリゼンテーションの一意識別子またはリプリゼンテーションの帯域幅などに依存して、明らかに示すことである。この場合、クライアントによるK個の将来のセグメントの特定は、DASH制御エンジン313で利用し得る、標準的テンプレート分解プロセス以外の能力を必要としない。
これは図7aの例の場合である。URIテンプレート“mp4−live−$RepresentationID$−$Number$.m4s”から、同じRepresentation“h264bl_low”の現在のセグメントNの後のK個のセグメントを指定する構築ルールを定義するのは容易である。
<Push−Request:“mp4−live−h264bl_low−{1}.m4s”;{(N+1)−(N+K)}>
SegmentListアプローチに関しては、クライアントは、リストされているセグメントのURI間の繰り返すパターンを特定するためにMPDファイルを前処理し、次にセグメントURLのリストを表す一般的ルールを推測することができる。
代わりに、MPDアナライザは、この作業をオフラインで行い、使用され得るURIテンプレートを提供するためにSegmentListに新しいエレメント、属性またはディスクリプタを付けることができる。これは、クライアント側での処理を促進するためである。エレメントまたは属性として、URIテンプレートはSegmentListエレメントの中で定義され得るであろう。ディスクリプタとして、それはSegmentListの親エレメントにおいて定義され得るであろう(例えばRepresentationエレメントのレベルで)。
図10は、セグメントの記述のためにSegmentListエレメントを使用するMPDサンプル1000を提供する。SegmentListは、SegmentURLエレメントの列挙を含む。このMPDサンプルにおいて、同じビデオコンテンツのための2つの二者択一リプリゼンテーション1002、1003が同じAdaptationSet1001の中に記載されている。
各Representation内のSegmentURLのリストをパースすることにより、クライアントは、URLが、セグメントインデックスを除いて、大部分は一定であることを容易に判定することができる。
次に、1005および1006に設けられている例示的URIテンプレートのような注釈が親Representationエレメントに付け加えられ得る(Representationあたりにせいぜい1つのSegmentListであるため)。(@templateURI属性内の)この注釈のおかげで、リスト内の1つまたは複数のセグメントをプッシュされるべきものとして示したいクライアントは、@templateURI値を特定プッシュヘッダ内にコピーアンドペーストするだけで良いであろう。
クライアントのためのURIテンプレートの使用をさらに簡単化するために、得られた@templateURI1005および1006のどの部分が一方のRepresentationと他方のRepresentationとで異なっているかをチェックすることができる。その理由は、この例1000では、同じAdaptationSet内に複数のRepresentationがあることである。これは、今度は複数の変数または変化部分を伴うAdaptationSetレベルにおいて、他の1つのテンプレート属性の生成をもたらす(1007を参照)。
従って、1つのレベルから次のレベルへと、@templateURI属性を漸次一般化してゆくことが可能である。従って、その一般化プロセスは、segmentURL値が完全に同様のままとなるまで、1つまたは複数の親セグメントにわたって反復され得る。
@templateURI注釈1007に関しては、URIテンプレートが偶然に複数の変数または変化部分を含むことがあり得る。そのような場合、それらの変化部分をそれらのそれぞれの代入値との置換のためにどの順序で考察してゆかなければならないかを決定するのはクライアントである。従ってクライアントは、サーバがこれらの変化部分を考察するときにサーバを所定の順序に従わせるために、各変化部分を優先レベルと関連付けることができる。
任意に、@templateURI属性の他に、@templateURI属性の1つまたは複数の変化部分のために可能な値のレンジを示すために@templateValue属性も設けられ得る。可能な値のレンジは、MPDに基づいて、すなわち図10の例ではSegmentURLのリストに基づいて、決定される。
例えば、注釈1005および1006の他に、同じ値のレンジ:@templateValue=“{1−6}”を定義するために注釈1005および1006の各々と共に@templateValue属性が宣言され得るであろう。
AdaptationSetレベルに加えられた@templateURIに関して、@templateValue属性は次の値を取るであろう:@templateValue=“low:hd;{1−6}”。‘low’および‘hd’文字列はリプリゼンテーション識別子に対応する第1変数“level”のための可能な値をリストし、レンジ{1−6}はセグメントインデックスに対応する第2変数“nb”のための可能な値をリストする。
図6bに示されている特定プッシュヘッダのシンタックスに戻り、一実施形態は、特定プッシュヘッダを記述するとき1つまたは複数の抽出パターン653を表現するために次の文法とURIテンプレートに関するRFC6570とを使用する。
“プッシュヘッダ”は次のように定義され得る:
push_request=“Push−Request:“header_name”;“uri_template(“;”definition)
header_name=“URI”|HeaderName
HeaderNameは、様々なHTTPバージョンの仕様の中の所定のヘッダ名に対応する。
uri_templateパラメータは、潜在的にエクステンションを伴ってRFC6570において定義されているURIテンプレートである。このテンプレートは、中括弧の間に定義される、その名前が数である変数または変化部分を含み得る。例えば:/server/video{1}.mp4は1つの変化するパラメータを有するuri_templateであり、/server/{1}/image{2}.jpgは2つの変化するパラメータを有する別のuri_templateである。
最も単純な場合は、サポート全体がが宣言された定義、すなわち代入値、に置き換えられるべきであることを意味する{1}に等しいuri_templateに対応する。さらに、宣言された変数を持たないuri_templateは、サポート652全体がuri_template値に取って代わられるべきであることを意味する。例えば、support=“URI”でuri_template=“/server/resource2.ext”であるならば、特定プッシュヘッダは、それ以上の処理無しで、クライアントにより提案されたリソースのためのURIが/server/resource2.ext“であることを示す。
最後の任意定義パラメータは、1つまたは複数の代入値を宣言する。第1定義はuri_templateの第1変数のための1つまたは複数の代入値に対応し、第2定義は第2変数に対応する、などである。uri_templateパラメータ(すなわち、抽出パターン)と同数の定義パラメータ(すなわち、代入値のセット)があらねばならない。
従って、このような“定義”は1つまたは複数の値および/または1つまたは複数のリストおよび/または1つまたは複数のレンジを含む:
定義=値|リスト|レンジ
ここで値は、代入値を文字の列として表現する第1の可能性である;
リスト=値|レンジ(“:”値|レンジ)は、代入値を値(または値のレンジ)のコロン分離リストとして表現する第2の可能性である。コンマ文字は慣習的に同じヘッダのための数個の値を分離するために使用されるので、コンマ文字よりもコロン文字の方が選択されていることに注意されたい。
レンジ=“{“スタート”−“エンド”}”は、代入値をレンジとして表現する第3の可能性である。これは、‘スタート’と‘エンド’との間の、‘スタート’と‘エンド’との両方を含む、全ての値のリストと解釈されるべきである。これは、整数である値のためにだけ可能である。
定義パラメータの中の可変値のフォーマッティングは、デフォルトのものである。値のレンジに関するフォーマッティング問題を防止するために、レンジ内の値のフォーマッティングは、特に先行するゼロに関して、スタート値およびエンド値のフォーマッティングに従うべきである。例えば、レンジが‘{8−10}’として明示されたならば、生成される値は:‘8、9、10’である。レンジが‘{08−10}’として明示されたならば、生成される値は:‘08、09、10’である。
注釈1007と関連して上で手短に紹介されたように、特定プッシュヘッダは、2つ以上の変化部分(すなわち、変数)を有するURIテンプレートを含み得る。特定プッシュヘッダにより定義された追加リソースがサーバによりプッシュされる順序は、その2つ以上の変化部分がサーバによりどのように連続して考察されるか(すなわち拡張されるか)に直接依存する。従って、この順序は特定プッシュヘッダから推測されるべきである。
uri_templateルールにおいて変数を拡張するための例示的アルゴリズムは、変数の順序が提供されると仮定して、次の通りである:
1.uri_templateのリストの入手
− 第1変数拡張(提供された順序での第1)のために、特定プッシュヘッダで定義されているuri_templateが使用される。
− 次の1つまたは複数の変数拡張(提供された順序での)のために、先行する1つまたは複数の変数の拡張からもたらされるuri_templateのリストが使用される。
2.得られたリストの中の各uri_templateは、次のようにして得られたuri_templateのリストに置き換えられる:
− 拡張ステップで考察された変数の各値のために、uri_templateが複製され、URIテンプレートの中の変数は代入値のうちの1つに置き換えられる。
これは、URIの(または、ヘッダ値の)最終リストにおいて、その順序において第1の変数(例えば‘1’により定義される)が最もゆっくり変化し、その順序において最後の(すなわち、最大の数により定義される)変数が最も急速に変化するということを意味する。
例えば、構築ルール<‘Push−Request:URI;{1}−{2};a:b;1:2’>は次の順序リストをもたらす:
− ‘a−1’
− ‘a−2’
− ‘b−1’
− ‘b−2’
構築ルール<‘PushRequest:URI;{2}−{1};a:b;{1−3}’>は下記の順序リストをもたらす:
− ‘a−1’
− ‘b−1’
− ‘a−2’
− ‘b−2’
− ‘a−3’
− ‘b−3’
代わりに、複数の変数のための処理および置換順序は特定のオペレータとして表現され得る。RFC6570は、オペレータ拡張のために幾つかの文字を確保している。一実施形態では、‘@’文字は順序を示すために使用され得る:オペレータの値が大きいほど、処理順序は大きくなる。この代替実施形態において、上の2つの例は次のようになる:
構築ルール<Push−Request:URI;{foo@1}−{bar@2};a:b;1:2>、“foo”および“bar”は次の順序で値“a”および“b”ならびに“1”および“2”にそれぞれ置き換えられる変数名である:
− ‘a−1’
− ‘a−2’
− ‘b−1’
− ‘b−2’
構築ルール<Push−Request:URI;{foo@2}−{bar@1};a:b;{1−3}>は次の順序リストをもたらすであろう:
− ‘a−1’
− ‘b−1’
− ‘a−2’
− ‘b−2’
− ‘a−3’
− ‘b−3’
上の例はHTTPヘッダにおいて単一の特定プッシュヘッダを用いるけれども、他の実施形態は2つ以上のプッシュヘッダを用いることができる。
例えば、クライアントが様々なタイプの数個のリソースに関心を持つときおよび/または構築ルールを設けることがあまりに困難であるとき、それは特定プッシュヘッダの複数のインスタンスを用いると決定することができる。
一例として、もしウェブページのダウンロードを加速することが求められているならば、クライアントはそのウェブページを構成するサブリソースの種類ごとに1つのプッシュヘッダを生成することができる:イメージに1つ、スタイルシートに1つ、スクリプトコードに1つ、など。
そのような状況において、各特定プッシュヘッダの値は、幾つかのタイプのサブリソースをフィルタリングするフィルタリングパラメータのように振る舞う。サブリソースが参照されるメインリソースはHTTPリクエストによって明示的に要求されたリソース(すなわち、request−URIのリソース)であり得るということに留意されたい。
プッシュヘッダの複数のインスタンスを持てばURI/URLの付加的なリストがもたらされ、各インスタンスが、プッシュするべきリソースの別々のセットを定義するであろう。
特定プッシュヘッダの複数のインスタンスを正当化する他の1つの場合は、クライアントが最初のリクエスト内の様々なサポートからの部分、例えばリクエスト−URIの一部分およびレンジヘッダ内のバイトレンジ値、を改変したいとき、あるいは2つの異なるヘッダの改変を示すとき、を含む。そのような状況では、クライアントは2つ(あるいはもっと多く)の特定プッシュヘッダを、一方はURI改変のためにおよび他方はレンジ改変のために、置くことができる。処理されたヘッダは、新しいURIと関連する新しいバイトレンジとを有する1つの複合インスタンスに帰着するであろう。
複数のプッシュヘッダに基づく複数ヘッダ改変については、各プッシュヘッダ処理は、対応する代入値に対応するURI/ヘッダのセットを生成し、リソースの最終のリストは生成されたセットの全ての可能な組み合わせを、すなわちヘッダの各URI/セットのための代入値同士の全ての可能な組み合わせを設けることにより得られるということに留意するべきである。
複数の実施形態において、特定プッシュヘッダはuri_template仕様に代わるもののために使用され得る。
uri_templateパラメータが相対URIを示すとき、プッシュヘッダプロセッサは原リクエスト−URIからの相対パスを考慮して絶対URIを構築しなければならない。
しかし、複数の実施形態において、ベースURIまたは別のベースURIは、別の特定ヘッダにおいてまたはPush−Requestヘッダの中のパラメータとして明示され得るであろう。これは、例えば、複数のBaseURLがマニフェストにおいて宣言されるDASHにおいて有益であり得る。それゆえ、もしクライアントが幾つかのリソースをプッシュしてもらいたければ、それは特定プッシュヘッダと共に第1ベースURLを用いて第1サーバを試験することができ、もしプッシュ約束が受け取られなければ、それは第2サーバがその特定プッシュヘッダをサポートするかどうかを試験するために次のリクエストでベースURLを変えることができる。
特定プッシュヘッダにおいてベースURIの変更を示す例示的な仕方はuri_templateパラメータの後にセットされる追加のパラメータ、“var_base”、を含む。var_baseパラメータは、新しいベースURI値を宣言する。
例えば、HTTPリクエストのリクエストラインが
GET/server1/video/segment−1.mp4
であるならば、特定プッシュヘッダは次のようであり得る
<Push−Request:URI;segment−{1}.mp4;{2−4};var_base=/AnotherServer/video/>
この構築ルールは追加リソースの次のリストを生成する:
http://AnotherServer/video/segment−2.mp4
http://AnotherServer/video/segment−3.mp4
http://AnotherServer/video/segment−4.mp4
あるいは、URI−template RFC6570を用いてuri_templateパラメータを宣言する代わりに、正規表現が代わりに設けられ得る。
インタオペラビリティ目的を処理する複数の実施形態においては、特定プッシュヘッダは2つの別々のヘッダに分割される:
− 第1のものはクライアントの興味の対象であるリソースを示す。これは、上に記載された特定プッシュヘッダである;
− 第2のものは、クライアントがサーバプッシュを受け入れることをサーバに示す。これは接続セットアップ時に取り決められ得るのであるが、クライアントにとっては、プッシュされたデータをそれが何時受け入れ得るかということとプッシュをキャンセルするより大きなリスクが何時存在するか(例えばクライアントが頻繁な切り替えを伴うよく確立されていないビデオモードを経験する時)ということとをサーバに告げることは有益であろう。
この第2ヘッダは、プッシュをサポートしないネットワークインターメディアリのためにも有益であろう(例えばCDNにおいて):それらは、依然として第1プッシュヘッダをネットワークのエッジに近い何らかのリソースをプリフェッチするためのヒントとして解釈することができるであろう。
本発明の特定プッシュヘッダは、ストリーミングクライアントが様々なDASH状況を改善するのに役立つであろう:
− 例えば、クライアントが次のセグメントを予想したいとき;
− あるいはクライアントがビデオにおける時間オフセットを探したいとき;
− あるいは所与の期間にサーバが次のセグメントを送るとクライアントが信頼しているとき;
− あるいはクライアントが切り替えを予想しているとき;
− あるいはクライアントが関連付けられているリソースに関心を持っているとき;
− あるいはクライアントが多重化されていないオーディオ−ビデオセグメントを要求するとき。そのような場合、ビデオセグメントを要求するとき、それは対応するオーディオセグメントに対する関心を示し得る。
別の実施形態では、代入値は他の専用ヘッダ(下記の“Push−Values”)に置かれることができ、そのときにはヘッダの下記のセット(ここでのヘッダ名は単なる例である)をもたらすであろう:
Push−Request:header_name“;”uri_template
Push−Values:definition[(“;”definition)]
この別の実施形態に関しては、下記の例850は次のように書き換えられるであろう:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;segment−{1}.mp4;
Push−Values:02:10
さらに、下記の例865は次のようになるであろう:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;Rep−{1}/segment−{2}.mp4
Push−Values:R1:R2;{01−03}
あるいは、プッシュ特定ヘッダにおいて2つ以上の変数パラメータが宣言されているとき、各変数パラメータのための代入値はそれ自身の“Push−Values”ヘッダにおいて宣言され得る。そのような場合、“Push−Values”ヘッダは、値もしくは値のリストもしくは値のレンジが後に続く変数パラメータ名を含むべきである。例えば:
GET/server/video/Rep−R1/segment−01.mp4
Push−Request:URI;Rep−{var1}/segment−{var2}.mp4
Push−Values:var1=R1:R2
Push−Values:var2={01−03}
他の例示的書き換えは、上の書き換え例から容易に推測され得る。
別の代案では、図6bに示されているプッシュ特定ヘッダの各部分は対応する別々のヘッダ内に置かれ得る;例えば(ヘッダ名は単なる例である):
Push−Support:URI
Push−Pattern:segment−{var}.mp4
Push−Values:var=02:10
図7a、7bおよび8と関連して、つぎに、URIテンプレートを使用するDASHのための特定プッシュヘッダの例が記載される。
図7aおよび7bは、DASH標準規格を使用するHTTPを通しての適応ストリーミングの文脈における本発明の使用の例を提供する。図7aは、各メディアセグメントをどこ(すなわちURI)でダウンロードするべきかをストリーミングクライアントに示すSegmentTemplateエレメント701を含む例としてのMPD700である。クライアントは、希望されたまたは可能な空間解像度および帯域幅に依存して2つの代替ビデオリプリゼンテーション702および703のいずれかを選択することができる。
図7bは、本発明が実装されるときの、クライアントおよびサーバがHTTP/2を用いて通信すると仮定する、クライアント−サーバのエクスチェンジを記述する。
クライアント750は初めにステップ752でHTTP GETリクエストを介してサーバ751にMPD、ストリーミングマニフェスト、を要求する。サーバはステップ753でMPDファイルをクライアントに返すためにHTTPレスポンスを送る。
MPDを受け取ると、クライアントは、自身のメディアデコーダをセットアップするための初期化情報を特定するためにステップ754でそれをパースする。
次にステップ755で、クライアントは、この初期化セグメントを得るために別のHTTP GETリクエストを送る。サーバは、HTTPレスポンスにおいて、要求された初期化セグメントファイルを提供する。これはステップ756である。
その間にまたは連続して(ステップ757)、クライアントは自身の好み/特性に応じて適切なリプリゼンテーションを特定する。このステップは、クライアントが、ビデオを読み始めるのに必要な第1メディアセグメントだけではなくてビデオを読み続けるためにダウンロードするべき次のセグメント、(もしリプリゼンテーション切り替え決定が行われなければ)普通は同じリプリゼンテーションからの後続のメディアセグメント、をも特定することを可能にする。クライアントは、この/これらの後続の1つまたは複数のセグメントのための1つまたは複数のURIを、マニフェストを用いて、推測することができる。
次にステップ758で、クライアントは、ビデオを表示し始めるために第1メディアセグメントをサーバに要求する。
本発明を用いて、クライアントは、リクエスト758に、ダウンロードするべき次のメディアセグメントのための1つまたは複数のURIを挿入する。この挿入は専用のHTTPプッシュヘッダ(例えばリクエスト758内の“Push−Request”ヘッダ)に行われる。この特定のHTTPヘッダのための値の例は、図8と関連して以下で提供される。
リクエスト758に応答して、本発明をサポートし、従って特定プッシュヘッダを理解するサーバは、自身がプッシュヘッダを理解することをクライアントに知らせることができるとともにそれ(サーバ)がクライアントへのデータのプッシュを主導することをアナウンスする。これは、サーバ開始ストリーム識別子をクライアントに提供するサーバにより送られるPUSH PROMISEフレーム759の目的である。
サーバは、さらに、ストリーム識別子としてのGETリクエスト758のストリーム識別子と共に、GETリクエストの目的である要求された第1セグメントを1つまたは複数のDATAフレーム760で送る。
最後に、ステップ759で交換されるサーバ開始ストリーム識別子と関連して、サーバは、1つまたは複数のDATAフレーム761を通して、リクエスト758の特定ヘッダにおいて示されているメディアセグメントに対応するデータをプッシュする。
特定の実施形態では、サーバは、クライアントからのプッシュリクエスト、すなわち特定された追加リソースをプッシュすることを求める要求、特定されたプッシュポリシー、ストラテジー、もしくはディレクティブを使用することを求めるリクエスト、または追加のリソースをプッシュしないことを求めるリクエスト、の受信を確認する。そのような確認応答はプッシュ約束メッセージのHTTPヘッダで送信され得る。それは、DASHレスポンスヘッダプロセッサ386がサーバにより用いられるプッシュポリシーをDASH制御エンジン313に知らせることを可能にする。
図11aから11eは、サーバ1101がクライアント1100から受け取られたプッシュポリシーの受信を確認して自身が適用しようとするかまたは適用できるプッシュポリシーを後者に知らせることを可能にする、サーバ1101およびクライアント1100の間のプッシュポリシー管理の幾つかの例を示す。これらの例は、MPEG DASHのような、HTTPでの適応ストリーミングに基づく(ストリーミングマニフェストに基づく方法)。
図11aは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1102でのプッシュポリシーの指示のクライアント1100による送信を示す。前述のように、この指示は専用のHTTPプッシュヘッダを介して伝えられ得る。
受け取ると、サーバ1101はそのリクエストをステップ1103で処理する、すなわちサーバはクライアント1100に提供されるべきリソース(MPD)を特定する。次に、サーバ1101は、参照番号1102の最初のリクエストのためのリターンコードを伴う自身のレスポンスをステップ1104で準備する。従って、もし要求されたリソースが利用できるならば、リターンコードはHTTPコード200である。
並行して、サーバ1101は、専用HTTPプッシュヘッダに含まれるプッシュポリシー指示を処理する。もしサーバがこのヘッダを理解できて、提案されたプッシュポリシーを処理できるならば、それは、クライアントにより提案されたプッシュポリシーの受信を確認する。これは、参照番号1104のレスポンスに確認応答データを加えることにより、例えば参照番号1102のリクエストと同じポリシー値を有する同じ専用HTTPプッシュヘッダを加えることにより、行われ得る(そのような場合、プッシュ確認応答データはプッシュポリシーデータと同じである)。
これは、クライアントに対して、提案されたプッシュポリシーをサーバが進んで使用することを示す。
従って、そのような場合、参照番号1104の応答でのプッシュポリシー確認の後、サーバは自身がクライアントにプッシュしようとしている追加データをアナウンスし始める。これは、例えば、HTTP/2からのPUSH_PROMISEフレームを用いることにより、行われ得る(DASHの場合、セグメントあたりに1つのPUSH_PROMISEフレーム)。
標準規格ベースで、サーバは、好ましくは、参照番号1102のリクエストでクライアントにより要求されたデータ(すなわち、MPDファイル)を自身の参照番号1104のレスポンスに含めるということに留意するべきである。
そのように生成された参照番号1104のHTTPレスポンスがステップ1105でクライアントに送り返されてクライアントにより処理されるのと同時に、サーバは、アナウンスされた追加データをクライアントに送るために使用されるデータストリームを準備し始める(ステップ1106)(通例、HTTP/2では、約束されたリソースあたりに1データフレーム、すなわちDASHの場合には1セグメント)。
最後に、クライアントはステップ1107の間にメディアプレゼンテーションのために第1セグメントを受け取り始め、同時に参照番号1102のリクエストに応じて送られたMPDを処理し、このようにしてネットワークトラフィックを節約し送信遅延を小さくする。
代わりに、サーバにより送られる確認応答データは例えば“OK”のような単純な値を有する別の専用HTTPプッシュヘッダを通してシグナリングされ得るということに留意するべきである。
本発明の実施形態を実装するサーバに関しては、クライアントにより提案されたプッシュポリシーの受信を、サーバがそれをサポートしてそれを適用するときに、確認することが推薦され得る。実際、これは、クライアントにとっては、サーバにより送られたPUSH_PROMISEフレームを受け入れるか否かを容易に決定するために適切な情報である。
クライアントとサーバとの間のこの第1ラウンドトリップの後で、クライアントは、例えばステップ1106および1107の間にプッシュされたセグメントの次のセグメントに対するリクエストを用いて、メディアプレゼンテーションのストリーミングを続けるためにリクエストを提出し続ける(ステップ1108)。このリクエストの中で、クライアントは、前のリクエストと同じプッシュポリシー指示を有する専用HTTPプッシュヘッダを参照番号1108のリクエストに加えることによって自身が同じプッシュポリシーを維持していることを確認することができる。
サーバエンドにおいて、受け取られたリクエストの処理(ステップ1109)は、要求されたリソースが利用し得るか否かを確認する(例えばHTTPステータスコード200OK)とともに専用HTTPプッシュヘッダを用いて自身が適用しているプッシュポリシーを確認するレスポンスに帰着するとともに、プッシュされるべき追加データのアナウンスおよび要求されたセグメントデータの送信に帰着する(データの実際のプッシュは表されていないがレスポンス1109の後に続く)。
図11bはプッシュポリシー通知の確認応答の例を示し、これによりサーバはクライアントにより提案されたプッシュポリシーを自身が実行できないことをクライアントに知らせる。
クライアントにより提案されたプッシュポリシー指示をサーバがサポートしない場合、それは単にそれを無視することができる。
しかし、サーバは、自身がいかなるプッシュポリシーも使用しないとクライアントに警告するのが有益であろう。これはクライアントにとっては自身の将来のリクエストを予定するために有益な情報である。実際、クライアントは全てのセグメントを順々に要求しなければならないであろう。
その目的のために、サーバは、プッシュが行われないということを示す特定のプッシュディレクティブ、例えばタイプ“push−none”の、値を伴わないプッシュポリシー(または、図12bで参照番号1231として記載されているもの)、を使用することができる。
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初の要求1111におけるプッシュポリシーの指示のクライアント1100による送信に向けられている。前述されたように、この指示は専用HTTPプッシュヘッダを介して伝えられ得る。
受け取ると、サーバ1101は、ステップ1112でそのリクエストを処理する、すなわちサーバはクライアント1100に提供されるべきリソース(MPD)を特定する。次に、サーバ1101は、参照番号1102の最初のリクエストに対するリターンコードを伴う自身のレスポンスをステップ1113で準備する。従って、もしその要求されたリソースが利用できるならば、リターンコードはHTTPコード200である。
この例ではサーバ1101はクライアントにより提案されたプッシュポリシーを実行できないと仮定されているので、サーバ1101はクライアントに対してその提案されたプッシュポリシーを使用しないことを示す。これは、図11bに示されているように(参照番号1113)プッシュが行われないことを示す特定のプッシュディレクティブを使用することによって行われ得る。
そのような情報を受け取ると(ステップ1114)、クライアント1100は全てのセグメントを1つずつステップ1115から要求しなければならないことを知る。
任意に、それは、自身のリクエストにおいて同じ“無プッシュ”ポリシー指示を専用HTTPプッシュヘッダにセットすることによっても(1115で示されているように)、サーバからリソースがプッシュされることを自身が期待していないことを確認することができる。
次に、サーバ1101はステップ1116で受け取ったリクエストを処理し、ステップ1117でそのリクエストに対して、“無プッシュ”ポリシーを確認するとともにリクエストに対応するデータを送信することによって、応答する。これらの2つのステップは、ストリーミングセッションの終了まで反復される。
代わりに、サーバは、確保されている情報コード(例えば103、“非サポートプッシュポリシーモード”をクライアントに知らせる)を伴う別の専用HTTPプッシュヘッダを使用することができるであろう。
なお、代わりに、クライアントは、HTTP Expectヘッダを通して自身のプッシュポリシーを示すことができ、その場合サーバは“期待フェイル”のための417コードを示すか、あるいはもっと明瞭に、クライアントが希望しているプッシュモードをサーバがサポートしないことに対して専用される、確保されている4xxコードを示すであろう。
別の実施形態では、本発明の実施形態を実装するクライアントは、サーバが本発明をサポートするか否かを知らない。クライアントが完全なコントロールを維持すると決定して“無プッシュ”プッシュポリシーをサーバに送っても、サーバはそのヘッダを理解しないので確認応答は送り返されない。
サーバは本発明を実装するけれどもクライアントがそれをサポートしない別の実施形態では、クライアントのリクエストで専用HTTPプッシュヘッダを受信しないサーバは、何もプッシュされないことをクライアントに警告するために“無プッシュ”ポリシー指示を用いて確認応答をすることができる(サーバは、クライアントが本発明をサポートするか否かを知らないか、あるいは単に自身の好みを示し忘れたので)。そのようにすることにより、サーバは無用なデータを送るリスクを冒さない。
そのような特定の“無プッシュ”ポリシーの目的は、特に、下記を示すために使用され得る:
− クライアントがプッシュに関心を持っていないこと;あるいは
− クライアントが、幾つかのリクエストのためのプッシュを中断させたがっていること。
これは、サーバプッシュの使用が許されるかどうかをサーバに示すためにクライアントによって使用され得る、HTTP/2により定義されている既存のSETTINGS_ENABLE_PUSHセッティングパラメータよりも満足のいくコントロールを提供する。このセッティングパラメータは、サーバプッシュに関してきめ細かなネゴシエーションや制御メカニズムを提供しない。実際、そのようなネゴシエーション手段を持つことはクライアントおよびサーバにとって有益であろう。例えば、SETTINGS_ENABLE_PUSHセッティングパラメータの値はサーバがサーバプッシュを使用することを可能にするけれども、クライアントはストリーミングセッションの中の幾つかのまたは全てのリクエストのためにサーバプッシュを禁止することを望み得る。例えば、これはクライアントにとっては、ビデオエレメントを埋め込むウェブページをロードするとき、有益であり得る。クライアントは、メディアセグメントではなくて、そのウェブページに関連付けられたリソース(CSS、イメージ、JavaScript)をプッシュしてもらうことに興味があるかもしれない。そのような場合、特定のDASHコンテンツを除いてコネクション全体にわたってデータのプッシュが可能にされ、クライアントは自身がデータプッシュ無しを選択することをメディアサーバに示すであろう。
図11cはプッシュポリシー通知の受け取りを確認する例を示し、この例ではクライアントはストリーミングマニフェストに対する最初のリクエストにおいて幾つかのプッシュポリシーを提案する。換言すれば、図11aおよび11bに関連して記載されたように単一のプッシュポリシーを提案する代わりに、クライアントは自身がサポートするプッシュポリシーのリストを送信する。
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1119におけるクライアント1100による自身がサポートするプッシュポリシーのリストの送信に向けられている。そのようなリストは好ましくは順序リストである(好みの順序、図11cには表されていない)。
その目的のために、ポリシーのタイプと好みの順序のための任意のパラメータとを伝える専用HTTPプッシュヘッダが作成される。例えば、専用HTTPプッシュヘッダは既存のAccept HTTPヘッダと同様に“Accept−Push−Policy”HTTPヘッダとして定義される(https://tools.ietf.org/html/rfc7231#section−5.3.2を参照)。
Acceptヘッダは、所与のmedia−typeが:
(ゼロまたはそれ以上)個の特定media−typeパラメータ(例えば:charset);これは例えば、リクエスト:.jpg、.pngを発行するクライアントによりサポートされるメディアタイプのリストであり得る
0−1個の“q”パラメータ(相対的重さを示すための)
個の拡張パラメータ(拡張パラメータが存在するならばセパレータとして“q”パラメータは必須である)
を持つことを許す。
これは専用HTTPプッシュヘッダに関して:
Accept−Push−Policy:<urn>[‘:’<urn−specific−param>];q=<N>
に帰着し、この“q”パラメータは、何らかのグローバルパラメータが存在するならば、必須である。
“q”パラメータは、1つまたは複数のポリシーパラメータ、上の式の中の<urn−specific−param>、を、もし存在するならば、ポリシータイプ(上の式の中の<urn>により示される)から分離するQ係数である。
Q係数は、ユーザまたはユーザエージェントが、0から1のq値スケールを用いて、ポリシータイプおよび/またはポリシー値についての相対的優先度を示すことを可能にする。デフォルト値はq=1(より大きなQ係数または好ましいもの)である。
説明のために、クライアントは、プッシュヘッダ内の下記の通知:
Accept−Push−Policy:urn:mpeg:dash:fdh:push−next;5
を用いて、1つの要求されたセグメントに続く次の5つのセグメントをプッシュするようにサーバに求めることができ、ここで第1部分、URN、はプッシュディレクティブまたは使用するプッシュポリシーのタイプを一意的に特定する。‘;’セパレータの次の第2パラメータ(任意の)は、このプッシュポリシーにおいて適用するパラメータに対応する。
代わりに、ポリシータイプと値パラメータとの間の他のセパレータがHTTPヘッダ値におけるセパレータとして使用され得る(RFC2616を参照)。
クライアントが自身の好みに応じたプッシュポリシーの順序リストを示すことを可能にする代替実施形態は、例えばライブシナリオにおいてサーバに幾つかの次のセグメントを、それらがサーバ上で準備状態になったならば直ちに、好ましくは3セグメント、さもなければ5セグメント、プッシュするように(図12bにおいて参照番号1230に従って登録された標準的プッシュポリシー)サーバに示すために“q”パラメータを使用することであり、次のように表現され得る:
Accept−Push−Policy:urn:mpeg:dash:fdh:push−next;3、
urn:mpeg:dash:fdh:push−next;5;q=0.5
好みの順序として品質レベルを用いて、ビデオの急速スタート(すなわちMPDリクエストから、初期化および第1ビデオセグメントをプッシュする)を可能にする(ここでは所有者のプッシュポリシーから。場合によっては図12bの1230に従って登録もされる)プッシュポリシーをクライアントが示す別の例として、プッシュポリシーの順序リストが次のように表現され得る:
Accept−Push−Policy:urn:canon:dash:fdh:push−fast−start;high、
urn:canon:dash:fdh:push−fast−start;mid;q=0.7
urn:canon:dash:fdh:push−fast−start;low;q=0.3
あるいは解像度の方を選んで:
Accept−Push−Policy:urn:canon:dash:fdh:push−fast−start;HD、
urn:canon:dash:fdh:push−fast−start;SD;q=0.7
クライアントがサーバに種々のデータをプッシュするように示すために、それは、qのための同じ値を有する2つの異なるプッシュポリシーに対する指示をリクエスト内に置くことができる。これは、サーバにより、そのリクエストに応じて適用されるべき2つのポリシーと解釈されるべきである。
もしサーバが両方を適用できるならば、それは、そのクライアントの受け取りを、自身のレスポンスの中に、専用HTTPプッシュヘッダの中に、同じq値を有するこれら2つのプッシュポリシーを置くことによって、確認する。
ところが、もしその2つのうちの1つだけが適用され得るならば、それは、専用HTTPプッシュヘッダのための値として使用されるプッシュポリシーを用いてクライアントの提案を受け取ったことを確認する。
もしその2つの提案されたプッシュポリシーのいずれもが適用され得なければ、サーバは、無プッシュポリシーの識別子(例えば、登録された値1231、またはこの目的のために特に定義されている任意のプッシュポリシータイプ)を専用HTTPプッシュヘッダの中に加えることによって、クライアントの提案を受け取ったことを確認する。
図11cに戻って、サーバ1101は、ステップ1120において、急速スタートに向けられているかもしれない受け取ったリクエスト1119を処理する。
そのリクエストに応答して、サーバ1101は、最初のリクエストのためのリターンコードを伴う自身のレスポンスをステップ1121で準備する。従って、要求されたリソースが利用可能であれば、リターンコードはHTTPコード200である。
さらに、サーバ1101は、場合によっては自身の好みに合うように順序を再考して同じAccept−Push−Policy専用HTTPプッシュヘッダを用いることにより(そのような場合には、第1のものは、自身がプッシュしようとしている次のデータをアナウンスするために使用されるものである)、あるいは好ましくはリスト中の自身が使用する実際のプッシュポリシーだけを伝える別の専用HTTPプッシュヘッダを使用することにより、クライアント1100により提案されたプッシュポリシーのうちの1つを承認する。
例えば、そのような専用HTTPプッシュヘッダは、“DASH−PUSH”:urn:canon:dash:fdh:push−fast−start;lowであり得(ここでヘッダの名前(“DASH−PUSH”)は例として与えられている)、あるいはパラメータの正確な値を提供せずにポリシーのタイプだけ、例えば“DASH−PUSH”:urn:canon:dash:fdh:push−fast−start、(この場合、サーバにプッシュするメディアのバージョンを選択させる)であり得る。
そのような確認応答データはステップ1122でクライアント1100により受け取られる。
並行して、サーバ1101は、アナウンスされた追加データをクライアントに送るために使用されるデータストリームの準備を開始して(ステップ1123)、対応するデータを送る。
プッシュされたデータの受け取られた(ステップ1124)後にクライアント1100により送られる次のリクエストは、再びプッシュポリシー指示、例えばサーバにより承認された好ましいもの、を含み得る。
サーバ1101がMPDリクエストの中で受け取られた提案されているプッシュポリシーのいずれをもサポートしない場合(ステップ1120)、それは、専用HTTPプッシュヘッダを“無プッシュ”ポリシーにセットすることによってクライアントの提案の受け取りを確認することができる(例えば、図12bの参照番号1231の登録されたURN、urn:mpeg:dash:fdh:push−none、またはその目的のために特に定義されている任意のプッシュポリシータイプ、を通して)。
図11dはプッシュポリシー通知の受け取りを確認する例を示し、この例ではクライアントはストリーミングマニフェストに対する最初のリクエストで“無プッシュ”ポリシーを提案する。換言すれば、図11dは、クライアントが初めにリプリゼンテーション選択に関するコントロールを維持することを望んでいる場合を示す。
図示されているように、第1ステップは、ストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1131における“無プッシュ”ポリシー指示のクライアント1100による送信に向けられている。
従って、最初のリクエスト1131は、クライアントがサーバに何かをプッシュすることを望んでいないということを明らかに示す。説明のために、そのような“無プッシュ”ポリシーは、図12bにおいて参照番号1230に登録されているように、次の通りであり得る:urn:mpeg:dash:fdh:push−none。
このような例は、クライアントがセッションの初めに急速スタートに興味を持っておらず、従ってサーバからのプッシュを阻止する場合に対応する(デフォルトでは、HTTP/2サーバは、適切でない何かをクライアントに送る危険を伴ってプッシュを主導し得る)。
図11dに示されているように、サーバ1101は、この無プッシュポリシーを、参照番号1133の自身のレスポンスで確認する。
セグメントを要求するために、クライアントは自身が何を頼もうとしているのかをより良く知るためにそのMPDを分析し(ステップ1134)、その分析の結果として、1つまたは数個のプッシュポリシーをサーバに提案する(ステップ1135)。
応答して、サーバ1101は、約束されたデータ(表されていない)をプッシュするために図11aまたは図11cと関連して記載されるようにプッシュポリシーを確認する。
当然に、ストリーミングセッションの急速スタートのためのプッシュポリシーは他の目的のためにも使用され得る。例えば、クライアントはMPDリクエスト時にプッシュポリシーを指示し(ステップ1131)、次にサーバは(図11aまたは図11cと関連して前に記載されたように)肯定的にまたは否定的に確認し、結局、第1セグメントをクライアントにプッシュすると約束する。次に、セグメントに対する連続するリクエストのために、クライアントは、自身の選んだプッシュポリシーを示すことによって自身がサーバを信頼してプッシュを続行させるか、それとも特定の“無プッシュ”ポリシーを用いることにより自身が送信に対する完全なコントロールを維持することを望むのかを決定することができる。
どんなプッシュポリシーがクライアントにより示されても、もしサーバがクライアントにより提案されたプッシュポリシーを処理できないかおよび/または対応する特定HTTPヘッダを処理できなければ(例えば図6aのテスト604がフォールスである)、それはどのような種類の確認応答も送ることができず、従ってクライアントからのヒントを単に無視するであろう、ということに留意するべきである。
反対に、クライアントにより提案されたプッシュポリシー(またはディレクティブ)を処理するように構成されてそれを適用すると決定するDASHサーバは、自身のレスポンスにおいて容認されるパラメータ値を伴う(もしあれば)プッシュポリシー(またはディレクティブ)のURNを用いることによってクライアントのリクエストを確認するべきである。クライアントにより複数のプッシュポリシーが示されサーバがクライアントにより提案されたプッシュポリシーのリストのうちのプッシュポリシーの1つをサポートする場合、自身が使用しようとしているプッシュポリシーを、適用されるプッシュポリシーのURNを専用HTTPプッシュヘッダ内に置くことによって、確認するべきである。
任意に、以下で説明されて図11eに示されているようにサーバは自身が実行する代替プッシュポリシーのリストを種々の仕方で宣伝することもできる。
サーバがクライアントにより提案されたプッシュポリシーをサポートしない場合、それは“無プッシュ”ストラテジーのためのURL、すなわちurn:mpeg:dash:fdh:push−none、を用いてクライアントに知らせるべきである。“無プッシュ”ポリシーでの確認応答の他に、それは、自身がサポートする1つのプッシュポリシーまたはプッシュポリシーのリストを別の専用HTTPプッシュヘッダで公表することができる。確認応答レスポンスからあいまいさを無くすために、サーバは好ましくは別の専用HTTPプッシュヘッダを使用する。それは、自身が1つのプッシュポリシーを公表するのかそれともプッシュポリシーのリストを公表するのかにより、Accept−Push−Policyヘッダにおいて与えられるシンタックスを使用することができる。
無プッシュケイパブルサーバ(すなわち、どのクライアントからのどのプッシュポリシーも理解しないサーバ。例えば図6aのテスト604がフォールスである)に対してプッシュポリシーがアドレスされたときにはどんな種類の確認応答も無く、どんなプッシュポリシーの宣伝もクライアントに対してシグナリングされ得ないであろうということに留意するべきである。
クライアントがプッシュポリシーを提案するのを助けるために、サーバは、自身がサポートするプッシュポリシーのリストをクライアントに送信することができる。これは幾つかの仕方で行われ得る。
例のために、サーバによりサポートされるプッシュポリシーのリストは、MPD内のコンテンツを作成するときに決定されることができて後者に1つまたは数個のDASHディスクリプタとして加えられることができる。それらは、オリジンサーバによりまたはコンテンツデリバリーネットワーク(Content Delivery Network)内のサーバによりサポートされるプッシュポリシーの指示を提供する。
これも、ネットワークインターメディアリによって、もしそれらがDASHアウェアであるならば、行われ得る。
そのようなディスクリプタは、特定のscheme_id_uri属性(例えば“urn:mpeg:dash:fdh:pushDirective”)により特定され得る。そのようなディスクリプタのための値属性はプッシュポリシーのタイプを含む(例えば:“urn:mpeg:dash:fdh:push−next”または“urn:mpeg:dash:fdh:push−none”)。
任意に、他の属性(例えばparam)は、プッシュする次のセグメントの数のようなポリシーパラメータを含み得る。これは次のように書かれるであろう:<SupplementalProperty scheme_id_uri=“urn:mpeg:dash:fdh:pushDirective” value=“urn:mpeg:dash:fdh:push−next” param=“5”/>。scheme_id_uriおよび値属性のための値は、DASH標準規格によりまたは少なくとも1230のように登録機関により定義されると想定される。これは、例えば、scheme_id_urisを通してのDASH、DASH産業フォーラム、あるいは対応するプッシュストラテジーを利用するクライアントおよびサーバの振る舞いに関する関連ガイドラインを有するIANAであり得る。
別の例では、特定HTTPヘッダフィールド、例えば“Supported−Push−Policies”、が、サーバによりサポートされるプッシュポリシーを記述するために使用され得る。基本的な実装では、このヘッダフィールドの値は、サポートされるプッシュポリシーの識別子のコンマ分離リストである。
そのような特定HTTPヘッダフィールドは、例えば、次の通りであり得る:
Supported−Push−Policies:urn:dash:adobe:k−push、urn:dash:canon:fast−start
より豊かな実装では、各ポリシーのためにサポートされるパラメータ値は、“,”分離リスト、またはレンジとして記述され得るであろう。
そのような特定HTTPヘッダフィールドは、例えば(ポリシータイプとそのパラメータとの間のセパレータとして‘;’を用いて)、次の通りであり得る:
Supported−Push−Policies: urn:dash:adobe:k−push;0−100、urn:dash:canon:fast−start;low:medium
サーバは、各ポリシーのために“q”パラメータを加えることにより各ポリシーに対する自身の好みを示すこともできるであろう。
そのような特定HTTPヘッダフィールドは、例えば、次の通りであり得る:
Supported−Push−Policies: urn:dash:adobe:k−push;0−100;q=0.4、urn:dash:canon:fast−start;low:medium;q=0.9
アプリケーションコードにおいて、例えばウェブページにおいて、HTMLメタタグは、送信を改善するためにクライアントが使用し得る幾つかのポリシーをリストすることができるであろう。
そのようなHTMLメタタグは、例えば、次の通りであり得る:
<meta name=<<dash:fdh:pushDirective >> content= << urn:one_push_directive_ID>> />
ここで名前属性に許される新しい“dash:fdh:pushDirective”値は既存のエクステンションリスト:https://wiki.whatwg.org/wiki/MetaExtensionsに登録され得るであろう。そのような登録は、メディア配信を最適化するストラテジーをアプリケーションサーバが考慮し、メディアが例えば<video>エレメントとしてウェブページに埋め込まれるということをウェブクライアントが知らされることを可能にする。コンテンツ属性に置く値は、図12bの参照番号1230の登録された値のうちの1つであり得る。
図8は、DASHを伴う適応ストリーミングの場合に関してプッシュヘッダの種々の例を提供する。メディア(ビデオ)は2つの別々のリプリゼンテーションR1 810およびR2 820として利用可能であり、その両方が時間的に整列しているビデオセグメント811および821を含む。
第1例830は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストは、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー2に関心を持っているということも示す。そのようにするために、プッシュ特定ヘッダは、サーバがrequest−URIの中括弧入りパターン(ヘッダの第1パラメータ:“URI”により示される)、すなわちrequest−URIの中の文字列“01”、を最後のパラメータにおいて提供される値(例830においては“02”)を用いて改変しなければならないことを示す。1つの代案は、Push−Request:URI;−\(\d\+\),−\(%02d:\1+1\)のような正規表現を介して置換ルールを示すことだったであろう。
第2例840は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー02、03、04および05に関心があることを示す。将来のセグメントのこのリストは、ここではコンパクト性および簡潔さを目的としてレンジとして表現されている。重ねて、中括弧同士の間のパターンは、4つのURLの対応するリストを構築するために、最初のrequest−URIの中で、提供されたレンジでセットされている値によって繰り返し取って代わられなければならない。
第3例850は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとしてセグメントナンバー02および10に関心を持っていることを示す。セグメントナンバーでの関心は、クライアントがビデオを急いでブラウズすることを可能にするであろう。そのとき、代入値は、コロンで分離された値のリストとして与えられる。クライアントがもっと多くのセグメント(ナンバー02から04、および10から13)に関心を持っていた場合、これらは次のようにレンジのリストを通してシグナリングされ得たであろう:
Push−Request:segment−{1}.mp4;{02−04}:{10−13}
第4例860は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが将来のセグメントとして、リプリゼンテーションR2内の、セグメントナンバー01に関心を持っていることを示す。これは、リプリゼンテーションR2がベースバージョンR1のエンハンストバージョンであるとき、スケーラブルなビデオのために有益であり得る。この例は、request−URIに代入する2つのパターン(中括弧の間の)の存在によって示されるrequest−URIの中の複数のパターンにおける変化を示す。
第5例865は、リプリゼンテーションR1の第1セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、将来のセグメントとして、初めにリプリゼンテーションR2のセグメントナンバー01および両方のリプリゼンテーションR1、および次にR2、のセグメント02に、最後に両方のリプリゼンテーション“R1”および“R2”のセグメント03に関心を持っていることを示す。これは、代入の順序を各々示す2つの(中括弧の間の)パターンの存在により示される。この例では、値“R1”および“R2”の第1のセットを有するリプリゼンテーション識別子が初めに考慮され、次に、01から03を含むレンジ内の値を有するセグメントインデックスが考慮される。
複数のパラメータ(2つのリプリゼンテーションのセグメント01から03)にわたって繰り返すという特別の場合に関しては、リプリゼンテーションR1の第1セグメントは2回提供される(1回は要求された第1セグメントとして−request−URIを見よ;そして1回はプッシュされるデータとして)ことに留意しなければならない。従って、サーバは、最初のrequest−URIに対応するURLを削除するために、得られたURLのリストをフィルタリングすることができる。
第6例870および第7例880は、メディアセグメントがバイトレンジを通してアドレスされるときのヘッダの使用を示し、例えばMPDにおいてはメディアセグメントはそれらのセグメントのバイトレンジを提供するSegmentURLsを含むSegmentBaseエレメントとして記述される。
例870は、リプリゼンテーションR1の初めのバイトに対するクライアントのレンジリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、リソースの将来の部分として、“Rep−R1.mp4”ファイル内の2001バイトオフセットから始まって3000バイトオフセットで終わるバイトレンジに関心を持っていることを示す。
第7例880は、リプリゼンテーションR1の初めのバイトに対するクライアントのレンジリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、リソースの将来の部分として、“Rep−R1.mp4”ファイル内の、バイトレンジ、初めは2001から3000包含のバイトレンジ、次に3001から4000包含のバイトレンジ、のリストに関心があることを示す。
図8の第8且つ最後の例890は、初期化セグメントに対するクライアントのリクエストを示す。このリクエストも、プッシュヘッダ“Push−Request”を通して、クライアントが、将来のセグメントとして、所与のセグメントに関心を持っていることを示す:ここで、パターンアイデンティフィケーションも代入値も無しに、明示的で絶対的なURIが提供される。
上の記述は、主に、場合によっては構築ルールを通して、プッシュされるべき特定リソースを定義する特定プッシュヘッダに集中している。
リソースタイプをリソースフォルダにマッピングする静的設定ファイルをサーバが含む幾つかの実施形態では、クライアントは、クライアントが関心を持っているリソースをフィルタリングするために特定プッシュヘッダを使用することができる。そのようなフィルタリングは、例えば上記のステップ606の間に行われ得る。
このフィルタリングアプローチは、クライアントが特定プッシュヘッダにおいて特定のリソースではなくてリソースの種類を、あるいは少なくともこれらの特定リソースを特定するルールを、示すときに、有益であり得る。
例えば、図12aおよび12bに関連して記載されたように、プッシュポリシーまたはプッシュディレクティブを明確に指定する一意識別子(例えばURN)の使用のような、代案が存在する。
図12aはストリーミングマニフェスト(DASHの場合にはMPD)に対する最初のリクエスト1201でのプッシュポリシーの指示のクライアント1200による送信を示し、その指示はそのプッシュポリシーと関連付けられた一意識別子である。前述されたように、この指示は、専用HTTPプッシュヘッダを介して伝えられ得る。
受け取ると、サーバ1210はステップ1203でリクエストを処理する、すなわちサーバはクライアント1200に提供されるべきリソース(MPD)を特定する。次に、サーバ1210は、最初のリクエストのためのリターンコードを有する自身のレスポンスを準備する。従って、要求されたリソースが利用可能であるならば、そのリターンコードはHTTPコード200である。
並行して、サーバ1210は、専用HTTPプッシュヘッダに含まれている一意識別子の関数として提案されたプッシュポリシーを特定する。もしサーバがそのヘッダを理解することができて自身が提案されたプッシュポリシーを処理できるならば、それは次に、クライアントにより提案されたプッシュポリシーの受け取りを確認する。これは、その一意識別子をレスポンス1204に加えることによって行われ得る。
これは、クライアントに、サーバがその提案されたプッシュポリシーを進んで使用することを示す。
プッシュポリシーと関連付けられる一意識別子は、集中レジストリ、例えば図12bに示されている集中レジストリ1230、において定義され得る。URNは、プッシュポリシー(またはディレクティブ)の一意特定を可能にする。プッシュポリシー(またはディレクティブ)がパラメータを必要とするとき、これらは、プッシュポリシーが明示されるように、上のレジストリからリンクされた仕様において定義されなければならない。
集中レジストリが定義されていなければ、専用HTTPプッシュヘッダはプッシュポリシーのタイプを伝えることができる(例えば、プッシュされるべきセグメントの数、セグメントがプッシュされているべき継続時間、またはMPDアップデートをプッシュするための指示)。
説明のために、専用HTTPプッシュヘッダで伝えられ得るプッシュポリシーのタイプは次の通りであり得る(“Push−Request”は、この例では、専用HTTPプッシュヘッダの名前である):
Push−Request:push−next
Push−Request:push−time
Push−Request:fast−start
Push−Request:mpd−update
任意に、専用HTTPプッシュヘッダは、プッシュポリシーのタイプと、提案されたプッシュポリシーのためのパラメータとを伝えることができる(例えば、セグメントの数とプッシュする継続時間(秒単位))。従って、専用HTTPプッシュヘッダで伝えられる得るプッシュポリシーのタイプと、関連付けられているパラメータとは次の通りであり得る(ここでポリシーのタイプとパラメータとの間のセパレータとして‘;’を使用する):
Push−Request:push−next;5
Push−Request:push−time;2
Push−Request:fast−start;2
Push−Request:mpd−update;patch
Push−Request:push−next;
より一般的に専用HTTPプッシュヘッダは:
Push−Request:URN[‘;’<urn−specific−params>]
として表現され得る。
最後の例は、具体的で、所与のセグメントから全ての次のものをプッシュし続けるようにサーバに示すことを狙っている(すなわち、クライアントからサーバ主導モードへの一種の切り替え)。
少数の可能な値と関連付けられた幾つかのポリシータイプに関しては、タイプとパラメータとを1つのURN、例えば:
urn:mpeg:dash:fdh:2015:push−next−
または
urn:mpeg:dash:fdh:2015:push−time−2
として登録するのが有利であり得るということに留意するべきである。
特定の実施形態により、プッシュするデータのタイプの関数としてプッシュポリシーを提案するためにクライアントがプッシュするデータに関する自身の希望を明確に表現するオプションがクライアントに与えられる。従って、図12bの集中レジストリ1230に示されているように、ユーザはセグメントに関連するプッシュストラテジーのためのセットと、MPDアップデートに関連するプッシュストラテジーのための別のセットとを定義することができる。
そのような実施形態は、特定MPDアップデートプッシュポリシーを持つために有益であることが判明し得、これはクライアントがアップデートプロセスを自動化するためである。実際、MPDアップデートをプッシュすることを提案し承認することは、MPD失効日を示すために特別のメタデータボックスをメディアセグメントに加えることを回避することを可能にする(通例、MPDがアップデートされるときにサーバによって行われる)。
例えば、ストリーミングセッションの間のどこかの時点で承認されたMPDアップデートのためのプッシュポリシーは、サーバがMPDアップデートをプッシュすると約束しているとクライアントに知らせるであろう。
さらにさまざまな種類のMPDアップデートポリシーを持てば、クライアントは、サーバがMPD全体(例えばURN:urn:mpeg:dash:fdh:push−mpd−fullと共に)を再送するかそれともパッチだけを再送するか(urn:mpeg:dash:fdh:push−mpd−patch)を知らされ得るであろう。代わりに、MPDアップデートのために1つのプッシュポリシーだけが定義され得、全体モードまたはパッチモードはパラメータとなる。
図11aから11eは、これらの2種類のプッシュポリシーの使用を示す。図11aから11eと関連して記載されたように、クライアントは、初めにMPDを要求する。その間に、それは、MPDアップデートとセグメントとの両方のプッシュに関心があるのか、それともこれらの2種類のデータのうちの一方だけに関心があるのかを示すことができる。同様に、セグメントに対するリクエストを準備するとき、それはMPDアップデートとセグメントとの両方に対する関心またはこれらの2種類のデータのうちの一方だけに対する関心を示すことができる。
実際、任意の時点でMPDアップデートに対する希望を示すためにセグメントに対するリクエストにおいてMPD特有ポリシーの使用が許されるべきである。同様に、MPDを要求するときにセグメント関連プッシュポリシーを使用することは、クライアントが高速開始ストリーミングセッションを持つことを可能にする。
ストリーミングアプリケーションに向けられた与えられた例は説明のためにHTTP/2プロトコルに基づいているが、WebSocketなどの他の双方向プロトコルも使用され得ることに留意するべきである。特に、専用HTTPプッシュヘッダはWebSocketのためのバインディングにおいて次のように取って代わられ得る:
− URL:要求されたリソースのURLを示す。対応するJSONパラメータは“url”である。
− PushDirective:クライアント選択されたPushDirectiveのURNを示し、JSON名“PushDirective”を有する。
− pushDirectiveに特有であるとともにpushDirectiveにより定義される値を示す任意のpushParams。
同様に、確認応答メカニズムは、幾つかの専用WebSocketフレームにおいてJSONパラメータを使用することができる。
例えば、サーバは様々なフォルダにデータをホストすることができる。そのとき、‘path’はメインリソースに到達するサーバ上のパスであると仮定して、‘path/image’はイメージリソースを含むであろう、‘path/code’はコード、例えばjavascriptコード、を含むであろう、‘path/style’はcssリソースを含むであろう、等々である。このような文脈において、クライアントがウェブページで宣言されている全ての種類のイメージを望むのか(image/)それとも所与のタイプの全てのイメージを望むのか(image/.jpg)を特定プッシュヘッダにおいて示すとき、サーバ上の設定ファイルは、どのリソースディレクトリのためにもプッシュされ得るイメージのリストをリストするべきである。
ウェブページは、リクエストのrequest−URIにおいて要求されているデータであり得る。1つの変化形では、ウェブページは、リクエスト内の別の任意ヘッダを用いて特定され得る。
フィルタリングアプローチにより、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、サーバデバイスにおいて:
第1データを得るHTTPリクエストをクライアントデバイスから受け取るステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、受け取るステップ;
第1データを取り出してクライアントデバイスに送るステップ;ならびに
もし第1任意ヘッダフィールドがHTTPリクエスト内に存在するならば:
HTTPリクエストから得られたメインリソースを用いてデータのセットを特定するステップ;
第2データのリストを得るために1つまたは複数のフィルタリングパラメータを用いて、特定されたセットの各データをフィルタリングするステップ;および
第2データをクライアントデバイスにプッシュするステップ;
を含む。
クライアントの視点からは、本発明はサーバデバイスとクライアントデバイスとの間でデータを送信する方法を提供し、この方法は、クライアントデバイスにおいて:
第1データを得るHTTPリクエストを生成するステップであって、HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、生成するステップ;
第1データを得るとともにサーバデバイスに、HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、フィルタリングパラメータに従って、プッシュさせるためにHTTPリクエストをサーバデバイスに送るステップ;
を含む。
フィルタリングアプローチとしてのプッシュ特定ヘッダの使用の幾つかの例が次に記載される。
第1の例は、クライアントが、それらのタイプに応じてプッシュされるべきサブリソースの優先順位付きリストをサーバに対して示したいときのウェブページのローディング、例えばjssおよびcssならびにその後にhtmlおよびimgをロードするためのローディング、に関連する。その、メインリソースと呼ばれるウェブリソースは、リクエストのrequest−URIにおいて定義されている要求されたものである。特定プッシュヘッダは、次のように定義され得る:
Push−Request: application/javascript;q=1、text/css;q=0.8、text/html;q=0.7、image/png;q=0.6、image/;q=0.4
これは、クライアントがそれらのタイプ(例えばそれらのMIMEタイプ、コンテンツタイプ、フォーマットタイプまたはコーデックタイプ)に応じてプッシュされるべきリソース(例えば、メインリソースで宣言されているサブリソース)のセットを望んでいるというサーバに対する指示である。
ここで、クライアントによる好みの相対的程度を示すAcceptヘッダの‘q’パラメータと類似する仕方で‘q’パラメータを使用して各リソースタイプに優先レベルが提供される。q=0は幾つかのリソースタイプをサーバによるプッシュから除外することを可能にするということに留意されたい。
この例では、優先順位‘q’は、サブリソースがサーバによりプッシュされなければならないクライアントの好む順序またはバージョン(例えば、好まれる解像度に応じた)を定義することを可能にする。結果として、サーバは、プッシュされるデータの順序リストを提供するためにサブリソースをフィルタリングしなければならない。
第2の例は、ウェブページのためのイメージのローディングに関し、このときそのウェブページはリクエストのrequest−URIにおいて定義されている要求されたデータではない。そのような状況では、特定プッシュヘッダのサポート部分は、HTTP“Referer”ヘッダを明示的に示す。これは、クライアントが望んでいる追加リソースがRefererヘッダの値で示されるメインリソースのサブリソースであるという、サーバに対する指示である。任意に、下記のヘッダは、.pngイメージフォーマットのイメージに対する優先順位を用いて、“Referer”HTTPヘッダにおいて示されているウェブページの全てのイメージのローディングを行わせる:
Push−Request:Referer;image/png;q=0.6,image/;q=0.4
Referer:the_url_to−web−page
第3の例はDASHストリーミング、特にMPDローディングおよび急速スタートに関連する。プッシュヘッダは次の通りであり得、MPDはリクエストのrequest−URIにおいて定義されている要求されたデータである:
Push−Request:video/mp4;q=1、video/webm;q=0.4
これは、“video/webm”MIMEタイプを有するセグメントではなくて“video/mp4”MIMEタイプを有するメディアセグメントからスタートするというクライアントからの好みを示す。同等の例は:
Push−Request:URI;video.{1};{video/.mp4;q=1,video/webm;q=0.4}
を書くことであり得る。
上の例においては、メインリソース、すなわちMPD、のためのURIに基づいて、サーバは、クライアントにプッシュするmp4フォーマットの全てのビデオセグメントを推論することができる。このワイルドカード代入値に関しては、例えば所与のマニフェストのための静的設定情報に基づいてあるいはMPD分析から、プッシュするセグメントのリストを決定することはサーバの義務である。
より一般的に、これは、例えばjavascriptコードのピースまたはCSSサブリソースをダウンロードするクライアントが、自身が同じリクエストのためにそれぞれそのjavascriptコードおよびCSSサブリソースにおいて参照されているサブリソースをも入手したいということをウェブページにおいて宣言するとともにサーバに対して示すときに有益であり得る。
第4の例は、ビデオストリーミング、より具体的にはバイトレンジ単位でシークすることに関連する。もしHTTPリクエストにおいてSegmentBase URLおよびバイトレンジを用いてメディアコンテンツのサブパートが要求されるならば、その同じリクエスト内の次のプッシュヘッダは、バイトレンジ[1400−4000]のプッシュ、およびその後により低い優先順位でバイトレンジ[4000−6000]のプッシュを行わせることを可能にする:
Push−Request:Range;{1};[1400−4000];q=1:[4000−6000];q=0.8
第5の例は、DASHアプリケーションに関して、プッシュされるべきリソースのセットをメインリソース、すなわちマニフェスト、に関連するものとして記述する。これは、値“Referer”を有する特定プッシュヘッダのサポート部分を通して示される。パターン部分はビデオリソースのセットを示し、ワイルドカード代入値はビデオセグメントのタイプ、ここではmp4、に基づくフィルタリングルールを示す:
Push−Request:Referer;video.{1};video/.mp4
Referer:the_url_to−MPD
これは、クライアントが特定プッシュヘッダにおいてワイルドカード値を使用することを可能にする。
Refererヘッダは、任意のものであるけれども、インテリジェントなサーバ(MPDアウェア)の場合には、それの値は、サーバがクライアントにより示されたセグメント(より一般的には(サブ−)リソース)のセットをフィルタリングするのを助けることができる。
図9は、複数の実施形態によるデバイスの略図である。このデバイスはサーバ、クライアントまたはプロキシであり得る。このデバイスは、複数の実施形態による方法を実行するために構成された制御ユニット901のための作業メモリとして使用され得るRAMメモリ902を含む。例えば、制御ユニットは、ROMメモリ903からロードされたコンピュータプログラムの命令を実行するように構成され得る。プログラムは、ハードドライブ906からもロードされ得る。
デバイスは、単一のネットワークインターフェースであり得るネットワークインターフェース904も含み、あるいはネットワークインターフェースのセット(例えば、数個の無線インターフェース、または数タイプの有線もしくは無線インターフェース)を含む。デバイスは、ユーザに対して情報を表示するとともにユーザから入力を受け取るためのユーザインターフェース905を含むことができる。
デバイスは、外部デバイスからデータを受け取りおよび/または外部デバイスにデータを送るための入力/出力モジュール907をも含むことができる。
本発明は図面に詳しく図示されるとともに叙上において詳しく記載されているが、そのような図示および記載は例示的もしくは代表的なものであって制限的なものではないと見なされるべきであり、本発明は、開示された実施形態に限定されない。開示された実施形態に対する他の改変は、請求項に記載された発明を実施するにあたって図面、明細書および添付されている請求項の検討から、当業者に理解され実施され得る。
そのような改変は、特に、発明の概要および/または添付されている請求項において明らかにされている実施形態を組み合わせることから派生し得る。
請求項において、“含む”という語は他のエレメントやステップを除外せず、不定冠詞“a”もしくは“an”は複数を除外しない。単一のプロセッサまたは他のユニットは、請求項に記載されている数個のアイテムの機能を遂行することができる。互いに異なる従属請求項において様々な特徴が述べられているという単なる事実は、これらの特徴の組み合わせが有利に使用され得ないということを示すものではない。請求項における参照符号は、本発明の範囲を限定するものと見なされるべきではない。

Claims (29)

  1. サーバデバイスとクライアントデバイスとの間でデータを送信する方法であって、この方法は、前記サーバデバイスにおいて:
    第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに、第2データをプッシュすることに関連する指示を含む1つまたは複数の追加のヘッダフィールドを含む、前記受け取るステップ;
    前記第1データを取り出して前記クライアントデバイスに送るステップ;
    第2データをプッシュすることに関連する前記指示を表す確認応答データを前記クライアントデバイスに送るステップ;および
    前記1つまたは複数のヘッダフィールドだけ、および場合によってはさらに前記第1データ特定情報、を用いて、前記サーバデバイス上の前記第2データの特定を可能にする第2データ特定情報を決定するステップ;
    を含む、方法。
  2. 前記第2データの前記プッシュをアナウンスするプッシュ約束メッセージを前記クライアントデバイスに送るステップおよび/または前記第2データを前記クライアントデバイスにプッシュするステップ、
    をさらに含む、請求項1に記載の方法。
  3. 前記確認応答データは前記第2データをプッシュするための指示を表す、請求項1に記載の方法。
  4. 第2データをプッシュすることに関連する前記指示は、第2データをプッシュすることに関連する少なくとも2つの異なる指示を含むリストを含む、請求項1に記載の方法。
  5. 前記確認応答データは第2データをプッシュすることに関連する前記少なくとも2つの異なる指示のうちの1つを含み、第2データをプッシュすることに関連する前記少なくとも2つの異なる指示のうちの前記の1つは、前記クライアントデバイスにプッシュされるべき前記第2データを特定するために使用される、請求項4に記載の方法。
  6. 第2データをプッシュすることに関連する前記指示は前記第2データのデータのタイプと関連付けられ、前記データのタイプは記述データタイプまたはコンテンツデータタイプを含み、前記第2データはコンテンツデータにまたは記述データに属する、請求項1に記載の方法。
  7. 前記確認応答データは、第2データをプッシュすることに関連する指示を含み、前記確認応答データ内の第2データをプッシュすることに関連する前記指示は、前記HTTPリクエスト内の第2データをプッシュすることに関連する前記指示とは異なる、請求項1に記載の方法。
  8. 第2データをプッシュすることに関連する前記指示は、少なくとも1つの一意識別子を含み、前記少なくとも1つの一意識別子は、第2データをプッシュするためのディレクティブとプッシュされるべき前記第2データのアイデンティフィケーションとを表すかまたは第2データをプッシュしないためのディレクティブを表す、請求項1に記載の方法。
  9. 前記1つまたは複数の追加ヘッダフィールドは1つまたは複数の任意ヘッダフィールドである、請求項1に記載の方法。
  10. 前記第1および第2のデータ特定情報は、それぞれ、第1および第2のユニフォームリソースアイデンティファイア、URI、を含む、請求項1に記載の方法。
  11. 前記1つまたは複数の任意ヘッダフィールドは、前記HTTPリクエストの前記内容から前記第2URIを生成する少なくとも1つの構築ルールを含む、請求項10に記載の方法。
  12. 前記1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、前記変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、前記代入情報は1つまたは複数の前記第2のURIを定義するために前記参照URIにおいて特定される前記変化サブパーツに取って代わる少なくとも1つの代入値を含む、請求項10に記載の方法。
  13. 前記第1データ特定情報は、前記サーバデバイス上のメインリソースを特定する第1ユニフォームリソースアイデンティファイア、URI、を含むとともに、前記メインリソースのサブパーツを前記第1データとして定義するサブパーツ情報を含み;および
    前記任意ヘッダフィールドは、前記第2データ特定情報を定義するために前記第1データ特定情報内の前記サブパーツ情報に取って代わる代入サブパーツ情報を含む、
    請求項11に記載の方法。
  14. 前記サブパーツ情報は、前記メインリソースの中のバイトのレンジ値を含む、請求項13に記載の方法。
  15. 前記1つまたは複数の任意ヘッダフィールドは変化部分情報および代入情報を含み、前記変化部分情報は参照URI内の少なくとも1つの変化サブパーツを特定し、前記代入情報は1つまたは複数の前記第2のURIを定義するために前記参照URIにおいて特定される前記変化サブパーツに取って代わる少なくとも1つの代入値を含む、請求項10に記載の方法。
  16. 前記変化部分情報は、前記代入情報に含まれるそれぞれの1つまたは複数の代入値を用いて置換されるべき前記参照URI内の2つ以上のサブパーツを特定する、請求項15に記載の方法。
  17. サーバデバイスとクライアントデバイスとの間でデータを送信する方法であって、前記方法は、クライアントデバイスにおいて:
    前記サーバデバイスから得られるべきデータを特定するステップ;
    前記特定されたデータから第1データを得るHTTPリクエストを生成するステップであって、前記HTTPリクエストは、前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに前記サーバデバイスが第2データをプッシュするべきか第2データをプッシュするべきでないかに関する指示を含む1つまたは複数の追加のヘッダフィールドを含む、前記生成するステップ;
    前記第1データを得るとともに前記サーバデバイスに第2データをプッシュさせまたはプッシュさせないために前記HTTPリクエストを前記サーバデバイスに送るステップ;および
    前記HTTPリクエストを送ることに応答して確認応答データを前記サーバデバイスから受け取るステップであって、前記確認応答データは第2データをプッシュすることに関連する前記指示を表す、前記受け取るステップ;を含み、
    前記1つまたは複数の追加のヘッダフィールドは、前記1つまたは複数の追加のヘッダフィールドだけに、および場合によってはさらに前記第1データ特定情報に、基づいて、前記サーバデバイス上の前記特定されたデータから第2データの特定を可能にする第2データ特定情報を定義する、
    方法。
  18. サーバデバイスからクライアントデバイスによりデータを受け取る方法であって、前記方法は、前記クライアントデバイスにおいて:
    第1データを得るHTTPリクエストを送るステップであって、前記HTTPリクエストは、前記サーバデバイス上の前記第1データの特定を可能にする第1データ特定情報を含むとともに1つまたは複数の追加のヘッダフィールドを含む、前記送るステップ;
    もし前記第1データと異なる第2データを前記サーバデバイスがプッシュすることを前記クライアントが希望しなければ、前記HTTPリクエストに応答して第2データが前記サーバによりプッシュされることを前記クライアントが希望しないことを示す情報アイテムを前記1つまたは複数の追加ヘッダフィールドのうちの少なくとも1つに挿入するステップ;および
    前記HTTPリクエストを前記サーバデバイスに送るステップ;
    を含む、方法。
  19. データをサーバデバイスからクライアントデバイスに送る方法であって、前記方法は、前記サーバデバイスにおいて:
    第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは前記サーバデバイス上の第1データの特定を可能にする第1データ特定情報を含むとともに、1つまたは複数の追加のヘッダフィールドを含む、前記受け取るステップ;
    前記第1データを取り出して前記クライアントデバイスに送るステップ;および
    前記サーバは前記HTTPリクエストに応じて前記第1データと異なる第2データを前記クライアントにプッシュしないということを示す情報アイテムを送るステップ;
    を含む、方法。
  20. 前記サーバは第2データをプッシュしないということを示す前記情報は少なくとも1つの一意識別子を含み、前記少なくとも1つの一意識別子は第2データをプッシュさせないためのディレクティブを表す、請求項19に記載の方法。
  21. 前記HTTPリクエストを送ることに応答して、前記サーバデバイスから確認応答データを受け取るステップをさらに含み、前記確認応答データは、前記第1データと異なる第2データを前記サーバがプッシュしないということを示す情報アイテムを含む、請求項18に記載の方法。
  22. 前記第1データを取り出して前記クライアントデバイスに送るステップ;および
    前記サーバは、前記HTTPリクエストに応答して、前記第1データと異なる第2データを前記クライアントに送らないということを示す情報アイテムを前記クライアントに送るステップ;
    をさらに含む、請求項19に記載の方法。
  23. 前記サーバが第2データをプッシュしないということを示す前記情報は少なくとも1つの一意識別子を含み、前記少なくとも1つの一意識別子は第2データをプッシュしないためのディレクティブを表す、請求項19に記載の方法。
  24. 前記サーバにより第2データがプッシュされることを前記クライアントが希望しないということを示す前記情報は少なくとも1つの一意識別子を含み、前記少なくとも1つの一意識別子は第2データをプッシュしないためのディレクティブを表す、請求項19に記載の方法。
  25. サーバデバイスとクライアントデバイスとの間でデータを送信する方法であって、前記方法は、前記サーバデバイスにおいて:
    第1データを得るHTTPリクエストを前記クライアントデバイスから受け取るステップであって、前記HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、前記受け取るステップ;
    前記第1データを取り出して前記クライアントデバイスに送るステップ;ならびに
    もし前記第1任意ヘッダフィールドが前記HTTPリクエスト内に存在するならば:
    前記HTTPリクエストから得られたメインリソースを用いてデータのセットを特定するステップ;
    第2データのリストを得るために前記1つまたは複数のフィルタリングパラメータを用いて、前記特定されたセットの各データをフィルタリングするステップ;および
    前記第2データを前記クライアントデバイスにプッシュするステップ;
    を含み、前記1つまたは複数のフィルタリングパラメータは:
    − リソースタイプを定義し;前記1つまたは複数のリソースタイプはアプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
    − DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
    − 前記メインリソースのサブパーツを特定する時間レンジを用いて前記第1任意ヘッダフィールドにおいて定義される;
    方法。
  26. サーバデバイスとクライアントデバイスとの間でデータを送信する方法であって、前記方法は、前記クライアントデバイスにおいて:
    第1データを得るHTTPリクエストを生成するステップであって、前記HTTPリクエストは1つまたは複数のフィルタリングパラメータを含む第1任意ヘッダフィールドを含む、前記生成するステップ;
    前記第1データを得るとともに前記サーバデバイスに、前記HTTPリクエストから推定されるメインリソースにおいて参照される第2データを、前記フィルタリングパラメータに従って、プッシュさせるために前記HTTPリクエストを前記サーバデバイスに送るステップ;
    を含み、
    前記1つまたは複数のフィルタリングパラメータは:
    − リソースタイプを定義し;前記1つまたは複数のリソースタイプは、アプリケーションタイプ、テキストタイプ、イメージタイプ、ビデオタイプ、オーディオタイプからの1つまたは複数のタイプを含み;または
    − DASHメディアプレゼンテーション記述内のエレメントの識別子を用いてデータの1つまたは複数のグループを特定し;または
    − 前記メインリソースのサブパーツを特定する時間レンジを用いて前記第1任意ヘッダフィールドにおいて定義される;
    方法。
  27. プログラマブルな装置のためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、前記プログラムがプログラマブルな装置によってロードされて実行されたとき請求項1、17、18、19、25および26のうちのいずれか1つに記載の方法の各ステップを実行するための命令を含む、コンピュータプログラム製品。
  28. 請求項1、17、18、19、25および26のうちのいずれか1つに記載の方法を実行するためのコンピュータプログラムの命令を記憶しているコンピュータ可読記憶媒体。
  29. 請求項1、17、18、19、25および26のうちのいずれか1つに記載の方法の各ステップを実行するようになされている手段を含むデバイス。
JP2017537233A 2015-01-28 2016-01-15 サーバデバイスによるリソースの改善されたクライアント主導型プッシュ Active JP6686029B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1501437.6A GB2534849A (en) 2015-01-28 2015-01-28 Client-driven push of resources by a server device
GB1501437.6 2015-01-28
GB1509094.7A GB2534617A (en) 2015-01-28 2015-05-27 Improved client-driven push of resources by a server device
GB1509094.7 2015-05-27
PCT/EP2016/050713 WO2016120089A1 (en) 2015-01-28 2016-01-15 Improved client-driven push of resources by a server device

Publications (3)

Publication Number Publication Date
JP2018509679A true JP2018509679A (ja) 2018-04-05
JP2018509679A5 JP2018509679A5 (ja) 2019-02-21
JP6686029B2 JP6686029B2 (ja) 2020-04-22

Family

ID=52674078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017537233A Active JP6686029B2 (ja) 2015-01-28 2016-01-15 サーバデバイスによるリソースの改善されたクライアント主導型プッシュ

Country Status (7)

Country Link
US (2) US10348846B2 (ja)
EP (1) EP3251322B1 (ja)
JP (1) JP6686029B2 (ja)
KR (1) KR102007105B1 (ja)
CN (1) CN107211022B (ja)
GB (3) GB2534849A (ja)
WO (1) WO2016120089A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2953313A1 (en) * 2014-06-05 2015-12-09 Thomson Licensing Method for operating a cache arranged along a transmission path between client terminals and at least one server, and corresponding cache
US11943289B2 (en) 2014-10-14 2024-03-26 Comcast Cable Communications, Llc Manipulation of content transmissions
US11917002B2 (en) 2014-10-14 2024-02-27 Comcast Cable Communications, Llc Manipulation and recording of content transmissions
US10880357B2 (en) * 2014-12-23 2020-12-29 Adobe Inc. Reducing requests for media segments in streaming of multimedia content
GB2534849A (en) * 2015-01-28 2016-08-10 Canon Kk Client-driven push of resources by a server device
GB2540632B (en) * 2015-07-24 2018-05-16 Canon Kk Methods, devices and computer programs for pushing data in a network environment comprising cache servers
US10152080B2 (en) * 2015-09-23 2018-12-11 Adobe Systems Incorporated Power efficient multimedia content streaming based on media segment duration
US10158682B2 (en) 2015-09-23 2018-12-18 Adobe Systems Incorporated Power efficient multimedia content streaming based on a server push
CN106604077B (zh) * 2015-10-14 2020-09-29 中兴通讯股份有限公司 自适应流媒体传输方法及装置
US20180109577A1 (en) * 2016-10-13 2018-04-19 Sharp Laboratories Of America, Inc. Systems and methods for enabling communications associated with digital media distribution
CN107959667B (zh) * 2016-10-18 2020-10-09 华为技术有限公司 一种媒体分片的推送方法、服务器及客户端
US20180176325A1 (en) * 2016-12-15 2018-06-21 Huawei Technologies Co., Ltd. Data pre-fetching in mobile networks
CN108512876B (zh) * 2017-02-27 2020-11-10 腾讯科技(深圳)有限公司 数据的推送方法及装置
US11659057B2 (en) * 2017-04-19 2023-05-23 Comcast Cable Communications, Llc Methods and systems for content delivery using server push
KR102307447B1 (ko) * 2017-05-02 2021-09-30 삼성전자주식회사 네트워크 환경 모니터링에 기반하는 http 적응적 스트리밍 서버, 방법, 및 클라이언트 단말
US11477305B2 (en) * 2017-05-03 2022-10-18 Comcast Cable Communications, Llc Local cache bandwidth matching
US20190020734A1 (en) * 2017-07-14 2019-01-17 Comcast Cable Communications, Llc Reduced content manifest size
US11622020B2 (en) * 2017-08-31 2023-04-04 Micro Focus Llc Push control
JP6950408B2 (ja) * 2017-09-28 2021-10-13 京セラドキュメントソリューションズ株式会社 情報処理システム、画像形成装置、および情報処理方法
US10461884B2 (en) * 2017-10-05 2019-10-29 Comcast Cable Communications, Llc Server selected variable bitrate streaming
GB2567665B (en) * 2017-10-19 2022-06-22 Arm Ip Ltd Asset update service
US20190141075A1 (en) * 2017-11-09 2019-05-09 Monarx, Inc. Method and system for a protection mechanism to improve server security
CN109981695B (zh) * 2017-12-27 2021-03-26 Oppo广东移动通信有限公司 内容推送方法、装置及设备
CN109063142B (zh) * 2018-08-06 2021-03-05 网宿科技股份有限公司 网页资源推送方法、服务器及存储介质
US11716264B2 (en) * 2018-08-13 2023-08-01 Cisco Technology, Inc. In situ triggered function as a service within a service mesh
CN109151492B (zh) * 2018-09-29 2021-02-02 网宿科技股份有限公司 一种直播视频的快速启动方法及装置
CN109359215B (zh) * 2018-12-03 2023-08-22 江苏曲速教育科技有限公司 视频智能推送方法和系统
US11159635B2 (en) 2019-05-07 2021-10-26 Hulu, LLC Soft server push in video streaming
US11212368B2 (en) * 2019-05-17 2021-12-28 Netflix, Inc. Fire-and-forget offload mechanism for network-based services
CN110730206A (zh) * 2019-09-06 2020-01-24 浪潮金融信息技术有限公司 一种应用于新零售平台数据展示的数据服务方案
US11425187B2 (en) * 2019-09-30 2022-08-23 Tencent America Llc. Session-based information for dynamic adaptive streaming over HTTP
CN111427850A (zh) * 2019-11-06 2020-07-17 杭州海康威视数字技术股份有限公司 一种显示报警文件的方法、装置及系统
CN111586100B (zh) * 2020-04-01 2022-04-22 富途网络科技(深圳)有限公司 目标对象消息发送装置及方法
CN111988235B (zh) * 2020-08-13 2023-05-09 暨南大学 一种基于多http/3连接的并行传输方法
US20220078261A1 (en) * 2020-09-10 2022-03-10 Microsoft Technology Licensing, Llc Controlling client/server interaction based upon indications of future client requests
CN112600823A (zh) * 2020-12-09 2021-04-02 上海牙木通讯技术有限公司 句柄标识解析缓存方法、查询方法及句柄标识解析系统
US11451602B2 (en) * 2021-01-06 2022-09-20 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over HTTP
US11816177B2 (en) * 2021-07-21 2023-11-14 Yext, Inc. Streaming static web page generation
CN114553947B (zh) * 2022-01-29 2024-01-19 北京金堤科技有限公司 一种对消息进行处理的方法及装置
US20230336599A1 (en) * 2022-04-19 2023-10-19 Tencent America LLC Extensible Request Signaling for Adaptive Streaming Parameterization
CN115022280B (zh) * 2022-06-16 2023-07-14 杭州楷知科技有限公司 一种nat探测的方法、客户端及系统
CN114827633B (zh) * 2022-06-17 2022-09-13 浙江华创视讯科技有限公司 一种媒体流容灾方法、装置和相关设备
KR102663914B1 (ko) * 2022-07-13 2024-05-13 주식회사 시큐다임 전자 장치 및 이에 의한 http 트래픽의 분석 방법
US11824745B1 (en) * 2022-12-15 2023-11-21 Amazon Technologies, Inc. Reverse engineering computer network system functionality

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130246583A1 (en) * 2012-03-14 2013-09-19 Canon Kabushiki Kaisha Method, system and server device for transmitting a digital resource in a client-server communication system
KR20140055340A (ko) * 2012-10-31 2014-05-09 삼성전자주식회사 적응형 스트리밍을 이용한 미디어 세그먼트 송수신 방법 및 장치
WO2015004276A2 (en) * 2013-07-12 2015-01-15 Canon Kabushiki Kaisha Adaptive data streaming method with push messages control

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR0214760A (pt) * 2001-12-06 2004-11-09 Access Co Ltd Sistema e método para fornecer serviços de conteúdo de assinatura para dispositivos móveis
CN1881242A (zh) * 2005-06-14 2006-12-20 张晓东 汽车行业跨企业供应链系统web应用平台
US7873710B2 (en) * 2007-02-06 2011-01-18 5O9, Inc. Contextual data communication platform
CN101350820A (zh) * 2008-08-29 2009-01-21 中兴通讯股份有限公司 一种推送业务代理网关对推送业务发起者的安全认证方法
CN101370033B (zh) * 2008-09-26 2011-09-14 成都市华为赛门铁克科技有限公司 一种推送消息的方法和设备
CN102232298B (zh) * 2011-04-07 2013-10-09 华为技术有限公司 媒体内容的传输处理方法、装置与系统
CN103036960A (zh) * 2012-12-07 2013-04-10 中国联合网络通信集团有限公司 一种信息推送方法、装置及系统
GB2516112B (en) * 2013-07-12 2016-10-26 Canon Kk Methods for providing media data, method for receiving media data and corresponding devices
KR101924703B1 (ko) * 2014-02-13 2019-02-20 코닌클리즈케 케이피엔 엔.브이. 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청
GB2534849A (en) * 2015-01-28 2016-08-10 Canon Kk Client-driven push of resources by a server device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130246583A1 (en) * 2012-03-14 2013-09-19 Canon Kabushiki Kaisha Method, system and server device for transmitting a digital resource in a client-server communication system
KR20140055340A (ko) * 2012-10-31 2014-05-09 삼성전자주식회사 적응형 스트리밍을 이용한 미디어 세그먼트 송수신 방법 및 장치
WO2015004276A2 (en) * 2013-07-12 2015-01-15 Canon Kabushiki Kaisha Adaptive data streaming method with push messages control

Also Published As

Publication number Publication date
CN107211022B (zh) 2020-10-27
GB2534617A (en) 2016-08-03
GB2538832B (en) 2019-10-09
GB2534849A (en) 2016-08-10
GB2538832A (en) 2016-11-30
US20180013845A1 (en) 2018-01-11
WO2016120089A1 (en) 2016-08-04
EP3251322B1 (en) 2021-11-24
GB201602333D0 (en) 2016-03-23
KR20170106426A (ko) 2017-09-20
US10348846B2 (en) 2019-07-09
US20170230442A1 (en) 2017-08-10
CN107211022A (zh) 2017-09-26
KR102007105B1 (ko) 2019-08-02
GB201501437D0 (en) 2015-03-11
JP6686029B2 (ja) 2020-04-22
GB201509094D0 (en) 2015-07-08
EP3251322A1 (en) 2017-12-06

Similar Documents

Publication Publication Date Title
JP6686029B2 (ja) サーバデバイスによるリソースの改善されたクライアント主導型プッシュ
US11375031B2 (en) Adaptive data streaming method with push messages control
JP5658820B2 (ja) Httpストリーミングのためのメディアプレゼンテーション記述デルタファイル
JP2016531466A5 (ja)
US20050120091A1 (en) Method, network device and system for providing profile data applicable to hypertext transfer protocol (http)
EP2652633A2 (en) Proxy server with byte-based include interpreter
GB2534057A (en) Methods for providing media data, method for receiving media data and corresponding devices
GB2517060A (en) Adaptive data streaming method with push messages control
GB2575189A (en) Adaptive client-driven push of resources by a server device
GB2543279A (en) Methods, devices and computer programs for optimizing use of bandwidth when pushing data in a network environment comprising cache servers

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200110

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: 20200303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200401

R151 Written notification of patent or utility model registration

Ref document number: 6686029

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151