KR20110139214A - 컴퓨터 구현 방법 및 컴퓨터 시스템 - Google Patents

컴퓨터 구현 방법 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR20110139214A
KR20110139214A KR1020117021108A KR20117021108A KR20110139214A KR 20110139214 A KR20110139214 A KR 20110139214A KR 1020117021108 A KR1020117021108 A KR 1020117021108A KR 20117021108 A KR20117021108 A KR 20117021108A KR 20110139214 A KR20110139214 A KR 20110139214A
Authority
KR
South Korea
Prior art keywords
client
media
server
fragment
request
Prior art date
Application number
KR1020117021108A
Other languages
English (en)
Other versions
KR101616152B1 (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 KR20110139214A publication Critical patent/KR20110139214A/ko
Application granted granted Critical
Publication of KR101616152B1 publication Critical patent/KR101616152B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • 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/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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/70Media network packetisation
    • 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/762Media network packet handling at the source 
    • 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
    • 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/566Grouping or aggregating service requests, e.g. for unified processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

부드러운 스트리밍 시스템은, 서버가 미디어 조각에 증분 제어 정보를 포함시키는 클라이언트와 서버 사이의 상태비보존형 프로토콜을 제공한다. 서버는 기존 인터넷 캐시 인프라스트럭쳐에 의해 캐시가능한 미디어 조각 요청에 대한 균일한 미디어 조각 응답을 제공한다. 부드러운 스트리밍 시스템은 하나 이상의 인코더로부터 조각으로 미디어 데이터를 수신하고, 각 조각의 인덱스를 생성하며, 조각을 저장한다. 서버는 서버 상에서 사용가능한 인코딩을 설명하는 메타데이터 정보와 조각의 인코딩을 포함하는 조각을 클라이언트에게 제공한다. 서버는, 클라이언트가 데이터를 너무 빠르게 또는 너무 느리게 요청하는지 여부를 클라이언트가 결정할 수 있도록 하는 정보를 각 조각 내에서 제공할 수도 있어서, 클라이언트는 서버가 인코더 데이터를 수신하고 있는 레이트에 맞는 케이던스로 그 요청 레이트를 적응시킬 수 있다.

Description

컴퓨터 구현 방법 및 컴퓨터 시스템{DELIVERING CACHEABLE STREAMING MEDIA PRESENTATIONS}
스트리밍 미디어는, (서버를 이용하는) 스트리밍 제공자에 의해 멀티미디어가 전달되고 있는 동안 (클라이언트를 이용하는) 최종 사용자에 의해 계속적으로 수신되고 최종 사용자에게 보통으로 제시되는 멀티미디어이다. RTSP(Real-time Streaming Protocol), RTP(Real-time Transport Protocol), 및 RTCP(Real-time Transport Control Protocol)를 포함하여 스트리밍 미디어를 위한 몇몇의 프로토콜이 존재하며, 이들은 주로 함께 사용된다. IETF(Internet Engineering Task Force)에 의해 개발되고 1998년에 RFC(Request For Comments) 2326으로서 생성된 RTSP(Real Time Streaming Protocol)는 스트리밍 미디어 시스템에서 사용하기 위한 프로토콜이고, 이는 클라이언트가 "재생" 및 "정지"와 같은 VCR 유사 명령을 발함으로써 스트리밍 미디어 서버를 원격으로 제어할 수 있도록 하며, 서버 상에서 파일에 대한 시간-기반 액세스를 허용한다.
스트리밍 데이터 자체의 전송은 RTSP 프로토콜의 일부가 아니다. 대부분의 RTSP 서버는 실제 오디오/비디오 데이터에 대한 전송 프로토콜로서 표준-기반 RTP를 사용하여, 다소간 메타데이터 채널로서 동작한다. RTP는 인터넷을 통해 오디오 및 비디오를 전달하기 위한 표준화된 패킷 포맷을 정의한다. RTP는 IETF의 오디오-비디오 전송 작업 그룹(Audio-Video Transport Working Group)에 의해 개발되었으며 1996년에 RFC 1889로 처음 발간되고 2003년에 RFC 3550에 의해 대체되었다. 이 프로토콜은 신택스와 동작에서 HTTP(Hypertext Transport Protocol)와 유사하지만, RTSP는 새로운 요청을 부가한다. HTTP가 상태 비보존형(stateless)인 반면, RTSP는 상태보존형(stateful) 프로토콜이다. 필요한 경우에 세션을 추적하기 위해 세션 ID가 사용된다. 서버가 클라이언트로 메시지를 전송하는 경우에 일부 예외는 있지만, RTSP 메시지는 클라이언트로부터 서버로 전송된다.
RTP는 보통 RTCP와 함께 사용된다. RTP가 미디어 스트림(예를 들어, 오디오 및 비디오) 또는 아웃오브밴드(out-of-band) 시그널링(DTMF(dual-tone multi- frequency))을 반송하는 반면, RTCP는 송신 통계 및 QoS(quality of service) 정보를 모니터링하는데 사용된다. RTP는, 소스에서 목적지로 데이터를 반송하는 한가지 유형의 메시지만을 허용한다. 많은 경우에, 세션에서 다른 메시지를 사용할 필요가 있다. 이들 메시지는 데이터의 흐름과 품질을 제어하고, 수신자가 소스 또는 소스들에 피드백을 보낼 수 있게 한다. RTCP는 이 목적으로 설계된 프로토콜이다. RTCP는 센더 리포트(sender report), 리시버 리포트(receiver report), 소스 설명 메시지(source description message), BYE 메시지(bye message) 및 애플리케이션 특정 메시지(application-specific message)의 다섯가지 유형의 메세지를 갖는다. RTCP는 RTP 흐름을 위한 아웃오브밴드 제어 정보를 제공한다. RTCP는 멀티미디어 데이터의 전달과 패키징에서 RTP와 함께 동작하지만, 그 자체로 데이터를 전송하지 않는다. 이는 스트리밍 멀티미디어 세션에서 참가자에게 제어 패킷을 전송하기 위해 주기적으로 이용된다. RTCP의 기능 중 하나는 RTP에 의해 제공되고 있는 서비스의 품질에 대한 피드백을 제공하는 것이다. RTCP는, 미디어 접속에 대한 통계와 전송된 바이트, 전송된 패킷, 손실된 패킷, 지터, 피드백 및 라운드 트립 딜레이와 같은 정보를 수집한다. 애플리케이션은 이 정보를, 아마도 흐름을 제한하거나 다른 코덱이나 비트 레이트를 사용함으로써, 서비스 품질을 높이는데 사용할 수 있다.
기존 미디어 스트리밍 구조에서의 한 가지 문제점은 서버와 클라이언트 사이의 밀접한 결합(tight coupling)이다. 클라이언트와 서버 사이의 상태보존형 접속은, 서버가 각 클라이언트의 현재 상태를 추적하기 때문에, 추가적인 서버 오버헤드를 생성한다. 이는 서버의 확장성(scalability)을 제한하기도 한다. 또한, 클라이언트는, 먼저 서버와 통신하고 서버가 적응 및 응답하기를 대기하지 않고는, 증가하는 패킷 손실, 감소하는 대역폭, 다른 컨텐츠 또는 기존 컨텐츠 수정(예를 들어, 속도 증가 또는 되감기)에 대한 사용자 요청 등과 같은 변화하는 조건에 빠르게 반응하지 못한다. 종종 클라이언트가 (예를 들어, RTCP를 통해서) 더 낮은 사용가능한 대역폭을 보고하는 때에, 서버는 충분히 빠르게 적응하지 않아서 사용가능한 대역폭을 초과하는 패킷은 수신되지 않고 새로운 더 낮은 비트 레이트 패킷은 적시에 서버로부터 전송되지 않으므로 클라이언트로 접속한 사용자가 지각할 미디어의 깨짐(break)을 유발한다. 이 문제를 피하기 위해, 클라이언트는 종종 데이터를 버퍼링하지만, 버퍼링은 레이턴시를 유발하고, 이는 라이브 이벤트에 대해서는 수용할 수 없는 것일 수 있다.
또한, 인터넷은 오디오, 비디오, 문서 등을 포함하는 다운로드가능한 미디어 컨텐츠 아이템의 다양한 유형을 포함한다. 이들 컨텐츠 아이템은 보통, 수백 메가바이트의 비디오와 같이 매우 크다. 사용자는 주로 웹 브라우저를 통해 HTTP를 이용하여 인터넷 상에서 문서를 불러온다. 인터넷은 HTTP를 위한 데이터를 캐시하는데 효과적인 라우터와 프록시의 거대한 인프라스트럭쳐를 구축하였다. 서버들은 클라이언트들에게 캐시된 데이터를 제공함으로써 원 소스로부터 컨텐츠를 재요청하는 것보다 적은 리소스를 사용하고 지연을 감소시킬 수 있다. 예를 들어, 뉴욕의 사용자는 일본의 호스트로부터 서비스되는 컨텐츠 아이템을 다운로드하고 캘리포니아의 라우터를 통해 컨텐츠 아이템을 수신할 수 있다. 뉴저지의 사용자가 동일한 파일을 요청하는 경우, 캘리포니아의 라우터는 일본의 호스트로부터 데이터를 다시 요청하지 않고 컨텐츠 아이템을 제공할 수 있을 수 있다. 이는 과부하가 걸릴 수 있는 통신선 상의 네트워크 트래픽을 감소시키고, 뉴저지의 사용자가 더 낮은 레이턴시로 컨텐츠 아이템을 수신할 수 있도록 한다.
불행히도, 라이브 미디어는 주로 기존의 프로토콜을 이용해서는 캐시될 수 없고, 각 클라이언트는 동일한 서버 또는 동일한 서버의 집합으로부터 미디어를 요청한다. 또한, 스트리밍 미디어가 캐시될 수 있는 경우, 보통 기존의 용이하게 입수할 수 있는 HTTP-기반 인터넷 캐싱 인프라스트럭쳐가 아니라 특별한 캐시 하드웨어에 의해 이루어진다. 캐싱의 부재는 서버가 동시에 다룰 수 있는 시청자 및 요청의 개수를 제한하고, 라이브 이벤트의 참석을 제한한다. 인터넷을 통해 2008 올림픽의 개막식과 같은 라이브 이벤트를 시청한 사용자의 기록적인 수가 보여주듯이, 세계는 극히 최근의 라이브 정보를 소비하는데 인터넷을 점점 더 많이 사용하고 있다. 현재 기술의 한계는 이 유형의 미디어 컨텐츠를 사용하기 위한 수단으로서 인터넷의 채용을 늦추고 있다.
서버가 미디어 조각에 증분 제어 정보를 포함시키는 클라이언트와 서버 사이의 상태비보존형 프로토콜을 제공하고, 통상의 제어 채널의 사용을 배제시키는, 부드러운 스트리밍 시스템이 여기서 설명된다. 또한, 서버는 미디어 조각 요청에 대한 균일한 미디어 조각 응답을 제공하고, 그에 의해 기존 인터넷 캐시 인프라스트럭쳐가 스트리밍 미디어 데이터를 캐시할 수 있도록 한다. 부드러운 스트리밍 시스템은 하나 이상의 인코더로부터 조각으로 미디어 데이터를 수신하고, 각 조각의 인덱스를 생성하며, 조각을 저장한다. 이벤트가 진행함에 따라, 서버는 이벤트의 종료까지 클라이언트에의해 요청된 조각을 제공한다. 각 조각은 클라이언트에 의해 재생되기 위한 조각의 미디어 컨텐츠 외에도 서버 상에서 사용가능한 인코딩을 설명하는 메타데이터 정보와 조각의 인코딩을 포함한다. 서버는 다수의 인코딩으로 조각을 제공할 수 있어서, 클라이언트는, 예를 들어, 네트워크 조건에 기초하여 다른 비트 레이트 또는 재생 스피드의 조각으로 빠르게 전환할 수 있다. 서버는, 클라이언트가 데이터를 너무 빠르게 또는 너무 느리게 요청하는지 여부를 클라이언트가 결정할 수 있도록 하는 정보를 각 조각 내에서 제공할 수도 있어서, 클라이언트는 서버가 인코더 데이터를 수신하고 있는 레이트에 맞는 케이던스로 그 요청 레이트를 적응시킬 수 있다. 그러므로, 부드러운 스트리밍 시스템은, 클라이언트 상태를 추적함이 없이, 그리고 클라이언트에 로컬인 캐시 서버로부터 클라이언트가 더 낮은 레이턴시로 미디어를 수신할 가능성을 높이면서, 더 확장가능한 스트리밍 미디어 서버를 제공한다.
이 개요는 아래에서 상세한 설명에서 더 자세히 설명할 개념 중 선택된 것을 단순한 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 핵심 특징 또는 필수 특징을 식별하기 위한 것이 아니고, 청구된 주제의 범위를 제한하는데 사용되려는 것도 아니다.
도 1은 일 실시형태에서 부드러운 스트리밍 시스템의 구성요소를 도시하는 블록도이다.
도 2는 일 실시형태에서 마이크로소프트 윈도우즈 및 마이크로소프트 인터넷 정보 서버(Internet Information Server)(IIS)를 사용하는 부드러운 스트리밍 시스템의 운영 환경을 도시하는 블록도이다.
도 3은 일 실시형태에서 인코더로부터 미디어 데이터를 수신하는 시스템의 처리를 도시하는 흐름도이다.
도 4는 일 실시형태에서 스트리밍 미디어를 위한 클라이언트 접속을 다루기 위한 시스템의 처리를 도시하는 흐름도이다.
도 5는 일 실시형태에서 인코더로부터 원 서버와 클라이언트로의 미디어 조각의 흐름을 도시하는 데이터 흐름도이다.
서버가 미디어 조각(fragment)(즉, 청크)에 증분(incremental) 정보를 포함하고, 클라이언트와 서버 사이의 상태비보존형 프로토콜을 제공함으로써 통상의 제어 채널의 사용이 배제되는 부드러운 스트리밍 시스템(smooth streaming system)이 여기서 설명된다. 또한, 서버는 미디어 조각 요청에 대한 균일한 미디어 조각 응답을 제공하고(즉, 동일한 조각을 요청하는 클라이언트는 동일한 응답을 얻는다), 그에 의해 기존 인터넷 캐시 인프라스트럭쳐가 스트리밍 미디어 데이터를 캐시할 수 있도록 한다. 각각의 조각은, 조각이 인터넷 캐시 서버와 클라이언트의 브라우저 캐시 모두에 의해 식별되고 캐시될 수 있도록 하는 구별되는 URL(Uniform Resource Locator)을 갖는다. 캐싱은 서버 상의 부하를 감소시키고 더 많은 클라이언트가 동시에 동일한 컨텐츠를 볼 수 있도록 한다. 부드러운 스트리밍 시스템은 하나 이상의 인코더로부터 미디어 데이터를 조각으로 수신하고, 각 조각의 인덱스를 생성하고, 조각을 저장한다. 이벤트가 진행함에 따라, 서버는 이벤트 종료까지 클라이언트에 의해 요청된 조각을 제공한다. 각 조각은, 클라이언트에 의한 재생(playback)을 위한 조각의 미디어 컨텐츠 외에도, 서버 상에서 사용가능한 인코딩과 조각의 인코딩을 설명하는 메타데이터 정보를 포함한다. 클라이언트가, 예를 들어, 네트워크 상태에 기초하여 다른 비트레이트 또는 재생 스피드의 조각으로 빠르게 전환할 수 있도록 서버는 다수의 인코딩으로 조각을 제공할 수 있다. 서버는 클라이언트가, 클라이언트가 데이터를 너무 빨리 또는 너무 느리게 요청하고 있는지 여부를 결정할 수 있도록 하는 정보를 각 조각 내에서 제공할 수도 있어, 클라이언트가 그 요청 레이트를 서버가 인코더 데이터를 수신하고 있는 레이트에 맞는 케이던스(cadence)에 적응할 수 있다. 그러므로, 부드러운 스트리밍 시스템은 클라이언트 상태를 추적하지 않고도, 클라이언트가 클라이언트에 대해 로컬인 캐시 서버로부터 더 낮은 레이턴시로 미디어를 수신할 가능성을 높이면서 더 확장가능한 스트리밍 미디어 서버를 제공한다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 서버와 클라이언트 사이의 구체적인 데이터 송신 형식을 사용한다. 클라이언트는 서버로부터 미디어의 일부를 포함하는 미디어의 조각을 요청한다. 예를 들어, 10분짜리 파일에 대해, 클라이언트는 2초 조각을 요청할 수 있다. 서버가 클라이언트로 데이터를 밀어내는(push) 통상의 스트리밍과 달리, 이 경우에는 클라이언트가 서버로부터 미디어 조각을 끌어당긴다(pull). 라이브 스트림의 경우, 서버는 클라이언트 요청에 응답하기 위해 즉석에서(on the fly) 미디어를 생성하고 조각을 생성하고 있을 수 있다. 그러므로, 서버가 얼마나 빠르게 조각을 생성하는지 그리고 클라이언트가 얼마나 빠르게 조각을 요청하는지에 있어서, 클라이언트는 서버에 대해 단지 몇 조각만 뒤쳐질 수 있다.
각 조각은 메타데이터와 미디어 컨텐츠를 포함한다. 메타데이터는, 미디어 컨텐츠가 더 큰 미디어 요소의 어디에 해당하는지(예를 들어, 이 조각은 10분짜리 비디오 클립에서 1:10 오프셋을 나타낸다), 미디어 컨텐츠가 인코딩된 비트 레이트, 미디어 컨텐츠를 인코딩하는데 사용된 코덱 등과 같이 미디어 컨텐츠에 대한 유용한 정보를 설명할 수 있다. 클라이언트는 조각을 더 큰 미디어 요소의 스토리보드에 위치시키고 미디어 컨텐츠를 적절하게 디코딩하여 재생하는데 이 정보를 사용한다.
도 1은 일 실시형태에서 부드러운 스트리밍 시스템의 구성요소를 도시하는 블록도이다. 부드러운 스트리밍 시스템(100)은 레지스터 이벤트 구성요소(110), 인코더 인터페이스 구성요소(120), 인덱스 조각 구성요소(130), 조각 데이터 저장(140), 클라이언트 인터페이스 구성요소(150), 구축 클라이언트 명시 구성요소(160), 클록 동기화 구성요소(170)를 포함한다. 이들 구성요소 각각은 여기서 더 자세히 설명된다.
레지스터 이벤트 구성요소(110)는 시스템이 인코딩된 미디어 데이터를 수신할 라이브 또는 다른 미디어 이벤트에 대한 정보를 수신한다. 정보는 서버에 인코딩된 미디어 데이터를 공급할 인코더 각각에 대한 네트워크 주소 정보 또는 기타 식별자를 포함할 수 있다. 정보는 인코더가 인코딩된 미디어 데이터를 공급하고 클라이언트가 미디어 데이터를 액세스할 수 있는 URL도 포함한다.
인코더 인터페이스 구성요소(120)는 시스템과 인코딩된 미디어 데이터를 제공하는 하나 이상의 인코더 사이의 인터페이스를 제공한다. 인코더는 공통 네트워크 프로토콜을 이용하여 시스템에 데이터를 밀어낼 수 있다. 예를 들어, 인코더는 시스템에 인코딩된 미디어 데이터를 제공하기 위해 HTTP POST 요청을 이용할 수 있다. 인코더는 인코딩된 미디어 데이터의 소스인 인코더를 특정하는 구별되는 URL을 각각 이용할 수 있으며, 서버가 이를 미디어 이벤트가 레지스터된 때에 레지스터 이벤트 구성요소(110)에 의해 수신된 정보에 매칭시킬 수 있다.
인코더 인터페이스 구성요소(120)는 MP4 또는 기타 미디어 컨테이너(예를 들어, MKV)와 같은 수신된 인코딩된 미디어 데이터의 구체적 포맷을 특정할 수 있다. MP4 컨테이너 포맷은 하나의 파일에서 다수 유형의 데이터가 관련될 수 있도록 한다. MP4 컨테이너를 이루는 개별 데이터는 박스라고 불리고, 각 박스는 통상 그 박스에 저장된 데이터의 유형을 식별하는 레이블을 갖는다. 인코더는 인코딩된 미디어 데이터 그 자체 뿐만 아니라, 인코딩된 미디어 데이터를 인코딩하는데 사용된 인코딩 유형과 같은 메타데이터 정보를 박스 내에 위치시킬 수 있다.
인덱스 조각 구성요소(130)는 다양한 인코더로부터 수신된 조각의 인덱스 표를 생성하고 유지한다. 시스템(100)은 잠재적인 많은 인코더로부터 이벤트 동안 계속하여(on-going basis) 미디어 조각을 수신하고 있기 때문에, 시스템(100)은 어떤 미디어 조각이 수신되었는지와 어떤 인코더로부터 (또는 어떤 포맷으로) 수신되었는지를 추적하기 위해 인덱스 표를 사용한다. 각 인코더는 미디어 조각을 식별하기 위해 공통의 방법을 사용할 수 있어서(예를 들어, 동기화된 클록을 사용한 시간 스탬프), 인덱스 조각 구성요소(130)는 라이브 이벤트에서 동일한 기간을 나타내는 상이한 인코더들로부터의 조각들을 상관(correlate)시킬 수 있다. 이러한 방식으로, 시스템(100)은 미디어 조각이 손실되는 때를 검출할 수 있고 사용가능한 미디어 조각에 관한 명시 정보(manifest information)를 클라이언트에 제공할 수 있다.
조각 데이터 스토어(140)는, 수신된 클라이언트 요청에 기초하여 클라이언트에게 제공하기 위해 생성된 조각의 인덱스 표와 수신된 미디어 조각을 저장한다. 조각 데이터 스토어는 데이터베이스, 디스크 드라이브 또는 데이터 저장소의 다른 형태(예를 들어, SAN(Storage Area Network) 또는 클라우드 기반 저장 서비스)를 포함할 수 있다.
클라이어트 인터페이스 구성요소(150)는 미디어 조각에 대한 클라이언트 요청을 수신하고 클라이언트에게 명시 데이터 및 미디어 조각을 제공한다. 클라이어트가 최초에 시스템(100)에 접속하면, 클라이언트는 클라이언트 명시 요청을 전송할 수 있다. 클라이언트 인터페이스 구성요소(150)는 구축 클라이언트 명시 구성요소(160)가 시스템(100)으로부터 사용가능한 인코딩 및 인덱스 표에 기초하여 현재까지 시스템(100)에 의해 저장된 조각에 관한 정보를 포함하는 명시를 생성하도록 한다. 클라이언트는 계속되는 라이브 조각의 요청을 시작하거나 프리젠테이션의 이전 부분으로 시간적으로 되돌아가는데 이 정보를 사용할 수 있다. 이는, 예를 들어, 클라이언트가 이미 진행 중인 라이브 이벤트에 가입하고 이벤트의 이전 부분을 따라잡고자 하는 경우에 사용될 수 있다.
구축 클라이언트 명시 구성요소(160)는 시스템(100)으로부터 사용가능한 인코딩 및 현재까지 시스템(100)에 의해 저장된 조각 각각에 관한 정보를 포함하는 클라이언트 요청을 만족하는 명시(manifest)를 구축한다. 구축 클라이언트 명시 구성요소(160)는 잠재적으로 후속하는 조각뿐만 아니라 현재 미디어 조각에 관하여 정보를 클라이언트에 제공하는 명시를 각 미디어 조각과 함께 포함하도록 제공할 수도 있다. 최초에 수신된 명시와 각 미디어 조각과 함께 제공되는 후속하는 명시를 결합함으로써, 클라이언트는 시작부터 현재까지의 미디어 이벤트에 대한 완전한 정보를 포함하는 최신 명시를 구축할 수 있다. 미디어 이벤트가 완료되면, 클라이언트는, 클라이언트가 요구에 따라 미디어 이벤트를 보는데 사용할 수 있는 미디어 이벤트의 완전한 스토리보드를 갖는다.
일부 실시형태에서, 클라이언트 인터페이스 구성요소(150)는, 클라이언트가 미디어 조각이 사용가능하게 된 후에 소정 양의 시간 후에 요청을 하도록 고무하는 방식으로 클라이언트 요청에 응답한다. 예를 들어, 시스템(100)이 인코더로부터 하나 이상의 후속 조각을 수신하는 때까지 시스템(100)은 특정한 미디어 조각으로 응답하지 않을 수 있다. 이는 시스템(100)이 현재 조각 응답에 후속 조각에 대한 명시 정보를 포함할 수 있도록 한다. 시스템(100)은 각 미디어 조각과 함께 클라이언트가 기대할 수 있는 후속 조각의 수를 클라이언트에게 제공할 수도 있다. 이는 클라이언트에게 타이밍 힌트가 된다. 클라이언트가 제공된 개수보다 적은 후속 조각에 관한 정보와 함께 미디어 조각을 수신한다면, 클라이언트는 클라이언트가 서버로부터 데이터를 너무 빠르게 요청하고 있다고 간주할 수 있다. 반면, 클라이언트가 제공된 개수보다 많은 후속 조각에 대한 정보와 함께 미디어 조각을 수신한다면, 클라이언트는 클라이언트가 서버로부터 데이터를 너무 천천히 요청하고 있다고 간주할 수 있다. 그러므로, 여하한 특정 조각 요청에 응답하여, 구축 명시 구성요소(160)는 시스템(100)이 그 시점까지 수신한 만큼 많은 후속 조각에 관한 명시 정보를 제공한다.
클록 동기화 구성요소(170)는 시스템(100), 클라이언트 및 인코더의 클록을 동기화한다. 절대 시간은 시스템(100)과 관련이 없지만, 다수의 인코더에 걸쳐 특정 조각을 식별할 수 있는 것과 클라이언트에게 조각을 요청하는 레이트(즉, 케이던스)를 제공하는 것은 시스템(100)과 관련이 있다. 예를 들어, 클라이언트가 데이터를 너무 빠르게 요청하는 경우, 서버는 아직 데이터를 갖지 않고 에러 응답(예를 들어, HTTP 404 not found 에러 응답)으로 응답하여, 불필요하게 대역폭을 소비하는 많은 불요(spurious) 요청을 생성할 것이다. 반면, 클라이언트가 데이터를 너무 천천히 요청하는 경우, 클라이언트는 재생을 위한 적시에 데이터를 가지지 않아 사용자에게 재생되는 미디어에서 감지가능한 중단을 생성할 수 있다. 또한, 인코더는 완전히 상이할 수 있는 인코딩으로 미디어 조각을 생성하고, 동일한 시간 기간을 나타내는 상이한 인코딩의 2개의 조각을 상관하는 유의미한 방법을 제공하지 않고 조각들이 미디어 이벤트의 전체 타임라인의 어디에 맞는지도 알려주지 않는다. 클록 동기화 구성요소(170)는, 서버, 인코더 및 클라이언트가 특정 시간에 유사한 클록 값을 가질 수 있도록 함으로써 이 정보를 제공한다. 인코더는 각 미디어 조각을 인코더가 조각을 생성한 시간으로 표시할 수도 있다. 이러한 방식으로, 클라이언트가 특정 조각을 요청하면, 클라이언트는 클라이언트가 선택한 인코딩에 무관하게 동일한 기간을 나타내는 조각을 얻게 된다.
부드러운 스트리밍 시스템이 구현되는 연산 장치는 중앙 처리 유닛, 메모리, 입력 장치(예를 들어, 키보드 및 포인팅 장치), 출력 장치(예를 들어, 디스플레이 장치), 및 저장 장치(예를 들어 디스크 드라이브 또는 기타 비휘발성 저장 매체)를 포함할 수 있다. 메모리 및 저장 장치는 시스템을 구현 또는 인에이블하는 컴퓨터-실행가능한(computer-executable) 명령(예를 들어, 소프트웨어)으로 인코딩될 수 있는 컴퓨터 판독가능한 저장 매체이다. 또한, 데이터 구조 및 메시지 구조가 저장되거나 통신 링크 상의 신호와 같은 데이터 송신 매체를 통해 송신될 수 있다. 인터넷, LAN(local area network), WAN(wide area network), 점대점 다이얼 업 전송, 휴대전화 네트워크 등 다양한 통신 링크가 사용될 수 있다.
시스템의 실시형태는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능 가전제품(consumer electronics), 디지털 카메라, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 위의 시스템 또는 장치 중 여하한 것을 포함하는 분산 컴퓨팅 환경 등을 포함하는 다양한 운영 환경에서 구현될 수 있다. 컴퓨터 시스템은 휴대전화, PDA(personal digital assistant), 스마트폰, 퍼스널 컴퓨터, 프로그램 가능 가전 제품, 디지털 카메라 등일 수 있다.
시스템은 프로그램 모듈과 같이 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 컴퓨터 실행가능 명령의 일반적인 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상(abstract) 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상, 프로그램 모듈의 기능은 다양한 실시형태에서 희망에 따라 결합되거나 분산될 수 있다.
상술한 바와 같이, 구축 클라이언트 명시 구성요소는 클라이언트 명시를 생성한다. 다음은 전형적인 클라이언트 명시의 예이다.
Figure pct00001
클라이언트 명시는 서버가 그 동안 보관(archive)한 모든 조각에 대한 정보뿐만 아니라 디코딩 정보를 열거한다. 총 미디어 조각 개수 및 길이(duration)는 클라이언트가 요청을 한 때까지 서버가 보관한 미디어 조각에만 대한 것이다 (이는 클라이언트가 빠르게 탐색 바를 구축할 수 있도록 한다). 각각의 미디어 조각에 대해, "t"는 절대 타임스탬프를 의미한다. 클라이언트는 이 값을 조각 URL을 구성하는데 사용한다 (예를 들어, "Fragments(video={start time})). LookAheadFragmentCount는 "TrackFragmentReferenceBox"가 후술하는 것과 같이 참조할 후속 조각의 목표 개수를 나타낸다. "IsLive"는 라이브 브로드캐스트가 여전히 계속되고 있는지 여부를 나타낸다.
일부 실시형태에서, 클라이언트가 특정 미디어 조각을 요청하는 때에, 부드러운 스트리밍 시스템은 후속 미디어 조각에 대한 정보를 제공한다. 예를 들어, 서버는 몇 개의 추가 조각(예를 들어 2 조각)이 사용가능할 때까지 준비된 특정 조각을 유지할 수 있다. 그러면, 서버는 조각을 다음 몇 조각에 대한 명시 정보와 함께 전송할 수 있다. 클라이언트는 이 정보를 어떤 것이 올지를 알고 적절하게 적응하는데 사용할 수 있다. 이는 클라이언트가 요청 레이트를 지능적으로 조정할 수 있게 한다. 예를 들어, 클라이언트가 조각을 요청하고 이후 조각에 대하여 어떤 정보도 가지지 않으면, 클라이언트는 데이터를 너무 빨리 요청하고 있다는 것을 알게 된다. 클라이언트가 조각을 요청하고 너무 많은 이후 조각에 대한 정보를 수신하면, 클라이언트는 정보를 너무 천천히 요청하는 것일 수 있다. 그러므로, 클라이언트는 어드밴스 메타테이터를 힌트로서 사용하여 적응할 수 있다.
후속 미디어 조각에 대한 정보는 커스텀 박스(custom box)를 이용하여 MP4 컨테이너에 저장될 수 있다. 예를 들어, 서버는 상기한 'traf' 박스에 다음의 정의로 "Track FragmentReferenceBox"를 삽입할 수 있다.
Figure pct00002
Fragment_count는 이 박스가 참조하고 있는 동일한 트랙의 직후 조각의 개수를 특정한다. 조각은 MP4 스트림에서 나타나는 것과 동일한 순서로 열거된다. 이 개수는 1 이상이다. Fragment_absolute_time은 후속 조각의 첫 번째 샘플의 절대 타임스탬프를 나타내는 32비트 또는 64비트 정수를 특정한다. Fragment_duration은 후속 조각의 길이를 나타내는 32비트 또는 64비트 정수를 특정한다. ('fragment_count'에서와 같이) "TrackFragmentReferenceBox" 박스 내 후속 조각의 수는 서버에서 구성가능한 설정이다. 서버가 조각 요청을 수신한 때에, 서버가 구성된 값과 같이 "TrackFragmentReferenceBox"를 채우기에 충분한 후속 조각을 갖는다면, 서버는 디폴트 캐시 제어 설정으로 보통의 응답 핸들링 코드 경로를 따를 수 있다.
대신 서버가 적어도 하나의, 그러나 "TrackFragmentReferenceBox"를 채우기에 충분하지 않은 후속 조각을 갖는 경우, 서버는 여전히 제한된 후속 조각의 정보로 즉시 조각 응답을 리턴할 수 있다. 서버는 작은 캐시 타임아웃 값을 (조각 길이에 따라) 설정할 수 있고 미래 요청에 대해 꽉 찬 "TrackFragmentReferenceBox"로 응답을 갱신할 것을 기대할 수 있다. 적은 양의 후속 조각 정보는 클라이언트에게, 클라이언트가 데이터를 너무 빠르게 요청하고 있다는 힌트이다. 서버가 이 트랙을 위한 후속 조각을 갖지 않는다면, "조각이 일시적으로 범위를 벗어남(fragment temporarily out of range)"을 나타내는 특정 에러 코드와 함께 요청을 실패시킬 수 있다. 에러 응답은 작은 시간 윈도우에 대해 캐시가능할 수 있다. 클라이언트는 이 에러를 검출하고 작은 지연 후에 동일한 요청을 재시도한다. 한 가지 예외는 라이브 세션이 중단되었고 서버가 마지막 조각을 서비스하려고 하는 경우인데, 이 경우 어떠한 후속 조각 정보도 존재하지 않을 것이고 서버는 최종 스트림 조각으로 요청에 응답한다.
도 2는 일 실시형태에서 마이크로소프트 윈도우즈 및 마이크로소프트 인터넷 정보 서버(Internet Information Server)(IIS)를 사용하는 부드러운 스트리밍 시스템의 운영 환경을 도시하는 블록도이다. 환경은 보통 소스 클라이언트(210), 컨텐츠 전달 네트워크(240) 및 외부 네트워크(270)를 포함한다. 소스 클라이언트는 미디어 또는 라이브 이벤트의 소스이다. 소스 클라이언트는 미디어 소스(220) 및 하나 이상의 인코더(230)를 포함한다. 미디어 소스(220)는 각각 다수의 카메라 앵글을 제공하는 카메라, 오디오 포착하는 마이크로폰(microphone capture audio), 슬라이드 프리젠테이션, 텍스트(폐쇄 캡션 서비스로부터 등), 이미지 및 기타 유형의 미디어를 포함할 수 있다. 인코더(230)는 미디어 소스(220)로부터의 데이터를 하나 이상의 인코딩 포맷으로 병렬적으로 인코딩한다. 예를 들어, 인코더(230)는 다양한 비트 레이트에서 인코딩된 미디어를 생성할 수 있다.
부드러운 스트리밍 시스템이 동작하는 컨텐츠 전달 네트워크(240)는 하나 이상의 인제스트(ingest) 서버(250)와 하나 이상의 근원(origin) 서버(260)를 포함한다. 인제스트 서버(250)는 인코더(230)로부터 각각의 인코딩 포맷으로 인코딩된 미디어를 수신하고 인코딩된 미디어를 설명하는 명시를 생성한다. 인제스트 서버(250)는 여기서 설명하는 미디어 조각을 생성 및 저장할 수 있고, 또는 조각을 요청되는 바에 따라 즉석으로 생성할 수도 있다. 인제스트 서버(250)는 푸시된 데이터를 HTTP POST를 통하거나 인코더(230)로부터 데이터를 요청함으로서 풀링(pull)을 통하는 등으로 인코더(230)로부터 수신할 수 있다. 인코더(230) 및 인제스트 서버(250)는 다양한 중복 구성에서 연결될 수 있다. 예를 들어, 각 인코더는 인코딩된 미디어 데이터를 실패가 발생할 때까지 인제스트 서버(250) 각각에게 또는 단 하나의 인제스트 서버에게 보낼 수 있다. 근원 서버(260)는 미디어 조각에 대한 클라이언트 요청에 응답하는 서버이다. 근원 서버(260)는 다양한 중복 구성으로 구성될 수도 있다.
일부 실시형태에서, 인제스트 서버(250)는 인코더 미디어 스트림을 인제스트하는데 전용인 하나 이상의 서버를 포함한다. 관리자 또는 컨텐츠 저자(author)는, 인제스트 서버(250)의 클라이언트가 특정 미디어 요소(예를 들어, 라이브 이벤트)를 찾을 수 있는 URL을 정의하는 발간 지점을 생성할 수 있다. 예를 들어, IIS를 이용하여, 관리자는 URL "http://ingserver/pubpoint.isml"을 발간할 수 있다. 발간 지점은 인코더(230)에 의해 새로운 미디어 데이터를 인제스트 서버(250)에 제공하는데 사용되고, 근원 서버(260)에 의해 인제스트 서버(250)로부터 미디어 데이터를 요청하는데 사용된다. 각 인코더는 인제스트 서버(250)에 접속하기 위해 구별되는 URL을 이용할 수 있어서 인제스트 서버(250)는 동일한 데이터의 상이한 인코딩을 검출할 수 있다. 예를 들어, 앞서의 예에서의 URL에 기초하여, 인코더는 URL "http://ingserver/pubpoint.isml/Streams(stream1)"을 이용하여 인제스트 서버에 미디어 데이터를 제공하기 위해 HTTP POST를 보낼 수 있다. 인제스트 서버(250)는 인제스트 서버(250)의 클라이언트(예를 들어, 근원 서버(260))에 의한 추후의 복구(retrieval)를 위해 수신된 데이터를 저장한다. POST는 MP4 컨테이너와 같은 다양한 유형의 미디어 포맷을 포함할 수 있다. MP4 컨테이너는 박스라고 불리는 다양한 유형의 정보를 포함하는데, 이는 통상 사용된 인코딩의 유형을 설명하는 "ftyp"와 시청각 데이터를 포함하는 "moov" 와 같은 4글자의 코드로 레이블된다. MP4를 이용하던지 기타 컨테이너 포맷을 이용하던지, 인코더는 미디어 요소를 설명하는 명시를 포함하는 "ManifestBox"와 같이 스트림에 대한 박스 또는 정보를 추가할 수 있다.
인제스트 서버(250)가 데이터 요청을 수신하면, 인제스트 서버(250)는 이전에 저장된 데이터를 제공한다. 인제스트 서버(250)는, 사용가능한 인코더 스트림을 식별하는 인코더 스트림 명시 요청 및 특정 스트림으로부터의 데이터(스트림 데이터의 일부 포함) 요청을 포함하여 몇몇 유형의 요청을 지원할 수 있다. 요청의 유형은 요청의 URL에 의해 식별될 수 있다. 예를 들어, 인제스트 서버(250)가 URL "http://ingserver/pubpoint.isml/StreamManifest"을 수신하는 경우, 인제스트 서버(250)는 각 사용가능한 인코더에 대한 식별자를 포함하는 인코더 명시를 리턴한다. 인제스트 서버(250)가 URL "http://ingserver/pubpoint.isml/Streams(stream1)"을 수신하는 때에, 인제스트 서버(250)는 식별자 "Encoder1"과 관련된 인코더에 대한 대응 미디어 스트림을 응답으로 전송한다. 응답은 상술한 캐시된 "ftyp," "ManifestBox," 및 "moov" 박스와 같은 MP4 데이터와 이를 따르는 FIFO 버퍼 내 미디어 조각을 포함할 수 있다. 인제스트 서버(250)는 "http://ingserver/pubpoint.isml/Streams(stream1)/StartTime(12345678)" 형태의 부분 데이터 요청을 (예를 들어, 장애극복(failover) 시나리오 동안) 수신할 수도 있는데, 이는 인제스트 서버(250)가 "ftyp," "ManifestBox," 및 "moov" 박스의 전송을 생략하고 특정 타임스탬프에 가장 가까운 미디어 조각으로부터 시작을 시도하도록 한다.
근원 서버(260)는 미디어 클라이언트로부터 미디어 스트림 요청을 수신하고 하나 이상의 인제스트 서버(250)로부터 요청된 미디어 스트림을 불러온다. 인제스트 서버(250)와 같이, 관리자 또는 컨텐츠 저자는 근원 서버 상에서 발간 지점을 등록하고 인제스트 서버(250) 및/또는 인코더 URL을 발간 지점과 관련시킨다. 근원 서버(260)는 먼저 (예를 들어, HTTP GET 요청을 이용하여) 사용 가능한 스트림을 설명하는 명시를 인제스트 서버(250)로부터 요청할 수 있다. 그러면 근원 서버는 각각의 인코더 스트림에 대해 인제스트 서버에게 별도의 요청을 제출하고, 인제스트 서버는 인코더로부터 수신된 바와 같이 요청된 미디어 스트림으로 응답한다.
근원 서버(260)는, 미디어 스트림에 의해 제공되고 있는 더 큰 미디어 요소의 일부를 나타내는 미디어 조각 및 미디어 스트림에 관한 명시 정보를 별도로 수신할 수 있다. 근원 서버(260)는 근원 서버(260)가 각 인코더로부터의 데이터를 상관시킬 수 있도록 하는 각 인코더에 의해 제공되는 타임스탬프 또는 기타 식별자에 기초하여 각 스트림으로부터 수신된 각 조각의 인덱스를 구축한다. 근원 서버(260)는 수신된 데이터로부터, 미디어 클라이언트 요청에 응답하는, 그들 자신의 MP4 컨테이너나 기타 저장 포맷을 구축할 수 있다. 라이브 이벤트로부터 알려진 포맷의 파일을 구축함으로써, 근원 서버는 이벤트 후에 재빨리 미디어 파일의 통일된 다운로드를 제공하는 것이 가능할 수 있다.
근원 서버(260)가 미디어 클라이언트 요청을 수신하는 때에, 근원 서버(260)는 서버가 구축한 인덱스를 인코더 명시(들)로부터 수신된 정적(static) 스트림 정보에 첨부함으로써 클라이언트 명시를 생성한다. 다수의 스트림이 있는 경우, 근원 서버(260)는 스트림 명시를 종합(comprehensive) 클라이언트 명시로 병합한다. 이는 클라이언트가, 근원 서버(260)로부터 추가적인 정보를 확득하지 않고도 클라이언트가 요청하는 인코딩 유형에 있어 선택적일 수 있도록 한다. 서버는 HTTP 응답과 같은 기존의 인터넷 인프라스트럭쳐에 의해 캐시될 수 있는 표준 응답 유형을 이용하여 클라이언트에게 명시를 제공한다. 명시 데이터는 시간에 걸쳐 변할 수 있기 때문에, 서버는 명시 응답에 대해 짧은 캐시 타임아웃 값(예를 들어, TTL(time to live))을 설정할 수 있다.
외부 네트워크(270)는 에지 서버(280)와 기타 인터넷 (또는 다른 네트워크) 인프라스트럭쳐 및 클라이언트(290)를 포함한다. 클라이언트가 미디어 조각에 대한 요청을 하면, 클라이언트는 요청을 근원 서버(260)에 어드레싱한다. 네트워크 캐싱의 설계 때문에, 에지 서버(280) 중 하나가 데이터를 포함하면, 그 에지 서버는 요청을 전달하지 않고 클라이언트에 응답할 수 있다. 그러나, 데이터가 에지 서버에서 사용가능하지 않으면, 에지 서버는 요청을 근원 서버(260) 중 하나에게 전달한다. 유사하게, 근원 서버(260) 중 하나가 사용가능하지 않은 데이터의 요청을 수신하면, 근원 서버는 인제스트 서버(250) 중 하나로부터 데이터를 요청할 수 있다.
도 3은 일 실시형태에서 인코더로부터 미디어 데이터를 수신하는 시스템의 처리를 도시하는 흐름도이다. 블록(310)에서 시작하면, 시스템은 시스템이 하나 이상의 인코더로부터 미디어 데이터를 수신할 미디어 이벤트를 설명하는 이벤드 등록(registration)을 수신한다. 예를 들어, 이벤트 등록은 각 인코더의 ID(identification), 미디어 이벤트의 설명, 및 인코더가 인코딩된 미디어 데이터를 제공할 URL을 포함한다. 블록 320에서 계속하면, 시스템은 인입 스트림을 파싱하여, 시스템이 기대할 수 있는 모든 인코더 스트림을 설명하는 스트림 명시와, 자신이 나타나는 스트림에 대해 사용가능한 미디어 데이터를 설명하는 서버 명시를 획득한다. 시스템은 풀링 또는 푸시 모델을 사용하여 동작할 수 있다. 예를 들어, 시스템은 인코더의 구성 정보를 요청하는 HTTP GET 요청을 인코더에게 보낼 수 있고, 또는 시스템은 이 정보를 스트림의 일부로서 단순히 인코더로부터 수신할 수 있다.
"푸시"의 경우에(예를 들어, 인코더 POST)의 경우에, 두 가지 모두의 명시는 커스텀 박스의 스트림의 시작에 포함되어서, 해야할 요청이 없고, 시스템은 명시를 파싱할 수 있다. "풀링"의 경우(예를 들어, 서버 GET)에, 스트림 명시는 적용불가능하고 (발간 지점 정의가 균등한 정보를 포함한다), 시스템은 커스텀 박스로서 그 정보를 포함한다. 스트림 명시는, 다운스트림 서버 및 클라이언트에 여하한 데이터를 제시하기 전에 인코더로부터 서버가 획득하는 스트림의 세트를 특정하는데 사용된다. 스트림 명시가 없으면, 서버가 인코더 스트림의 전부가 아니라 일부를 획득한 레이스 조건이 존재하고, 다운스트림 서버 또는 클라이언트는 불완전한 그림을 얻는다. 각각의 인입 인코더 스트림은 이 정보를 제공하는 스트림 명시를 포함하기 때문에, 서버 관리자가 어떤 스트림을 기대할지를 특정하지 않는다는 점에서 시스템은 자율적("Self-managing")이다.
블록 330에서 계속하면, 시스템은 각 인코더로부터 인코더 명시를 수신한다. 시스템은 인코더의 명시들을 함께 병합하고, 시스템이 제공할 수 있는 미디어 인코딩을 아는 것에 관심이 있는 클라이언트에 의해 추후에 불러오기 위해 병합된 명시를 저장한다. 블록 340에서 계속하면, 시스템은 인코더로부터 미디어 조각을 수신한다. 미디어 조각은 타임스탬프, 미디어 조각을 인코딩한 인코더의 식별자, 및 미디어 조각에 대한 기타 정보를 포함할 수 있다. 시스템은 조각이 어떤 스트림 안에서 오는지 알고 스트림 식별자 외에도 어떤 인코더가 스트림을 생성했는지에 대한 식별 정보를 갖고 있으므로, 인코더 식별자는 통상 사용되지 않는다. 블록 350에서 계속하면, 시스템은 수신된 미디어 조각을 인덱싱하고, 시스템으로부터 사용가능한 미디어 조각을 카탈로그하는 시스템에 의해 유지되는 인덱스 표에 인덱스 정보를 추가한다. 시스템은 상이한 인코더들에 의해 병렬로 생성되는 미디어 조각을 상관시키기 위해 미디어 조각과 관련된 타임스탬프를 사용할 수 있다.
블록 360에서 계속하면, 시스템은 조각 및 인덱스 정보를, 클라이언트 요청을 만족시키기 위해 조각 및 인덱스 정보를 이후에 불러올 수 있는 데이터 스토어에 저장함으로써 조각을 보관한다. 블록 370에서 계속하면, 시스템은, 수신된 조각에 대한 정보를 명시에 추가함으로써, 미디어 조각이 그 일부인 미디어 이벤트에 관한 정보를 포함하는 서버 명시를 구축한다. 시스템으로부터 사용가능한 그 때 존재하는 미디어 조각에 관한 클라이언트 정보를 주기 위해 클라이언트가 접속하는 때에, 서버가 이 명시를 클라이언트에게 제공한다. 이벤트가 종료한 때, 서버 명시는, 미디어 이벤트의 온디맨드(on-demand) 보기를 위해 클라이언트에 제공될 수 있는 미디어 이벤트의 완전한 설명을 포함한다. 결정 블록 380에서 계속하면, 시스템이 인코더로부터 더 많은 조각을 기대하면 (예를 들어, 라이브 이벤트가 여전히 진행 중), 시스템은 다음 인코더 조각을 수신하기 위해 블록 340으로 루프(loop)하고, 그렇지 않으면 시스템이 종료한다.
도 4는 일 실시형태에서 스트리밍 미디어를 위해 클라이언트 접속을 다루기 위한 시스템의 처리를 도시하는 흐름도이다. 블록 410에서 시작하면, 시스템은 클라이언트로부터 명시 요청을 수신한다. 라이브 이벤트에 대해, 많은 클라이언트가 동시에 접속할 수 있지만, 모두가 이벤트의 시작에서 접속하지는 않는다. 예를 들어, 미디어 조각이 데이터의 2초를 포함하고 클라이언트가 이벤트 시각 1분 후에 접속하면, 시스템으로부터 사용가능한 30 조각이 이미 있을 것이다. 클라이언트는 시스템으로부터 사용가능한 이벤트의 인코딩(시스템에 데이터를 제공하는 인코더에 의해 결정됨)을 결정하기 위한 초기 명시 및 그 때 존재하는 조각에 대한 정보를 요청한다. 서버와 클라이언트 사이의 접속은 상태비보존형임을 유의하라. 서버는 보통 특정 클라이언트에 대해 리소스를 전용시키지 않는다. 차라리, 서버는 여하한 인입 요청을 청취하고 있으며, 각 요청은 특정한 조각 또는 기타 정보를 요청하고, 서버는 요청에 응답하고 여하한 클라이언트의 서버로의 요청의 상태 또는 이력을 구체적으로 추적하지 않고 다음 요청으로 나아간다.
블록 420에서 계속하면, 시스템은 수신된 조각 및 시스템이 최초에 인코더 명시를 요청한 때에 수신된 인코더 정보에 기초하여 클라이언트 요청을 만족하기 위해 명시를 구축한다. 클라이언트 명시는 사용가능한 인코딩을 설명하는 각 인코더 명시의 통합인 정적 부분과 그때까지 인코더로부터 서버에 의해 수신한 미디어 조각을 설명하는 동적 부분을 포함한다. 블록 430에서 계속하면, 시스템은 클라이언트 요청에 응답하여 클라이언트에 구축된 클라이언트 명시를 제공한다. 일부 실시형태에서, 요청은 표준 HTTP GET 요청이고 응답은 HTTP 응답(예를 들어, 200 OK)이다. 시스템은 응답 상에서 캐시 수명을 제공할 수 있어서, 합리적인 시간량 내에 후속 클라이언트 요청이 인터넷 캐싱 인프라스트럭처에 의해 서비스될 수 있다. 그러나, 명시의 동적 부분은 재빨리 낡은 것이 되기 때문에, 너무 많이 낡아버린 명시 정보를 클라이언트에 남기게 되는 캐싱을 피하기에 충분하게 캐시 수명이 짧다. 명시에 기초하여, 클라이언트는 클라이언트가 선택한 어떤 인코딩으로도 조각 요청을 시작할 수 있다. 예를 들어, 클라이언트는 최초에 낮은 비트 레이트 인코딩을 선택할 수 있고, 네트워크 대역폭이 클라이언트가 조각을 비트 레이트로 수신할 수 있는 능력을 제한할 때까지 후속 조각에 대해 더 높은 비트 레이트 인코딩을 선택할 수 있다.
블록 440에서 계속하면, 시스템은 클라이언트로부터 조각 요청을 수신한다. 클라이언트는 구체적인 URL을 이용하여 그 조각을 식별할 수 있다. URL은 인코딩뿐만 아니라 조각의 시간을 식별할 수 있다. 예를 들어, URL은 "http://server/event.isml/QualityLevels(1500000)/Fragments(video=20000000)"의 형태일 수 있는데, 여기서 QualityLevels 파라미터는 초당 비트로 측정된 비트 레이트이고, video는 요청되고 있는 트랙의 이름이고, "video=" 후에 오는 값은 100 나노초 단위(단위의 스케일은 프리젠테이션이 인코딩되는 방식에 의존한다)의 시간 위치이다. 블록 450에서 계속하면, 시스템은 조각 데이터 스토어로부터의 명시 정보와 로컬 인덱스 표를 불러옴으로써 요청된 조각을 설명하는 증분(incremental) 명시를 구축한다. 시스템은 여기서 설명된 바와 같이 증분 명시에 하나 이상의 후속 조각에 대한 명시 정보를 포함할 수도 있다.
블록 460에서 계속하면, 시스템은 요청된 미디어 조각과 구축된 증분 명시를 포함하는 클라이언트 조각 요청에 대한 응답을 보낸다. 초기 명시 및 각각의 증분 명시에 기초하여, 클라이언트는 전체 미디어 이벤트에 관한 정보를 포괄하는 로컬 명시를 구축할 수 있다. 명시는 클라이언트가 미디어 이벤트 내의 여하한 위치를 빠르게 뛰어넘고(skip around) 재생할 수 있도록 한다. 블록 470에서 계속하면, 시스템은 다음 조각 요청을 기다린다. 결정 블록 480에서 계속하면, 새로운 조각 요청이 수신되면, 시스템은 블록 440으로 루프하여 조각 요청을 처리하고, 그렇지 않으면 시스템은 블록 470으로 루프하여 계속 기다린다. 블록 480 후에, 이들 단계는 종료한다.
여기서 설명된 단계에서, 부드러운 스트리밍은 각 클라이언트의 상태를 알지 못하고, 클라이언트에 대해 상태를 추적하지 않음을 유의하라. 사실, 특정 클라이언트에 대해, 클라이언트가 시스템에 이야기하지도 않고 전체 미디어 이벤트를 재생하는 것이 가능하다. 클라이언트가 각각의 요청된 명시 및 미디어 조각을 네트워크에 걸쳐 분산된 캐시 서버로부터 수신할 수 있기 때문에 이것이 가능하다. 클라이언트는, 클라리언트가 관찰한(client-observed) 네트워크 조건에 기초한 희망 비트 레이트, 또는 클라이언트가 표시하는(client-displayed) 제어(예를 들어, 빨리감기, 찾기, 되감기 등)와 사용자의 상호작용에 기초한 희망 위치와 같은 인자에 기초하여 원하는 데이터를 요청한다. 이는 서버가 다른 태스크에 리소스를 집중할 수 있도록 하고 확장성(scalability)을 극적으로 증가시킨다. 많은 사람이 참석하는 라이브 이벤트에 대해, 이는 더 많은 시청자가 이벤트를 볼 수 있다는 것을 의미한다.
도 5는 일 실시형태에서 인코더로부터 근원 서버와 클라이언트로의 미디어 조각의 흐름을 도시하는 데이터 흐름도이다. 인코더(505)는 여기서 설명된 바와 같이, 직접 또는 인제스트 서버를 통해 근원 서버(510)로 미디어 데이터(520)를 연속적으로 제공한다. 미디어 데이터는 예를 들어 라이브 이벤트에 기초한 MP4 스트림의 조각을 포함할 수 있다. 근원 서버(510)는 로컬 데이터 스토어 등에 각 미디어 조각을 보관(525)한다. 근원 서버(510)는 클라이언트(515)로부터 명시 요청(530)을 수신한다. 근원 서버(510)는 최근의 미디어 조각 정보에 기초하여 클라이언트 명시를 생성한다(535). 근원 서버(510)는 클라이언트(515)에게 클라이언트 명시 응답(540)를 제공한다. 그러면 클라이언트(515)는 하나 이상의 미디어 조각 요청(545)을 전송하고, 근원 서버(510)는 요청된 미디어 조각과 잠재적으로는 후속 미디어 조각에 대한 정보로 응답한다(550). 미디어 이벤트가 일어나고 있고 인코더(505)가 새로운 미디어 데이터를 제공하고 있는 이상 도면 왼쪽의 데이터 흐름은 계속된다. 클라이언트(515)가 미디어 조각을 요청하고 있는 이상 도면 오른쪽의 데이터 흐름은 계속되는데, 이는 미디어 이벤트 동안 그리고 클라이언트가 미디어 이벤트의 온디맨드 보기를 요청하므로 이벤트 후에 일어날 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 라이브 미디어 스트림에 대해 DVR(digital video recorder) 같은 기능을 제공한다. 달리 말하면, 사용자는 서버에 대한 작업이나 상태 추적을 추가하지 않고 라이브 스트림을 중지하거나, 라이브 스트림 내에서 탐색하거나 할 수 있다. 라이브 스트림에서, 장면 손실(missed scene), 휴식을 위한 중지, 뒤늦게 이벤트에 참가하여 시작부터 시청하려는 경우 등과 같이, 사용자가 다양한 순서 및 다양한 시간에서 미디어 조각을 재생할 수 있도록 하는 시스템에 의해 인에이블되는 몇몇 시나리오가 있다. 여기서 설명된 어셈블된 명시에 기초하여, 시스템은 사용자가 어떻게 라이브 스트림을 시청하는지에 대한 사용자 제어를 제공한다. 이들 제어는 오늘날 DVR을 통해 TV와 사용가능하다. 부드러운 스트리밍 시스템은 사용자 동작에 응답하고 명시에서 다양한 위치를 탐색하고 적당한 미디어 조각을 요청함으로써 라이브 스트림의 비라이브 모드 재생을 관리하기 위한 클라이언트 제어를 포함한다. 또한, 클라이언트는 재생 동안에 라이브와 비라이브 보기 사이에서 전환할 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 클라이언트에게 웹 브라우저 플러그인을 제공함으로써 동작한다. 예를 들어, 시스템은 클라이언트에게 마이크로소프트 실버라이트(Microsoft Silverlight) 애플리케이션을 제공할 수 있다. 마이크로소프트 실버라이트는 XAP 파일이라고 불리는 컨테이너에 포함된 애플리케이션으로의 참조를 웹 페이지에서 수신한다. 마이크로소프트 실버라이트는 XAP 파일을 추출하고 애플리케이션을 촉발한다. 사용자의 컴퓨터 시스템이 악성 또는 에러 애프리케이션 코드로부터 보호되도록 마이크로소프트 실버라이트는 애플리케이션에 실행되는 샌드박스(sandboxed) 보안 환경을 제공한다. 마이크로소프트 실버라이트는, 사용자의 컴퓨터 시스템 및 하드웨어를 잠재적으로 위험한 애플리케이션 동작으로부터 차단하는 방식으로 미디어를 재생하기 위해 애플리케이션이 호출할 수 있는 API(application programming interfaces)를 제공한다. 그러므로, 마이크로소프트 실버라이트 및 기타 브라우저 플러그인은 부드러운 스트리밍 시스템이 동작할 것으로 기대할 수 있는 클라이언트 환경의 모든 기능성을 제공할 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 관련된 미디어 스트림을 동기화하기 위한 로직을 제공한다. 예를 들어, 라이브 시청각 이벤트는 하나 이상의 비디오 스트림(예를 들어, 카메라 앵글)과 하나 이상의 오디오 스트림(예를 들어, 언어)를 포함할 수 있다. 클라이언트가 오디오 및 비디오 미디어 조각을 별개로 다운로드할 때, 클록 동기화와 관련하여 더 설명하는 바와 같이 각각의 미디어 조각과 관련된 시간 정보를 정렬시킴으로써 클라이언트는 오디오 및 비디오 미디어 컨텐츠를 동기를 맞추어(in sync) 재생한다. 시스템은 슬라이드 프리젠테이션 내의 슬라이드, 이미지, 텍스트 등과 같은 다른 유형의 데이터도 동기화할 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 상이한 레이트에서 재생되는 스트림을 클라이언트에게 제공한다. 예를 들어, 서버는 2x, 5x, 0.5x 및 기타 재생 속도를 포함할 수 있다. 클라이언트는, 미디어가 빨리 감기(예를 들어, 2x) 또는 되감기(예를 들어, 0.5x)되고 있는 모습을 사용자에게 제공하기 위해 다른 레이트의 스트림으로 전환할 수 있다. 전환하기 위해, 클라이언트는 단순히 다른 미디어 조각을 예를 들어 다른 URL에서 요청한다. 클라이언트는 수신된 특정 미디어 조각을 계속하여 재생함으로써 미디어 조각을 현재 레이트에서 재생하는 것과 다른 레이트에서 미디어 조각을 재생하는 것 사이에서 부드럽게 전환할 수 있다. 이는 사용자의 요청과 미디어 재생 변화 사이의 작은 레이턴시로 최종 사용자에게 무결절(seamless) 경험을 제공한다. 클라이언트가, 예를 들어, 미디어를 2배 빠르게 재생하기 위해 2배의 데이터를 다운로드 하는 것이 아니라 가속된 레이트로 인코딩된 감소된 크기의 미디어 인코딩을 다운로드하기 때문에, 이는 네트워크 대역폭을 절약하기도 한다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 메타데이터에서 하이라이트 마커(highlight marker)를 제공한다. 하이라이트는, 운동 경기에서 선수가 골을 넣은 지점과 같이 미디어 내의 재미있는 부분을 포함할 수 있다. 클라이언트는, 하이라이트 마커와 관련된 미디어의 미디어 조각을 재생함으로써 이벤트가 끝난 후에 하이라이트 릴(reel)을 재생할 수 있다. 클라이언트가 라이브 이벤트를 수신하지 않았으면, 클라이언트는 미디어에 대한 명시를 요청하고 그 후에 하이라이트에 대응하는 미디어 조각만을 요청할 수 있다. 사용자가 하이라이트 전후에 미디어를 더 보기 원하는 경우(예를 들어, 사용자 빨리감기 또는 되감기에 의해 표시됨), 클라이언트는 추가의 미디어 조각을 요청하여 미디어의 요청된 부분을 재생할 수 있다. 그러므로, 시스템은 클라이언트에 대해 명시에서 하이라이트 정보를 제공할 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 인라인 광고를 지원한다. 라이브 이벤트에 대해, 이벤트 시작 시에는 광고 시간(commercial break)가 언제 일어날지 알지 못할 수 있다. 이벤트 코디네이터는 광고 시간이 되면 프로덕션 중에 버튼을 눌러, 시스템이 미디어 스트림 메타데이터에 광고 마커를 삽입하도록 할 수 있다. 클라이언트가 광고 마커를 수신하는 때에, 클라이언트는 이전에 식별된 광고와 관련된 미디어 조각을 요청하고 수신할 수 있다. 예를 들어, 시스템은 초기 명시에서 잠재적 광고의 목록을 제공할 수 있다. 광고는 다른 미디어와 유사한 미디어 조각에서 제공될 수 있고, 라이브 이벤트를 제공하는 동일한 서버에서 저장되지 않을 수 있다. 광고 마커를 만나면, 클라이언트는 메인 스트림의 재생을 중지하고 광고를 불러와서 표시하며 그 후 메인 스트림의 재생을 다시 시작한다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 가입(subscription) 또는 기타 지불 모델에 기초하여 어떤 인코딩이 사용가능하지를 결정한다. 예를 들어, 컨텐츠 제공자는 라이브 이벤트의 고해상도(HD) 버전에 이벤트의 표준 해상도(SD) 버전보다 더 많이 과금할 수 있다. 이 경우에, 시스템은 지불 모델의 조건이 만족되었는지 여부(예를 들어, 사용자의 계정이 최신인지)에 기초하여 특정 비트 레이트로의 전환을 인에이블 또는 디스에이블할 수 있다. 이 정보는 클라이언트에 제공되는 명시에 포함될 수 있다. 컨텐츠 제공자는 낮은 비트 레이트 또는 하이라이트만 있는 미디어(highlight only) 등의 일부 인코딩을 무료로 제공하는 반면 다른 것에는 과금할 수 있다.
일부 실시형태에서, 부드러운 스트리밍 시스템은 시스템의 다양한 요소에 대해 장애극복을 제공한다. 예를 들어, 시스템은 중복 인코더, 인제스트 서버, 근원 서버 등을 포함할 수 있다. 인코더 장애극복 동안, 서버는 "StartTime(nnnn)"을 인코더 URL에 추가할 수 있는데, 여기서 "nnnn"은 서버가 성공적으로 수신한 마지막 조각의 절대 타임스탬프이다. 장애극복 URL의 예는 "http://encoder:port/StartTime(12345678)"이 된다. MP4 박스를 이용하는 경우, 백업 인코더는 스트림을 시작할 때 "ftyp," "ManifestBox," 및 "moov" 박스를 재전송할 필요가 없다. 인코더 장애극복이 조각 손실을 유발하면, 그들 조각이 클라이언트에 의해 요청되는 경우 서버는 "404 - File Not Found"를 리턴할 것이다.
상기로부터, 부드러운 스트리밍 시스템의 구체적인 실시형태들이 예시를 위해 여기에서 설명되었으나, 다양한 변형이 본 발명의 사상 및 범위를 벗어남이 없이 이루어질 수 있음을 인식할 것이다. 예를 들어, 시청각 데이터가 예에서 사용되었지만, 텍스트(예를 들어, 스트리밍 스탁 인용(stock quotes)), 슬라이드(예를 들어, 프리젠테이션), 등을 포함하는 다른 데이터 유형이 시스템과 함께 사용될 수 있다. 따라서, 본 발명은 첨부된 청구범위에 의하지 않고는 제한되지 않는다.

Claims (15)

  1. 서버로부터 클라이언트로 스트리밍 미디어를 제공하기 위한 컴퓨터 구현 방법으로서,
    상기 클라이언트로부터 명시(manifest) 요청을 수신하는 단계(410)와,
    상기 서버가 수신한 인코더 정보 및 미디어 조각에 기초하여 상기 클라이언트 요청을 만족시키기 위해 클라이언트 명시를 구축하는 단계(420)와,
    상기 명시 요청에 응답하여 상기 클라이언트로 구축된 상기 클라이언트 명시를 제공하는 단계(430)와,
    클라이언트로부터 특정 미디어 조각을 식별하는 조각 요청을 수신하는 단계(440)와,
    요청된 미디어 조각을 설명하는 명시 정보를 불러옴으로써 증분(incremental) 명시를 구축하는 단계(450)와,
    상기 요청된 미디어 조각과 구축된 상기 증분 명시를 포함하는 상기 클라이언트 조각 요청에 대한 응답을 전송하는 단계(460)를 포함하되,
    위의 단계들은 적어도 하나의 프로세서에 의해 수행되고, 상기 서버는 상기 클라이언트 각각에 대한 상태 정보를 저장하지 않고 다수의 클라이언트에게 미디어 조각을 제공하는
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 명시 요청은 상기 서버로부터 사용가능한 이벤트 및 상기 이벤트에 관련된 존재하는 미디어 조각에 대한 정보의 하나 이상의 인코딩을 결정하고, 상기 사용가능한 인코딩은, 클라이언트가 재생 중 어느 지점에서도 선택할 수 있는 이벤트와 관련된 미디어의 다수의 비트 레이트를 포함하는
    컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    클라이언트 명시를 구축하는 단계는, 각 인코더로부터의 서버 명시를 파싱하는 단계와 수신된 인코더 명시들을 상기 클라이언트 명시로 병합하는 단계를 포함하는
    컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 클라이언트 명시는 사용가능한 인코딩을 설명하는 다수의 인코더 명시의 각각의 통합인 정적(static) 부분과 상기 요청의 시점까지 상기 서버에 의해 다수의 인코더로부터 수신된 미디어 조각을 설명하는 동적 부분을 포함하고, 상기 클라이언트는 상기 클라이언트 명시에 기초하여 하나 이상의 구체적인 미디어 조각을 요청함으로써 재생을 시작하고 탐색에 응답할 수 있는
    컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    상기 클라이언트 명시를 제공하는 단계는 캐시가능한(cacheable) HTTP 응답을 전송하는 단계를 포함하고, 상기 캐시가능한 HTTP 응답은 상기 클라이언트 명시의 서버가 제공하는(serve-provided) 수명에 기초한 캐시 수명을 포함하는
    컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 클라이언트는 상기 클라이언트 명시에 기초하여 다수의 인코딩 중 하나로 조각 요청을 시작할 수 있고, 상기 클라이언트는 초기에 제 1의 낮은 비트 레이트 인코딩을 선택하고 이후에 하나 이상의 검출된 조건에 기초하여 더 높은 비트 레이트로 조각을 요청할 수 있는
    컴퓨터 구현 방법.
  7. 제 1 항에 있어서,
    상기 조각 요청은, 상기 조각과 관련되는 시간 및 상기 조각과 관련되는 인코딩을 식별하는 구별되는 URL(Uniform Resource Locator)을 포함함으로써 특정 조각을 식별하는
    컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    증분 명시를 구축하는 단계는 상기 요청된 미디어 조각에 후속하는 하나 이상의 미디어 조각에 관한 정보를 포함하는 단계를 포함하는
    컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    상기 초기 명시 및 상기 증분 명시는 상기 클라이언트가 완전한 미디어 이벤트에 관한 정보를 포괄하는 로컬 명시를 구축할 수 있도록 하고 상기 미디어 이벤트 내에서 여하한 위치를 건너뛰고 재생할 수 있도록 하는
    컴퓨터 구현 방법.
  10. 캐시가능한 스트리밍 미디어 프리젠테이션을 전달하는 컴퓨터 시스템으로서,
    소프트웨어 명령을 실행하도록 구성된 프로세서 및 메모리와,
    상기 시스템이 인코딩된 미디어 데이터를 수신할 라이브 미디어 이벤트에 관해 정보를 수신하도록 구성된 레지스터 이벤트 구성요소(110)와,
    상기 시스템과 상기 인코딩된 미디어 데이터를 미디어 조각으로서 제공하는 하나 이상의 인코더 사이의 인터페이스를 제공하도록 구성된 인코더 인터페이스 구성요소(120)와,
    인코더로부터 수신된 미디어 조각의 인덱스 표를 생성하고 유지하도록 구성된 인덱스 조각 구성요소(130)와,
    수신된 클라이언트 요청에 기초하여 클라이언트에게 제공하기 위해 수신된 미디어 조각 및 생성된 상기 조각의 인덱스 표를 저장하도록 구성된 조각 데이터 스토어(140)와,
    미디어 조각에 대한 클라이언트 요청을 수신하고 클라이언트에게 명시 데이터 및 미디어 조각을 제공하도록 구성된 클라이언트 인터페이스 구성요소(150)와,
    클라이언트 요청을 만족시키기 위해 상기 시스템으로부터 사용가능한 인코딩 각각 및 상기 요청의 시점까지 상기 시스템에 의해 저장된 조각에 대한 정보를 포함하는 명시를 구축하도록 구성된 구축 클라이언트 명시 구성요소(160)와,
    상기 시스템, 클라이언트 및 인코더의 클록을 동기화하도록 구성된 클록 동기화 구성요소(170)를 포함하는
    컴퓨터 시스템.
  11. 제 10 항에 있어서,
    상기 레지스터 이벤트 구성요소는 상기 시스템에 인코딩된 미디어 데이터를 공급할 다수의 인코더 각각에 대한 식별자를 수신하도록 더 구성된
    컴퓨터 시스템.
  12. 제 10 항에 있어서,
    상기 인코더 인터페이스 구성요소는 미디어 정보 및 미디어 메타데이터를 위한 박스를 포함하는 미디어 컨테이너에서 인코딩된 미디어 데이터를 수신하는
    컴퓨터 시스템.
  13. 제 10 항에 있어서,
    상기 클라이언트 인터페이스 구성요소는, 상기 시스템에 접속하는 클라이언트로부터 초기 명시 요청을 수신하고, 상기 인덱스 표에 기초하여 상기 시스템으로부터 사용가능한 인코딩과 현재 시간까지 상기 시스템에 의해 저장된 조각에 대한 정보를 포함하는 클라이언트 명시를 생성하도록 상기 구축 클라이언트 명시 구성요소를 불러오고, 상기 클라이언트 명시를 상기 클라이언트에 제공하도록 더 구성되는
    컴퓨터 시스템.
  14. 제 10 항에 있어서,
    상기 구축 클라이언트 명시 구성요소는, 각각의 요청된 미디어 조각과 함께 포함하도록 증분 명시를 제공하도록 더 구성되고, 상기 증분 명시는 현재의 미디어 조각과 적어도 하나의 후속하는 미디어 조각에 대해 상기 클라이언트에게 정보를 제공하는
    컴퓨터 시스템.
  15. 제 10 항에 있어서,
    상기 구축 클라이언트 명시 구성요소는 상기 클라이언트에게, 상기 클라이언트가 각각의 미디어 조각과 함께 클라이언트를 위한 타이밍 힌트로서 기대할 수 있는 후속 조각의 개수를 제공하도록 더 구성된
    컴퓨터 시스템.
KR1020117021108A 2009-03-16 2010-03-09 컴퓨터 구현 방법 및 컴퓨터 시스템 KR101616152B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/405,220 2009-03-16
US12/405,220 US8909806B2 (en) 2009-03-16 2009-03-16 Delivering cacheable streaming media presentations

Publications (2)

Publication Number Publication Date
KR20110139214A true KR20110139214A (ko) 2011-12-28
KR101616152B1 KR101616152B1 (ko) 2016-04-27

Family

ID=42731594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117021108A KR101616152B1 (ko) 2009-03-16 2010-03-09 컴퓨터 구현 방법 및 컴퓨터 시스템

Country Status (5)

Country Link
US (1) US8909806B2 (ko)
EP (1) EP2409475B1 (ko)
KR (1) KR101616152B1 (ko)
CN (1) CN102356622A (ko)
WO (1) WO2010107627A2 (ko)

Families Citing this family (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
CN100539439C (zh) 2002-10-05 2009-09-09 数字方敦股份有限公司 连锁反应码的系统编码和解码系统和方法
EP1665539B1 (en) 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
CN101019326B (zh) 2004-05-07 2013-02-27 数字方敦股份有限公司 文件下载和流系统
US9136983B2 (en) * 2006-02-13 2015-09-15 Digital Fountain, Inc. Streaming and buffering using variable FEC overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
EP2203836A4 (en) 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7860996B2 (en) 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US20100312828A1 (en) * 2009-06-03 2010-12-09 Mobixell Networks Ltd. Server-controlled download of streaming media files
CN101938505B (zh) * 2009-07-01 2013-01-30 华为技术有限公司 一种P2P流媒体数据分发的方法、系统和proxy节点
US8626802B2 (en) * 2009-07-24 2014-01-07 Apple Inc. Dynamic media content previews
US10244017B2 (en) * 2009-08-14 2019-03-26 International Business Machines Corporation Processing of streaming data with a keyed join
CN102792291B (zh) * 2009-08-17 2015-11-25 阿卡麦科技公司 基于http的流分发的方法和系统
US8412841B1 (en) * 2009-08-17 2013-04-02 Adobe Systems Incorporated Media content streaming using stream message fragments
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
CN102498723B (zh) * 2009-09-14 2015-06-03 直视集团公司 用于分发内容的方法和系统
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
EP2484090A1 (en) * 2009-09-29 2012-08-08 Nokia Corp. System, method and apparatus for dynamic media file streaming
WO2011039614A1 (en) * 2009-09-29 2011-04-07 Nokia Corporation Systems, methods and apparatuses for media file streaming
US9237387B2 (en) * 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming
US8751677B2 (en) * 2009-10-08 2014-06-10 Futurewei Technologies, Inc. System and method to support different ingest and delivery schemes for a content delivery network
US9002881B2 (en) 2009-10-29 2015-04-07 Microsoft Technology Licensing, Llc Assembling streamed content for on-demand presentation
CN102055717B (zh) * 2009-11-09 2014-08-13 华为技术有限公司 快速播放的方法、终端及服务器
AU2010314582B2 (en) * 2009-11-09 2015-03-12 Snaptrack, Inc. Method, system and network equipment for implementing HTTP-based streaming media service
KR101750048B1 (ko) 2009-11-13 2017-07-03 삼성전자주식회사 변속 재생 서비스 제공 방법 및 장치
KR101750049B1 (ko) * 2009-11-13 2017-06-22 삼성전자주식회사 적응적인 스트리밍 방법 및 장치
WO2011068784A1 (en) * 2009-12-01 2011-06-09 Azuki Systems, Inc. Method and system for secure and reliable video streaming with rate adaptation
US20110296048A1 (en) * 2009-12-28 2011-12-01 Akamai Technologies, Inc. Method and system for stream handling using an intermediate format
US10001923B2 (en) 2009-12-29 2018-06-19 International Business Machines Corporation Generation collapse
US9727266B2 (en) 2009-12-29 2017-08-08 International Business Machines Corporation Selecting storage units in a dispersed storage network
US9798467B2 (en) 2009-12-29 2017-10-24 International Business Machines Corporation Security checks for proxied requests
US10133632B2 (en) 2009-12-29 2018-11-20 International Business Machines Corporation Determining completion of migration in a dispersed storage network
US9462316B2 (en) * 2009-12-29 2016-10-04 International Business Machines Corporation Digital content retrieval utilizing dispersed storage
US10031669B2 (en) 2009-12-29 2018-07-24 International Business Machines Corporation Scheduling migration related traffic to be non-disruptive and performant
EP2912791B1 (en) * 2010-03-05 2019-05-01 Samsung Electronics Co., Ltd Method and apparatus for generating and reproducing adaptive stream based on file format, and recording medium thereof
US8527649B2 (en) * 2010-03-09 2013-09-03 Mobixell Networks Ltd. Multi-stream bit rate adaptation
US8327029B1 (en) * 2010-03-12 2012-12-04 The Mathworks, Inc. Unified software construct representing multiple synchronized hardware systems
KR20110105710A (ko) * 2010-03-19 2011-09-27 삼성전자주식회사 복수의 챕터를 포함하는 콘텐트를 적응적으로 스트리밍하는 방법 및 장치
US9613142B2 (en) * 2010-04-26 2017-04-04 Flash Networks Ltd Method and system for providing the download of transcoded files
CN102291373B (zh) * 2010-06-15 2016-08-31 华为技术有限公司 元数据文件的更新方法、装置和系统
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8904027B2 (en) * 2010-06-30 2014-12-02 Cable Television Laboratories, Inc. Adaptive bit rate for data transmission
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US8832709B2 (en) 2010-07-19 2014-09-09 Flash Networks Ltd. Network optimization
KR20120034550A (ko) 2010-07-20 2012-04-12 한국전자통신연구원 스트리밍 컨텐츠 제공 장치 및 방법
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US9467493B2 (en) 2010-09-06 2016-10-11 Electronics And Telecommunication Research Institute Apparatus and method for providing streaming content
US9277260B2 (en) * 2010-10-01 2016-03-01 Mobitv, Inc. Media convergence platform
US9369512B2 (en) * 2010-10-06 2016-06-14 Electronics And Telecommunications Research Institute Apparatus and method for providing streaming content
KR101206698B1 (ko) * 2010-10-06 2012-11-30 한국항공대학교산학협력단 스트리밍 콘텐츠 제공 장치 및 방법
CN102487454A (zh) * 2010-12-03 2012-06-06 中兴通讯股份有限公司 一种分段节目快速启动的方法及系统
US8880633B2 (en) 2010-12-17 2014-11-04 Akamai Technologies, Inc. Proxy server with byte-based include interpreter
US20120265853A1 (en) * 2010-12-17 2012-10-18 Akamai Technologies, Inc. Format-agnostic streaming architecture using an http network for streaming
US20120159541A1 (en) * 2010-12-20 2012-06-21 Carton Owen A Platform shifted advertising and information fulfillment
CN102546716B (zh) * 2010-12-23 2015-08-19 中国移动通信集团公司 一种缓存区管理方法、装置及流媒体点播系统
US8914534B2 (en) * 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
US9661104B2 (en) * 2011-02-07 2017-05-23 Blackberry Limited Method and apparatus for receiving presentation metadata
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US8688074B2 (en) 2011-02-28 2014-04-01 Moisixell Networks Ltd. Service classification of web traffic
CN102231847B (zh) * 2011-03-14 2013-03-06 新奥特(北京)视频技术有限公司 一种支持流媒体文件直接帧精确定位方法
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
US8489760B2 (en) * 2011-03-31 2013-07-16 Juniper Networks, Inc. Media file storage format and adaptive delivery system
ES2429222B1 (es) * 2011-05-12 2014-06-05 Telefónica, S.A. Método y nodo de extremo para distribuir flujo continuo de contenido en tiempo real en una red de distribución de contenido
US20130167028A1 (en) * 2011-06-01 2013-06-27 Adobe Systems Incorporated Restricting media content rendering
US8751807B2 (en) * 2011-06-23 2014-06-10 Azuki Systems Inc. Method and system for secure over-the-top live video delivery
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9197900B2 (en) * 2011-09-14 2015-11-24 Mobitv, Inc. Localized redundancy for fragment processing
US8560719B2 (en) 2011-09-14 2013-10-15 Mobitv, Inc. Fragment server directed device fragment caching
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9197907B2 (en) 2011-10-07 2015-11-24 Ericsson Ab Adaptive ads with advertising markers
CN103051937A (zh) * 2011-10-12 2013-04-17 腾讯科技(深圳)有限公司 一种视频播控方法及装置
US8977704B2 (en) 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9401968B2 (en) 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US9648072B2 (en) 2012-01-31 2017-05-09 Comcast Cable Communications, Llc System and method for data stream fragmentation with scalability
US20130254417A1 (en) * 2012-03-21 2013-09-26 Jason Nicholls System method device for streaming video
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US9438883B2 (en) * 2012-04-09 2016-09-06 Intel Corporation Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
US9930408B2 (en) * 2012-04-25 2018-03-27 Verizon Patent And Licensing Inc. Live streaming circular buffer
CA2869311C (en) * 2012-04-26 2018-02-13 Michael G. Luby Enhanced block-request streaming system for handling low-latency streaming
US9014183B2 (en) * 2012-05-24 2015-04-21 Apple Inc. Buffer transfer service
US9571827B2 (en) * 2012-06-08 2017-02-14 Apple Inc. Techniques for adaptive video streaming
US9413801B2 (en) * 2012-06-28 2016-08-09 Adobe Systems Incorporated Media stream index merging
US9100460B2 (en) * 2012-06-28 2015-08-04 Adobe Systems Incorporated Media stream fragment request
US20140006537A1 (en) * 2012-06-28 2014-01-02 Wiliam H. TSO High speed record and playback system
US9277249B2 (en) 2012-07-24 2016-03-01 The Directv Group, Inc. Method and system for providing on-demand and pay-per-view content through a hospitality system
US20140063339A1 (en) * 2012-09-04 2014-03-06 Google Inc. In Browser Muxing and Demuxing For Video Playback
US20140109153A1 (en) * 2012-10-11 2014-04-17 Affirmed Networks, Inc. Expansion of a Stream Set and Transcoding of HTTP Adaptive Streaming Videos in a Mobile Network
US9369670B2 (en) * 2012-12-19 2016-06-14 Rabbit, Inc. Audio video streaming system and method
US9344472B2 (en) 2012-12-28 2016-05-17 Microsoft Technology Licensing, Llc Seamlessly playing a composite media presentation
US8904457B2 (en) * 2012-12-28 2014-12-02 Microsoft Corporation Archiving a live media presentation
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9106934B2 (en) 2013-01-29 2015-08-11 Espial Group Inc. Distribution of adaptive bit rate live streaming video via hyper-text transfer protocol
US9832492B2 (en) 2013-01-29 2017-11-28 Espial Group Inc. Distribution of adaptive bit rate video streaming via hyper-text transfer protocol
US9432426B2 (en) * 2013-02-04 2016-08-30 Qualcomm Incorporated Determining available media data for network streaming
EP2949123A2 (en) 2013-02-27 2015-12-02 Apple Inc. Adaptive streaming techniques
US20140258449A1 (en) * 2013-03-11 2014-09-11 Comcast Cable Communications, Llc Segmented content delivery
US10171887B2 (en) * 2013-03-13 2019-01-01 Comcast Cable Communications, Llc Methods and systems for intelligent playback
US11223510B2 (en) 2013-03-14 2022-01-11 Comcast Cable Communications, Llc Methods and systems for dynamic data management
US9906785B2 (en) 2013-03-15 2018-02-27 Sonic Ip, Inc. Systems, methods, and media for transcoding video data according to encoding parameters indicated by received metadata
WO2014172873A1 (en) * 2013-04-25 2014-10-30 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for improved network recording
US9973559B2 (en) * 2013-05-29 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for presenting content streams to a client device
US9094737B2 (en) 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
ES2674378T3 (es) 2013-07-19 2018-06-29 Opanga Networks, Inc. Detección de fuentes de contenido
CN104469433B (zh) * 2013-09-13 2018-09-07 深圳市腾讯计算机系统有限公司 一种视频直播回看方法及装置
US10015222B2 (en) * 2013-09-26 2018-07-03 Arris Canada, Inc. Systems and methods for selective retrieval of adaptive bitrate streaming media
US9516084B2 (en) 2013-11-01 2016-12-06 Ericsson Ab System and method for pre-provisioning adaptive bitrate (ABR) assets in a content delivery network
US10841353B2 (en) 2013-11-01 2020-11-17 Ericsson Ab System and method for optimizing defragmentation of content in a content delivery network
KR20150065289A (ko) * 2013-12-05 2015-06-15 삼성전자주식회사 데이터 재사용 방법 및 전자장치
KR102009124B1 (ko) * 2014-01-29 2019-08-08 코닌클리즈케 케이피엔 엔.브이. 이벤트 스트리밍 프레젠테이션 확립
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US9661254B2 (en) 2014-05-16 2017-05-23 Shadowbox Media, Inc. Video viewing system with video fragment location
CN104010232B (zh) * 2014-05-23 2017-12-12 惠州Tcl移动通信有限公司 一种智能播放在线视频的方法、系统、播放器及移动终端
US20150350622A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Packed i-frames
US10114805B1 (en) * 2014-06-17 2018-10-30 Amazon Technologies, Inc. Inline address commands for content customization
US9363566B2 (en) * 2014-09-16 2016-06-07 The Directv Group, Inc. Method and system for prepositioning content and distributing content in a local distribution system
US9794604B2 (en) * 2014-11-14 2017-10-17 Panopto, Inc. Systems and methods for transmitting segment-quality units of a streaming video session
US10659507B2 (en) * 2015-03-02 2020-05-19 Qualcomm Incorporated Indication for partial segment
US10412138B2 (en) 2015-03-02 2019-09-10 Qualcomm Incorporated Indication for partial segment
US10749930B2 (en) 2015-03-02 2020-08-18 Qualcomm Incorporated Indication for partial segment
US10075386B2 (en) 2015-05-08 2018-09-11 Adp, Llc Subscription-based information system
US11580125B2 (en) 2015-05-08 2023-02-14 Adp, Inc. Information system with temporal data
US11144520B2 (en) 2015-05-08 2021-10-12 Adp, Llc Information system with versioning descending node snapshot
WO2017061854A1 (en) * 2015-10-08 2017-04-13 Tradecast B.V. Client and method for playing a sequence of video streams, and corresponding server and computer program product
WO2017146700A1 (en) * 2016-02-24 2017-08-31 Shadowbox Media, Inc. Video viewing system with video fragment location
US10158687B2 (en) * 2016-03-01 2018-12-18 Hughes Network Systems, Llc Caching using multicast radio transmissions
JP6920578B2 (ja) * 2016-03-02 2021-08-18 パナソニックIpマネジメント株式会社 映像ストリーミング装置、映像編集装置および映像配信システム
CN105791884A (zh) * 2016-03-07 2016-07-20 读者出版传媒股份有限公司 一种流媒体直播方法及系统
US10313721B1 (en) 2016-06-22 2019-06-04 Amazon Technologies, Inc. Live streaming media content using on-demand manifests
US10277929B1 (en) * 2016-06-22 2019-04-30 Amazon Technologies, Inc. Live streaming media content using on-demand manifests
EP3539271A1 (en) 2016-11-10 2019-09-18 Telefonaktiebolaget LM Ericsson (PUBL) Resource segmentation to improve delivery performance
US10177965B1 (en) * 2016-11-10 2019-01-08 Amazon Technologies, Inc. Live media encoding failover system
CN114727134B (zh) * 2016-12-30 2024-02-06 谷歌有限责任公司 中断经不可侵犯清单协议提供的流传输内容的系统和方法
JP6472478B2 (ja) * 2017-04-07 2019-02-20 キヤノン株式会社 映像配信装置、映像配信方法及びプログラム
CN115314756B (zh) * 2017-06-15 2024-05-10 亚马逊技术有限公司 来自多个源的动态多媒体流插入的方法和存储介质
US10560726B2 (en) * 2017-07-26 2020-02-11 CodeShop BV System and method for delivery and caching of personalized media streaming content
US10349108B2 (en) * 2017-08-24 2019-07-09 Mobitv, Inc. System and method for storing multimedia files using an archive file format
US10469883B2 (en) 2017-09-13 2019-11-05 Amazon Technologies, Inc. Distributed multi-datacenter video packaging system
US10944804B1 (en) 2017-11-22 2021-03-09 Amazon Technologies, Inc. Fragmentation of time-associated data streams
US11025691B1 (en) * 2017-11-22 2021-06-01 Amazon Technologies, Inc. Consuming fragments of time-associated data streams
US10878028B1 (en) 2017-11-22 2020-12-29 Amazon Technologies, Inc. Replicating and indexing fragments of time-associated data streams
US11012488B2 (en) * 2017-12-13 2021-05-18 Verizon Patent And Licensing Inc. Content streaming redundancy architecture
US20200112753A1 (en) * 2018-10-03 2020-04-09 Qualcomm Incorporated Service description for streaming media data
US10972761B2 (en) * 2018-12-26 2021-04-06 Purdue Research Foundation Minimizing stall duration tail probability in over-the-top streaming systems
US10887366B1 (en) * 2019-07-08 2021-01-05 Cbs Interactive Inc. Systems, methods, and storage media for managing encoder instances in a serverless content distribution platform
US11741930B2 (en) * 2019-10-25 2023-08-29 Netflix, Inc. Systems and methods for streamlining multimedia content acquisition
EP3920539A1 (en) * 2020-06-04 2021-12-08 MK Systems USA Inc. Systems and methods for providing audio-video streams with alternative content

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060083117A (ko) * 2005-01-14 2006-07-20 마이크로소프트 코포레이션 동기적 통신 모드와 비동기적 통신 모드 사이를전이하기위한 방법 및 시스템
US20060224760A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
JP2008527601A (ja) * 2005-01-07 2008-07-24 エルジー エレクトロニクス インコーポレーテッド ローカルストレージを用いた記録媒体のデータ再生方法及び再生装置
KR20130061170A (ko) * 2010-08-10 2013-06-10 퀄컴 인코포레이티드 코딩된 비디오 데이터의 네트워크 스트리밍을 위한 매니페스트 파일 업데이트들

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6252873B1 (en) * 1998-06-17 2001-06-26 Gregory O. Vines Method of ensuring a smooth transition between MPEG-2 transport streams
SE513353C2 (sv) * 1998-10-21 2000-08-28 Ericsson Telefon Ab L M Partiell hämtning av bilder i den komprimerade domänen
US7159233B2 (en) * 2000-01-28 2007-01-02 Sedna Patent Services, Llc Method and apparatus for preprocessing and postprocessing content in an interactive information distribution system
US6728763B1 (en) * 2000-03-09 2004-04-27 Ben W. Chen Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins
FI120125B (fi) * 2000-08-21 2009-06-30 Nokia Corp Kuvankoodaus
US7689510B2 (en) * 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
US7213075B2 (en) * 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
US20040117427A1 (en) * 2001-03-16 2004-06-17 Anystream, Inc. System and method for distributing streaming media
KR100410973B1 (ko) 2001-04-18 2003-12-18 엘지전자 주식회사 주문형 비디오 시스템에서 동영상의 스트리밍 방법
US20020154691A1 (en) * 2001-04-19 2002-10-24 Kost James F. System and process for compression, multiplexing, and real-time low-latency playback of networked audio/video bit streams
US7054911B1 (en) * 2001-06-12 2006-05-30 Network Appliance, Inc. Streaming media bitrate switching methods and apparatus
US7412531B1 (en) * 2002-01-29 2008-08-12 Blue Coat Systems, Inc. Live stream archiving method and apparatus
CN1625880B (zh) 2002-01-30 2010-08-11 Nxp股份有限公司 在具有可变带宽的网络上流式传输多媒体数据
US20040167925A1 (en) * 2003-02-21 2004-08-26 Visharam Mohammed Zubair Method and apparatus for supporting advanced coding formats in media files
GB0319251D0 (en) * 2003-08-15 2003-09-17 British Telecomm System and method for selecting data providers
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
JP2005303927A (ja) * 2004-04-15 2005-10-27 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US20050283535A1 (en) * 2004-06-17 2005-12-22 Michele Covell Method and system for interactive control of media over a network
US7644108B1 (en) * 2005-09-15 2010-01-05 Juniper Networks, Inc. Network acceleration device cache supporting multiple historical versions of content
US7844820B2 (en) * 2005-10-10 2010-11-30 Yahoo! Inc. Set of metadata for association with a composite media item and tool for creating such set of metadata
JP2007173987A (ja) * 2005-12-19 2007-07-05 Canon Inc マルチメディアデータ送受信システム、及び装置、又はプログラム
US7624417B2 (en) * 2006-01-27 2009-11-24 Robin Dua Method and system for accessing media content via the internet
US7743161B2 (en) * 2006-10-10 2010-06-22 Ortiva Wireless, Inc. Digital content buffer for adaptive streaming
WO2008064356A1 (en) * 2006-11-22 2008-05-29 Metis Enterprise Technologies Llc Real-time multicast peer-to-peer video streaming platform
US20080178242A1 (en) * 2006-12-05 2008-07-24 Crackle, Inc. Video sharing platform providing for downloading of content to portable devices
US7617178B2 (en) * 2006-12-05 2009-11-10 International Business Machines Corporation Moving file fragments from background file sharing to foreground file sharing and preventing duplicate downloads
CN101636726B (zh) 2007-01-05 2013-10-30 Divx有限责任公司 包含连续播放的视频分配系统
US20080168516A1 (en) * 2007-01-08 2008-07-10 Christopher Lance Flick Facilitating Random Access In Streaming Content
US20080235331A1 (en) * 2007-01-26 2008-09-25 Sharon Melamed Scheduling synchronized demand for p2p networks
US8051145B2 (en) * 2007-03-30 2011-11-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method of simultaneously providing data to two or more devices on the same network
US20080307105A1 (en) * 2007-06-11 2008-12-11 Microsoft Corporation Streaming media archiver for live events
US20090019176A1 (en) * 2007-07-13 2009-01-15 Jeff Debrosse Live Video Collection And Distribution System and Method
US8149330B2 (en) * 2008-01-19 2012-04-03 At&T Intellectual Property I, L. P. Methods, systems, and products for automated correction of closed captioning data
KR100859705B1 (ko) 2008-02-05 2008-09-23 주식회사 셀런 임시i프레임을 생성하여 라이브 멀티미디어 스트림을전송하는 방법 및 시스템
US9141859B2 (en) * 2008-11-17 2015-09-22 Liveclips Llc Method and system for segmenting and transmitting on-demand live-action video in real-time
US9237387B2 (en) * 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008527601A (ja) * 2005-01-07 2008-07-24 エルジー エレクトロニクス インコーポレーテッド ローカルストレージを用いた記録媒体のデータ再生方法及び再生装置
KR20060083117A (ko) * 2005-01-14 2006-07-20 마이크로소프트 코포레이션 동기적 통신 모드와 비동기적 통신 모드 사이를전이하기위한 방법 및 시스템
US20060224760A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
KR20130061170A (ko) * 2010-08-10 2013-06-10 퀄컴 인코포레이티드 코딩된 비디오 데이터의 네트워크 스트리밍을 위한 매니페스트 파일 업데이트들

Also Published As

Publication number Publication date
KR101616152B1 (ko) 2016-04-27
US20100235528A1 (en) 2010-09-16
WO2010107627A3 (en) 2011-01-13
WO2010107627A2 (en) 2010-09-23
EP2409475B1 (en) 2017-07-05
EP2409475A4 (en) 2012-12-19
EP2409475A2 (en) 2012-01-25
US8909806B2 (en) 2014-12-09
CN102356622A (zh) 2012-02-15

Similar Documents

Publication Publication Date Title
KR101616152B1 (ko) 컴퓨터 구현 방법 및 컴퓨터 시스템
US10257587B2 (en) Integrating continuous and sparse streaming data
US9237387B2 (en) Low latency cacheable media streaming
US8621044B2 (en) Smooth, stateless client media streaming
US8392748B2 (en) Reliable media streaming
US10154320B2 (en) Dynamic time synchronization
CN111837403B (zh) 处理用于以流传送媒体数据的交互性事件
US9749676B2 (en) Virtual playback speed modification
KR102303582B1 (ko) 웹 콘텐츠에 대한 파일 트랙들을 사용하여 미디어 데이터를 프로세싱
WO2012097006A1 (en) Real-time or near real-time streaming
KR20150048669A (ko) 양방향 서비스를 처리하는 장치 및 방법
US11321516B2 (en) Processing dynamic web content of an ISO BMFF web resource track
WO2011123821A1 (en) Real-time or near real-time streaming
US11968417B2 (en) Systems, methods, and apparatuses for buffer management

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant