KR101924703B1 - 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청 - Google Patents

단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청 Download PDF

Info

Publication number
KR101924703B1
KR101924703B1 KR1020167023472A KR20167023472A KR101924703B1 KR 101924703 B1 KR101924703 B1 KR 101924703B1 KR 1020167023472 A KR1020167023472 A KR 1020167023472A KR 20167023472 A KR20167023472 A KR 20167023472A KR 101924703 B1 KR101924703 B1 KR 101924703B1
Authority
KR
South Korea
Prior art keywords
chunk
http
chunks
message
request message
Prior art date
Application number
KR1020167023472A
Other languages
English (en)
Other versions
KR20160114203A (ko
Inventor
제로엔 파메이
Original Assignee
코닌클리즈케 케이피엔 엔.브이.
유니버시테이트 젠트
아이엠이씨 브이제트더블유
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 코닌클리즈케 케이피엔 엔.브이., 유니버시테이트 젠트, 아이엠이씨 브이제트더블유 filed Critical 코닌클리즈케 케이피엔 엔.브이.
Publication of KR20160114203A publication Critical patent/KR20160114203A/ko
Application granted granted Critical
Publication of KR101924703B1 publication Critical patent/KR101924703B1/ko

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/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L65/604
    • H04L65/4084
    • H04L65/601
    • H04L65/608
    • 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/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • 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/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • 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/75Media network packet handling
    • H04L65/764Media network packet handling at 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/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • 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/75Media network packet handling
    • 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/80Responding to QoS

Landscapes

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

Abstract

단일 요청 메세지에 기초하여 스트리밍 클라이언트에 의해 복수의 청크를 요청하기 위한 방법이 기술되며, 여기서 상기 청크는 상기 청크 식별자에 의해 정의된 청크를 상기 클라이언트에게 전달하기 위해 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자를 포함하는 매니페스트 파일에 의해 결정되며, 여기서 상기 방법은: 복수의 제1 청크를 요청하기 위한 제1 요청 메세지를 상기 매니페스트 파일에 기초하여 결정하며, 상기 제1 요청 메세지는 하나 이상의 청크 템플릿 파라메터와 제1 청크 템플릿, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL 청크 템플릿을 포함하고; 제1 요청 메세지를 제1 네트워크 노드로 전송하며, 여기서 상기 제1 네트워크 노드는 복수의 제1 청크 식별자, 바람직하게는 상기 제1 청크 템플릿과 상기 하나 이상의 청크 템플릿 파라메터에 기초하여 상기 복수의 제1 청크와 관련된 복수의 제1 URLs을 결정하도록 구성되고; 및 상기 제1 청크 템플릿과 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자 중 하나와 관련된 청크를 포함하는 적어도 하나의 응답 메세지를 수신하는 것을 포함한다.

Description

단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청{REQUESTING MULTIPLE CHUNKS FROM A NETWORK NODE ON THE BASIS OF A SINGLE REQUEST MESSAGE}
본 발명은 단일 요청 메세지에 기초하여 네트워크 노드로부터 다수의 청크를 요청하는 것에 관한 것이며, 배타적이지는 않지만, 특히 단일 요청 메세지에 기초하여 네트워크 노드로부터 다수의 청크를 요청하기 위한 방법에 관한 것이고, 단일 요청 메세지에 의거하여 네트워크 노드로부터 다수의 청크를 요청하도록 구성된 적응형 스트리밍 클라이언트를 포함하는 사용자 장치(device), 단일 요청 메세지에 기초하여 상기 클라이언트에게 다수의 청크를 전달하기 위한 네트워크 노드 및 그러한 방법을 구현하기 위한 컴퓨터 프로그램 제품에 관한 것이다.
인터넷 비디오와 인터넷 TV의 인기가 증가함으로 인하여, 다양한 네트워크 조건 하에서 연속적인 재생(playback)과 최상의 사용자 경험을 허용하는 적응형 스트리밍 솔루션에 대한 필요성이 증대하고 있다. 적응형 스트리밍의 개념은 비디오 스트림에 의해 요구되는 대역폭을 스트리밍 소스와 클라이언트 사이의 네트워크 경로 상의 이용 가능한 대역폭에 적응시키려는 아이디어에 기초하며, 여기서 대역폭은 비디오 스트림의 비트-레이트(즉. 품질)를 변경함에 의하여 적응(adapted)된다.
현재 다수의 HTTP-기반 적응형 스트리밍(HAS) 프로토콜이 개발되었다. 그러한 프로토콜의 예는 애플 HTTP 라이브 스트리밍[http://tools.ietf.org/html/draft-pantos-http-live-streaming-07], 마이크로소프트 스무드 스트리밍[http://www.iis.net/download/SmoothStreaming], 아도베 HTTP 동적 스트리밍[http://www.adobe.com/products/httpdynamicstreaming], 3GPP-DASH [TS 26.247 Transparent end-to-end Packet-switched Streaming Service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP] 를 포함한다.
독자적인 기술을 시장에 두루 일치시키기 위한 노력으로, ISO는 HTTP(MPEG DASH)를 통해 MPEG 동적 적응형 스트리밍으로 언급되는 ISO/IEC 23009를 만들었다. HAS 솔루션에서 콘텐츠 스트림은 일반적으로(일시적으로 및, 때로는 또한, 공간적으로) "청크(chunk)"로 분할된다. 청크는 큰 파일의 일부로 저장되는 프래그먼트(fragment)에 관한 것일 수 있거나 또는 세그먼트(segment)에 관한 것일 수 있다(그로 인해 각 세그먼트는 별도의 파일로 저장된다). 청크는 임의의 듀레이션(duration)을 가질 수 있으나, 듀레이션에 있어서 일반적으로 2초(즉, 마이크로소프트 스무드 스트리밍)와 10 초(즉, 애플 HTTP 라이브 스트리밍) 사이이며, 스케일러블 비디오 코딩(SVC)과 같은 즉 적절한 코딩 방법을 사용하여 하나 이상의 품질 표현(quality representation)에 사용할 수 있다. 청크에 기반한 스트리밍 콘텐츠는 현재의 네트워크 및 장치 조건(즉, 측정된 대역폭, 이용 가능한 CPU, 버퍼 사이즈)에 기초하여 스트리밍 클라이언트에게 하나의 청크 요청에서 다음 요청으로 비디오 품질을 매끄럽게 적응하도록 허용한다.
콘텐츠 전달 네트워크(CDN)는 전형적으로 수 많은 스트리밍 클라이언트에게 청크를 효율적으로 전달하기 위해 사용된다. 청크 및 그들의 다른 표현 (representations)은 스트림의 세그먼트에 대한 정보(세그먼트 식별자들, 위치, 플레이-아웃, 등) 및 스트림의 다른 세그먼트들 간의 시간적 관계를 포함할 수 있는, 소위 매니페스트 파일이다.
MPEG DASH 매니페스트에서, 매니페스트 파일은 또한 미디어 프레젠테이션 설명(MPD)으로 언급되고, 청크 식별자 및 청크를 전달하도록 구성된 네트워크 노드를 가리키는 URLs 같은 하나 이상의 청크 로케이터(chunk locator)를 포함한다. 스트림 세션의 시작에서, 클라이언트는 먼저 이용 가능한 품질 표현의 세트, 표현 비트레이트, 청크의 수, 및 그들의 위치를 결정하기 위한 매니페스트 파일을 요청한다. 그런 후 청크는 HTTP GET 방법을 사용하여 차례로 요청될 수 있다. 요청될 청크의 품질 표현은 클라이언트의 레이트(rate) 적응 알고리즘에 의해 결정될 수 있다.
현재 콘텐츠는 항상 증가하는 청크의 수로 처리된다. 예에는 스케일러블 비디오 코딩(SVC)을 사용하여 인코드된 일시적으로 세그먼트화(segmented)된 콘텐츠, 또는 공간적으로 세그먼트화된 매우 높은(ultra-high) 해상도의 콘텐츠를 포함한다. SVC-기반의 콘텐츠는 또한 특정 품질 표현의 디코딩이 동일한 청크 식별자를 가진 낮은 품질 표현의 청크를 요구하는 그러한 방식으로 인코드된다. 그와 같이, 품질 표현(X) 요청은 각각의 시간적 청크에 대해 X HTTP GET 요청을 초래한다(품질 표현이 독립적으로 디코드될 수 있는, 기본 AVC-기반 HAS 대한 오직 하나의 요청에 비해). 공간적으로 세그먼트화된 콘텐츠에게, 이러한 문제는, 각각의 시간적 청크가 다수의 품질 표현으로 다수의 공간적 청크로 구성될 수 있기 때문에, 더 악화된다.
이러한 진화는 HTTP 적응형 스트리밍(HAS)를 사용하여 청크드 콘텐츠(chunked contents)를 수신하기 위하여 송신할 필요가 있는 HTTP GET 요청의 수에 엄청난 증가를 초래한다. 다수의 그러한HTTP GET 요청을 송신하여 콘텐츠를 검색하는데 HAS 사용하면 이러한 요청들 각각을 송신하고 수신하는 사이에 발생하는 지연으로 인해 실제의 처리량에서 감소를 야기한다. 대부분의 HTTP 적응형 스트리밍 기술이 동작하는 방식은 청크에 대한 후속 요청은 앞선 요청의 청크가 클라이언트에 의해 실질적으로 수신된 후에만 송신된다는 것이다. 요청의 송신과 요청된 청크의 전송 시작 사이의 주기(period)에서 이용 가능한 대역폭은 클라이언트에게 데이터를 전송하기 위해서는 사용되지 않으며, 따라서 시간 주기로 측정될 때 실제의(또는 인지된) 대역폭에 있어서 삭감이 이루어진다. 부가적으로, HTTP GET요청의 수가 엄청나게 증가하면, CPU, 메모리 및 대역폭 소모의 관점에서, 이러한 요청을 처리해야 하는 서버에 및 중간(intermediary)의 캐시에 많은 추가적 오버헤드(overhead)를 야기한다.
이것은 자체로 프로세싱에서 특정 인프라스트럭쳐에서 HAS 및/또는 HAS 기반의 스트리밍의 확장성을 사용할 때 달성 가능한 비트 레이트에 영향을 미칠 수 있는 지연을 더 야기할 수 있다.
WO2012123773(A1)은 서버 장치 상에 저장된 인코드된 미디어 스트림의 프래그먼트(부분들)를 요청하기 위한 미디어 프래그먼트 요청을 발생하기 위한 방법을 공개하고 있으며, 상기 방법은 상기 클라이언트 장치에 이전에 수신되어 저장된 상기 미디어 스트림의 프래그먼트(부분)를 나타내는 구조(structure)를 저장하는 클라이언트 장치에 의해 구현된다. 상기 구조는 이미 수신된 프래그먼트와 관련된 어드레싱 정보의 제1 및 제2 형태를 포함한다. 미디어 프래그먼트 요청을 발생하기 위한 방법은 상기 미디어 스트림의 새로운 프래그먼트에 대응하는 누락(missing) 미디어 데이터를 획득하기 위한 미디어 프래그먼트 요청을 포함하며, 상기 미디어 프래그먼트 요청은 적어도 하나의 제1 형태의 어드레싱(addressing) 정보와 적어도 하나의 제2 형태의 어드레싱 정보를 구체화하되, 여기서 상기 어드레싱 정보의 제1 형태는 공간적 또는 시간적 정보이며 및 여기서 상기 어드레싱 정보의 제2 형태는 상기 미디어 스트림 내의 바이트 위치 정보이다. WO2012123773(A1)에 따른 방법은 또한 '미디어 프래그먼트'로 언급되는, 멀티미디어 부분들, 전형적으로 비디오를, 교환하기 위한 프로토콜을 기술하는 MF URI 1.0사양의 문맥(context)으로 설명된다. 개시된 방법의 목적은 멀티미디어 파일로부터 추출된 멀티미디어 부분(즉, 서브스트림)이 독립적으로 디코딩할 수(decodable) 있어야 하는 것으로 개시된 WO2012123773 (A1)에 따른 MF URI 1.0 사양의 문제를 해결하기 위한 것이다. 이러한 요구사항을 만족하기 위하여 추출되어 전달된 소위 시간 예측을 사용하는 H.264 또는 MPEG-4와 같은 비디오 압축 포맷으로 인코드된 멀티미디어 부분(portion)은, 요청된 부분 보다 클 수 있다. 요청된 부분은 전형적으로 콘텐츠에 대한 일반적인 참조와 결합하여 시간 간격에 의해 지정(specified)된다. WO2012123773(A1)에 따르면, 앞의 요구 사항은 시간 간격 연결의 요청들 사이의 미디어 검색에 중첩을 야기할 수 있으며 특정 멀티미디어(비디오) 부분을 두 번 검색하게 할 수 있다. 상기 개시된 방법의 목적은 파일의 요청할 멀티 미디어 부분(portion) 중 어느 파트(part)가 이전의 요청에 대한 응답으로 이미 수신되었는지 요청에 규정함으로써 이 문제를 해결하는 것이다. 이렇게 하기 위하여, 수신 장치는 응답에 제공된 바이트 위치 정보에 기초하여, 어느 부분이 수신되었는지 계속 기록한다. WO20112123773 (A1)에 따른 방법은 HTTP 기반의 미디어 검색에 대한 일반 사항이며, 구체적으로 요청될 수 있는 다양한 품질의 콘텐츠의 미리 결정된(predetermined) 청크의 특정 콜렉션(specific collection)을 정의하는 매니페스트 파일의 사용과 같은 HTTP 적응형 스트림의 사용에 대한 개시, 교시 또는 암시가 없으며, 이 출원서에 상술한 바와 같은, 그러한 문맥(context)에서 발생할 수 있는 특정 문제에 대한 암시 또는 해결책도 없다.
이러한 종래의 문제점 중 하나에 관하여, 콘텐츠의 모든 청크에 대한 고유한(unique) 요청을 송신할 필요성 및 이전 요청과 관련된 청크가 수신될 때까지 다음 요청을 위한 대기 시간(효과적인 대역폭으로 삭감되는)은 소위 HTTP 파이프라이닝(pipelining)으로 알려진 기술에 의하여 부분적으로 해결될 수 있다. 구체적으로, 파이프라이닝은 지연 문제를 감소시키거나 제거할 수 있다. 그러나 그것은 요청 오버헤드 문제를 해결하지 못한다. 또한 각 청크에 대한 파이프라이닝에도 불구하고 필요한 오버헤드를 포함한 별도의 요청은 여전히 필요하다. 적응형 스트리밍에 대해 파이프라이닝을 사용하면 부가적인 문제가 도입될 수 있다. 파이프라이닝의 원리는 현재 청크(즉, 요청되어야 할 청크들에 선행하는 청크)를 수신하기에 앞서 송신해야 할 하나 이상의 다음 청크에 대해 요청을 요구하는(야기하는) 것이다. HTTP적응형 스트리밍의 일부인 요청된 청크에 대한 품질 선택 결정은 그러므로 낡은(out-dated) 정보를 사용하여 잠재적으로 수행된다. 현재의 청크가 수신되는 속도에 영향을 받는 파라메터들(즉, 버퍼 사이즈의 변화, 요청 엔티티에 의해 측정된 실제의 처리량)은 하나 이상의 후속 청크를 요청하기 위해 고려되지 않는다.
또한, 파이프라이닝은 이러한 후속 요청의 취소를 지원하지 않는다. 아마 네트워크 조건이 청크드(chunked) 콘텐츠의 특정 품질 표현의 검색을 더 이상 지원하지 않는 한, 이러한 품질 표현에 대한 요청은 이미 이루어졌을 것이다. 이것은 요청된 청크가 제때에 랜더링되기에는 너무 늦게 도착하여 랜더링(rendered)된 청크드 콘텐츠의 경험 품질(Quality of Experience)에 심각한 영향을 줄 수 있고 그리하여 렌더링(rendered)된 콘텐츠에 부작용이 생기게 한다(이미지의 동결과 같은).
앞의 설명으로부터 HAS 콘텐츠, 및 요청될 필요가 있는 수 많은 청크로 구성된 특별하게 복잡한 콘텐츠(즉, 스케일러블 비디오, 또는 공간적으로 세그먼트화된 콘텐츠)에 대한 전체적인 요청 오버헤드를 감소시키는 방법 및 시스템에 대한 기술의 필요성이 요구된다.
본 발명이 해결하려는 과제는 종래 기술의 문제점을 해결하기 위한 다양한 실시 예를 제공하는 것이다.
본 발명 과제의 해결 수단은 단일 요청 메세지에 기초하여, 스트리밍 클라이언트, 바람직하게는 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법에 있어서, 상기 청크는 상기 청크 식별자에 의해 정의된 청크를 상기 클라이언트에게 전달하기 위해 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자를 포함하는 매니페스트 파일에 기초하여 정의되고, 상기 방법은, 상기 클라이언트에서: 상기 매니페스트 파일에 기초하여 하나 이상의 제1 청크 템플릿 파라메터를 포함하는 제1 요청 메세지, 바람직하게는 HTTP GET 메세지 또는 HTTP HEADERS Frame 메세지 또는 WebSocket 기반의 메세지 중 하나를 결정하는 단계; 상기 제1 요청 메세지를 제1 네트워크 노드로, 바람직하게는 전달 노드 또는 캐시(cache)로 전송하는 단계, 여기서 상기 제1 네트워크 노드는 복수의 제1 청크 식별자, 바람직하게는 상기 하나 이상의 제1 청크 템플릿 파라메터와 제1 청크 템플릿에 기초한 상기 복수의 제1 청크와 관련된 복수의 제1 URL, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL 청크 템플릿을 결정하도록 구성되며; 및 적어도 하나의 응답 메세지, 바람직하게는 HTTP 응답 메세지 또는 상기 제1 청크 템플릿과 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정된 상기 청크 식별자들 중 하나와 관련된 청크를 포함하는 WebSocket 기반 응답 메세지를 수신하는 단계를 위해 컴퓨터 판독 가능한 프로그램 코드를 실행하는, 적어도 하나의 프로세스, 바람직하게는 적어도 하나의 마이크로프로세서를 포함 함을 특징으로 하는 단일 요청 메세지에 기초하여, 스트리밍 클라이언트, 바람직하게는 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법을 제공하는데 있다.
본 발명의 또 과제의 해결 수단은 단일 요청 메세지에 기초하여, 적어도 하나의 클라이언트에게, 바람직하게는 적응형 스트리밍 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드에 있어서, 상기 네트워크 노드는: 일체로 컴퓨터 판독 가능한 프로그램 코드가 구현된 적어도 하나의 컴퓨터 판독 가능한 저장 매체, 및 적어도 하나의 프로세서, 바람직하게는 상기 컴퓨터 판독 가능한 저장 매체에 결합된 적어도 하나의 마이크로프로세서를 포함하되, 여기서 상기 컴퓨터 판독 가능한 프로그램 코드 실행에 응하여, 상기 적어도 하나의 프로세서는 실행 가능한 동작들: 상기 클라이언트에게 복수의 제1 청크의 전달을 요청하기 위하여, 하나 이상의 제1 청크 템플릿 파라메터를 포함하는 제1 요청 메세지, 바람직하게는 HTTP GET 메세지를 수신하는 동작; 상기 하나 이상의 제1 청크 템플릿 파라메터 및 제1 청크 템플릿, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련된 복수의 제1 URLs 를 결정하는 동작; 및 상기 제1 청크 템플릿 및 상기 하나 이상의 제 1 청크 템플릿 파라메터에 기초하여 결정된 상기 청크 식별자들 중 하나와 관련된 청크를 포함하는 적어도 하나의 응답 메세지를 상기 클라이언트에게 전송하는 동작을 수행하도록 구성됨을 특징으로 하는 단일 요청 메세지에 기초하여, 적어도 하나의 클라이언트에게, 바람직하게는 적응형 스트리밍 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드를 제공하는데 있다.
본 발명의 또 과제의 해결 수단은 클라이언트, 바람직하게는 단일 요청 메세지에 기초하여 복수의 청크를 요청하도록 구성된 적응형 스트리밍 클라이언트를 포함하는 사용자 장치에 있어서, 상기 청크들은 상기 클라이언트에게 상기 청크 식별자에 의해 정의된 청크를 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자를 포함하는 매니페스트 파일에 기초하여 정의되며, 사용자 장치는: 일체로 구현된 프로그램의 적어도 일부, 상세 소프트웨어 프로그램을 구비한 컴퓨터 판독 가능한 저장 매체; 및 일체로 구현된 컴퓨터 판독 가능한 프로그램 코드를 구비한 컴퓨터 판독 가능한 저장 매체, 및 프로세서, 바람직하게는 컴퓨터 판독 가능한 저장 매체에 결합된 마이크로프로세서를 포함하되, 여기서 컴퓨터 판독 가능한 프로그램 코드 실행에 응하여, 프로세서는 실행 가능한 다음 동작을 수행하도록 구성된다: 상기 매니페스트 파일을 기초로 제1 요청 메세지, 바람직하게는 복수의 제1 청크를 요청하기 위한 HTTP GET 메세지를 결정하는 동작을 수행하되, 상기 제1 요청 메세지는 하나 이상의 제1 청크 템플릿 파라메터를 포함하며; 상기 제1 요청 메세지를 제1 네트워크 노드로, 바람직하게는 전달 노드 또는 캐시(cache)로 전송하는 동작을 수행하되, 여기서 상기 제1 네트워크 노드는 복수의 제1 청크 식별자, 바람직하게는 상기 하나 이상의 제1 청크 템플릿 파라메터 및 제1 청크 템플릿에 기초하여 복수의 제1 청크와 관련된 복수의 제1 URLs, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL 청크 템플릿을 결정하도록 구성되며; 및 상기 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자 중 하나와 관련된 청크를 포함하는 적어도 하나의 응답 메세지를 수신하는 동작을 수행하고; 또는 상기 제1 네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 적어도 하나의 HTTP 리디렉트 메세지를 수신하는 동작을 수행하되, 상기 HTTP 리디렉션 메세지는 상기 제1 네트워크 노드에 의하여 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함하되; 바람직하게는 상기 HTTP 리디렉션 메세지는 상기 제2 네트워크 노드와 관련된 리디렉션 URL을 추가로 포함하며, 바람직하게는 상기 리디렉션 URL은 상기 청크 템플릿과 상기 제1 네트워크 노드에 의해 전달될 수 없는 하나 이상의 청크를 정의하기 위한 하나 이상의 제2 청크 템플릿 파라메터를 포함함을 특징으로 하는 사용자 장치를 제공하는데 있다.
본 발명의 또 과제의 해결 수단은 사용자 장치, 바람직하게는 청구항 13에 따른 사용자 장치에 의해 사용되는 매니페스트 파일의 적어도 일부를 저장하기 위한 비-일시적(non-transitory) 컴퓨터 판독 가능한 저장 매체에 있어서, 사용자 장치는 클라이언트, 바람직하게는 단일 요청 메세지에 기초하여 복수의 청크를 요청하기 위하여 구성된 적응형 스트리밍 클라이언트를 포함하고, 상기 청크는 상기 매니페스트 파일에 기초하여 정의되며, 여기서 상기 매니패스트 파일은: 상기 청크 식별자에 의해 정의된 청크를 상기 클라이언트에게 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자; 가입 지원 파라메터, 바람직하게는 상기 적어도 하나의 전달 노드는 복수의 제1 청크 식별자, 바람직하게는 하나 이상의 제1 청크 템플릿 파라메터 및 제1 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련한 복수의 제1 URLs 을 결정하도록 구성됨을 표시하기 위한 플래그; 및 적어도 하나의 응답 메세지를 상기 클라이언트에게 전송하고, 상기 응답 메세지는 상기 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자 중 하나와 관련된 청크를 포함하며; 및 선택적으로, 상기 클라이언트에게 상기 단일 요청 메세지의 요청 URL의 청크 템플릿에서 상기 하나 이상의 청크 템플릿 파라메터 필드의 적어도 일부를 상기 하나 이상의 청크 템플릿 파라메터의 적어도 일부로 대체하도록 지시하기 위한 가입 포멧 파라메터를 포함함을 특징으로 하는 비-일시적 컴퓨터 판독 가능한 저장 매체를 제공하는데 있다.
본 발명은 청크드 콘텐츠 즉, 콘텐츠 아이템과 연관된 청크들의 모음이 하나 이상의 위치에 분배될 수 있는 유리한 효과를 가진다.
또한 본 발명의 실시 예에 따라 발생하는 다양한 상승된 효과를 가진다.
도 1은 본 발명의 실시 예에 따른 청크드(chunked) 콘텐츠를 스트리밍 클라이언트에게 제공하기 위한 시스템을 나타낸다.
도 2A 및 도2B는 도1은 본 발명의 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 스트리밍 클라이언트에게 복수의 청크를 전달하기 위한 방법을 나타낸다.
도 3A 및 도3B는 스트리밍 클라이언트 및 본 발명의 다양한 실시 예에 따른 가입 요청 메세지를 처리하도록 구성된 관련된 전딜 노드를 나타낸다.
도 4는 청크드 콘텐츠의 스트리밍 동안 발생되는 오버헤드를 도시하는 다양한 그래프를 나타낸다.
도 5는 본 발명의 다른 실시 예에 따른 복수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 개략적으로 나타낸다.
도 6은 본 발명의 또 다른 실시 예에 따른 복수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 개략적으로 나타낸다.
도 7은 및 본 발명의 다양한 실시 예에 따른 가입 요청 메세지를 처리하기 위하여 구성된 전달 노드(또는 캐쉬)의 개략도를 나타낸다.
도 8은 본 발명의 다른 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다.
도 9는 본 발명의 다른 실시 예에 따른 하나의 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다.
도 10은 본 발명의 또 다른 실시 예에 따른 청크 메세지를 기초로 적응형 스트리밍 클라이언트에게 다수의 청크를 전달하기 위한 방법을 나타낸다.
도 11은 본 발명의 실시 예에 따른 매니페스트 파일 및 관련된HTTP 가입 메세지를 나타낸다.
도 12는 본 발명의 다른 실시 예에 따른 매니페스트 파일 및 관련된HTTP 가입 메세지를 나타낸다.
도 13은 본 명세서의 시스템 및 방법에서 사용될 수 있는 바람직한 데이터 프로세싱을 도시하는 블럭 다이야그램이다
도 14는 본 발명의 또 다른 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에게 다수의 청크를 전달하기 위한 방법을 나타낸다.
도 15는 본 발명의 또 다른 실시 예에 따른 두 개의 청크 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에게 다수의 청크를 전달하기 위한 방법을 나타낸다.
이 기술분야의 통상의 기술자가 알 수 있는 바와 같이, 본 발명의 측면은 시스템, 방법 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명의 측면(aspects)은 전적으로 하드웨어 실시 예, 전적으로 소프트웨어 실시 예(펌웨어, 상주 소프트웨어, 마이크로-코드, 등을 포함하여) 또는 일반적으로 여기서 모두 "회로", "모듈", "노드", "클라이언트", "시스템"으로 언급될 수 있는 소프트웨어와 하드웨어 측면을 결합한 실시 예의 형태를 취할 수 있다. 본 명세서에 기술된 기능은 컴퓨터의 마이크로프로세스에 의해 실행되는 알고리즘으로 구현될 수 있다. 또한 본 발명의 측면은 컴퓨터 판독 가능한 프로그램 코드를 가진 하나 이상의 컴퓨터 판독 가능한 매체(들)에 탑재된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능한 매체(들)의 임의의 결합이 이용될 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨터 판독 가능한 신호 매체 또는 컴퓨터 판독 가능한 저장 매체일 수 있다. 컴퓨터 판독 가능한 저장 매체는 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스일 수 있으며, 또는 앞의 것의 임의의 적절한 조합일 수 있으나 그에 국한되지는 않는다. 컴퓨터 판독 가능한 저장 매체의 보다 구체적인 예(비-포괄적 목록)는: 하나 이상의 와이어를 가진 전기 연결, 휴대 가능한 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 가능한 프로그램 가능한 읽기 전용메모리(EPROM or Flash Memory), 광 저장 디바이스, 휴대용 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 광 저장 디바이스, 자기 자장 디바이스, 또는 앞선 것들의 임의의 적절한 조합을 포함할 수 있다. 본 문서의 문맥(context)에서, 컴퓨터 판독 가능한 저장 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 연결하여 사용하기 위한 프로그램을 포함하거나 또는 저장할 수 있는 임의의 실재하는 매체일 수 있다.
컴퓨터 판독 가능한 신호 매체는 그 안에, 예를 들어, 베이스밴드에 또는 반송파의 일부로서 구현된 컴퓨터 판독 가능한 프로그램 코드를 가진 전파 (propagated) 데이터 신호를 포함할 수 있다. 그러한 전파 신호는, 전자-마그네틱, 광학, 또는 그것들의 임의의 적절한 결합을 포함하여 다양한 형태를 취할 수 있으나 그에 국한되지는 않는다. 컴퓨터 판독 가능한 신호 매체는 컴퓨터 판독 가능한 저장 매체는 아니며 및 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 연결하여 사용하기 위해 프로그램과 통신하고, 전파하고, 또는 운반할 수 임의의 컴퓨터 판독 가능한 매체일 수 있다.
임의의 컴퓨터 판독 가능한 매체 상에 구현된 프로그램 코드는 무선, 와이어라인, 광 섬유, 케이블, RF등 또는 앞의 것들의 임의의 적절한 결합을 포함하는 임의의 적절한 매체를 사용하여 전송될 수 있으나 그에 국한되지는 않는다. 본 발명의 측면들에 대한 동작을 수행하기 위한 컴퓨터 프로그램 코드는 Java(TM), Smalltalk, C++ 또는 그와 유사한 오브젝트(object) 지향의 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어 같은 전통적 절차 프로그래밍 언어를 포함하여, 하나 이상의 프로그래밍 언어들의 결합으로 작성될 수 있다. 프로그램 코드는 사용자의 컴퓨터에서 전적으로 실행할 수 있으며, 부분적으로 사용자의 컴퓨터에서 독립형 패키지로 실행할 수 있고, 부분적으로는 사용자의 컴퓨터에서 및 부분적으로는 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터나 또는 서버에서 실행할 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 로컬 에어리어 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하여 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 외부 컴퓨터와 연결이 이루어질 수 있다(즉, 인터넷 서비스 프로바이더를 사용하는 인터넷을 통해).
본 발명의 측면들은 본 발명의 실시 예에 따른 방법, 장치(시스템), 및 컴퓨터 제품들의 플로우차트 일러스트레이션 및/또는 블럭 다이야그램을 참조하여 아래에 설명한다. 플로우차트 일러스트레이션의 각 블럭 및/또는 블럭 다이야그램과 플로우차트 일러스트레이션의 블럭 및 /또는 블록 다이야그램의 결합은 컴퓨터 프로그램 명령에 의해 구현됨을 이해해야 할 것이다. 이러한 컴퓨터 프로그램 명령들은 프로세서에, 특히 일반적 목적의 컴퓨터, 특별한 목적의 컴퓨터 또는 기계를 생산하기 위한 다른 프로그램 가능한 데이터 처리 장치의 마이크로프로세서 또는 중앙 처리 장치(CPU)에 제공될 수 있으며, 그래서 컴퓨터의 프로세서, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 장치들을 통해 실행하는 명령들은 플로우차트 및/또는 블럭 다이야그램 또는 블럭에 지정된 명령/동작들을 구현하기 위한 수단을 만든다. 이러한 컴퓨터 프로그램 명령들은 컴퓨터, 다른 프로그램 가능한 프로세싱 장치, 또는 특별한 방식으로 기능하는 다른 장치들에게 지시할 수 있는 컴퓨터 판독 가능한 매체에 또한 저장할 수 있으며, 그래서 컴퓨터 판독 가능한 매체에 저장된 명령들은 플로우차트 및/또는 블럭 다이야그램 블럭 또는 블럭들에 지정된 기능/동작을 구현하는 명령을 포함하는 제품을 생산한다.
컴퓨터 프로그램 명령들은 일련의 동작 단계들이 컴퓨터, 다른 프로그램 가능한 장치, 또는 다른 장치에서 수행되도록 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치, 또는 다른 디바이스에 로드(load)될 수 있으며, 그래서 컴퓨터나 또는 다른 프로그램 가능한 장치에서 실행하는 명령들은 플로우차트 및/또는 블럭 다이야그램 블럭 또는 블럭들에 지정된 기능/또는 동작을 구현하기 위한 프로세스를 제공한다.
도표의 플로우차트와 블럭 다이야그램은 본 발명의 다양한 실 시 예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품들에 가능한 구현의 아키텍쳐(architecture), 기능성 및 동작을 도시한다. 이러한 점에서, 플로우차트 또는 블럭 다이야그램에서 각 블럭은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령을 포함하는 모듈, 세그먼트, 또는 코드의 부분을 나타낼 수 있다. 일부 대안적 구현에서, 블럭에 언급된 기능들은 숫자로 언급된 순서에서 벗어나 발생할 수 있음을 알아야 한다. 예를 들어, 연속으로 나타낸 두 블럭들은, 사실은, 실질적으로 동시에 실행될 수 있고 또는 관련된 기능성에 따라 그 블럭들은 때때로 역순으로 실행될 수도 있다. 블럭 다이야그램의 각 블럭 및/또는 플로우차트 일러스트레이션과 블럭 다이야그램의 블럭들과 및/또는 플로우차트 일러스트레이션의 결합은 지정된 기능 또는 동작을 수행하는 특별한 목적의 하드웨어-기반의 시스템 또는 특별한 목적의 하드웨어와 컴퓨터 명령의 결합에 의해 구현될 수 있음을 또한 알아야 한다.
선행 기술에 알려진 결점을 줄이거나 적어도 하나를 제거하는 것이 본 발명의 목적이다. 일 측면에 있어서 본 발명은 단일 요청 메세지에 기초하여, 스트리밍 클리이언트에 의한, 바람직하게는 적응형 스트리밍 클라이언트에 의한 복수의 청크 요청을 위한 컴퓨터 구현 방식에 관한 것일 수 있다. 적응형 스트리밍 클라이언트는, HTTP 또는 HTTP 변형을 사용하는 스트리밍의 문맥(context)에서, 일반적으로 HTTP 적응형 스트리밍(HAS) 클라이언트로 알려져 있다.
본 발명의 일 실시 예에서, 요청 메세지는 바람직하게는 HTTP 1.1 또는 HTTP 2 요청 메세지 같은, HTTP (청크) 요청 메세지이다. HTTP 2 요청 메세지는 HTTP 2 헤더(Header) 메세지일 수 있다. 대안적으로 요청 메세지는 그러나 또한 WebSocket 기반의 요청 메세지일 수 있다. WebSocket 메세지는 하나 이상의 WebSocket 프레임으로 전송된다. 애플리케이션 전체에 걸쳐 (청크)요청 메세지는 또한 (HTTP) 가입 메세지 또는 가입 요청 메세지로 언급된다. 그러한 '가입하다(subscribes)' 또는 다시 말해서 '가입하다(takes a subscription)' 메세지의 발송자(sender)에게 그러한 메세지에 의해 정의된 복수의 청크(세그먼트들)가 제공된다.
일 실시 예에서, 상기 청크들은 상기 청크 식별자들에 의해 정의된 청크들을 상기 클라이언트에게 전달하도록 구성된 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자들을 포함하는 매니페스트 파일에 기초하여 정의될 수 있다.
일 실시 예에서, 상기 방법은 상기 클라이언트에서, 상기 매니페스트 파일에 기초하여, 제1 요청 메세지, 바람직하게는 복수의 제1 청크를 요청하기 위해, HTTP GET 메세지 또는 HTTP 헤더 프레임(frame) 메세지 또는 WebSocket기반의 메세지 중 하나를 결정하기 위한 컴퓨터 판독 가능한 프로그램 코드를 실행하는 적어도 하나의 프로세서, 바람직하게는 마이크로프로세서를 포함할 수 있으며, 상기 제1요청 메세지는 하나 이상의 제1 청크 템플릿(template) 파라메터를 포함한다; 청크들은 바람직하게는 세그먼트들이며, 그것들은 파일로 개별적으로 저장되는 청크들이다. 이것은 청크드 콘텐츠(즉, 콘텐츠 아이템과 연관된 청크들의 모음)가 하나 이상의 위치에 분배될 수 있는 중요한 이점을 가진다. 그것은 또한 네트워크에서 캐슁(caching)을 허용하며 하나 이상의 위치에 콘텐츠를 전체로서 저장하는 것에 비해 더 효과적인 콘텐츠의 분배를 허용한다. 대안적으로, 요청된 청크들은 또한 프래그먼트일 수 있으며, 그것들은 콘텐츠 파일의 검색 가능한 부분과 개별적으로 관계가 있다. 상기 방법은 또한 상기 제1 요청 메세지를 제1 네트워크 노드로, 바람직하게는 전달 노드 또는 캐쉬(cache)로 송신하는(sending) 것을 포함하며, 여기서 상기 제1 네트워크 노드는 복수의 제1 청크 식별자들, 바람직하게는 상기 하나 이상의 제1 청크 템플릿 파라메터들과 제1 청크 템플릿을 기초로 상기 복수의 제1 청크들과 관련된, 하나 이상의 청크 파라메터 필드를 포함하는, 제1 복수의 URLs을 결정하는 단계; 및 적어도 하나의 응답 메세지, 바람직하게는 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터들을 기초로 결정된 상기 청크 식별자들 중 하나와 관련된 단일 청크를 포함하고 있는, HTTP OK 메세지 또는 HTTP DATA FRAME, 또는 대안으로 WebSocket(기반의) 응답 메세지 같은 HTTP 응답 메세지를 수신하는 단계를 위해 구성된다. 제1 요청 메세지가 WebSocket(기반의) 응답 메세지인 경우, 적어도 하나의 응답 메세지는 따라서 바람직하게는 또한 WebSocket(기반의) 응답 메세지이다. 제1 요청 메세지가 HTTP 1 .1메세지인 경우, 응답 메세지는 바람직하게는 또한 HTTP 1 .1메세지이다.
제1 요청 메세지가 HTTP 2메세지, 바람직하게는 HTTP 헤더 프레임 메세지인 경우, 응답 메세지는 바람직하게는 또한 HTTP 2 메세지(전형적으로 HTTP DATA Frame 메세지)이다. 본 발명에 따른 실시 예에서 모든 요청-응답 메세지에 대해 동일한 동작 모드를 선호할 것이다.
일 실시 예에서, 상기 제1 청크 템플릿은 URL 청크 템플릿, 즉 URL의 문법(syntax)을 결정하는 컨벤션(convention)에 따르는 템플릿일 수 있다. URL 청크 템플릿은 또한 URL템플릿으로 알려져 있다. 그 두 용어는 본 출원서 전체에 걸쳐 상호교환 가능하게 사용된다.
본 발명은 클라이언트가 단일 요청 메세지를, 바람직하게는 바람직하게는 복수의(공간적, 시간적 및/또는 품질 관련) 청크를 포함하고 있는, 미리 결정된의(predetermined) 콜렉션(collection)을 제공하도록 요청하기 위한, HTTP 또는 WebSocket기반의 (청크) 요청 메세지를 전달 노드로, 전송하도록 허용한다.
이러한 방식으로 각각 많은 다른 품질 표현(representation) 및/또는 작은 청크 사이즈를 가질 수 있는 청크드 콘텐츠를 요구하는 다수의 스트리밍 클라이언트를 취급할 때 존재할 수 있는 요청 메세지의 큰 오버헤드(overhead)와 관련된 문제들은 제거할 수 있거나 또는 적어도 상당히 감소시킬 수 있다. 오버헤드의 감소를 혀용하는 단일 요청 메세지는 또한 가입 메세지로 언급될 수 있다. 본 출원서 전체에 걸쳐 이러한 가입 메세지는 또한 HTTP 가입 메세지(즉, 미래의 차 세대 HTTP 구현을 배제하지 않는, HTTP1.1 및 HTTP 2 구현을 위한) 또는 WebSocket 가입 또는 WebSocket 가입 메세지로 언급된다. WebSocket 가입 메세지는 WebSocket 을 사용하여 전송되는 가입 메세지이다.
본 발명은 (적응형) 스트리밍 클라이언트에게 사용 가능한 (사실상의) 대역폭을 증가시킨다. 이것은 스트리밍 클라이언트가 본 발명을 사용하지 않은 경우에 가능할 수 있는 것보다 더 높은 레벨로 스트리밍의 품질을 유지할 수 있게 허용하며 및/또는 스트리밍 클라이언트가 대역폭 고려로 더 낮은 품질의 비디오 스트리밍으로 다시 스위치하는 횟수를 줄일 수 있다. 본 발명은 특히 MPEG-DASH 같은 적응형 스트리밍 테크놀로지를 기초로 텔레비전 서비스를 제공하기 위해 사용될 수 있는 (텔레비전) 오퍼레이터에 의해 관리되는 네트워크와 같은 안정된(stable) 네트워크 환경에서 사용하기에 적합할 수 있다. '안정된(stable)이라는 용어는 바람직하게는 클라이언트(디바이스)에서 인지된 또는 측정된 대역폭에서의 변동(fluctuation)을 말한다. 네트워크(즉, 스트리밍) 환경이 안정될수록 이러한 파라메터에 변동이 더 작게 존재한다.
(HTTP 또는 WebSocket) 가입 메세지에 의한 요청 오버헤드의 감소는 청크 템플릿 파라메터들을 (HTTP 또는 WebSocket) 가입 메세지로 네트워크로 전송함에 의하여 달성할 수 있다. 청크 템플릿 파라메터들은 네트워크 노드에 의해 청크 템플릿을 기초로 한 세트의 청크 식별자들 및/또는 URLs을 발생하기 위해 사용될 수 있다. 청크 템플릿은 일반적으로 청크 식별자 및 청크 로케이터(locator)를 포함할 수 있다. 청크 템플릿은 청크 템플릿 파라메터를 기초로(즉, 청크 템플릿 파라메터로 대체되어) 지정될 수 있는 청크 템플릿 필드를 포함할 수 있다. 이러한 방식으로 큰 세트의 HTTP 요청 메세지, 바람직하게는 HTTP 세그먼트 요청 메세지들은 단일 청크 템플릿 및 일부 청크 템플릿 파라메터에 기초하여 효과적으로 발생될 수 있다.
일 실시 예에서 상기 제1((HTTP 또는 WebSocket) 요청 메세지(즉, 가입 메세지)는 상기 제1 청크 템플릿을 포함할 수 있다. 이런 방식으로 복수의 HTTP 요청 메세지 및/또는 청크 식별자들을 발생하는데 필요한 정보는 효과적으로 하나의 메세지로 네트워크 노드로 전송된다.
일 실시 예에서 상기 네트워크 노드는: 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터를 기초로 상기 복수의 제1 청크의 적어도 일부와 관련된 세트의 (HTTP 또는 WebSocket )(단일) 청크 요청 메세지를 발생하거나 또는 에뮤레이트(emulate)하는 단계를 위해; 및 상기 (HTTP 또는 WebSocket) (단일) 청크 요청 메세지, 청크를 포함하고 있는 (HTTP또는 WebSocket) 응답 메세지(HTTP or WebSocket) 중 적어도 하나를 위해 상기 클라이언트에게 전송하는 단계를 위해 구성될 수 있다. 일 실시 예에서, 미리 결정된(predetermined) 한 세트의 (HTTP 또는 WebSocket) 응답 메세지는 상기 미리 결정된 한 세트의 (HTTP 또는 WebSocket) 청크 요청 메세지에 응해 클라이언트에게 전송할 수 있다.
따라서, 한 세트의 (HTTP 또는 WebSocket) 청크 요청이 네트워크에서 발생되어, 요청된 청크들 (적어도 일부)을 포함하는 한 세트의 (HTTP 또는 WebSocket) 응답 메세지를 발생하기 위해 (HTTP 또는 WebSocket 가능한) 서버에, 예를 들면 전달 노드 또는 캐쉬에 제공될 수 있다.
일 실시 예에서, (HTTP 또는 WebSocket) 응답 메세지 세트는 미리 결정된 (predetermined) 순서로 상기 클라이언트에게 전송될 수 있다. 오더(order) 속성과 같은 청크 템플릿 파라메터와 관련된 정보(즉, 파라메터들)는 네트워크 노드에 (HTTP 또는 WebSocket) 청크 요청 메세지를 미리 결정된 오더(미리 결정된 순서)로 (HTTP 또는 WebSocket 가능한) 서버로 제공하도록 지시할 수 있으며 따라서 응답 메세지들은 미리 결정된 오더로 클라이언트에게 보내질 것이다.
일 실시 예에서 청크 템플릿 파라메터는 오더, 레인지 및/또는 타임 속성과 관련이 있을 수 있다. 타임 속성은 전달 노드가 해당 청크 템를릿 파라메터에 대해 다른 값을 가진 후속 청크를 보내기 전에 기다려야 하는 시간 간격을 지정할 수 있다.
일 실 시 예에서 상기 제1 (HTTP 또는 WebSocket) 응답 메세지(즉, 상기 가입 메세지)는: 상기 매니페스트 파일의 상기 하나 이상의 청크 식별자 중 적어도 하나를 기초로 상기 청크 템플릿 및/또는 상기 청크 템플릿 파라메터를 결정하는 단계를 포함할 수 있다.
매니페스트 파일은 정상적으로 청크 요청 메세지를 네트워크로 전송하기 위해(전형적으로 한 세트의 URLs 또는 부분적 URLs의 형태로) 템플릿 및/또는 한 세트의 청크 식별자들을 포함할 수 있다. 이러한 정보 템플릿 및/또는 청크 식별자들은 스트리밍 클라이언트에 의해, 특히 스트리밍 클라이언트의 가입 제네레이터 모듈에 의해, URL 문법(syntax)에 일치하고, 가입 메세지의 요청 URL의 일부일 수 있는, URL 템플릿을 발생하기 위해 사용될 수 있다.
일 실시 예에서, 청크 템플릿 파라메터는 적어도 다음 중 하나와 관련이 있을 수 있다: 하나 이상의 청크 수 또는 청크 수의 레인지, 한 번 이상의 청크 프레젠테이션 횟수 또는 청크 품질 프레젠테이션 레인지, 하나 이상의 청크 비트레이트 또는 청크 비트레이트 레인지, 하나 이상의 청크 사이즈 또는 청크 사이즈의 레인지. 따라서, 청크 템플릿 파라메터는 특정 유형의 및/또는 품질의 청크와 관련된 청크 식별자를 발생하기 위해 사용될 수 있다. 청크 템플릿 파라메터 속성들은 하나의 청크 파라메터에 대한 일련의 값(a sequence of values) 또는 값의 레인지(value range)를 정의하는데 사용할 수 있다. 또한, 청크 템플릿 파라메터는 오더(order) 속성과 관련될 수 있으며, 오더 속성은 네트워크 노드에, 특히 네트워크 노드의 가입 번역기(subscription translator)모듈에 미리 결정된 순서대로 청크 템플릿을 기초로 청크 템플릿 파라메터를 처리하도록 지시한다.
일 실시 예에서, 상기 제1(HTTP 또는 WebSocket) 요청 메세지의 요청 URL은 상기 청크 템플릿 및 상기 제1 전달 노드와 관련된 리소스 위치 경로를 포함할 수 있다. 따라서, 청크 템플릿은 (HTTP 또는 WebSocket) 가입 메세지의 요청 URL의 일부일 수 있다.
일 실시 예에서, 상기 하나 이상의 청크 템플릿 파라메터는 상기(HTTP 또는 WebSocket) 요청 메세지에 부가할 수 있다. 다른 실시 예에서, 상기 하나 이상의 청크 템플릿 파라메터는: 상기 제1(HTTP 또는 WebSocket) 요청 메세지의 헤더에 삽입 될 수 있고; 상기 요청 URL에 삽입될 수 있으며; 및/또는 쿼리 스트링(query string(검색 문자열))으로 상기 요청에 첨부할 수 있다. 따라서, 이러한 파라메터들을 네트워트로 효과적으로 보내기 위하여 다른 방법들을 사용할 수 있다.
일 실시 예에서, 제 1(HTTP 또는 WebSocket) 요청 메세지 결정에는 다음을 또한 포함할 수 있다: 상기 제 1(HTTP 또는 WebSocket) 요청 메세지에 세션 식별자를 삽입하는 단계를 포함할 수 있으며, 여기서 상기 세션 식별자는 상기 클라이언트 및/또는 상기 네트워크 노드에게 상기 제 1(HTTP 또는 WebSocket) 요청 메세지를 하나 이상의 (HTTP 또는 WebSocket) 요청 메세지 및/또는 (HTTP 또는 WebSocket) 응답 메세지에 링크하도록 허용한다. 일 실시 예에서, 상기 세[션 식별자는 상기 요청 URL에 대한 토큰(token)으로서 부가될 수 있다. 다른 실시 예에서, 상기 세션 식별자는 상기 제 1(HTTP 또는 WebSocket) 요청 메세지의 헤더에 쿠키 값(cookie value)으로 부가될 수 있다. 따라서, 세션 식별자는 네트워크 노드, 즉 캐쉬(cache)로 하여금 하나의 세션/가입(즉 하나의 가입 요청 메세지와 관련된) 요청 및 응답 메세지를 계속 기록하도록 허용한다.
본 발명의 일 실시 예에서, 요청 메세지는 HTTP 2메세지(즉, 하나 이상의 HEADERS 프레임)이며, 상기 세션 식별자는 스트림 식별자일 수 있다.
본 발명의 다른 실시 예에서, 요청 메세지는 WebSocket 가입 메세지이며, 상기 세션 식별자는 가입 ID일 수 있다. WebSocket 메세지의 콘텐츠 포멧이 무료이기 때문에, 다른 형태의 세션 식별자들 또한 가능하다.
일 실시 예에서, 상기 방법은 제 2 (HTTP 또는 WebSocket) 요청 메세지를, 바람직하게는 HTTP GET메세지를 결정하는 단계를 더 포함할 수 있으며, 여기서 상기 제 2(HTTP 또는 WebSocket) 요청 메세지는 제2 청크 템플릿 및 하나 이상의 제2 청크 템플릿 파라메터를 기초로 상기 제1 네트워트 노드에 의해 결정된 복수의 제2청크 식별자를 기초로, 상기 제1 네트워크 노드에게 상기 복수의 제1 청크 식별자들의 적어도 일부를 업데이트 하도록 지시하기 위하여 구성될 수 있다. 일 실시 예에서, 상기 제 2(HTTP 또는 WebSocket) 요청 메세지(즉, 가입 메세지)는 제 2(HTTP 또는 WebSocket) 요청 메세지를 기초로 상기 제1 네트워크 노드에게 상기 제 1(HTTP 또는 WebSocket) 요청 메세지를 업데이트하도록 지시하기 위한 업데이트 파라메터를 포함할 수 있다. HTTP 2구현을 위해, 제 2 HTTP 요청 메세지(즉, '업데이트'를 가진)는 HTTP 2 취소 메세지(즉, RTS_STREAM Frame)에 선행할 수 있다.
따라서, (HTTP 또는 WebSocket) 요청 메세지는 간단히 (HTTP 또는 WebSocket) 가입 업데이트 메세지를 전송함에 의하여 업데이트될 수 있다. 업데이트된 요청이 수신되면, 이전의 요청 메세지(즉, 가입 메세지)를 대신하고, 자동으로 앞으로 보내도록 계획된 임의의 청크들을 빠트린다(drop)(즉, 처음의 가입 메세지에 의해 식별된 아직 전송되지 않은 청크들의 전송을 취소한다). 그것은 클라이언트에게 단일 요청으로 모든 품질 층(layers)을 요청하도록 허용하나, 그러나 시간적 청크의 플레이 아웃 전에 시작해야 하는 그 다음 품질 층을 수신하기에 충분한 시간이 남아있지 않음을 알아차리면 해당 요청을 업데이트하기 때문에, 이것은, 예를 들면 SVC-기반 HAS에 유용하다.
파이프라이닝(pipelining) 같은 이전의 기술 체계와는 대조적으로, HTTP 업데이트 메세지는 사용 가능한(즉, 사실상의) 대역폭의 변화로 인해 버퍼 결핍(brffer starvation)의 위험을 상당히 줄일 수 있다. 스트리밍 클라이언트는 전달 노드가 이전의 (HTTP또는 WebSocket) 가입 메세지에 대한 응답 메세지를 클라이언트에게 전송 중일 때 낮은 품질의 청크로 다시 스위치 하도록(즉, 사용 가능한 대역폭의 변화 때문에) 결정할 수 있다. HTTP 업데이트 메세지는 이전의 가입 메세지를 기초로 발생된 청크 요청 메세지를 취소하거나 또는 업데이트할 수 있고 이것들을 바람직한 유형의(낮은 품질의) 하나 이상의 HTTP 요청 메세지로 대체할 수 있다.
일 실시 예에서, 네트워크 노드에 (HTTP 또는 WebSocket) 요청 메세지를 업데이트하도록 지시하기 위한 업데이트 파라메터는, 바람직하게는 위에 설명한 바와 같이 토큰 또는 쿠키(cookie)로서 상기 (HTTP 또는 WebSocket) 요청 메세지에 삽입될 수 있다. 대안적으로, 업데이트 파라메터는 쿼리 스트링(query string)으로 (HTTP 또는 WebSocket) 요청 메세지에 삽입될 수 있다.
본 발명에 따른 일 실시 예에서, 상기 제1 네트워크 노드는 다음을 위해 구성된다: 적어도 하나의 (HTTP 또는 WebSocket, 즉, WebSocket 기반의) 응답 메세지, 바람직하게는 상기 제1네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 HTTP 리디렉션 메세지를 발생하기 위하여 구성되며, 상기 (HTTP 또는 WebSocket) 응답 메세지는 상기 제1네트워크 노드에 의해 전달될 수 없는 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함한다. 일 실시 예에서, 상기 (HTTP 또는 WebSocket) 응답 메세지는 상기 제2 네트워크 노드와 관련된 리디렉션 URL, 바람직하게는 상기 제1 네트워트 노드에 의해 전달될 수 없는 하나 이상의 청크를 정의하기 위하여 상기 청크 템플릿 및 하나 이상의 청크 템플릿 파라메터를 포함하는 상기 리디렉션 URL 을 더 포함한다..
따라서, 요청된 청크들의 일부가 제1 전달 노드에 의해 전달될 수 없을 때, 대신 이러한 청크들을 전달할 수 있는 추가적인 전달 모드를 지정하는 URL을 포함하는 하나 이상의 리디렉션 메세지가 발생될 수 있다.
다른 측면에서, 본 발명은 복수의 청크를 적어도 하나의 클라이언트에게, 바람직하게는 적응형 스트리밍 클라이언트에게, 단일 (HTTP 또는 WebSocket) 응답 메세지를 기초로 전달하기 위하여 구성되었으며, 상기 네트워크 노드는: 일체로 컴퓨터 판독 가능한 프로그램 코드가 구현된 적어도 하나의 컴퓨터 판독 가능한 저장 매체, 및 상기 컴퓨터 판독 가능한 저장 매체에 결합된 적어도 하나의 프로세서, 바람직하게는 적어도 하나의 마이크로프로세서를 포함하며, 여기서 컴퓨터 판독 가능한 프로그램 코드 실행에 응하여, 상기 적어도 하나의 프로세서는: 상기 클라이언트에게 복수의 제1 청크의 전달을 요청하기 위하여, 하나 이상의 제1 청크 템플릿 파라메터를 포함하는 제1 (HTTP 또는 WebSocket) 응답 메세지, 바람직하게는 HTTP GET 메세지를 수신하는 단계; 복수의 제1 청크 식별자들, 바람직하게는 상기 하나 이상의 제1 청크 템플릿 파라메터와 제1 청크 템플릿, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련된 제1 복수의URLs를 결정하는 단계; 및 상기 제1 청크 템플릿과 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자들 중 하나와 관련된 청크를 포함하는 적어도 하나의 (HTTP 또는 WebSocket) 응답 메세지를 상기 클라이언트에게 전송하는 단계를 포함하는 실행 가능한 동작을 수행하도록 구성된다.
일 실시 예에서, 상기 제1 (HTTP 또는 WebSocket) 응답 메세지는 상기 제1 청크 템플릿을 포함할 수 있다.
일 실시 예에서 상기 실행 가능한 동작들은: 제2 (HTTP 또는 WebSocket) 응답 메세지, 바람직하게는 HTTP GET메세지를 수신하는 동작을 더 포함할 수 있으며, 여기서 제2 (HTTP 또는 WebSocket) 응답 메세지는 상기 네트워크 노드에게 제 2 청크 템플릿과 상기 하나 이상의 제2 청크 템플릿 파라메터에 기초하여 상기 제1 네트워크 노드에 의해 결정된 복수의 제2 청크 식별자를 기초로, 상기 복수의 제1 청크 식별자들의 적어도 일부를, 바람직하게는 제2 (HTTP 또는 WebSocket) 응답 메세지를 기초로 상기 제1 네트워크 노드에게 상기 제1 (HTTP 또는 WebSocket) 요청 메세지를 업데이트하도록 촉발시키기 위한 업데이트 파라메터를 포함하는 상기 제2 (HTTP 또는 WebSocket) 요청 메세지를 업데이트하도록 지시하기 위해 구성된다
일 실시 예에서, 상기 실행 가능한 동작은: 상기 제1 (HTTP 또는 WebSocket) 응답 메세지에 응하여, (HTTP 또는 WebSocket) 응답 메세지, 바람직하게는 상기 제1 네트워크 노드에 의해 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 HTTP 리디렉션 메세지를 발생시키는 동작을 더 포함할 수 있으며, 상기 (HTTP 또는 WebSocket) 응답 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함한다.
다른 실시 예에서, 상기 실행 가능한 동작은: 상기 제1 (HTTP 또는 WebSocket) 응답 메세지 에 응하여, (HTTP 또는 WebSocket) 응답 메세지, 바람직하게는 상기 제1 네트워크 노드에 의해 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 HTTP 리디렉션 메세지를 발생시키는 동작을 더 포함할 수 있으며, 상기 (HTTP 또는 WebSocket) 응답 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함한다.
일 실시 예에서, 상기 제2 (HTTP 또는 WebSocket) 응답 메세지는 요청 URL, 상기 청크 템플릿, 상기 제 1 네트워크 노드에 의해 전달될 수 없는 하나 이상의 청크를 정의하기 위한 하나 이상의 제2 청크 템플릿 파라메터를 포함할 수 있다.
그러나 다른 측면에서, 사용자 장치(device)는 클라이언트, 바람직하게는 단일 (HTTP 또는 WebSocket) 응답 메세지에 기초하여, 복수의 청크를 요청하기 위하여 구성된 적응형 스트리밍 클라이언트를 포함할 수 있으며, 상기 청크들은 상기 클라이언트에게 상기 청크 식별자에 의해 정의된 청크들을 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자들을 포함하는 매니페스트 파일에 기초하여 정의되며, 상기 사용자 장치는: 적어도, 세부 항목 소프트웨어 프로그램으로 구현된 프로그램의 적어도 일부를 구비한 컴퓨터 판독 가능한 저장 매체; 및 일체로 적어도 컴퓨터 판독 가능한 프로그램 코드가 구현된 컴퓨터 판독 가능한 저장 매체 및 컴퓨터 판독 가능한 저장 매체에 결합된 프로세서, 바람직하게는 마이크로프로세서를 포함하며, 여기서 컴퓨터 판독 가능한 프로그램 코드 실행에 응해, 프로세서는: 복수의 제1 청크, 바람직하게는 세그먼트들을 요청하기 위하여, 하나 이상의 제1 청크 템플릿 파라메터를 포함하는 제1 (HTTP 또는 WebSocket) 요청 메세지, 바람직하게는 HTTP GET메세지를 결정하는 단계; 상기 제1(HTTP 또는 WebSocket) 요청 메세지를 제1 네트워크 노드, 바람직하게는 전달 노드 또는 캐쉬(cache)로 전송하는 단계를 포함하며, 여기서 제1 네트워크 노드는 복수의 제1 청크 식별자들, 바람직하게는 상기 하나 이상의 제1 청크 템플릿 파라메터와 제1 청크 템플릿, 바람직하게는 하나 이상의 청크 템플릿 파라메터 필드를 포함하는 URL 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련된 제1 복수의 URLs을 결정하는 단계; 및 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정된 상기 청크 식별자들 중 하나외 관련된 청크를 포함하는 적어도 하나의 (HTTP 또는 WebSocket) 응답 메세지를 수신하는 단계; 또는 상기 제1 네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 적어도 하나의 HTTP 리디렉션 메세지를 수신하는 단계를 포함하며, 상기 HTTP 리디렉션 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함하고; 바람직하게는 상기 HTTP 리디렉션 메세지는 또한 상기 청크 템플릿 및 상기 제1 네트워크 노드에 의해 전달될 수 없는 하나 이상의 청크를 정의하기 위한 하나 이상의 제2 청크 템플릿 파라메터를 포함하는 상기 리디렉션 URL을 포함한다.
다른 측면에 있어서, 본 발명은 사용자 장치, 바람직하게는 위에 기술한 사용자 장치에 의해 사용되기 위한 매니페스트 파일의 적어도 일부를 저장하기 위한 비-일시적(non-transitory) 컴퓨터 판독 가능한 저장 매체에 관한 것일 수 있으며, 여기서 사용자 장치는 클라이언트, 바람직하게는 단일 (HTTP 또는 WebSocket) 응답 메세지에 기초하여, 복수의 청크, 바람직하게는 세그먼트들을 요청하기 위하여 구성된 적응형 스트리밍 클라이언트를 포함할 수 있으며, 상기 청크들은 상기 매니페스트 파일에 기초하여 정의되고, 여기서 상기 패니페스트 파일은: 상기 클라이언트에게 상기 청크 식별자들에 의해 정의된 청크들을 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자들; 및 가입 지원 파라메터, 바람직하게는 상기 적어도 하나의 전달 노드는 복수의 제1 청크 식별자들, 바람직하게는 하나 이상의 청크 템플릿 파라메터 및 제1 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련된 제1 복수의 URLs을 결정하고; 적어도 적어도 하나의 (HTTP 또는 WebSocket) 응답 메세지를 상기 클라이언트에게 보내기 위하여 구성됨을 나타내기 위한 플래그(flag)를 포함하며, 상기 응답 메세지는 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정된 상기 청크 식별자들 중 하나와 관련된 청크를 포함한다.
일 실시 예에서, 상기 매니페스트 파일은 또한 상기 클라이언트에게 상기 단일 (HTTP 또는 WebSocket) 요청 메세지의 요청 URL의 청크 템플릿에서 상기 하나 이상의 청크 템플릿 파라메터 필드의 적어도 일부를 상기 하나 이상의 청크 템플릿 파라메터의 적어도 일부로 대체하도록 지시하기 위하여 가입 포멧 파라메터를 포함할 수 있다.
그러나 다른 측면에 있어서, 본 발명은 클라이언트, 바람직하게는 적응형 스트리밍 클라이언트에 의해, 단일 (HTTP 또는 WebSocket) 요청 메세지에 기초하여 복수의 청크를 요청하기 위한 시스템에 관한 것일 수 있으며, 여기서 상기 시스템은 앞서 기술한 임의의 실시 예를 참조하여 기술된 하나 이상의 사용자 장치 및 적어도 네트워크 노드를 포함한다.
본 발명은 또한 컴퓨터의 메모리에서 실행하면, 앞서 기술한 방법의 단계를 실행하도록 구성된 소프트웨어 코드 부분들을 포함하는 프로그램 제품에 관한 것일 수 있다. 본 발명은 본 발명에 따른 실시 예들을 개략적으로 나타내는 첨부된 도면을 참조하여 더 설명될 것이다. 본 발명은 이러한 구체적인 실시 예들로 전혀 한정되지 않음을 이해해야 한다.
도 1은 본 발명의 실시 예에 따른 청크 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에게 다수의 청크를 전달하기 위한 콘텐츠 전달 시스템의 적어도 일부를 나타낸다. 특히, 도1은 하나 이상의 네트워트(즉, 코어 네트워크(102) 및 액세스(104))를 통해 클라이언트(108i,2-)에게 연결될 수 있는 적어도 하나의 콘텐츠 서버(116) 및 하나 이상의 전달 노드(1121i2) 를 포함하는 콘텐츠 전달 시스템의 개략도이다. 전달 노드는 HTTP 적응형 스트리밍 (HAS) 프로토콜 같은 적응형 스트리밍 프로토콜을 기초로 세그먼트화된 콘텐츠를 클라이언트에게 전달할 수 있다. 적응형 스트리밍 프로토콜의 예에는 Apple HTTP Live Streaming [http://tools.ietf.org/html/ draft-pantos-http-live-streaming-07], Microsoft Smooth Streaming [http://www.iis.net/download/SmoothStreaming], Adobe HTTP Dynamic Streaming [http://www.adobe.com/products/httpdynamicstreaming], 3GPP-DASH [TS 26.247 Transparent end-to-end Packet-switched Streaming Service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP] 및 MPEG Dynamic Adaptive Streaming over HTTP [MPEG DASH ISO/IEC 23001-6]를 포함한다. HTTP는 청크드(세그먼트화된) 스트림을 HAS-가능한 클라이언트(aka HAS 클라이언트들)에게 전달하기 위한 효과적인, 방화벽-친화적인 및 스케일러블(scalable)한 구성을 허용한다. 전달 노드는 유니캐스트 연결을 통해 청크와 관련된 패킷들을 클라이언트에게 전송할 수 있다.
대안적으로 및/또는 부가적으로 패킷들은 브로드캐스트(즉, DVB 연결), 멀티캐스트, 오버레이 멀티캐스팅(overlay multicasting), 멀티미디어 브로드캐스트 멀티캐스트 연결을 통해 클라이언트에게 전송될 수 있다.
HAS 가능한 클라이언트는 일반적으로 전자 태블릿, 스마트 폰, 노트북, 미디어 플레이어, 홈 게이트웨이, AR안경 같은 (모바일) 콘텐츠 플레이-아웃 장치 또는 DASH- 가능한 HbbTV 디스플레이 장치 같은 DASH-가능한 디바이스와 일반적으로 관계가 있을 수 있는 사용자 장치에서 구현될 수 있다. 대안적으로, 사용자 장치는 셋-톱 박스 또는 저장된 콘텐츠에 대한 액세스를 가진 콘텐츠 플레이-아웃 장치에 의해 미래에 사용되도록 콘텐츠를 일시적으로 처리하고 저장하기 위해 구성된 콘텐츠 저장 장치일 수 있다.
"클라이언트"라는 용어는, 본 출원서 전체에 걸쳐 본 발명을 설명하는 목적으로 사용될 때마다, 통상의 기술자라면 위의 디바이스들 중 하나를 언급할 수 있거나 또는 위의 디바이스들 중 하나에 구현된 모듈을, 하드웨어 또는 하드웨어와 소프트웨어의 결합으로서, 경우에 맞게, 동등하게 언급할 수 있음을 쉽게 이해할 수 있을 것이다.
콘텐츠 서버(116)는 클라이언트에 의해 액세스되거나 또는 구매될 수 있는 비디오 타이틀과 관련된 매니페스트 파일을 호스트(host)할 수 있다. 대안적으로 콘텐츠 서버는 콘텐츠 프로바이더의 웹사이트나 또는 그와 유사한 것을 통해 비디오 타이틀이 구매되면 비디오 타이틀과 관련된 매니페스트 파일을 생성하도록 구성될 수 있다. 전달 노드(112 i2)는 매니페스트 파일에서 식별되는 청크들을 호스트할 수 있다.
도 1의 시스템에서, 클라이언트는 예를 들어, 웹사이트를 통해 콘텐츠 서버로부터 매니페스트 파일을 요청할 수 있다. 클라이언트가 수신하는 매니페스트 파일은 청크 식별자 및 특정 전달 노드, 즉 제1 전달 노드(110i)에 저장된 청크들을 가리키는 위치 정보(즉 하나 이상의 URLs의 형태로)를 포함할 수 있다. 매니페스트 파일에 기초하여 클라이언트는 청크 요청에서 식별된 청크를 호스트하는 전달 노드에게 하나 이상의 라우팅(routing) 프록시 및/또는 캐쉬(106)를 통해 전송될 수 있는 HTTP요청 메세지 즉, HTTP GET메세지에 기초하여 청크 요청을 시작할 수 있다.
앞서 설명한 바와 같이. HAS 콘텐츠를 다수의 클라이언트에게 전달하기 위해 시스템에 의해 처리되어야 하는 전체 HTTP GET 요청의 수는 상당할 수 있다. 매우 많은 요청을 전송하고 처리하는 것은 네트워크 전체의 효율성에 감소를 야기할 수 있다. 이러한 감소는 그러한 요청들을 송신하고 수신하는 사이에 지연을 일으킬 수 있다. 추가적으로 그것은, CPU, 메모리 및 대역폭 소비의 관점에서, 이러한 요청을 처리해야 하는 서버 및 중간 캐쉬에 많은 오버헤드를 야기할 수 있다.
이러한 문제를 제거하거나 또는 적어도 상당히 감소시키기 위하여 클라이언트는 매니페스트 파일의 정보를 사용하여 하나 이상의 미리 결정된 (HTTP 또는 WebSocket 기반) 요청 메세지를 발생하도록 구성될 수 있는, 가입 제네레이터 모듈(줄여서 가입 제네레이터)를 포함할 수 있으며, 여기서 이러한 하나 이상의 요청 메세지는 네트워크 노드, 즉 전달 노드, 캐쉬, 또는 다른 네트워크 요소의 가입 번역기 모듈(줄여서 가입 번역기)에게, 즉 각 클라이언트가 청크드 콘텐츠를 플레이아웃하기 위하여 필요한 청크와 관련된 HTTP GET메세지의 형태로, 일련의 단일 청크 요청 메세지를 발생하도록 지시하기 위해 구성된다. 이후 (바람직하게는 HTTP) 가입 메세지 또는 가입 요청 메세지로 언급될 수 있는, 이러한 특별한 요청 메세지(즉, 한번에 하나 이상의 청크를 요청할 수 있는)는 네트워크 노드에서 미리 결정된 순서의 청크 요청 메세지를 발생하거나 에뮤레이트(emulate)할 수 있다. 각 청크 요청 메세지에 대해, 전달 노드는 응답 메세지 본문(body)의 일부로서 청크를 포함하고 있는, 해당 HTTP 청크 응답 메세지를 발생할 수 있다.
이하 더 상세히 설명하겠지만, HTTP 가입 메세지는 예를 들어, 도1에 나타낸 바와 같이, 콘텐츠 전달 시스템에 의해 전송되고 처리되는 청크 요청 메세지의 양을 상당히 줄일 수 있을 것이다. HTTP 가입 메세지의 다양한 유리한 포멧과 사용은 이하 더 상세히 설명할 것이다.
도 2A는 본 발명의 실시 예에 따른 단일 HTTP 요청 메세지에 기초하여 복수의 청크를 스트리밍 클라이언트에게 요청 및 전달하기 위한 방법을 나타낸다. 특히, 도2는 단일 HTTP GET메세지에 기초하여 다수의 청크(이 경우 SVC 청크)를 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다. (HAS) 스트리밍 클라이언트는 다수의 청크들(즉, 이러한 특별한 예에서는 세 가지 품질 층과 관련된 SVC 청크)들의 전달을 요청하기 위해 HTTP GET메세지를 발생하도록 구성된 가입 제네레이터 모듈을 포함할 수 있다.
사용자들은 스트리밍 클라이언트를 포함하는 사용자 장치를 네트워크, 즉 인터넷에 연결시킬 수 있고, 비디오 타이틀 링크를 포함하는 콘텐츠 프로바이더의 웹사이트를 브라우즈하여 하나를 선택할 수 있다. 하나의 링크, 즉 URL을 선택하는 즉시, 매니페스트 파일(MF)은 클라이언트에게 전송될 수 있다(단계 200). 여기서, 용어 매니페스트 파일은 일반적으로 비디오 타이틀 또는 그것의 일부를 구성하는 청크를 식별하는 특별한 서술자(descriptor)를 가리킬 수 있다. 청크 식별자는 청크(즉, 세그먼트들)를 클라이언트에게 전달하거나 또는 클라이언트에게 청크들을 검색할 수 있는 정보를 제공할 수 있도록 구성될 수 있는 하나의 (세트의) 네트워크 노드(들), 즉 미디어 서버(들)에 액세스하기 위해 사용될 수 있다.
가입 제네레이터는 매니페스트 파일에 기초하여 미리 결정된 HTTP 요청 메세지를 발생할 수 있다(단계202). 도2B는 청크를 검색하기 위한 하나 이상의 청크 식별자를 포함하는 매니페스트 파일(230)의 예를 나타낸다. 청크 식별자들은 청크 템플릿 파라메터(즉, 이러한 특별한 예에서는 $Number$ 238) 및 $Bandwidth$(240))와 관련된 하나 이상의 청크 템플릿 파라메터 필드(238, 240)를 포함하는(도 2B에서 SegmentTemplate로 언급되는) 템플릿(236)의 형태로 구현될 수 있다. 매니페스트 파일은 하나 이상의 도메인 이름과 각각 관련된 하나 이상의 베이스 URLs(232, 23)4을 더 포함할 수 있다. 베이스 UTLs, 청크 템플릿 및 청크 템플릿 파라메터들을 결합함에 의하여, 어디서 청크들을 검색할 수 있는지를 결정하기 위해 일련의 특정 URLs들이 결정될 수 있다. 예를 들어, 파라메터 번호와 대역폭을 세팅함으로써 그것은 일련의 URLs를 발생할 수 있다:
movie/movie_c234_1000kbps.mp4
movie/movie_c235_1000kbps.mp4
movie/movie_c236_1000kbps.mp4
movie/movie_c237_1000kbps.mp4
movie/movie_c238_1000kbps.mp4
다른 청크 템플릿 파라메터들은 $RepresentationlD$(즉, 예를 들면, SVC 애플리케이션에서 청크 품질 표현의 식별자) 및 $Time$, 즉 청크드 콘텐츠의 미디어 프레젠테이션 타임라인에 관한 정보에 기초하여 결정될 수 있는 청크의 시작 시간을 포함할 수 있다.
이러한 URLs는 전달 노드로부터 청크들을 요청하기 위한 HTTP GET메세지를 발생하는데 사용될 수 있다. 본 발명에 따른 일 실시 예에서, 클라이언트는 전달 노드로부터 미리 결정된 일련의 청크를 요청하기 위한 HTTP 메세지(즉, 가입 메세지)를 발생하기 위해, 베이스 URL, 청크 템플릿 및 청크 템플릿 파라메터를 사용할 수 있다.
바람직하게는 HTTP 메세지는 HTTP/1.1과 같은 알려진 HTTP표준을 따르는 포멧을 가진다..예를 들어, 비디오의 제1 두 청크의 세 가지 품질 버전을 요청하기 위하여, HAS 클라이언트에서 가입 제네레이터는 매니페스트 파일의 정보에 기초하여 HTTP 요청 메세지를 발생할 수 있으며, 상기 메세지는 하나 이상의 청크 템플릿 파라메터 및 청크 템플릿을 포함하는 요청 URL을 포함한다.
이하 더 상세히 설명하겠지만, 청크 템플릿 파라메터는 본 발명의 일 측면에 따른 HTTP GET 메세지를 형성하기 위하여 청크 템플릿에서 특정 필드를 지정하는데(specify) 사용될 수 있다. 일 실시 예에서, HTTP GET 메세지는 다음의 포멧을 가질 수 있다:
HTTP GET/movie/movie_s{Number}_q{Bandwidth}.mp4 HTTP/1.1
Host: www.moviewebsite.com
Number: 2;234,235;2s
Bandwidth: 1;800,1000,1500;0s
이러한 예에서 HTTP 메세지의 요청 URL은 매니페스트 파일의 BaseURL에서 유도해낼 수 있는 도메인 명(이 경우에는 http://www.moviewebsite.com/)을 포함할 수 있다. 또한, 요청 URL은 매니페스트 파일의 SegmentTemplate 로부터 유도해낼 수 있는, 하나 이상의 청크 템플릿 파라메터 필드(이 경우에는 청크 (씨퀀스) 넘버 필드 및 대역폭 파라메터 필드)를 포함하는 청크 템플릿(an URL chunk template) /movie/movie_s{Number}_q{Bandwidth}을 포함할 수 있다. 여기서, 청크 템플릿 파라메터 필드는 URL 템플릿의 사용을 나타내기 위해 "브래킷(bracket)"({...})으로 식별할 수 있다.
각 청크 템플릿 파라메터 필드는 이러한 예에서는 HTTP 헤더에 정의될 수 있는 번호 또는 대역폭과 같은 청크 템플릿 파라메터에 기초하여 지정될 수 있다.
청크 템플릿 파라메터는 클라이언트에 의해 요청되는 URL의 정확한 씨퀀스(sequence)를 생산하기 위해 가입 번역기(subscription translator)에 의해 사용되는, 세미콜론으로 한정되는 하나 이상의 파라메터 속성을 포함할 수 있다.
위의 예에서, 청크 템플릿 파라메터는 오더, 레인지 및/또는 타임 속성과 관련될 수 있다. 예를 들면, 넘버 청크 템플릿 파라메트는 대역폭 청크 템플릿 파라메터의 오더 속성 "1" 보다 높은 오더 속성 "2"와 관련될 수 있으며 그래서 가입 제네레이터는 넘버 청크 템플릿 파라메터에 앞서 대역폭 청크 템플릿 파라메터를 처리할 수 있다.
따라서, 전달 노드 에서 가입 번역기가 HTTP 가입 메세지를 파스(parse)하고 있을 때, 그것은 헤더의 가입 필드의 청크 템플릿 파라메터의 오더 속성을 해석하고 제1 청크(제1 청크 식별자와 관련된)의 세 가지 비트레이트 변이형(variants), 이어서 제2 청크(제2 청크 식별자와 관련된)의 세 가지 비트레이트 변이형, 등등을 전송할 것을 결정할 수 있다. 넘버 청크 템플릿 파라메터가 대역폭 청크 템플릿 파라메터 보다 낮은 오더 속성을 가졌을 경우, 전달 노드는 먼저 모든(즉, 세 가지) 제1 청크 (제1 청크 식별자와 관련된)의 세 가지 비트레이트 변이형을 전송할 것이고, 그리고 나서 제2 비트레이트(등등)의 모든 청크들(다른 청크 식별자와 관련된)을 클라이언트에게 전송할 것이다.
레인지 속성은 관련된 청크 템플릿 파라메터가 취할 수 있는 값을 지정할 수 있으며, 여기서 그 값들은 그것의 앤드 포인트(end points)(즉, "0-10"), 리스트(즉, "1, 2, 3"), 또는 그것들의 결합(즉, "1, 2, 5-10")으로 결정될 수 있다. 타임 속성(즉, 타임 파라메터)는 해당 청크 템플릿 파라메터에 대해 다른 값을 가진 후속 청크를 보내기 전에 전달 노드가 대기해야 하는 시간 간격(time interval)을 지정(specify)할 수 있다.
클라이언트가 HTTP 가입 메세지(HTTP 표준을 따르는)를 발생한 후, 클라이언트는 전달 노드와 연결, 즉 TCP/IP 연결을 설정할 수 있다(단계 204). 상기 연결은 즉, 적당한 DNS 스킴을 사용하여 요청 URL에 기초하여 결정되는 IP 주소 및 포트에 기초하여 설정될 수 있다. 상기 TCP/IP 연결은 하나의 연결(IP 주소 및 포트에 의해 식별되는)을 통해 다수의 HTTP 요청-응답 메세지의 교환을 허용하는 퍼시스턴트 커넥션(persistent connection)일 수 있다. HTTP 가입 메세지는 요청 URL에서 식별된 전달 노드로 상기 연결을 통해 전송될 수 있다.
따라서 위의 예에서, 제 1 청크 식별자와 관련된 다른 비트레이트의 청크들을 미리 결정된 오더로 클라이언트에게 전송하고 및 후속 청크 식별자와 관련된 다른 비트레이트의 청크를 전달하기 전에 미리 결정된 주기(이 경우에는 2 초) 동안 대기하도록 전달 노드에게 지시하기 위하여, 클라이언트는 HTTP 가입 메세지를, 바람직하게는 본 발명에 따른 HTTP표준에 따른 미리 결정된 HTTP GET 메세지를 전달 노드로 전송할 수 있다(단계 206).
청크 템플릿 파라메터와 관련된 오더, 레인지 및/또는 타임 속성들은 단지 바람직한 실시 예일 뿐이며, 품질 및/또는 프레젠테이션 타임 속성과 관련된 다른 청크 템플릿 파라메터를 가진 해당 실시 예들은 하나 이상의 전달 노드로부터 청크의 미리 결정된 오더를 요청하기 위하여 또한 사용될 수 있음을 제시한다.
HTTP 가입 메세지를 발생할 때, 클라이언트는 전달 노드로 메세지를 전송하는 것은 전달 노드로 미리 결정된 순서로 미리 결정된 수의 HTTP 청크 요청 메세지를 전송하는 것과 동등하다는 것을 인지한다. 따라서, HTTP 가입 메세지를 전송한 후, 클라이언트는 연결을 열어두고 HTTP 가입 메세지에 응해 가입 번역기에 의해 발생되거나 에뮬레이터되는 요청의 수에 일치하는 다수의 HTTP 응답 메세지를 수신하기 위하여 기다린다(단계 208). 일 실시 예에서, 클라이언트는 그것이 수신한 응답을 클라이언트에 의해 수신되는 HTTP 응답 메세지 (타임) 오더에 기초하여 (발생된 또는 에뮤레이트된) HTTP 청크 요청 메세지들(HTTP 가입 메세지와 관련된) 중 하나에 링크할 수 있다.
예를 들면, 일 실시 예에서, 클라이언트는 가입 번역기에 의해 발생된 일련의 HTTP 청크 요청 메세지에서 제1 HTTP 청크 요청 메세지를 가입 요청 메세지에 응해 클라이언트에 의해 수신된 제1 응답 메세지와 관련시킬 수 있다.
따라서, 앞서 설명한 바와 같이, 전달 노드에서 가입 번역기는 HTTP 가입 메세지를 일련의, 이 예에서는 6 개의, HTTP 가입 메세지(즉, 6 개의 "conventional" HTTP GET메세지)로 변환(translate)하기 위하여 상기 청크 요청 템플릿을 사용할 수 있다(단계 210):
HTTP GET movie/movie_c234_q800.mp4;
HTTP GET movie/movie_c234_q1000.mp4;
HTTP GET movie/movie_c234_q1500.mp4;
HTTP GET movie/movie_c235_q800.mp4;
HTTP GET movie/movie_c235_q1000.mp4;
HTTP GET movie/movie_c235_q1500.mp4.
구현에 따라 가입 번역기는 일련의 HTTP GET 메세지 (앞서 기재한 바와 같이) 또는 일련의 HTTP GET 메세지를 에뮤레이트하기 위해 사용되는 일련의 URLs을 발생하기 위하여 청크 템플릿 및 청크 템플릿 파라메터를 사용할 수 있다. 넘버 청크 템플릿 파라메터에 대하여 대역폭 청크 템플릿 파라메터에 우선권이 주어지기 때문에, 전달 노드는 하나의 청크에 대해 각각 다른 비트레이트 변이형을 포함하는 세 개의 응답을 전송할 수 있다(단계(212, 214, 216). 그리고 나서, 대역폭 청크 템플릿 파라메터와 관련된 타임 파라메터(타임 속성)에 기초하여, 전달 노드는 그 다음 세 가지 응답을 보내기 전에(단계220,222,224) 미리 결정된 타임 동안(이 경우 2초) 기다릴 수 있다(단계 218).
앞서 기술한 스킴은 일시적으로나 공간적으로나 세그먼트화된(때때로 또한 '타일'로 언급되는) 콘텐츠를 포함하는, 다른 유형의 청크드 콘텐츠에 적용될 수 있다. 예를 들면, 일 실시 예에서, 프레임이 2x2 타일로 공간적으로 분할된(타일 좌표 (1, 1), (1, 2) (2, 1) (2, 2)과 관련된) 세그먼트화된 비디오에 대한 HTTP 가입 메세지는 다음의 포멧을 가질 수 있다:
HTTP GET movie/movie_c{Number}_q{Bandwidht}_x{XID}_y{YID}.mp4 HTTP/1.1
Host: www.deliverynode.com
Number: 4;234;2s
Bandwidth: 3;1000,1500;0s
XID: 2;1-2;0s
YID: 1;1-2;0s
넘버 및 대역폭 청크 템플릿 파라메터 외에도, HTTP 메세지는 또한 요청되는 타일 스트림의 타일 좌표를 결정하는 두 개의 청크 템플릿 파라메터 XID 및 YID를 포함할 수 있다.
가입 메세지는 전달 노드에서 설명 번역기(description translator)에 의해 해석될 수 있고, 제1 청크 식별자에 대해 (넘버) 타일(1,1),(1,2),(2,1) 및 (2,2)이 제1 및 제2 비트레이트 버전(대역폭)으로 요청되어야 함을 결정한다. 따라서, 이러한 HTTP 가입 메세지는 일련의 8 개의 요청 메세지로 변환(또는 에뮤레이트)될 수 있다. YID 청크 템플릿 파라메터가 가장 높은 우선권(우선권 1)을 가지기 때문에 제1 비트레이트 버전의 타일 (1,1) 및 (1,2)와 관련된 제1 청크 요청 메세지가 발생된다. 이어서, XID는 (우선권2)로 증가하고 그래서 제1 비트레이트 버전에서 타일 (2,1) 및 (2,2)와 관련된 청크 요청 메세지가 결정된다. 마지막으로, 대역폭 파라메터는 (우선권3)으로 증가하고, 제2 비트레이트 버전에서 모든 4 개의 타일은 제1 비트레이트 버전과 관련하여 앞서 설명한 바와 동일한 오더로 발생된다:
HTTP GET movie/movie_c234_q1000_x1_y1.mp4
HTTP GET movie/movie_c234_q1000_x1_y2.mp4
HTTP GET movie/movie_c234_q1000_x2_y1.mp4
HTTP GET movie/movie_c234_q1000_x2_y2.mp4
HTTP GET movie/movie_c234_q1500_x1_y1.mp4
HTTP GET movie/movie_c234_q1500_x1_y2.mp4
HTTP GET movie/movie_c234_q1500_x2_y1.mp4
HTTP GET movie/movie_c234_q1500_x2_y2.mp4
본 발명에 따른 가입 요청 메세지는 따라서 임의의 유형의 세그먼트화된(청크드) 콘텐츠에 대한 매니페스트 파일에 기초하여 결정되며, 여기서 단일 HTTP 요청은 일련의 (공간적, 시간적 및/또는 품질) 청크의 전달을 위해 전달 노드에게 요청하기 위해 사용될 수 있다.
도 2A 및 도 2B를 참조하여 설명한 HTTP 가입 메세지는 단지 하나의 예일 뿐이며 다른 메세지 포멧도 도11 및 도12를 참조하여 더 상세히 이하에서 논의할 것을 제안한다.
도 3A 및 도 3B는 스트리밍 클라이언트 및 본 명세서 내에서 설명한 바와 같이 HTTP가입 메세지를 처리하기 위해 구성된 관련된 전달 노드의 개략도를 나타낸다. 도3A는 본 발명의 실시 예에 따른 사용자 디바이스를 나타낸다. 사용자 디바이스(300)는 전달 노드 또는 캐쉬와 같은 하나 이상의 네트워크 노드, 즉 (미디어) 서버와 통신하기 위하여 및 적응형 스트리밍 프로토콜에 기초하여 청크드 콘텐츠를 스트리밍하기 위하여 클라이언트(302), 바람직하게는 (HTTP적응형 스트리밍(HAS) 클라이언트)를 포함할 수 있다. 사용자 디바이스는 일반적으로 콘텐츠 프로세싱 장치 즉, 전자 테블릿, 스마트-폰, 노트북, 미디어 플레이어, 등과 같은 (모바일) 콘텐츠 플레이-아웃과 관계가 있을 수 있다.
도 3A에 도시된 바와 같이, 매니페스트 파일의 정보는 매니페스트 캐쉬(310)에 저장될 수 있으며, 전달 노드로부터 특별한 청크를 요청하기 위한 (종래의) HTTP 청크 요청 메세지 및 앞서 설명한 HTTP 가입 메세지 같은 HTTP 요청 메세지를 발생하기 위하여 클라이언트에 의해 파스(parse)될 수 있다. 이러한 메세지들은 클라이언트에 의해 HTTP 인터페이스를 통해 전달 노드로 전송될 수 있다. HTTP 가입 메세지를 형성하기 위하여, 클라이언트는 매니페스트 파일로부터의 정보, 즉 청크 템플릿 및 청크 템플릿 파라메터를 사용하는 가입 제네레이터 모듈(312)을 포함할 수 있다.
클라이언트는 또한 HTTP 가입 메세지와 관련된 미리 결정된 일련의 HTTP 응답 메세지(306)를 수신하고 일시적으로 이러한 청크들을 버퍼(314)에 저장할 수 있도록 구성될 수 있다. 청크들은 (청크) 전송 프로토콜을 사용하여 검색될 수 있다(전형적으로 이것은 HTTP일 수 있으나, 또한 RTSP/RTP, FTP 및 다른 프로토콜도 사용될 수 있다). 비디오 플레이-아웃 기능(316)(또한 미디어 엔진으로 언급될 수도 있는)은 정보, 예를 들면, 매니페스트 파일의 세그먼트 타임라인 정보에 기초하여 버퍼에 저장된 청크들을 플레이-아웃할 수 있다.
청크 검색 기능은 청크들을 검색하도록 구성될 수 있어서 플레이-아웃이 시작되기 전에 버퍼에 미리 결정된 수의 청크들이 로딩된다. 게다가, 플레이-아웃 동안, 클라이언트는 매니페스트 파일에 기초하여 계속해서 청크들을 검색한다 그래서 충분한 청크들이 청크 버퍼에 저장된다. 클라이언트는 사용자 디비이스의 (그래피칼) 사용자 인터페이스(미도시)에 연결된 사용자 내비게이션 기능(330)으로부터의 청크 검색 지시를 수용하여 취급할 수 있다. 이러한 방식으로, 사용자는 매니페스트 파일에 의해 정의된 청크들을 통해 내비게이트할 수 있다.
도 3B는 본 발명의 다양한 실시 예에 따른 HTTP 가입 메세지를 처리하도록 구성된 전달 노드 같은 네트워크 노드의 개략도를 나타낸다. 전달 노드(320)는 HTTP요청 및 응답(324,326,328)을 취급하기 위한 표준 HTTP 서버(322)를 포함할 수 있다. HTTP 서버는 가입 번역기 모듈(332)로 전송되는, HTTP 가입 메세지(330)를 여과하도록 구성될 수 있다. 번역기 컴포넌트는 도 2를 참조하여 설명한 바와 같이 HTTP 가입 메세지를 청크 템플릿 및 청크 템플릿 파라메터를 사용하여 미리 결정된 일련의 HTTP 청크 요청(334)으로 변환시킨다.
본 발명의 일 실시 예에서, HTTP 요청 타이머 모듈(338)은 전송해야 할 요청의 오더에 대한, 일부 실시 예에서는, 또한 청크 요청이 응답되어야 하는 시간에 대한 기록을 할 수 있다. 그러한 목적에 대해, HTTP 메세지는 응답 메세지에 타이밍 정보(즉, 타임 스탬프) 및 HTTP 메세지의 청크 템플릿 파라메터와 관련된 하나 이상의 타임 파라메터(즉, 타임 속성)를 포함할 수 있다. 일 실시 예에서, HTTP 요청 타이머 모듈(338)은 타임이 맞춰진(timed) HTTP 요청을 타임(즉, 클럭 시그널에 의해 제공된)을 기초로 HTTP 서버에게 전하도록 구성될 수 있다. HTTP 청크 요청에 응하여, HTTP 서버는 요청된 청크를 포함하는 HTTP 응답 메세지를 발생할 수 있고, 그것은 하나 이상의 타임 속성(타임 파라메터)에 따라 콘텐츠 데이터베이스(330)에 (일시적으로) 저장될 수 있다. 또한 도 3A 및 도 3B에 제공된 예들은 WebSocket 기반의 요청-응답 메커니즘에 동등하게 적용될 수 있음을 알아야 한다. HTTP 메세지들은 그리고 나서 WebSocket 메세지(즉, WebSocket 포멧에 기초한 메세지들)를 대신한다. 이러한 메세지들의 문법(syntax)의 한 예는 본 명세서에 기술되었다. 그리고 나서 클라이언트와 서버 둘 다 청크을 요청하거나 및/또는 검색하기 위해 사용되는 WebSocket 연결을 설정하기 위해(즉 업그레이드하기 위해) 구성될 수 있다.
도 4는 종래의 HTTP 청크 요청 메세지를 사용하여 청크드 콘텐츠를 스트리밍 하는 동안 생기는 오버헤드를 도시하는 다양한 그래프를 나타낸다. 실제의 상황에서, 오버헤드는 사용되는 물리적 층(즉, Ethernet)에 달려있기 때문에 계산하기 어렵다. (OSI 모델의) 물리적 층과 관련된 프로토콜은 다른 방식으로 오버헤드를 추가할 수 있고 TCP 스트림을 단편화(fragment) 할 수 있다(즉, Ethernet은 18 바이트 오버헤드를 추가하고 및 TCP 스트림을 1500 바이트 데이터 패킷으로 분할한다). 따라서, 계산에서는 오로지 IP, TCP 및 HTTP 오버헤드만 고려했다.
IP 및 TCP 헤더 오버헤드는 각각 최소 20 바이트이다. HTTP 오버헤드는 실제의 헤더 필드 및 URL 길이에 달려 있다. 예로써, 타일드(tiled) 스트리밍 예에 대해 아래의 최소 HTTP 요청을 사용한다:
GET movie/movie_c001_q 1_x1_y1.mp4
Host: www.deliverynode.com
이 요청은 사이즈에서 약 60 바이트이다. 가입자 요청은 다음과 같다:
GET movie/movie_c{Number}_q{RepresentationlD}_x{XID}_y{YID}.mp4
Host: www.deliverynode.com
Number: 4;001-010;2s
RepresentationID: 3; 1-3;0s
XID: 2; 1-4;0s
YID: 1; 1-4;0s
이러한 요청은 134 바이트이다. 도 4의 두 그래프는 전통적인 HTTP GET 방법을 사용하여 요청의 사이즈를 (바이트로) SVC 타일드 스트리밍 시나리오에서 요청된 청크의 수(X 축) 및 요청된 품질 층(커브)의 수의 함수로서 나타낸다. 제 1 그래프는 2x2타일로 구성되는 비디오에 대한 결과를 나타내는 한편, 제2 그래프는 4x4 타일의 비디오에 대한 결과를 나타낸다.
명백히, 요청의 수, 그러므로 요청된 바이트는 모든 세 가지 변수로 선형으로 증가한다. 예를 들어, 2x2타일의 비디오에 대한 20 청크의 세 가지 품질 층을 요청하면 23 MB를 요구할 것이지만, 반면에 4x4 타일의 비디오에 대한 동일한 요청은 93 MB를 요구할 것이다. 이러한 수들을 네트워크에서 요청해야 하는 전체적인 청크 수와 클라이언트의 수로 곱하면(multiply), 요청의 수와 관련된 엄청난 양의 오버헤드를 발생할 것이다.
대조적으로, 가입 바이트의 전체 수는 이 경우, 요청되는 품질 층, 타일 또는 세그먼트의 수와는 별개로, 174 (즉, 0.16 MB)일 것이다. 이 계산에는 최소 값들이 사용되었고, 그래서 실제의 상황에서 오버헤드는 상당히 더 높아질 것임을 알아야 한다.
도 5는 본 발명의 다른 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 개략적으로 나타낸다. 특히, 도 5는 제1 HTTP 가입 메세지의 생성 및 전달 노드로의 전송 및 전달 노드에 의한 HTTP 가입 메세지의 프로세싱 동안 후속 가입 메세지의 업데이트를 개략적으로 나타낸다.
프로세스는 도 2A의 단계(200-214)를 참조하여 설명한 바와 유사한 방식으로 시작할 수 있다. 특히, HAS 클라이언트는 HTTP 가입 메세지를 검색을 위해 두 개의 청크의 두 개의 다른 품질 층으로 전달 노드로 전송할 수 있다(단계502). HTTP 가입 메세지는 전달 노드에서 가입 번역기에 의해 일련의 네 개의 HTTP 청크 요청 메세지로 변환될 수 있다(단계 504). 그 후, 전달 노드는 제1청크의 두 개의 (SVC) 품질 층을 클라이언트에게 전송할 수 있다(단계506 및 508).
그 동안, 제1 청크의 두 SVC 변이형(variants)을 수신한 후, 클라이언트는 (즉, 사용 가능한 대역폭이 그것을 지원하기에 충분치 않음을 인지했기 때문에) 더 이상 제2 품질 층에 관심이 없다고 판단할 수 있다. 그러므로, 클라이언트는 새로운, 제2 HTTP 가입 메세지를 청크2 및 청크3의 베이스 층만을 검색하기 위해 퍼시스턴트 커넥션(persistent connection)을 통해 전송할 수 있다(단계550).
전달 노드는 제2 HTTP 가입 메세지가 앞선 HTTP 가입 메세지와 동일한 세션에 속함을 식별할 수 있고 제2 HTTP 가입 메세지는 새로운 요청이라기 보다 제1 HTTP 가입 메세지의 업데이트와 관계가 있다고 판단할 수 있다.
전달 노드는 요청이 업데이트인지 몇 가지 다른 방식으로 판단할 수 있다. 예를 들면, 일 실시 예에서, 각 HTTP 가입 메세지는 고유한 식별자에 의해 식별되고 동일한 식별자를 사용하여 제2 HTTP 가입 메세지를 보내면 전달 노드로 하여금 제2 가입 메세지를 업데이트 메세지로 해석하도록 촉발한다. 다른 실시 예에서, "업데이트" 라고 지정된 파라메터는 요청 URL의 쿼리 스트링(query string)(검색 문자열)) 에 부가될 수 있다. 그 값이 미리 결정된 값, 예를 들어 "1" 세트되면, 이 경우 그 요청은 HTTP 가입 업데이트 메세지이다. "업데이트" 파라메터가 "0" 이거나 또는 쿼리 스트링이 존재하지 않는 경우, HTTP 가입 메세지는 업데이트 메세지가 아니다. 다른 실시 예에서, "업데이트" 파라메터는 HTTP 메세지의 헤더에 삽입될 수 있다.
HTTP 메세지가 HTTP 가입 업데이트 메세지인 경우, 전달 노드는 이전의 제1 HTTP 가입 메세지 세션과 관련된 요청들을 제거할 수 있다(단계512). 세션의 식별은 또한 토큰- 또는 쿠키-기반의 스킴을 포함하여, 다수의 방법으로 구현될 수 있다(그러한 세션 식별 스킴의 예는 이하에 도 8 및 도 9를 참조하여 더 상세히 설명한다.). 새로운 HTTP 가입 메세지는 가입 번역기에 의해 전달 노드에서 새로운 HTTP 청크 요청 메세지로 변환될 수 있다(단계514). HTTP 서버는 전달 노드에서 요청된 청크를 포함하는 두 개의 HTTP 응답 메세지를 클라이언트에게 전송함으로써 이러한 메세지에 응답할 수 있다(단계516 및 단계 518). 결과로, 오리지널 제1 HTTP가입 요청 메세지의 일부로서 요청된 청크 'movie_c2_q2'는 결코 클라이언트에게 전송되지 않으며 그러므로 오리지널 요청의 이러한 부분은 효과적으로 취소된다.
다른 실시 예에서, HTTP 가입 메세지를 업데이트하는 대신, 클라이언트는 또한 앞서 언급한 동일한 메커니즘을 사용하여 완전히 취소할 것을 결정할 수 있다. 예를 들면, 일 실시 예에서, 클라이언트는 빈 HTTP 가입 메세지를 퍼시스턴트 커넥션(persistent cpnnection)을 통해 전달 노드로 전송할 수 있으며, 여기서 가입 번역기(subscription translator)는 전달 노드에서 그러한 빈 HTTP 가입 메세지를 이전의 HTTP 가입 메세지의 완전한 취소로 해석할 수 있다. 다른 실시 예에서, 도 5의 프로세서에서, 클라이언트는 또한 이전의 제1 HTTP 가입 메세지 후에 (제2) HTTP 청크 요청 메세지를 전달 노드로 전송할 것을 결정할 수 있다. 그러한 경우에. 제1 HTTP 가입 메세지와 관련된 HTTP 요청은 단일 HTTP 청크 요청으로 대체할 수 있다.
도 6은 본 발명의 또 다른 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다. 특히, 도 6은 단일 HTTP GET 메세지에 기초하여 다수의 청크(SVC 청크 같은)를 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다. 이러한 특별한 경우에, 본 발명에 따른 가입 요청 스킴을 지원하는 HTTP 프록시 캐쉬는 클라이언트와 전달 모드 사이의 경로 내에 위치할 수 있다.
프로세스는, 도 2A 및 도 2B를 참조하여 자세히 설명한 유사한 방식으로 가입 제네레이터에 의해 클라이언트에서 매니페스트 파일의 정보에 기초하여 발생되는 제1 HTTP 가입 메세지를 사용하여, 클라이언트가 다수의 청크, 즉 청크 식별자에 의해 식별되는 두 개의 품질 층의 전달을 요청하는 것으로 시작할 수 있다(단계 602):
HTTP GET movie/movie_c{Number}_q{Bandwidth}.mp4
Host: www.deliverynode.com
Number: 2;1,2;2s
Bandwidth: 1;1,2;0s
클라이언트와 캐쉬 사이의 제1 퍼시스턴트 커넥션((persistent) connection)이 설정될 수 있고 HTTP 가입 메세지는 상기 커넥션을 통해 캐쉬로 보내질 수 있다. 캐쉬의 HTTP 서버는 상기 메세지를 변환하기 위하여 및 캐쉬가 하나 이상의 요청된 청크를 전달할 수 있는지 체크하기 위하여 가입 번역기로 HTTP 가입 메세지를 전송할 수 있다. 그러한 목적으로, 그것은 요청된 청크들이 캐쉬의 콘텐츠 데이터베이스에 저장되어 있는지 체크할 수 있다. 이러한 특별한 예에서, 캐쉬는 제1 품질 층의 두 개의 청크를 저장했을 수 있으며, 그리하여 가입 번역기(translator)는 캐쉬로 제1 품질 층의 제1 및 제2청크를 스트리밍 클라이언트에게 전달하기 위해 캐시에서 HTTP 가입 메세지를 적어도 두 개의(로컬) HTTP 청크 요청 메세지로 변환할 수 있다:
HTTP GET movie/movie_c1_q1.mp4
HTTP GET movie/movie_c2_q1.mp4
요청된 청크의 잔여 부분, 즉 캐쉬에 저장되지 않은 제2 품질 층의 청크들에 대해, 가입 제네레이터는 캐시에서 또한, 전달 노드에게(오리지널 (제1) HTTP 가입 메세지의 목적지) 청크의 잔여 부분을 클라이언트에게 전달할 것을 요청하기 위한 제2 HTTP 요청 메세지를 발생할 수 있다(단계 604):
HTTP GET movie/movie_c[Number]_q[Bandwidth].mp4
Host: www.deliverynode.com
Number: 2;1,2;0s
Bandwidth: 1;2;0s
따라서, 이러한 실시 예에서, 캐쉬는 제1 HTTP 가입 메세지를 (로컬) HTTP 청크 요청 메세지로 변환하고 캐쉬에 존재하지 않는 하나 이상의 청크에 대한 제2 HTTP 가입 메세지를 발생하도록 구성된다. 만약 그러한 경우라면, 캐쉬는 전달 노드와 제2퍼시스턴트(persistent) 커넥션을 설정하고 제2 HTTP 가입 메세지를 전달 노드로 전송할 수 있다.
캐쉬에서 HTTP 클라이언트에 의해 전달 노드로 보내진 후, 제2 HTTP 가입 메세지는 제2 품질 층의 제1 및 제2 청크를 클라이언트에게 전달하기 위한 두 개의 (로컬) 청크 요청 메세지로 (전달 노드에서) 가입 번역기로 변환될 수 있다(단계 606). 제2 HTTP 가입 메세지에 응해, 전달 노드는 요청된 청크를 포함하고 있는 두 개의 HTTP 응답 메세지를 캐쉬로 다시 전송할 수 있으며, 그것은 제1 및 제2 HTTP 가입 메세지와 관련된 HTTP 응답 메세지를 클라이언트에게 전송할 수 있다.
클라이언트에 의해 요청된 타이밍 및 오더와 일치시키기 위해, HTTP 요청 타이머 모듈은 캐쉬에서 그것이 전달 노드로 보내는 HTTP 가입 메세지(들)의 타이밍 및 그것이 클라이언트에게 보내는 HTTP 청크 요청을 관리할 수 있다. HTTP 메세지의 타이밍은 클라이언트에게 요청된 순서로 응답을 전송할 시간이 올 때까지 발생된 HTTP 응답의 로컬 저장을 포함할 수 있다.
본 발명의 바람직한 실시 예에서, 도 6에 따르면 캐쉬는 캐쉬가 제1 HTTP 가입 메세지를 처리한 즉시 품질 층(1)의 청크(1)을 포함하고 있는 HTTP 응답을 이미 보내기 시작할 수 있다. 게다가, 캐쉬는 전달 노드로부터의 후속 청크를 기다릴 필요 없이 그것이 전달 노드로부터 수신하는 임의의 청크들을 전송할 수 있다. 다시 말해서, 도6의 예에서, 캐쉬에서 비롯되는 HTTP 응답 및 전달 노드로부터 비롯되는 HTTP 응답은 인터리브드(interleaved) 방식으로 클라이언트에게 전송할 수 있다.
도 7은 본 발명의 다양한 실시 예에 따른 HTTP 가입 메세지를 처리하도록 구성된 캐쉬(700)의 개략도를 나타낸다. 통상의 기술자라면 도 7의 문맥에서 언급된 (유형의) 청크들은 파일 내에 다수로 저장된(즉, 포함된) 프래그먼트들과는 달리, 파일로서 개별적으로 저장될 수 있기 때문에, 세그먼트들임을 인식해야 할 것이다. 따라서 프래그먼트들은 일반적으로 캐쉬 같은 저장 설비에 독립형 장치(stand alone)로 저장될 수 없으며, 그것은 분배의 효율성에 영향을 미칠 수 있다. 일 실시 예에서, 도 7의 HTTP 캐쉬 서버는 도 6을 참조하여 자세히 설명한 HTTP 가입 메세지를 처리하도록 구성될 수 있다. 도 3B의 전달 노드와 유사하게, 캐쉬(700)는 HTTP요청 및 응답 메세지(704, 706, 708)을 취급하기 위한 표준 HTTP 서버(702)를 포함할 수 있다. HTTP 서버는 HTTP 가입 메세지를 여과할 수 있도록 구성되며, 가입 메세지는 그리고 나서 가입 번역기 모듈(710)로 전송된다.
가입 번역기는 HTTP가입 메세지에 의해 어느 청크가 요청되는지 및 (적어도 일부분의) 이러한 청크들이 캐쉬의 콘텐츠 데이터베이스(713)에 저장되는지 체크할 것을 결정할 수 있다. 청크들의 일부가 캐쉬에 저장되는 경우에, 가입 번역기는 초기의 제1 HTTP가입 메세지를 콘텐츠 데이터베이스에 저장된 청크와 관련된 미리 결정된 일련의 HTTP 청크 요청(712)으로 변환할 수 있다. 이러한 HTTP 요청을 발생하기 위하여, 가입 번역기는 도 2를 참조하여 자세히 설명한 청크 템플릿 및 청크 템플릿 파라메터를 사용할 수 있다.
그리하여 발생된 HTTP 요청은 전송해야 할 요청의 오더(order) 및 일부 실시 예에서는, 청크 요청에 답해야 할 시간을 기록할 수 있는HTTP요청 타이머 모듈로 또한 전송될 수 있다. 일 실시 예에서, HTTP 요청 타이머 모듈(714)은 타임(즉 클럭 시그널에 의해 제공된)을 기초로 시간이 정해진(timed) HTTP 청크 요청(716)을 HTTP 서버로 전하도록 구성될 수 있다. HTTP 청크 요청에 응해, HTTP 서버는 요청된 청크를 포함하는 HTTP 응답 메세지(704)를 발생할 수 있고, 그것은 콘텐츠 데이터베이스(713)에 저장될 수 있다,.
캐쉬의 콘텐츠 데이터베이스에 저장되지 않은 청크와 관련하여, 가입 변역기(710)는 초기의 제1 HTTP 가입 메세지를 제2 (업스트림) HTTP 가입 메세지(724)로 변경(modify)할 수 있고 및 제2 HTTP 가입 메세지(720)를 초기(initial)의 제1 HTTP 가입 메세지에서 식별된 전달 노드로 전송할 수 있다. 변경된 HTTP 가입 메세지는 그리하여 캐쉬에는 존재하지 않는 청크들(세그먼트들)만을 요청한다. 대안적으로, 가입 번역기는 하나 이상의 (업스트림) HTTP 청크 요청(즉, 종래의 HTTP 요청 메세지)에 기초하여 콘텐츠 데이터베이스에 저장되지 않은 청크들을 요청할 것을 결정할 수 있고 및 이러한 HTTP 요청 메세지들(722)을 전달 노드로 보내기 위해 이러한 HTTP 요청들을 전송할 수 있다. 초기의 제1 HTTP가입 메세지에서 어떠한 청크도 캐쉬에 저장되지 않은 경우에, HTTP 가입 번역기는 HTTP 청크 요청을 캐쉬의 HTTP 클라이언트(718)에게 전송할 수 있고, 그것은 HTTP 가입 메세지를 전달 노드로 전송할 수 있다. HTTP 클라이언트는 또한 전달 노드로부터 및/또는 다른 네트워크 노드로부터 HTTP 응답(724)을 다시 수신하도록 구성될 수 있다. 청크를 포함하는 HTTP 응답들은 여과되고 청크의 콘텐츠(726)는 메타데이터 즉, 청크 식별자 및/또는 URL과 함께 콘텐츠 데이터베이스에 저장되고, 그래서 콘텐츠는 HTTP 서버(702)에 의해 검색될 수 있다. 일 실시 예에서, HTTP 클라이언트는 또한 클라이언트에 의한 HTTP 응답의 수신과 관련된 응답 타이밍 정보(즉, 타임스탬프 정보)를 HTTP요청 타이며 모듈(714)로 보내도록 구성될 수 있다. 다른 실시 예에서, HTTP 응답 타이머 모듈은 HTTP 서버에 의해 응답을 클라이언트에게로 전송할 수 있는 시간을 결정하기 위해 응답 타이밍 정보를 사용하도록 구성될 수 있다. 이러한 방식으로, 캐쉬 서버는 캐쉬에 저장된 청크들 및 전달 노드로부터 비롯된 청크들을 올바른 순서대로 클라이언트에게로 전송할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 나타낸다. HTTP 가입 메세지의 변경 및 취소를 지원하기 위하여, HTTP 서버는 클라이언트들 및 링크 가입 요청들(HTTP 요청 메세지들)을 함께 식별할 수 (즉, 관련시킬 수) 있어야 한다. 일부 경우에, 이것은 TCP 커넥션에 기초하여 행해질 수 있다. 그러나 중간(intermediary) 불투명 프록시(an intermediary non-transparent proxy) 같은 다른 경우에 있어서, 이것은 가능하지 않다. 게다가, HTTP 클라이언트 및/또는 서버에게 그들의 연결(connection)을 열어두라고 강요할 수 없다. 따라서, 연결이 닫힐(close) 때, 클라이언트 및/또는 서버는 하나의 특정 스트리밍 세션과 관련된 요청 및 응답에 링크할 수 있어야 한다. 이러한 문제는 여러 가지 방법으로 해결할 수 있다. 도 8의 실시 예에서는, 요청 및 응답을 식별하기 위하여 토큰이 사용된다.
도 8은 도 5를 참조하여 설명한 바와 유사한 흐름을 나타내며, 여기서 클라이언트는 이전에 보내진 HTTP 가입 메세지를 업데이트하기 위하여 HTTP 가입 업데이트 메세지를 전송하도록 구성된다. 이러한 실시 예에서 그러나, 클라이언트는 HTTP 메세지의 URL에 쿼리 파라메터(query parameter)로서 토큰을 포함한다. 예를 들면, 도 8에 도시한 바와 같이, 클라이언트는 네트워크(전달 노드)로부터의 청크드 콘텐츠와 관련된 MPD를 요청할 수 있으며, 여기서 HTTP GET 메세지의 요청 URL은 쿼리 파라메터 "token=abc"를 포함하며, 여기서 "abc"는 클라이언트 세션의 고유한 식별자이다(단계 802).
클라이언트는 이어서 응답 메세지로 MPD 파일(830)을 수신하며(단계804), 여기서 MPD 파일은 클라이언트에게 후속 HTTP 청크 요청의 요청 URLs에 클라이언트 세션 토큰을 부가해야 할 것을 지시하는 추가적인 토큰 파라메터 "useMPDURLQuery=true"를 포함한다. 그러한 목적을 위해, MPD의 청크 템플릿(834)은 클라이언트에게 요청 URL에 대한 쿼리 스트링(query string)으로 토큰을 추가할 것을 지시하는 부가적인 청크 템플릿 파라메터 필드 $QueryPart$를 포함할 수 있다. 추가적으로, 토큰 파라메터는 클라이언트에게 HTTP 가입 메세지의 요청 URL에 대한 쿼리 스트링으로서 클라이언트 세션 토큰을 추가할 것을 지시할 수 있다.
클라이언트가 HTTP 가입 메세지를 발생할 때, 그것을 전달 노드로 보내기 전에, MPD파일에서 $QueryPart$ 파라메터로 나타낸 바와 같이, 그것은 오리지널 MPD URL의 "token=abc" 부분을 요청 URL에 추가한다(단계 806). 전달 노드는 HTTP 가입 메세지를 다수의 HTTP 단일 청크 요청 메세지로 변환하고 및 클라이언트 세션을 고유하게 식별하기 위해 그러한 메세지들을 상기 토큰 값 "abc"에 링크할 수 있다. 따라서, 두 개의 응답(단계 810 및 812)을 수신한 후, 클라이언트가 그것의 요청URL에 첨부된 "update=1" 및 "token=abc" 쿼리를 가진 HTTP 가입 메세지를 전달 노드로 전송하는 경우(단계 814), 전달 노드는 이러한 HTTP 가입 업데이트 메세지(및 그것의 관련된 HTTP 청크 요청 메세지)를 동일한 토큰을 가진 이전의 HTTP 가입 메세지(및 관련된 HTTP 청크 요청 메세지)에 링크할 수 있고 및 전달 노드에 의해 아직 처리되지 않은 이전의 HTTP 가입 메세지의 HTTP 청크 요청의 제거를 포함할 수 있는 업데이트로 대체하기 위하여(단계 816), 이전의 HTTP 가입 메세지를 선택할 수 있다. 그런 후, HTTP 가입 메세지를 일련의 HTTP 청크 요청으로 변환하는 단계 및 이러한 HTTP 청크 요청에 응하여 응답을 클라이언트에게 보내는 단계(단계 818-822)를 포함하는 전달 프로세스로 상기 프로세스는 계속할 수 있다.
네트워크 노드에게 HTTP 가입 메세지를 업데이크하도록 지시하는 업데이트 파라메터는 다양한 방법으로 HTTP 요청 메세지에 삽입될 수 있다. 일 실시 예에서, 업데이트 파라메터는 청크 템플릿 파라메터를 참조하여 앞서 설명한 것과 유사한 방법으로 HTTP 메세지에 토큰 또는 쿠키로서 삽입될 수 있다. 대안적으로, 업데이터 파라메터는 쿼리 스트링으로서 HTTP 요청 메세지에 삽입될 수 있다.
도 9는 본 발명의 실시 예에 따른 하나의 HTTP 가입 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하는 방법을 나타낸다. 이러한 특별한 실시 예에서는, 클라이언트 세션 토큰(도 8들 참조하여 설명한)을 사용하는 대신, 클라이언트 세션 식별을 위해 쿠키가 사용된다.
클라이언트가 전달 노드 같은 네트워크 노드로부터 MPD를 요청하면(단계902), 전달 노드는 MPD 데이터를 포함하는 HTTP응답(924)에 "Set-Cookie" 헤더 필드(926)를 설정할 수 있다. 상기 헤더 필드는 쿠키 명 "Sessionld" 및 쿠키 값 "abc"를 포함할 수 있다. 상기 값은 클라이언트 세션의 고유한 식별자를 나타낸다. 일단 HTTP 응답 메세지가 클라이언트에 의해 수신되면, 클라이언트는 수신된 세션 식별자를 가진, "Cookie" 헤더 필드를, 임의의 후속 HTTP 청크 요청 메세지 또는 HTTP 가입 메세지에 부가할 수 있고, 그래서 전달 노드는 다른 HTTP 가입 메세지들 및 HTTP 요청 및 응답들을 상호 연관시킬 수 있다. 예를 들면, 클라이언트는 SessionID"에 상기 값 abc가 주어진 쿠키 헤더를 포함하는 HTTP 가입 매세지를 발생하고 상기 HTTP 가입 메세지를 전달 노드로 전송할 수 있다(단계906). 유사하게, 클라이언트는 동일한 쿠키 헤더를 포함하는 HTTP 가입 업데이트 메세지를 발생하고, 및 그것을 상기 쿠키 값을 사용하여 이러한 가입 업데이트 메세지를 이전의 가입 메세지와 관련시킬 수 있는, 전달 노드로 전송할 수 있다.
도 10은 본 본 발명의 실시 예에 따른 단일 요청 메세지에 기초하여 다수의 청크를 적응형 스트리밍 클라이언트에게 전달하는 방법을 나타낸다. 콘텐츠 전달 네트워크(CDN)에서, 요청 라우터(router) 또는 전달 노드는 HTTP 응답 메세지를 CDN의 다른 노드로 리디렉트(redirect)할 수 있다. HTTP 가입 메세지의 경우, 단일 HTTP 가입 메세지는 각각 다른 리디렉트를 요구할 수 있는 다수의 HTTP 요청을 언급할 수 있기 때문에, 리디렉션 스킴은 바로 구현될 수 없다. 게다가, 알려진 HTTP 프로토콜 구현은 보내진 요청 당(per sent request) 단일 리디렉션 메세지를 요구한다. 도 10은, 본 발명의 일 측면에 있어서, 알려진 HTTP 리디렉션 원칙이 HTTP 가입 메세지-기반의 응답으로 확장되는 방법을 나타낸다.
이러한 바람직한 실시 예에서, 클라이언트는 두 개의 다른 SVC 층 즉, 베이스 층 및 강화된 층을, 두 청크에 대하여 요청하기 위해, 먼저 제1 HTTP 가입 메세지를 제1 전달 노드로 전송할 수 있다(단계 1002). 제1 전달 노드는 HTTP 가입 메세지를 변환할 수 있고(단계 1004) 및 그것이 상기 두 개의 베이스 층 청크를 클라이언트에게 단지 전달할 수 있는지 결정할 수 있다. 그와 같이, 그것은 상기 두 개의 강화 층 청크(enhancement layer chunks)를 요청하기 위해 제2 전달 노드로 클라이언트를 리디렉트할 수 있다. HTTP 리디렉션 메세지는 적어도 제2 전달 노드 및 청크 템플릿에 대한 리소스 위치 경로의 적어도 일부를 포함하는 리디렉션URL을 포함하는 HTTP 응답 메세지의 형태로 구현될 수 있다. 여기서 제2 전달 노드는 상기 제1 전달 노드에 의해 상기 클라이언트에게 전달될 수 없는 청크들을 전달할 수 있다. HTTP 리디렉션 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 하나 이상의 청크를 정의하기 위해 하나 이상의 제2 청크 템플릿 파라메터를 더 포함할 수 있다.
이러한 특별한 예에서, QID 템플릿 파라메터는 이제 오로지 제2 (강화) 층만을 가리킨다(단계 1006)는 사실을 제외하고는, 제2 청크 템플릿 파라메터는 오리지널 HTTP의 청크 템플릿 파라메터와 동일한 의미(semantics)를 갖는다. HTTP 가입 리디렉션 메세지에 응해, 클라이언트는 강화 층 청크를 요청하기 위한 새로운, 제2 HTTP 가입 메세지를 제 2전달 노드로 전송할 수 있으며(단계 1008), 여기서 HTTP 가입 메세지는 리디렉션 메세지에서 리디렉션 URL 및 제2 청크 템플릿 파라메터에 해당하는 요청 URL 및 청크 템플릿 파라메터를 포함 할 수 있다. 마지막으로, 제1 및 제2 전달 노드는 요청된 콘텐츠를 미리 결정된 순서로 클라이언트에게 전달할 수 있다(단계 1012-1022).
도 11은 본 발명의 실시 예에 따른 매니페스트 파일 및 관련된 HTTP 가입 메세지를 나타낸다. 매니페스트 파일은 콘텐츠 전달 시스템, 즉 CDN(Content Delivery Network) 또는 단일 전달 노드가 바람직하게는 본 발명에 따른 업데이트 및 리디렉션 메세지를 포함하는 HTTP 가입 메세지를 지원하는지를 나타내는, 상기 예에서, supportSubscription(1102)로 표시된, 가입 지원 파라메터를 포함할 수 있다. 지원하는 경우, 클라이언트는, 특히 클라이언트에서 가입 제네레이터는 청크 템플릿에 기초하여 HTTP 가입 메세지, HTTP 가입 업데이트 메세지 및/또는 HTTP 가입 리디렉션 메세지에 대한 응답을 발생시킬 수 있다(단계1106). 다른 실시 예에서(미도시), 본 발명에 따른 업데이트 및/또는 리디렉션 스킴의 지원은 써포트 가입 업데이트 파라메트 및 써포트 리디렉션 파라메터 같은 별도의 파라메터를 기초로 매니페스트 파일에 표시될(signalled) 수 있다. 그러한 HTTP 가입 메세지의 몇 가지 포멧은 도 11에 도시되어 있다.
예를 들면, 일 실시 예에서, 클라이언트는 요청 URL movie/movie_c{Number}_q1.mp4 를 형성하기 위하여 매니페스트 파일에서 청크 템플릿 및 베이스 URLs을 사용할 수 있으며, 여기서 URL 템플릿 movie_c{Number}_q1은 일련의 HTTP청크 요청 메세지를 발생하거나 또는 에뮬레이터 하기 위하여 번역기 모듈에 의해 사용된다. 그 후에, HTTP 가입 메세지(1108)는 요청 URL을 포함하여 형성될 수 있으며, 여기서 HTTP헤더는 특정 HTTP청크 요청 메세지를 위한 청크 번호를 정의하기 위하여 가입 번역기에 의해 사용되는 청크 템플릿 파라메터 넘버 및 그것의 속성을 포함할 수 있다. 다른 실시 예에서, HTTP 가입 메세지(1110)는 요청 URL을 포함하여 형성될 수 있으며, 여기서 하나 이상의 청크 템플릿 파라메터 및 그들의 속성들(이러한 예에서 청크 템플릿 파라메터 넘버)은 URL에, 예를 들면 하나 이상의 쿼리 파라메터의 형태로 부가될 수 있다.
도 12는 본 발명의 다른 실시 예에 따른 매니페스트 파일 및 관련된 HTTP 가입 포멧을 나타낸다. 도 11에서 HTTP 가입 포멧은 HTTP 헤더 필드를 기초로 채용되며, 여기서 서버는, 특히 서버에서 번역기 모듈은 꺽쇠 괄호(또는 어떤 다른 경계 부호) 사이의 변수들을 해당 헤더 필드의 값으로 대체한다. 도12는 대안적 방법을 나타내며, 여기서 직접적 치환이 채용된다. 따라서, 또한 이러한 실시 예에서, 매니페스트 파일은 클라이언트에게 HTTP 가입 메세지가 서버에 의해 지원됨을 표시하기 위한 가입 지원 파라메터(1202)를 포함할 수 있다. 게다가, 매니페스트 파일은 클라이언트에게 어떤 가입 방법을 사용하라고 지시하기 위한 가입 포멧 파라메터(1204)를 포함할 수 있다. 이러한 경우에 이 방법은 HTTP 가입 메세지의 요청 URL의 URL템플릿에서 하나 이상의 청크 템플릿 파라메터 필드는 직접 그들의 각각의 속성들로 대체되어야 함을 가리키는 치환이다(이 경우 $Number$ 는 직접 "1;1,2;2s"로 대체됨).
본 명세서에서 HTTP 메세지의 URLs에서 특정 아스키(ascii) 문자(";" 및 "," 같은)를 사용할 때 도 11 및 도 12에서와 같이), 그들의 인코드된 값들을 사용할 수 있음을 알아야 한다. 또한, 도 1 내지 도 12에서 실시 예들은 청크 템플릿 파라메터 및 청크 템플릿 둘 다를 포함하는 HTTP 가입 메세지를 도시하지만, 본 발명은 또한 HTTP 가입 메세지로 네트워크 노드로 보내지는 청크 템플릿 파라메터와는 별도로 네트워크 노드(즉, 전달 노드 또는 캐쉬)에 청크 템플릿이 제공되는 실시 예들을 포함함을 제시한다.
도 13은 도 1 내지 도 12를 참조하여 설명한 시스템 및 방법에 사용될 수 있는 바람직한 데이터 프로세싱 시스템을 도시하는 블럭 다이야그램이다. 데이터 프로세싱 시스템(1300)은 시스템 버스(1306)를 통해 메모리 요소(1304)에 결합되는 적어도 하나의 프로세서(1302)를 포함할 수 있다. 그와 같이, 데이터 프로세싱 시스템은, 메모리 요소(1304) 내에 프로그램 코드를 저장할 수 있다. 또한, 프로세서(1302)는 시스템 버스(1306)을 통해 메모리 요소(1304)로부터 액세스되는 프로그램 코드를 실행할 수 있다. 일 측면에서, 데이터 프로세싱 시스템은 프로그램 코드를 저장하고 및/또는 실행하는데 적합한 컴퓨터로서 구현될 수 있다. 그러나, 데이터 프로세싱 시스템(1300)은 본 명세서 내에 설명된 기능들을 수행할 수 있는 프로세서 및 메모리를 포함하는 임의의 시스템 형태로 구현될 수 있다.
메모리 요소(1304)는 예를 들면, 로컬 메모리(1308) 및 하나 이상의 벌크 저장 장치(1310) 같은 하나 이상의 물리적인 메모리 장치를 포함할 수 있다. 로컬 메모리는 프로그램 코드의 실제 실행 동안 일반적으로 사용되는 랜덤 액세스 메모리 또는 다른 비-영속적 메모리(non-persistent memory) 장치를 가리킬 수 있다. 벌크 저장 장치는 하드 드라이브 또는 다른 영속적 데이터 저장 장치로 구현될 수 있다. 프로세싱 시스템(1300)은 또한 실행 동안 프로그램 코드가 벌크 저장 장치(1310)로부터 검색되어야 하는 횟수를 줄이기 위하여 적어도 일부 프로그램 코드의 일시적인 저장을 제공하는 하나 이상의 캐쉬 메모리(미도시)를 포함할 수 있다.
입력 장치(1312) 및 출력 장치(1314)로 나타낸 입력/출력(I/O) 장치는 선택적으로 데이터 프로세싱 시스템에 결합될 수 있다. 입력 장치의 예는 예를 들면, 키보드, 마우스와 같은 포인팅 디바이스, 또는 그와 유사한 것들을 포함할 수 있으나, 그에 국한되지는 않는다. 출력 장치는 예를 들면, 모니터 또는 디스플레이, 스피커, 또는 그와 유사한 것들을 포함할 수 있으나, 그에 국한되지는 않는다. 입력 장치 및/또는 출력 장치는 직접적으로 또는 중간의 I/O 제어기(controller)를 통해 데이터 프로세싱 시스템과 결합될 수 있다. 네트워크 어댑터(1316)는 또한 그것이 다른 시스템, 컴퓨터 시스템, 원격 네트워크 장치, 및 또는 중간의 사적 또는 공적 네트워크를 통해 원격 저장 장치에 결합될 수 있게 하기 위해 데이터 프로세싱 시스템과 결합될 수 있다. 네트워크 어댑터는 상기 시스템, 장치 및/또는 네트워크에 의해 전송되는 데이터를 수신하기 위한 데이터 수신기 및 상기 시스템, 장치 및/또는 네트워크로 데이터를 전송하기 위한 데이터 전송기를 포함할 수 있다. 모뎀, 케이블 모뎀, 및 Ethernet 카드는 데이터 프로세싱 시스템(3150)과 함께 사용될 수 있는 네트워크 어댑터의 다른 유형의 예들이다.
도 13에 도시된 바와 같이, 메모리 요소(1304)는 어플리케이션(1318)을 저장할 수 있다. 데이터 프로세싱 시스템(1300)은 어플리케이션의 실행을 용이하게 할 수 있는 오퍼레이팅 시스템(미도시)을 또한 실행할 수 있다. 어플리케이션은, 실행 가능한 프로그램 코드의 형태로 구현되었기 때문에, 데이터 프로그램 시스템(1300), 즉 프로세서(1302)에 의해 실행될 수 있다. 어플리케이션의 실행에 응해, 데이터 프로세싱 시스템은 여기서 더 상세히 설명할 하나 이상의 동작을 수행하도록 구성될 수 있다.
일 측면에 있어서, 예를 들면, 데이터 프로세싱 시스템(1300)은 클라이언트 데이터 프로세싱 시스템을 나타낸다. 그러한 경우에 있어서, 어플리케이션(1318)은 실행되면, 여기서 "클라이언트"를 참조하여 설명한 다양한 기능들을 수행할 데이터 프로세싱 시스템(1100)을 구성하는 클라이언트 어플리케이션을 나타낸다. 클라이언트의 예는 퍼스널 컴퓨터, 휴대용 컴퓨터, 모바일 폰, 또는 그와 유사한 것들을 포함할 수 있으나, 그에 국한되지는 않는다.
여기서 사용된 용어는 특정한 실시 예들을 설명하기 위한 목적일 뿐 본 발명을 제한할 의도는 아니다. 여기서 사용된, 단수 형태 "a," "an," 및 "the"는 문맥이 달리 분명하게 나타내지 않으면 또한 복수형도 포함할 의도로 사용되었다. 용어 "포함한다" 및/또는 "포함하는" 은, 본 명세서에서 사용될 때, 명시된 특징들, 정수들, 단계들, 요소들, 및/또는 컴포넌트들의 존재를 지정하나, 그러나 하나 이상의 다른 특징들, 정수들, 단계들, 요소들, 컴포넌트들 및/또는 그것들의 그룹들의 존재 또는 추가를 배제하지는 않는다.
아래 청구항에서 해당하는 구조, 재료, 동작 및 모든 수단 또는 단계 플러스 기능 요소들은 구체적으로 청구된 다른 청구 요소들과 결합하여 기능을 수행하기 위한 임의의 구조, 재료 또는 동작을 포함하도록 의도되었다. 본 발명의 기술은 도시 및 기술의 목적으로 제시되었으나, 공개한 형태로 본 발명을 철저히 제한할 의도는 아니다. 해당 분야의 통상의 기술자에게는 본 발명의 범주 및 정신을 벗어남이 없이 많은 수정과 변형이 가능함이 명백할 것이다. 실시 예들은 본 발명의 원칙 및 실질적인 적용을 가장 잘 설명하기 위하여 선택되고 설명되었고 및 다양한 실시 예들에 대해서는 특정 사용에 적합하다고 생각되는 다양한 수정들로 인해 해당 기술 분야의 통상의 기술자들이 본 발명을 잘 이해할 수 있도록 선택되고 설명되었다.
도 14는 본 발명의 실시 예에 따른 하나의 청크 요청 메세지에 기초하여 다수 청크를 적응형 스트리밍 클라이언트에게 전달하기 위한 방법을 도시한 것이다. 이러한 특정 구현에서, 도 2A에서와 동일한 교환은 HTTP 버전 1.1 보다는 오히려 HTTP 버전 2를 사용하여 도시된다. HTTP 2가 데이터의 푸시-기반(push-based) 전달을 지원하므로, 그것은 자체로 단일 요청에 기초한 멀티 세그먼트의 전달에 매우 적합하다. HTTP 2에서, 클라이언트와 서버 사이의 통신은 Frames(HTTP 2메세지로 언급될 수 있는)를 사용하여 수행되고, 하나 이상의 스트림을 통해 전송된다. 단계(1406)에서, ID(0x3)를 가진, 새로운 스트림은 그것이 스트림 식별자(0x3)를 가지고 전달 노드로 HEADERS Frames(HTTP (2) 요청 메세지)을 전송할 때 클라이언트에 의하여 사실상 생성된다. HEADERS Frame 대신에, 용어 HEADERS Frame 메세지를 사용할 수 있다. "스트림 식별자" 파라메터가 본 발명의 실시 예에 따른 세션 식별자(즉. 기능(functions))로 사용될 수 있다.
요청 파라메터는 도 2A의 그것들과 유사하나, HTTP 2 문법(syntax)을 사용하여 나타낸다. HTTP 2는 근본적으로 바이너리 포맷이나, 메세지는 명확성을 위해 일반 텍스트로 나타냄을 유의해야 한다. 단계(1410)에서, 전달 노드는 다시 한번 더 변환 단계를 수행한다. 이어서 그것은 요청된 세그먼트를 클라이언트에게 전송한다(단계 1412-1424). 각 세그먼트는 스트림(0x3) 에 전송된 데이터(DATA) 프레임(즉. HTTP(2) 응답 메세지)이다. 데이터(DATA) 프레임 대신에 용어 데이터 프레임 메세지를 사용할 수 있다. 마지막으로, 최종 데이터 프레임이 전송될 때, 전달 노드는 요청된 모든 세그먼트가 전달되었음을 알리기 위해 END_STREAM 플래그(flag)를 세트한다.
도 15는 본 발명의 실시 예에 따른 두 개의 (청크) 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에게 다수의 청크를 제공하기 위한 방법을 도시한 것이다. 이러한 특정 실시 예에서, 가입 요청(즉. 다수의 청크의 전달을 위한 요청 메세지)이 내장된 HTTP 2 설비(facilities)를 사용하여 어떻게 취소 및/또는 변경될 수 있는지를 도시한다. 구체적으로, 심지어 몇 개의 청크가 이미 전달된 후에도, 오리지널 요청(즉 단계(1506)의 HEADERS Frame)으로부터의 스트림 식별자와 동일한 스트림 식별자를 가진 RST_STREAM 프레임을 단계(1516)에서 전송함에 의하여 클라이언트는 상기 요청을 쉽게 취소할 수 있다. 이러한 RST STREAM 프레임 메세지(HTTP 취소 메세지)는 스트림을 닫을(close) 것이고, 전달 노드가 임의의 추가 세그먼트(청크)를 전송하는 것을 방지한다. 결과적으로, 클라이언트는 새로운 스트림을 자유롭게 열고 (제2) HEADERS Frame의 형태로 다른 (가입) 요청(즉, HTTP 업데이트 메세지)을 자유롭게 전송한다.
도 14 및 15는 본 발명의 실시 예가 HTTP 2에 기반하여 어떻게 구현될 수 있는지를 나타낸 것이다. HTTP 2에 대한 추가적인 대안으로, 본 발명의 실시 예는 또한 웹소켓(WebSocket) 프로토콜에 기초한 메세지, 및 WebSocket 연결(connection)을 사용하여 구현될 수 있다. 웹소켓(WebSocket)은 클라이언트와 서버 사이에 전이중통신방식(full duplex communication)을 지원한다. 통신은 프레임을 사용하여 수행된다. 프레임은 텍스트 기반 또는 바이너리 페이로드 데이터를 포함할 수 있다. 이러한 데이터의 문법(syntax) 및 의미(semantics)는 웹소켓 프로토콜을 사용하는 어플리케이션에 의해 자유롭게 선택될 수 있다. 그와 같이, 본 발명의 실시 예에 따라, HTTP 2예에 대해 사용된 유사한 문법(syntax)이 웹소켓 기반 (가입) 요청 메세지에 대해 채택될 수 있다. 본 발명의 실시 예에 따른 (가입)요청 메세지로서 구성된 웹소켓 프레임의 페이로드(payload)는 예를 들어 아래의 형태를 취할 수 있다:
> subscription_id = 3
> method = GET
> path = movie/movie_c{number}_q{bandwidth}.mp4
> number = 2;1,2;2s
> bandwidth = 1;1-3;0s
HTTP 2와 대조적으로, 그러한 "가입_id, (subscription_id)" 변수가 요청을 응답과 관련시키기 위해 메세지의 페이로드에 부가되므로, WebSocket 메세지는 스트림과 관련되지 않는다. 따라서 "가입_id" 파라메터는 본 발명의 실시 예에 따른 세션 식별자로 사용될 수 있다. 유사하게는, 가입 취소 메세지는 아래의 문법(syntax)의 예로 정의될 수 있다:
> subscription_id = 3
> method = CANCEL
유사하게 WebSocket 업데이트 메세지는, method= UPDATE로 정의될 수 있고, 및 새로이 정의된 청크(세그먼트)의 컬렉션(collection)을 더 포함하는 것으로, 정의될 수 있다.
서버(즉. 전달 노드) 측으로부터, 세그먼트 데이터 메세지(즉. 세그먼트 또는 청크를 포함하고, 또한 (WebSocket) 응답 메세지로 언급되는)는 아래 형태(syntax)를 취할 수 있다:
> subscription_id = 3
> method = SEGMENT
> last_segment = 1
> <segment data>
상기 "last_segment" 변수는 선택적이며 HTTP 2 예에서의 END_STREAM 비트와 동일한 목적으로 이용될 수 있다.

Claims (19)

  1. 단일 요청 메세지에 기초하여, 적응형 스트리밍 클라이언트(108, 302)에 의한 복수의 청크를 요청하는 방법에 있어서,
    상기 복수의 청크는 청크 식별자에 의해 정의된 청크를 클라이언트에게 전달하기 위해 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자를 포함하는 매니페스트 파일(230)에 기초하여 정의되고,
    적어도 하나의 프로세서를 포함하고 컴퓨터 판독 가능한 프로그램 코드을 실행하는 클라이언트에게서의 상기 방법은 :
    상기 매니페스트 파일에 기초하여, 제1 복수의 청크들을 요청하기 위하여, HTTP GET 메세지 또는 HTTP 헤더 프레임 메세지 또는 웹소켓 기반 메시지 중 하나인 제1 요청 메세지를 결정하는 단계를 포함하고, 상기 제1 요청 메세지는 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터를 포함하며;
    상기 제1 요청 메세지(328)를 제1 네트워크 노드로 전송하는 단계를 포함하고, 상기 제1 네트워크 노드는 복수의 제1 청크 식별자로서 상기 하나 이상의 제1 청크 템플릿 파라메터와 제1 청크 템플릿에 기초한 상기 복수의 제1 청크와 관련된 복수의 제1 URL로 복수의 제1 청크 식별자들을 결정하도록 구성되고, 제1 청크 템플릿은 하나 이상의 청크 템플릿 파라메터 필드를 포함하며 및,
    상기 제1 청크 템플릿과 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정된 복수의 제1 청크 식별자들 중 하나와 관련된 청크를 포함하는 적어도 하나의 응답 메세지(306, 324)를 수신하는 단계를 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 네트워크 노드는: 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 상기 복수의 제1 청크 중 적어도 일부와 관련된 미리 결정된 세트(predetermined set )의 청크 요청 메세지를 발생하거나 또는 에뮤레이트(emulate)하고; 및 상기 청크 요청 메세지의 적어도 하나에 대하여, 청크를 포함하는 응답 메시지를 상기 클라이언트에게 전송하도록 구성됨을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  4. 제1항 또는 제3항에 있어서,
    상기 제1 요청 메세지를 결정하는 단계는: 상기 매니페스트 파일의 상기 하나 이상의 청크 식별자의 적어도 일부에 기초하여 상기 청크 템플릿 파라메터를 결정하는 단계를 포함하며; 청크 템플릿 파라메터는 하나 이상의 청크 수(numbers) 또는 청크 수의 레인지, 하나 이상의 청크 프레젠테이션 타임 또는 프레젠테이션 시간 주기, 하나 이상의 청크 품질 표현 또는 청크 품질 프레젠테이션 레인지, 하나 이상의 청크 비트레이트 또는 청크 비트레이트 레인지(range), 하나 이상의 청크 사이즈 또는 청크 사이즈의 레인지 중에서 적어도 하나와 관련됨을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  5. 제1항 또는 제3항에 있어서,
    제1 요청 메세지의 요청 URL은 상기 청크 템플릿 및 상기 제1 네트워크 노드와 관련된 리소스 위치 경로를 포함하며; 또는, 상기 하나 이상의 청크 템플릿 파라메터의 적어도 일부는 요청 메세지에 부가되고, 요청 URL에 삽입된 상기 제1 요청 메세지의 헤더에 삽입되거나; 또는 쿼리 스트링(query string)으로 상기 요청에 부가됨을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  6. 제1항 또는 제3항에 있어서,
    제1 요청 메세지를 결정하는 단계는: 상기 제1 요청 메세지에 세션 식별자를 삽입하는 단계를 포함하며, 상기 세션 식별자는 상기 클라이언트 및 상기 네트워크 노드 중 적어도 하나에게 상기 제1 요청 메세지가 하나 이상의 요청 메세지 및 응답 메세지 중 적어도 하나에 링크되도록 허용하고, 요청 URL에 대한 토큰으로서 또는 상기 제1 요청 메세지의 헤더에서 쿠키(cookie) 값으로서 부가되는 상기 세션 식별자에 링크되도록 허용함을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  7. 제1항 또는 제3항에 있어서,
    상기 방법은: 제2 요청 메세지를 결정하는 단계를 더 포함하며, 상기 제2 요청 메세지는 제2 청크 템플릿 및 하나 이상의 제2 청크 템플릿 파라메터에 기초하여 상기 제1 네트워크 노드에 의하여 결정되는 복수의 제2 청크 식별자에 기초하여 상기 복수의 제1 청크 식별자의 적어도 일부를 업데이트 하도록 상기 제1 네트워크 노드에게 지시하도록 구성됨을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  8. 제7항에 있어서,
    상기 제2 요청 메시지는 제2 요청 메시지에 기초하여 제1 요청 메시지를 업데이트 하도록 제1 네트워크 노드에 지시하기 위한 업데이트 파라메터를 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  9. 제1항 또는 제3항에 있어서,
    상기 방법은 :
    상기 제1 네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 적어도 하나의 응답 메세지를 발생하는 상기 제1 네트워크 노드를 포함하고, 상기 응답 메시지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함하며; 상기 응답 메세지는 상기 제2 네트워크 노드와 관련된 리디렉션 URL을 추가로 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  10. 단일 요청 메세지에 기초하여, 적어도 하나의 적응형 스트리밍 클라이언트인 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드에 있어서,
    상기 네트워크 노드는: 일체로 컴퓨터 판독 가능한 프로그램 코드가 구현된 적어도 하나의 컴퓨터 판독 가능한 저장 매체, 및 상기 컴퓨터 판독 가능한 저장 매체에 결합된 적어도 하나의 프로세서를 포함하며, 상기 컴퓨터 판독 가능한 프로그램 코드 실행에 응답하여, 상기 적어도 하나의 프로세서가 실행 가능한 동작들을 수행하도록 구성되며, 동작들은:
    상기 클라이언트에게 복수의 제1 청크의 전달을 요청하기 위하여, 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터를 포함하는 제1 요청 메세지를 수신하는 동작을 포함하며;
    하나 이상의 제1 청크 템플릿 파라메터 및 제1 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련된 복수의 제1 청크 식별자를 결정하는 동작을 포함하고, 상기 제1 청크 템플릿은 하나 이상의 청크 템플릿 파라메터 필드를 포함하며; 및
    적어도 하나의 응답 메세지를 상기 클라이언트에게 전송하는 동작을 포함하며, 상기 응답 메시지는 상기 제1 청크 템플릿 및 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정된 상기 청크 식별자들 중 하나와 관련된 청크를 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 적어도 하나의 적응형 스트리밍 클라이언트인 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드.
  11. 제10항에 있어서,
    상기 제1 청크 템플릿은 URL 청크 템플릿임을 특징으로 하는 단일 요청 메세지에 기초하여 적어도 하나의 적응형 스트리밍 클라이언트인 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드.
  12. 제10항 또는 제11항에 있어서,
    상기 실행 가능한 동작은:
    제2 요청 메세지를 수신하는 동작을 더 포함하며, 상기 제2 요청 메세지는 네트워크 노드에게 제2 청크 템플릿 및 상기 하나 이상의 제2 청크 템풀릿 파라메터에 기초하여 제1 네트워크 노드에 의해 결정되는 복수의 제2 청크 식별자를 기초로 하여 복수의 제1 청크 식별자들의 적어도 일부를 업데이트 하도록 지시하도록 구성됨을 특징으로 하는 단일 요청 메세지에 기초하여 적어도 하나의 적응형 스트리밍 클라이언트인 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드.
  13. 제10항 또는 제11항에 있어서,
    상기 실행 가능한 동작은:
    상기 제1 요청 메세지에 응답하여, 제1 네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 응답 메세지를 발생하는 동작을 포함하며, 상기 응답 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함하고; 또는,
    상기 제1 요청 메세지에 응하여, 상기 제1 네트워크 노드에 의해 상기 클라이언트에게 전달될 수 없는 하나 이상의 청크와 관련된 제2 요청 메세지를 발생하는 동작을 포함하고, 상기 제2 요청 메세지는 상기 제1 네트워크 노드에 의해 전달될 수 없는 상기 하나 이상의 청크를 전달할 수 있는 제2 네트워크 노드와 관련된 리소스 위치 경로를 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 적어도 하나의 적응형 스트리밍 클라이언트인 클라이언트에게 복수의 청크를 전달하도록 구성된 네트워크 노드.
  14. 단일 요청 메세지에 기초하여 복수의 청크를 요청하도록 구성된 적응형 스트리밍 클라이언트를 포함하는 사용자 장치에 있어서,
    매니페스트 파일에 기초하여 정의되는 상기 청크들은 상기 클라이언트에게 상기 청크 식별자에 의해 정의된 청크를 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자를 포함하며, 사용자 장치는:
    일체로 구현된 프로그램의 적어도 일부, 상세 소프트웨어 프로그램을 구비한 컴퓨터 판독 가능한 저장 매체; 및,
    일체로 구현된 컴퓨터 판독 가능한 프로그램 코드를 구비한 컴퓨터 판독 가능한 저장 매체, 및 컴퓨터 판독 가능한 저장 매체에 결합된 프로세서를 포함하며, 컴퓨터 판독 가능한 프로그램 코드 실행에 응답하여, 프로세서가 실행 가능한 동작들은:
    상기 매니페스트 파일을 기초로 복수의 제1 청크를 요청하기 위한 제1 요청 메세지를 결정하는 동작을 수행하고, 상기 제1 요청 메세지는 제1 청크 템플릿과 하나 이상의 제1 청크 템플릿 파라메터를 포함하며;
    상기 제1 요청 메세지를 제1 네트워크 노드에게 전송하는 동작을 수행하고, 상기 제1 네트워크 노드는 복수의 제1 청크 식별자로, 상기 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 복수의 제1 청크와 관련된 복수의 제1 청크 식별자를 결정하도록 구성되고, 제1 청크 템플릿은 하나 이상의 청크 템플릿 파라메터 필드를 포함하며; 및
    상기 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자 중 하나와 관련된 청크를 포함하는 적어도 하나의 응답 메세지를 수신하는 동작을 포함함을 특징으로 하는 단일 요청 메세지에 기초하여 복수의 청크를 요청하도록 구성된 적응형 스트리밍 클라이언트를 포함하는 사용자 장치.
  15. 사용자 장치에 의해 사용되는 매니페스트 파일의 적어도 일부를 저장하기 위한 비-일시적(non-transitory) 컴퓨터 판독 가능한 저장 매체에 있어서,
    사용자 장치는 단일 요청 메세지에 기초하여 복수의 청크를 요청하기 위하여 구성된 적응형 스트리밍 클라이언트를 포함하고, 상기 청크들은 상기 매니페스트 파일에 기초하여 정의되며, 상기 매니페스트 파일은:
    상기 청크 식별자에 의해 정의된 청크를 상기 클라이언트에게 전달하기 위한 적어도 하나의 전달 노드를 결정하기 위한 청크 식별자와;
    상기 적어도 하나의 전달 노드는 하나 이상의 제1 청크 템플릿 파라메터 및 제1 청크 템플릿에 기초하여 상기 복수의 제1 청크와 관련한 복수의 제1 청크 식별자를 결정하도록 구성됨을 표시하기 위한 가입 지원 파라메터; 및 적어도 하나의 응답 메세지를 상기 클라이언트에게 전송하고, 상기 응답 메세지는 상기 제1 청크 템플릿 및 하나 이상의 제1 청크 템플릿 파라메터에 기초하여 결정되는 상기 청크 식별자 중 하나와 관련된 청크를 포함함을 특징으로 하는 비-일시적 컴퓨터 판독 가능한 저장 매체.
  16. 제1항 또는 제3항에 따른 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법의 단계들이 메모리에 탑재되어 컴퓨터에서 실행될 때 구성되는 소프트웨어 코드 부분을 포함하는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 기록 매체.
  17. 제1항 또는 제3항에 있어서,
    복수의 상기 제1 청크들은 파일들로 독립적으로 저장 가능한 세그먼트들임을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
  18. 제14항에 있어서,
    복수의 상기 제1 청크들은 파일들로 독립적으로 저장 가능한 세그먼트들임을 특징으로 하는 단일 요청 메세지에 기초하여 복수의 청크를 요청하도록 구성된 적응형 스트리밍 클라이언트를 포함하는 사용자 장치.
  19. 제6항에 있어서,
    상기 제1 요청 메세지는 HTTP 헤더 프레임 메세지이며, 제2 요청 메세지 전송에 앞서 HTTP 2 취소 메세지가 전송되어, 상기 제1 요청 메시지로 요청되었으나, 아직 전송되지 않은 청크의 전송을 먼저 취소함을 특징으로 하는 단일 요청 메세지에 기초하여 적응형 스트리밍 클라이언트에 의한 복수의 청크를 요청하는 방법.
KR1020167023472A 2014-02-13 2015-02-12 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청 KR101924703B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP14155014 2014-02-13
EP14155014.5 2014-02-13
EP14173839.3 2014-06-25
EP14173839 2014-06-25
PCT/EP2015/052950 WO2015121342A1 (en) 2014-02-13 2015-02-12 Requesting multiple chunks from a network node on the basis of a single request message

Publications (2)

Publication Number Publication Date
KR20160114203A KR20160114203A (ko) 2016-10-04
KR101924703B1 true KR101924703B1 (ko) 2019-02-20

Family

ID=52484472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023472A KR101924703B1 (ko) 2014-02-13 2015-02-12 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청

Country Status (5)

Country Link
US (1) US11477262B2 (ko)
EP (1) EP3105903B1 (ko)
JP (2) JP6698553B2 (ko)
KR (1) KR101924703B1 (ko)
WO (1) WO2015121342A1 (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105379295A (zh) 2013-07-03 2016-03-02 皇家Kpn公司 分段内容的流送
KR101924703B1 (ko) 2014-02-13 2019-02-20 코닌클리즈케 케이피엔 엔.브이. 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청
US10298984B2 (en) * 2014-03-17 2019-05-21 Telefonaktiebolaget Lm Ericsson (Publ) Network PVR
US20150271233A1 (en) * 2014-03-20 2015-09-24 Samsung Electronics Co., Ltd. Method and apparatus for dash streaming using http streaming
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
GB2534849A (en) * 2015-01-28 2016-08-10 Canon Kk Client-driven push of resources by a server device
US9826016B2 (en) 2015-02-24 2017-11-21 Koninklijke Kpn N.V. Fair adaptive streaming
US20180115796A1 (en) * 2015-03-26 2018-04-26 Lg Electronics Inc. Broadcast signal transmitting device, broadcast signal receiving device, broadcast signal transmitting method, and broadcast signal receiving method
US10469919B2 (en) * 2015-04-07 2019-11-05 Lg Electronics Inc. Broadcast signal transmission apparatus, broadcast signal reception apparatus, broadcast signal transmission method, and broadcast signal reception method
KR102462861B1 (ko) 2015-08-05 2022-11-02 퀄컴 인코포레이티드 모바일 cdn 을 위한 심층 패킷 검사 표시
CN108141465B (zh) * 2015-08-11 2021-07-16 高通股份有限公司 Http知悉型内容高速缓存
US10257284B2 (en) * 2015-12-30 2019-04-09 Samsung Electronics Co., Ltd. Broadcasting local function templates to proximate mobile computing devices
KR101743228B1 (ko) * 2016-01-22 2017-06-05 네이버 주식회사 스트리밍 장치 및 그 방법, 이를 이용한 스트리밍 서비스 시스템 및 컴퓨터로 판독 가능한 기록매체
CN114363667B (zh) * 2016-02-01 2024-01-02 松下电器(美国)知识产权公司 客户端、服务器、接收方法及发送方法
CN108605154B (zh) * 2016-02-03 2022-02-25 联发科技股份有限公司 一种消息交互的方法和客户端设备
CN107040505B (zh) * 2016-02-04 2021-01-26 中兴通讯股份有限公司 媒体数据传输方法及装置
WO2017138387A1 (ja) * 2016-02-12 2017-08-17 ソニー株式会社 情報処理装置および情報処理方法
US10313418B2 (en) * 2016-06-20 2019-06-04 Ramp Holdings, Inc. Chunked HTTP video cache routing
US10264044B2 (en) * 2016-08-29 2019-04-16 Comcast Cable Communications, Llc Apparatus and method for sending content as chunks of data to a user device via a network
JP2018045674A (ja) * 2016-09-07 2018-03-22 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム
WO2018047512A1 (ja) * 2016-09-07 2018-03-15 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム
US10623450B2 (en) * 2016-12-01 2020-04-14 Accenture Global Solutions Limited Access to data on a remote device
US10476943B2 (en) 2016-12-30 2019-11-12 Facebook, Inc. Customizing manifest file for enhancing media streaming
US10440085B2 (en) * 2016-12-30 2019-10-08 Facebook, Inc. Effectively fetch media content for enhancing media streaming
CN110476401B (zh) * 2017-03-29 2022-04-15 三星电子株式会社 多媒体服务内容提供装置和方法
US10819756B2 (en) * 2017-04-10 2020-10-27 OpenLegacy Technologies Ltd. Atomic transaction over non-persistent protocol(s)
US11659057B2 (en) * 2017-04-19 2023-05-23 Comcast Cable Communications, Llc Methods and systems for content delivery using server push
US10652166B2 (en) * 2017-06-27 2020-05-12 Cisco Technology, Inc. Non-real time adaptive bitrate recording scheduler
CN107483972B (zh) * 2017-07-24 2019-05-07 平安科技(深圳)有限公司 一种音视频的直播处理方法、存储介质和一种移动终端
US10567819B2 (en) * 2017-09-07 2020-02-18 At&T Intellectual Property I, L.P. Method and system for sponsoring data on a network
US10838924B2 (en) * 2017-10-02 2020-11-17 Comcast Cable Communications Management, Llc Multi-component content asset transfer
CN108134713B (zh) * 2017-12-19 2020-07-10 新华三技术有限公司 一种通信方法及装置
US11323498B2 (en) 2017-12-21 2022-05-03 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for delivering content
JP6885351B2 (ja) * 2018-02-02 2021-06-16 日本電信電話株式会社 品質予測装置、品質予測方法及びプログラム
US10891100B2 (en) * 2018-04-11 2021-01-12 Matthew Cohn System and method for capturing and accessing real-time audio and associated metadata
US10965966B1 (en) * 2018-07-17 2021-03-30 Amazon Technologies, Inc. Dynamic content insertion
US10951960B1 (en) * 2018-07-17 2021-03-16 Amazon Technologies, Inc. Dynamic content insertion
JP7262191B2 (ja) * 2018-08-31 2023-04-21 キヤノン株式会社 電子機器及びその制御方法及びプログラム及び情報処理システム
US10972795B2 (en) 2018-09-10 2021-04-06 Slack Technologies, Inc. Dynamic object update subscriptions based on user interactions with an interface
US10863221B2 (en) * 2018-09-10 2020-12-08 Slack Technologies, Inc. Dynamic object update subscriptions based on user interactions with an interface
US20200089779A1 (en) * 2018-09-19 2020-03-19 Twitter, Inc. Progressive API Responses
US11647241B2 (en) * 2019-02-19 2023-05-09 Sony Interactive Entertainment LLC Error de-emphasis in live streaming
US20200344510A1 (en) * 2019-04-25 2020-10-29 Comcast Cable Communications, Llc Dynamic Content Delivery
WO2020243533A1 (en) * 2019-05-31 2020-12-03 Apple Inc. Systems and methods for performance data streaming, performance data file reporting, and performance threshold monitoring
EP4111700A4 (en) * 2020-02-28 2024-03-20 Hulu Llc IDENTIFICATION OF ELEMENTS IN A GROUP TO REPLACE DYNAMIC ELEMENTS
JP7443544B2 (ja) 2020-02-28 2024-03-05 フル・エルエルシー 遠隔要素分解のクライアントベースの記憶装置
US11553017B1 (en) 2021-03-09 2023-01-10 Nokia Technologies Oy Timed media HTTP request aggregation
KR20230013461A (ko) 2021-07-19 2023-01-26 한화테크윈 주식회사 영상 저장 장치, 영상 모니터링 장치 및 그 위에서 실행되는 방법
US11863607B2 (en) * 2021-10-06 2024-01-02 Netflix, Inc. Techniques for client-controlled pacing of media streaming
CN114025016B (zh) * 2021-10-18 2024-03-15 中国联合网络通信集团有限公司 一种数据转发方法、装置及存储介质

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153244A (ja) 1997-08-01 1999-02-26 Fujitsu Ltd 情報提供システム
US6553376B1 (en) 1998-11-18 2003-04-22 Infolibria, Inc. Efficient content server using request redirection
JP2001101061A (ja) 1999-09-27 2001-04-13 Ddi Corp キャッシュサーバ
WO2002044905A1 (fr) 2000-11-29 2002-06-06 Flex-Firm Inc. Procede de gestion de session pour la fourniture de contenu
US6938005B2 (en) 2000-12-21 2005-08-30 Intel Corporation Digital content distribution
US6839865B2 (en) 2000-12-29 2005-01-04 Road Runner System and method for multicast stream failover
US7356838B2 (en) 2001-06-06 2008-04-08 Yahoo! Inc. System and method for controlling access to digital content, including streaming media
US20030097443A1 (en) 2001-11-21 2003-05-22 Richard Gillett Systems and methods for delivering content over a network
US9137324B2 (en) 2002-04-10 2015-09-15 International Business Machines Corporation Capacity on-demand in distributed computing environments
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US7289519B1 (en) 2002-05-01 2007-10-30 Cisco Technology, Inc. Methods and apparatus for processing content requests using domain name service
US8090761B2 (en) 2002-07-12 2012-01-03 Hewlett-Packard Development Company, L.P. Storage and distribution of segmented media data
JP2004310593A (ja) 2003-04-09 2004-11-04 Mitsubishi Electric Corp コンテンツ提供方法およびシステム
US20050071881A1 (en) 2003-09-30 2005-03-31 Deshpande Sachin G. Systems and methods for playlist creation and playback
US7889697B2 (en) 2004-05-04 2011-02-15 Qualcomm Incorporated Method and apparatus for content delivery to a mobile device
JP2006171822A (ja) 2004-12-13 2006-06-29 Nippon Telegr & Teleph Corp <Ntt> コンテンツ配信方法
JP2008544690A (ja) 2005-06-22 2008-12-04 トムソン ライセンシング 経路情報を使用するマルチキャスト・ダウンロード
US8321690B2 (en) 2005-08-11 2012-11-27 Microsoft Corporation Protecting digital media of various content types
US20070242666A1 (en) 2006-04-13 2007-10-18 Alcatel Apparatus for managing requests for data in a communication network
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
CN101201827B (zh) 2006-12-14 2013-02-20 阿里巴巴集团控股有限公司 一种网页显示的方法和系统
US20080189429A1 (en) 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
CN101146110B (zh) 2007-09-25 2011-06-29 深圳市迅雷网络技术有限公司 一种播放流媒体的方法
JP4561804B2 (ja) 2007-10-09 2010-10-13 ブラザー工業株式会社 サムネイル配信システム、サーバ、クライアント、およびプログラム
CN101141627A (zh) 2007-10-23 2008-03-12 深圳市迅雷网络技术有限公司 一种流媒体文件的存储系统及方法
WO2009075033A1 (ja) 2007-12-13 2009-06-18 Fujitsu Limited パケット通信システム及びパケット通信方法並びにノード及びユーザ端末
JP5011092B2 (ja) 2007-12-27 2012-08-29 三菱電機株式会社 データダウンロードシステム及びデータダウンロード方法
WO2009095078A1 (en) 2008-01-31 2009-08-06 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for obtaining media over a communications network
JP2009187466A (ja) 2008-02-08 2009-08-20 Ntt Docomo Inc プロキシシステム及び中継方法
US8028081B2 (en) 2008-05-23 2011-09-27 Porto Technology, Llc System and method for adaptive segment prefetching of streaming media
EP2131362A1 (en) 2008-06-06 2009-12-09 Koninklijke KPN N.V. Method and system for managing content data
JP5223480B2 (ja) 2008-06-13 2013-06-26 富士通株式会社 コンテンツ配信方法及び通信端末装置
US8938548B2 (en) 2008-12-23 2015-01-20 At&T Mobility Ii Llc Streaming enhancements through pre-fetch background
US20100169303A1 (en) 2008-12-31 2010-07-01 David Biderman Playlists for real-time or near real-time streaming
US9225794B2 (en) 2009-03-31 2015-12-29 Google Inc. Adaptive DNS pre-resolution
GB2472985A (en) 2009-08-24 2011-03-02 Christopher James Boulton Media Resource Broker Location Function
JP2011053244A (ja) 2009-08-31 2011-03-17 Sumitomo Bakelite Co Ltd 偏光板、偏光レンズおよび防眩製品
EP2474161B1 (en) 2009-09-03 2015-07-01 Koninklijke KPN N.V. Determination and pre-loading of follow-up content at a receiving equipment
US8392600B2 (en) 2009-09-14 2013-03-05 Adobe Systems Incorporated Dynamic stream switch control
EP2486491A4 (en) 2009-10-06 2013-10-23 Unwired Planet Llc MANAGING NETWORK TRAFFIC BY EDITING A MANIFEST FILE AND / OR USING A INTERMEDIATE FLOW CONTROL
US9124642B2 (en) 2009-10-16 2015-09-01 Qualcomm Incorporated Adaptively streaming multimedia
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
EP2507941A4 (en) 2009-12-04 2013-12-04 Streamocean Inc SYSTEM AND METHOD FOR DELIVERING MULTIMEDIA CONTENT TO DISPLAY VIA A NETWORK
US9355144B2 (en) 2009-12-10 2016-05-31 Nokia Technologies Oy Method and apparatus for recycling information fragments in information spaces
CA2784233C (en) * 2010-01-18 2017-05-16 Telefonaktiebolaget L M Ericsson (Publ) Methods and arrangements for http media stream distribution
EP2362651A1 (en) 2010-02-19 2011-08-31 Thomson Licensing Multipath delivery for adaptive streaming
EP2360923A1 (en) 2010-02-24 2011-08-24 Thomson Licensing Method for selectively requesting adaptive streaming content and a device implementing the method
US8850116B2 (en) 2010-03-10 2014-09-30 Lsi Corporation Data prefetch for SCSI referrals
EP2375680A1 (en) 2010-04-01 2011-10-12 Thomson Licensing A method for recovering content streamed into chunk
TWI451279B (zh) 2010-04-07 2014-09-01 Apple Inc 即時或接近即時串流傳輸之內容存取控制
US9137278B2 (en) 2010-04-08 2015-09-15 Vasona Networks Inc. Managing streaming bandwidth for multiple clients
WO2011139305A1 (en) 2010-05-04 2011-11-10 Azuki Systems, Inc. Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction
US8190677B2 (en) * 2010-07-23 2012-05-29 Seawell Networks Inc. Methods and systems for scalable video delivery
EP2410743A1 (en) 2010-07-23 2012-01-25 Alcatel Lucent Method for transferring video chunks, server entity, client entity and intermediate network entity realizing such a method
EP2429189A1 (en) 2010-09-09 2012-03-14 Irdeto B.V. Method and system for providing content to a recipient device
US8811393B2 (en) 2010-10-04 2014-08-19 Cisco Technology, Inc. IP address version interworking in communication networks
WO2012047064A2 (ko) 2010-10-07 2012-04-12 삼성전자 주식회사 Drm 서비스 제공 방법 및 장치
US20120124179A1 (en) 2010-11-12 2012-05-17 Realnetworks, Inc. Traffic management in adaptive streaming protocols
EP2487609A1 (en) 2011-02-07 2012-08-15 Alcatel Lucent A cache manager for segmented multimedia and corresponding method for cache management
US8156239B1 (en) 2011-03-09 2012-04-10 Metropcs Wireless, Inc. Adaptive multimedia renderer
US9571547B2 (en) 2011-03-14 2017-02-14 Canon Kabushiki Kaisha Method and device for generating media fragment requests for requesting fragments of an encoded media stream
US9271021B2 (en) 2011-03-31 2016-02-23 Verizon Patent And Licensing Inc. Delivery of streaming media content
US20120254591A1 (en) 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
US8849950B2 (en) * 2011-04-07 2014-09-30 Qualcomm Incorporated Network streaming of video data using byte range requests
US8683013B2 (en) 2011-04-18 2014-03-25 Cisco Technology, Inc. System and method for data streaming in a computer network
US20120278495A1 (en) 2011-04-26 2012-11-01 Research In Motion Limited Representation grouping for http streaming
US8615435B2 (en) 2011-05-09 2013-12-24 Google Inc. Short-range communication enabled location service
EP2525587B1 (en) 2011-05-17 2017-07-05 Alcatel Lucent Method for streaming video content, node in a network for monitoring video content streaming
WO2012167106A1 (en) 2011-06-01 2012-12-06 Interdigital Patent Holdings, Inc. Content delivery network interconnection (cdni) mechanism
JP2012252467A (ja) 2011-06-01 2012-12-20 Canon Inc 画像処理システム、情報処理装置、その制御方法、及び制御プログラム
US9615126B2 (en) 2011-06-24 2017-04-04 Google Technology Holdings LLC Intelligent buffering of media streams delivered over internet
US8713420B2 (en) 2011-06-30 2014-04-29 Cable Television Laboratories, Inc. Synchronization of web applications and media
US20140173677A1 (en) 2011-08-10 2014-06-19 Telefonaktiebolaget L M Ericsson (Publ) Media stream handling
US8924580B2 (en) * 2011-08-12 2014-12-30 Cisco Technology, Inc. Constant-quality rate-adaptive streaming
US9026670B2 (en) 2011-08-22 2015-05-05 Allot Communications Ltd. System and method for efficient caching and delivery of adaptive bitrate streaming
US8897753B2 (en) 2011-10-12 2014-11-25 Motorola Mobility Llc Method for retrieving content by a wireless communication device having first and second radio access interfaces, wireless communication device and communication system
US9674266B2 (en) 2011-10-17 2017-06-06 Telefonaktiebolaget Lm Ericsson (Publ) Method for adaptive streaming, local storing and post-storing quality increase of a content file
EP2587824A1 (en) 2011-10-27 2013-05-01 Thomson Licensing Method and apparatus to manage the operation of an adaptive streaming client
US9860604B2 (en) 2011-11-23 2018-01-02 Oath Inc. Systems and methods for internet video delivery
JP2013115592A (ja) 2011-11-28 2013-06-10 Toshiba Corp 情報処理装置、情報処理方法及び情報処理プログラム
EP2605469A1 (en) 2011-12-13 2013-06-19 Thomson Licensing Method and apparatus to control a multipath adaptive streaming session
US8806193B2 (en) 2011-12-22 2014-08-12 Adobe Systems Incorporated Methods and apparatus for integrating digital rights management (DRM) systems with native HTTP live streaming
US10038927B2 (en) 2011-12-22 2018-07-31 Cisco Technology, Inc. Out-of-band signaling and device-based content control
EP2798854B1 (en) 2011-12-29 2019-08-07 Koninklijke KPN N.V. Controlled streaming of segmented content
CN104137505B (zh) * 2011-12-29 2017-12-05 皇家Kpn公司 实现对分段内容流式传输的网络发起的控制的方法和装置
EP2805463A1 (en) 2012-01-17 2014-11-26 Telefonaktiebolaget L M Ericsson (publ) Method for sending respectively receiving a media stream
US9401968B2 (en) 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US9712887B2 (en) * 2012-04-12 2017-07-18 Arris Canada, Inc. Methods and systems for real-time transmuxing of streaming media content
CA2870801A1 (en) 2012-04-18 2013-10-24 Mdialog Corporation Method and system for inserting content into streaming media at arbitrary time points
US9219765B2 (en) 2012-05-10 2015-12-22 International Business Machines Corporation End user QoS selection
US9819715B2 (en) 2012-06-21 2017-11-14 Adobe Systems Incorporated Client side control of adaptive streaming
JP6108280B2 (ja) 2012-06-27 2017-04-05 パナソニックIpマネジメント株式会社 固体撮像装置
JP2014017741A (ja) * 2012-07-10 2014-01-30 Sharp Corp コンテンツ送信装置、コンテンツ再生装置、コンテンツ配信システム、コンテンツ送信装置の制御方法、コンテンツ再生装置の制御方法、制御プログラムおよび記録媒体
WO2014010992A1 (ko) * 2012-07-13 2014-01-16 삼성전자 주식회사 컨텐츠 이름 기반의 컨텐츠 중심 네트워크에서 컨텐츠 및 실시간 스트리밍 컨텐츠 제공을 위한 컨텐츠 요청자 및 컨텐츠 제공자의 통신 방법
WO2014023330A1 (en) 2012-08-06 2014-02-13 Huawei Technologies Co., Ltd. Method for providing a multimedia message service
GB2505912B (en) * 2012-09-14 2015-10-07 Canon Kk Method and device for generating a description file, and corresponding streaming method
US20140089467A1 (en) 2012-09-27 2014-03-27 Andre Beck Content stream delivery using pre-loaded segments
US8923880B2 (en) 2012-09-28 2014-12-30 Intel Corporation Selective joinder of user equipment with wireless cell
US9607132B2 (en) 2012-10-22 2017-03-28 Koninklijke Kpn N.V. Token-based validation method for segmented content delivery
US9143543B2 (en) 2012-11-30 2015-09-22 Google Technology Holdings LLC Method and system for multi-streaming multimedia data
US9612972B2 (en) 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US20160198202A1 (en) 2012-12-10 2016-07-07 Koninklijke Kpn N.V. Digital Rights Management for Segmented Content
US9749375B2 (en) * 2013-01-16 2017-08-29 Futurewei Technologies, Inc. URL parameter insertion and addition in adaptive streaming
US20140244828A1 (en) 2013-02-26 2014-08-28 Jan Besehanic Methods and apparatus to measure exposure to streaming media
US9622275B2 (en) 2013-03-15 2017-04-11 Qualcomm Incorporated System and method for allowing multiple devices to communicate in a network
CN105379295A (zh) 2013-07-03 2016-03-02 皇家Kpn公司 分段内容的流送
WO2015090360A1 (en) * 2013-12-17 2015-06-25 Nokia Solutions And Networks Gmbh & Co. Kg Cell load based content data network selection
US20150207846A1 (en) 2014-01-17 2015-07-23 Koninklijke Kpn N.V. Routing Proxy For Adaptive Streaming
KR101924703B1 (ko) 2014-02-13 2019-02-20 코닌클리즈케 케이피엔 엔.브이. 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청
US9635077B2 (en) * 2014-03-14 2017-04-25 Adobe Systems Incorporated Low latency live video streaming
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
US9614579B2 (en) 2014-09-10 2017-04-04 Texas Instruments Incorporated Techniques for generation of a frequency hopping sequence
US9826016B2 (en) 2015-02-24 2017-11-21 Koninklijke Kpn N.V. Fair adaptive streaming

Also Published As

Publication number Publication date
WO2015121342A1 (en) 2015-08-20
JP6944485B2 (ja) 2021-10-06
KR20160114203A (ko) 2016-10-04
US20170171287A1 (en) 2017-06-15
JP2017513413A (ja) 2017-05-25
JP2019146224A (ja) 2019-08-29
EP3105903B1 (en) 2019-08-07
JP6698553B2 (ja) 2020-05-27
EP3105903A1 (en) 2016-12-21
US11477262B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
KR101924703B1 (ko) 단일 메세지 요청에 기초하여 네트워크 노드로부터 다수의 청크 요청
EP3446461B1 (en) Just in time transcoding and packaging in ipv6 networks
CN105264826B (zh) 用于使能低等待时间流式传输的方法和系统
JP6014870B2 (ja) ストリーミング・メディア・コンテンツのリアルタイム・トランスマックス変換の方法およびシステム
JP6612249B2 (ja) メディアデータをストリーミングするためのターゲット広告挿入
US9158769B2 (en) Systems and methods for network content delivery
JP2018196123A (ja) セグメント化コンテンツのストリーミング
US20130124683A1 (en) Data distribution system, data distribution method, data relay device on distribution side, and data relay device on reception side
KR20160106618A (ko) 콘텐츠 전달
JP2016028474A (ja) バイト範囲リクエストを使用したビデオデータのネットワークストリーミング
US20140074961A1 (en) Efficiently Delivering Time-Shifted Media Content via Content Delivery Networks (CDNs)
TW201021573A (en) Proxy functionality
CN102055718B (zh) 一种在http streaming系统中实现分层请求内容的方法,装置和系统
WO2016174960A1 (ja) 受信装置、送信装置、およびデータ処理方法
CN105052159A (zh) 内容提供设备、内容提供方法、程序、和内容提供系统
Van Deursen et al. On media delivery protocols in the web
KR20160138044A (ko) 미디어 데이터를 스트리밍하기 위한 목표된 광고 삽입
JP6059820B2 (ja) 低レイテンシ・ストリーミング

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant