KR101773275B1 - 오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜 - Google Patents

오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜 Download PDF

Info

Publication number
KR101773275B1
KR101773275B1 KR1020157025117A KR20157025117A KR101773275B1 KR 101773275 B1 KR101773275 B1 KR 101773275B1 KR 1020157025117 A KR1020157025117 A KR 1020157025117A KR 20157025117 A KR20157025117 A KR 20157025117A KR 101773275 B1 KR101773275 B1 KR 101773275B1
Authority
KR
South Korea
Prior art keywords
segment
segments
media
cache
playlist
Prior art date
Application number
KR1020157025117A
Other languages
English (en)
Other versions
KR20150119277A (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 KR20150119277A publication Critical patent/KR20150119277A/ko
Application granted granted Critical
Publication of KR101773275B1 publication Critical patent/KR101773275B1/ko

Links

Images

Classifications

    • H04L67/2842
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/40Arrangements for broadcast specially adapted for accumulation-type receivers
    • H04L65/4076
    • H04L65/4084
    • H04L65/605
    • 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/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • 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/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6408Unicasting
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

미디어 전달 서비스는 미디어 소스, 프록시 캐시 및 하나 이상의 클라이언트 디바이스를 포함할 수 있다. 미디어 소스는 입력 미디어 스트림으로부터의 코딩된 세그먼트들을 생성하고 세그먼트의 네트워크 위치들을 식별하는 재생 목록을 생성할 수 있다. 미디어 소스는 코딩된 세그먼트들 및 자신의 저장 위치들을 프록시 캐시에 브로드캐스트 채널로 브로드캐스트할 수 있다. 프록시 캐시는 성공적으로 수신된 코딩된 세그먼트들을 저장하고 세그먼트들의 네트워크 위치들을 식별하는 매핑 테이블을 개발할 수 있다. 클라이언트는 미디어 소스로부터 수신된 재생 목록에 기초하여 프록시 캐시로부터 세그먼트들을 요청할 수 있다. 프록시 캐시가 요청된 세그먼트를 저장하지 않는 경우, 그것은 클라이언트에게 그렇게 알리고 클라이언트는 미디어 소스로부터 세그먼트를 요청할 수 있다.

Description

오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜{MEDIA DELIVERY SERVICE PROTOCOL TO SUPPORT LARGE NUMBERS OF CLIENT WITH ERROR FAILOVER PROCESSES}
우선권
본 출원은 2013년 3월 14일자로 출원된 미국 가특허 출원 제61/783,811호에 대한 우선권을 주장하며, 그 전문이 본 명세서에 편입된다.
기술분야
본 개시 내용은 라이브 미디어(live media)와 같은 미디어 스트림(media stream)들의 실시간 코딩 및 브로드캐스트(broadcast)에 관한 것이다.
현재, 네트워크 기반 미디어 전달 서비스들은 라이브 미디어와 같은 실시간 미디어 피드들에 대한 코딩된 비디오의 전달을 지원하는 것이 이용 가능하다. 그러한 미디어 전달 서비스들은, 전형적으로 복수의 별개로-전달 가능한 세그먼트로 파싱(parsing)된 코딩된 비디오 데이터로서, 본 명세서에서 "미디어 스트림"을 칭하는 입력 비디오 시퀀스를 코딩한다. 각 세그먼트는 소스 미디어 스트림의 일부분, 예를 들면, 상기 미디어 스트림의 5 또는 10초 인크리먼트(increment)를 나타낼 수 있다. 미디어 전달 서비스는 본 명세서에서 "클라이언트들"을 칭하는, 네트워크 상의 다른 디바이스들로부터의 요청들에 응답하는 HTTP 서버를 포함하고, 이러한 요청에 응답하여 코딩된 세그먼트들을 제공할 수 있다. 요청들은 전형적으로 인터넷 주소(uniform resource locator; 보통, "URL")와 같은 어드레스에 의해 요청된 세그먼트들을 식별한다. 공통 서버는 복수의 상이한 클라이언트 디바이스로부터의 서비스 요청들에 동시에 응답할 수 있다. 이와 관련하여, 서버와 클라이언트들의 요청-응답 동작들은 서버에 의해 관리되는 복수의 중첩 유니캐스트 전송(overlapping unicast transmission)들을 나타낸다.
서버-클라이언트 통신들의 유니캐스트 성질(unicast nature)은 이점이 있을 수 있는데, 그 이유는 전송된 패킷들이 클라이언트에 의해 수신되기 전에 전송된 패킷들로 하여금 손실되게 하는 네트워크 통신 오류가 발생하는 경우, 클라이언트는 그러한 오류를 식별하고 손실된 패킷들을 재요청할 수 있기 때문이다. 그러나, 유니캐스트 전송은 또한 비용에 연관이 있다. 네트워크 내의 인기 있는 미디어 스트림들에 대하여, 요청하는 클라이언트들의 수는 서비스를 제공하기 위한 서버의 용량을 초과할 수 있다. 게다가, 요청하는 클라이언트 각각에 그 자신의 코딩된 세그먼트의 카피(copy of a coded segment)가 제공되므로, 다수의 유니캐스트 전송들의 지원은 또한 서버와 클라이언트 사이의 네트워크 내에서 불필요한 대역폭을 소모할 수 있다. 따라서, 유니캐스트 전송들의 사용은 미디어 전달 서버가 서비스할 수 있는 클라이언트 디바이스들의 수를 제한할 수 있다.
네트워킹 프로토콜들은 또한 서버가 네트워크 상의 다양한 디바이스들에 공통으로 분배된 브로드캐스트 채널에 데이터를 제공하는 브로드캐스트 전달 프로토콜들을 지원한다. 브로드캐스트 채널들의 사용은 서버들 상에서의 부하를 줄일 수 있지만, 손실 패킷들로부터 복구하도록 수신 디바이스에 메커니즘을 제공하지 않기 때문에 불리할 수 있다. 손실 패킷들로부터 복구하기 위한 이러한 불능은 코딩된 비디오 데이터의 경우에 특히 문제가 될 수 있는데, 그 이유는 코딩된 비디오의 다른 부분들이 디코딩될 수 있기 이전에 (참조 프레임들과 같은) 코딩된 비디오의 다양한 부분들이 성공적으로 수신되고 디코딩되어야 한다. 참조 프레임들을 나타내는 데이터가 손실된 경우, 참조 프레임들에 의존하는 다른 프레임들의 데이터는 그러한 다른 프레임들의 데이터가 성공적으로 수신된 경우에도 디코딩될 수 없다. 따라서, 브로드캐스트 채널들의 사용은 미디어 전달 시스템들에서 불리할 수 있다.
본 출원인은 본 발명이 속한 기술분야에서 유니캐스트 서비스를 제공하기 위한 그것의 능력을 초과하여 서비스를 클라이언트 디바이스들에 제공하기 위한 전달 서버를 허용하고, 예를 들면, 패킷 손실에 기인하여 발생할 수 있는 전송 오류로부터의 복구를 여전히 허용하는 미디어 전달 시스템에 대한 필요성을 인지한다.
본 발명의 특징부들이 이해될 수 있도록, 다수의 도면들이 이후에 설명된다. 그러나, 첨부된 도면들은 본 발명의 단지 특정 실시예들을 예시하는 것이므로 본 발명의 범위를 제한하는 것으로 간주되지 않아야 한다는 것이 주목되어야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 본 발명의 일 실시예에 따른 스트리밍 시스템의 기능성 블록도이다.
도 2는 본 발명의 일 실시예에 따른 비디오 스트림을 위한 코딩 아키텍처를 예시한다.
도 3은 본 발명의 일 실시예에 따른 프록시 캐시의 동작의 방법을 예시한다.
도 4는 본 발명의 일 실시예에 따른, 미디어 소스, 프록시 캐시 및 클라이언트 사이의 예시적인 통신 흐름을 예시한다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 데이터그램들을 위한 예시적인 프로토콜들을 예시한다.
본 발명의 실시예들은 미디어 소스, 프록시 캐시 및 하나 이상의 클라이언트 디바이스를 포함하는 미디어 전달 서비스를 제공한다. 미디어 소스는 입력 미디어 스트림으로부터의 코딩된 세그먼트들을 생성하고 세그먼트들의 네트워크 위치들을 식별하는 재생 목록을 생성할 수 있다. 미디어 소스는 또한 코딩된 세그먼트들 및 자신의 저장 위치들을 하나 이상의 프록시 캐시에 브로드캐스트 채널로 브로드캐스트할 수 있다. 프록시 캐시는 성공적으로 수신된 코딩된 세그먼트들을 저장하고 세그먼트들의 네트워크 위치들을 식별하는 매핑 테이블을 또한 생성할 수 있다.
클라이언트가 코딩된 미디어 스트림에 액세스하는 경우, 미디어 소스로부터 재생 목록을 다운로드할 수 있다. 그것은 요청된 세그먼트들의 네트워크 위치들을 식별하는 프록시 캐시에 대한 요청들을 지시할 수 있고, 이는 프록시 캐시가 그것들을 저장하는 한 프록시 캐시에 의해 제공될 것이다. 프록시 캐시가 요청된 세그먼트를 저장하지 않는 경우, 그것은 클라이언트에게 그렇게 알리고 클라이언트는 미디어 소스로부터 세그먼트를 요청할 수 있다.
일 실시예에서, 프록시 캐시는 클라이언트와 미디어 소스 사이의 통신들을 인터셉트(intercept)하는 투명한 프록시 캐시일 수 있다. 통신들에 기초하여, 투명한 프록시 캐시는 클라이언트에 대한 코딩된 세그먼트들을 요청하고 저장할 수 있다.
이와 관련하여, 서버들이 코딩된 비디오를 프록시 캐시들에 브로드캐스트 채널들로 제공하기 때문에 미디어 소스 서버에서의 부하 이슈들이 경감될 수 있다. 미디어 소스 서버들은, 또한 전송 오류들이 프록시 캐시에서 세그먼트들의 수신을 방해하는 경우 클라이언트 디바이스들로부터의 직접적인 요청들을 처리하지만, 실제로, 이러한 요청들은 다수의 클라이언트 디바이스들을 이용하여 유니캐스트 전송들의 서비스를 지시하는 것 보다는 훨씬 더 작은 부하 이슈를 서버들에 보여줄 것이다. 클라이언트 디바이스들은 제1 인스턴스에서 프록시 캐시로부터(또는 네트워크에 걸쳐 분배될 수 있는 다수의 프록시 캐시들로부터) 코딩된 세그먼트들을 수신할 것이다.
도 1은 본 발명의 일 실시예에 따른 스트리밍 시스템(100)의 기능성 블록도이다. 시스템은 미디어 소스(110), 프록시 캐시(120), 및 통신 네트워크(140)를 통해 상호접속되는 하나 이상의 클라이언트 디바이스(130)를 포함할 수 있다.
미디어 소스(110)는 소스 서버(112) 및 저장 시스템(114)을 포함할 수 있다. 소스 서버(112)는 미디어 소스(110)를 대신하여 처리 동작들을 수행할 수 있다. 이러한 동작들은 코딩된 비디오 데이터의 세그먼트들(118.1 내지 118.n)로의 소스 미디어 스트림의 코딩을 포함할 수 있다. 동작들은 또한 미디어 소스(110)에 저장된 세그먼트들(118.1 내지 118.n)의 저장 위치들을 식별하는 재생 목록(116)의 생성과 유지보수를 포함할 수 있다. 소스 서버(112)는 코딩된 비디오 세그먼트들을 다른 시스템 컴포넌트들(예컨대, 프록시 캐시(120))에 브로드캐스트 채널(142)로 전송할 수 있다. 소스 서버(112)는 또한 다른 시스템 컴포넌트들(예컨대, 클라이언트 디바이스(130))에 의해 미디어 소스(110)로 만들어진 서비스 요청들의 이행을 수행할 수 있다.
스토리지 시스템(114)은 재생 목록(116) 및 코딩된 세그먼트들(118.1 내지 118.n)을 저장할 수 있다. 재생 목록(116)은 저장 시스템(114)에 현재 존재하는 세그먼트들(118.1 내지 118.n)을 식별할 수 있다. 옵션적으로, 재생 목록(116)은 미디어 소스(110)에 의해 저장된 세그먼트들(118.1 내지 118.n)의 캐싱(caching)을 지원하는 프록시 캐시(들)(120)의 네트워크 위치들을 식별할 수 있다.
프록시 캐시(120)는 프록시 서버(122) 및 저장 시스템(124)을 포함할 수 있다. 프록시 서버(122)는 프록시 캐시(120)를 대신하여 처리 동작들을 수행할 수 있다. 이러한 동작들은 하나 이상의 미디어 소스(110)로부터 브로드캐스트 채널들로 "튜닝"하는 것 및 프록시 캐시(120)에서 국부적으로 코딩된 세그먼트들(126.1 내지 126.n)의 데이터그램들을 캐싱하는 것을 포함할 수 있다. 프록시 서버(122)의 동작들은 또한 다른 시스템 컴포넌트들, 예를 들면, 클라이언트 디바이스(들)(130)에 의해 프록시 캐시(120)로 만들어진 서비스 요청들의 이행을 포함할 수 있다.
저장 시스템(124)은 코딩된 세그먼트들(126.1 내지 126.n), 및 미디어 소스(110)에서 그로부터 세그먼트들이 다운로드될 수 있는 URL들과 세그먼트들을 연관시키는 인덱스 테이블(128)을 저장할 수 있다.
클라이언트 디바이스(들)(130)는 본 명세서에서 논의된 바와 같이, 미디어 소스(110) 또는 프록시 캐시(120)로부터 코딩된 세그먼트들을 다운로드하고, 코딩된 세그먼트들을 디코딩하고 그것들을 재생하기 위해 렌더링(rendering)하는 미디어 재생기를 나타낼 수 있다. 대표적인 클라이언트 디바이스들은 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 개인용 컴퓨터, 셋톱 박스, 및 코딩된 비디오를 디코딩하고 렌더링하도록 설계된 기타 소비자 전자 제품들을 포함한다.
동작 동안, 미디어 소스(110)는, 복수의 코딩된 세그먼트(118.1 내지 118.n)로서 입력 미디어 스트림을 수신하고 코딩할 수 있고, 재생 목록(116)을 생성하여 미디어 소스(110)의 서버(112)에 의해 저장되는 세그먼트들을 식별할 수 있다. 미디어 소스(110)는 코딩된 세그먼트들(118.1 내지 118.n)을 통신 네트워크(140) 상의 엔티티들(entities)에 브로드캐스트 채널(142)로 전송할 수 있다. 라이브 비디오를 포함하는 스트리밍 애플리케이션들에 대하여, 미디어 소스(110)는 미리결정된 시간의 양의 코딩된 비디오 세그먼트들(예컨대, 소스 비디오의 5분)을 저장할 수 있고, 따라서 이전의 세그먼트들은 새로운 세그먼트들이 생성되고 저장됨에 따라 저장 장치(114)로부터 축출될 수 있다. 유사하게, 재생 목록(116)은 새로운 세그먼트들의 생성 및 이전의 세그먼트들의 축출을 반영하기 위하여 시간에 걸쳐 업데이트될 수 있다.
프록시 캐시(120)는 브로드캐스트 채널(142)을 수신할 수 있고 저장 장치(124)에서 국부적으로 코딩된 세그먼트들(126.1 내지 126.n)을 캐싱할 수 있다. 프록시 캐시(120)는 세그먼트들이 미디어 소스(110)에 의해 저장됨에 따라 세그먼트들(118.1 내지 118.n)의 어드레스들을 식별하는 매핑 테이블(128)을 또한 생성할 수 있다. 프록시 캐시(130)는 새로운 세그먼트들이 브로드캐스트 채널(142)로부터 수신됨에 따라 새로운 세그먼트들을 저장하고 저장 장치(142)로부터 다른 것들을 축출할 수 있다.
클라이언트 디바이스(들)(130)는 디코딩 및 렌더링을 위하여 프록시 캐시(120) 또는 미디어 소스(110)로부터 코딩된 세그먼트들을 다운로드할 수 있다. 일 실시예에서, 클라이언트(130)는 미디어 소스(110)로부터 재생 목록(116)을 다운로드할 수 있다. 클라이언트(130)는 전달 및 디코딩을 위하여 코딩된 세그먼트(즉, 세그먼트(118.3))를 선택할 수 있다. 클라이언트(130)는 제1 인스턴스에서 프록시 캐시(120)에 대한 요청을 지시할 수 있고, 이는 세그먼트(118.3)의 어드레스를 식별한다. 응답 시에, 프록시 캐시(120)는 클라이언트의 요청 시에 수신된 어드레스를 그것이 저장 장치(124)에 국부적으로 유지하는 세그먼트들의 테이블(128)과 비교할 수 있다. 비교에 의해 매칭이 이루어지면, 프록시 캐시(130)는 매칭 어드레스에 응답하는 코딩된 세그먼트(126.3)를 검색할 수 있고 그것을 클라이언트(130)에 제공할 수 있다. 클라이언트(130)는 세그먼트(126.3)를 디코딩 및 렌더링하고, 재생 목록(116) 내의 다음 항목으로 진출하고, 다른 요청을 프록시 캐시(120)에 지시할 수 있다.
프록시 캐시들의 비교에 의해 매칭이 이루어지지 않으면, 프록시 캐시(130)는 "놓침(miss)"을 나타내는 응답을 클라이언트(130)에 송신할 수 있다. 응답 시에, 클라이언트(130)는 요청을 미디어 소스(110)에 지시할 수 있다. 미디어 소스(110)가 요청된 세그먼트(118.3)를 저장하면, 디코딩 및 렌더링을 위하여 세그먼트(118.3)를 클라이언트(130)에 제공할 수 있다. 그 후, 클라이언트(130)는 재생 목록(116) 내의 다음 항목으로 진출하고 다른 요청을 프록시 캐시(120)에 지시할 수 있다.
클라이언트(130)는, 예를 들면, 저장 장치(114)로부터 축출되었기 때문에 더이상 미디어 소스(110)에 저장되지 않은 세그먼트를 식별하는 요청을 미디어 소스(110)에 발행할 것이다. 이러한 이벤트에서, 클라이언트(130)는 코딩된 미디어 스트림에 재동기화하기 위하여 오류 복구 프로세스를 개시할 수 있다. 예를 들면, 클라이언트(130)는 제 시간에 이전에 요청된 세그먼트에 앞선 여러 지점이고 따라서 프록시 캐시(120) 및 미디어 소스(110)에서 저장 장치(124, 114) 내에 존재할 가능성이 더 많은 재생 목록(116)의 새로운 항목으로 건너뛸 수 있고, 이는 제 시간에 "더 새로운" 다른 세그먼트를 참조할 것이다.
클라이언트(130)는 때때로 재생 목록(116)의 그것의 카피를 리프레시하고, 코딩된 세그먼트들을 제1 인스턴스에서의 프록시 캐시(120)로부터 그리고 요청들이 프록시 캐시(120)를 놓치면 미디어 소스(110)로부터 다운로드함으로써 전술한 프로세스들을 계속할 수 있다. 이러한 동작은 클라이언트(130)가 미디어 스트림을 재생하는 것을 중단할 때까지 계속될 수 있다.
시스템(100)의 아키텍처는 브로드캐스트 채널(142)을 통해 통신 네트워크(140)에 걸쳐 미디어 소스(110)로 하여금 세그먼트들을 브로드캐스트하게 함으로써 미디어 소스들(110)에서의 리소스 이슈들을 경감한다. 이는 유니캐스트 채널들(예컨대, 유니캐스트 채널들(114 내지 148))의 수를 제한하고, 이는 그렇지 않으면 복수의 클라이언트들(130 내지 134)에 의한 요청들에 의해 미디어 소스(110) 내의 소스 서버(112)에 의해 지원될 것이다. 따라서, 아키텍처는 미디어 소스(110)에서 리소스 보존에 기여한다. 유니캐스트 통신들은 프록시 캐시(120) 내의 서버(들)(122)에 의해 처리될 수 있고, 이는 소스 서버(들)(112)보다 더 효율적으로 복수의 클라이언트(130 내지 134)로부터의 요청들을 처리하도록 제공될 수 있다.
도 1에 도시된 아키텍처는 단일 코딩된 미디어 스트림의 코딩, 캐싱 및 디코딩에 포함된 엔티티들을 예시한다. 이 아키텍처는 미디어 소스(110), 프록시 캐시(120) 및 클라이언트들(130 내지 134)의 복수의 인스턴스를 수용하도록 확장될 수 있다.
예를 들면, 단일 미디어 소스(110)는 복수의 미디어 스트림을 코딩하고 프록시 캐시(120)에 상이한 브로드캐스트 채널들로 전송한다. 다른 실시예에서, 단일 미디어 소스(110)는 상이한 유형들의 클라이언트의 능력들을 수용도록 공통 미디어 스트림을 다양한 상이한 비트 레이트로 또는 다양한 상이한 프레임 사이즈로 코딩하고 전송할 수 있다. 미디어 스트림의 각각의 코딩된 변형은 이 논의의 목적을 위해 상이한 코딩된 미디어 시퀀스가 되는 것으로 생각될 수 있다.
다른 실시예에서, 단일 미디어 소스(110)는 네트워크 환경 내에서 코딩된 미디어 스트림들을 복수의 프록시 캐시(120)에 브로드캐스트할 수 있다. 실제로, 미디어 소스(110)는 재생 목록(116) 내의 미디어 소스(110)로 알려진 프록시 캐시(120)의 네트워크 위치들을 식별할 수 있다. 복수의 프록시 캐시(120)가 이용가능한 경우들에서, 클라이언트(130)는 제1 프록시 캐시(120)로부터의 놓침 표지(miss indication)에 응답하여 제2 프록시 캐시(120)로부터 서비스를 요청할 수 있다.
단일 프록시 캐시(120)는, 공통 미디어 소스(110) 또는 복수의 미디어 소스로부터 복수의 브로드캐스트 채널에 동조하고, 복수의 미디어 스트림의 세그먼트들을 캐싱할 수 있다. 또한, 단일 프록시 캐시(120)는 평행 유니캐스트 채널들(144 내지 148)에서 많은 상이한 클라이언트 디바이스들(130 내지 134)에 공통 미디어 시퀀스의 코딩된 세그먼트들을 제공할 수 있다.
도 1에 예시된 구성은, 공통 네트워크(140)가 미디어 소스(110)로부터 프록시 캐시(120)로 그리고 프록시 캐시(120)로부터 클라이언트 디바이스(130)로 통신을 전달하는 것으로 예시되는 시스템(100)의 일반적인 아키텍처를 나타낸다. 그러나, 본 발명의 원리들은 다양한 상이한 구현예를 갖는 응용을 찾는다.
일 구현예에서, 미디어 소스(110), 프록시 캐시(120) 및 클라이언트 디바이스들(130)은 인터넷과 같은 공통 네트워크를 통해 서로 통신할 수 있다. 다른 구현예에서, 미디어 소스(110)는 제1 통신 네트워크(도시하지 않음)를 통해 프록시 캐시(120)에 접속될 수 있고, 프록시 캐시(120)는 완전히 별도의 네트워크(역시 도시하지 않음)에 의해 전달될 수 있는 클라이언트 디바이스(130)에 접속될 수 있다. 예를 들면, 프록시 캐시(120)는 유선 또는 무선 근거리 네트워크에 의해 클라이언트(130)에 접속된 게이트웨이 디바이스 또는 라우터(도시하지 않음)로서 제공될 수 있다. 프록시 캐시(120)는 광역 네트워크를 통해 미디어 소스(110)에 접속될 수 있다. 다른 구성들에서, 미디어 소스(110) 및 프록시 캐시(120)는 그것들 사이에 제공된 외부적으로 액세스 가능한 네트워크일 필요가 없는 경우에 공통 서버 시스템 내에 공존될 수 있다.
따라서, 통신 네트워크(들)(140)의 분배, 토폴로지 및 아키텍처는 본 명세서에서 달리 논의되지 않는 한 본 명세서의 동작에 중요하지 않다. 실제로, 통신 네트워크(140)는 네트워크 시스템들 및 토폴로지들의 조합을 나타낼 수 있고, 이는 유선 및/또는 무선 기반 네트워크 시스템들을 포함한다. 게다가, 클라이언트 디바이스들(130)은 유선 및/또는 무선 기반 액세스 기술들에 의해 통신 네트워크(140)에 액세스할 수 있다.
프록시 캐시(120)는 미디어 소스(110)보다 상이한 축출 방법들에 따라 동작할 수 있고, 따라서 프록시 캐시(120)는 애플리케이션이 허가증(warrant)을 필요로 하면 미디어 소스(110)보다 더 많은 양의 코딩된 비디오 데이터(즉, 10분)를 저장할 수 있는 것이 가능하다. 반대로, 프록시 캐시(120)는 다른 애플리케이션 필요들에 적합하도록 더 적은 양의 코딩된 비디오 데이터(즉, 3분)를 저장하도록 구성될 수 있다.
일 실시예에서, 프록시 서버(122)는 미디어 소스 미디어 소스(110)로부터 재생 목록(116)을 주기적으로 수신할 수 있다. 프록시 서버(122)는, 재생 목록을 사용하여, 어느 세그먼트들이 수신되지 않았고/않았거나 어느 세그먼트들이 프록시 캐시(120)로부터 삭제될 수 있는지를 결정할 수 있다. 프록시 서버(122)는 또한 클라이언트들(130 내지 134)에 재생 목록을 제공할 수 있다.
도 1은 단일 서버(112)가 미디어 소스(110)의 비디오 코딩 및 전달 동작들 둘 다를 수행하는 것으로서 도시되는 미디어 소스(110)의 단순화된 구현예를 예시한다. 그러나, 본 발명의 원리들은, 더 많은 로버스트 시스템들에서 응용들이 발견된다. 예를 들면, 실제로, 미디어 소스(110)는 서버들의 네트워킹된 시스템(도 1에 도시되지 않음)에 의해 점유될 수 있다. 이러한 구현예들에서, 전용 비디오 코딩 서버들로서 일부 서버들을 그리고 전용 미디어 전달 서버들로서 다른 서버들을 제공하는 것이 허용된다.
일 실시예에서, 프록시 캐시(120)는 클라이언트 디바이스들(130)과 미디어 소스(110) 사이의 통신들을 인터셉트하는 투명한 프록시 캐시일 수 있다. 통신들에 기초하여, 투명한 프록시 캐시(120)는 클라이언트를 위하여 코딩된 세그먼트들을 요청하고 저장할 수 있다. 예를 들면, 투명한 프록시 캐시(120)는 미디어 소스(110)로부터 클라이언트 디바이스(130)로 송신된 재생 목록 또는 재생 목록에 대한 요청을 인터셉트할 수 있다. 이러한 정보에 기초하여, 투명한 프록시 캐시(120)는 미디어 소스(110)로부터 코딩된 세그먼트들을 요청하고 저장할 수 있다. 투명한 프록시 캐시(120)는 그것들이 미디어 소스(110)에 의해 저장됨에 따라 세그먼트들의 어드레스들을 식별하는 매핑 테이블을 또한 생성할 수 있다. 코딩된 세그먼트들이 투명한 프록시 캐시(120)에 저장되면, 투명한 프록시 캐시(120)는 요청된 코딩된 세그먼트들을 클라이언트 디바이스(들)(130)에 제공할 수 있다.
도 2는 본 발명의 일 실시예에 따른 비디오 스트림(200)을 위한 코딩 아키텍처를 예시한다. 비디오 스트림(200)은 카메라로부터 시작하는 것으로서 도시되지만, 애플리케이션이 허가증을 필요로 하기 때문에, 스트림은 미디어 피드(예컨대, 위성 피드 또는 프로덕션 피드(production feed))와 같은 다른 소스로부터 또는 저장 디바이스로부터 시스템(100)에 제공될 수 있다.
비디오 스트림(200)은 개별 소스 프레임들의 시퀀스로서 표현될 수 있다. 비디오 스트림(200)은 하나 이상의 압축 알고리즘에 따라 코딩될 수 있고, 이는 전형적으로 소스 프레임들에 비해 감소된 데이터 레이트를 갖는 압축된 프레임들의 시퀀스를 생성한다. 코딩된 비디오 시퀀스는 서로로부터 별개의 위치들에서 미디어 소스(110)에 의해 저장될 수 있는 복수의 코딩 세그먼트(210.1 내지 210.n) 내로 파싱될 수 있다. 예를 들면, 각 세그먼트는 고유 인터넷 주소들(220.1 내지 220.n)(일반적으로, "URL들")에 의해 참조될 수 있는 위치들에서 미디어 소스(110)에 의해 저장될 수 있다.
코딩 세그먼트들 자신은 통신 채널을 통해 전송을 위한 데이터그램들로 파싱될 수 있다. 예를 들면, 세그먼트 i(210.2)는 전달을 위한 복수의 데이터그램(230.0 내지 230.k)으로 파싱된 것으로서 예시된다. 데이터그램들은 세그먼트(210.2) 내의 제1 데이터그램(230.0)이 새로운 세그먼트의 개시를 나타내는 제어 코드를 포함하는 프로토콜에 따라 동작할 수 있다. 데이터그램(230.0)은 또한 미디어 서버(110)에 의해 저장됨에 따라 세그먼트(210.2)의 URL을 나타내는 데이터를 포함할 수 있다. 세그먼트(210.2) 내의 다른 데이터그램(들)(230.1 내지 230.k)은 세그먼트(210.2)의 비디오 데이터를 포함할 수 있다. 옵션적으로, 마지막 데이터그램(230.k)은 세그먼트(210.2)의 종단을 나타내는 제어 코드를 포함할 수 있다. 세그먼트-종료(end-of-segment) 제어 코드는 모든 실시예들에서 채용될 필요는 없다. 다른 실시예들에서, 다음 세그먼트의 세그먼트-개시(start-of-segment)(예컨대, 세그먼트(210.3)에 대한 데이터그램(240.0))는 이전 세그먼트(210.2)의 종단을 나타낼 수 있다.
데이터그램들(230.0 내지 240.k)은 데이터그램들의 전송 순서를 나타내는 시퀀스 수들을 포함할 수 있다.
도 3은 본 발명의 일 실시예에 따른 프록시 캐시의 동작의 방법(300)을 예시한다. 본 실시예에 따르면, 방법(300)은 새로운 브로드캐스트 채널에 동기화하는 것(박스 310)은 및 코딩된 세그먼트들을 구축하는 것(박스 330)을 포함할 수 있다.
새로운 브로드캐스트 채널에 동기화하는 것(박스 310)은 반복적으로: 브로드캐스트 채널로부터 데이터그램을 수신하고(박스 315), 데이터그램이 세그먼트-개시 제어 메시지를 갖는지를 결정하고(박스 320), 데이터그램이 세그먼트-개시 제어 메시지를 갖지 않는 경우, 수신된 데이터그램을 폐기하고(박스 325), 그리고 브로드캐스트 채널로부터 다음 데이터그램을 수신할 수 있다(박스 315). 방법(300)은 세그먼트-개시 제어 메시지를 식별하면(예를 들면, 박스 320에서 예), 방법(300)은 브로드캐스트 채널에 동기화된다.
데이터그램으로부터 코딩된 세그먼트들을 구축하는 것(박스 330)은 완성된 세그먼트들을 구성하도록 수신된 데이터그램들을 처리하는 것, 및 매핑을 완성된 세그먼트들에 제공하는 것을 포함할 수 있다. 예를 들면, 프록시 캐시는 반복적으로: 세그먼트-개시 제어 메시지와 함께 수신된 데이터그램을 캐싱하고(박스 335), 브로드캐스트 채널로부터 새로운 데이터그램을 수신하고(박스 340), 그리고 전송 오류가 현재 세그먼트의 수신과 함께 발생했는지를 시퀀스 식별자들로부터 결정할 수 있다(박스 345). 전송 오류가 발생된 경우, 방법(300)은 현재 세그먼트를 폐기할 수 있다(박스 350). 전송 오류가 발생하지 않은 경우, 방법(300)은 현재 세그먼트의 종료가 도달됐는지를 결정할 수 있다(박스 355). 현재 세그먼트의 종료가 도달되지 않은 경우(박스 355에서 아니오), 방법(300)은 시퀀스 내의 다음 데이터그램을 처리하기 위해 박스(330)로 반환할 수 있다. 현재 세그먼트의 종료가 도달된 경우(박스 355에서 예), 방법(300)은 저장 장치 내의 완성된 세그먼트를 캐싱할 수 있고(박스 360), 세그먼트-개시 제어 메시지 내에 표현된 바와 같이 세그먼트의 어드레스를 갖는 매핑 데이블을 업데이트할 수 있다(박스 365).
박스(350 또는 365)의 동작들이 완료된 후에, 방법(300)은 다른 세그먼트 상에서 작업을 시작하기 위해 박스(330)로 되돌아갈 수 있다.
전송 오류가 발생된 경우(박스 345에서 예), 현재 세그먼트는 폐기되고(박스 350), 방법(300)은 다른 세그먼트 상에서 작업을 시작하기 위해 박스(330)로 되돌아갈 수 있다. 다른 실시예에서, 현재 세그먼트가 폐기된 후에(박스 350), 방법(300)은 새로운 브로드캐스트 채널에의 동기화를 시작하기 위해 박스(315)로 되돌아갈 수 있다. 일 실시예에서, 방법은 미리 결정된 수의 현재 세그먼트들이 폐기되면 다시 동기화를 시작하도록 박스(315)로 변환할 수 있다.
방법(300)은 그것이 브로드캐스트 채널로부터 수신하는, 데이터그램들로부터 세그먼트들을 구축할 수 있다. 전송 완전성은 그것들이 순서대로 수신되는 것을 보장하도록 데이터그램들 내에 존재하는 시퀀스 수들을 검토함으로써 확인될 수 있다. 방법이 예를 들면 데이터그램이 오류가 일어나거나 전혀 수신되지 않았기 때문에 데이터그램이 적절하게 수신되지 않았다고 결정하는 경우, 프록시 캐시는 놓친 데이터그램이 속해 있는 세그먼트를 폐기할 수 있다. 클라이언트들이 폐기된 세그먼트를 요청하는 요청을 프록시 캐시에 서비스하게 하는 경우, 프록시 캐시는 대신 미디어 소스로부터 세그먼트를 요청하도록 클라이언트를 유도해야만 하는 놓침 표지자를 반환할 수 있다.
도 4는 본 발명의 일 실시예에 따른 미디어 소스(410), 프록시 캐시(420) 및 클라이언트(430) 사이의 예시적인 통신 흐름을 예시한다. 이 예에서, 통신 흐름은 클라이언트(430)가 미디어 소스(410)(메시지 440)로부터 재생 목록을 다운로드할 때 시작할 수 있다. 클라이언트(430)는 재생 목록으로부터 어드레스(이 예에서, URL)를 선택할 수 있고(박스 442), 요청된 세그먼트(메시지 444)의 URL을 식별하는 요청을 프록시 캐시(420)에 송신할 수 있다.
프록시 캐시(420)는 그것이 URL에 의해 참조되는 세그먼트를 저장하는지를 결정할 수 있다(박스 446). 프록시 캐시(420)가 요청된 세그먼트를 저장하는 경우, 프록시 캐시(420)는 요청된 세그먼트를 클라이언트(430)에 송신한다(메시지 450). 프록시 캐시(420)가 요청된 세그먼트를 저장하지 않는 경우, 프록시 캐시(420)는 클라이언트(430)에 "놓침" 표지를 반환할 수 있다(메시지 456).
요청된 세그먼트가 프록시 캐시(420)에 의해 제공되는 경우(메시지 450), 클라이언트(430)는 세그먼트를 디코딩하고(박스 452), 다음 세그먼트를 위해 박스(442)로 되돌아갈 수 있다(흐름 454). 프록시 캐시(420)로부터의 놓침 표지에 응답하여(메시지 456), 클라이언트(430)는 요청된 세그먼트의 URL을 식별하는 요청을 미디어 소스(410)에 송신할 수 있다(메시지 458).
미디어 소스(410)는 그것이 URL에 의해 참조되는 세그먼트를 저장하는지를 결정할 수 있다(박스 460). 미디어 소스(410)가 요청된 세그먼트를 저장하는 경우, 미디어 소스(410)는 요청된 세그먼트를 클라이언트(430)에 송신할 수 있다(메시지 462). 미디어 소스(410)가 요청된 세그먼트를 저장하지 않는 경우, 미디어 소스(410)는 "놓침" 표지를 클라이언트(430)에 반환할 수 있다(메시지 468).
요청된 세그먼트가 미디어 서버(410)에 의해 제공되는 경우(메시지 462), 클라이언트(430)는 세그먼트를 디코딩하고(박스 464), 다음 세그먼트를 위해 박스(442)로 되돌아갈 수 있다(흐름 466). 미디어 서버(410)로부터의 놓침 표지에 응답하여(메시지 468), 클라이언트(430)는 오류 복구 프로세스(470)에 관여할 수 있다.
클라이언트(430)는 다양한 방법들로 프록시 캐시(420)를 식별할 수 있다. 클라이언트(430)는 미디어 소스(410)로부터의 세그먼트들의 유니캐스트 전달을 지원하는 프록시 캐시(들)(420)의 네트워크 위치들을 식별하는 미디어 전달을 위한 서비스에 가입했을 수 있는데, 이 경우 프록시 캐시(들)(420)의 네트워크 위치들은 구성 데이터(도시하지 않음)의 일부로서 클라이언트(430)에 의해 국부적으로 저장될 수 있다. 대안적으로, 클라이언트(430)는 예를 들면, 재생 목록 내의 미디어 소스(410)에 의해 제공된 정보로부터 동적으로 프록시 캐시(420)의 네트워크 위치들을 발견할 수 있다. 또한, 다른 실시예에서, 프록시 캐시(420)는 미디어 시퀀스의 스트리밍을 또한 지원하는 다른 프록시 캐시(들)(도시하지 않음)의 네트워크 위치들을 식별할 수 있고, 이때 클라이언트(430)는 제1 프록시 캐시(420)에 의해 제공되는 서비스에서 그것이 차선의 조건(sub-optimal condition)들을 검출하는 경우, 예를 들면 네트워크 혼잡 이벤트 또는 비트 오류 레이트가 관찰되는 경우 어드레스할 수 있다. 마지막으로, 프록시 캐시(420)의 네트워크 위치는 클라이언트(430)에 영구적으로 저장될 수 있고, 이는 모든 클라이언트 통신이 많은 셋톱 박스 구현들에서 통상적일 수 있는 것처럼 공통 네트워크 통신 허브를 통해 이동되는 네트워크 구현들에서 적절할 수 있다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 데이터그램들을 위한 예시적인 프로토콜들을 예시한다. 도 5a는 제어 정보를 포함하는 데이터그램(510)을 예시하고, 도 5b는 코딩된 세그먼트 데이터를 포함하는 데이터그램(520)을 예시한다.
제어 데이터그램(510)은 시퀀스 수(512), 제어 메시지(514) 및 관련 세그먼트의 어드레스(516)에 대한 필드들을 포함할 수 있다. 시퀀스 수(512)는 브로드캐스트 채널 내의 다른 데이터그램들에 관하여 데이터그램의 전송의 순서를 나타낼 수 있다. 제어 메시지(514)는 주어진 세그먼트의 온셋 또는 종료를 나타낼 수 있다. 예를 들면, 제어 메시지(514)는 데이터그램이 세그먼트 내의 첫 데이터그램이거나 데이터그램이 세그먼트 내의 마지막 데이터그램임을 나타낼 수 있다. 새로운 세그먼트의 개시를 나타내는 제어 메시지들(514)에 대하여, 어드레스(516)는 미디어 서버에 저장된 것과 연관된 세그먼트의 위치를 제공할 수 있다. 세그먼트의 마지막 데이터그램을 나타내는 제어 메시지들(514)에 대하여, 어드레스(516)는 후속 세그먼트 내에서 제1 데이터그램의 위치를 제공할 수 있다.
옵션의 메타데이터 필드들(518)은 적절할 수 있으므로 버전 제어 또는 다른 시그널링 기능들을 제공할 수 있다.
코딩된 세그먼트(520)를 포함하는 데이터그램은 시퀀스 수(522)에 대한 그리고 코딩된 데이터(524)에 대한 필드들을 포함할 수 있다. 시퀀스 수(522)는 브로드캐스트 채널로 다른 데이터그램들에 관하여 데이터그램의 전송의 순서를 나타낼 수 있다. 코딩된 데이터(524)는 세그먼트의 코딩된 비디오 데이터를 포함할 수 있다. 옵션적으로, 메타데이터 필드들(526)은 적절할 수 있으므로 버전 제어 또는 다른 시그널링 기능들을 제공할 수 있다.
도 5에 예시된 예에서, 데이터그램 포맷은 사용자 데이터그램 프로토콜(UDP)이 인터넷 프로토콜들에 대해 정의된 후에 모델링된다. 그러나, 데이터그램 프로토콜은 원할 수 있는 바와 같이 다른 시그널링 프로토콜들에 적합하도록 변경될 수 있다.
일부 애플리케이션들에서, 전술한 모듈들은 집적된 소프트웨어 시스템의 요소들로서 제공될 수 있고, 이때 블록들은 컴퓨터 프로그램의 별개 요소들로서 제공될 수 있다. 일부 실시예들은 예를 들면, 비일시적 컴퓨터 판독 가능한 저장 매체 또는 물품을 사용하여 구현될 수 있는데, 이는 프로세서에 의해 실행되는 경우, 프로세서로 하여금 개시된 실시예들에 따른 방법을 수행하게 할 수 있는 명령어 또는 명령어들의 세트를 저장할 수 있다. 본 발명의 다른 애플리케이션들은 전용 하드웨어 및 소프트웨어 컴포넌트들의 하이브리드 시스템으로서 구현될 수 있다.
예시적인 방법들 및 컴퓨터 프로그램 명령어들은 비일시적 기계 판독 가능한 저장 매체 상에서 구현될 수 있다. 또한, 서버 또는 데이터베이스 서버는 기계 실행 가능한 프로그램 명령어들을 저장하도록 구성되는 기계 판독 가능한 미디어를 포함할 수 있다. 본 발명의 실시예들의 특징들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합으로 구현되고 시스템, 서브시스템, 컴포넌트들 또는 그 서브컴포넌트들로 활용될 수 있다. "기계 판독 가능한 저장 매체"는 정보를 저장할 수 있는 임의의 매체를 포함할 수 있다. 기계 판독 가능한 저장 매체의 예들은 전자 회로들, 반도체 메모리 디바이스, ROM, 플래시 메모리, 소거 가능한 ROM(EROM), 플로피 디스켓, CD-ROM, 광 디스크, 하드 디스크, 광섬유 매체, 또는 임의의 전자기 또는 광 저장 디바이스를 포함한다.
임의의 실제 구현의 개발(임의의 개발 프로젝트에서와 같이)에 있어서, 많은 결정들이 개발자의 특정 목적들(예를 들면, 시스템 및 비지니스 관련 제약 조건을 준수)을 성취하도록 만들어져야만 하고, 이러한 목적들이 구현에 따라 변화할 것임이 이해될 것이다. 또한, 이러한 개발 노력들이 복잡하며 시간이 걸릴 수 있으나, 그럼에도 불구하고 본 발명의 이익을 갖는 디지털 비디오 캡처, 처리 및 분배 분야에서 통상의 지식을 가진 자에게는 일상적인 것임이 이해될 것이다.
본 명세서에 예시되고 설명된 공정들은 일련의 단계들을 포함하지만, 본 개시내용의 상이한 실시예들은 예시된 단계들의 순서에 제한되는 것이 아니므로, 본 명세서에 도시되고 설명된 것 이외에 동일한 단계들이 상이한 순서들로 발생할 수 있고, 일부는 다른 단계들과 동시에 발생할 수 있다는 점이 인식될 것이다. 추가로, 본 발명에 따른 방법을 구현하는 데 모든 예시된 단계들이 요구되는 것은 아니다. 게다가, 본 명세서에 예시되고 설명된 장치 및 시스템과 연관된 공정들뿐만 아니라 예시되지 않은 다른 시스템들과 연관된 공정들이 구현될 수 있다는 점이 인식될 것이다.
위의 상세한 설명이 의도적인 예시이며, 제한하려는 것이 아님이 이해될 것이다. 예를 들면, 위에 기술된 실시예들은 서로 조합하여 이용될 수 있다. 다른 많은 실시예들은 위의 상세한 설명을 검토하면 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게는 명백할 것이다. 그러므로, 본 발명의 범주는 첨부된 청구범위를 참조하여, 이러한 청구범위의 권리를 갖는 등가물들의 전체 범주에 따라 결정되어야 한다.

Claims (27)

  1. 프록시 서버에서, 브로드캐스트 채널(broadcast channel)을 통해 송신된 미디어 데이터를 처리하기 위한 방법으로서,
    상기 브로드캐스트 채널을 통해 전송된 데이터의 패킷들을 수신하는 단계;
    상기 패킷들을 분석하여 각 패킷이 속해 있는 세그먼트(들)를 식별하는 단계;
    특정 세그먼트에 속해 있는 모든 패킷들이 수신되었는지를 결정하는 단계;
    상기 특정 세그먼트에 속해 있는 모든 패킷들이 수신되었다고 결정될 때:
    상기 특정 세그먼트의 상기 패킷들을 캐시에 저장하는 단계; 및
    상기 세그먼트의 소스 어드레스와 상기 캐시 내의 상기 특정 세그먼트의 위치 사이의 매핑을 생성하는 단계; 및
    상기 특정 세그먼트에 속해 있는 패킷들의 일부가 손실되었다고 결정될 때 상기 특정 세그먼트에 연관된 모든 패킷들을 폐기하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 특정 세그먼트의 상기 소스 어드레스는 상기 패킷들 중 하나의 패킷에 포함되는, 방법.
  3. 제1항에 있어서,
    세그먼트에 대한 클라이언트 디바이스로부터의 요청에 응답하여 - 상기 요청은 상기 요청된 세그먼트의 어드레스를 포함함 -, 상기 요청된 세그먼트가 상기 캐시에 저장되는지를 상기 매핑에 기초하여 결정하는 단계;
    상기 세그먼트가 상기 캐시에 저장되는 경우, 상기 요청된 세그먼트를 상기 클라이언트 디바이스에 전송하는 단계; 및
    상기 세그먼트가 상기 캐시에 저장되지 않는 경우, 상기 요청된 세그먼트가 이용가능하지 않음을 나타내는 신호를 상기 클라이언트 디바이스에 송신하는 단계
    를 추가로 포함하는, 방법.
  4. 제1항에 있어서, 상기 패킷(들)은 새로운 세그먼트의 개시 패킷(starting packet)으로서 주어진 패킷을 식별하는 코드를 포함하는, 방법.
  5. 제1항에 있어서, 적어도 하나의 패킷은 새로운 세그먼트의 개시 패킷으로서 상기 패킷을 식별하는 코드를 포함하고, 적어도 하나의 다른 패킷은 상기 새로운 세그먼트의 종료 패킷(ending packet)으로서 상기 다른 패킷을 식별하는 다른 코드를 포함하는, 방법.
  6. 삭제
  7. 제1항에 있어서, 상기 캐시로부터 검색된 세그먼트들의 복수의 유니캐스트 전송을 제공하는 단계를 추가로 포함하는, 방법.
  8. 미디어 분배를 위한 프록시 캐시로서,
    서버; 및
    저장 장치
    를 포함하며, 상기 저장 장치는,
    미디어 소스로부터 각 세그먼트에 속해 있는 모든 패킷들이 수신된 경우에의 코딩된 비디오 데이터의 하나 이상의 세그먼트, 및
    각 세그먼트의 어드레스를 상기 미디어 소스 상의 상기 세그먼트의 네트워크 어드레스와 연결시키는 매핑 테이블
    을 저장하는, 프록시 캐시.
  9. 미디어 전달 시스템으로서,
    데이터 세그먼트들을 저장하는 캐시; 및
    프록시 서버
    를 포함하며, 상기 프록시 서버는,
    브로드캐스트 채널을 통해 전송된 데이터의 패킷들을 수신하고,
    각 패킷이 어느 세그먼트에 속하는지를 결정하고,
    특정 세그먼트에 속해 있는 모든 패킷들이 수신되었는지를 결정하고,
    상기 특정 세그먼트에 속해 있는 모든 패킷들이 수신되었다고 결정될 때, 상기 패킷들을 갖는 상기 세그먼트를 상기 캐시에 저장하고,
    상기 세그먼트의 고유 어드레스와 상기 캐시 내의 상기 세그먼트의 위치 사이의 매핑을 생성하고,
    상기 특정 세그먼트에 속해 있는 모든 패킷들이 수신되지 않았다고 결정될 때 상기 특정 세그먼트와 연관된 모든 패킷들을 폐기하도록 구성되는, 미디어 전달 시스템.
  10. 제9항에 있어서, 상기 프록시 서버는,
    세그먼트에 대한 클라이언트 디바이스로부터의 요청을 수신하고 - 상기 요청은 상기 요청된 세그먼트의 어드레스를 포함함 -;
    상기 요청된 세그먼트가 상기 캐시에 저장되는지를 상기 매핑에 기초하여 결정하고;
    상기 세그먼트가 상기 캐시에 저장되는 경우, 상기 요청된 세그먼트를 상기 클라이언트 디바이스에 전송하고;
    상기 세그먼트가 상기 캐시에 저장되지 않는 경우, 상기 요청된 세그먼트가 이용가능하지 않음을 나타내는 신호를 상기 클라이언트 디바이스에 송신하도록 추가로 구성되는, 미디어 전달 시스템.
  11. 제9항에 있어서, 상기 프록시 서버는 상기 데이터의 패킷들을 분석하여 어느 패킷이 상기 세그먼트의 개시 패킷이고 어느 패킷이 상기 세그먼트의 종료 패킷인지를 결정하도록 추가로 구성되는, 미디어 전달 시스템.
  12. 제9항에 있어서, 상기 브로드캐스트 채널을 통해 상기 데이터의 패킷들을 송신하는 미디어 소스를 추가로 포함하는, 미디어 전달 시스템.
  13. 제12항에 있어서, 상기 미디어 소스는,
    데이터의 코딩된 스트림을 저장하기 위한 메모리; 및
    소스 서버를 포함하며, 상기 소스 서버는,
    미디어 스트림을 코딩하고,
    상기 메모리에 상기 코딩된 스트림의 세그먼트들을 저장하고 - 각 세그먼트는 복수의 데이터의 패킷을 포함함 -,
    상기 메모리에 저장된 각 세그먼트에 대한 어드레스를 포함하는 재생 목록을 생성하도록 구성되는, 미디어 전달 시스템.
  14. 제13항에 있어서, 상기 소스 서버는 상기 브로드캐스트 채널을 통해 상기 재생 목록을 주기적으로 송신하도록 추가로 구성되는, 미디어 전달 시스템.
  15. 삭제
  16. 삭제
  17. 제9항에 있어서, 상기 프록시 서버는 상기 저장된 세그먼트들의 복수의 유니캐스트 전송을 제공하도록 추가로 구성되는, 미디어 전달 시스템.
  18. 스트리밍 데이터를 수신하기 위한 방법으로서,
    미디어 소스로부터 재생 목록을 수신하는 단계 - 상기 재생 목록은 미디어 시퀀스의 코딩된 세그먼트들의 어드레스들을 식별함 -;
    상기 재생 목록에 목록화된 세그먼트에 대한 요청을 프록시 캐시에 송신하는 단계 - 상기 요청은 상기 요청된 세그먼트의 상기 어드레스를 식별함 -; 및
    상기 프록시 캐시가 상기 요청된 세그먼트가 이용가능하지 않다는 표지를 반환하는 경우, 상기 요청된 세그먼트의 상기 어드레스를 식별하는 요청을 상기 미디어 소스에 송신하는 단계
    를 포함하는, 방법.
  19. 제18항에 있어서, 그 후에, 상기 미디어 시퀀스의 다음 세그먼트에 대한 새로운 요청을 상기 프록시 캐시에 송신하는 단계를 추가로 포함하며, 상기 새로운 요청은 상기 재생 목록으로부터 취한 상기 다음 세그먼트의 어드레스를 식별하는, 방법.
  20. 제18항에 있어서, 상기 미디어 소스가 상기 요청된 세그먼트를 제공하는 경우, 상기 요청된 세그먼트를 디코딩하는 단계를 추가로 포함하는, 방법.
  21. 제18항에 있어서, 상기 프록시 캐시가 상기 요청된 세그먼트를 제공하는 경우, 상기 요청된 세그먼트를 디코딩하는 단계를 추가로 포함하는, 방법.
  22. 제18항에 있어서, 상기 재생 목록은 상기 프록시 캐시의 네트워크 어드레스를 목록화하는, 방법.
  23. 제18항에 있어서,
    상기 재생 목록은 상기 세그먼트들의 프리젠테이션 순서를 식별하고,
    상기 요청된 세그먼트가 상기 미디어 소스로부터 이용가능하지 않은 경우,
    프리젠테이션 순서 내의 다음 세그먼트에 앞서 상기 재생 목록으로부터의 새로운 세그먼트로 건너뛰는 단계; 및
    상기 새로운 세그먼트에 대한 요청을 상기 프록시 캐시에 송신하는 단계를 추가로 포함하는, 방법.
  24. 제18항에 있어서, 상기 프록시 캐시는 상기 미디어 소스로부터 수신된 데이터의 코딩된 세그먼트들을 저장하는, 방법.
  25. 미디어 전달 방법으로서,
    브로드캐스트 전송을 통해 미디어 시퀀스를 나타내는 코딩된 비디오 데이터의 세그먼트들을 프록시 캐시에 전송하는 단계;
    클라이언트 디바이스로부터의 상기 미디어 시퀀스에 대한 초기 요청에 응답하여, 상기 코딩된 비디오 데이터의 세그먼트들의 어드레스들을 식별하는 재생 목록을 전송하는 단계; 및
    상기 재생 목록으로부터의 어드레스(들)를 식별하는 상기 클라이언트 디바이스로부터의 후속 요청(들)에 응답하여, 상기 식별된 세그먼트(들)를 상기 클라이언트 디바이스에 전송하는 단계
    를 포함하는, 방법.
  26. 제25항에 있어서, 상기 프록시 캐시와 상기 클라이언트 디바이스 사이에 전송 오류의 부재 시에, 세그먼트들에 대한 상기 클라이언트 디바이스로부터의 요청들의 수는 상기 재생 목록 상의 식별된 상기 세그먼트들 중 일부를 건너뛰는, 방법.
  27. 제25항에 있어서, 재귀적으로:
    상기 코딩된 비디오의 세그먼트들로서 소스 비디오를 코딩하는 단계,
    상기 코딩된 비디오의 세그먼트들을 임시로 저장하는 단계,
    그 후에, 저장 장치로부터 상기 세그먼트들을 퍼징(purging)하는 단계, 및
    상기 재생 목록을 업데이트하여 저장 장치 내의 현재 세그먼트(들)를 식별하는 단계
    를 추가로 포함하는, 방법.
KR1020157025117A 2013-03-14 2014-02-28 오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜 KR101773275B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361783811P 2013-03-14 2013-03-14
US61/783,811 2013-03-14
PCT/US2014/019431 WO2014158707A1 (en) 2013-03-14 2014-02-28 Media delivery service protocol to support large numbers of client with error failover processes

Publications (2)

Publication Number Publication Date
KR20150119277A KR20150119277A (ko) 2015-10-23
KR101773275B1 true KR101773275B1 (ko) 2017-08-31

Family

ID=50336532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157025117A KR101773275B1 (ko) 2013-03-14 2014-02-28 오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜

Country Status (6)

Country Link
US (1) US9917916B2 (ko)
EP (1) EP2957052B1 (ko)
KR (1) KR101773275B1 (ko)
CN (1) CN105191184B (ko)
TW (1) TWI558180B (ko)
WO (1) WO2014158707A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9357247B2 (en) 2008-11-24 2016-05-31 Time Warner Cable Enterprises Llc Apparatus and methods for content delivery and message exchange across multiple content delivery networks
CN104301743B (zh) * 2014-09-11 2018-02-23 华为技术有限公司 传输视频的方法、网关设备和视频传输***
CN104754415B (zh) * 2015-03-30 2018-02-09 北京奇艺世纪科技有限公司 一种视频播放方法及装置
US20170063813A1 (en) * 2015-06-03 2017-03-02 The Government Of The United States, As Represented By The Secretary Of The Army Secure Packet Communication with Common Protocol
US10404758B2 (en) * 2016-02-26 2019-09-03 Time Warner Cable Enterprises Llc Apparatus and methods for centralized message exchange in a user premises device
US10484726B2 (en) * 2017-06-02 2019-11-19 Apple Inc. Playlist error tags for delivery and rendering of streamed media
CN112492118B (zh) * 2018-06-21 2023-11-17 深圳市道通智能航空技术股份有限公司 数据传输控制方法、信息发送端、接收端及飞行器图传***
US10911793B2 (en) * 2018-11-14 2021-02-02 Sony Interactive Entertainment LLC Video start-time reduction employing reductive edging principles
US11197052B2 (en) * 2019-07-12 2021-12-07 Apple Inc. Low latency streaming media
US11856034B2 (en) * 2020-09-01 2023-12-26 Hewlett Packard Enterprise Development Lp Dynamic voice over internet protocol proxy for network bandwidth optimization
WO2023141280A1 (en) * 2022-01-21 2023-07-27 Ofinno, Llc Data unit processing
CN116132425B (zh) * 2022-12-27 2024-03-26 中国电子科技集团公司第三十研究所 一种大规模多路数据跨网单向导入方法及***

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070266169A1 (en) * 2006-05-10 2007-11-15 Songqing Chen System and method for streaming media objects

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444848A (en) 1992-04-30 1995-08-22 Bull Hn Information Systems Inc. Distribution of communications connections over multiple service access points by choosing remote and local access points having lowest number of connections
US5636216A (en) 1994-04-08 1997-06-03 Metricom, Inc. Method for translating internet protocol addresses to other distributed network addressing schemes
US5614940A (en) * 1994-10-21 1997-03-25 Intel Corporation Method and apparatus for providing broadcast information with indexing
US5678041A (en) 1995-06-06 1997-10-14 At&T System and method for restricting user access rights on the internet based on rating information stored in a relational database
US5708780A (en) 1995-06-07 1998-01-13 Open Market, Inc. Internet server access control and monitoring systems
US5835718A (en) 1996-04-10 1998-11-10 At&T Corp URL rewriting pseudo proxy server
US5864852A (en) * 1996-04-26 1999-01-26 Netscape Communications Corporation Proxy server caching mechanism that provides a file directory structure and a mapping mechanism within the file directory structure
US5748901A (en) 1996-05-21 1998-05-05 Ramot University Authority Ltd. Flow control algorithm for high speed networks
US5918013A (en) 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US6298386B1 (en) 1996-08-14 2001-10-02 Emc Corporation Network file server having a message collector queue for connection and connectionless oriented protocols
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US6122514A (en) 1997-01-03 2000-09-19 Cellport Systems, Inc. Communications channel selection
US6047322A (en) 1997-05-27 2000-04-04 Ukiah Software, Inc. Method and apparatus for quality of service management
US6119235A (en) 1997-05-27 2000-09-12 Ukiah Software, Inc. Method and apparatus for quality of service management
US6308216B1 (en) 1997-11-14 2001-10-23 International Business Machines Corporation Service request routing using quality-of-service data and network resource information
US6185598B1 (en) 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6304892B1 (en) 1998-11-02 2001-10-16 Hewlett-Packard Company Management system for selective data exchanges across federated environments
US6360270B1 (en) 1998-11-16 2002-03-19 Hewlett-Packard Company Hybrid and predictive admission control strategies for a server
US6526448B1 (en) 1998-12-22 2003-02-25 At&T Corp. Pseudo proxy server providing instant overflow capacity to computer networks
US6286031B1 (en) 1999-01-21 2001-09-04 Jerry Richard Waese Scalable multimedia distribution method using client pull to retrieve objects in a client-specific multimedia list
DK1339256T3 (da) 2003-03-03 2018-01-29 Sonova Ag Fremgangsmåde til fremstilling af akustiske apparater og til at mindske vindforstyrrelsen
US8544050B2 (en) * 2003-12-30 2013-09-24 Aol Inc. Rule-based playlist engine
CN101595731A (zh) 2007-01-18 2009-12-02 汤姆森许可贸易公司 前缀高速缓存辅助的服务质量感知对等视频点播
EP2312464A1 (en) 2009-10-14 2011-04-20 Amadeus S.A.S. Method of and apparatus for operating on data in a distributed client-server architecture comprising heterogeneous platforms
CN102598691B (zh) * 2009-11-03 2015-02-18 瑞典爱立信有限公司 利用数据分段的可选广播传送的流传输
EP2597824A4 (en) 2010-07-20 2014-02-26 Sharp Kk PROXY SERVER, RELAY METHOD, COMMUNICATION SYSTEM, RELAY CONTROL PROGRAM, AND RECORDING MEDIUM
KR101528991B1 (ko) 2011-01-11 2015-06-15 애플 인크. 실시간 또는 준 실시간 스트리밍
US9577824B2 (en) 2011-09-23 2017-02-21 CSC Holdings, LLC Delivering a content item from a server to a device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070266169A1 (en) * 2006-05-10 2007-11-15 Songqing Chen System and method for streaming media objects

Also Published As

Publication number Publication date
EP2957052B1 (en) 2022-07-20
KR20150119277A (ko) 2015-10-23
TWI558180B (zh) 2016-11-11
US20140281707A1 (en) 2014-09-18
US9917916B2 (en) 2018-03-13
CN105191184B (zh) 2019-08-20
EP2957052A1 (en) 2015-12-23
TW201442493A (zh) 2014-11-01
WO2014158707A1 (en) 2014-10-02
CN105191184A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
KR101773275B1 (ko) 오류 장애극복 프로세스를 이용하여 상당수의 클라이언트를 지원하기 위한 미디어 전달 서비스 프로토콜
US10939178B2 (en) Media streaming with latency minimization
US10771527B2 (en) Caching and streaming of digital media content subsets
US11477262B2 (en) Requesting multiple chunks from a network node on the basis of a single request message
CN108886511B (zh) 基于补丁来更新清单文件的部分
CN110430457B (zh) 异端音视频播放方法、装置及音视频播放***
US8046432B2 (en) Network caching for multiple contemporaneous requests
CN106233735B (zh) 管理多播视频传送的方法
US20230269423A1 (en) Fast Tune-In for Low Latency Streaming
US20110320629A1 (en) Stream media server, client terminal and method and system for downloading stream media
US10033824B2 (en) Cache manifest for efficient peer assisted streaming
JP2018519694A (ja) Dashオーバーブロードキャストをサポートするためのさらなるデバイスタイミング調整および方法
US8817983B2 (en) Streaming video to cellular phones
WO2016053526A1 (en) Systems and methods for signaling request acceleration in the transport layer
US10306272B2 (en) Content supply device, content supply method, program, terminal device, and content supply system
JP2012257041A (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