KR101535366B1 - 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트 - Google Patents

실시간 또는 준 실시간 스트리밍을 위한 재생 리스트 Download PDF

Info

Publication number
KR101535366B1
KR101535366B1 KR1020137034862A KR20137034862A KR101535366B1 KR 101535366 B1 KR101535366 B1 KR 101535366B1 KR 1020137034862 A KR1020137034862 A KR 1020137034862A KR 20137034862 A KR20137034862 A KR 20137034862A KR 101535366 B1 KR101535366 B1 KR 101535366B1
Authority
KR
South Korea
Prior art keywords
playlist
frames
file
media
ext
Prior art date
Application number
KR1020137034862A
Other languages
English (en)
Other versions
KR20140019003A (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 KR20140019003A publication Critical patent/KR20140019003A/ko
Application granted granted Critical
Publication of KR101535366B1 publication Critical patent/KR101535366B1/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/782Television signal recording using magnetic recording on tape
    • H04N5/783Adaptations for reproducing at a rate different from the recording rate

Landscapes

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

Abstract

1X와 다른 재생 속도로 미디어 스트림의 재생을 가능하게 하는 방법, 시스템 및 기계 판독가능한 저장 매체가 기술되어 있다. 일 실시예에서, 방법은 디스플레이 기한 이전에 이용가능한 상이한 I-프레임 집합들을 결정할 수 있고, 여기서 각 집합은 다른 케이던스(cadence)를 가질 수 있고, 1X와 다른 재생을 달성하기 위해 다운로드 및 디스플레이를 위해 그 집합들 중 하나가 선택될 수 있다. 클라이언트 장치로부터의 바이트 범위 요청은 각 I-프레임을 검색하는 데 이용될 수 있다. 다른 방법, 시스템 및 매체도 또한 기술되어 있다.

Description

실시간 또는 준 실시간 스트리밍을 위한 재생 리스트{PLAYLISTS FOR REAL-TIME OR NEAR REAL-TIME STREAMING}
관련 출원
본 출원은, 35 U.S.C. 119(e)에 따라, 2011년 6월 3일 출원된 미국 가출원 제61/493,329호의 출원 일자의 이득을 주장한다. 본 미국 특허 출원은 또한 다음과 같은 미국 특허 출원들과 관련되며, 그 각각은 본 명세서에서 참조 문헌으로 인용된다.
(1) 2009년 6월 5일 "REAL-TIME OR NEAR REAL-TIME STREAMING"이라는 명칭으로 출원된 출원 제12/479,690호(사건 번호 P7437US1);
(2) 2009년 6월 5일 "VARIANT STREAMS FOR REAL-TIME OR NEAR REAL-TIME STREAMING"이라는 명칭으로 출원된 출원 제12/479,698호(사건 번호 P7437US2);
(3) 2009년 6월 5일 "UPDATABLE REAL-TIME OR NEAR REAL-TIME STREAMING"이라는 명칭으로 출원된 출원 제12/479,732호(사건 번호 P7437US3); 및
(4) 2009년 6월 5일 "PLAYLISTS FOR REAL-TIME OR NEAR REAL-TIME STREAMING"이라는 명칭으로 출원된 출원 제12/479,735호(사건 번호 P7437US4).
본 발명의 실시예들은 데이터 전송 기술에 관한 것이다. 특히, 본 발명의 실시예들은, 예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)과 같은 비-스트리밍 프로토콜을 이용하여 데이터의 스트리밍을 가능하게 하는 기술에 관한 것이다.
콘텐츠의 스트리밍은 일반적으로 서버 장치에서 지속적으로 전송되어 클라이언트 장치에 의해 수신되는 멀티미디어 콘텐츠를 말한다. 이러한 콘텐츠는 대개 스트리밍 서버에 의해 전달되는 동안 최종 사용자(end-user)에게 제공된다. 그러한 명칭은 매체 자체라기보다 매체의 전달 방법을 지칭한다.
현재의 스트리밍 서비스는 일반적으로 특화된 서버에게 "라이브" 콘텐츠를 최종 사용자에게 배포할 것을 요구한다. 어떠한 대규모 배치에서도, 이는 많은 비용을 초래할 수 있고, 설정 및 실행에 특화된 기술을 필요로 한다. 이는 스트리밍을 위해 이용가능한 콘텐츠 라이브러리가 별로 바람직하지 못한 결과를 야기한다.
일 실시예에서 방법은 서버에 의해 저장된 파일에서 스트리밍 콘텐츠(streaming content)를 검색하기 위해 HTTP 라이브 스트리밍 프로토콜(http://tools.ietf.org/html/draft-pantos-http-live-streaming-06 참조)에 따르는 URL과 연관된 태그(tags)에 지정된 바이트 범위 요청 파라미터(byte range request parameters)를 이용할 수 있다. 클라이언트 시스템은 이러한 프로토콜에 따라 스트리밍될 수 있는 프로그램의 부분들을 지정하는 URL 및 연관된 태그를 포함하는 재생 리스트(playlist)수신하고, 그러한 태그는 바이트 범위 파라미터(예를 들어, 범위의 길이 및 파일 내의 소정 위치에서 벗어난 오프셋)를 포함하고; 상기 URL은 클라이언트로부터 서버로 전송되고 서버는 바이트 범위 파라미터를 이용하여 프로그램의 부분을 검색 및 전송한다. 이러한 방식으로, 미디어 콘텐츠는 복수의 소형 파일들이라기보다 단일의 대형 파일로서 저장될 수 있고 그 콘텐츠의 부분들은 바이트 범위 요청을 이용하여 HTTP 라이브 스트리밍 프로토콜을 통해 검색된 다음 클라이언트의 재생기에 의해 1X 재생 모드에서 프리젠테이션될 수 있다.
HTTP 스트리밍 프로토콜을 통해 전달된 "트릭 플레이(trick play)" 모드 재생(예를 들어, 빠르게 감기(fast forward) 또는 되감기(rewind))을 제공하기 위한 방법 또한 설명된다. 이 방법은 (다른 비디오 프레임과 독립적으로 디코드될 수 있는 키 프레임(keyframes) 또는 인트라 코딩된(intra-coded) 프레임인) I 프레임을 나타내는 URL을 포함하는 I 프레임 재생 리스트를 이용한다. 재생기 장치 또는 클라이언트는 콘텐츠의 전부를 나타내고 정상(예를 들어, 1X) 속도로 재생을 가능하게 해주는 URL을 포함하는 표준 재생 리스트를 다운로드 및 이용할 수 있고, 상기 재생기 장치 또는 클라이언트는 정상 속도와 다른 속도(예를 들어, 8X 또는 정상 재생 속도보다 8배 빠른 속도)로 재생하기 위해 I 프레임에 대한 URL을 포함하는 I 프레임 재생 리스트를 다운로드 및 이용할 수 있다. 상기 I 프레임 재생 리스트는 비디오 데이터의 특정 I 프레임에 대한 데이터인 파일 내의 데이터의 범위를 지정하는, 상기 재생 리스트 내의 URL과 연관된 파라미터들의 일부로서, 바이트 범위 파라미터들을 포함할 수 있고; 상기 범위는 데이터의 길이(예를 들어, 바이트 단위) 및 상기 파일의 처음으로부터의 오프셋과 같은 상기 파일 내의 시작 위치에 의해 지정될 수 있다. 이러한 방식으로, 상기 I 프레임 재생 리스트는 상기 클라이언트 장치에서 트릭 모드에서 재생을 프리젠테이션하기 위해 단지 I 프레임들만을 나타내는, 서버 상의 파일 내의 바이트 범위를 지정하는 그러한 파라미터들을 포함할 수 있다. 상기 클라이언트 장치는 상기 I 프레임 재생 리스트가 스트리밍 미디어의 트릭 플레이를 제공하는 데 이용될 때 검색된 I 프레임들을 포함하는 동일한 파일에 대한 URL들을 포함하는 표준 재생 리스트 파일을 이용하여 정상 재생을 재개할 수 있다. 일 실시예에서(예를 들어, MPEG-DASH 재생 리스트 파일), 1x 재생 리스트에 이용되는 표준 재생 리스트 파일은 또한 I프레임 위치를 지정하는 데이터를 포함한다. 일 실시예에서, I 프레임 재생 리스트 내의 태그는 현재의 I 프레임과 다음 I 프레임 사이의 시간 범위(span)를 나타내는 파라미터를 포함할 수 있고, 이 시간 범위는 소정 속도(예를 들어, 8X 또는 16X)의 재생을 위해 어느 I 프레임을 이용할지를 결정하는 데 이용될 수 있다. 또한, 일 실시예에서, 클라이언트 장치는 프로그램(예를 들어, 영화)에 대한 적어도 하나의 표준 재생 리스트(1X) 및 동일한 프로그램에 대한 트릭 플레이 모드를 위한 I 프레임 재생 리스트를 나타내는 변형(variant) 재생 리스트를 이용할 수 있다.
"바이트 범위"라는 문구는 다수의 바이트 또는 다수의 다른 크기 또는 그룹의 데이터에 의해 지정된 범위를 포함하는 것으로 이해될 것이다. 한 바이트는, 예를 들어, 9비트 또는 16비트 또는 32비트 또는 36비트 중 8비트일 수 있다.
일 실시예에서, 스트리밍 미디어의 "트릭 플레이" 모드 재생을 제공하기 위한 방법은 제2 재생 리스트에 대한 URL 및 제3 재생 리스트에 대한 URL을 포함하는 제1 재생 리스트를 수신할 수 있고; 상기 제2 재생 리스트는 I프레임들을 포함하는 파일의 부분들(예를 들어, 바이트 범위로 지정된 부분들)을 지정하는 복수의 URL 및 연관된 태그를 포함할 수 있고, 상기 제3 재생 리스트는 1X 재생 속도로 비디오를 디스플레이하기 위한 복수의 URL(또는 단일 URL)을 포함할 수 있다. 상기 제1 재생 리스트는 1X 재생을 위한 복수의 URL(및 이들 URL 각각은 상이한 해상도(예를 들어, 640 픽셀 x 480 픽셀 등) 또는 품질(예를 들어, 색상 비트 깊이)을 제공함)및 I프레임 전용 재생 리스트에 대한 URL(및 I프레임 재생 리스트에 대한 이들 URL 각각은 1X 이외에서 트릭 플레이 모드 재생을 위한 상이한 해상도 또는 품질을 제공함)을 포함하는 변형 재생 리스트일 수 있다. 상기 제3 재생 리스트 내의 상기 복수의 URL과 연관된 태그들 역시 각각 콘텐츠의 검색 및 1X 재생 속도로 콘텐츠의 재생을 위한 데이터 범위를 지정하는 바이트 범위들을 포함할 수 있다. 상기 방법은 또한 (a) 1X와 다른 재생 속도(이를테면 빨리 감기의 경우 8X 또는 16X 또는 32X 또는 되감기의 경우 -8X 또는 -16X 또는 -32X)를 결정하는 단계, (b) 상기 재생 속도를 결정함에 따라 상기 제2 재생 리스트에 대한 URL을 전송하는 단계, (c) 상기 제2 재생 리스트를 수신하는 단계, (d) 상기 제2 재생 리스트 내의 URL 및 연관된 태그들을 이용하여 I프레임에 대한 요청을 전송하는 단계, 및 (e) I프레임에 대한 요청에 따라 수신되는 상기 I프레임을 상기 선택된 재생 속도로 프리젠테이션하는(예를 들어, 디스플레이 장치 상에 디스플레이하는) 단계를 포함할 수 있다.
일 실시예에서, 본 발명의 방법은 다운로드되고 디스플레이되는 I프레임들이 시간에서 적어도 어느 정도 균등하게 분포되도록 I프레임들의 케이던스(cadence) 기반 선택을 이용하여 이용가능한 I프레임들의 부분 집합을 선택할 수 있고; 또한, 상기 방법은 상기 부분 집합을 이용가능한 I프레임들의 총수보다 적은 수로 제한할 수 있다. 이 방법은 (a) 재생 속도 및 적어도 하나의 I프레임을 다운로드하는 데 이용가능한 시간 기간과 같은 파라미터들의 집합을 결정하는 단계, (b) 이용가능한 I프레임들의 제1 집합을 결정하는 단계 - 상기 제1 집합은 시간이 지남에 따라 동적으로 변할 수 있는 상기 파라미터들에 기초하여 결정됨 -, (c) I프레임들의 복수의 부분 집합을 결정하는 단계 - 상기 복수의 부분 집합 각각은 상기 제1 집합 내의 상기 I프레임들의 부분 집합임 - , (d) 상기 I프레임들의 복수의 부분 집합 각각에 대한 추정된 다운로드 시간을 결정하는 단계, (e) 상기 추정된 다운로드 시간 및 상기 파라미터들의 집합에 기초하여 상기 I프레임들의 복수의 부분 집합 중 하나의 부분 집합을 선택하는 단계, 및 (f) 상기 I프레임들의 복수의 부분 집합 중 상기 선택된 하나의 부분 집합 내의 I프레임들을 수신 및 디스플레이하는 단계를 포함할 수 있다. 이 방법의 일 실시예에서, 상기 I프레임들의 디스플레이는 상기 I프레임들의 비디오 콘텐츠의 트릭 플레이 재생 모드를 상기 재생 속도로 제공하고, 각각의 I프레임은 대응하는 I프레임을 포함하는 파일의 일부를 식별하는 바이트 범위를 포함하는 연관된 태그 및 URL을 이용하여 검색(예를 들어, 다운로드)될 수 있다. 상기 파라미터들의 집합은 디스플레이 기한(deadline) 파라미터 및 디스플레이 중인 현재 I프레임의 현재 영화 시간을 포함할 수 있고; 적어도 하나의 I프레임을 다운로드하는 데 이용가능한 상기 시간 기간은 상기 현재 영화 시간 및 상기 재생 속도 및 일정한 지속 시간(예를 들어, 1/2초 또는 1초 또는 2초)으로 설정될 수 있는 상기 디스플레이 기한 파라미터로부터 도출될 수 있다. 일 실시예에서, 상기 디스플레이 기한 파라미터(예를 들어, 1초)를 상기 재생 속도와 곱하여 시간 값인 곱(예를 들어, 1X(8X))을 산출하고, 이 곱을 상기 현재 영화 시간에 더하여 적어도 하나의 I프레임을 다운로드하는 데 이용가능한 상기 시간 기간을 도출한다. 일 실시예에서, 적어도 하나의 I프레임을 다운로드하는 데 이용가능한 상기 시간 기간은 단순히 지금부터 상기 디스플레이 기한 시간까지의 시간이다. 상기 디스플레이 기한의 사용은 사용자가 기한 기간당 적어도 하나의 I프레임(예를 들어, 초당 적어도 하나의 I프레임)을 보는 것을 보장할 수 있다. 일 실시예에서, 상기 I프레임들의 부분 집합들 각각은 상기 부분 집합들 각각이 다른 부분 집합들의 케이던스들에 대해 상이한 케이던스를 갖도록 상기 I프레임들의 부분 집합들 사이에 뚜렷이 구별되는 미리 정해진 케이던스를 갖는다. 일 실시예에서, 상기 I프레임들의 복수의 부분 집합 각각의 상기 미리 정해진 케이던스는 (a) 상기 제1 집합 내에 이용가능한 I프레임들 모두; (b) 상기 이용가능한 I프레임들 중 하나 걸러 하나씩의 I프레임; 및 (c) 상기 이용가능한 I프레임들 중 둘 걸러 하나씩의 I프레임 등 중 하나이다. 일 실시예에서, 상기 파라미터들의 집합은 어떤 부분 집합도 미리 정해진 수보다 많은 I프레임을 가질 수 없도록 상기 부분 집합들 각각의 I프레임들의 수에 대한 한도를 포함한다.
다른 방법들이 설명되고, 시스템 및 기계 판독가능한 비일시적인 저장 매체도 또한 설명된다.
전술한 개요는 본 발명의 모든 양태를 모두 열거하지 않는다. 본 발명은 앞에서 요약한 다양한 양태의 모든 적절한 조합과, 또한 아래의 상세한 설명에 개시된 것들로부터 실시될 수 있는 모든 시스템 및 방법을 포함하는 것으로 예상된다.
본 발명은 같은 참조 부호가 유사한 구성 요소를 나타내는 첨부의 도면에서 제한이 아니라 예로서 예시되어 있다.
도 1은 실시간, 또는 준 실시간 콘텐츠를 송수신할 수 있는 서버 및 클라이언트의 일 실시예의 블록도이다.
도 2a는 하나 이상의 서버 장치가 비-스트리밍 프로토콜을 이용하여 미디어 콘텐츠를 지원하도록 하는 기술의 일 실시예의 흐름도이다.
도 2b는 하나 이상의 서버 장치가 동적으로 업데이트된 재생 리스트를 하나 이상의 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다.
도 2c는 하나 이상의 서버 장치가 다중 비트 레이트를 이용하여 미디어 콘텐츠를 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다.
도 3a는 클라이언트 장치가 비-스트리밍 프로토콜을 이용하여 콘텐츠의 스트리밍을 지원하는 기술의 일 실시예의 흐름도이다.
도 3b는 클라이언트 장치가 다중 비트 레이트를 이용하여 콘텐츠의 스트리밍을 지원하도록 하는 기술의 일 실시예의 흐름도이다.
도 4는 서버 스트림 에이전트의 일 실시예의 블록도이다.
도 5는 클라이언트 스트림 에이전트의 일 실시예의 블록도이다.
도 6은 다중 태그를 갖는 재생 리스트 파일의 일 실시예를 예시한다.
도 7은 본 명세서에 설명된 바와 같은 조립된 스트림의 재생 기술의 일 실시예의 흐름도이다.
도 8은 전자 시스템의 일 실시예의 블록도이다.
도 9a는 클라이언트 장치가 어떻게 변형 재생 리스트 내의 대안적인 콘텐츠 사이를 전환할 수 있는지에 대한 일례를 도시하는 흐름도이다.
도 9b는 클라이언트 장치가 어떻게 두 재생 리스트 내의 콘텐츠 사이를 전환할 수 있는지를 도시하는 다른 흐름도이다.
도 9c는 클라이언트 장치가 어떻게 오디오 패턴 매칭을 이용하여 콘텐츠 사이를 전환할 수 있는지에 대한 일례를 도시하는 또 다른 흐름도이다.
도 9d는 도 9c의 방법이 어떻게 오디오 패턴 매칭을 이용하여 구현되는지를 도식적으로 도시한다.
도 10은 1X(정상 속도)에서 재생을 위한 복수의 URL을 포함하는 변형 재생 리스트의 일례를 도시하는 것으로, 이들 URL 각각은 상이한 해상도 또는 품질에서 1X 재생을 위한 재생 리스트를 제공하고, 변형 재생 리스트는 또한 1X 이외의 레이트에서 재생을 위한 복수의 URL도 포함한다.
도 11은 I프레임 재생 리스트를 생성하기 위해, 서버에서 수행될 수 있는 방법을 예시한다.
도 12는 I프레임 재생 리스트를 처리하는데 사용될 수 있고 도 14 또는 도 15에 도시된 방법들을 수행할 수 있는 클라이언트 장치를 나타내는 블록도이다.
도 13a는 영화 또는 주문형 비디오와 같은 비디오 파일의 일례를 도시하는 것으로, 이 비디오 파일 내에 I프레임들이 있다.
도 13b는 도 13a에 도시된 비디오 파일에 대한 I프레임 재생 리스트의 일례를 도시한다.
도 14는 I프레임 재생 리스트를 처리하기 위한 방법의 일례를 도시하는 흐름도이다.
도 15는 I프레임 재생 리스트를 처리하기 위한 또 다른 방법의 일례를 도시하는 흐름도이다.
도 16은 I프레임을 갖는 비디오 파일의 일례 및 소정의 한도가 어떻게 I프레임들의 한도를 초과하는 케이던스를 배제하는 데 이용될 수 있는지를 보여준다.
도 17의 (a), (b), (c), 및 (d)는 이용가능한 I프레임들의 상이한 부분 집합들을 나타내는 상이한 케이던스들의 예들을 도시한다.
도 18은 상이한 해상도 및/또는 품질의 I프레임 재생 리스트들 사이의 전환 방법을 도시하는 흐름도이다.
도 19는 본 발명의 일부 실시예에 이용가능한 예시적인 API 아키텍처의 블록도를 예시한다.
도 20은 본 발명의 일부 실시예에 이용가능한 소프트웨어 스택의 예시적인 실시예를 도시한다.
후술하는 설명에서는, 많은 구체적인 상세 내용이 기술된다. 그러나, 본 발명의 실시예들은 이러한 구체적인 상세 내용 없이도 실시될 수 있다. 다른 경우에, 잘 알려진 회로, 구조 및 기술은 본 설명의 이해를 불명확하게 하지 않도록 하기 위해 상세히 도시되지 않았다.
본 설명은 그래픽 사용자 인터페이스 이미지의 삽화와 같은, 저작권에 의해 보호되는 내용을 포함한다. 이로써 본 발명의 양수인을 포함하여 본 저작권의 소유자는 이러한 내용에 있어서 저작권을 포함하여 자신들의 권리를 보유한다. 본 저작권자는 특허 문서 또는 특허 명세서가 미국 특허 상표청의 파일 또는 기록에 나타나 있는 경우에 누구든지 이를 복사하여도 반대하지 않지만, 그렇지 않다면 무엇이든지 모든 저작권을 보유한다. 저작권 Apple Inc. 2009.
본 설명의 일 양태는 본 명세서에 설명된 재생 리스트 내의 바이트 범위 요청을 이용하는 것과 관련되고, 본 설명의 또 다른 양태는 스트리밍 미디어 내의 I프레임으로부터 빨리 감기(fast forward) 또는 되감기(rewind)(역방향) 재생을 제공하는 방법 및 빨리 감기 또는 되감기를 제공할 때 I프레임의 케이던스(cadence)가 선택되게 해주는 타이밍 정보를 갖는 재생 리스트를 이용하는 것과 관련된다. 이러한 양태는 도 1 내지 도 9d와 함께 배경 정보를 제공한 이후 도 10 내지 도 18과 함께 설명될 것이다.
일 실시예에서, 본 명세서에 설명된 기술 및 컴포넌트는 비-스트리밍(non-streaming) 프로토콜(예를 들어, HTTP) 및 다른 기술(예를 들어, 동화상 전문가 그룹(MPEG) 스트림)을 이용하여 스트리밍 경험을 전달하는 메커니즘을 포함할 수 있다. 예를 들어, 준 실시간(near real-time) 스트리밍 경험은 HTTP를 이용하여 "라이브(live)" 음악 또는 스포팅(sporting) 이벤트, 라이브 뉴스, 웹 카메라 피드(feed) 등을 방송하기 위해 제공될 수 있다. 일 실시예에서, 프로토콜은 입력 미디어 데이터를 다중 미디어 파일들로 분할하여 이들 분할된 미디어 파일을 서버에 저장할 수 있다. 이러한 프로토콜은 또한 클라이언트를 서버에 저장된 분할된 미디어 파일들로 향하게 하는 URI(Uniform Resource Identifier)들을 포함하는 재생 리스트(playlist) 파일을 구축할 수 있다. 분할된 미디어 파일들이 재생 리스트 파일(들)에 따라 재생되면, 클라이언트는 "라이브" 이벤트의 준 실시간 방송을 사용자에게 제공할 수 있다. 사전 녹화된 콘텐츠도 유사한 방식으로 제공될 수 있다.
일 실시예에서, 서버는 부가적인 또는 대안적인 미디어 콘텐츠(예를 들어, 광고, 스포팅 이벤트와 관련된 통계, 주 프리젠테이션(presentation) 이외의 미디어 콘텐츠)를 방송 이벤트에 동적으로 도입할 수 있다. 예를 들어, 클라이언트가 미디어 이벤트를 재생하는 동안, 서버는 재생 리스트 파일에 부가 URI를 추가할 수 있고, URI는 클라이언트가 부가 미디어 파일을 다운로드할 수 있는 위치를 식별할 수 있다. 서버가 도입한 임의의 부가적인 또는 추가적인(또는 둘 다) 미디어 콘텐츠에 액세스하기 위해, 클라이언트는 서버로부터 하나 이상의 업데이트된 재생 리스트 파일(들)을 주기적으로 검색하라는 명령을 받을 수 있다.
일 실시예에서, 서버는 누적 모드(cumulative mode)에서 또는 롤링 모드(rolling mode)에서 동작할 수 있다. 누적 모드에서, 서버는 재생 리스트 파일을 생성하고 그 재생 리스트 파일의 끝에 미디어 파일 식별자를 부가할 수 있다. 그 후, 클라이언트는 다운로드 받을 때 단일 재생 리스트 파일로부터 스트림의 부분들 전부에 액세스할 수 있다(예를 들어, 사용자가 쇼의 중간에 시작할 수 있다). 롤링 모드에서, 서버는 재생 리스트 파일의 처음부터 롤링 단위(rolling basis)로 미디어 파일 식별자를 제거하여 미디어 파일의 유효성을 제한할 수 있고, 그럼으로써 클라이언트 장치가 액세스 가능한 미디어 콘텐츠의 슬라이딩 윈도우(sliding window)를 제공할 수 있다. 서버는 또한 재생 리스트에 미디어 파일 식별자를 추가할 수 있고, 롤링 모드에서, 서버는 미디어 파일의 유효성을 재생 리스트에 가장 최근에 추가된 것들로 제한할 수 있다. 그 후, 클라이언트는 지속적으로 시청하기 위해 재생 리스트 파일의 업데이트된 사본을 반복적으로 다운로드한다. 재생 리스트의 다운로딩을 위한 롤링 단위는 콘텐츠가 잠재적으로 시간에서 한정되지 않는 경우에(예를 들어, 연속적으로 동작하는 웹캠(web cam)으로부터의 콘텐츠) 유용할 수 있다. 클라이언트는 재생 리스트에서 종료 태그(end tag)를 발견할 때까지 롤링 모드에서 재생 리스트를 지속적으로 반복하여 요청할 수 있다.
일 실시예에서, 메커니즘은 동일한 프리젠테이션의 변형(variant) 스트림들을 제공하여 비트 레이트 전환을 지원한다. 예를 들어, 서비스 대상 프리젠테이션의 여러 버전이 서버에 저장될 수 있다. 각 버전은 실질적으로 동일한 콘텐츠를 가질 수 있지만, 다른 비트 레이트로 인코드될 수 있다. 이는 클라이언트 장치가 재생의 연속성을 손상하지 않고, 예를 들어, 이용가능한 대역폭의 검출에 따라 비트 레이트 사이를 전환할 수 있도록 해준다.
일 실시예에서, 콘텐츠를 비인가(unauthorized) 사용으로부터 보호하기 위해 보호 기능이 제공될 수 있다. 예를 들어, 예측을 막기 위해 비순차적 미디어 파일 번호 부여(numbering) 방식이 이용될 수 있다. 미디어 파일의 암호화(encryption)가 이용될 수 있다. 부분적인 미디어 파일 리스트가 이용될 수 있다. 또한, 추가적인 및/또는 다른 보호 기능도 제공될 수 있다.
도 1은 실시간, 또는 준 실시간 콘텐츠를 송수신할 수 있는 서버 및 클라이언트의 일 실시예의 블록도이다. 도 1의 예는 네트워크를 통해 서버와 연결된 두 개의 클라이언트와의 간단한 서버-클라이언트 접속을 제공한다. 본 명세서에 설명된 기술 및 메커니즘을 이용하면 몇 개의 클라이언트라도 지원될 수 있다. 또한, 다수의 서버가 콘텐츠를 제공할 수 있고 및/또는 본 명세서에 설명된 기술 및 메커니즘에 따라 콘텐츠를 제공하기 위해 함께 동작할 수 있다. 예를 들어, 하나의 서버는 콘텐츠를 생성하고, 재생 리스트를 생성하고 다중 미디어(예를 들어, 파일들)를 생성할 수 있으며, 다른 서버들은 생성된 콘텐츠를 저장 및 전송할 수 있다.
네트워크(110)는 유선이든, 무선이든(예를 들어, IEEE 802.11, 802.16) 또는 이들의 어떤 조합이든 어떤 형태의 네트워크라도 될 수 있다. 예를 들어, 네트워크(110)는 인터넷 또는 인트라넷일 수 있다. 또 다른 예로, 네트워크(110)는 셀룰러 네트워크(예를 들어, 3G, CDMA)일 수 있다. 일 실시예에서, 클라이언트 장치(150 및 180)는 다중 네트워크 형태를 통해 통신할 수 있다(예를 들어, 각 장치는 WiFi 무선 LAN을 통해 또한 무선 셀룰러 전화 네트워크를 통해) 통신할 수 있다. 예를 들어, 클라이언트 장치(150 및 180)는 데이터 네트워크뿐 아니라 셀룰러 무선전화 네트워크를 통해서도 통신할 수 있는 스마트폰 또는 셀룰러-가능 개인 휴대 정보 단말기일 수 있다. 이러한 장치들은 네트워크의 형태를 통해서 또는 심지어 필요에 따라 네트워크 사이의 전환을 통해서 본 명세서에 설명된 스트리밍 메커니즘을 이용할 수 있다.
서버(120)는 본 기술 분야에 알려진 어떤 방식으로도 HTTP 서버로서 동작할 수 있다. 즉, 서버(120)는 HTTP 프로토콜을 이용하여 콘텐츠를 제공하는 HTTP 서버 에이전트(145)를 포함한다. 도 1의 예가 HTTP 측면에서 설명되지만, 다른 프로토콜도 유사한 방식으로 이용될 수 있다. 세그먼터(segmenter)(130) 및 인덱서(indexer)(135)는 서버(120)(또는 다중 서버)에 상주하여 본 명세서에 설명된 바와 같은 재생 리스트 파일을 갖는 미디어 파일의 콘텐츠를 제공하는 에이전트이다. 이러한 미디어 파일 및 재생 리스트 파일은 네트워크(110)를 통해 HTTP 프로토콜을 이용하는 HTTP 서버 에이전트(145)를 경유하여(또는 다른 서버를 경유하여) 제공될 수 있다. 본 명세서에서 논의된 바와 같은 에이전트는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다.
세그먼터(130)는 미디어 데이터의 스트림을 HTTP 프로토콜을 통해 전송될 수 있는 다중 미디어 파일들로 분할하는 기능을 할 수 있다. 인덱서(135)는 클라이언트 장치가 미디어 파일들을 재조립하여 서버(120)에 의해 제공된 콘텐츠의 실시간, 또는 준 실시간 전송을 제공할 수 있도록 분할된 미디어 파일들에 해당하는 재생 리스트 파일을 생성하는 기능을 할 수 있다. 클라이언트 장치로부터의 하나 이상의 요청에 따라, HTTP 서버 에이전트(145)(또는 다른 서버들)는 인덱서(135)에 의해 생성된 하나 이상의 재생 리스트 파일과 세그먼터(130)에 의해 생성된 바와 같은 콘텐츠의 미디어 파일들을 전송할 수 있다. 서버(120)는 본 명세서에서 논의된 보안 기능들(예를 들어, 암호화) 중 하나 이상을 제공하는 선택적인 보안 에이전트(140)를 더 포함할 수 있다. 서버(120)는 또한 도 1에 예시되지 않은 추가 컴포넌트를 포함할 수 있다.
클라이언트 장치(150 및 180)는 서버(120)로부터 네트워크(110)를 통해 재생 리스트 파일 및 미디어 파일을 수신할 수 있다. 클라이언트 장치는 네트워크를 통해 전송된 데이터를 수신하고 네트워크를 통해 수신된 데이터를 이용하여 출력을 생성할 수 있는 어떤 형태의 전자 장치라도 될 수 있으며, 예를 들어, 무선 모바일 장치, PDA, 엔터테인먼트 장치, 고객 전자 장치 등일 수 있다. 이러한 출력은, 예를 들어, 오디오, 비디오 또는 이들의 어떤 조합을 포함하여 미디어 형태의 어떤 형태의 조합이라도 될 수 있다.
클라이언트 장치(150)는 어셈블러 에이전트(160) 및 출력 생성기 에이전트(165)를 포함할 수 있다. 마찬가지로, 클라이언트 장치(180)는 어셈블러 에이전트(190) 및 출력 생성기 에이전트(195)를 포함할 수 있다. 어셈블러 에이전트(160 및 180)는 서버(120)로부터 재생 리스트 파일을 수신하고 그 재생 리스트 파일을 이용하여 서버(120)로부터의 미디어 파일에 액세스하고 이들을 다운로드한다. 출력 생성기 에이전트(165 및 195)는 다운로드된 미디어 파일을 이용하여 클라이언트 장치(150 및 160)에서 각각 출력을 생성한다. 이러한 출력은 하나 이상의 스피커, 하나 이상의 디스플레이 화면, 스피커와 디스플레이 화면의 조합 또는 어떤 다른 입력 또는 출력 장치에 의해 제공될 수 있다. 클라이언트 장치는 또한 미디어 파일(예를 들어, 압축된 미디어 파일 또는 압축되지 않은 미디어 파일)의 수신시 이들을 저장하는 버퍼로서 동작하는 메모리(예를 들어, 플래시 메모리 또는 DRAM 등)를 포함할 수 있고; 그 버퍼는 새로운 콘텐츠가 다운로드되는 동안 버퍼링된 콘텐츠가 나중에 디스플레이될 수 있도록 현재 프리젠테이션 중인 콘텐츠의 시간을 지나서 몇 초 상당의 프리젠테이션 가능한 콘텐츠를 제공할 수 있다. 이러한 버퍼는 클라이언트 장치가 간헐적으로 저속의 네트워크 접속을 통해 콘텐츠를 검색하려고 시도하는 동안 프리젠테이션 가능한 콘텐츠를 제공할 수 있고 따라서 버퍼는 네트워크 지연 시간 또는 접속 문제를 은폐할 수 있다.
클라이언트 장치(150 및 180)는 각각 본 명세서에서 논의된 보안 기능들 중 하나 이상을 제공하는 선택적인 보안 에이전트(170 및 185)를 더 포함할 수 있다. 클라이언트 장치(150 및 180)는 또한 도 1에 예시되지 않은 추가 컴포넌트도 포함할 수 있다.
일 실시예에서, 본 출원에서 설명된 기술은 비-스트리밍 프로토콜(예를 들어, HTTP)을 통해 멀티미디어 데이터의 무제한 스트림을 전송하는 데 이용될 수 있다. 실시예는 또한 미디어 데이터의 암호화 및/또는 (예를 들어, 대안의 비트 레이트를 제공하기 위해) 스트림의 다른 버전들의 준비를 포함할 수 있다. 미디어 데이터는 생성 후 바로 전송될 수 있기 때문에, 그 데이터는 준 실시간으로 수신될 수 있다. 멀티미디어 데이터 스트림의 서버(송신기) 및 클라이언트(수신기)에서 취할 동작뿐 아니라 파일에 대한 예시적인 데이터 포맷도 제공되지만; 다른 포맷도 또한 지원될 수 있다.
모의(simulated) 실시간 스트림(또는 준 실시간 스트림)으로 전송될 수 있는 미디어 프리젠테이션은 재생 리스트 파일을 표시하는 URI(Universal Resource Indicator)에 의해 지정된다. 일 실시예에서, 재생 리스트 파일은 추가 URI들의 순서화된 리스트이다. 재생 리스트 파일 내에 있는 각 URI는 특정 프로그램의 미디어 데이터의 단일 인접(contiguous) 스트림일 수 있는 스트림의 한 세그먼트(segment)에 해당하는 미디어 파일을 말한다.
미디어 데이터의 스트림을 재생하기 위해, 클라이언트 장치는 서버로부터 재생 리스트 파일을 얻는다. 클라이언트는 또한 재생 리스트 파일에 표시된 각 미디어 데이터 파일을 얻어 재생한다. 일 실시예에서, 클라이언트는 추가적인 및/또는 다른 미디어 세그먼트들을 찾기 위해 재생 리스트 파일을 동적으로 또는 반복적으로 재로드(reload)할 수 있다.
재생 리스트 파일은, 예를 들어, 확장형 M3U 재생 리스트 파일일 수 있다. 일 실시예에서, M3U 포맷을 효율적으로 확장하는 추가 태그가 이용된다. M3U는 MP3 URL(Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator)를 지칭하고, 멀티미디어 재생 리스트를 저장하는 데 이용되는 포맷이다. M3U 파일은 미디어 재생기가 재생할 하나 이상의 미디어 파일의 위치를 포함하는 텍스트 파일이다.
재생 리스트 파일은 일 실시예에서 개별 라인들로 이루어진 확장형 M3U-포맷화된 텍스트 파일이다. 이러한 라인들은 단일 LF 문자 또는 CR 문자와 뒤이어 오는 LF 문자에 의해 종단될 수 있다. 각 라인은 URI, 공백(blank) 라인일 수 있고, 또는 주석(comment) 문자(예를 들어, '#')로 시작할 수 있다. URI는 재생될 미디어 파일을 식별한다. 공백 라인은 무시될 수 있다.
주석 문자로 시작하는 라인은 주석 또는 태그일 수 있다. 태그는 #EXT로 시작할 수 있고, 반면에 주석 라인은 #로 시작할 수 있다. 주석 라인은 보통 서버 및 클라이언트에 의해 무시된다. 일 실시예에서, 재생 리스트 파일은 UTF-8 포맷으로 인코드된다. UTF-8(8비트 유니코드 변환 포맷)은 가변 길이 문자 인코딩 포맷이다. 대안의 실시예에서, 다른 문자 인코딩 포맷이 이용될 수 있다.
다음의 예에서, 두 개의 태그, 즉 EXTM3U 및 EXTINF를 포함하는 확장형 M3U 포맷이 이용된다. 확장형 M3U 파일은 "#EXTM3U"를 포함하는 첫 번째 라인에 의해 기본 M3U 파일과 구별될 수 있다.
EXTINF는 태그에 뒤이어 오는 URI에 의해 식별되는 미디어 파일을 기술하는 기록 표시자(record marker)이다. 일 실시예에서, 각 미디어 파일 URI는 EXTINF 태그 뒤에 온다. 예를 들면,
#EXTINF:<duration>,<title>
여기서 "duration"은 미디어 파일의 지속 시간을 지정하고 "title"은 타겟(target) 미디어 파일의 제목이다.
일 실시예에서, 다음과 같은 태그들은 미디어 파일의 전송 및 재생을 관리하는 데 이용될 수 있다.
EXT-X-TARGETDURATION
EXT-X-MEDIA-SEQUENCE
EXT-X-KEY
EXT-X-PROGRAM-DATA-TIME
EXT-X-ALLOW-CACHE
EXT-X-STREAM-INF
EXT-X-ENDLIST
이러한 태그들은 각각 아래에서 더 구체적으로 설명될 것이다. 각각의 새로운 태그와 관련하여 특정한 포맷 및 속성이 설명되지만, 대안의 실시예는 또한 다른 속성, 명칭, 포맷 등으로도 지원될 수 있다.
EXT-X-TARGETDURATION 태그는 프리젠테이션에 추가될 다음 미디어 파일의 근사 지속 시간을 표시할 수 있다. 이 태그는 재생 파일에 포함될 수 있고 포맷은 다음과 같을 수 있다:
#EXT-X-TARGETDURATION:<seconds>
여기서 "seconds"는 미디어 파일의 지속 시간을 나타낸다. 일 실시예에서, 실제 지속 시간은 태그가 표시한 타겟 지속 시간과 약간 다를 수 있다. 일 실시예에서, 세그먼트를 나타내는 모든 URI는 그 세그먼트의 근사 지속 시간과 연관될 것이며; 예를 들어, 세그먼트의 URI 앞에는 그 세그먼트의 근사 지속 시간을 표시하는 태그가 붙을 수 있다.
재생 리스트 파일 내의 각 미디어 파일 URI는 고유 시퀀스 번호를 가질 수 있다. 만일 존재한다면, URI의 시퀀스 번호는 그것보다 앞선 URI의 시퀀스 번호에 일 실시예에서 1을 더한 것과 같다. EXT-X-MEDIA-SEQUENCE 태그는 재생 리스트 파일에 나타나는 첫 번째 URI의 시퀀스 번호를 표시할 수 있고 그 포맷은 다음과 같을 수 있다:
#EXT-X-MEDIA-SEQUENCE:<number>
여기서 "number"는 URI의 시퀀스 번호이다. 만일 재생 리스트 파일이 #EXT-X-MEDIA-SEQUENCE 태그를 포함하지 않는다면, 재생 리스트 내의 첫 번째 URI의 시퀀스 번호는 1로 간주될 수 있다. 일 실시예에서, 시퀀스 번호 부여 방식은 비순차적일 수 있고; 예를 들어, 1, 5, 7, 17 등과 같은 비순차적 시퀀스 번호 부여 방식은 시퀀스에서 다음 번호의 예측을 어렵게 할 수 있고 이는 저작권 침해로부터 콘텐츠를 보호하는데 도움을 줄 수 있다. 콘텐츠를 보호하는데 도움을 주는 또 다른 옵션은 임의의 주어진 시간에 단지 재생 리스트의 일부만을 누설하는 것이다.
일부 미디어 파일은 암호화될 수 있다. EXT-X-KEY 태그는 그 다음에 오는 미디어 파일을 암호 해독(decrypt)하는 데 이용될 수 있는 정보를 제공하고 포맷은 다음과 같을 수 있다:
#EXT-X-KEY:METHOD=<method>[,URI="<URI>"]
METHOD 파라미터는 암호화 방법을 지정하고, 만일 존재한다면 URI 파라미터는 키를 얻는 방법을 지정한다.
NONE이라는 암호화 방법은 암호화하지 않음을 나타낸다. 다양한 암호화 방법, 예를 들어, 128비트 키 및 PKCS7 패딩(padding)을 갖는 어드밴스 암호화 표준(Advance Encryption Standard) 암호화를 이용하는 암호화를 나타내는 AES-128이 이용될 수 있다[RFC3852 참조]. 새로운 EXT-X-KEY 태그는 모든 이전의 EXT-X-KEY 태그를 대체한다.
URI 파라미터를 갖는 EXT-X-KEY 태그는 키 파일을 식별한다. 키 파일은 재생 리스트 파일에 열거된 후속 미디어 파일을 암호 해독하는 데 이용될 암호 키(cipher key)를 포함할 수 있다. 예를 들어, AES-128 암호화 방법은 16 옥텟(octet) 키를 이용한다. 키 파일의 포맷은 이진 포맷의 16 옥텟의 패킷화된 어레이일 수 있다.
AES-128의 사용은 보통 암호화 및 암호 해독시 동일한 16 옥텟 초기화 벡터(IV)가 공급될 것을 요구한다. IV의 변경은 암호의 강도를 증가시키는 데 이용될 수 있다. AES-128 암호화를 이용할 때, 미디어 파일의 시퀀스 번호는 미디어 파일을 암호화 또는 암호 해독할 때 IV로서 이용될 수 있다.
EXT-X-PROGRAM-DATE-TIME 태그는 다음 미디어 파일의 처음을 절대 날짜 및/또는 시간과 연관시킬 수 있고 시간 영역을 포함하거나 표시할 수 있다. 일 실시예에서, 날짜/시간 표현은 ISO/IEC 8601:2004이다. 태그 포맷은 다음과 같을 수 있다:
EXT-X-PROGRAM-DATE-TIME:<YYYY-MM-DDThh:mm:ssZ>
EXT-X-ALLOW-CACHE 태그는 클라이언트가 나중의 재생을 위해 다운로드된 미디어 파일을 저장할 수 있는지 여부를 표시하는 데 이용될 수 있다. 태그 포맷은 다음과 같을 수 있다:
EXT-X-ALLOW-CACHE:<YES|NO>
EXT-X-ENDLIST 태그는 일 실시예에서 재생 리스트 파일에 미디어 파일이 더 이상 추가되지 않을 것이라는 것을 표시한다. 태그 포맷은 다음과 같을 수 있다:
EXT-X-ENDLIST
일 실시예에서, 만일 재생 리스트가 마지막 세그먼트 또는 미디어 파일을 포함한다면, 재생 리스트는 EXT-X-ENDLIST 태그를 가질 것이다.
EXT-X-STREAM-INF 태그는 재생 리스트 파일 내의 다음 URI가 또 다른 재생 리스트 파일을 식별하는 것을 표시하는 데 이용될 수 있다. 태그 포맷은 일 실시예에서 다음과 같을 수 있다:
EXT-X-STREAM-INF:[attribute=value][,attribute=value]*<URI>
여기서 다음과 같은 속성들이 이용될 수 있다. 속성 BANDWIDTH=<n>은 초당 비트 수로 표현된 스트림 비트 레이트의 근사 상한(upper bound)이다. 속성 PROGRAM-ID=<i>는 재생 리스트 파일의 범위 내에 있는 특정 프리젠테이션을 고유하게 식별하는 번호이다. 재생 리스트 파일은 동일한 프리젠테이션의 변형 스트림들을 기술하는 동일한 PROGRAM-ID를 갖는 다중 EXT-X-STREAM-INF URI를 포함할 수 있다. 변형 스트림 및 변형 재생 리스트가 본 명세서에서 더 설명된다(예를 들어, 도 9a 내지 도 9d 참조).
전술한 태그 및 속성들은 서버 장치에 의해 원(original) 미디어 콘텐츠를 나타내는 미디어 파일을 구조화, 전송 및 처리하는 데 이용될 수 있다. 클라이언트 장치는 이러한 정보를 이용하여 실시간, 또는 준 실시간 스트리밍 경험(예를 들어, 음악 또는 스포팅 이벤트와 같은 라이브 방송의 시청)을 클라이언트 장치의 사용자에게 제공하는 방식으로 미디어 파일을 재조립하여 프리젠테이션한다.
재생 리스트 파일 내의 각 미디어 파일 URI는 원 프리젠테이션(예를 들어, 원 미디어 콘텐츠)의 세그먼트인 미디어 파일을 식별한다. 일 실시예에서, 각 미디어 파일은 MPEG-2 전송 스트림, MPEG-2 프로그램 스트림, 또는 MPEG-2 오디오 기본 스트림으로 포맷화된다. 이러한 포맷은 CODEC을 지정하여 지정될 수 있고, 재생 리스트는 CODEC을 지정하여 포맷을 지정할 수 있다. 일 실시예에서, 프리젠테이션에서 모든 미디어 파일은 동일한 포맷을 갖지만; 다른 실시예에서 다중 포맷도 지원될 수 있다. 전송 스트림 파일은 일 실시예에서 단일 MPEG-2 프로그램을 포함해야 하고, 각 파일의 처음에는 프로그램 관련 테이블(Program Association Table) 및 프로그램 맵 테이블(Program Map Table)이 있어야 한다. 비디오를 포함하는 파일은 적어도 하나의 키 프레임과 비디오 디코더를 완전히 초기화하기에 충분한 정보를 가지고 있어야 한다. 클라이언트는 적당한 부분 집합을 선택하여 특정 유형(예를 들어, 오디오 또는 비디오)의 다중 트랙을 처리하도록 준비되어 있어야 한다. 클라이언트는 일 실시예에서 이들이 인식하지 못하는 전송 스트림 내에 있는 비밀(private) 스트림을 무시해야 한다. 미디어 파일 내의 스트림 내와 다중 미디어 파일에 걸쳐 대응하는 스트림들 사이에 있는 샘플들에 대한 인코딩 파라미터는 일관되게 유지되어야 한다. 그러나, 클라이언트들은 예를 들어, 해상도 변화를 수용하도록 비디오 콘텐츠를 크기 조정함으로써 이들이 직면하는 인코딩 변화를 다루어야 한다.
도 2a는 하나 이상의 서버 장치가 비-스트리밍 프로토콜을 이용하여 미디어 콘텐츠를 지원하는 기술의 일 실시예의 흐름도이다. 도 2a의 예는 HTTP 측면에서 제공되지만; 다른 비-스트리밍 프로토콜도 유사한 방식으로 이용될 수 있다. 도 2a의 예는 특정 작업을 수행하는 단일 서버 측면에서 제공된다. 그러나, 몇 개의 서버라도 이용될 수 있다. 예를 들어, 미디어 파일을 클라이언트 장치로 제공하는 서버는 콘텐츠를 다중 미디어 파일들로 분할하는 서버와는 다른 장치일 수 있다.
서버 장치는 동작(200)에서 제공될 콘텐츠를 수신한다. 콘텐츠는 라이브 오디오 및/또는 비디오(예를 들어, 스포팅 이벤트, 라이브 뉴스, 웹 카메라 피드(feed))를 나타낼 수 있다. 콘텐츠는 또한 사전 녹화된 콘텐츠(예를 들어, 녹화된 콘서트, 훈련 세미나 등)를 나타낼 수 있다. 이러한 콘텐츠는 스트리밍되든 스트리밍되지 않든 본 기술 분야에서 알려진 어떤 포맷 및 프로토콜에 따라서도 서버에 의해 수신될 수 있다. 일 실시예에서, 이러한 콘텐츠는 서버에 의해 MPEG-2 스트림의 형태로 수신되지만; 다른 포맷도 지원될 수 있다.
다음에, 서버는 동작(210)에서 콘텐츠의 적어도 일부를 임시로 저장할 수 있다. 콘텐츠 또는 콘텐츠의 적어도 일부는, 예를 들어, 저장 장치(예를 들어, 저장 영역 네트워크(Storage Area Network) 내의 하드 디스크 등)에 또는 메모리에 임시로 저장될 수 있다. 대안으로, 콘텐츠는 그 콘텐츠를 저장 장치 또는 메모리로 전달할 수 있는 저장 매체(예를 들어, 콤팩트 디스크, 플래시 드라이브)를 통해 수신될 수 있다. 일 실시예에서, 서버는 필요하다면 콘텐츠를 하나 이상의 스트림으로 변환하는 인코더(예를 들어, MPEG-2)를 갖는다. 이러한 변환은 수신된 콘텐츠를 영구적으로 저장하지 않고 수행될 수 있으며, 일부 실시예에서, 저장 동작(210)은 생략될 수 있거나 다른 실시예에서 장기간 저장(예를 들어, 기록(archival) 저장)일 수 있다.
제공될 콘텐츠는 동작(220)에서 다중 미디어 파일들로 분할된다. 일 실시예에서, 서버는 스트림을 표준 웹 서버를 이용하여 배포될 수 있는 개별의 다른 미디어 파일들(즉, 세그먼트들)로 변환한다. 일 실시예에서, 서버는 개별 미디어 파일들의 효과적인 디코드를 지원하는 지점에서(예를 들어, PES 패킷 경계 및 i-프레임 경계와 같은 패킷 및 키 프레임 경계에서) 미디어 스트림을 분할한다. 이러한 미디어 파일들은 지속 시간이 대략 동일한 원 스트림의 부분들일 수 있다. 서버는 또한 각 미디어 파일에 대한 URI를 생성한다. 이러한 URI은 클라이언트 장치가 미디어 파일을 액세스하게 해준다.
세그먼트들은 본질적으로 파일 전체를 전달하는 HTTP 서버를 이용하여 제공되기 때문에, 서버는 클라이언트에 제공될 수 있기 전에 이용가능한 완전한 분할된 미디어 파일을 갖고 있어야 한다. 따라서, 클라이언트는 적어도 하나의 미디어 파일 길이만큼 방송을 (시간 면에서) 지연(lag)할 수 있다. 일 실시예에서, 미디어 파일 크기는 지연 시간과 너무 많은 파일들을 갖는 것 사이의 균형에 기초한다.
일 실시예에서, 두 가지 세션 유형(라이브 세션 및 이벤트 세션)이 지원된다. 라이브 세션의 경우, 단지 스트림의 일정 크기 부분만 보존된다. 일 실시예에서, 오래된 콘텐츠 미디어 파일은 프로그램 재생 리스트 파일에서 제거되고, 서버에서 제거될 수 있다. 두 번째 유형의 세션은 이벤트 세션으로, 이 경우 클라이언트는 방송의 임의의 지점에 맞출 수 있다(예를 들어, 처음부터 시작, 중간 지점부터 시작). 이러한 유형의 세션은, 예를 들어, 방송에 이용될 수 있다.
미디어 파일은 동작(230)에서 서버 메모리에 저장된다. 미디어 파일은 동작(230)에서 그 파일을 저장하기 전에 암호화와 같은 보안 기능에 의해 보호될 수 있다. 이러한 미디어 파일은 서버 장치 상의 웹 서버 애플리케이션에 의해 지원되는 (또는 전송을 수행하는 또 다른 장치에 의해 지원되는) 네트워크 프로토콜(예를 들어, HTTP 또는 HTTPS)을 이용하여 전송할 준비가 된 파일로서 저장된다.
동작(240)에서 원 콘텐츠를 재생성하기 위해 미디어 파일들을 조립해야 하는 순서를 표시하는 하나 이상의 재생 리스트 파일이 생성된다. 이러한 재생 리스트 파일(들)은 확장형 M3U 태그 및 본 명세서에 설명된 태그를 이용하여 클라이언트 장치가 미디어 파일을 액세스 및 재조립하여 클라이언트 장치에서의 스트리밍 경험을 제공하기 위한 정보를 제공할 수 있다. 각 미디어 파일에 대한 URI는 미디어 파일이 재생되는 순서대로 재생 리스트 파일(들)에 포함된다. 서버는 또한 재생 리스트 파일(들)에 대한 하나 이상의 URI을 생성하여 클라이언트 장치가 재생 리스트 파일(들)에 액세스할 수 있도록 한다.
재생 리스트 파일(들)은 동작(250)에서 서버에 저장될 수 있다. 미디어 파일 및 재생 리스트 파일(들)의 생성 및 저장이 도 2a에서 특정 순서로 제시되지만, 다른 순서 또한 이용될 수 있다. 예를 들어, 재생 리스트 파일(들)은 미디어 파일이 생성 또는 저장되기 전에 생성될 수 있다. 다른 예로, 재생 리스트 파일(들) 및 미디어 파일은 어느 하나가 저장되기 전에 생성될 수 있다.
만일 미디어 파일이 암호화되어야 한다면, 재생 리스트 파일(들)은 인가된 클라이언트 장치가 미디어 파일을 암호 해독하는 암호화 키를 포함하는 키 파일을 얻게 해주는 URI를 정의할 수 있다. 암호화 키는 보안 접속(예를 들어, HTTPS)을 이용하여 전송될 수 있다. 다른 예로, 재생 리스트 파일(들)은 HTTPS를 이용하여 전송될 수 있다. 또 다른 예로, 미디어 파일은 클라이언트가 재생 리스트 파일(들) 없이 스트림을 재생성할 수 없도록 예측가능하지 않는 순서로 배열될 수 있다.
만일 암호화 방법이 AES-128이라면, 예를 들어, AES-128 CBC 암호화가 개별 미디어 파일에 적용될 수 있다. 일 실시예에서, 파일 전체가 암호화된다. 일 실시예에서, 암호 블록 체이닝(cipher block chaining)이 일반적으로 미디어 파일 전체에 적용되지 않는다. 미디어 파일의 시퀀스는 전술한 바와 같은 IV로서 이용된다. 일 실시예에서, 서버는 재생 리스트 파일의 끝에 키 URI를 갖는 EXT-X-KEY 태그를 추가한다. 그 후, 서버는 암호화 구성이 변경될 때까지 그 키를 이용하여 모든 후속 미디어 파일을 암호화한다.
새로운 암호화 키로 전환하기 위해, 서버는 새로운 키가 프리젠테이션에 이용된 모든 이전의 키 URI와 다른 새로운 URI를 통해 이용가능하게 할 수 있다. 서버는 또한 재생 리스트 파일의 끝에 새로운 키 URI를 갖는 EXT-X-KEY 태그를 추가하고 그 새로운 키를 이용하여 모든 후속 미디어 파일을 암호화한다.
암호화를 종료하기 위해, 서버는 재생 리스트 파일의 끝에 암호화 방법 NONE을 갖는 EXT-X-KEY 태그를 추가할 수 있다. (방법으로 "NONE"을 갖는) 태그는 일 실시예에서 URI 파라미터를 포함하지 않는다. 모든 후속 미디어 파일은 전술한 바와 같이 암호화 구성의 변화가 이루어질 때까지 암호화되지 않는다. 서버는 만일 재생 리스트 파일이 그 키를 이용하여 암호화된 미디어 파일에 대한 URI를 포함하는 경우 재생 리스트 파일에서 EXT-X-KEY 태그를 제거하지 않는다. 서버는 도 3a와 관련하여 더 구체적으로 설명된 바와 같이 동작(270)에서 클라이언트 요청에 따라 재생 리스트 파일(들) 및 미디어 파일을 네트워크를 통해 전송할 수 있다.
일 실시예에서, 서버는 클라이언트 장치로부터 재생 리스트 파일에 대한 요청을 수신함에 따라 재생 리스트 파일을 클라이언트 장치로 전송한다. 클라이언트 장치는 클라이언트 장치로 제공된 URI를 이용하여 재생 리스트 파일을 액세스/요청할 수 있다. URI는 서버 상에 재생 리스트 파일의 위치를 표시한다. 이에 따라, 서버는 재생 리스트를 클라이언트 장치로 제공할 수 있다. 클라이언트 장치는 재생 리스트 파일 내의 태그 및 URI(또는 다른 식별자)를 이용하여 다중 미디어 파일에 액세스할 수 있다.
일 실시예에서, 서버는 미디어 파일의 유효성을 재생 리스트 파일(들)에 가장 최근에 추가된 것들로 제한할 수 있다. 이를 위해, 각 재생 리스트 파일은 단지 하나의 EXT-X-MEDIA-SEQUENCE 태그만 포함할 수 있고 그 값은 재생 리스트 파일에서 제거되는 매 미디어 파일 URI마다 1이 증분될 수 있다. 미디어 파일 URI는 이들이 추가된 순서대로 재생 리스트 파일(들)에서 제거될 수 있다. 일 실시예에서, 서버가 재생 리스트 파일(들)에서 미디어 파일 URI를 제거하면, 미디어 파일은 미디어 파일의 지속 시간에 미디어 파일이 나타난 가장 긴 재생 리스트 파일의 지속 시간을 더한 것과 같은 시간 기간 동안 클라이언트가 이용할 수 있는 상태로 유지된다.
재생 리스트 파일의 지속 시간은 그 재생 리스트 파일 내에 있는 미디어 파일들의 지속 시간의 합이다. 다른 지속 시간도 이용될 수 있다. 일 실시예에서, 서버는 EXT-X-ENDLIST 태그가 존재하지 않는 한 항상 재생 리스트 내에 적어도 세 개의 주 프리젠테이션 미디어 파일을 유지할 수 있다.
도 2b는 하나 이상의 서버 장치가 동적으로 업데이트된 재생 리스트를 하나 이상의 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다. 재생 리스트는 본 명세서에 설명된 누적 모드 또는 롤링 모드 중 어느 하나를 이용하여 업데이트될 수 있다. 도 2b의 예는 HTTP 측면에서 제공되지만; 다른 비-스트리밍 프로토콜(예를 들어, HTTPS 등)도 유사한 방식으로 이용될 수 있다. 도 2b의 예는 특정 작업을 수행하는 단일 서버 측면에서 제공된다. 그러나, 몇 개의 서버라도 이용될 수 있다. 예를 들어, 미디어 파일을 클라이언트 장치로 제공하는 서버는 콘텐츠를 다중 미디어 파일들로 분할하는 서버와는 다른 장치일 수 있다.
서버 장치는 동작(205)에서 제공될 콘텐츠를 수신한다. 다음에, 서버는 동작(215)에서 콘텐츠의 적어도 일부를 임시로 저장할 수 있다. 동작(215)은 도 2a의 동작(210)과 유사할 수 있다. 제공될 콘텐츠는 동작(225)에서 다중 미디어 파일들로 분할된다. 이러한 미디어 파일들은 동작(235)에서 서버 메모리에 저장될 수 있다. 이러한 미디어 파일들은 동작(235)에서 그 파일들을 저장하기 전에 암호화와 같은 보안 기능에 의해 보호될 수 있다.
동작(245)에서 원 콘텐츠를 재생성하기 위해 미디어 파일들을 조립해야 하는 순서를 표시하는 하나 이상의 재생 리스트 파일이 생성된다. 재생 리스트 파일(들)은 동작(255)에서 서버에 저장될 수 있다. 미디어 파일 및 재생 리스트 파일(들)의 생성 및 저장이 도 2b에서 특정 순서로 제시되지만, 다른 순서도 이용될 수 있다.
서버(또는 또 다른 서버)는 도 3a 및 도 3b와 관련하여 더 구체적으로 설명된 바와 같이 동작(275)에서 클라이언트 요청에 따라 네트워크를 통해 재생 리스트 파일(들) 및 미디어 파일을 전송할 수 있다.
재생 리스트 파일(들)은 다양한 이유로 서버에 의해 업데이트될 수 있다. 서버는 동작(285)에서 클라이언트 장치로 제공될 추가 데이터를 수신할 수 있다. 이러한 추가 데이터는 재생 리스트 파일(들)이 동작(255)에서 저장된 후 수신될 수 있다. 이러한 추가 데이터는, 예를 들어, 라이브 프리젠테이션의 추가 부분, 또는 기존의 프리젠테이션에 대한 추가 정보일 수 있다. 추가 데이터는 광고 또는 통계(예를 들어, 스포팅 이벤트와 관련된 점수 또는 데이터)를 포함할 수 있다. 추가 데이터는 프리젠테이션에서 (반투명을 통해) 오버레이될 수 있거나 사이드바(sidebar) 사용자 인터페이스에 제시될 수 있다. 추가 데이터는 원래 수신된 데이터와 같은 방식으로 분할될 수 있다. 만일 추가 데이터가 광고, 또는 재생 리스트에 의해 표현된 프로그램에 삽입될 다른 콘텐츠를 구성한다면, 추가 데이터는 동작(215)에서 (적어도 임시로) 저장되고, 동작(225)에서 분할되고 동작(235)에서 저장될 수 있으며; 분할된 추가 데이터를 저장하기 전에, 추가 데이터의 세그먼트들은 암호화될 수 있다. 다음에, 동작(245)에서, 프로그램 및 추가 데이터를 포함하는 업데이트된 재생 리스트가 생성될 것이다. 재생 리스트는 추가 데이터에 기초하여 업데이트되고 동작(255)에서 다시 저장된다. 재생 리스트 파일(들)에 대한 변경은 클라이언트 장치 관점에서 볼 때 원자적으로(atomically) 이루어져야 한다. 업데이트된 재생 리스트는 일 실시예에서 이전의 재생 리스트를 대체한다. 아래에서 더욱 구체적으로 논의된 바와 같이, 클라이언트 장치는 재생 리스트를 여러 번 요청할 수 있다. 이러한 요청은 클라이언트 장치가 가장 최근의 재생 리스트의 이용을 가능하도록 한다. 일 실시예에서, 추가 데이터는 메타데이터(metadata)일 수 있으며; 이 경우, 재생 리스트는 업데이트될 필요가 없지만, 세그먼트들은 메타데이터를 포함하도록 업데이트될 수 있다. 예를 들어, 메타데이터는 세그먼트들 내에 있는 타임스탬프(timestamps)와 일치할 수 있는 타임스탬프를 포함할 수 있고, 메타데이터는 일치하는 타임스탬프를 갖는 세그먼트에 추가될 수 있다.
업데이트된 재생 리스트는 또한 미디어 파일을 제거시킬 수 있다. 일 실시예에서, 서버는 미디어 파일들이 재생 리스트에 추가된 순서대로 재생 리스트에서 그 미디어 파일들에 대한 URI를 제거해야 한다. 일 실시예에서, 만일 서버가 프리젠테이션 전체를 제거한다면, 서버는 재생 리스트 파일(들)을 클라이언트 장치가 이용할 수 없게 한다. 일 실시예에서, 서버는 제거될 미디어 파일을 포함하는 가장 긴 재생 리스트 파일(들)의 지속 시간 동안 미디어 파일 및 재생 리스트 파일(들)을 유지하여 현재 클라이언트 장치가 프리젠테이션의 액세스를 완료하도록 한다. 따라서, 재생 리스트 파일(들) 내의 모든 미디어 파일 URI 앞에 재생 리스트 파일에 표시된 미디어 파일들의 근사 누적 지속 시간을 표시하는 EXT-X-STREAM-INF 태그를 붙일 수 있다. 대안의 실시예에서, 미디어 파일들 및 재생 리스트 파일(들)은 즉시 제거될 수 있다.
클라이언트 장치로부터의 재생 리스트에 대한 후속 요청에 따라, 서버는 동작(275)에서 업데이트된 재생 리스트를 제공한다. 일 실시예에서, 재생 리스트는 정기적으로, 예를 들어, 타겟 지속 시간에 관한 시간 기간 단위로 업데이트된다. 재생 리스트 파일의 주기적인 업데이트는 서버로 하여금 동적으로 변화하는 프리젠테이션에 액세스할 수 있도록 한다.
도 2c는 하나 이상의 서버 장치가 대안적인 스트림의 사용의 한 형태인, 다중 비트 레이트를 이용하여 미디어 콘텐츠를 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다. 도 2c의 예는 HTTP 측면에서 제공되지만; 다른 비-스트리밍 프로토콜도 유사한 방식으로 이용될 수 있다. 도 2c의 예는 특정 작업을 수행하는 서버 측면에서 제공된다. 그러나, 몇 개의 서버라도 이용될 수 있다. 예를 들어, 미디어 파일을 클라이언트 장치로 제공하는 서버는 콘텐츠를 다중 미디어 파일들로 분할하는 서버와는 다른 장치일 수 있다.
일 실시예에서, 서버는 다중 재생 리스트 파일 또는 단일 재생 리스트 파일 내에 다중 미디어 파일 리스트를 갖는 단일 재생 리스트 파일을 제공하여 동일한 프리젠테이션의 다양한 인코딩을 제공할 수 있다. 만일 다양한 인코딩이 제공된다면, 재생 리스트 파일(들)은 각각 다른 비트 레이트를 제공하여 클라이언트 장치가 인코딩을 동적으로 전환하도록 하는 변형 스트림을 포함할 수 있다(이에 대해서는 도 9a 내지 도 9d와 관련하여 더 설명된다). 변형 스트림을 갖는 재생 리스트 파일은 각 변형 스트림마다 EXT-X-STREAM-INF 태그를 포함할 수 있다. 동일한 프리젠테이션에 대한 각 EXT-X-STREAM-INF 태그는 동일한 PROGRAM-ID 속성 값을 가질 수 있다. 각 프리젠테이션에 대한 PROGRAM-ID 값은 변형 스트림들 내에서 고유하다.
일 실시예에서, 서버는 변형 스트림을 생성할 때 다음과 같은 제약 조건을 충족시킨다. 각 변형 스트림은 주 프리젠테이션의 일부가 아닌 선택적인 콘텐츠를 포함하는 동일한 콘텐츠로 이루어질 수 있다. 서버는 스트림의 가장 작은 타겟 지속 시간의 정확도 내에서 콘텐츠의 동일 기간이 모든 변형 스트림에 이용가능하게 할 수 있다. 변형 스트림의 미디어 파일은 일 실시예에서 모든 변형 스트림에서 대응하는 콘텐츠에 대해 일치하는 샘플 타임스탬프를 갖는 MPEG-2 전송 스트림 또는 MPEG-2 프로그램 스트림이다. 또한, 모든 변형 스트림은 일 실시예에서 동일한 오디오 인코딩을 포함해야 한다. 이는 클라이언트 장치가 콘텐츠의 손실 없이 변형 스트림 사이를 전환하게 해준다.
도 2c를 참조하면, 서버 장치는 동작(202)에서 제공될 콘텐츠를 수신한다. 다음에, 서버는 동작(212)에서 콘텐츠를 적어도 임시로 저장할 수 있다. 제공될 콘텐츠는 동작(222)에서 다중 미디어 파일들로 분할된다. 선택된 비트 레이트(또는 다른 인코딩 파라미터의 선택된 값)에 대해 각 미디어 파일이 동작(232)에서 인코드되어 서버에 저장된다. 예를 들어, 미디어 파일들은 고, 중, 및 저 대역폭 접속에 대한 타겟이 될 수 있다. 미디어 파일들은 저장 전에 암호화될 수 있다. 다양한 형태의 접속에 대한 타겟이 된 미디어 파일들의 인코딩은 타겟 대역폭 레벨에서 스트리밍 경험을 제공하도록 선택될 수 있다.
일 실시예에서, 동작(242)에서 본 명세서에 설명된 바와 같이 다양한 인코딩 레벨을 표시하는 태그를 갖는 변형 재생 리스트가 생성된다. 이러한 태그는, 예를 들어, 대응하는 미디어 재생 리스트 파일에 대한 URI를 갖는 각 인코딩 레벨마다 EXT-X-STREAM-INF 태그를 포함할 수 있다.
이와 같은 변형 재생 리스트는 다양한 인코딩 레벨에 대한 미디어 재생 리스트 파일에 대한 URI를 포함할 수 있다. 따라서, 클라이언트 장치는 인코딩 레벨을 표시하는 변형 재생 리스트에 제공된 대안들 중에서 타겟 비트 레이트를 선택하고 대응하는 재생 리스트 파일을 검색할 수 있다. 일 실시예에서, 클라이언트 장치는 (예를 들어, 도 9a 내지 도 9d와 관련하여 설명되는 바와 같이) 재생 동안 비트 레이트를 변경할 수 있다. 다양한 인코딩 레벨을 표시하는 변형 재생 리스트는 동작(252)에서 서버에 저장된다. 동작(242)에서, 변형 재생 리스트에 나타낸 각 재생 리스트 또한 생성된 다음 동작(252)에서 저장될 수 있다.
클라이언트 장치로부터의 요청에 따라, 서버는 동작(272)에서 다양한 인코딩 레벨을 표시하는 변형 재생 리스트를 전송할 수 있다. 서버는 동작(282)에서 선택된 비트 레이트에 해당하는 변형 재생 리스트에 지정된 미디어 재생 리스트들 중 하나에 대한 요청을 수신할 수 있다. 이러한 요청에 따라, 서버는 동작(292)에서 클라이언트 장치로부터의 요청에 해당하는 미디어 재생 리스트 파일을 전송한다. 다음에, 클라이언트 장치는 미디어 재생 리스트를 이용하여 서버에게 미디어 파일을 요청할 수 있다. 서버는 동작(297)에서 요청에 따라 미디어 파일을 클라이언트 장치로 제공한다.
도 3a는 클라이언트 장치가 비-스트리밍 프로토콜을 이용하여 콘텐츠의 스트리밍을 지원하도록 하는 기술의 일 실시예의 흐름도이다. 도 3a의 예는 HTTP 측면에서 제공되지만; 다른 비-스트리밍 프로토콜도 유사한 방식으로 이용될 수 있다. 도 3a 및 도 3b에 도시된 방법은 단일 클라이언트 장치에 의해 또는 여러 개별 클라이언트 장치에 의해 수행될 수 있다. 예를 들어, 이들 방법 중 어떤 하나의 경우에, 단일 클라이언트 장치가 모든 동작을 수행(예를 들어, 재생 리스트 파일을 요청, 재생 리스트 파일 내의 URI를 이용하여 미디어 파일을 요청, 미디어 파일들을 조립하여 프리젠테이션/출력을 생성 및 제공)할 수 있거나 여러 다른 클라이언트 장치가 그러한 동작들의 전부는 아니지만 일부를 수행할 수 있다(예를 들어, 제1 클라이언트 장치는 재생 리스트 파일을 요청하고 재생 리스트 파일 내의 URI를 이용하여 미디어 파일을 요청할 수 있고, 미디어 파일을 처리하여 프리젠테이션/출력을 생성 및 제공할 수 있는 제2 클라이언트 장치에 의해 사용할 그러한 미디어 파일을 저장할 수 있다).
클라이언트 장치는 동작(300)에서 서버에게 재생 리스트 파일을 요청할 수 있다. 일 실시예에서, 이러한 요청은 HTTP-호환 프로토콜에 따라 이루어진다. 이러한 요청은 서버에 저장된 초기 재생 리스트 파일에 대한 URI를 이용한다. 대안의 실시예에서, 다른 비-스트리밍 프로토콜도 지원될 수 있다. 이러한 요청에 따라, 서버는 대응하는 재생 리스트 파일을 네트워크를 통해 클라이언트로 전송할 것이다. 전술한 바와 같이, 네트워크는 유선 또는 무선일 수 있고 유선 또는 무선 네트워크의 어떤 조합이라도 될 수 있다. 또한, 네트워크는 데이터 네트워크(예를 들어, IEEE 802.11, IEEE 802.16) 또는 셀룰러 전화 네트워크(예를 들어, 3G)일 수 있다.
클라이언트 장치는 동작(310)에서 재생 리스트 파일을 수신할 수 있다. 재생 리스트 파일은 동작(320)에서 클라이언트 장치의 메모리에 저장될 수 있다. 메모리는, 예를 들어, 하드 디스크, 플래시 메모리, 랜덤 액세스 메모리일 수 있다. 일 실시예에서, 재생 리스트 파일이 재생 리스트 URI로부터 로드되거나 재로드될 때마다, 클라이언트는 재생 리스트 파일이 #EXTM3U 태그로 시작하는 것을 결정하기 위해 확인하고 그러한 태그가 존재하지 않는 경우 계속하지 않는다. 전술한 바와 같이, 재생 리스트 파일은 미디어 파일들에 대한 하나 이상의 URI뿐만 아니라 하나 이상의 태그도 포함한다.
클라이언트 장치는 동작(330)에서 재생 리스트 파일을 이용하여 재생 리스트 파일 내의 URI에 표시된 미디어 파일을 요청하여 원 콘텐츠를 재조립하는 어셈블러 에이전트를 포함할 수 있다. 일 실시예에서, 어셈블러 에이전트는 표준 웹 브라우저 애플리케이션의 일부인 플러그-인(plug-in) 모듈이다. 다른 실시예에서, 어셈블러 에이전트는 웹 브라우저와 상호 작용하여 재생 리스트 파일(들)을 이용하여 미디어 파일을 수신 및 조립하는 독립형 애플리케이션일 수 있다. 또 다른 실시예에서, 어셈블러 에이전트는 클라이언트 장치에 내장된 전용 하드웨어 또는 펌웨어 컴포넌트일 수 있다.
어셈블러는 재생 리스트 파일로부터의 미디어 파일을 URI에 표시된 서버에서 다운로드되도록 한다. 만일 재생 리스트 파일이 EXT-X-ENDLIST 태그를 포함한다면, 재생 리스트 파일에 표시된 임의의 미디어 파일이 먼저 재생될 수 있다. 만일 EXT-X-ENDLIST 태그가 존재하지 않는다면, 마지막과 마지막에서 두 번째 미디어 파일을 제외한 임의의 미디어 파일이 먼저 재생될 수 있다. 일단 재생할 첫 번째 미디어 파일이 선택되었다면, 재생 리스트 파일 내에 있는 후속 미디어 파일은 일 실시예에서 이들이 재생 리스트 파일에 나타나는 순서대로 로드된다(그렇지 않다면 콘텐츠는 비순서적으로 프리젠테이션된다). 일 실시예에서, 클라이언트 장치는 중단되지 않는 재생을 제공하고 네트워크 지연 및 처리율의 일시적 변화를 보상하기 위해 미디어 파일들을 요구하기 전에 미리 이들의 로드를 시도(및 이들을 버퍼에 저장)한다.
다운로드된 미디어 파일(들)은 동작(340)에서 클라이언트 장치의 메모리에 저장될 수 있다. 콘텐츠가 저장될 수 있는 메모리는 클라이언트 장치의 어떤 형태의 메모리라도 될 수 있고, 예를 들어, 랜덤 액세스 메모리, 하드 디스크, 또는 비디오 버퍼일 수 있다. 이러한 저장은 재생이 가능하게 일시적일 수 있거나 영구적일 수 있다. 만일 재생 리스트 파일이 EXT-X-ALLOW-CACHE 태그를 포함하고 그의 값이 NO라면, 클라이언트는 다운로드된 미디어 파일이 재생된 후 이들을 저장하지 않는다. 만일 재생 리스트가 EXT-X-ALLOW-CACHE 태그를 포함하고 그의 값이 YES라면, 클라이언트 장치는 나중의 반복 재생(replay)을 위해 미디어 파일을 무기한 저장할 수 있다. 클라이언트 장치는 EXT-X-PROGRAM-DATE-TIME 태그의 값을 이용하여 프로그램 발생(origination) 시간을 사용자에게 디스플레이할 수 있다. 일 실시예에서, 클라이언트는 더 우수한 사용자 경험을 제공하기 위해 네트워크 지터(jitter)에 덜 민감하도록 다중 미디어 파일들을 버퍼할 수 있다.
일 실시예에서, 만일 암호 해독 방법이 AES-128이면, 개별 미디어 파일에 AES-128 CBC 암호 해독이 적용된다. 파일 전체가 암호 해독된다. 일 실시예에서, 암호 블록 체이닝이 미디어 파일 전체에 걸쳐 적용되지 않는다. 미디어 파일의 시퀀스 번호는 전술한 바와 같은 초기화 벡터로서 이용될 수 있다.
메모리로부터, 콘텐츠는 동작(350)에서 클라이언트 장치로부터 출력될 수 있다. 출력 또는 프리젠테이션은, 예를 들어, 내장 스피커 또는 헤드폰을 통한 오디오 출력일 수 있다. 이러한 출력은 화면을 통해 출력되거나 클라이언트 장치로부터 투영된 비디오를 포함할 수 있다. 본 기술 분야에 알려진 어떤 형태의 출력이라도 이용될 수 있다. 동작(351)에서, 클라이언트 장치는 저장된 현재 재생 리스트 내에 재생되거나 또는 다른 방법으로 프리젠테이션되지 않은 미디어 파일이 더 존재하는지를 판단한다. 만일 그러한 미디어 파일이 존재한다면(또한 만일 이들이 요청되지 않았다면), 프로세싱은 동작(330)으로 되돌아가고 여기서 하나 이상의 미디어 파일이 요청되고 프로세스는 반복한다. 만일 그러한 미디어 파일이 존재하지 않는다면(즉, 현재 재생 리스트 내의 모든 미디어 파일이 재생되었다면), 프로세싱은 동작(352)으로 진행하여, 재생 리스트 파일이 종료 태그(end tag)를 포함하는지를 판단한다.
만일 동작(352)에서 재생 리스트가 종료 태그(예를 들어, EXT-X-ENDLIST)를 포함한다면, 재생 리스트 파일에 표시된 미디어 파일들이 재생되었을 때 재생이 중단된다. 만일 종료 태그가 재생 리스트에 존재하지 않는다면, 클라이언트 장치는 서버에게 다시 재생 리스트를 요청하고 동작(300)으로 다시 돌아가 프로그램의 다른 또는 업데이트된 재생 리스트를 얻는다.
도 2b와 관련하여 더 구체적으로 논의된 바와 같이, 서버는 부가 콘텐츠(예를 들어, 라이브 방송에서 추가 미디어 콘텐츠에 해당하는 추가 미디어 파일 식별자) 또는 추가 콘텐츠(예를 들어, 스트림의 더 아래쪽에 있는 콘텐츠)를 도입하도록 재생 리스트 파일을 업데이트할 수 있다. 부가 콘텐츠 또는 추가 콘텐츠에 액세스하기 위해, 클라이언트는 서버로부터 업데이트된 재생 리스트를 재로드할 수 있다. 이는 재생 리스트 파일과 연관된 미디어 콘텐츠의 재생 동안에도 재생 리스트 파일을 동적으로 업데이트할 수 있는 메커니즘을 제공할 수 있다. 클라이언트는 많은 트리거(triggers)에 기초하여 재생 리스트 파일의 재로드를 요청할 수 있다. 종료 태그가 없는 것도 하나의 그러한 트리거이다.
일 실시예에서, 클라이언트 장치는 재생 리스트 파일이 EXT-X-ENDLIST 태그를 포함하지 않는 한 재생 리스트 파일(들)을 주기적으로 재로드한다. 클라이언트 장치가 처음으로 재생 리스트 파일을 로드하거나 재생 리스트 파일을 재로드하고 재생 리스트 파일이 마지막으로 로드된 이후에 변경된 것을 발견하면, 클라이언트는 재생 리스트 파일을 다시 재로드하려고 시도하기 전에 소정 시간 기간 동안 대기할 수 있다. 이 기간을 초기 최소 재로드 지연(initial minimum reload delay)이라고 부른다. 이것은 클라이언트가 재생 리스트 파일의 로딩을 시작한 시간부터 측정된다.
일 실시예에서, 초기 최소 재로드 지연은 재생 리스트 파일 내의 마지막 미디어 파일의 지속 시간 또는 타겟 지속 시간의 세 배 중 어느 쪽이든 더 짧은 것이다. 미디어 파일 지속 시간은 EXTINF 태그에 의해 지정된다. 만일 클라이언트가 재생 리스트 파일을 재로드하고 그것이 변화하지 않았다는 것을 발견하면, 클라이언트는 재시도하기 전에 소정 시간 기간 동안 대기할 수 있다. 일 실시예에서 최소 지연은 타겟 지속 시간의 세 배 또는 초기 최소 재로드 지연의 배수 중 어느 쪽이든 더 짧은 것이다. 일 실시예에서, 이 배수는 첫 번째 시도에서 0.5이고, 두 번째 시도에서 1.5이며 후속 시도에서 3.0이지만; 다른 배수도 이용될 수 있다.
재생 리스트 파일이 로드되거나 재로드될 때마다, 클라이언트 장치는 재생 리스트 리스트를 검사하여 로드할 다음 미디어 파일을 결정한다. 로드할 첫 번째 파일은 전술한 바와 같이 첫 번째로 재생하도록 선택된 미디어 파일이다. 만일 재생될 첫 번째 미디어 파일이 로드되었고 재생 리스트 파일이 EXT-X-MEDIA-SEQUENCE 태그를 포함하지 않는다면, 클라이언트는 현재의 재생 리스트 파일이 원래 발견된 오프셋(offset)에서 마지막 로드된 미디어 파일의 URI를 포함하는 것을 확인하여, 만일 파일이 발견되지 않으면 재생을 중단할 수 있다. 로드할 다음 미디어 파일은 재생 리스트 파일 내에서 마지막 로드된 URI에 뒤이어 오는 첫 번째 미디어 파일 URI일 수 있다.
만일 재생될 첫 번째 파일이 로드되었고 재생 리스트 파일이 EXT-X-MEDIA-SEQUENCE 태그를 포함한다면, 로드할 다음 미디어 파일은 로드된 마지막 미디어 파일의 시퀀스 번호보다 큰 가장 낮은 시퀀스 번호를 갖는 것일 수 있다. 만일 재생 리스트 파일이 키 파일 URI를 지정하는 EXT-X-KEY 태그를 포함한다면, 클라이언트 장치는 키 파일을 얻고 키 파일 내의 키를 이용하여 또 다른 EXT-X-KEY 태그가 발견될 때까지 EXT-X-KEY 태그에 뒤이어 오는 미디어 파일들을 암호 해독한다.
일 실시예에서, 클라이언트 장치는 이전에 이용된 바와 동일한 URI를 이용하여 재생 리스트 파일을 다운로드한다. 따라서, 만일 재생 리스트 파일에 대한 변경이 이루어졌다면, 클라이언트 장치는 업데이트된 재생 리스트 파일을 이용하여 미디어 파일을 검색하고 그 미디어 파일에 기초하여 출력을 제공할 수 있다.
재생 리스트 파일에 대한 변경은, 예를 들어, 미디어 파일에 대한 URI의 삭제, 새로운 미디어 파일에 대한 URI의 추가, 대체 미디어 파일에 대한 URI의 대체를 포함할 수 있다. 재생 리스트 파일이 변경되면, 그러한 변경(들)을 반영하도록 하나 이상의 태그가 업데이트될 수 있다. 예를 들어, 지속 시간 태그는 미디어 파일의 변경으로 인해 재생 리스트 파일에 표시된 미디어 파일의 재생의 지속 시간이 변경되는 경우 업데이트될 수 있다.
도 3b는 클라이언트 장치가 대안적인 스트림들 중 한 형태인 다중 비트 레이트를 이용하여 콘텐츠의 스트리밍을 지원하도록 하는 기술의 일 실시예의 흐름도이다. 도 3b의 예는 HTTP 측면에서 제공되지만; 다른 비-스트리밍 프로토콜도 유사한 방식으로 이용될 수 있다.
클라이언트 장치는 동작(370)에서 재생 리스트 파일을 요청할 수 있다. 전술한 바와 같이, 재생 리스트 파일은 클라이언트 장치로 제공된 URI를 이용하여 검색될 수 있다. 일 실시예에서, 재생 리스트 파일은 동일한 콘텐츠를 상이한 비트 레이트로 제공하기 위해 미디어 파일의 변형 스트림의 리스트(listings)을 포함한다; 다시 말하면, 단일 재생 리스트 파일은 각 변형 스트림의 미디어 파일에 대한 URI를 포함한다. 도 3b에 도시된 예는 이 실시예를 이용한다. 또 다른 실시예에서, 변형 스트림은 각각이 동일한 콘텐츠를 상이한 비트 레이트로 제공하는, 클라이언트에게 개별적으로 제공된 복수의 다른 재생 리스트 파일들에 의해 표현될 수 있고, 변형 재생 리스트는 각각의 다른 재생 리스트 파일에 대한 URI를 제공할 수 있다. 이는 클라이언트 장치가 클라이언트 상태에 기초하여 비트 레이트를 선택하게 해준다.
재생 리스트 파일(들)은 동작(375)에서 클라이언트 장치에 의해 검색될 수 있다. 재생 리스트 파일(들)은 동작(380)에서 클라이언트 장치 메모리에 저장될 수 있다. 클라이언트 장치는 동작(385)에서 현재의 네트워크 접속 속도에 기초하여 사용될 비트 레이트를 선택할 수 있다. 동작(390)에서 선택된 비트 레이트에 해당하는 재생 리스트 파일에 포함된 URI를 이용하여 서버에게 미디어 파일이 요청된다. 검색된 미디어 파일은 클라이언트 장치 메모리에 저장될 수 있다. 동작(394)에서 클라이언트 장치에 의해 미디어 파일을 이용하여 출력이 제공되고 클라이언트 장치는 비트 레이트 변경 여부를 판단한다.
일 실시예에서, 클라이언트 장치는 처음에 가장 낮은 이용가능한 비트 레이트를 선택한다. 미디어를 재생하는 동안, 클라이언트 장치는 이용가능한 대역폭(예를 들어, 현재 네트워크 접속 비트 레이트)을 모니터하여 이용가능한 대역폭이 재생을 위해 더 높은 비트 레이트의 사용을 지원할 수 있는지를 판단할 수 있다. 만일 그렇다면, 클라이언트 장치는 더 높은 비트 레이트를 선택하여 더 높은 비트 레이트의 미디어 재생 리스트 파일에 표시된 미디어 파일에 액세스할 수 있다. 그 반대도 지원될 수 있다. 만일 재생이 너무 많은 대역폭을 소비하고 있다면, 클라이언트 장치는 더 낮은 비트 레이트를 선택하여 더 낮은 비트 레이트의 미디어 재생 리스트 파일에 표시된 미디어 파일에 액세스할 수 있다.
만일 클라이언트 장치가 동작(394)에서 비트 레이트를 변경한다면, 예를 들어, 이용가능한 대역폭의 변경에 따라 또는 사용자 입력에 따라, 클라이언트 장치는 동작(385)에서 다른 비트 레이트를 선택할 수 있다. 일 실시예에서, 다른 비트 레이트를 선택하기 위해, 클라이언트 장치는 새로운 선택된 비트 레이트에 해당하는 재생 리스트 파일 내에 포함된 다른 URI 리스트를 이용할 수 있다. 일 실시예에서, 클라이언트 장치는 재생 리스트 내에 있는 미디어 파일의 액세스 동안 비트 레이트를 변경할 수 있다.
만일 비트 레이트가 동작(394)에서 변경되지 않았다면, 클라이언트 장치는 현재의 재생 리스트 내에 검색되어 프리젠테이션되지 않은 재생되지 않은 미디어 파일이 더 있는지를 판단한다. 만일 이러한 미디어 파일이 존재한다면, 프로세싱은 동작(390)으로 되돌아가, 재생 리스트 내의 그러한 파일에 대한 URI를 이용하여 하나 이상의 미디어 파일이 검색된다. 만일 그러한 미디어 파일이 존재하지 않는다면(즉, 현재의 재생 리스트 내의 모든 미디어 파일들이 재생되었다면), 프로세싱은 동작(396)으로 진행하고, 이 동작에서 재생 리스트가 종료 태그를 포함하는지 판단된다. 만일 그렇다면, 프로그램의 재생은 종료되었고 프로세스는 완료되었고; 만일 그렇지 않다면, 프로세싱은 동작(370)으로 되돌아가, 클라이언트 장치는 해당 프로그램의 재생 리스트를 재로드할 것을 요청하고, 프로세스는 도 3b에 도시된 방법을 통해 반복한다.
도 4는 서버 스트림 에이전트의 일 실시예의 블록도이다. 서버 스트림 에이전트(400)의 구성 요소들은 여러 서버 장치에 걸쳐 분산될 수 있음이 이해될 것이다. 예를 들어, 제1 서버 장치는 세그먼터(430), 인덱서(440) 및 시큐러티(450)를 포함할 수 있지만 파일 서버(460)를 포함하지 않고, 제2 서버 장치는 파일 서버(460)를 포함할 수 있지만 세그먼터(430), 인덱서(440) 및 시큐러티(450)를 포함하지 않는다. 이러한 예에서, 제1 서버 장치는 재생 리스트 및 미디어 파일을 준비할 것이지만 이들을 클라이언트 장치로 전송하지 않을 것이며, 반면에 하나 이상의 제2 서버 장치는 재생 리스트 및 미디어 파일을 수신하고 선택적으로 저장하고 그 재생 리스트 및 미디어 파일을 클라이언트 장치로 전송할 것이다. 서버 스트림 에이전트(400)는 서버 스트림 에이전트(400)의 동작을 지시하는 논리 기능 제어를 수행하는 제어 로직(410), 및 서버 스트림 에이전트(400)의 동작을 지시하는 것과 관련된 하드웨어를 포함한다. 로직은 하드웨어 로직 회로 또는 소프트웨어 루틴 또는 펌웨어일 수 있다. 일 실시예에서, 서버 스트림 에이전트(400)는 명령어를 제어 로직(410)으로 제공하는 코드 시퀀스 및/또는 프로그램을 나타내는 하나 이상의 애플리케이션(412)을 포함한다.
서버 스트림 에이전트(400)는 데이터 또는 명령어를 저장하는 메모리 장치 또는 메모리 자원에의 액세스를 나타내는 메모리(414)를 포함한다. 메모리(414)는 서버 스트림 에이전트(400)에 대해 로컬인 메모리를 포함할 뿐만 아니라, 대안으로 서버 스트림 에이전트(400)가 상주하는 호스트 시스템의 메모리를 포함할 수 있다. 서버 스트림 에이전트(400)는 또한 서버 스트림 에이전트(400)의 외부 엔티티들(전자장치 또는 인간)과 관련하여 (입/출력 인터페이스) 서브 스트림 에이전트(400)로/로부터의 액세스 인터페이스를 나타내는 하나 이상의 인터페이스(416)를 포함한다.
서버 스트림 에이전트(400)는 또한 서버 스트림 에이전트(400)가 본 명세서에 설명된 바와 같은 실시간, 또는 준 실시간 스트리밍의 제공을 가능하게 하는 하나 이상의 기능을 나타내는 서버 스트림 엔진(420)을 포함할 수 있다. 도 4의 예는 서버 스트림 엔진(420)에 포함될 수 있는 여러 컴포넌트를 제공하지만; 다른 또는 추가적인 컴포넌트가 또한 포함될 수 있다. 스트리밍 환경을 제공하는데 관여될 수 있는 예시적인 컴포넌트는 세그먼터(430), 인덱서(440), 시큐러티(450) 및 파일 서버(460)를 포함한다. 이들 컴포넌트 각각은 다른 기능을 제공하는 다른 컴포넌트를 더 포함할 수 있다. 본 명세서에 사용된 바와 같은, 컴포넌트는 하드웨어, 소프트웨어, 또는 펌웨어로 구현되든 이들의 어떤 조합으로 구현되든, 루틴, 서브시스템 등을 지칭한다.
세그먼터(430)는 제공될 콘텐츠를 웹 서버 프로토콜(예를 들어, HTTP)을 이용하여 파일로서 전송될 수 있는 미디어 파일들로 분할한다. 예를 들어, 세그먼터(430)는 콘텐츠를 미리 정해진 파일 포맷의 미리 정해진 일정 크기의 데이터 블록들로 분할할 수 있다.
인덱서(440)는 세그먼터(430)에 의해 생성된 미디어 파일들에 대한 어드레스 또는 URI를 제공하는 하나 이상의 재생 리스트 파일을 제공할 수 있다. 인덱서(440)는, 예를 들어, 세그먼터(430)에 의해 생성된 각 파일에 대응하는 식별자들의 순서 리스트를 갖는 하나 이상의 파일을 생성할 수 있다. 이러한 식별자들은 세그먼터(430) 또는 인덱서(440)에 의해 생성되거나 할당될 수 있다. 인덱서(440)는 또한 미디어 파일의 액세스 및/또는 이용을 지원하기 위해 재생 리스트 파일 내에 하나 이상의 태그를 포함할 수 있다.
시큐러티(450)는 전술한 바와 같은 보안 기능(예를 들어, 암호화)을 제공할 수 있다. 웹 서버(460)는 호스트 시스템에 저장된 파일을 원격 클라이언트 장치로 제공하는 것과 관련된 웹 서버 기능을 제공할 수 있다. 웹 서버(460)는, 예를 들어, HTTP-호환 프로토콜을 지원할 수 있다.
도 5는 클라이언트 스트림 에이전트의 일 실시예의 블록도이다. 클라이언트 스트림 에이전트의 구성 요소들은 여러 클라이언트 장치에 걸쳐 분산될 수 있음이 이해될 것이다. 예를 들어, 제1 클라이언트 장치는 어셈블러(530) 및 시큐러티(550)를 포함할 수 있고 미디어 파일의 암호 해독된 스트림을 출력 생성기(540)를 포함하는(어셈블러(530) 및 시큐러티(550)는 포함하지 않는) 제2 클라이언트 장치로 제공할 수 있다. 또 다른 예로, 일차 클라이언트 장치는 재생 리스트를 검색하고 이를 재생 리스트에 지정된 미디어 파일을 검색하고 이러한 미디어 파일을 프리젠테이션하는 출력을 생성하는 이차 클라이언트 장치로 제공할 수 있다. 클라이언트 스트림 에이전트(500)는 클라이언트 스트림 에이전트(500)의 동작을 지시하는 논리 기능 제어를 수행하는 제어 로직(510), 및 클라이언트 스트림 에이전트(500)의 동작을 지시하는 것과 관련된 하드웨어를 포함한다. 로직은 하드웨어 로직 회로 또는 소프트웨어 루틴 또는 펌웨어일 수 있다. 일 실시예에서, 클라이언트 스트림 에이전트(500)는 명령어를 제어 로직(510)으로 제공하는 코드 시퀀스 및/또는 프로그램을 나타내는 하나 이상의 애플리케이션(512)을 포함한다.
클라이언트 스트림 에이전트(500)는 데이터 및/또는 명령어를 저장하는 메모리 장치 또는 메모리 자원에의 액세스를 나타내는 메모리(514)를 포함한다. 메모리(514)는 클라이언트 스트림 에이전트(500)에 대해 로컬인 메모리를 포함할 수 있을 뿐만 아니라, 대안으로 클라이언트 스트림 에이전트(500)가 상주하는 호스트 시스템의 메모리를 포함할 수 있다. 클라이언트 스트림 에이전트(500)는 또한 클라이언트 스트림 에이전트(500)의 외부 엔티티들(전자장치 또는 인간)과 관련하여 (입/출력 인터페이스) 클라이언트 스트림 에이전트(500)로/로부터의 액세스 인터페이스를 나타내는 하나 이상의 인터페이스(516)를 포함한다.
클라이언트 스트림 에이전트(500)는 또한 클라이언트 스트림 에이전트(500)가 본 명세서에 설명된 바와 같은 실시간, 또는 준 실시간 스트리밍의 제공을 가능하게 하는 하나 이상의 기능을 나타내는 클라이언트 스트림 엔진(520)을 포함할 수 있다. 도 5의 예는 클라이언트 스트림 엔진(520)에 포함될 수 있는 몇몇 컴포넌트를 제공하지만; 다른 또는 추가적인 컴포넌트도 포함될 수 있다. 스트리밍 환경을 제공하는데 관여될 수 있는 예시적인 컴포넌트는 어셈블러(530), 출력 생성기(540) 및 시큐러티(550)를 포함한다. 이러한 컴포넌트들은 각각 다른 기능을 제공하는 다른 컴포넌트를 더 포함할 수 있다. 본 명세서에 사용된 바와 같은, 컴포넌트는 하드웨어, 소프트웨어, 펌웨어로 구현되든 이들의 어떤 조합으로 구현되든, 루틴, 서브시스템 등을 지칭한다.
어셈블러(530)는 서버로부터 수신된 재생 리스트 파일을 이용하여 서버로부터 웹 서버 프로토콜(예를 들어, HTTP)을 통해 미디어 파일에 액세스할 수 있다. 일 실시예에서, 어셈블러(530)는 재생 리스트 파일 내의 URI에 표시된 바와 같은 미디어 파일이 다운로드되도록 할 수 있다. 어셈블러(530)는 재생 리스트 파일 내에 포함된 태그에 응답할 수 있다.
출력 생성기(540)는 수신된 미디어 파일을 오디오 또는 비주얼 출력(또는 오디오 및 비주얼 둘 다)로서 호스트 시스템 상에 제공할 수 있다. 출력 생성기(540)는, 예를 들어, 오디오가 하나 이상의 스피커로 출력되고 비디오가 디스플레이 장치로 출력되도록 할 수 있다. 시큐러티(550)는 전술한 바와 같은 보안 기능을 제공할 수 있다.
도 6은 다중 태그를 갖는 재생 리스트 파일의 일 실시예를 예시한다. 도 6의 예시적인 재생 리스트는 특정 수 및 순서의 태그들을 포함한다. 이는 단지 설명 목적만을 위해 제공된다. 일부 재생 리스트 파일은 더 많거나, 더 적거나 다른 조합의 태그들을 포함할 수 있고, 이 태그들은 도 6에 도시된 것과 다른 순서로 배열될 수 있다.
시작 태그(610)는 재생 리스트 파일의 처음을 표시할 수 있다. 일 실시예에서, 시작 태그(610)는 #EXTM3U 태그이다. 지속 시간 태그(620)는 재생 리스트의 지속 시간을 표시할 수 있다. 그것은 재생 리스트(600)에 표시된 미디어 파일들의 재생의 지속 시간이다. 일 실시예에서, 지속 시간 태그(620)는 EXT-X-TARGETDURATION 태그이지만; 다른 태그도 이용될 수 있다.
날짜/시간 태그(625)는 재생 리스트(600)에 표시된 미디어 파일에 의해 제공된 콘텐츠의 날짜 및 시간에 관한 정보를 제공할 수 있다. 일 실시예에서, 날짜/시간 태그(625)는 EXT-X-PROGRAM-DATE-TIME 태그이지만; 다른 태그도 이용될 수 있다. 시퀀스 태그(630)는 재생 리스트 시퀀스에서 재생 리스트 파일(600)의 순서를 표시할 수 있다. 일 실시예에서, 시퀀스 태그(630)는 EXT-X-MEDIA-SEQUENCE 태그이지만; 다른 태그도 이용될 수 있다.
보안 태그(640)는 재생 리스트 파일(600)에 표시된 미디어 파일에 적용된 보안 및/또는 암호화와 관련된 정보를 제공할 수 있다. 예를 들어, 보안 태그(640)는 미디어 파일 표시자에 의해 지정된 파일을 암호 해독하는 암호 해독 키를 지정할 수 있다. 일 실시예에서, 보안 태그(640)는 EXT-X-KEY 태그이지만; 다른 태그도 이용될 수 있다. 변형 리스트 태그(645)는 변형 스트림이 재생 리스트(600)에 의해 제공되는지 여부뿐 아니라, 변형 스트림에 관한 정보(예를 들어, 몇 개, 비트 레이트)도 표시할 수 있다. 일 실시예에서, 변형 리스트 태그(645)는 EXT-X-STREAM-INF 태그이다.
미디어 파일 표시자들(650)은 재생될 미디어 파일에 관한 정보를 제공할 수 있다. 일 실시예에서, 미디어 파일 표시자들(650)은 재생될 다수의 미디어 파일에 대한 URI들을 포함한다. 일 실시예에서, 재생 리스트(600) 내의 URI들의 순서는 미디어 파일들이 액세스되고 및/또는 재생되어야 하는 순서에 해당한다. 후속 재생 리스트 표시자들(660)은 재생 파일(600) 이후에 사용될 하나 이상의 재생 파일에 관한 정보를 제공할 수 있다. 일 실시예에서, 후속 재생 리스트 표시자(660)는 재생 리스트(600)의 미디어 파일이 재생된 후에 사용될 하나 이상의 재생 리스트 파일에 대한 URI를 포함할 수 있다.
메모리 태그(670)는 클라이언트 장치가 미디어 파일 콘텐츠의 재생 이후에 미디어 파일을 저장할 수 있는지 여부 및/또는 얼마나(how long) 저장할 수 있는지를 표시할 수 있다. 일 실시예에서, 메모리 태그(670)는 EXT-X-ALLOW-CACHE 태그이다. 종료 태그(680)는 재생 리스트 파일(600)이 프리젠테이션을 위한 마지막 재생 리스트 파일인지를 표시한다. 일 실시예에서, 종료 태그(680)는 EXT-X-ENDLIST 태그이다.
다음 섹션은 일 실시예에 따른 여러 가지 예시적인 재생 리스트 파일들을 포함한다.
간단한 재생 리스트 파일(Simple Playlist file)
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
_______________________________________________
HTTPS를 이용한 슬라이딩 윈도우 재생 리스트(Sliding Window Playlist, using HTTPS)
#EXTM3U
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:8,
https :// priv . example . com / fileSequence2680 . ts
#EXTINF:8,
https :// priv . example . com / fileSequence2681 . ts
#EXTINF:8,
https :// priv . example . com / fileSequence2682 . ts
________________________________________________
암호화된 미디어 파일을 갖는 재생 리스트 파일(Playlist file with encrypted media files)
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="
https :// priv . example . com / key . php ?r=52"
#EXTINF:15,
http://media.example.com/fileSequence7794.ts
#EXTINF:15,
http://media.example.com/fileSequence7795.ts
#EXTINF:15,
http://media.example.com/fileSequence7796.ts
#EXT-X-KEY:METHOD=AES-128,URI="
https :// priv . example . com / key . php ?r=53"
#EXTINF:15,
http://media.example.com/fileSequence7797.ts
________________________________________________
변형 재생 리스트 파일(Variant Playlist file)
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example.com/hi.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"
http://example.com/audio-only.m3u8
________________________________________________
도 7은 본 명세서에 설명된 바와 같은 조립된 스트림의 재생 기술의 일 실시예의 흐름도이다. 일 실시예에서, 수신된 미디어 파일의 재생은 사용자에 의해 시작(start), 정지(stop), 되감기(rewind) 등을 하도록 제어될 수 있다. 재생 리스트 파일은 동작(700)에서 클라이언트 장치에 의해 수신된다. 재생 리스트 파일에 표시된 미디어 파일은 동작(710)에서 검색된다. 동작(720)에서 수신된 미디어 파일에 기초하여 출력이 생성된다. 미디어 파일을 수신하고 이에 기초하여 출력을 생성하는 것은 전술한 바와 같이 달성될 수 있다.
만일 동작(730)에서 제어 입력이 검출되면, 클라이언트 장치는 동작(740)에서 입력이 정지를 나타내는지 판단할 수 있다. 만일 입력이 정지이면, 프로세스는 완료하고 재생이 정지된다. 만일 동작(750)에서 입력이 되감기 또는 감기(forward) 요청을 나타낸다면, 클라이언트 장치는 동작(760)에서 메모리에 여전히 저장된 이전에 재생된 미디어 파일에 기초하여 출력을 생성할 수 있다. 만일 이러한 파일이 캐시에 더 이상 존재하지 않는다면, 프로세싱은 동작(710)으로 되돌아가 미디어 파일을 검색하고 프로세스를 반복한다. 대안의 실시예에서, 재생은 정지 입력과 같이 재생을 완료하지 않고 재생을 중단하는 일시 정지(pause) 기능을 지원할 수 있다.
하나의 스트림에서 또 다른 스트림으로 전이하기 위한 방법들이 도 9a 내지 도 9d를 참조하여 더 설명된다. 하나의 클라이언트 장치는 이러한 방법들 각각을 수행할 수 있고 또는 이러한 방법들 각각의 동작들은 본 명세서에 설명된 바와 같이 다수의 클라이언트 장치들에 걸쳐 분산될 수 있고; 예를 들어, 분산된 경우, 하나의 클라이언트 장치는 변형 재생 리스트와 두 개의 미디어 재생 리스트를 검색하고 이들을 또 하나의 클라이언트 장치로 제공할 수 있으며, 이 또 하나의 클라이언트 장치는 그 두 개의 미디어 재생 리스트에 의해 지정된 미디어 파일을 검색하고 그 검색된 미디어 파일에 의해 제공된 두 개의 스트림 사이를 전환한다. 또한, 대안의 실시예에서, 도시된 동작들의 순서는 변경될 수 있고 또는 이들 도면에 도시된 것보다 더 많거나 더 적은 동작들이 있을 수 있음이 이해될 것이다. 이러한 방법들은 변형 재생 리스트를 이용하여 상이한 스트림을 선택할 수 있다. 변형 재생 리스트는 동작(901)에서 검색 및 처리되어 프로그램(예를 들어, 스포팅 이벤트)에 대한 이용가능한 스트림이 결정될 수 있다. 동작(901)은 클라이언트 장치에 의해 수행될 수 있다. 동작(903)에서 변형 재생 리스트에서 제1 스트림이 선택될 수 있고, 그 다음에 클라이언트 장치는 제1 스트림에 대한 미디어 재생 리스트를 검색할 수 있다. 클라이언트 장치는 동작(905)에서 제1 스트림에 대한 미디어 재생 리스트를 처리하고 또한 동작(907)에서 제1 스트림에 대한 네트워크 접속의 비트 레이트를 측정하거나 다른 방법으로 결정할 수 있다. 동작들의 순서는 도 9a에 도시된 바와 다른 순서로 수행될 수 있고; 예를 들어, 동작(907)은 동작(903) 동안 등에 수행될 수 있음이 인식될 것이다. 동작(911)에서, 클라이언트 장치는 동작(907)으로부터의 측정된 비트 레이트에 기초하여 변형 재생 리스트에서 대안적인 미디어 재생 리스트를 선택하고; 이러한 대안적인 미디어 재생 리스트는 제1 스트림의 기존의 비트 레이트보다 높은 제2 비트 레이트일 수 있다. 이는 전형적으로 대안적인 스트림이 제1 스트림보다 높은 해상도를 가질 것임을 의미한다. 대안적인 미디어 재생 리스트는 현재의 조건(예를 들어, 동작(907)에서 측정된 비트 레이트)에 기초하여 그것이 제1 스트림에 대한 현재의 재생 리스트보다 더 잘 매칭하는 경우에 선택될 수 있다. 동작(913)에서, 대안적인 스트림에 대한 대안적인 미디어 재생 리스트가 검색되고 처리된다. 이는 전형적으로 클라이언트 장치가 제1 스트림과 대안적인 스트림 둘 다를 수신하고 처리할 수 있으므로 둘 다가 프리젠테이션에 이용가능하고; 하나가 프리젠테이션되는 동안 다른 하나는 프리젠테이션 준비 중임을 의미한다. 다음에, 클라이언트 장치는 동작(915)에서 스트림의 버전들 사이를 전환하는 전이점(transition point)을 선택하고, 제1 스트림의 프리젠테이션을 정지하고 대안적인 스트림의 프리젠테이션을 시작한다. 이러한 전환이 어떻게 달성되는지에 대한 예는 도 9b 내지 도 9d와 함께 제공된다. 일부 실시예에서, 클라이언트 장치는 그러한 전환을 하기 전에 제1 스트림의 수신을 정지할 수 있다.
도 9b는 클라이언트 장치가 동작(921 및 923)에서 제1 미디어 재생 리스트에 의해 지정된 콘텐츠(예를 들어, 제1 스트림)를 검색, 저장 및 프리젠테이션하고, 제1 재생 리스트에 의해 지정된 콘텐츠가 프리젠테이션되는 동안 동작(925)에서 클라이언트 장치가 제2 미디어 재생 리스트에 의해 지정된 콘텐츠(예를 들어, 제2 스트림)를 검색 및 저장하는 것을 또한 도시한다. 제1 미디어 재생 리스트에서 얻은 콘텐츠를 프리젠테이션하는 동안 제2 미디어 재생 리스트에 의해 지정된 콘텐츠를 검색 및 (예를 들어, 임시 버퍼에) 저장하는 것은 프로그램의 실질적인 중단 없이 클라이언트 장치가 프로그램의 버전들 사이를 전환하도록 하는, (도 9d에 도시된) 프로그램의 콘텐츠의 시간에서 오버랩(955)을 일으킨다. 이러한 방식으로, 프로그램의 버전들 사이의 전환은 많은 경우에 사용자가 전환이 일어난 것을 의식하지 못하거나(비록 어떤 경우에는 전환 이후 사용자가 더 높은 해상도의 이미지를 의식할 수 있지만) 프로그램의 프리젠테이션에서 실질적인 중단 없이 달성될 수 있다. 동작(927)에서, 클라이언트 장치는 제1 미디어 재생 리스트에 의해 지정된 콘텐츠에서 제2 미디어 재생 리스트에 의해 지정된 콘텐츠로 전환하는 전이점을 결정하고; 전이점(전이점 959)의 일례는 도 9d에 도시된다. 다음에, 제2 미디어 재생 리스트에 의해 지정된 콘텐츠는 동작(931)에서 전환 이후에 프리젠테이션된다.
도 9c 및 도 9d에 도시된 방법은 전이점을 결정하기 위한 일 실시예를 나타내고; 이 실시예는 두 스트림(951 및 953)으로부터의 오디오 샘플들에 대한 패턴 매칭(pattern matching)에 의존하여 전이점을 결정한다. 대안의 실시예는 비디오 샘플에 대한 패턴 매칭을 이용할 수 있거나 두 스트림 내에 있는 타임스탬프 등을 이용하여 전이점을 결정할 수 있다. 이러한 방법은 동작(941)에서 버퍼 내에 있는 제1 미디어 재생 리스트에 의해 지정된 콘텐츠(예를 들어, 스트림 951)를 저장하는 것을 포함할 수 있고; 버퍼는 콘텐츠의 프리젠테이션을 위해 또한 패턴 매칭 동작을 위해 이용될 수 있다. 스트림(951)은 오디오 샘플(951A) 및 비디오 샘플(951B) 둘 다를 포함한다. 비디오 샘플은 단일 비디오 프레임을 디스플레이하는데 필요한 모든 콘텐츠를 갖는 i-프레임 또는 키 프레임에 의존하는 압축 기술을 이용할 수 있다. 스트림(951) 내의 콘텐츠는 시간(예를 들어, 프로그램의 처음부터 경과한 시간)을 지정하는 타임스탬프를 포함할 수 있고, 이러한 타임스탬프는 각 샘플의 처음(예를 들어, 각 오디오 샘플(951A)의 처음 및 각 비디오 샘플(951B)의 처음)을 표시할 수 있다. 일부 경우에, 두 스트림 사이의 타임스탬프들의 비교는 이들이 충분히 정확하지 않을 수 있기 때문에 또는 두 스트림 내의 샘플들의 경계 차이 때문에 전이점을 결정하는데 유용하지 않을 수 있지만; 그러한 두 스트림 사이의 시간에 오버랩(955)이 존재하는 것을 확인하기 위해 타임스탬프 범위들의 비교가 이용될 수 있다. 동작(943)에서, 클라이언트 장치는 제2 미디어 재생 리스트에 의해 지정된 콘텐츠를 버퍼에 저장하고; 이 콘텐츠는 제1 미디어 재생 리스트에서 얻은 콘텐츠와 동일한 프로그램에 대한 것이고 이것 역시 타임스탬프를 포함할 수 있다. 일 실시예에서, 타임스탬프가, 스트림에 존재하지 않더라도, 스트림의 재생 리스트에 추가될 수 있고; 예를 들어, 일 실시예에서, 하나 이상의 타임스탬프를 포함하는 ID3 태그가 변형 재생 리스트 또는 미디어 재생 리스트와 같은 재생 리스트 내의 엔트리(entry)에 추가될 수 있다. 이러한 엔트리는, 예를 들어, 오디오 스트림의 제1 샘플에 대한 URI에 있을 수 있다. 도 9d는 제2 미디어 재생 리스트에서 얻은 콘텐츠(953)의 일례를 도시하고, 이는 오디오 샘플(953A) 및 비디오 샘플(953B)을 포함한다. 동작(945)에서, 클라이언트 장치는 두 스트림(951 및 953) 내의 오디오 샘플들에 대해 패턴 매칭을 수행하여 오버랩(955)으로부터 일 실시예에서 매칭된 오디오 세그먼트(예를 들어, 세그먼트 957) 이후 다음의 완비된 비디오 프레임(예를 들어, i-프레임 961)일 수 있는 전이점(959)을 선택할 수 있다. i-프레임(961)(및 그와 연관된 오디오 샘플)으로 시작하여, 프로그램의 프리젠테이션은 제2 미디어 재생 리스트에서 얻은 제2 스트림을 이용한다. 전술한 방법은 일 실시예에서 더 느린 비트 레이트에서 더 빠른 비트 레이트로의 변경과 더 빠른 비트 레이트에서 더 느린 비트 레이트로의 변경 둘 다에 이용될 수 있고 (예를 들어, 전이점의 위치를 찾으려고 시도하지 않고 가능한 빨리 더 늦은 비트 레이트 스트림으로부터 콘텐츠를 저장 및 프리젠테이션하려고 시도하는) 또 다른 방법은 더 빠른 비트 레이트에서 더 느린 비트 레이트로 변경하는 데 이용될 수 있다.
본 설명의 다음 섹션은 본 명세서에 설명된 재생 리스트 내의 바이트 범위 요청을 이용하는 것과 관련된다. 또한, 본 설명의 다음 섹션에서는 스트리밍 미디어 내의 I프레임으로부터 빨리 감기(fast forward) 또는 되감기(rewind)(역방향) 재생을 제공하는 방법 및 스트리밍 미디어의 빨리 감기 또는 되감기를 제공할 때 I프레임의 케이던스(cadence)가 선택되게 해주는 타이밍 정보를 갖는 재생 리스트를 이용하는 것에 대해 설명된다. I프레임은 바이트 범위 요청을 이용하여 서버로부터 검색될 수 있다.
1X 재생을 위한 재생 리스트 내의 또는 빨리 감기 또는 되감기를 위한 I프레임을 지정하는 재생 리스트 내의 바이트 범위 요청을 이용하면 제공자는 단일 대형 전송 스트림 또는 기본 오디오 스트림 파일 내에 다중 논리 세그먼트를 정의할 수 있다. 이는 서버 또는 다른 콘텐츠 분산 네트워크에서 관리되어야 하는 파일의 총수를 줄여줄 수 있고 세그먼트 집합에 대한 더 많은 관련성 정보를 캐싱(caching) 서버에 제공한다. 영화와 같이, 다중 세그먼트를 갖고 바이트 범위 요청에 따라 파일에서 데이터를 검색할 수 있는 능력을 갖는 미디어 파일의 일례가 도 13a에 도시되어 있다. 일 실시예에서, 암호 블록 체이닝(CBC) 및 암호 패딩(cryptographic padding)은 세그먼트 단위로 유지될 수 있고, 따라서 CBC가 도 13a에 도시된 seg1.ts와 seg2.ts 사이의 세그먼트 경계와 같은 세그먼트 경계에서 재시작할 것이다. 일 실시예에서, 도 13a에 도시된 대형 파일은 본질적으로 개별 세그먼트 파일들을 모두 연결한 것이다.
일 실시예에서 바이트 범위 요청을 이용하는 재생 리스트 구문(syntax)의 일례는 다음과 같다. 바이트 범위 태그가 각 세그먼트 지정자(specifier)에 추가되고 다음과 같은 형태, 즉 #EXT-X-BYTERANGE:<length>[@<offser>]를 갖고, 여기서 <length>는 세그먼트 내의 바이트의 수이고 선택적인 파라미터 <offset>은 파일의 처음으로부터의 오프셋이다. 만일 <offset>이 생략된다면, 파일 오프셋은 이전 엔트리의 오프셋에 그의 길이를 더한 것과 같다. <offset>은 첫 번째 세그먼트의 경우 0으로 가정된다. 일 실시예에서 바이트 범위 세그먼트를 지정하는 재생 리스트의 일례는 다음과 같다:
#EXTINF:10,
#EXT-X-BYTERANGE:2390240@0
entire_movie.ts
#EXTINF:10,
#EXT-X-BYTERANGE:670416
entire_movie.ts
#EXTINF:10,
#EXT-X-BYTERANGE:465120
entire_movie.ts
정상(1X) 속도로 재생을 제공할 수 있는 전통적인 재생 리스트는 바이트 범위 요청을 이용하여 단일의 대형 전송 스트림 또는 기본 오디오 스트림 파일에서 콘텐츠를 검색할 수 있다. 또한, 빨리 감기 또는 되감기 재생(예를 들어, 8X 또는 16X 또는 32X 또는 -8X 또는 -16X 또는 -32X)과 같은 트릭 플레이(trick play) 모드 재생을 제공하는 데 이용될 수 있는 I프레임 전용 재생 리스트 역시 바이트 범위 요청을 이용하여 단일의 대형 전송 스트림 또는 기본 스트림 파일에서 콘텐츠를 검색할 수 있다.
일 실시예에서, 변형 재생 리스트는 적어도 하나의 1X 재생의 재생 리스트에 대한 URL 및 적어도 하나의 I프레임 재생 리스트에 대한 URL을 포함할 수 있고; 전형적인 구현에서, 변형 재생 리스트는, 각각이 상이한 대역폭 또는 다른 변화, 예를 들어 상이한 코덱 등에서의, 1X 재생 리스트에 대한 복수의 URL을 가질 수 있고, 또한 상이한 대역폭 또는 다른 변화, 예를 들어 상이한 코덱 등에서의 I프레임 재생 리스트에 대한 복수의 URL을 포함할 수 있다. 도 10은 전통적인 1X 재생의 재생 리스트에 대한 URL들뿐 아니라, 이 경우 I프레임 전용 재생 리스트인 I프레임 재생 리스트에 대한 복수의 URL 둘 다를 포함하는 변형 재생 리스트(1001)의 일례를 도시한다. 특히, URL(1003)은 대역폭 X에서의 1X 재생의 재생 리스트에 대한 URL이고 URL(1005)은 대역폭 Y에서의 1X 재생의 재생 리스트에 대한 URL이다. URL(1007)은 대역폭 X에서의 I프레임 전용 재생 리스트에 대한 URL이고 URL(1009)은 대역폭 Y에서의 I프레임 전용 재생 리스트에 대한 URL이다. 이와 같은 전체 재생 리스트 파일(1001)은 클라이언트로부터의 특정 영화 또는 주문형 비디오 또는 다른 콘텐츠를 시청하기 위한 요청에 따라 제공되고, 그러한 요청에 따라, 서버는 1X 재생 또는 빨리 감기 또는 역방향 재생을 가능하게 하는 두 개의 상이한 URL 집합을 포함하는 재생 리스트 파일(1001)을 제공한다. 이는 클라이언트 장치가 변형 재생 리스트를 수신하고 그 변형 재생 리스트를 저장하도록 한 다음, 변형 재생 리스트 내에서 적절한 재생 리스트 파일을 선택적으로 선정하여 1X 재생 또는 빨리 감기 또는 역방향 재생 사이를 전환할 수 있도록 해준다. 전형적으로, I프레임 재생 리스트는 본 명세서에서 논의된 바이트 범위 기능을 이용할 것이다. 바이트 범위 기능은 세그먼트 내의 I프레임의 위치에 대한 정보를 제공하고, 이는 클라이언트 장치가 단지 I프레임들을 페치하고 디스플레이하여 주문형 비디오와 라이브 프리젠테이션 둘 다를 통해 역방향 또는 순방향으로 빠르게 스캔하도록 해주고, 이는 상이한 재생 속도에 대해서 전용 미디어 파일을 필요로 하지 않는다. 일 실시예에서, 클라이언트 장치는 현재의 네트워크 속도에 기초하여 최상의 사용자 경험을 제공하기 위해 I프레임을 디스플레이할 때 I프레임 재생 리스트의 변형들 사이를 적응적으로 전환할 수 있고; 다시 말하면, 네트워크 속도는 빨리 감기 또는 역방향 재생을 수행하는 동안 동적으로 결정될 수 있고 클라이언트 시스템은 동적으로 결정된 네트워크 속도에 따라 변형 재생 리스트 내에 포함된 I프레임 재생 리스트의 변형들 사이를 적응적으로 전환할 수 있다. I프레임 재생 리스트를 포함하는 변형 재생 리스트의 일례는 다음과 같다:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=326448
BTBW0.2Mb/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1255635
BTBW0.8Mb/prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=75915
BTBW0.2Mb/iframes.m3u8
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=380752
BTBW0.8Mb/iframes.m3u8
#EXT-X-I-FRAME-STREAM-INF 태그는 #EXT-X-STREAM-INF (PROGRAM-ID, BANDWIDTH, CODECS)와 동일한 속성 집합을 갖는다. 이러한 변형 재생 리스트로부터, 변형 재생 리스트가 상이한 대역폭에서의 1X 재생을 위한 두 개의 버전과 역시 두 개의 상이한 대역폭에서의 I프레임 재생 리스트의 두 개의 버전을 제공한다는 것을 알 수 있다. 일 실시예에서, I프레임 재생 리스트는 미디어 파일 내의 단지 I프레임에 대한 바이트 범위 요청을 포함하고, 따라서 B프레임 및 P프레임은 I프레임 전용 재생 리스트에 지정된 이러한 바이트 범위 요청 내에 포함되지 않는다.
I프레임 전용 재생 리스트의 일례는 다음과 같다: (EXT-X-I-FRAMES-ONLY 태그 주목):
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-I-FRAMES-ONLY
#EXTINF:1.2489,
#EXT-X-BYTERANGE:1505@376
segment0.ts
#EXTINF:4.9633,
#EXT-X-BYTERANGE:1505@125584
segment0.ts
#EXTINF:5.005,
#EXT-X-BYTERANGE:37413@539184
segment0.ts
#EXTINF:5.005,
#EXT-X-BYTERANGE:30645@152844
segment1.ts
바이트 범위는 단지 I프레임을 포함하고; PAT/PMT를 읽기 위해, 클라이언트는 불연속 도메인에서 제1 URL의 처음부터 제1 I프레임의 오프셋까지 읽을 것이라는 것에 주목하자. 이 실시예에서, 바이트 범위 요청은 그의 대응하는 URL에 인접하지만 URL의 일부가 아닌 태그에 지정되지만, 또 다른 실시예에서, 바이트 범위 요청은 URL의 일부일 수 있다. 이러한 I프레임 재생 리스트에서 알 수 있는 바와 같이, 세그먼트 지정자가 I프레임을 나타내고, EXTINF 지속 시간이 I프레임과 다음 I프레임 사이의 시간 범위를 나타내는 것을 표시하는 새로운 태그가 정규 재생 리스트에 추가되었다. 이러한 시간 정보의 사용은 도 14 및 도 15에 도시된 방법과 함께 설명될 것이다.
도 11은 도 10에 도시된 변형 재생 리스트 또는 I프레임 재생 리스트에 대한 참조를 포함하는 다른 변형 재생 리스트를 생성하기 위한 일 실시예의 방법을 도시하는 흐름도이다. 동작(1101)에서, 데이터 처리 시스템은 비디오 콘텐츠 내의 I프레임들을 결정한다. 파일 또는 전송 스트림 내의 I프레임들을 결정하기 위해 잘 알려진 기술이 이용될 수 있다. 동작(1103)에서, I프레임 전용 재생 리스트와 같은 I프레임 재생 리스트가 데이터 처리 시스템에 의해 생성될 수 있고, 그 다음에, I프레임 재생 리스트 및 선택적으로 1X 재생 리스트에 대한 URL을 포함하는 변형 재생 리스트가 추가로 생성된다. 데이터 처리 시스템은 또한 변형 재생 리스트 및 I프레임 재생 리스트 이외에 1X 재생 리스트도 생성할 수 있다. I프레임 재생 리스트는 복수의 1X 재생 리스트에 대한 복수의 URL을 포함할 수 있고 또한 대응하는 복수의 I프레임 재생 리스트에 대한 복수의 URL도 포함할 수 있다. 그러한 변형 재생 리스트의 일례가 도 10에 도시되어 있다. 프로그램을 시청하기 위한 클라이언트 장치의 요청에 따라, 데이터 처리 시스템 또는 또 다른 데이터 처리 시스템은 1X 재생 리스트 또는 재생 리스트들에 대한 그리고 I프레임 재생 리스트 또는 재생 리스트들에 대한 URL들을 포함하는 변형 재생 리스트를 전송할 수 있다. 변형 재생 리스트의 전송은 도 11에서 동작(1105)으로 도시되어 있다. 다음에, 동일한 서버 시스템 또는 또 다른 서버 시스템은 I프레임 재생 리스트 또는 1X 재생 리스트에 대한 클라이언트 요청을 대기한다. 동작(1107)에서 그리고 동작(1109)에서, 전송 서버는 클라이언트로부터 수신된 요청에 기초하여, 클라이언트가 I프레임 재생 리스트를 요청하였는지 1X 재생 리스트를 요청하였는지를 판단하고, 이에 따라, 전송 서버는 동작(1113)에서 I프레임 재생 리스트를 전송하거나 동작(1111)에서 1X 재생 리스트를 전송한다.
도 12는 도 14 및 도 15에 도시된 방법들 중 어느 하나를 수행할 수 있는 클라이언트 장치의 아키텍처의 일례를 도시한다. 클라이언트 장치(1201)에 도시된 컴포넌트들은 (도 8에 도시된 시스템과 같은 데이터 처리 시스템에서 실행하는) 소프트웨어 컴포넌트 또는 하드웨어 컴포넌트 또는 소프트웨어와 하드웨어의 조합일 수 있다. 일 실시예에서, 사용자 애플리케이션(1207)은 영화 또는 베이스볼 게임을 디스플레이하거나 라디오 쇼 등을 청취하기 위해 사용자에 의해 실행되는 소프트웨어 애플리케이션이다. 예를 들어, 일 실시예에서, 사용자 애플리케이션은 베이스볼 게임을 시청하기 위해 메이저리그 베이스볼에 의해 제공되는 애플리케이션일 수 있다. 애플리케이션(1207)은 도 8에 도시된 시스템과 같은 데이터 처리 시스템에서 동작하는 소프트웨어 프로그램일 수도 있는 재생기 모듈(1209)과 상호 작용할 수 있다. 사용자 애플리케이션(1207)은 일 실시예에서 본 명세서에 더 설명된 API를 통해 재생기 모듈(1209)과 상호 작용한다. 마찬가지로, 재생기 모듈(1209)은 API를 통해 다운로드 및 데이터 레이트 측정 모듈(1211)과 상호 작용할 수 있다. 재생기 모듈(1209)은 일 실시예에서 다운로드 모듈에게 다운로드 모듈로 제공된 URL로부터 콘텐츠를 다운로드하라고 명령하기 위해 재생 리스트를 처리할 수 있다. 다운로드 모듈(1211)은, 콘텐츠 서버 또는 재생 리스트 및 콘텐츠 등을 제공하는 서버와 같은 하나 이상의 서버(1205)에 연결되어 있는, 네트워크(1203)와 같은 하나 이상의 네트워크에 연결되어 있는 하나 이상의 네트워크 인터페이스(1213)를 통해 다운로드 동작을 수행할 수 있다. 다운로드 및 데이터 레이트 측정 모듈(1211)은 또한 재생 리스트에 지정된 콘텐츠를 검색할 때 데이터 레이트 측정을 수행한다. 데이터 레이트 측정은 빨리 감기 또는 되감기(역방향) 재생, 다르게는 트릭(trick) 플레이 재생 모드로서 알려진 것을 제공하기 위해 도 14 및 도 15와 함께 설명된 방법에서 다운로드할 I프레임의 적절한 케이던스(cadence)를 결정하는 데 이용될 수 있다.
이제, 도 13a 및 도 13b는 미디어 파일과 그와 연관된 I프레임 재생 리스트 사이의 관계를 설명하면서 언급될 것이다. I프레임 재생 리스트는 I프레임의 부분 집합 또는 케이던스를 선택하여 빨리 감기 또는 되감기 재생(예를 들어, 8X 또는 16X 또는 32X 재생 또는 -8X에서 또는 -16X에서 또는 -32X에서의 되감기 재생)을 제공하기 위해 도 14 및 도 15에 도시된 방법들이 수행되도록 하는 미디어 파일에 대한 메타데이터(metadata)를 포함한다는 것을 알 것이다. 미디어 파일(1301)은 본 기술 분야에서 알려진 HTTP 라이브 스트리밍 프로토콜에 따라 만들어진 영화 또는 주문형 비디오 또는 라이브 방송 또는 다른 파일일 수 있다. 미디어 파일(1301)은 본 기술 분야에서 알려진 바와 같은 복수의 I프레임을 포함한다. I프레임(1305)은 I프레임 I0, I1, I2, I3,I4, I5, 및 I6을 포함한다. 본 기술 분야에서 알려진 바와 같이, 각 I프레임 뒤에는 B프레임과 P프레임의 콘텐츠를 디코드하기 위해 I프레임을 필요로 하는 B프레임과 P프레임이 온다. 도 13a로부터 알 수 있는 바와 같이, I프레임들은 본 기술 분야에서 알려진 바와 같이 비디오 내의 움직임 특성으로 인해 파일에 걸쳐 시간에서 균등하게 분포되지 않는다. 미디어 파일(1301) 내의 메타데이터는 본 기술 분야에서 알려진 바와 같이 암호 블록 체이닝 및 암호 패딩을 위해 이용되는, 시간에서 상이한 세그먼트들을 지정하는 세그먼트 정보(1303)를 포함할 수 있다. 암호 블록 체이닝은 일 실시예에서 세그먼트 경계에서 재시작할 것이다. 미디어 파일(1301)은 본질적으로 개별 세그먼트 파일들을 모두 연결한 것이다. 미디어 파일(1301)은 각각의 연속하는 I프레임의 처음 사이의 시간 범위를 나타내는 시간 메타데이터(1307)를 포함할 수 있다. 예를 들어, I프레임 I1의 처음에서 시간 7.3초는 I프레임 I0와 그의 연관된 B 및 P 프레임들이 7.3초의 지속 시간을 차지한다는 것을 의미한다. 도 13a에서 I프레임들 아래에 도시된 시간 메타데이터(1307)는 시간 값이고; 예를 들어, I프레임 6은 영화의 정상 1X 재생 시간에서 26초에 디스플레이된다. 유사하게, I프레임 4는 영화가 1X 재생 속도로 재생될 때 영화 시간에서 16.2초에 프리젠테이션된다. 일 실시예에서, 도 13a에서 I프레임들 아래에 도시된 시간 메타데이터는 미디어 파일(1301)에 포함될 수 있고, 반면에 다른 실시예에서 시간 메타데이터는 미디어 파일과 함께 저장되지 않고 미디어 파일에서 도출될 수 있지만, 시간 메타데이터는 아래에 설명된 바와 같이 도 13b에 도시된 I프레임 재생 리스트와 같은 I프레임 재생 리스트에서 이용될 것이며 이 시간 메타데이터는 도 14 또는 도 15의 방법에서 이용될 수 있다.
도 13b에 도시된 I프레임 재생 리스트는 도 13a에 도시된 미디어 파일(1301)에 대한 I프레임 재생 리스트의 일부를 나타낸다. 이러한 재생 리스트는 그 재생 리스트가 단지 I프레임에 대한 것임을 표시하는 I프레임 전용 지정자(1315)를 포함한다. 태그 #EXTINF:7.3은 I프레임 I0에 대한 지속 시간 범위(span duration)이고; 다시 말하면, 지속 시간 범위(1317)는 I프레임 I0의 시간 범위를 나타내고 I프레임 I1의 처음에 도시된 7.3과 일치한다. 바이트 범위 요청(1319)은 도 13a에 도시된 바이트 범위 A를 지정하는 바이트 범위 파라미터를 포함하고; 다시 말하면, 바이트 범위 요청(1319)에서 바이트 범위 파라미터는 미디어 파일(1301)에서 단지 I프레임 I0만을 검색하기 위한 데이터의 범위를 지정한다. 세그먼트 지정자(1321 및 1327)는 바이트가 위치한 특정 세그먼트를 지정한다. 바이트 범위 요청(1323)은 또한, 이 경우 도 13a에 도시된 9.8초와 7.3초 사이의 차와 일치하는 2.5인 지속 시간 범위를 포함한다. 특히, 2.5초는 I프레임 I1의 처음과 I프레임 I2의 처음 사이의 지속 시간을 지정한다. 바이트 범위 요청(1325)은 I프레임 I1에 대한 비디오 콘텐츠를 검색하기 위해 도 13a에 도시된 바이트 범위 B를 지정하는 바이트 범위 파라미터를 포함한다. 일부 실시예에서, 오디오 데이터는 동일한 바이트 범위 내에 있는 비디오 데이터와 멀티플렉스될 수 있지만, 그 오디오 데이터는 전형적으로 빨리 감기 또는 역방향 재생에 이용되지 않는다. 지속 시간 범위(1317 및 1323)는 일 실시예에서 도 14 또는 도 15와 함께 아래에서 더 설명된 바와 같이 I프레임들의 상이한 케이던스들을 다운로드하는 데 이용가능한 시간량을 결정하는 데 이용될 수 있다.
도 14는 디스플레이 기한(deadline) 이전에 이용가능한 모든 이용가능한 I프레임들로부터 I프레임들의 집합을 결정하기 위한 방법을 도시한다. 도 14에 도시된 방법은 도 13b의 I프레임 재생 리스트와 같은 I프레임 재생 리스트를 수신하였고 I프레임 재생 리스트를 이용하여 빨리 감기 또는 역방향 재생을 제공하기 위해 그러한 I프레임 재생 리스트를 처리하는 과정에 있는 클라이언트 장치(예를 들어, 클라이언트 장치 1201)에서 수행된다. 집합은 I프레임들이 시간이 지남에 따라 적어도 어느 정도 균등하게 분포되는 방식으로 디스플레이 기한 전에 모든 이용가능한 I프레임들로부터 선택될 수 있다. 동작(1401)에서, 클라이언트 장치는 I프레임 재생 리스트 내에 복수의 이용가능한 I프레임 집합들을 결정하고; 이러한 집합들은 현재 영화 시간, 8X 또는 16X 또는 -8X 등과 같은 선택된 재생 모드, 및 디스플레이 기한을 기초로 한다. 일 실시예에서, 디스플레이 기한은 현재 시간에 현재 실시간 클록 시간부터 1/2초 또는 1초 또는 2초와 같은 일정 시간 값을 더한 것의 실시간 클록을 기초로 할 수 있다. 재생기 시간 또는 영화 시간은 재생 속도에 기초하여 이러한 디스플레이 기한으로부터 도출될 수 있고; 예를 들어, 만일 재생 속도가 16X이면, 현재의 I프레임에 대한 지속 시간 범위에 16초를 더하여 디스플레이 기한에서의 재생기 시간을 제공할 수 있다. 예를 들어, 만일 재생 속도가 8X이고 현재 디스플레이된 I프레임이 도 13a에 도시된 I0이면, (8X 재생 속도에 해당하는) 8초를 7.3초에 더하여 디스플레이 기한에서의 재생기 시간(또는 영화 시간)을 도출할 수 있다. 디스플레이 기한에서의 재생기 시간은 디스플레이 기한까지 검색될 수 있는 I프레임의 최대 수를 효과적으로 설정하고; 그 I프레임들의 최대 수는 현재 디스플레이된 I프레임과 디스플레이 기한 이전의 마지막 완전한 I프레임 사이의 I프레임들의 수이다. 재생 속도를 다르게 하면 도 16에 도시된 바와 같이 상이한 디스플레이 기한을 산출할 것이다. 도 16은 도 16에 도시된 바와 같이, 시간에서, I프레임 I0에서 시작하고 I프레임 I17에서 끝나는 적어도 17개의 I프레임을 갖는 미디어 파일의 일례를 도시한다. 현재 디스플레이된 I프레임은 I프레임 I0이고 시간은 왼쪽에서 오른쪽으로 진행한다. 만일 재생 속도가 16X로 설정되어 있다면, 디스플레이 기한은 I프레임 I10이거나 그 이전이고, 반면에 만일 재생 속도가 32X로 설정되어 있다면, 디스플레이 기한은 I프레임 I17이거나 그 이전으로 설정된다. 따라서, 도 16의 경우, 재생 속도가 16X이면 디스플레이 기한 전에 검색될 수 있는 I프레임의 최대 수는 9개의 I프레임(I프레임 I1-I9)이고, 반면에 재생 속도가 32X로 설정되어 있다면 다운로드되는 데 이용가능할 수 있는 프레임의 최대 수는 16개의 I프레임(I프레임 I1-I16)으로 설정된다. 따라서, 도 14에서 동작(1401)은 디스플레이 기한 및 현재 선택된 재생 속도 및 현재 영화 시간을 고려하여 다운로드될 수 있는 I프레임의 최대 수를 결정하고, 그 다음에 그러한 이용가능한 I프레임들의 부분 집합들을 결정하는 것으로 진행한다. 일 실시예에서, 그러한 부분 집합들은 시간에서 하나 걸러 하나씩의 I프레임 또는 시간에서 둘 걸러 하나씩의 I프레임 등일 수 있다.
다음에, 동작(1403)에서, 클라이언트 장치는 각각의 이용가능한 I프레임 집합에 대한 다운로드 시간을 결정한다. 일반적으로, 각각의 이용가능한 I프레임 집합은 상이한 수의 I프레임을 가질 것이므로 이들의 다운로드 시간은 다를 것이다. 예를 들어, 클라이언트 장치는 이용가능한 최대 수의 I프레임에서 하나 걸러 하나씩의 I프레임을 다운로드하는 다운로드 시간을 결정하고 디스플레이 기한 이전에 다운로드하는 데 이용가능한 최대 수의 I프레임에서 둘 걸러 하나씩의 I프레임에 대한 다운로드 시간 등을 결정할 수 있다. 다음에, 동작(1405)에서, 클라이언트 장치는 디스플레이 기한 이전에 다운로드될 수 있는 이용가능한 I프레임 집합들 중 하나를 선택한 다음, 동작(1407)에서, 클라이언트 장치는 선택된 이용가능한 I프레임 집합을 다운로드하고 이들을 디스플레이한다. 일 실시예에서, 클라이언트 장치는 각 I프레임을 한번에 하나씩 다운로드하고 마지막 I프레임의 실제 다운로드 시간에 기초하여 1401, 1403, 및 1405의 동작 처리를 반복할 것이다. 빨리 감기 또는 되감기 재생 동안, 사용자는 재생을 정지하기를 원할 수 있거나 재생 속도를 변경할 수 있음이 인식될 것이며, 이는 동작(1409)으로 나타내고, 여기서 시스템은 콘텐츠가 끝났거나 정지되었는지 또는 사용자가 재생 속도 등을 변경하였는지를 판단한다. 클라이언트 장치는 사용자 입력에 기초하여 응답할 것이다.
일 실시예에서, 본 발명의 방법은 빨리 감기 또는 역방향 모드에서 I프레임을 프리젠테이션하는 동안 다운로드 시간을 지속적으로 평가할 수 있고, 클라이언트 장치는 사용자 개입 없이 해상도 또는 품질 변경 여부를 자동으로 판단할 수 있다. 예를 들어, 만일 사용자가 8X를 선택하였고 네트워크 속도가 고속이고, 그리고 더 높은 해상도의 I프레임을 다운로드하는 데 이용될 수 있는 여분 시간(spare time)이 있도록 I프레임들이 충분히 고속으로 다운로드되고 있다면, 시스템은 동작(1411)에서 해상도 또는 품질을 변경하기로 결정한 후 다른 I프레임 재생 리스트로 자동으로 전환한 다음, 동작(1413)에서 그렇게 할 수 있으며, 여기서 클라이언트 장치는 이 경우 더 높은 해상도 또는 더 우수한 화질을 갖는 다른 I프레임 재생 리스트로 변경한다. 도 18은 I프레임 재생 리스트들 사이를 전환하는 동작(1801, 1803, 및 1805)을 포함하는 방법의 일례를 도시한다. 일 실시예에서, 클라이언트 장치는 사용자에게 해상도 또는 품질을 변경하기 전에 그러한 변경을 확인하라고 요청하는, 사용자 인터페이스를 사용자에게 제시할 수 있다. 해상도 또는 품질의 변경은 네트워크 대역폭이 클 때 증가된 해상도 또는 품질일 수 있거나 네트워크 대역폭이 열악하거나 낮을 때 더 낮은 해상도 또는 품질로의 변경일 수 있다. 도 14에 도시된 방법은 동작(1415)에서 계속되고, 여기서 다음의 현재 영화 시간이 결정되고 다음의 디스플레이 기한이 결정되며 그 다음 프로세스는 동작(1401)으로 되돌아가 반복한다.
도 15는 빨리 감기 또는 역방향 재생을 제공하기 위해 I프레임 재생 리스트를 처리하는 방법과 관련하여 더 상세한 내용을 도시한다. 도 15의 방법은 사용자가 재생을 정지하거나 재생 속도를 변경하기로 결정하거나 시스템이 해상도 또는 품질을 변경하는 동작을 포함할 수 있음이 이해될 것이고; 예를 들어, 동작들(1409 및 1411)은 또한 도 15에 도시된 방법 내에서 언제든지 수행될 수 있다. 또한, 동작들의 순서는 대안의 실시예에서 도 15에 도시된 순서와 다를 수 있음이 이해될 것이다. 도 15의 방법은 클라이언트 장치가 변형 재생 리스트(예를 들어, 도 10에 도시된 재생 리스트)에 지정된 I프레임 재생 리스트와 같은 I프레임 재생 리스트를 다운로드하였다고 가정한다. 또한, 도 15의 방법은 다운로드된 마지막 I프레임과 같은 특정 I프레임에 해당하는 데이터의 바이트 범위와 같은 데이터의 다운로드 레이트를 측정하는 다운로드 측정 모듈을 포함하는 도 12에 도시된 클라이언트 장치로 구현될 수 있음이 인식될 것이다. 동작(1501)에서, 클라이언트 장치는 현재 디스플레이된 I프레임의 처음의 현재 영화 시간을 결정하고, 이러한 현재 영화 시간은 TC로 나타낼 수 있다. 도 10에 도시된 예에서, I프레임 I0은 디스플레이 중인 현재 I프레임이고, 클라이언트 장치는 그 I프레임 I0의 처음의 현재 영화 시간을 결정할 것이다. 다음에, 동작(1503)에서, 클라이언트 장치는 8X 또는 16X 또는 -8X 등과 같은 다양한 상이한 빨리 감기 또는 역방향 속도 중 어느 하나일 수 있는 현재 재생 모드를 결정한다. 다음에, 동작(1505)에서, 클라이언트 장치는 현재 디스플레이 기한을 결정한다. 일 실시예에서, 이는 현재 영화 시간에 현재 재생 속도의 배수(예를 들어, 1 또는 2의 배수)를 더하여 수행될 수 있다. 예를 들어, 만일 배수가 1초이고 현재 재생 속도가 8X이면, 1초 곱하기 8초의 곱은 8초가 되고 그 곱을 현재 영화 시간 T0에 더하여 현재 디스플레이 기한을 산출한다. 이러한 현재 디스플레이 기한은 영화 시간 내일 수 있고 현재 디스플레이 기한 이전에 이용가능한 I프레임의 최대 수를 결정하는 경계를 설정할 수 있다. 이러한 동작은 도 15에서 동작(1507)으로 도시되어 있다. 도 16에 도시된 예에서, 만일 재생 속도가 16X이면, 클라이언트 장치는 동작(1507)에서 현재 디스플레이 기한 이전에 이용가능한 모든 I프레임이 도 16에 도시된 I프레임들 I1 내지 I9에 해당한다고 결정할 것이다. 다음에, 동작(1509)에서, 클라이언트 장치는 동작(1507)에서 결정된 그러한 I프레임들 전부의 부분 집합들을 결정한다. 다시 말하면, 클라이언트 장치는 현재 디스플레이 기한 이전에 이용가능한 그러한 I프레임들의 다양한 부분 집합들을 결정할 것이다. 일 실시예에서, 그러한 부분 집합들 각각은 상이한 케이던스를 가질 수 있고 각 케이던스는 상이한 수의 I프레임들을 가질 수 있다. 일 실시예에서, 케이던스는 I프레임들이 시간이 지남에 따라 균등하게 분포되거나 이용가능한 I프레임들의 시퀀스에 걸쳐 (및 시간이 지남에 따라 반드시 완벽하지는 않지만) 적어도 균등하게 분포되도록 설계될 수 있다.
도 17의 (a), (b), (c), 및 (d)는 네 가지 상이한 케이던스의 예를 도시한다. 도 17의 (a)는 동작(1507)에서 결정된 모든 I프레임들의 집합에서 I프레임들 모두가 다운로드를 위해 고려되고 있는 케이던스를 나타낸다. 도 17의 (b)에 도시된 케이던스는 동작(1507)에서 다운로드를 위해 이용가능한 것으로 결정된 I프레임들 중 하나 걸러 하나씩이 다운로딩을 위해 고려되는 케이던스(이 경우, I프레임들의 부분 집합)를 나타낸다. 유사하게, 도 17의 (c)에 도시된 케이던스는 둘 걸러 하나씩의 I프레임이고, 도 17의 (d)에 도시된 케이던스는 동작(1507)에서 결정된 바와 같이 이용가능한 I프레임들의 그룹에서 셋 걸러 하나씩의 I프레임이다. 일 실시예에서, 동작(1511)에 도시된 바와 같이, 클라이언트 장치는 선택적으로 각 부분 집합 내의 I프레임들의 수를 일정한 또는 미리 정해진 수로 또는 사용자 또는 시스템에 의해 달라질 수 있는 수로 제한할 수 있다. 이러한 방식으로 I프레임들의 수를 제한하면 일부 실시예에서 사용자 경험을 향상시킬 수 있다. 다음에, 동작(1513)에서, 클라이언트 장치는 I프레임들의 부분 집합의 각각에 대한 다운로드 시간을 결정하고, 각각은 일 실시예에서 도 17의 (a) 내지 도 17의 (d)에 도시된 다양한 케이던스들과 같은 상이한 케이던스를 갖는다. 케이던스 집합 내 각 케이던스에 대한 다운로드 시간은 현재 디스플레이 중인 마지막 I프레임의 다운로드 시간 또는 다운로드된 마지막 두 개 또는 세 개 또는 네 개 이상의 I프레임들의 시간에 따라 지수적으로 감쇠하는 이동 평균(running average) 또는 다운로드된 마지막 두 개 또는 세 개 이상의 I프레임들의 평활화된 평균(smoothed average)으로부터 도출될 수 있다. 다운로드 시간의 측정은 도 12에 도시된 모듈(1211)에 의해 수행될 수 있고, 그러한 다운로드 시간은 동작(1515)에서 I프레임들의 부분 집합 중 하나의 선택을 수행할 수 있는 재생기 모듈(1209)로 제공될 수 있다. 클라이언트 장치는 동작(1515)에서 각 케이던스가 디스플레이 기한 이전에 다운로드될 수 있는지를 판단할 것이고, 그렇게 할 수 없는 것들에 대해서는, 가능한 해결책으로서 이들을 폐기할 것이며 가장 많은 수의 I프레임들을 가지면서 현재 디스플레이 기한 이전 소정의 시간 기간 내에 다운로드될 수 있는 케이던스를 선택할 것이다. 다시, 일 실시예에서, 선택된 케이던스는 동작(1511)에서, 초당 10개 이하의 I프레임과 같이, 소정의 시간 기간 내 I프레임의 최대 수로 제한될 수 있고 이는 트릭 플레이의 시각적 경험을 향상시킬 수 있다. 동작(1515)에서 특정 케이던스가 선택된 후, 클라이언트 장치는 선택된 부분 집합에서 첫 번째 I프레임을 다운로드하기 시작할 수 있다. 일 실시예에서, 클라이언트 장치는 선택적으로 먼저 그 I프레임을 다운로드하기에 너무 늦었는지를 확인하고 만일 그렇다면 동작(1515)에서 선택된 케이던스에서 다음 I프레임으로 건너뛸 수 있다. 일 실시예에서, 재생기 모듈(1209)은 동작(1515)에서 선택을 수행한 다음 동작(1517)에서 다운로드 모듈(1211)에게 첫 번째 I프레임을 다운로드하라고 요청한다. 다음에, 다운로드 모듈은 그 I프레임의 다운로드 레이트 또는 다운로드 시간을 측정할 수 있고 그 정보는 도 15의 방법을 통해 동작(1517)에 뒤이어 동작(1501)이 올 때 수행되는 다음번 반복에서 이용될 수 있다. 만일 네트워크 상태가 변경되면(예를 들어, 네트워크 대역폭이 떨어져서 다운로드 시간이 더 길어지면), 도 15의 방법은 선택된 케이던스에서 I프레임들 모두를 다운로드하기 전에 다시 수행될 수 있고 따라서 그 케이던스는 클라이언트 장치가 마지막 선택된 케이던스에서 I프레임들의 다운로딩을 완료하기 전에 변경될 수 있다. 이러한 처리가 계속하여 일어난다면, 클라이언트 장치는 도 18에 도시된 바와 같이, 느린 네트워크로 조정하기 위해 I프레임들의 해상도 또는 품질을 변경하기로 결정할 수 있다. 대안으로, 만일 네트워크 속도가 증가한다면, 도 18의 방법은 또한 I프레임의 해상도 또는 품질을 변경하는 데 이용될 수 있다. 전술한 바와 같이, 도 18의 방법은 시스템에 의해 언제든지 자동으로 또는 특정 경우에 사용자의 요청에 따라 수행될 수 있다.
도 8은 전자 시스템의 일 실시예의 블록도이다. 도 8에 예시된 전자 시스템은, 예를 들어, 데스크톱 컴퓨터 시스템, 랩톱 컴퓨터 시스템, 셀룰러폰, 셀룰러 가능 개인 휴대 정보 단말(PDA)을 포함하는 PDA, 셋톱 박스, 엔터테인먼트 시스템 또는 다른 소비자 전자 장치를 포함하여 다양한 전자 시스템(유선 또는 무선)을 나타내는 것으로 의도된다. 대안의 전자 시스템은, 더 많은, 더 적은 및/또는 다른 컴포넌트를 포함할 수 있다. 도 8의 전자 시스템은 클라이언트 장치 및/또는 서버 장치를 제공하는 데 이용될 수 있다.
전자 시스템(800)은 정보를 전달하기 위한 버스(805) 또는 다른 통신 장치, 및 버스(805)에 연결되어 정보를 처리할 수 있는 프로세서(810)를 포함한다. 전자 시스템(800)이 단일 프로세서와 함께 예시되어 있지만, 전자 시스템(800)은 다중 프로세서 및/또는 코프로세서(co-processors)를 포함할 수 있다. 전자 시스템(800)은 버스(805)에 연결된 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 장치(820)(메인 메모리로 지칭됨)를 포함할 수 있고 프로세서(810)에 의해 실행될 수 있는 정보 및 명령어를 저장할 수 있다. 메인 메모리(820)는 또한 프로세서(810)에 의한 명령어의 실행 동안 임시 변수(temporary variables) 또는 다른 중간(intermediate) 정보를 저장하는 데 이용될 수 있다.
전자 시스템(800)은 또한 버스(805)에 연결되어 프로세서(810)를 위한 정적 정보 및 명령어를 저장할 수 있는 판독 전용 메모리(ROM) 및/또는 다른 정적 저장 장치(830)를 포함할 수 있다. 데이터 저장 장치(840)는 버스(805)에 연결되어 정보 및 명령어를 저장할 수 있다. 플래시 메모리 또는 자기 디스크 또는 광학 디스크와 같은 데이터 저장 장치(840) 및 대응하는 드라이브가 전자 시스템(800)에 연결될 수 있다.
전자 시스템(800)은 또한 버스(805)를 통해 정보를 사용자에게 디스플레이하는 음극선관(CRT) 또는 액정 디스플레이(LCD)와 같은 디스플레이 장치(850)에 연결될 수 있다. 전자 시스템(800)은 또한 버스(805)에 연결되어 정보 및 명령어 선택을 프로세서(810)로 전달할 수 있는 영숫자(alphanumeric) 및 다른 키를 포함하는 영숫자 입력 장치(860)를 포함할 수 있다. 또 다른 형태의 사용자 입력 장치는 방향 정보 및 명령어 선택을 프로세서(810)로 전달하고 디스플레이(850) 상의 커서 이동을 제어하는 터치패드, 마우스, 트랙볼, 또는 커서 방향 키와 같은 커서 제어장치(870)이다.
전자 시스템(800)은 근거리 네트워크와 같은 네트워크에 접속하기 위한 하나 이상의 네트워크 인터페이스(들)(880)를 더 포함할 수 있다. 네트워크 인터페이스(들)(880)는, 예를 들어, 하나 이상의 안테나(들)를 대표할 수 있는 안테나(885)를 갖는 무선 네트워크 인터페이스를 포함할 수 있다. 전자 시스템(800)은 WiFi, 블루투스 및 셀룰러 전화 인터페이스의 조합과 같은 다중 무선 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스(들)(880)는 또한, 예를 들어, 이더넷 케이블, 동축 케이블, 광섬유 케이블, 직렬 케이블, 또는 병렬 케이블일 수 있는 네트워크 케이블(887)을 통해 원격 장치와 통신하기 위한, 예를 들어, 유선 네트워크 인터페이스를 포함할 수 있다.
일 실시예에서, 네트워크 인터페이스(들)(880)는, 예를 들어, IEEE 802.11b 및/또는 IEEE 802.11g 표준에 따름으로써 근거리 네트워크에 접속할 수 있고, 및/또는 무선 네트워크 인터페이스는, 예를 들어, 블루투스 표준에 따름으로써 개인 영역 네트워크에 접속할 수 있다. 다른 무선 네트워크 인터페이스 및/또는 프로토콜도 또한 지원될 수 있다.
무선 LAN 표준을 통한 통신에 더하여, 또는 그 대신에, 네트워크 인터페이스(들)(880)는, 예를 들어, 시분할 다중 접속(TDMA) 프로토콜, 글로벌 이동 통신 시스템(GSM) 프로토콜, 코드 분할 다중 접속(CDMA) 프로토콜, 및/또는 어떤 다른 형태의 무선 통신 프로토콜을 이용하여 무선 통신을 제공할 수 있다.
일부 실시예에서, 하나 이상의 애플리케이션 프로그래밍 인터페이스(APIs)가 이용될 수 있다. API는 다른 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하, "API-호출(calling) 컴포넌트")가 API-구현(implementing) 컴포넌트에 의해 제공된 하나 이상의 함수, 메서드, 절차, 데이터 구조, 클래스, 및/또는 다른 서비스에 액세스하고 이를 이용하도록 하는 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하, "API-구현 컴포넌트")에 의해 구현된 인터페이스이다. API는 API-호출 컴포넌트와 API-구현 컴포넌트 사이에 전달되는 하나 이상의 파라미터를 정의할 수 있다.
API는 (제3자 개발자일 수 있는) API-호출 컴포넌트의 개발자가 API-구현 컴포넌트에 의해 제공된 특정 기능을 이용하게 해준다. 하나의 API-호출 컴포넌트가 있을 수 있거나 하나보다 많은 그러한 컴포넌트가 있을 수 있다. API는 애플리케이션으로부터의 서비스 요청을 지원하기 위해 컴퓨터 시스템 또는 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 OS에서 실행하는 애플리케이션이 그러한 API들 중 하나 이상을 호출할 수 있도록 하는 다중 API를 구비할 수 있고, (프로그램 라이브러리와 같은) 서비스는 그러한 서비스를 이용하는 애플리케이션이 그러한 API들 중 하나 이상을 호출하도록 하는 다중 API를 구비할 수 있다. API는 애플리케이션의 구축시 해석되거나 컴파일될 수 있는 프로그래밍 언어로 지정될 수 있다.
일부 실시예에서, API-구현 컴포넌트는 하나보다 많은 API를 제공할 수 있으며, 각각은 API-구현 컴포넌트에 의해 구현된 기능의 다른 뷰(view)를 제공하거나 그러한 기능의 다른 특징에 액세스하는 다른 특징을 갖는다. 예를 들어, API-구현 컴포넌트의 하나의 API는 제1 기능 집합을 제공할 수 있고 제3자 개발자에게 노출될 수 있으며, API-구현 컴포넌트의, 또 다른 API는 은폐되고(노출되지 않고) 제1 기능 집합의 부분 집합을 제공하고 또한 제1 기능 집합에 존재하지 않는 테스팅 또는 디버깅 기능과 같은 또 다른 기능 집합을 제공할 수 있다. 다른 실시예에서, API-구현 컴포넌트는 자체적으로 기본적인 API를 통해 하나 이상의 다른 컴포넌트를 호출할 수 있고 따라서 API-호출 컴포넌트와 API-구현 컴포넌트 둘 다가 될 수 있다.
API는 API-구현 컴포넌트의 특정 기능에 액세스하고 이를 이용할 때 API-호출 컴포넌트가 이용하는 언어 및 파라미터를 정의한다. 예를 들어, API-호출 컴포넌트는 API에 의해 노출된 (예를 들어 기능 또는 방법 호출에 의해 구현된) 하나 이상의 API 호출 또는 인보케이션(invocations)을 통해 API-구현 컴포넌트의 특정 기능에 액세스하고 파라미터를 이용하는 데이터 및 제어 정보를 API 호출 또는 인보케이션을 통해 전달한다. API-구현 컴포넌트는 API-호출 컴포넌트로부터의 API 호출에 응답하는 값을 API를 통해 리턴할 수 있다. API가 API 호출의 구문 및 결과(예를 들어, API 호출 인보크 방법 및 API 호출 대상)를 정의하지만, API는 API 호출이 API 호출에 의해 지정된 기능을 달성하는 방법을 밝히지 않을 수 있다. 다양한 API 호출이 호출(API-호출 컴포넌트) 및 API-구현 컴포넌트 사이에 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통해 전달된다. API 호출을 전달하는 것은 기능 호출 또는 메시지를 발행하는 것, 개시하는 것, 인보크하는 것, 호출하는 것, 수신하는 것, 리턴하는 것, 또는 그에 응답하는 것을 포함할 수 있고; 다시 말하면, 전달하는 것은 API-호출 컴포넌트 또는 API-구현 컴포넌트 중 어느 하나에 의한 동작을 기술할 수 있다. API의 기능 호출 또는 다른 인보케이션은 파라미터 리스트 또는 다른 구조를 통해 하나 이상의 파라미터를 송수신할 수 있다. 파라미터는 상수, 키, 데이터 구조, 객체, 객체 클래스, 변수, 데이터 유형, 포인터, 어레이, 리스트 또는 함수 또는 메서드에의 포인터 또는 API를 통해 전달될 데이터 또는 다른 항목을 참조하기 위한 다른 방식일 수 있다.
또한, 데이터 유형 또는 클래스는 API에 의해 제공될 수 있고 API-구현 컴포넌트에 의해 구현될 수 있다. 따라서, API-호출 컴포넌트는 API에서 제공된 정의를 이용하여 그러한 유형 또는 클래스의 변수를 선언하거나, 그에 대한 포인터를 이용하거나, 그의 상수 값을 이용하거나 인스턴스화할 수 있다.
일반적으로, API는 API-구현 컴포넌트에 의해 제공된 서비스 또는 데이터에 액세스하거나 API-구현 컴포넌트에 의해 제공된 연산 또는 계산의 성능을 개시하는데 사용될 수 있다. 예를 들면, API-구현 컴포넌트 및 API-호출 컴포넌트는 각각 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 또는 다른 모듈 중 어느 하나일 수 있다(API-구현 컴포넌트 및 API-호출 컴포넌트는 동일하거나 상이한 형태의 모듈일 수 있음이 이해되어야 한다). API-구현 컴포넌트는 경우에 따라 적어도 부분적으로 펌웨어, 마이크로코드, 또는 다른 하드웨어 로직으로 구현될 수 있다. 일부 실시예에서, API는 클라이언트 프로그램이 소프트웨어 개발 키트(SDK) 라이브러리에 의해 제공된 서비스를 이용하도록 할 수 있다. 다른 실시예에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공된 API를 이용할 수 있다. 이러한 실시예에서, 애플리케이션 또는 클라이언트 프로그램은 SDK에 의해 제공되고 API에 의해 제공된 함수 또는 메서드에의 호출을 포함하거나 SDK에서 정의되고 API에 의해 제공된 데이터 유형들 또는 객체들을 이용할 수 있다. 애플리케이션 프레임워크는 이러한 실시예에서 프레임워크에 의해 정의된 다양한 이벤트에 응답하는 프로그램에 대한 메인 이벤트 루프를 제공할 수 있다. API는 애플리케이션이 애플리케이션 프레임워크를 이용하여 이벤트 및 이벤트에 대한 응답을 지정하도록 할 수 있다. 일부 구현에서, API 호출은 입력 기능 및 상태, 출력 기능 및 상태, 처리 기능, 전력 상태, 저장 용량 및 상태, 통신 기능 등과 같은 특징과 관련된 것들을 포함하여 하드웨어 장치의 기능 또는 상태를 애플리케이션에 보고할 수 있고, API는 부분적으로, 펌웨어, 마이크로코드, 또는 부분적으로 하드웨어 컴포넌트에서 실행하는 다른 저레벨 로직에 의해 구현될 수 있다.
API-호출 컴포넌트는 (즉, API-구현 컴포넌트와 동일한 데이터 처리 시스템 상의) 로컬 컴포넌트 또는 API를 통해 네트워크를 경유하여 API-구현 컴포넌트와 통신하는 (즉, API-구현 컴포넌트와 다른 데이터 처리 시스템 상의) 원격 컴포넌트일 수 있다. API-구현 컴포넌트는 또한 API-호출 컴포넌트로서 작용할 수 있고(즉, 그것은 다른 API-구현 컴포넌트에 의해 노출된 API에 API 호출을 할 수 있다) API-호출 컴포넌트 또한 다른 API-호출 컴포넌트에 노출된 API를 구현하여 API-구현 컴포넌트로서 작용할 수 있음이 이해되어야 한다.
API는 상이한 프로그래밍 언어로 기록된 다중 API-호출 컴포넌트가 API-구현 컴포넌트와 통신하도록 할 수 있지만(따라서 API는 API-구현 컴포넌트와 API-호출 컴포넌트 사이에서 호출 및 리턴을 변환하는 기능을 포함할 수 있지만); API는 특정한 프로그래밍 언어로 구현될 수 있다. API-호출 컴포넌트는 일 실시예에서 다른 제공자들로부터의 API들 이를테면 OS 제공자로부터의 API 집합 및 플러그인 제공자로부터의 또 다른 API 집합 및 또 다른 제공자(예를 들어, 소프트웨어 라이브러리의 제공자) 또는 또 다른 API 집합의 생성자로부터의 또 다른 API 집합을 호출할 수 있다.
도 19는 본 발명의 일부 실시예에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다. 도 19에 도시된 바와 같이, API 아키텍처(1800)는 API(1820)를 구현하는 API-구현 컴포넌트(1810)(예를 들어, 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)을 포함한다. API(1820)는 API-호출 컴포넌트(1830)에 의해 이용될 수 있는 API-구현 컴포넌트의 하나 이상의 함수, 메서드, 클래스, 객체, 프로토콜, 데이터 구조, 포맷 및/또는 다른 기능을 지정한다. API(1820)는 API-구현 컴포넌트의 기능이 API-호출 컴포넌트에서 파라미터를 수신하는 방법과 그 기능이 API-호출 컴포넌트로 결과를 리턴하는 방법을 지정하는 적어도 하나의 호출 규약을 지정할 수 있다. API-호출 컴포넌트(1830)(예를 들어, 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는 API(1820)를 통한 API 호출이 API(1820)에 의해 지정된 API-구현 컴포넌트(1810)의 기능에 액세스하고 이를 이용하도록 한다. API-구현 컴포넌트(1810)는 API 호출에 응답하는 값을 API(1820)를 통해 API-호출 컴포넌트(1830)로 리턴할 수 있다.
API-구현 컴포넌트(1810)는 API(1820)를 통해 지정되지 않고 API-호출 컴포넌트(1830)에 이용가능하지 않는 추가 함수, 메서드, 클래스, 데이터 구조, 및/또는 다른 기능을 포함할 수 있음이 인식될 것이다. API-호출 컴포넌트(1830)는 API-구현 컴포넌트(1810)와 동일한 시스템에 있을 수 있거나 원격으로 배치되어 API(1820)를 이용하여 네트워크를 통해 API-구현 컴포넌트(1810)에 액세스할 수 있다는 것을 이해해야 한다. 도 19가 API(1820)와 상호 작용하는 단일 API-호출 컴포넌트(1830)를 예시하지만, API-호출 컴포넌트(1830)와 다른 언어(또는 동일 언어)로 작성될 수 있는 다른 API-호출 컴포넌트들도 API(1820)를 이용할 수 있음이 이해되어야 한다.
API-구현 컴포넌트(1810), API(1820), 및 API-호출 컴포넌트(1830)는 기계(예를 들어, 컴퓨터 또는 다른 데이터 처리 시스템)에 의해 판독가능한 형태로 정보를 저장하는 어떤 메커니즘이라도 포함하는 기계 판독가능한 비일시적인 저장 매체에 저장될 수 있다. 예를 들어, 기계 판독가능한 매체는 자기 디스크, 광학 디스크, 랜덤 액세스 메모리; 판독 전용 메모리, 플래시 메모리 장치 등을 포함한다.
예시적인 실시예인 도 20("소프트웨어 스택")에서, 애플리케이션은 여러 서비스 API를 이용하여 서비스 1 또는 2에 그리고 OS API를 이용하여 운영 체제(OS)에 호출을 할 수 있다. 서비스 1 및 2는 몇몇 OS API를 이용하여 OS에 호출을 할 수 있다.
서비스 2가 두 개의 API를 갖고, 그 중 하나(서비스 2 API 1)가 애플리케이션 1에서 호출을 수신하고 값을 그 애플리케이션 1로 리턴하며 다른 하나(서비스 2 API 2)가 애플리케이션 2에서 호출을 수신하고 값을 그 애플리케이션 2로 리턴한다는 것을 주목하자. (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 1은 OS API 1로 호출을 하고 그로부터 리턴된 값을 수신하고, (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 2는 OS API 1 및 OS API 2 둘 다로 호출을 하고 그로부터 리턴된 값을 수신한다. 애플리케이션 2는 OS API 2로 호출을 하고 그로부터 리턴된 값을 수신한다.
본 명세서에서 "일 실시예" 또는 "하나의 실시예"라는 언급은 그 실시예와 관련하여 설명된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함된다는 것을 의미한다. 본 명세서의 여러 곳에서 "일 실시예에서"라는 문구가 나온다고 반드시 모두가 동일한 실시예를 언급하는 것은 아니다.
전술한 명세서에서, 본 발명은 본 발명의 구체적인 실시예들을 참조하여 설명되었다. 그러나, 본 발명의 더 넓은 정신 및 범주에서 벗어나지 않고 다양한 변형 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미라기보다 예시적인 것으로 간주되어야 한다.
      
부록
다음의 부록은 본 발명의 특정 실시예에 따른 프로토콜 드래프트 스펙(draft specification)이다. 본 부록에서 특정 키워드(예를 들어, MUST, MUST NOT, SHALL, SHALL NOT 등)의 사용은 이러한 특정 실시예에 적용되고 본 명세서에 설명된 다른 실시예에는 적용되지 않음이 이해될 것이다.
HTTP 라이브 스트리밍
초안-판토스-http-라이브-스트리밍-06
요약
본 서류는 멀티미디어 데이터의 무제한 스트림을 전달하기 위한 프로토콜을 기술한다. 이것은 파일의 데이터 포맷과 서버(발신기)에서 취할 동작 및 스트림의 클라이언트(수신기)를 지정한다. 이것은 이 프로토콜의 버전 3을 기술한다.
목차
1. 소개
2. 개요
3. 재생 리스트 파일
3.1. 소개
3.2. 속성 리스트
3.3. 새로운 태그
3.3.1. EXT-X-TARGETDURATION
3.3.2.  EXT-X-MEDIA-SEQUENCE
3.3.3.  EXT-X-KEY
3.3.4.  EXT-X-PROGRAM-DATE-TIME
3.3.5.  EXT-X-ALLOW-CACHE
3.3.6.  EXT-X-PLAYLIST-TYPE
3.3.7.  EXT-X-ENDLIST
3.3.8.  EXT-X-STREAM-INF
3.3.9.  EXT-X-DISCONTINUITY
3.3.10. EXT-X-VERSION
4. 미디어 파일
5. 키 파일
5.1. 소개
5.2. AES-128의 IV
6. 클라이언트/서버 동작
6.1. 소개
6.2. 서버 프로세스
6.2.1. 소개
6.2.2. 슬라이딩 윈도우 재생 리스트
6.2.3. 미디어 파일 암호화
6.2.4. 변형 스트림 제공
6.3. 클라이언트 프로세스
6.3.1. 소개
6.3.2. 재생 리스트 파일의 로딩
6.3.3. 재생 리스트 파일의 재생
6.3.4. 재생 리스트 파일의 재로딩
6.3.5. 로드할 다음 파일의 결정
6.3.6. 암호화된 미디어 파일의 암호 해독
7. 프로토콜 버전 호환성
8. 예
8.1. 소개
8.2. 간단한 재생 리스트 파일
8.3. HTTPS를 이용한 슬라이딩 윈도우 재생 리스트
8.4. 암호화된 미디어 파일을 갖는 재생 리스트 파일
8.5. 변형 재생 리스트 파일
9. 보안 고려 사항
10. 참고 문헌
10.1. 규범적 참고 문헌
10.2. 유용한 참고 문헌
1. 소개
본 문서는 멀티미디어 데이터의 무제한 스트림을 전달하기 위한 프로토콜을 기술한다. 이 프로토콜은 미디어 데이터의 암호화와 스트림의 대안적인 버전(예를 들어, 비트 레이트)의 제공을 지원한다. 미디어 데이터는 생성 후 곧 바로 전송될 수 있어, 준 실시간으로 재생이 가능하게 된다. 데이터는 일반적으로 HTTP[RFC2616]을 통해 전달된다.
HTTP와 같은 관련 표준을 기술하는 부수적인 참고 문헌은 섹션 11에 열거되어 있다.
2. 개요
멀티미디어 프리젠테이션은 URI[RFC3986]에 의해 미디어 URI 및 정보 태그의 순서화된 리스트인 재생 리스트 파일로 지정된다. 각 미디어 URI는 단일 인접 스트림의 세그먼트인 미디어 파일을 지칭한다.
스트림을 재생하기 위해, 클라이언트는 먼저 재생 리스트 파일을 얻고 이어서 재생 리스트 내에 있는 각 미디어 파일을 얻고 재생한다. 클라이언트는 본 문서에 기술된 바와 같은 재생 리스트 파일을 재로드하여 추가 세그먼트들을 찾는다.
본 문서에서 핵심어/키워드 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", RECOMMENDED", "MAY", 및 "OPTIONAL"은 RFC 2119[RFC2119]에 기술된 바와 같이 해석되어야 한다.
3. 재생 리스트 파일
3.1. 소개
재생 리스트는 확장형 M3U 재생 리스트 파일[M3U]이어야 한다(MUST). 본 문서는 추가 태그를 정의하여 M3U 파일 포맷을 확장한다.
M3U 재생 리스트는 개별 라인으로 이루어진 텍스트 파일이다. 라인들은 단일 LF 문자 또는 CR 문자와 그 뒤에 오는 LF 문자에 의해 종단된다. 각 라인은 URI이거나, 공백이거나, 또는 주석 문자 '#'로 시작한다. 공백 라인들은 무시된다. 여백(space)은 그것이 명백히 명시된 요소들 외에는 존재하지 않아야 한다(MUST NOT).
URI 라인은 미디어 파일 또는 변형 재생 리스트 파일을 식별한다(섹션 3.3.8 참조).
URI는 상대적일 수 있다(MAY). 상대적인 URI는 이를 포함하는 재생 리스트 파일의 URI에 대해 분석(resolve)되어야 한다(MUST).
주석 문자 #로 시작하는 라인들은 주석 또는 태그이다. 태그는 #EXT로 시작한다. '#'로 시작하는 모든 다른 라인들은 주석이고 무시되어야 한다(SHOULD).
재생 리스트 파일의 지속 시간은 그 안에 있는 미디어 파일들의 지속 시간의 합이다.
명칭이 .m3u8로 끝나고 및/또는 HTTP 콘텐츠 유형 "application/vnd.apple.mpegurl"을 갖는 M3U 재생 리스트 파일은 UTF-8[RFC3629]로 인코드된다. 명칭이 .m3u로 끝나고 및/또는 HTTP 콘텐츠 유형[RFC2616] "audio/mpegurl"을 갖는 파일은 US-ASCII[US_ASCII]로 인코드된다.
재생 리스트 파일은 .m3u로 끝나고 및/또는 콘텐츠 유형 "application/vnd.apple.mpegurl"(HTTP를 통해 전송되는 경우)를 갖는 명칭을 가져야 하거나, .m3u로 끝나고 및/또는 HTTP 콘텐츠 유형 "audio/mpegurl"(호환성을 위해)을 갖는 명칭을 가져야 한다(MUST).
확장형 M3U 파일 포맷은 두 개의 태그, 즉 EXTM3U 및 EXTINF를 정의한다. 확장형 M3U 파일은 #EXTM3U이어야 하는(MUST) 그의 제1 라인에 의해 기본 M3U 파일과 구별된다.
EXTINF는 그 다음에 오는 URI에 의해 식별되는 미디어 파일을 기술하는 기록 표시자이다. 각 미디어 파일 URI는 EXTINF 태그에 뒤이어 나와야 한다(MUST). 그의 포맷은 다음과 같다:
#EXTINF:<duration>,<title>
"duration"은 초 단위의 미디어 파일의 지속 시간을 지정하는 정수 또는 부동 소수점 수이다. 정수 지속 시간은 가장 가까운 정수로 반올림되어야 한다(SHOULD). 지속 시간은 재생 리스트 파일의 프로토콜 버전이 3 미만인 경우 정수이어야 한다(MUST). 콤마에 뒤이어 오는 라인의 나머지는 미디어 파일의 제목으로, 이는 미디어 세그먼트의 선택적인 인간 판독가능한 유용한 제목이다.
본 문서는 다음과 같은 새로운 태그를 정의한다: EXT-X-TARGETDURATION, EXT-X-MEDIA-SEQUENCE, EXT-X-KEY, EXT-X-PROGRAM-DATE-TIME, EXT-X-ALLOW-CACHE, EXT-X-PLAYLIST-TYPE, EXT-X-STREAM-INF, EXT-X-ENDLIST, EXT-X-DISCONTINUITY, 및 EXT-X-VERSION.
3.2. 속성 리스트
특정 확장형 M3U 태그는 속성 리스트인 값들을 갖는다. 속성 리스트는 여백(whitespace)이 없는 속성/값 쌍들의 콤마로 분리된 리스트이다.
속성/값 쌍은 다음과 같은 구문을 갖는다:
AttributeName=AttributeValue
AttributeName은 집합 [A-Z]로부터의 문자들을 포함하는 따옴표가 없는 문자열이다.
AttributeValue는 다음 중 하나이다:
o 십진 정수: 기수-10 연산에서 정수를 표현하는 집합 [0-9]로부터의 따옴표가 없는 문자열(unquoted string of characters).
o 16진 정수: 기수-16 연산에서 정수를 표현하는 0x 또는 0X가 앞에 붙은 집합 [0-9] 및 [A-F]로부터의 따옴표가 없는 문자열.
o 10진 부동 소수점: 기수-10 연산에서 부동 소수점 수를 표현하는 '.' 및 집합 [0-9]로부터의 따옴표가 없는 문자열.
o 따옴표가 있는 문자열(quoted-string): 이중 따옴표(") 쌍 내의 문자열. 이 문자열에서 허용된 문자 집합 및 확장(escaping) 특수 문자에 대한 임의의 규칙이 속성 정의에 의해 지정/명시되지만, 임의의 이중 따옴표(") 문자 및 임의의 복귀(carriage-return) 또는 라인피드(linefeed)는 항상 확장 비트열(escape sequence)로 대체될 수 있다.
o 열거 문자열(enumerated-string): 속성에 의해 명백히 정의된 집합으로부터의 따옴표가 없는 문자열. 열거 문자열은 결코 이중 따옴표("), 콤마(,), 또는 여백을 포함하지 않을 것이다.
o 십진 해상도(decimal-resolution): 수평 및 수직 픽셀 치수를 나타내는 "x" 문자로 분리된 두 개의 10진 정수.
소정의 AttributeName에 대한 AttributeValue의 유형은 속성 정의에 의해 지정된다.
소정의 AttributeName는 소정의 속성 리스트에 한번보다 많이 나타나지 않아야 한다(MUST NOT).
인식되지 않는 AttributeName를 갖는 속성/값 쌍은 클라이언트에 의해 무시되어야 한다(MUST).
인식되지 않는 값을 포함하는 유형 열거 문자열의 속성/값 쌍은 클라이언트에 의해 무시되어야 한다(SHOULD).
3.3. 새로운 태그
3.3.1. EXT-X-TARGETDURATION
EXT-X-TARGETDURATION 태그는 최대 미디어 파일 지속 시간을 지정한다. 재생 리스트 파일 내의 각 미디어 파일의 EXTINF 지속 시간은 타겟 지속 시간보다 작거나 같아야 한다(MUST). 이 태그는 재생 리스트 파일에 한번 나타나야 한다(MUST). 그의 포맷은 다음과 같다:
#EXT-X-TARGETDURATION:<s>
여기서 s는 초 단위의 타겟 지속 시간을 나타내는 정수이다.
3.3.2. EXT-X-MEDIA-SEQUENCE
재생 리스트 내의 각 미디어 파일 URI는 고유 정수 시퀀스 번호를 갖는다. URI의 시퀀스 번호는 그것보다 앞선 URI의 시퀀스 번호에 1을 더한 것과 같다. EXT-X-MEDIA-SEQUENCE 태그는 재생 리스트 파일 내에 나타나는 첫 번째 URI의 시퀀스 번호를 나타낸다. 그의 포맷은 다음과 같다:
#EXT-X-MEDIA-SEQUENCE:<number>
재생 리스트 파일은 하나보다 많은 EXT-X-MEDIA-SEQUENCE 태그를 포함하지 않아야 한다(MUST NOT). 만일 재생 리스트 파일이 EXT-X-MEDIA-SEQUENCE 태그를 포함하지 않는다면, 재생 리스트 내의 첫 번째 URI의 시퀀스 번호는 0으로 간주될 것이다(SHALL).
미디어 파일의 시퀀스 번호는 그의 URI에 나타날 필요가 없다.
EXT-X-MEDIA-SEQUENCE 태그의 처리에 관한 정보에 대해서는 섹션 6.3.2 및 섹션 6.3.5 참조.
3.3.3. EXT-X-KEY
미디어 파일은 암호화될 수 있다(MAY). EXT-X-KEY 태그는 그것에 뒤이어 오는 미디어 파일을 암호 해독하는데 필요한 정보를 제공한다. 그의 포맷은 다음과 같다:
#EXT-X-KEY:<attribute-list>
다음과 같은 속성들이 정의된다:
METHOD 속성은 암호화 방법을 지정/명시한다. 그것은 열거 문자열 유형이다. 두 가지 방법이 정의된다: NONE 및 AES-128.
NONE의 암호화 방법은 미디어 파일들이 암호화되지 않음을 의미한다. 만일 암호화 방법이 NONE이라면, URI 및 IV 속성이 존재하지 않아야 한다(MUST NOT).
AES-128의 암호화 방법은 미디어 파일들이 128 비트 키 및 PKCS7 패팅[RFC5652]을 갖는 어드밴스드 암호화 표준[AES_128]을 이용하여 암호화됨을 의미한다. 만일 암호화 방법이 AES-128이라면, URI 속성은 존재하여야 한다(MUST). IV 속성은 존재할 수 있다(MAY); 섹션 5.2 참조.
URI 속성은 키를 얻는 방법을 지정한다. 그의 값은 키에 대해 URI[RFC3986]를 포함하는 따옴표가 있는 문자열이다.
IV 속성은, 만일 존재한다면, 키와 함께 이용될 초기화 벡터를 지정한다. 그의 값은 16진 정수이다. IV 속성은 프로토콜 버전 2에 나타났다.
새로운 EXT-X-KEY는 임의의 이전의 EXT-X-KEY를 대체한다.
만일 재생 리스트 파일이 EXT-X-KEY 태그를 포함하지 않는다면, 미디어 파일은 암호화되지 않는다.
키 파일의 포맷에 대해서는 섹션 5 참조하고, 미디어 파일 암호화에 대한 추가 정보에 대해서는 섹션 5.2, 섹션 6.2.3 및 섹션 6.3.6 참조.
3.3.4. EXT-X-PROGRAM-DATE-TIME
EXT-X-PROGRAM-DATE-TIME 태그는 다음 미디어 파일의 처음을 절대 날짜 및/또는 시간과 연관시킨다. 이 날짜/시간 표현은 ISO/IEC 8601:2004[ISO_8601]이고 시간 영역을 표시하여야 한다(SHOULD). 예를 들면:
#EXT-X-PROGRAM-DATE-TIME:<YYYY-MM-DDThh:mm:ssZ>
EXT-X-PROGRAM-DATE-TIME 태그에 대한 더 많은 정보에 대해서는 섹션 6.2.1 및 섹션 6.3.3 참조
3.3.5. EXT-X-ALLOW-CACHE
EXT-X-ALLOW-CACHE 태그는 클라이언트가 나중의 재생을 위해 다운로드된 미디어 파일을 캐싱할 수 있는지(MAY) 캐싱하지 않아야 하는지(MUST NOT)를 표시한다. 그것은 재생 리스트 파일 내 어디에서나 일어날 수 있고(MAY); 그것은 한번보다 많이 일어나지 않아야 한다(MUST NOT). EXT-X-ALLOW-CACHE 태그는 재생 리스트 내의 모든 세그먼트에 적용된다. 그것의 포맷은 다음과 같다:
#EXT-X-ALLOW-CACHE:<YES|NO>
EXT-X-ALLOW-CACHE 태그에 대한 더 많은 정보에 대해서는 섹션 6.3.3 참조.
3.3.6. EXT-X-PLAYLIST-TYPE
EXT-X-PLAYLIST-TYPE 태그는 재생 리스트 파일에 대한 변이성(mutability) 정보를 제공한다. 그것은 선택 사양이다. 그의 포맷은 다음과 같다:
#EXT-X-PLAYLIST-TYPE:<EVENT|VOD>
섹션 6.2.1은 EXT-X-PLAYLIST-TYPE 태그의 함의를 정의한다.
3.3.7. EXT-X-ENDLIST
EXT-X-ENDLIST 태그는 재생 리스트 파일에 더 이상의 미디어 파일이 추가되지 않을 것임을 표시한다. 그것은 재생 리스트 파일 내 어디에서나 일어날 수 있고(MAY); 그것은 한번보다 많이 일어나지 않아야 한다(MUST NOT). 그의 포맷은 다음과 같다:
#EXT-X-ENDLIST
3.3.8. EXT-X-STREAM-INF
EXT-X-STREAM-INF 태그는 재생 리스트 파일 내의 다음 URI가 또 다른 재생 리스트 파일을 식별한다는 것을 표시한다. 그의 포맷은 다음과 같다:
#EXT-X-STREAM-INF:<attribute-list>
<URI>
다음과 같은 속성들이 정의된다:
BANDWIDTH
그 값은 초당 10진 정수의 비트이다. 그것은 재생 리스트에 나타나거나 나타날 컨테이너 오버헤드를 포함하도록 산출된 각 미디어 파일의 전체 비트 레이트의 상한이어야 한다(MUST).
모든 EXT-X-STREAM-INF 태그는 BANDWIDTH 속성을 포함해야 한다(MUST).
PROGRAM-ID
그 값은 재생 리스트 파일의 범위 내에서 특정 프리젠테이션을 고유하게 식별하는 10진 정수이다.
재생 리스트 파일은 동일한 프리젠테이션의 다른 인코딩을 식별하는 동일한 PROGRAM-ID을 갖는 다중 EXT-X-STREAM-INF 태그를 포함할 수 있다(MAY). 이러한 변형 재생 리스트는 추가적인 EXT-X-STREAM-INF 태그를 포함할 수 있다(MAY).
CODECS
그 값은 콤마로 분리된 포맷 리스트를 포함하는 따옴표가 있는 문자열이고, 각 포맷은 재생 리스트 파일 내의 미디어 파일에 존재하는 미디어 샘플 유형을 지정한다. 유효한 포맷 식별자는 RFC 4281[RFC4281]에 의해 정의된 ISO 파일 포맷 명칭 공간에서의 식별자이다.
모든 EXT-X-STREAM-INF 태그는 CODECS 속성을 포함하여야 한다(SHOULD).
RESOLUTION
그 값은 스트림 내의 비디오의 근사 인코드된 수평 및 수직 해상도를 기술하는 10진 해상도이다.
3.3.9. EXT-X-DISCONTINUITY
EXT-X-DISCONTINUITY 태그는 그에 뒤이어 오는 미디어 파일과 그보다 앞선 것 사이의 인코딩 불연속성을 표시한다. 변할 수 있는(MAY) 특성 집합은 다음과 같다:
o 파일 포맷
o 트랙의 수 및 유형
o 인코딩 파라미터들
o 인코딩 시퀀스
o 타임스탬프 시퀀스
그의 포맷은 다음과 같다:
#EXT-X-DISCONTINUITY
EXT-X-DISCONTINUITY 태그에 대한 더 많은 정보에 대해서는 섹션 4, 섹션 6.2.1, 및 섹션 6.3.3 참조
3.3.10. EXT-X-VERSION
EXT-X-VERSION 태그는 재생 리스트 파일의 호환성 버전을 표시한다. 재생 리스트 파일, 그와 연관된 미디어, 및 그의 서버는 태그 값으로 표시된 프로토콜 버전을 기술하는 본 문서의 가장 최근 버전의 모든 규정에 따라야 한다(MUST).
그의 포맷은 다음과 같다:
#EXT-X-VERSION:<n>
여기서 n은 프로토콜 버전을 나타내는 정수이다.
재생 리스트 파일은 하나보다 많은 EXT-X-VERSION 태그를 포함하지 않아야 한다(MUST NOT). EXT-X-VERSION 태그를 포함하지 않는 재생 리스트 파일은 이 프로토콜의 버전 1에 따라야 한다(MUST).
4. 미디어 파일
재생 리스트 파일 내의 각 미디어 파일 URI는 전체 프리젠테이션의 세그먼트인 미디어 파일을 식별해야 한다(MUST). 각 미디어 파일은 MPEG-2 전송 스트림 또는 MPEG-2 오디오 기본 스트림[ISO_13818]으로 포맷화되어야 한다(MUST).
전송 스트림 파일은 단일 MPEG-2 프로그램을 포함하여야 한다(MUST). 각 파일의 처음에는 프로그램 관련 테이블과 프로그램 맵 테이블이 존재하여야 한다(SHOULD). 비디오를 포함하는 파일은 적어도 하나의 키 프레임과 비디오 인코더를 완전히 초기화하기에 충분한 정보를 가지고 있어야 한다(SHOULD).
재생 리스트 내의 미디어 파일은 이것이 재생 리스트 파일에서 처음으로 나타나는 미디어 파일이 아닌 한 또는 이것이 그 앞에 EXT-X-DISCONTINUITY 태그가 붙어 있지 않은 한 이전의 시퀀스 번호를 갖는 미디어 파일의 끝에 있는 인코드된 스트림의 계속이어야 한다(MUST).
클라이언트는 특정 유형(예를 들어, 오디오 또는 비디오)의 다중 트랙을 다루도록 준비되어 있어야 한다(SHOULD). 다른 선호도를 갖지 않는 클라이언트는 그것이 재생할 수 있는 가장 낮은 수치 PID를 갖는 것을 선택하여야 한다(SHOULD).
클라이언트는 이들이 인식하지 못하는 전송 스트림 내의 개인 스트림을 무시해야 한다(MUST).
미디어 파일 내의 스트림 내와 다중 미디어 파일에 걸쳐 대응하는 스트림들 사이에 있는 샘플들에 대한 인코딩 파라미터는 일정하게 유지되어야 한다(SHOULD). 그러나, 클라이언트는, 예를 들어, 해상도 변화를 수용하도록 비디오 콘텐츠를 크기 조정함으로써 이들이 직면하는 인코딩 변화를 다루어야 한다(SHOULD).
5. 키 파일
5.1. 소개
URI 속성을 갖는 EXT-X-KEY 태그는 키 파일을 식별한다. 키 파일은 재생 리스트 내의 후속 미디어 파일을 암호 해독하는데 사용되어야 하는(MUST) 암호 키를 포함한다.
AES-128 암호화 방법은 16 옥텟 키를 이용한다. 키 파일의 포맷은 단순히 이진 포맷의 이러한 16 옥텟의 패킷화된 어레이이다.
5.2. AES-128의 IV
128 비트 AES는 암호화 및 암호 해독시 동일한 16 옥텟 초기화 벡터(IV)가 공급될 것을 요구한다. 이 IV의 변경은 암호의 강도를 증가시킨다.
만일 EXT-X-KEY 태그가 IV 속성을 갖는다면, 구현은 그 키를 이용하여 암호화 또는 암호 해독할 때 속성 값을 IV로서 이용하여야 한다(MUST). 그 값은 128 비트 16진수로 해석되어야 하고(MUST) 그 값 앞에 0x 또는 0X가 붙어야 한다(MUST).
만일 EXT-X-KEY 태그가 IV 속성을 갖지 않는다면, 구현은 그 미디어 파일을 암호화 또는 암호 해독할 때 미디어 파일의 시퀀스 번호를 IV로서 이용하여야 한다(MUST). 시퀀스 번호의 빅 엔디언(big-endian) 이진 표현은 16 옥텟 버퍼에 배치되고 (왼쪽에) 0으로 패딩될 것이다(SHALL).
6. 클라이언트/서버 동작
6.1. 소개
이 섹션은 서버가 어떻게 재생 리스트 및 미디어 파일을 생성하는지와 클라이언트가 어떻게 이들을 다운로드하여 재생하여야 하는지에 대해 기술한다.
6.2. 서버 프로세스
6.2.1. 소개
MPEG-2 스트림의 생성은, 단순히 프리젠테이션을 포함하는 연속 스트림의 소스를 추정하는, 본 문서의 범위 밖에 있다.
서버는 스트림을 그 지속 시간이 일정한 타겟 지속 시간 이하인 개별 미디어 파일들로 분할해야 한다(MUST). 서버는 개별 미디어 파일들의 효과적인 디코드를 지원하는 지점에서, 예를 들어, 패킷 및 키 프레임 경계에서 스트림의 분할을 시도하여야 한다(SHOULD).
서버는 그의 클라이언트가 파일을 얻게 해주는 각 미디어 파일에 대한 URI를 생성해야 한다(MUST).
서버는 재생 리스트 파일을 생성해야 한다(MUST). 재생 리스트 파일은 섹션 3에 기술된 포맷에 따라야 한다(MUST). 서버가 이용가능하게 하고자 하는 각 미디어 파일에 대한 URI는 이것이 재생될 순서대로 재생 리스트 내에 나타나야 한다(MUST). 전체 미디어 파일은 그의 URI가 재생 리스트 파일 내에 있는 경우 클라이언트에게 이용가능해야 한다(MUST).
재생 리스트 파일은 EXT-X-TARGETDURATION 태그를 포함해야 한다(MUST). 그의 값은 재생 리스트 파일 내에 나타나거나 나타날 임의의 미디어 파일의 EXTINF 값 이상이어야 한다(MUST). 그의 값은 변경되지 않아야 한다(MUST NOT). 전형적인 타겟 지속 시간은 10초이다.
재생 리스트 파일은 스트림의 호환성 버전을 표시하는 하나의 EXT-X-VERSION 태그를 포함하여야 한다(SHOULD). 그의 값은 서버, 재생 리스트 파일, 및 연관된 미디어 파일들 모두가 따르는 가장 낮은 프로토콜 버전이어야 한다(MUST).
서버는 그의 클라이언트가 파일을 얻게 해주는 재생 리스트 파일에 대한 URI를 생성해야 한다(MUST).
만일 재생 리스트 파일이 HTTP에 의해 배포되는 경우, 서버는 "gzip" 콘텐츠 인코딩을 이용하려는 클라이언트 요청을 지원하여야 한다(SHOULD).
재생 리스트 파일에 대한 변경은 클라이언트의 관점에서 원자적으로 이루어져야 한다(MUST).
서버는 다음의 경우를 제외하고 재생 리스트 파일을 변경하지 않아야 한다(MUST NOT):
그것에 라인들을 부가하는 경우(섹션 6.2.1).
재생 리스트로부터 미디어 파일 URI들을 이들이 나타나는 순서대로 제거하고, 이와 함께 그러한 미디어 파일에만 적용되는 임의의 태그를 제거하는 경우(섹션 6.2.2).
EXT-X-MEDIA-SEQUENCE 태그의 값을 변경하는 경우(섹션 6.2.2).
EXT-X-STREAM-INF 태그를 추가하거나 제거하는 경우(섹션 6.2.4). 클라이언트는 변형 재생 리스트 파일을 재로드할 필요가 없으므로, 이들의 변경은 즉각적인 효과가 나타나지 않을 수 있다는 것을 주목하자.
재생 리스트에 EXT-X-ENDLIST 태그를 추가하는 경우(섹션 6.2.1).
또한, 재생 리스트 파일은 EVENT 또는 VOD 값을 갖는 EXT-X-PLAYLIST-TYPE 태그를 포함할 수 있다(MAY). 만일 그 태그가 존재하고 EVENT의 값을 갖는다면, 서버는 (그것에 라인들을 부가할 수 있기는(MAY) 하지만) 재생 리스트 파일의 임의의 부분을 변경하거나 삭제하지 않아야 한다(MUST NOT). 만일 그 태그가 존재하고 VOD 값을 갖는다면, 재생 리스트 파일은 변경되지 않아야 한다(MUST NOT).
재생 리스트 내의 모든 미디어 파일 URI 앞에 미디어 파일의 지속 시간을 표시하는 EXTINF 태그가 붙어야만 한다(MUST).
서버는 그의 URI 앞에 EXT-X-PROGRAM-DATE-TIME 태그를 붙임으로써 절대 날짜 및 시간을 미디어 파일과 관련시킬 수 있다(MAY). 날짜 및 시간의 값은 미디어의 타임라인을 탐색을 위한, 디스플레이를 위한, 또는 다른 목적을 위한 기초로서 이용될 수 있는 적절한 벽시계 시간에 유용하게 매핑한다. 만일 서버가 이러한 매핑을 제공한다면, 서버는 재생 리스트 파일 내의 모든 EXT-X-DISCONTINUITY 태그 뒤에 EXT-X-PROGRAM-DATE-TIME 태그를 위치시킨다.
만일 재생 리스트가 프리젠테이션의 최종 미디어 파일을 포함한다면, 재생 리스트 파일은 EXT-X-ENDLIST 태그를 포함하여야 한다(MUST).
만일 재생 리스트가 EXT-X-ENDLIST 태그를 포함하지 않는다면, 서버는 적어도 하나의 새로운 미디어 파일 URI를 포함하는 재생 리스트 파일의 새로운 버전을 이용가능하게 해야 한다(MUST). 그것은 재생 리스트 파일의 이전 버전이 이용가능하게 된 시간에 관련하여 이용가능해져야 한다(MUST): 그 시간 후 타겟 지속 시간의 1/2 이후, 및 그 시간 후 늦어도 타겟 지속 시간의 1.5배 이전.
만일 서버가 프리젠테이션 전체를 제거하고자 한다면, 서버는 재생 리스트 파일을 클라이언트가 이용할 수 없게 하여야 한다(MUST). 서버는 재생 리스트 파일 내의 모든 미디어 파일이 제거시 적어도 재생 리스트 파일의 지속 시간 동안 클라이언트가 이용할 수 있게 유지되도록 보장하여야 한다(SHOULD).
6.2.2. 슬라이딩 윈도 재생 리스트
서버는 미디어 파일의 유효성을 재생 리스트에 가장 최근에 추가된 것들로 제한할 수 있다(MAY). 그렇게 하기 위해, 재생 리스트 파일은 항상 정확히 하나의 EXT-X-MEDIA-SEQUENCE 태그를 포함하여야 한다(MUST ALWAYS). 그의 값은 재생 리스트 파일에서 제거되는 매 미디어 파일 URI마다 1이 증분되어야 한다(MUST).
미디어 파일 URI들은 이들이 추가된 순서대로 재생 리스트 파일에서 제거되어야 한다(MUST).
서버는 재생 리스트 파일의 지속 시간에서 미디어 파일의 지속 시간을 뺀 것이 타겟 지속 시간의 3배 미만이면 재생 리스트 파일에서 미디어 파일 URI를 제거하지 않아야 한다(MUST NOT).
서버가 재생 리스트에서 미디어 파일 URI를 제거할 때, 미디어 파일은 미디어 파일의 지속 시간에 미디어 파일이 나타난 가장 긴 재생 리스트 파일의 지속 시간을 더한 것과 같은 시간 기간 동안 클라이언트가 이용할 수 있게 유지되어야 한다(SHOULD).
만일 서버가 미디어 파일이 HTTP를 통해 클라이언트에게 전달된 후 이를 제거할 계획인 경우, 서버는 HTTP 응답이 계획한 존속 시간(time-to-live)을 반영한 만료 헤더(Expires header)를 포함하는 것을 보장하여야 한다(SHOULD).
6.2.3. 미디어 파일의 암호화
만일 미디어 파일이 암호화될 예정이면, 서버는 인가된 클라이언트가 암호 해독 키를 포함하는 키 파일을 얻게 해줄 URI를 정의하여야 한다(MUST). 키 파일은 섹션 5에 기술된 포맷에 따라야 한다(MUST).
서버는 키 응답에서 그 키가 캐싱될 수 있음을 표시하도록 HTTP 만료 헤더를 설정할 수 있다(MAY).
만일 암호화 METHOD가 AES-128이라면, AES-128 CBC 암호화가 개별 미디어 파일에 적용될 것이다(SHALL). 전체 파일이 암호화되어야 한다(MUST). 암호 블록 체이닝(Cipher Block Chaining)이 미디어 파일 전체에 걸쳐 적용되지 않아야 한다(MUST NOT). 암호화에 사용된 IV는 섹션 5.2에서 기술된 바와 같이 미디어 파일의 시퀀스 번호 또는 EXT-X-KEY 태그의 IV 속성 값이어야 한다(MUST).
서버는 상기 방법 및 재생 리스트 파일 내의 그의 URI에 가장 바로 앞선 EXT-X-KEY 태그에 의해 지정된 다른 속성을 이용하여 재생 리스트 내의 매 미디어 파일을 암호화하여야 한다(MUST). METHOD가 NONE인 EXT-X-KEY 태그가 선행하는, 또는 어떠한 EXT-X-KEY 태그도 선행하지 않는 미디어 파일들은 암호화되지 않아야 한다(MUST NOT).
서버는 재생 리스트 파일이 그 키를 이용하여 암호화된 미디어 파일에 대한 URI를 포함하는 경우 재생 리스트 파일에서 EXT-X-KEY 파일을 제거하지 않아야 한다(MUST NOT).
6.2.4. 변형 스트림의 제공
서버는 동일한 프리젠테이션의 상이한 인코딩을 제공하기 위해 다중 재생 리스트 파일을 제공할 수 있다(MAY). 만일 서버가 그렇게 한다면, 서버는 클라이언트가 인코딩 사이를 동적으로 전환하게 해주는 각 변형 스트림을 열거한 변형 재생 리스트 파일을 제공해야 한다(SHOULD).
변형 재생 리스트는 각 변형 스트림마다 EXT-X-STREAM-INF 태그를 포함해야 한다(MUST). 동일한 프리젠테이션에 대한 각 EXT-X-STREAM-INF 태그는 동일한 PROGRAM-ID 속성 값을 가져야 한다(MUST). 각 프리젠테이션에 대한 PROGRAM-ID 값은 변형 재생 리스트 내에서 고유해야 한다(MUST).
만일 EXT-X-STREAM-INF 태그가 CODECS 속성을 포함한다면, 그 속성 값은 재생 리스트 파일에 나타나거나 나타날 임의의 미디어 파일에 존재하는 [RFC4281]에 의해 정의된 모든 포맷을 포함해야 한다(MUST).
서버는 변형 스트림을 생성할 때 다음과 같은 제약 조건을 충족해야 한다(MUST):
각 변형 스트림은 스트림 불연속성을 포함하여 동일한 콘텐츠를 프리젠테이션해야 한다(MUST).
각 변형 재생 리스트 파일은 동일한 타겟 지속 시간을 가져야 한다(MUST).
하나의 변형 재생 리스트 파일에 나타나지만 또 다른 것에는 나타나지 않는 콘텐츠는 재생 리스트 파일의 처음 또는 끝에 나타나야 하고(MUST) 타겟 지속 시간보다 길지 않아야 한다(MUST NOT).
변형 스트림들 내의 매칭하는 콘텐츠는 매칭하는 타임스탬프들을 가져야 한다(MUST). 이는 클라이언트들이 스트림들을 동기화하게 해준다.
기본 오디오 스트림(Elementary Audio Stream) 파일은 소유자 식별자가"com.apple.streaming.transportStreamTimestamp"인 ID3 PRIV 태그[ID3]를 프리펜딩(prepending)함으로써 파일 내의 제1 샘플의 타임스탬프를 신호로 알려주어야 한다(MUST). 이진 데이터는 상위 31 비트가 0으로 설정된 빅 에디안 8 옥텟 수로 표현된 33 비트 MPEG-2 프로그램 기본 스트림 타임스탬프이어야 한다(MUST).
또한, 모든 변형 스트림은 동일한 인코드된 오디오 비트스트림을 포함해야 한다(SHOULD). 이는 클라이언트가 가청 글리칭(audible glitching) 없이 스트림 사이를 전환하게 해준다.
6.3. 클라이언트 프로세스
6.3.1. 개요
클라이언트가 재생 리스트 파일에 대한 URI를 얻는 방법은 본 문서의 범위 밖이고; 그렇게 했을 것으로 추정된다.
클라이언트는 URI로부터 재생 리스트 파일을 얻어야 한다(MUST). 만일 그렇게 얻은 재생 리스트 파일이 변형 재생 리스트라면, 클라이언트는 변형 재생 리스트에서 재생 리스트 파일을 얻어야 한다(MUST).
본 문서는 클라이언트에 의한 변형 스트림의 처리를 명시하지 않는다.
6.3.2. 재생 리스트 파일의 로딩
재생 리스트 파일이 재생 리스트 URI로부터 로드되거나 재로드될 때마다:
클라이언트는 재생 리스트 파일이 EXTM3U 태그로 시작하도록 보장하고 EXT-X-VERSION 태그(만일 존재한다면)가 클라이언트에 의해 지원된 프로토콜 버전을 지정하도록 보장해야 하고(MUST); 만일 그렇지 않다면, 클라이언트는 재생 리스트의 이용을 시도하지 않아야 한다(MUST NOT).
클라이언트는 그것이 인식하지 못한 임의의 태그 및 속성을 무시해야 한다(SHOULD).
클라이언트는 섹션 6.3.5에 기술된 바와 같이 로드할 다음 미디어 파일을 결정해야 한다(MUST).
만일 재생 리스트가 EXT-X-MEDIA-SEQUENCE 태그를 포함한다면, 클라이언트는 재생 리스트 파일이 로드된 시간에 재생 리스트 파일의 지속 시간을 더한 시간에 그 안의 각 미디어 파일이 이용가능하지 않게 될 것이라고 가정해야 한다(SHOULD). 재싱 리스트 파일의 지속 시간은 그 안의 미디어 파일들의 지속 기간들의 합이다.
6.3.3. 재생 리스트 파일의 재생
클라이언트는 재생이 시작될 때 재생 리스트에서 먼저 재생할 미디어 파일을 선택할 것이다. 만일 EXT-X-ENDLIST 태그가 존재하지 않고 클라이언트가 미디어를 규칙적으로(즉, 명목상 재생 속도에서 재생 리스트 순서로) 재생할 의도이면, 클라이언트는 재생 리스트 파일의 끝에서부터 세 개 미만의 타겟 지속 시간에서 시작하는 파일을 선택하지 않아야 한다(SHOULD NOT). 그렇게 하면 재생 스톨 현상(playback stalls)이 촉발될 수 있다.
규칙적인 재생을 달성하기 위해, 미디어 파일들은 이들이 재생 리스트 파일에 나타난 순서대로 재생되어야 한다(MUST). 클라이언트는 이용가능한 미디어를 규칙적인 재생, 랜덤 액세스, 및 트릭 모드를 포함하여 클라이언트가 원하는 어떤 방식으로든 프리젠테이션할 수 있다(MAY).
클라이언트는 EXT-X-DISCONTINUITY 태그에 뒤이어 오는 미디어 파일을 재생하기 전에 그의 파서(들) 및 디코더(들)를 리셋하도록 준비되어 있어야 한다(MUST).
클라이언트는 지연 및 처리율의 일시적인 변화를 보상하기 위해 중단되지 않는 재생을 위해 미디어 파일들이 요구되기 전에 미리 미디어 파일의 로드를 시도해야 한다(SHOULD).
만일 재생 리스트 파일이 EXT-X-ALLOW-CACHE 태그를 포함하고 그의 값이 NO라면, 클라이언트는 다운로드된 미디어 파일들이 재생된 후에 이들을 캐싱하지 않아야 한다(MUST NOT). 그렇지 않다면, 클라이언트는 나중의 재생을 위해 다운로드된 미디어 파일을 무기한 저장할 수 있다(MAY).
클라이언트는 프로그램 생성 시간(program origination time)을 사용자에게 표시하기 위해 EXT-X-PROGRAM-DATE-TIME 태그 값을 이용할 수 있다(MAY). 만일 그 값이 시간 영역 정보를 포함한다면, 클라이언트는 이들 고려할 것이지만(SHALL) 만일 그렇지 않다면 클라이언트는 생성 시간 영역을 추론하지 않아야 한다(MUST NOT).
클라이언트는 EXT-X-PROGRAM-DATE-TIME 태그 값의 정확성 또는 일관성에 의존하지 않아야 한다(MUST NOT).
6.3.4. 재생 리스트 파일의 재로딩
클라이언트는 재생 리스트 파일이 EXT-X-ENDLIST 태그를 포함하지 않는 한 이를 주기적으로 재로드해야 한다(MUST).
그러나, 클라이언트는 이 섹션에 의해 지정된 것보다 더 자주 재생 리스트 파일의 재로드를 시도하지 않아야 한다(MUST NOT).
클라이언트가 처음으로 재생 리스트 파일을 로드하거나 재생 리스트 파일을 재로드하고 그것이 마지막으로 로드된 이후 변화된 것을 확인하면, 클라이언트는 재생 리스트 파일의 재로드를 다시 시도하기 전에 소정 시간 기간 동안 대기해야 한다(MUST). 이러한 기간은 초기 최소 재로드 지연(initial minimum reload delay)이라고 불린다. 이 기간은 클라이언트가 재생 리스트의 로딩을 시작한 시간부터 측정된다.
초기 최소 재로드 지연은 재생 리스트 내의 마지막 미디어 파일의 지속 시간이다. 미디어 파일 지속 시간은 EXTINF 태그에 의해 지정된다.
만일 클라이언트가 재생 리스트 파일을 재로드하고 그 재생 리스트 파일이 변경되지 않은 것을 확인하면, 클라이언트는 재시도하기 전에 소정 시간 기간 동안 대기해야 한다(MUST). 최소 지연은 타겟 지속 시간의 배수이다. 이 배수는 첫 번째 시도의 경우 0.5이고, 두 번째 시도의 경우 1.5이고, 그리고 그 후에는 3.0이다.
서버 로드를 줄이기 위해, 클라이언트는 현재 재생 중인 변형 스트림의 재생 리스트 파일을 재로드하지 않아야 한다(SHOULD NOT). 만일 클라이언트가 재생을 다른 변형으로 전환하기로 결정한다면, 클라이언트는 오래된 변형의 재생 리스트의 재로딩을 중단하고 새로운 변형의 재생 리스트의 로딩을 시작해야 한다(SHOULD). 클라이언트는 섹션 6.2.4에서의 EXTINF 지속 시간 및 제약 조건을 이용하여 대응하는 미디어의 근사 위치를 결정할 수 있다. 일단 새로운 변형으로부터의 미디어가 로드되었다면, 미디어 파일 내의 타임스탬프는 오래된 타임라인과 새로운 타임라인을 정확하게 동기화하는 데 이용될 수 있다.
6.3.5. 로드할 다음 파일의 결정
클라이언트는 재생 리스트 파일이 로드되거나 재로드될 때마다 이를 검사하여 로드할 다음 미디어 파일을 결정해야 한다(MUST).
로드할 첫 번째 파일은 섹션 6.3.3에 기술된 바와 같이 클라이언트가 첫 번째로 재생하려고 선택한 파일이어야 한다(MUST).
만일 재생될 첫 번째 파일이 로드되었고 재생 리스트 파일이 EXT-X-MEDIA-SEQUENCE 태그를 포함하지 않는다면, 클라이언트는 현재의 재생 리스트 파일이 이것이 최초에 발견된 오프셋에서 마지막으로 로드된 미디어 파일의 URI를 포함하는지를 확인하고, 만일 그렇지 않다면 재생을 중단해야 한다(MUST). 로드할 다음 미디어 파일은 재생 리스트에서 마지막 로드된 URI 다음에 오는 첫 번째 미디어 파일 URI이어야 한다(MUST).
만일 재생될 첫 번째 파일이 로드되었고 재생 리스트 파일이 EXT-X-MEDIA-SEQUENCE 태그를 포함한다면, 로드할 다음 미디어 파일은 로드된 마지막 미디어 파일의 시퀀스 번호보다 큰 가장 낮은 시퀀스 번호를 갖는 것일 것이다(SHALL).
6.3.6. 암호화된 미디어 파일의 암호 해독
만일 재생 리스트 파일이 키 파일 URI를 지정한 EXT-X-KEY 태그를 포함한다면, 클라이언트는 그 키 파일을 얻고 그 안의 키를 이용하여 또 다른 EXT-X-KEY 태그가 발견될 때까지 EXT-X-KEY 태크에 뒤이어 오는 모든 미디어 파일들을 암호 해독해야 한다(MUST).
만일 암호화 METHOD가 AES-128이라면, AES-128 CBC 암호 해독이 개별 미디어 파일들에 적용될 것이다(SHALL). 전체 파일이 암호 해독되어야 한다(MUST). 암호 블록 체이닝이 미디어 파일 전체에 걸쳐 적용되지 않아야 한다(MUST NOT). 암호 해독을 위해 사용된 IV는 섹션 5.2에 기술된 바와 같이 미디어 파일의 시퀀스 번호 또는 EXT-X-KEY 태그의 IV 속성 값이어야 한다(MUST).
만일 암호화 METHOD가 NONE이라면, 클라이언트는 또 다른 EXT-X-KEY 태그가 발견될 때까지 EXT-X-KEY 태그에 뒤이어 오는 모든 미디어 파일을 평문(cleartext)(암호화되지 않음)으로 간주해야 한다(MUST).
7. 프로토콜 버전 호환성
클라이언트 및 서버는 다음의 것을 이용하기 위해 프로토콜 버전 2 이상을 구현해야 한다(MUST):
o EXT-X-KEY 태그의 IV 속성.
클라이언트 및 서버는 다음의 것을 이용하기 위해 프로토콜 버전 3 이상을 구현해야 한다(MUST):
o 부동 소수점 EXTINF 지속 시간 값
8. 실례
8.1. 소개
이 섹션은 여러 가지 예시적인 재생 리스트 파일들을 포함한다.
8.2. 간단한 재생 리스트 파일
#EXTM3U
#EXT-X-TARGETDURATION:5220
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
8.3. HTTPS를 이용한 슬라이딩 윈도우 재생 리스트
#EXTM3U
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:8,
https :// priv . example . com / fileSequence2680 . ts
#EXTINF:8,
https :// priv . example . com / fileSequence2681 . ts
#EXTINF:8,
https :// priv . example . com / fileSequence2682 . ts
8.4. 암호화된 미디어 파일을 갖는 재생 리스트 파일
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https :// priv . example . com / key . php ?r=52"
#EXTINF:15,
http://media.example.com/fileSequence52-1.ts
#EXTINF:15,
http://media.example.com/fileSequence52-2.ts
#EXTINF:15,
http://media.example.com/fileSequence52-3.ts
#EXT-X-KEY:METHOD=AES-128,URI="https :// priv . example . com / key . php ?r=53"
#EXTINF:15,
http://media.example.com/fileSequence53-1.ts
8.5. 변형 재생 리스트 파일
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example.com/hi.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"
http://example.com/audio-only.m3u8
9. 보안 고려 사항
프로토콜은 일반적으로 HTTP를 이용하여 데이터를 전송하기 때문에, 대부분의 동일한 보안 고려 사항이 적용된다. RFC 2616[RFC2616]의 섹션 15 참조.
미디어 파일 파서는 전형적으로 "퍼징(fuzzing)" 공격을 받는다. 클라이언트는 비 호환 파일들이 거부되도록 서버로부터 수신된 파일들을 분석할 때 조심해야 한다(SHOULD).
재생 리스트 파일은 클라이언트가 임의의 엔티티의 네트워크 요청을 하는 데 이용할 URI들을 포함한다. 클라이언트는 버퍼 오버플로를 막기 위해 범위 체크 응답(range-check responses)을 해야 한다(SHOULD). RFC 3986[RFC3986]의 보안 고려 사항 섹션도 참조.
클라이언트는 서버스 거부 공격(denial-of-service attacks)에 기여하는 것을 피하기 위해 한가하게 URI에 의해 식별된 자원을 로드해야 한다(SHOULD).
HTTP 요청은 종종 개인 사용자 데이터를 포함할 수 있는 세션 상태("쿠키")를 포함한다. 구현은 RFC 2965[RFC2965]에 의해 명시된 쿠키 제한 및 만료 규칙을 따라야 한다(MUST). RFC 2965, 및 RFC 2964[RFC2964]의 보안 고려 사항 섹션도 참조.
암호화 키는 URI에 의해 지정된다. 이러한 키의 전달은 보안 범위(secure realm) 또는 세션 쿠키와 함께 TLS[RFC5246](이전에는 SSL)를 통한 HTTP와 같은 메커니즘에 의해 보호되어야 한다(SHOULD).
10. 참고 문헌
10.1. 규범적 참고 문헌
[AES_128]
U.S. Department of Commerce/National Institute of Standards and Technology, "Advanced Encryption Standard (AES), FIPS PUB 197", November 2001, <http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf <http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf> >.
[ISO_13818]
International Organization for Standardization, "ISO/IEC International Standard 13818; Generic coding of moving pictures and associated audio information", October 2007, <http://www.iso.org/iso/catalogue_detail?csnumber=44169>.
[ISO_8601]
International Organization for Standardization, "ISO/IEC International Standard 8601:2004; Data elements and interchange formats -- Information interchange -- Representation of dates and times", December 2004, <http://www.iso.org/iso/catalogue_detail?csnumber=40874>.
[RFC2046]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2616]
Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2964]
Moore, K. and N. Freed, "Use of HTTP State Management", BCP 44, RFC 2964, October 2000.
[RFC2965]
Kristol, D. and L. Montulli, "HTTP State Management Mechanism", RFC 2965, October 2000.
[RFC3629]
Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.
[RFC3986]
Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.
[RFC4281]
Gellens, R., Singer, D., and P. Frojdh, "The Codecs Parameter for "Bucket" Media Types", RFC 4281, November 2005.
[RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.
[RFC5652]  Housley, R., "Cryptographic Message Syntax (CMS)", STD 70,
RFC 5652, September 2009.
[US_ASCII]
American National Standards Institute, "ANSI X3.4-1986, Information Systems -- Coded Character Sets 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)", December 1986.
10.2. 유용한 참고 문헌
[ID3]
ID3.org <http://ID3.org/> , "The ID3 audio file data tagging format", <http://www.id3.org/Developer_Information>.
[M3U]
Nullsoft, Inc., "The M3U Playlist format, originally invented for the Winamp media player", <http://wikipedia.org/wiki/M3U>.

Claims (25)

  1. 실행될 때 데이터 처리 시스템이 방법을 수행하도록 하는 실행가능한 명령어를 저장한 기계 판독가능한 비일시적인 저장 매체로서, 상기 방법은,
    제2 재생 리스트(playlist)에 대한 URL 및 제3 재생 리스트에 대한 URL을 포함하는 제1 재생 리스트를 수신하는 단계 - 상기 제2 재생 리스트는 I 프레임들을 포함하는 파일의 부분들을 지정하는 복수의 URL을 포함하고, 상기 제3 재생 리스트는 1X 속도로 비디오를 디스플레이하기 위한 복수의 URL을 포함함 - ;
    1X와 다른 재생 속도를 결정하는 단계;
    상기 재생 속도를 결정함에 따라 상기 제2 재생 리스트에 대한 상기 URL을 전송하는 단계;
    상기 제2 재생 리스트를 수신하는 단계;
    상기 제2 재생 리스트 내의 URL을 이용하여 I 프레임들에 대한 요청을 전송하는 단계; 및
    상기 I 프레임들에 대한 요청에 따라 수신되는 I 프레임들을 상기 재생 속도로 프리젠테이션하는 단계를 포함하고,
    상기 제2 재생 리스트 내의 상기 URL들은 상기 I 프레임들을 포함하는 상기 파일 내의 각각의 I 프레임에 대한 데이터의 범위를 지정하는 파라미터들과 연관되어 있는, 기계 판독가능한 비일시적인 저장 매체.
  2. 제1항에 있어서, 상기 제3 재생 리스트 내의 상기 URL들과 연관된 태그들은 상기 비디오를 포함하는 상기 파일 내의 데이터의 범위를 지정하는 파라미터들을 포함하는, 기계 판독가능한 비일시적인 저장 매체.
  3. 제1항에 있어서, 상기 제1 재생 리스트는, 대응하는 복수의 1X 재생 리스트들에 대해, 상이한 해상도 또는 상이한 품질에서 상기 1X 속도로 상기 비디오를 디스플레이하기 위한 복수의 URL을 포함하고, 상기 제1 재생 리스트는, 대응하는 복수의 I 프레임 전용 재생 리스트에 대해, 상이한 해상도 또는 상이한 품질의 복수의 URL을 포함하고,
    상기 제2 재생 리스트는, 단지 I 프레임들만 포함하는 상기 파일의 부분들을 지정하는, 대응하는 URL들과 연관되거나 이들에 인접한 태그들을 갖는, 기계 판독가능한 비일시적인 저장 매체.
  4. 제3항에 있어서, 상기 제2 재생 리스트 내의 상기 URL들 각각은 그 URL과 연관된 영화 시간 메타데이터를 갖고,
    각각의 I 프레임에 대한 상기 데이터의 범위는 바이트 범위(byte range)에 의해 지정되고, 각 바이트 범위는 상기 재생 속도로 재생시 사용되지 않는 오디오 데이터를 포함하는, 기계 판독가능한 비일시적인 저장 매체.
  5. 데이터 처리 시스템으로서,
    제2 재생 리스트에 대한 URL 및 제3 재생 리스트에 대한 URL을 포함하는 제1 재생 리스트를 수신하는 수단 - 상기 제2 재생 리스트는 I 프레임들을 포함하는 파일의 부분들을 지정하는 복수의 URL을 포함하고, 상기 제3 재생 리스트는 1X 속도로 비디오를 디스플레이하기 위한 복수의 URL을 포함함 - ;
    1X와 다른 재생 속도를 결정하는 수단;
    상기 재생 속도를 결정함에 따라 상기 제2 재생 리스트에 대한 상기 URL을 전송하는 수단;
    상기 제2 재생 리스트를 수신하는 수단;
    상기 제2 재생 리스트 내의 URL들을 이용하여 I 프레임들에 대한 요청을 전송하는 수단; 및
    상기 I 프레임들에 대한 요청에 따라 수신되는 I 프레임들을 상기 재생 속도로 프리젠테이션하는 수단을 포함하고,
    상기 제2 재생 리스트 내의 상기 URL들은 상기 I 프레임들을 포함하는 상기 파일 내의 각각의 I 프레임에 대한 데이터의 범위를 지정하는 파라미터들과 연관되어 있는, 데이터 처리 시스템.
  6. 제5항에 있어서, 상기 제3 재생 리스트 내의 상기 URL들과 연관된 태그들은 상기 비디오를 포함하는 상기 파일 내의 데이터의 범위를 지정하는 파라미터들을 포함하는, 데이터 처리 시스템.
  7. 제5항에 있어서, 상기 제1 재생 리스트는, 대응하는 복수의 1X 재생 리스트에 대해, 상이한 해상도 또는 상이한 품질에서 상기 1X 속도로 상기 비디오를 디스플레이하기 위한 복수의 URL을 포함하고, 상기 제1 재생 리스트는, 대응하는 복수의 I 프레임 전용 재생 리스트에 대해, 상이한 해상도 또는 상이한 품질의 복수의 URL을 포함하고,
    상기 제2 재생 리스트는, 단지 I 프레임들만 포함하는 상기 파일의 부분들을 지정하는, 대응하는 URL들과 연관되거나 이들에 인접한 태그들을 갖는, 데이터 처리 시스템.
  8. 제7항에 있어서, 상기 제2 재생 리스트 내의 상기 URL들 각각은 그 URL과 연관된 영화 시간 메타데이터를 갖고, 각각의 I 프레임에 대한 상기 데이터의 범위는 바이트 범위에 의해 지정되고, 각 바이트 범위는 상기 재생 속도로 재생시 사용되지 않는 오디오 데이터를 포함하는, 데이터 처리 시스템.
  9. 실행될 때 데이터 처리 시스템이 방법을 수행하도록 하는 실행가능한 명령어를 저장한 기계 판독가능한 비일시적인 저장 매체로서, 상기 방법은,
    적어도 하나의 I 프레임을 다운로드하는 데 이용가능한 시간 기간, 재생 속도, 현재 시간 및 디스플레이 기한 시간(display deadline time)을 포함하는 파라미터들의 집합을 결정하는 단계;
    이용가능한 I 프레임들의 제1 집합을 결정하는 단계 - 상기 제1 집합 내의 상기 I 프레임들은, 상기 현재 시간으로부터 상기 디스플레이 기한 시간까지의 멀티미디어 콘텐츠 아이템 내의 모든 이용가능한 I 프레임들로부터 선택되고 상기 파라미터들의 집합에 기초하여 결정됨 - ;
    I 프레임들의 복수의 부분 집합을 결정하는 단계 - 상기 I 프레임들의 복수의 부분 집합 각각은 상기 이용가능한 I 프레임들의 제1 집합 내의 상기 I 프레임들의 부분 집합을 가짐 - ;
    상기 I 프레임들의 복수의 부분 집합 각각에 대한 추정된 다운로드 시간을 결정하는 단계;
    상기 추정된 다운로드 시간 및 상기 파라미터들의 집합에 기초하여 상기 I 프레임들의 복수의 부분 집합 중 하나의 부분 집합을 선택하는 단계; 및
    상기 I 프레임들의 복수의 부분 집합 중 상기 선택된 하나의 부분 집합 내의 I 프레임들을 수신 및 디스플레이하는 단계
    를 포함하는, 기계 판독가능한 비일시적인 저장 매체.
  10. 제9항에 있어서, 상기 I 프레임들을 디스플레이하는 단계는 상기 I 프레임들의 비디오 콘텐츠의 트릭플레이(trickplay) 재생 모드를 1X와 다른 재생 속도로 제공하고, 상기 디스플레이된 I 프레임들 각각은 대응하는 I 프레임을 포함하는 파일의 일부를 식별하는 바이트 범위를 포함하는, URL과 연관된 태그를 이용하여 검색되는, 기계 판독가능한 비일시적인 저장 매체.
  11. 제10항에 있어서, 상기 시간 기간은 상기 현재 시간 및 상기 재생 속도 및 상기 디스플레이 기한 시간으로부터 도출되는, 기계 판독가능한 비일시적인 저장 매체.
  12. 제11항에 있어서, 상기 디스플레이 기한 시간은 1/2초 내지 2초의 범위의 일정한 지속 시간으로 설정되고, 상기 디스플레이 기한 시간을 상기 재생 속도와 곱하여 시간 값인 곱(product)을 산출하고, 이 곱을 상기 현재 시간에 더하여 상기 시간 기간을 도출하는, 기계 판독가능한 비일시적인 저장 매체.
  13. 제12항에 있어서, 상기 I 프레임들의 복수의 부분 집합 각각은 상기 복수의 부분 집합 사이에 상이한 미리 정해진 케이던스(cadence)를 갖는, 기계 판독가능한 비일시적인 저장 매체.
  14. 제13항에 있어서, 상기 복수의 부분 집합 각각의 I 프레임들의 수는 미리 정해진 최대 수로 제한되고,
    상기 I 프레임들의 복수의 부분 집합 각각의 상기 미리 정해진 케이던스는 (a) 상기 제1 집합 내의 이용가능한 I 프레임들 모두; (b) 상기 이용가능한 I 프레임들 중 하나 걸러 하나씩의 I 프레임; 및 (c) 상기 이용가능한 I 프레임들 중 둘 걸러 하나씩의 I 프레임 중 하나인, 기계 판독가능한 비일시적인 저장 매체.
  15. 데이터 처리 시스템으로서,
    적어도 하나의 I 프레임을 다운로드하는 데 이용가능한 시간 기간, 재생 속도, 현재 시간 및 디스플레이 기한 시간을 포함하는 파라미터들의 집합을 결정하는 수단;
    이용가능한 I 프레임들의 제1 집합을 결정하는 수단 - 상기 제1 집합 내의 상기 I 프레임들은, 상기 현재 시간으로부터 상기 디스플레이 기한 시간까지의 멀티미디어 콘텐츠 아이템 내의 모든 이용가능한 I 프레임들로부터 선택되고 상기 파라미터들의 집합에 기초하여 결정됨 - ;
    I 프레임들의 복수의 부분 집합을 결정하는 수단 - 상기 I 프레임들의 복수의 부분 집합 각각은 상기 이용가능한 I 프레임들의 제1 집합 내의 상기 I 프레임들의 부분 집합을 가짐 - ;
    상기 I 프레임들의 복수의 부분 집합 각각에 대한 추정된 다운로드 시간을 결정하는 수단;
    상기 추정된 다운로드 시간 및 상기 파라미터들의 집합에 기초하여 상기 I 프레임들의 복수의 부분 집합 중 하나의 부분 집합을 선택하는 수단; 및
    상기 I 프레임들의 복수의 부분 집합 중 상기 선택된 하나의 부분 집합 내의 I 프레임들을 수신 및 디스플레이하는 수단
    을 포함하는 데이터 처리 시스템.
  16. 제15항에 있어서, 상기 I 프레임들을 디스플레이하는 것은 상기 I 프레임들의 비디오 콘텐츠의 트릭플레이 재생 모드를 1X와 다른 재생 속도로 제공하고, 상기 디스플레이된 I 프레임들 각각은 대응하는 I 프레임을 포함하는 파일의 일부를 식별하는 바이트 범위를 포함하는, URL과 연관된 태그를 이용하여 검색되는, 데이터 처리 시스템.
  17. 제16항에 있어서, 상기 시간 기간은 상기 현재 시간 및 상기 재생 속도 및 상기 디스플레이 기한 시간으로부터 도출되는, 데이터 처리 시스템.
  18. 제17항에 있어서, 상기 디스플레이 기한 시간은 1/2초 내지 2초의 범위의 일정한 지속 시간으로 설정되고, 상기 디스플레이 기한 시간을 상기 재생 속도와 곱하여 시간 값인 곱을 산출하고, 이 곱을 상기 현재 시간에 더하여 상기 시간 기간을 도출하는, 데이터 처리 시스템.
  19. 제18항에 있어서, 상기 I 프레임들의 복수의 부분 집합 각각은 상기 복수의 부분 집합 사이에 상이한 미리 정해진 케이던스를 갖는, 데이터 처리 시스템.
  20. 제19항에 있어서, 상기 복수의 부분 집합 각각의 I 프레임들의 수는 미리 정해진 최대 수로 제한되고,
    상기 I 프레임들의 복수의 부분 집합 각각의 상기 미리 정해진 케이던스는 (a) 상기 제1 집합 내의 이용가능한 I 프레임들 모두; (b) 상기 이용가능한 I 프레임들 중 하나 걸러 하나씩의 I 프레임; 및 (c) 상기 이용가능한 I 프레임들 중 둘 걸러 하나씩의 I 프레임 중 하나인, 데이터 처리 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020137034862A 2011-06-03 2012-05-30 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트 KR101535366B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161493329P 2011-06-03 2011-06-03
US61/493,329 2011-06-03
US13/225,020 2011-09-02
US13/225,020 US8856283B2 (en) 2011-06-03 2011-09-02 Playlists for real-time or near real-time streaming
PCT/US2012/040027 WO2012166813A1 (en) 2011-06-03 2012-05-30 Playlists for real-time or near real-time streaming

Publications (2)

Publication Number Publication Date
KR20140019003A KR20140019003A (ko) 2014-02-13
KR101535366B1 true KR101535366B1 (ko) 2015-07-24

Family

ID=46208188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034862A KR101535366B1 (ko) 2011-06-03 2012-05-30 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트

Country Status (8)

Country Link
US (2) US8856283B2 (ko)
EP (2) EP2705671B1 (ko)
KR (1) KR101535366B1 (ko)
CN (1) CN103650526B (ko)
AU (1) AU2012262242B2 (ko)
HK (1) HK1193291A1 (ko)
TW (1) TWI505676B (ko)
WO (1) WO2012166813A1 (ko)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7515710B2 (en) 2006-03-14 2009-04-07 Divx, Inc. Federated digital rights management scheme including trusted systems
US8997161B2 (en) 2008-01-02 2015-03-31 Sonic Ip, Inc. Application enhancement tracks
WO2010080911A1 (en) 2009-01-07 2010-07-15 Divx, Inc. Singular, collective and automated creation of a media guide for online content
WO2011068668A1 (en) 2009-12-04 2011-06-09 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
AU2011205819B2 (en) * 2010-01-18 2015-03-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for supporting playout of content
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
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US8909922B2 (en) 2011-09-01 2014-12-09 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
WO2012167558A1 (zh) * 2011-11-16 2012-12-13 华为技术有限公司 播放媒体文件的方法、终端、服务器和系统
EP2605469A1 (en) * 2011-12-13 2013-06-19 Thomson Licensing Method and apparatus to control a multipath adaptive streaming session
US8977704B2 (en) * 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9654821B2 (en) 2011-12-30 2017-05-16 Sonos, Inc. Systems and methods for networked music playback
US20130227106A1 (en) * 2012-02-23 2013-08-29 Edward Grinshpun Method and apparatus for video session management
US9665074B2 (en) * 2012-03-15 2017-05-30 Comigo Ltd. System and method for providing playlists for social television
US8788659B1 (en) 2012-03-29 2014-07-22 Google Inc. Playlist analytics
US20130304525A1 (en) * 2012-05-03 2013-11-14 Interactive Cine Parlor, LLC Method for developing interactive pre-fabricated cinema venues
EP2696295B1 (en) * 2012-05-28 2019-08-07 Huawei Device (Shenzhen) Co., Ltd. Processing method, device and system for media resource playlist in local area network
US9674587B2 (en) 2012-06-26 2017-06-06 Sonos, Inc. Systems and methods for networked music playback including remote add to queue
US9197685B2 (en) 2012-06-28 2015-11-24 Sonic Ip, Inc. Systems and methods for fast video startup using trick play streams
US9143812B2 (en) 2012-06-29 2015-09-22 Sonic Ip, Inc. Adaptive streaming of multimedia
EP2875417B1 (en) 2012-07-18 2020-01-01 Verimatrix, Inc. Systems and methods for rapid content switching to provide a linear tv experience using streaming content distribution
US8914836B2 (en) 2012-09-28 2014-12-16 Sonic Ip, Inc. Systems, methods, and computer program products for load adaptive streaming
US9544344B2 (en) * 2012-11-20 2017-01-10 Google Technology Holdings LLC Method and apparatus for streaming media content to client devices
US8918821B2 (en) * 2012-12-11 2014-12-23 Morega Systems, Inc. Client device with video playlist translation via client-side proxy and methods for use therewith
US20140181653A1 (en) * 2012-12-26 2014-06-26 Johannes P. Schmidt Content presentation with enhanced user experience
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
EP2965231A1 (en) * 2013-03-08 2016-01-13 Thomson Licensing Method and apparatus for automatic video segmentation
CA2903319A1 (en) * 2013-03-14 2014-09-18 Arris Technology, Inc. Devices, systems, and methods for converting or translating dynamic adaptive streaming over http (dash) to http live streaming (hls)
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US9946438B2 (en) * 2013-03-15 2018-04-17 Arris Enterprises Llc Maximum value displayed content feature
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
US20140297804A1 (en) * 2013-03-28 2014-10-02 Sonic IP. Inc. Control of multimedia content streaming through client-server interactions
US9361371B2 (en) 2013-04-16 2016-06-07 Sonos, Inc. Playlist update in a media playback system
US9501533B2 (en) 2013-04-16 2016-11-22 Sonos, Inc. Private queue for a media playback system
US9247363B2 (en) 2013-04-16 2016-01-26 Sonos, Inc. Playback queue transfer in a media playback system
US9953179B2 (en) 2013-05-29 2018-04-24 Sonos, Inc. Private queue indicator
US10715973B2 (en) 2013-05-29 2020-07-14 Sonos, Inc. Playback queue control transition
US9495076B2 (en) 2013-05-29 2016-11-15 Sonos, Inc. Playlist modification
US9735978B2 (en) 2013-05-29 2017-08-15 Sonos, Inc. Playback queue control via a playlist on a mobile device
US9703521B2 (en) 2013-05-29 2017-07-11 Sonos, Inc. Moving a playback queue to a new zone
US9798510B2 (en) 2013-05-29 2017-10-24 Sonos, Inc. Connected state indicator
US9684484B2 (en) * 2013-05-29 2017-06-20 Sonos, Inc. Playback zone silent connect
WO2014193996A2 (en) * 2013-05-30 2014-12-04 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9094737B2 (en) * 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US20140359678A1 (en) * 2013-05-30 2014-12-04 Sonic Ip, Inc. Device video streaming with trick play based on separate trick play files
US9247317B2 (en) * 2013-05-30 2016-01-26 Sonic Ip, Inc. Content streaming with client device trick play index
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
US10181040B2 (en) * 2013-07-19 2019-01-15 Disney Enterprises, Inc. Alternate content playlist for locked media content
US20150067744A1 (en) * 2013-08-27 2015-03-05 Home Box Office, Inc. Providing responsive video previews during rewind and fast forward
US20150088943A1 (en) * 2013-09-25 2015-03-26 Futurewei Technologies, Inc. Media-Aware File System and Method
US10296884B2 (en) 2013-09-30 2019-05-21 Sonos, Inc. Personalized media playback at a discovered point-of-sale display
TWI533678B (zh) * 2014-01-07 2016-05-11 緯創資通股份有限公司 即時轉播同步方法以及使用該方法的系統
KR20150083429A (ko) * 2014-01-08 2015-07-17 한국전자통신연구원 Dash를 사용하는 비디오 재생을 위한 비트 깊이 표현 방법
CN104918130A (zh) * 2014-03-12 2015-09-16 腾讯科技(北京)有限公司 一种发送、播放多媒体信息的方法、装置和系统
EP2928196A1 (en) * 2014-04-01 2015-10-07 Thomson Licensing Method of video streaming and corresponding device
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
CN103986978A (zh) * 2014-04-14 2014-08-13 曦威胜科技开发(深圳)有限公司 在HLS协议中扩展实现快进快退及精确Seek的方法
WO2016002494A1 (ja) * 2014-06-30 2016-01-07 ソニー株式会社 情報処理装置および方法
US20160014439A1 (en) * 2014-07-14 2016-01-14 Cisco Technology Inc. Indexing of Video Assets
CN105376657A (zh) * 2014-08-15 2016-03-02 中国电信股份有限公司 媒体内容提供方法、播放方法和装置以及服务系统
US10135748B2 (en) 2014-09-29 2018-11-20 Apple Inc. Switching between media streams
US9729611B2 (en) 2014-10-26 2017-08-08 Cisco Technology, Inc. Method and system for ABR recording
CN105657520A (zh) * 2014-11-18 2016-06-08 乐视网信息技术(北京)股份有限公司 一种视频清晰度切换方法和视频播放器
US9270563B1 (en) * 2014-11-24 2016-02-23 Roku, Inc. Apparatus and method for content playback utilizing crowd sourced statistics
US10389788B2 (en) * 2014-12-27 2019-08-20 Intel Corporation Technologies for adaptive real-time media streaming
US9858337B2 (en) * 2014-12-31 2018-01-02 Opentv, Inc. Management, categorization, contextualizing and sharing of metadata-based content for media
WO2016110324A1 (en) * 2015-01-07 2016-07-14 Telefonaktiebolaget Lm Ericsson (Publ) An improved method and apparatus for trick-play in abr streaming
CN104661083A (zh) * 2015-02-06 2015-05-27 南京传唱软件科技有限公司 视频播放方法、系统、流媒体播放方法、装置及系统
CN104735463A (zh) * 2015-03-26 2015-06-24 南京传唱软件科技有限公司 流媒体传输方法及系统
CN104754416A (zh) * 2015-03-30 2015-07-01 北京奇艺世纪科技有限公司 一种视频播放方法及装置
CN104754415B (zh) * 2015-03-30 2018-02-09 北京奇艺世纪科技有限公司 一种视频播放方法及装置
CN106162316A (zh) * 2015-04-15 2016-11-23 腾讯科技(深圳)有限公司 一种视频流的数据处理方法、装置和系统
US10136193B2 (en) * 2015-04-28 2018-11-20 Arris Enterprises Llc Supporting trickplay of streaming DLNA multimedia by HLS access device
US11057446B2 (en) * 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
JP6485865B2 (ja) * 2015-05-15 2019-03-20 日本電気株式会社 配信制御装置、中継装置、配信システム、配信制御方法、及びプログラム
US9716905B2 (en) * 2015-08-10 2017-07-25 Verizon Patent And Licensing Inc. Selective content delivery over diverse networks
US9942343B2 (en) 2015-08-27 2018-04-10 Kiswe Mobile Inc. Efficient content streaming utilizing local proxy server implemented on client device
US9635431B2 (en) 2015-08-27 2017-04-25 Kiswe Mobile Inc. Live event viewing via mixed live and on-demand streaming
CN105208463B (zh) * 2015-08-31 2017-12-15 暴风集团股份有限公司 针对m3u8文件进行帧确定的方法和系统
EP3345385A1 (en) * 2015-09-04 2018-07-11 Telefonaktiebolaget LM Ericsson (PUBL) Improved cloud dvr storage
WO2017092830A1 (en) 2015-12-04 2017-06-08 Telefonaktiebolaget Lm Ericsson (Publ) Technique for adaptive streaming of temporally scaling media segment levels
TWI588745B (zh) * 2015-12-31 2017-06-21 Fuelstation Inc E-commerce system that can automatically record and update the information in the embedded electronic device by the cloud
US10075292B2 (en) 2016-03-30 2018-09-11 Divx, Llc Systems and methods for quick start-up of playback
CN105979367A (zh) * 2016-05-25 2016-09-28 乐视控股(北京)有限公司 播放控制方法及装置
WO2017207861A1 (en) * 2016-05-30 2017-12-07 Teleste Oyj An arrangement for media stream organization
US9602846B1 (en) 2016-08-31 2017-03-21 Living As One, Llc System and method for asynchronous uploading of live digital multimedia with guaranteed delivery
US11412272B2 (en) 2016-08-31 2022-08-09 Resi Media Llc System and method for converting adaptive stream to downloadable media
US10511864B2 (en) 2016-08-31 2019-12-17 Living As One, Llc System and method for transcoding media stream
CN108257625B (zh) * 2016-12-29 2020-09-08 北京酷我科技有限公司 一种音频文件播放方法及系统
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
CN106980649B (zh) 2017-02-28 2020-07-10 创新先进技术有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
US11023417B2 (en) 2017-05-30 2021-06-01 Home Box Office, Inc. Video content graph including enhanced metadata
CN110971857B (zh) 2018-09-28 2021-04-27 杭州海康威视系统技术有限公司 录像回放方法及装置、计算机可读存储介质
CN111510770B (zh) * 2019-01-30 2021-08-24 上海哔哩哔哩科技有限公司 切换清晰度的方法、装置、计算机设备及可读存储介质
CN111698536B (zh) * 2019-03-15 2023-03-28 瑞昱半导体股份有限公司 视频处理方法与系统
US11265586B2 (en) * 2019-05-06 2022-03-01 Apple Inc. Skipping segments in playlists
US11170819B2 (en) * 2019-05-14 2021-11-09 Microsoft Technology Licensing, Llc Dynamic video highlight
CN110704611B (zh) * 2019-08-08 2022-08-19 国家计算机网络与信息安全管理中心 基于特征解交织的非法文本识别方法及装置
US11509949B2 (en) * 2019-09-13 2022-11-22 Disney Enterprises, Inc. Packager for segmenter fluidity
KR20210110097A (ko) * 2020-02-28 2021-09-07 삼성전자주식회사 영상 스트리밍 방법 및 이를 지원하는 전자 장치
US11190826B1 (en) * 2020-06-25 2021-11-30 Disney Enterprises, Inc. Segment quality-guided adaptive stream creation
US11765443B2 (en) 2021-02-09 2023-09-19 Rovi Guides, Inc. Playback of media content during dual mode trick play operations
FR3128084A1 (fr) * 2021-10-13 2023-04-14 Orange procédé de gestion de la lecture d’un contenu multimédia.
CN114390355B (zh) * 2021-12-10 2024-08-06 阿里巴巴(中国)有限公司 协议数据的回放方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100080290A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US20100235472A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth, stateless client media streaming
US20110116772A1 (en) * 2009-11-13 2011-05-19 Samsung Electronics Co., Ltd. Method and apparatus for providing trick play service
US20110125918A1 (en) * 2009-11-13 2011-05-26 Samsung Electronics Co., Ltd. Adaptive streaming method and apparatus

Family Cites Families (279)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2010A (en) * 1841-03-18 Machine foe
US5065396A (en) 1990-01-02 1991-11-12 At&T Bell Laboratories Inverse multiplexer and demultiplexer techniques
US5719786A (en) 1993-02-03 1998-02-17 Novell, Inc. Digital media data stream network management system
US5361259A (en) 1993-02-19 1994-11-01 American Telephone And Telegraph Company Wide area network (WAN)-arrangement
EP0614317A3 (en) 1993-03-05 1995-01-25 Sony Corp Decoding video signals.
US5550982A (en) 1993-06-24 1996-08-27 Starlight Networks Video application server
US5610841A (en) 1993-09-30 1997-03-11 Matsushita Electric Industrial Co., Ltd. Video server
US5493514A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus, and system for encoding and decoding video signals
US5524110A (en) 1993-11-24 1996-06-04 Intel Corporation Conferencing over multiple transports
US5579239A (en) 1994-02-16 1996-11-26 Freeman; Mitchael C. Remote video transmission system
US5434860A (en) 1994-04-20 1995-07-18 Apple Computer, Inc. Flow control for real-time data streams
US5819034A (en) 1994-04-28 1998-10-06 Thomson Consumer Electronics, Inc. Apparatus for transmitting and receiving executable applications as for a multimedia system
US5583859A (en) 1994-08-30 1996-12-10 Bell Communications Research, Inc. Data labeling technique for high performance protocol processing
US5613032A (en) 1994-09-02 1997-03-18 Bell Communications Research, Inc. System and method for recording, playing back and searching multimedia events wherein video, audio and text can be searched and retrieved
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5821986A (en) 1994-11-03 1998-10-13 Picturetel Corporation Method and apparatus for visual communications in a scalable network environment
EP0720374A1 (en) 1994-12-30 1996-07-03 Daewoo Electronics Co., Ltd Apparatus for parallel decoding of digital video signals
US6181867B1 (en) 1995-06-07 2001-01-30 Intervu, Inc. Video storage and retrieval system
US6138147A (en) 1995-07-14 2000-10-24 Oracle Corporation Method and apparatus for implementing seamless playback of continuous media feeds
US5778374A (en) 1995-08-03 1998-07-07 International Business Machines Corporation Compressed common file directory for mass storage systems
BR9610415A (pt) 1995-09-01 1999-09-14 Starguide Digital Networks Inc Sistema de distribuição e produção de arquivos de áudio
JPH0981497A (ja) 1995-09-12 1997-03-28 Toshiba Corp 実時間ストリームサーバ並びに実時間ストリームデータの格納方法および転送方法
IL115263A (en) 1995-09-12 1999-04-11 Vocaltec Ltd System and method for distributing multi-media presentations in a computer network
US5835495A (en) 1995-10-11 1998-11-10 Microsoft Corporation System and method for scaleable streamed audio transmission over a network
US5933603A (en) 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
FI99063C (fi) 1995-11-07 1997-09-25 Nokia Oy Ab Multimediavastaanotto digitaalisessa yleisradiojärjestelmässä
DE69632011T2 (de) 1995-11-10 2005-02-03 Kabushiki Kaisha Toshiba, Kawasaki Dateientransferverfahren, Verfahren für ein Dateien anforderndes Benutzergerät und Dateienanbietergerät
US5627936A (en) 1995-12-21 1997-05-06 Intel Corporation Apparatus and method for temporal indexing of multiple audio, video and data streams
US5805823A (en) 1996-01-30 1998-09-08 Wayfarer Communications, Inc. System and method for optimal multiplexed message aggregation between client applications in client-server networks
US5841432A (en) 1996-02-09 1998-11-24 Carmel; Sharon Method and system of building and transmitting a data file for real time play of multimedia, particularly animation, and a data file for real time play of multimedia applications
IL117133A (en) 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
JP2000504906A (ja) 1996-02-14 2000-04-18 オリブル コーポレイション リミティド マルチメディアデータのプログレッシブ非同期伝送方法及びシステム
JP3258236B2 (ja) 1996-05-28 2002-02-18 株式会社日立製作所 マルチメディア情報転送システム
DE69725533T2 (de) 1996-08-30 2004-05-19 Matsushita Electric Industrial Co., Ltd., Kadoma Digitales Rundfunksystem, digitale Rundfunkvorrichtung und Empfänger dafür
US5867230A (en) 1996-09-06 1999-02-02 Motorola Inc. System, device, and method for streaming a multimedia file encoded at a variable bitrate
US5928330A (en) 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5819160A (en) 1996-09-18 1998-10-06 At&T Corp Programmable radio subscription system for receiving selectively defined information
US20030093790A1 (en) 2000-03-28 2003-05-15 Logan James D. Audio and video program recording, editing and playback systems using metadata
US5893062A (en) * 1996-12-05 1999-04-06 Interval Research Corporation Variable rate video playback with synchronized audio
US5953506A (en) 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
JP2001509280A (ja) 1997-01-29 2001-07-10 インシグマ テクノロジーズ リミテッド メディアファイルを通信網経由で転送する方法
JPH10229420A (ja) 1997-02-17 1998-08-25 Matsushita Electric Ind Co Ltd 通信システム
US6151632A (en) 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
US6292834B1 (en) 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US6032193A (en) 1997-03-20 2000-02-29 Niobrara Research And Development Corporation Computer system having virtual circuit address altered by local computer to switch to different physical data link to increase data transmission bandwidth
EP1021917A4 (en) 1997-03-31 2002-05-15 Broadband Associates METHOD AND SYSTEM FOR DELIVERING A DISPLAY ON A NETWORK
US5892915A (en) 1997-04-25 1999-04-06 Emc Corporation System having client sending edit commands to server during transmission of continuous media from one clip in play list for editing the play list
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US6014694A (en) 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US5999529A (en) 1997-09-16 1999-12-07 Nortel Networks Corporation Method and apparatus for interworking ATM adaptation layer formats
US5996015A (en) 1997-10-31 1999-11-30 International Business Machines Corporation Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory
US20020002039A1 (en) 1998-06-12 2002-01-03 Safi Qureshey Network-enabled audio device
US6385596B1 (en) 1998-02-06 2002-05-07 Liquid Audio, Inc. Secure online music distribution system
US6377995B2 (en) 1998-02-19 2002-04-23 At&T Corp. Indexing multimedia communications
IL123819A (en) 1998-03-24 2001-09-13 Geo Interactive Media Group Lt Network media streaming
EP0984584A1 (en) 1998-09-04 2000-03-08 America Online, Inc. Internet multimedia broadcast system
TW463165B (en) 1998-09-07 2001-11-11 Thomson Brandt Gmbh Method for addressing a bitstream to be recorded or being recorded on a storage medium
US6847778B1 (en) 1999-03-30 2005-01-25 Tivo, Inc. Multimedia visual progress indication system
US6262724B1 (en) 1999-04-15 2001-07-17 Apple Computer, Inc. User interface for presenting media information
JP2001036423A (ja) 1999-05-20 2001-02-09 Yamaha Corp 番組再生システム及び番組再生方法
KR100655034B1 (ko) 1999-05-28 2006-12-07 마츠시타 덴끼 산교 가부시키가이샤 반도체 메모리카드, 재생장치, 기록장치, 재생방법, 기록방법
RU2272318C2 (ru) 1999-08-03 2006-03-20 Вижионартс Инк. Считываемый компьютером носитель записи, на котором записан файл изображения, устройство для изготовления носителя записи, носитель, на котором записана программа для создания файла изображения, устройство для передачи файла изображения, устройство для обработки файла изображения и носитель, на котором записана программа обработки файла изображения
JP3522635B2 (ja) 1999-08-03 2004-04-26 ヴィジョンアーツ株式会社 画像ファイルを記録したコンピュータ読み取り可能な記録媒体、この記録媒体の作成装置、画像ファイル作成プログラムを記録した媒体、画像ファイル送信装置、画像ファイル処理装置、画像ファイル処理プログラムを記録した媒体
US8341662B1 (en) 1999-09-30 2012-12-25 International Business Machine Corporation User-controlled selective overlay in a streaming media
US6625750B1 (en) 1999-11-16 2003-09-23 Emc Corporation Hardware and software failover services for a file server
WO2001038993A1 (en) 1999-11-29 2001-05-31 Binary Broadcasting Corporation Secure digital music distribution
US20070038728A1 (en) 1999-12-08 2007-02-15 Jacobs Paul E A system for controlling the distribution of advertisements to informational client devices using a playlist
US20020029166A1 (en) 1999-12-08 2002-03-07 Qualcomm Incorporated E-mail software and method and system for distributing advertisements to client devices that have such e-mail software installed thereon
US20070005428A1 (en) 1999-12-08 2007-01-04 Jacobs Paul E Method for distributing advertisements to client devices having e-mail software installed including multiple advertisement operational modes
EP1113642A3 (en) 1999-12-16 2004-04-14 Actv, Inc. Enhanced video programming system and method using a local host for network communication
JP3348067B2 (ja) * 2000-02-29 2002-11-20 株式会社電通 広告の再生を制御する方法および装置
US7113902B2 (en) 2000-03-02 2006-09-26 Texas Instruments Incorporated Data processing condition detector with table lookup
US6721489B1 (en) 2000-03-08 2004-04-13 Phatnoise, Inc. Play list manager
US7187947B1 (en) 2000-03-28 2007-03-06 Affinity Labs, Llc System and method for communicating selected information to an electronic device
US7725812B1 (en) 2000-03-31 2010-05-25 Avid Technology, Inc. Authoring system for combining temporal and nontemporal digital media
US7260564B1 (en) 2000-04-07 2007-08-21 Virage, Inc. Network video guide and spidering
EP1158799A1 (en) 2000-05-18 2001-11-28 Deutsche Thomson-Brandt Gmbh Method and receiver for providing subtitle data in several languages on demand
US7756743B1 (en) 2000-06-21 2010-07-13 Clubcom, Llc System and method for branding a facility
US7017189B1 (en) 2000-06-27 2006-03-21 Microsoft Corporation System and method for activating a rendering device in a multi-level rights-management architecture
US6925495B2 (en) 2000-07-13 2005-08-02 Vendaria Media, Inc. Method and system for delivering and monitoring an on-demand playlist over a network using a template
US7471834B2 (en) 2000-07-24 2008-12-30 Vmark, Inc. Rapid production of reduced-size images from compressed video streams
KR20040041082A (ko) 2000-07-24 2004-05-13 비브콤 인코포레이티드 멀티미디어 북마크와 비디오의 가상 편집을 위한 시스템및 방법
US7218837B2 (en) 2000-09-25 2007-05-15 Victor Company Of Japan, Ltd. Program-signal recording and reproducing apparatus
US6834297B1 (en) 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
US20020046315A1 (en) 2000-10-13 2002-04-18 Interactive Objects, Inc. System and method for mapping interface functionality to codec functionality in a portable audio device
US20020083182A1 (en) 2000-12-18 2002-06-27 Alvarado Juan C. Real-time streamed data download system and method
MY147018A (en) 2001-01-04 2012-10-15 Thomson Licensing Sa A method and apparatus for acquiring media services available from content aggregators
US20080059532A1 (en) 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
US7640320B2 (en) 2001-01-18 2009-12-29 Yahoo! Inc. Method and system for managing digital content, including streaming media
US20020147634A1 (en) 2001-01-31 2002-10-10 Ronald Jacoby System for dynamic generation of online streaming media advertisements
US7308717B2 (en) 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US20030061305A1 (en) 2001-03-30 2003-03-27 Chyron Corporation System and method for enhancing streaming media delivery and reporting
US8275709B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US7076478B2 (en) 2001-06-26 2006-07-11 Microsoft Corporation Wrapper playlists on streaming media services
US6990497B2 (en) 2001-06-26 2006-01-24 Microsoft Corporation Dynamic streaming media management
MXPA04002235A (es) 2001-09-10 2004-06-29 Thomson Licensing Sa Metodo y aparato para crear una lista de reproduccion con indice en un reproductor de datos de audio.
KR100913844B1 (ko) 2001-09-10 2009-08-26 톰슨 라이센싱 디지털 오디오 플레이어에서 사용자 인터페이스 및네비게이션 작업을 지원하기 위한 m3u 파일 포맷의 확장
US7721103B2 (en) 2001-09-18 2010-05-18 Media Rights Technologies, Inc. System and method for providing global media content delivery
US7343487B2 (en) 2001-10-10 2008-03-11 Nokia Corporation Datacast distribution system
US7334016B2 (en) 2001-11-15 2008-02-19 Globalview Software Inc. Data transfer system for providing non-buffered, real-time streaming data users
US7039784B1 (en) 2001-12-20 2006-05-02 Info Value Computing Inc. Video distribution system using dynamic disk load balancing with variable sub-segmenting
AU2003202815A1 (en) 2002-01-12 2003-07-24 Coretrust, Inc. Method and system for the information protection of digital content
US7159174B2 (en) 2002-01-16 2007-01-02 Microsoft Corporation Data preparation for media browsing
US7096234B2 (en) 2002-03-21 2006-08-22 Microsoft Corporation Methods and systems for providing playlists
JP2003288290A (ja) 2002-03-28 2003-10-10 Nippon Telegr & Teleph Corp <Ntt> ファイル配信方法
US20030186645A1 (en) 2002-04-02 2003-10-02 Robert Mori Method for marking a portion of a media broadcast for later use
US6868439B2 (en) 2002-04-04 2005-03-15 Hewlett-Packard Development Company, L.P. System and method for supervising use of shared storage by multiple caching servers physically connected through a switching router to said shared storage via a robust high speed connection
US7020710B2 (en) 2002-06-21 2006-03-28 Thomson Licensing Streaming media delivery on multicast networks for network and server bandwidth minimization and enhanced personalization
US7549060B2 (en) 2002-06-28 2009-06-16 Microsoft Corporation Using a rights template to obtain a signed rights label (SRL) for digital content in a digital rights management system
US7272296B2 (en) 2002-07-24 2007-09-18 Thomson Licensing Navigating to a particular program or specific time increment in a personal video recorder
US7917557B2 (en) 2002-09-05 2011-03-29 Koninklijke Philips Electronics N.V. Method and devices for creating a second playlist based on a first playlist
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US7054888B2 (en) 2002-10-16 2006-05-30 Microsoft Corporation Optimizing media player memory during rendering
US7668842B2 (en) 2002-10-16 2010-02-23 Microsoft Corporation Playlist structure for large playlists
JP4355659B2 (ja) 2002-10-21 2009-11-04 パナソニック株式会社 データ処理装置
US20040086120A1 (en) 2002-11-06 2004-05-06 Akins Glendon L. Selecting and downloading content to a portable player
US6812994B2 (en) 2002-12-04 2004-11-02 Eastman Kodak Company Streamlined methods and systems for scheduling and handling digital cinema content in a multi-theatre environment
KR100520115B1 (ko) 2002-12-27 2005-10-10 삼성전자주식회사 플레이리스트 관리 장치 및 방법
CA2457602A1 (en) 2003-02-19 2004-08-19 Impatica Inc. Method of synchronizing streams of real time data
US7383229B2 (en) 2003-03-12 2008-06-03 Yahoo! Inc. Access control and metering system for streaming media
US7287083B1 (en) 2003-03-20 2007-10-23 Novell, Inc. Computing environment failover in a branch office environment
US7349663B1 (en) 2003-04-24 2008-03-25 Leave A Little Room Foundation Internet radio station and disc jockey system
JP4228767B2 (ja) 2003-04-25 2009-02-25 ソニー株式会社 再生装置、再生方法、再生プログラムおよび記録媒体
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
US20040250293A1 (en) 2003-06-09 2004-12-09 Sony Corporation System and method for providing alternate program services
US20040260835A1 (en) 2003-06-23 2004-12-23 Welk Douglas L. Automotive internet radio system
KR20060028483A (ko) 2003-07-04 2006-03-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 배포 네트워크를 통해 멀티미디어 컨텐트를브로드캐스팅하는 방법
US20050005025A1 (en) 2003-07-04 2005-01-06 Michael Harville Method for managing a streaming media service
US7290058B2 (en) * 2003-07-26 2007-10-30 Innomedia Pte Video mail server with reduced frame loss
KR20050015937A (ko) 2003-08-05 2005-02-21 삼성전자주식회사 정보 저장 매체, 그 재생 장치 및 방법
US20130097302A9 (en) 2003-10-01 2013-04-18 Robert Khedouri Audio visual player apparatus and system and method of content distribution using the same
US7673062B2 (en) 2003-11-18 2010-03-02 Yahoo! Inc. Method and apparatus for assisting with playback of remotely stored media files
US8544050B2 (en) 2003-12-30 2013-09-24 Aol Inc. Rule-based playlist engine
US7949726B2 (en) 2004-03-12 2011-05-24 Ocean And Coastal Environmental Sensing, Inc. System and method for delivering information on demand
WO2005091161A1 (en) 2004-03-22 2005-09-29 Nitgen Technologies Inc. A streaming based contents distribution network system and methods for splitting, merging and retrieving files
JP2005323325A (ja) 2004-03-26 2005-11-17 Nec Corp 放送映像音声データ記録方法、装置、および記録媒体
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US7720983B2 (en) 2004-05-03 2010-05-18 Microsoft Corporation Fast startup for streaming media
JP2005332274A (ja) 2004-05-20 2005-12-02 Toshiba Corp 動画像中のオブジェクトに関するメタデータストリームのデータ構造、検索方法及び再生方法
US20080288536A1 (en) 2004-07-23 2008-11-20 Commonwealth Scientific And Industrial Research Organisation Method and System for Integrating Browsing Histories with Media Playlists
US8285856B1 (en) * 2004-07-23 2012-10-09 Verizon Data Services Llc Methods and systems for integrating a messaging service with an application
US20110214061A1 (en) 2010-03-01 2011-09-01 Ashley Edwardo King User Interface for Managing Client Devices
JP4332089B2 (ja) 2004-08-19 2009-09-16 ソニー株式会社 再生装置、再生方法および再生プログラム、ならびに、記録媒体
US20060075428A1 (en) 2004-10-04 2006-04-06 Wave7 Optics, Inc. Minimizing channel change time for IP video
JP2007065928A (ja) 2005-08-30 2007-03-15 Toshiba Corp 情報記憶媒体、情報処理方法、情報転送方法、情報再生方法、情報再生装置、情報記録方法、情報記録装置、及びプログラム
US7412149B2 (en) 2004-10-28 2008-08-12 Bitband Technologies, Ltd. Trick mode generation in video streaming
JP2008523539A (ja) 2004-12-13 2008-07-03 ミュビー テクノロジーズ ピーティーイー エルティーディー 媒体記録を自動的に編集する方法
US7490775B2 (en) 2004-12-30 2009-02-17 Aol Llc, A Deleware Limited Liability Company Intelligent identification of multimedia content for synchronization
US7664872B2 (en) 2005-01-05 2010-02-16 Divx, Inc. Media transfer protocol
US7434154B2 (en) 2005-01-07 2008-10-07 Dell Products L.P. Systems and methods for synchronizing media rendering
US20070214182A1 (en) 2005-01-15 2007-09-13 Outland Research, Llc Establishment-based media and messaging service
KR100567157B1 (ko) 2005-02-11 2006-04-04 비디에이터 엔터프라이즈 인크 모바일 환경에서의 플레이리스트를 통한 다수 파일의 스트리밍 방법 및 그 시스템
US7818350B2 (en) 2005-02-28 2010-10-19 Yahoo! Inc. System and method for creating a collaborative playlist
US8176565B2 (en) 2005-04-15 2012-05-08 Sony Corporation Information processing apparatus, information processing method, and computer program
WO2006115060A1 (ja) 2005-04-22 2006-11-02 Sony Corporation 記録装置および記録方法、再生装置および再生方法、プログラム、並びに記録媒体
US8321041B2 (en) 2005-05-02 2012-11-27 Clear Channel Management Services, Inc. Playlist-based content assembly
CA2605239A1 (en) 2005-05-02 2006-11-09 University Of Virginia Patent Foundation Systems, devices, and methods for interpreting movement
US7686215B2 (en) 2005-05-21 2010-03-30 Apple Inc. Techniques and systems for supporting podcasting
JP4731214B2 (ja) 2005-06-17 2011-07-20 ソニー エリクソン モバイル コミュニケーションズ, エービー 携帯端末装置、コンテンツ配信装置、コンテンツ配信システム、及び通信プログラム
US20080005348A1 (en) 2005-06-24 2008-01-03 David Kosiba System and method for enabling playlist navigation of digital multimedia content
CN101223778B (zh) 2005-07-18 2012-11-07 汤姆森许可贸易公司 使用元数据来处理多个视频流的方法和设备
US7680824B2 (en) 2005-08-11 2010-03-16 Microsoft Corporation Single action media playlist generation
US20070055743A1 (en) 2005-09-02 2007-03-08 Pirtle Ross M Remote control media player
US20070174147A1 (en) 2005-12-30 2007-07-26 Realnetworks System and method for updating a playlist based upon ratings
JP2007115293A (ja) 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
JP2007158414A (ja) 2005-11-30 2007-06-21 Matsushita Electric Ind Co Ltd コンテンツ配信システム及びコンテンツ仲介サーバ
TW200723081A (en) 2005-12-13 2007-06-16 Universal Scient Ind Co Ltd Circular multimedia playback progress indicator and method of indicating signals thereof
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
WO2007111312A1 (ja) 2006-03-28 2007-10-04 Pioneer Corporation コンテンツ配信システム、サーバ装置、コンテンツ配信方法およびプログラム
US7730420B1 (en) 2006-05-03 2010-06-01 The Weather Channel, Inc. Systems and methods for creating a playlist
US20070282905A1 (en) 2006-06-06 2007-12-06 Sony Ericsson Mobile Communications Ab Communication terminals and methods for prioritizing the playback of distributed multimedia files
WO2008094279A1 (en) 2006-06-06 2008-08-07 Cts Media A method and system for dynamic management of multiple media data streams
BRPI0621786A2 (pt) * 2006-06-27 2011-12-20 Thomson Licensing solicitação de conteúdo entre parcerias com desempenho monitorado
US20080133603A1 (en) 2006-08-28 2008-06-05 Lawrence Fischer System and method for media publishing
WO2008030333A2 (en) 2006-09-01 2008-03-13 Rowe International Corporation Automatic music management methods and systems
KR20080020868A (ko) 2006-09-01 2008-03-06 삼성전자주식회사 스트리밍 컨텐츠 기록과 재생에 관한 장치 및 방법
JP4694448B2 (ja) 2006-09-13 2011-06-08 アルパイン株式会社 オーディオ装置
US20080109888A1 (en) 2006-09-14 2008-05-08 Shah Ullah Methods and systems for securing content projected to a nearby device
US20080091717A1 (en) 2006-09-27 2008-04-17 Zachary Adam Garbow Generation of Collaborative Playlist Based Upon Musical Preference Data from Multiple Digital Media Players
KR100928090B1 (ko) 2006-10-30 2009-11-23 주식회사 한랭크닷컴 웹상의 텍스트를 음악으로 재생하는 저작 시스템 및 방법
US9544259B2 (en) 2006-11-08 2017-01-10 Open Invention Network, Llc Apparatus and method for dynamic streaming of multimedia files
US8176058B2 (en) 2006-11-30 2012-05-08 Yahoo! Inc. Method and systems for managing playlists
US8219636B2 (en) 2006-12-18 2012-07-10 Verizon Patent And Licensing Inc. Networked media recording
WO2008081415A2 (en) 2006-12-28 2008-07-10 France Telecom Media file server
WO2008085205A2 (en) 2006-12-29 2008-07-17 Prodea Systems, Inc. System and method for providing network support services and premises gateway support infrastructure
US20080256129A1 (en) 2006-12-31 2008-10-16 Robert Salinas Method and System of Creating Media Playlists and Sending to Mobile Devices
US20080159715A1 (en) 2007-01-03 2008-07-03 Microsoft Corporation Contextual linking and out-of-band delivery of related online content
US20080209066A1 (en) 2007-01-24 2008-08-28 Spio Mary A Method and apparatus for providing continuous playback of media programs at a remote end user computer
US20100281042A1 (en) 2007-02-09 2010-11-04 Novarra, Inc. Method and System for Transforming and Delivering Video File Content for Mobile Devices
JP4389179B2 (ja) 2007-02-27 2009-12-24 ブラザー工業株式会社 メディア接続装置、メディア接続システム、メディア接続システムの操作方法
US10382514B2 (en) 2007-03-20 2019-08-13 Apple Inc. Presentation of media in an application
JP2008251082A (ja) 2007-03-30 2008-10-16 Hitachi Ltd 録画システムおよび録画再生方法
US20080250319A1 (en) 2007-04-05 2008-10-09 Research In Motion Limited System and method for determining media playback behaviour in a media application for a portable media device
US20080271076A1 (en) 2007-04-27 2008-10-30 General Instrument Corporation Method and Apparatus for Switching Between Edge Device Resources in an SDV System
EP2179394A4 (en) 2007-07-03 2012-05-30 3M Innovative Properties Co SYSTEM AND METHOD FOR GIVING CONTENT CONTENT TO SCHEDULE SAMPLES FOR MEASURING EFFECTS OF THE CONTENTS PRESENTED
US7769829B1 (en) 2007-07-17 2010-08-03 Adobe Systems Inc. Media feeds and playback of content
TW200910864A (en) * 2007-08-22 2009-03-01 Darling Digital Co Ltd System and method for transmitting audio/video stream in a point-to-point manner
US10580459B2 (en) * 2007-08-23 2020-03-03 Sony Interactive Entertainment America Llc Dynamic media interaction using time-based metadata
DE102007041143B4 (de) 2007-08-30 2010-04-08 Siemens Enterprise Communications Gmbh & Co. Kg Verfahren zum Analysieren von gleichzeitig übertragenen, verschlüsselten Datenströmen in IP-Netzwerken
US20120162351A1 (en) 2007-09-19 2012-06-28 Feldman Michael R Multimedia, multiuser system and associated methods
WO2009046435A1 (en) 2007-10-05 2009-04-09 Aharon Mizrahi System and method for enabling search of content
CN101448009B (zh) 2007-11-27 2013-02-20 鸿富锦精密工业(深圳)有限公司 音乐同步播放系统、方法及音乐播放器
US9734198B2 (en) 2007-11-30 2017-08-15 Red Hat, Inc. Query processing
US8543622B2 (en) 2007-12-07 2013-09-24 Patrick Giblin Method and system for meta-tagging media content and distribution
EP2235642A4 (en) 2007-12-13 2016-08-03 Highwinds Holdings Inc CONTENT DELIVERY NETWORK
WO2009079065A1 (en) 2007-12-14 2009-06-25 Clear Channel Management Services, L.P. Dynamic audio file and method of use
US8364296B2 (en) 2008-01-02 2013-01-29 International Business Machines Corporation Method and system for synchronizing playing of an ordered list of auditory content on multiple playback devices
US8677430B2 (en) 2008-01-04 2014-03-18 Apple, Inc. Content rental system
WO2009097492A1 (en) 2008-01-30 2009-08-06 Azuki Systems, Inc. Media navigation system
US8776161B2 (en) 2008-02-12 2014-07-08 Ciena Corporation Systems and methods for video processing in network edge devices
CN101990766B (zh) 2008-03-07 2013-04-03 日本胜利株式会社 服务器装置、终端装置、再生装置
US8239889B2 (en) 2008-03-10 2012-08-07 Hulu, LLC Method and apparatus for collecting viewer survey data and for providing compensation for same
US20090249222A1 (en) 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
JP2011523727A (ja) 2008-03-31 2011-08-18 パケットビデオ コーポレーション ネットワークでメディアを管理、制御及び/又はレンダリングするシステム及び方法
US20090259711A1 (en) 2008-04-11 2009-10-15 Apple Inc. Synchronization of Media State Across Multiple Devices
US20100040349A1 (en) 2008-05-01 2010-02-18 Elliott Landy System and method for real-time synchronization of a video resource and different audio resources
US8275880B2 (en) 2008-05-06 2012-09-25 Microsoft Corporation Media content programming, delivery, and consumption
US7979570B2 (en) 2008-05-12 2011-07-12 Swarmcast, Inc. Live media delivery over a packet-based computer network
US8644675B2 (en) 2008-06-06 2014-02-04 Deluxe Digital Studios, Inc. Methods and systems for use in providing playback of variable length content in a fixed length framework
KR20100000335A (ko) 2008-06-24 2010-01-06 삼성전자주식회사 유저 인터페이스, 컨텐츠 내비게이션 방법 및 컨텐츠 재생장치와 저장 매체
US8452855B2 (en) 2008-06-27 2013-05-28 Yahoo! Inc. System and method for presentation of media related to a context
US8375137B2 (en) 2008-07-22 2013-02-12 Control4 Corporation System and method for streaming audio using a send queue
US10007668B2 (en) 2008-08-01 2018-06-26 Vantrix Corporation Method and system for triggering ingestion of remote content by a streaming server using uniform resource locator folder mapping
US8473628B2 (en) 2008-08-29 2013-06-25 Adobe Systems Incorporated Dynamically altering playlists
TWI395487B (zh) * 2008-10-02 2013-05-01 Ind Tech Res Inst 應用於網狀點對點串流系統之播放延遲時間之調整方法及其電腦程式產品
EP2175577A3 (en) 2008-10-09 2012-03-28 MMI Broadcasting Ltd. Apparatus and methods for broadcasting
US9788043B2 (en) 2008-11-07 2017-10-10 Digimarc Corporation Content interaction methods and systems employing portable devices
US8527877B2 (en) 2008-11-25 2013-09-03 At&T Intellectual Property I, L.P. Systems and methods to select media content
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US8156089B2 (en) 2008-12-31 2012-04-10 Apple, Inc. Real-time or near real-time streaming with compressed playlists
US8260877B2 (en) 2008-12-31 2012-09-04 Apple Inc. Variant streams for real-time or near real-time streaming to provide failover protection
US8099476B2 (en) 2008-12-31 2012-01-17 Apple Inc. Updatable real-time or near real-time streaming
MX2011006973A (es) 2008-12-31 2011-12-06 Apple Inc Transmision de flujos de datos en tiempo real o en tiempo casi real.
US8161137B2 (en) 2009-01-16 2012-04-17 At&T Intellectual Property I., L.P. Environment delivery network
US8026805B1 (en) 2009-04-09 2011-09-27 Adobe Systems Incorporated Media tracker
US8429287B2 (en) 2009-04-29 2013-04-23 Rangecast Technologies, Llc Network audio distribution system and method
US10410222B2 (en) 2009-07-23 2019-09-10 DISH Technologies L.L.C. Messaging service for providing updates for multimedia content of a live event delivered over the internet
EP2280521A1 (en) 2009-07-30 2011-02-02 Alcatel Lucent Method of switching media content for a mobile apparatus
WO2011020088A1 (en) 2009-08-14 2011-02-17 Azuki Systems, Inc. Method and system for unified mobile content protection
WO2011022405A2 (en) 2009-08-17 2011-02-24 Akamai Technologies, Inc. Method and system for http-based stream delivery
US20110055876A1 (en) 2009-08-26 2011-03-03 Lewis Holly Lynn Universal Entertainment Unification System
US8392600B2 (en) 2009-09-14 2013-03-05 Adobe Systems Incorporated Dynamic stream switch control
US20110096828A1 (en) 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
KR20110034820A (ko) 2009-09-29 2011-04-06 엘지전자 주식회사 대화형 프로그램 가이드를 디스플레이하는 방법, 대화형 프로그램 가이드를 디스플레이하는 사용자 장치, 통합 데이터 가이드 정보 목록을 제공하는 방법 및 통합 데이터 가이드 정보 목록 제공 장치
US9237387B2 (en) 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming
EP2486491A4 (en) 2009-10-06 2013-10-23 Unwired Planet Llc MANAGING NETWORK TRAFFIC BY EDITING A MANIFEST FILE AND / OR USING A INTERMEDIATE FLOW CONTROL
RU2622621C2 (ru) 2009-11-04 2017-06-16 Амотек Ко., Лтд. Система и способ для потоковой передачи воспроизводимого контента
CN102055717B (zh) * 2009-11-09 2014-08-13 华为技术有限公司 快速播放的方法、终端及服务器
EP2502143B1 (en) 2009-11-16 2019-10-30 Twentieth Century Fox Film Corporation Non-destructive file based mastering for multiple languages and versions
KR20110072728A (ko) * 2009-12-23 2011-06-29 삼성전자주식회사 셋탑박스간 영상 이어 보기 서비스 제공 방법 및 장치
KR101636108B1 (ko) 2010-01-18 2016-07-04 텔레폰악티에볼라겟엘엠에릭슨(펍) 에이치티티피 미디어 스트림 분배를 위한 방법과 배열
US8972541B2 (en) 2010-02-12 2015-03-03 Alcatel Lucent Method and apparatus providing access network aware presence to applications
EP2362375A1 (en) 2010-02-26 2011-08-31 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Apparatus and method for modifying an audio signal using harmonic locking
US8745388B2 (en) 2010-03-22 2014-06-03 EchoStar Technologies, L.L.C. Systems and methods for securely streaming media content
US8560642B2 (en) 2010-04-01 2013-10-15 Apple Inc. Real-time or near real-time streaming
GB201105502D0 (en) 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
US9043484B2 (en) 2010-04-02 2015-05-26 Disney Enterprises, Inc. Streaming playback and dynamic ad insertion
US8954596B2 (en) 2010-04-02 2015-02-10 Netflix, Inc. Dynamic virtual chunking of streaming media content
TWI451279B (zh) * 2010-04-07 2014-09-01 Apple Inc 即時或接近即時串流傳輸之內容存取控制
JP2013528332A (ja) 2010-05-27 2013-07-08 エスエムエスシイ・ホールディングス・エス エイ アール エル メディアストリームのシームレスな転送
US8555163B2 (en) 2010-06-09 2013-10-08 Microsoft Corporation Smooth streaming client component
US9485546B2 (en) * 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
AU2010202741B1 (en) 2010-06-30 2010-12-23 Adeia Media Holdings Llc Dynamic chunking for media streaming
US20130124994A1 (en) 2010-07-20 2013-05-16 Thomson Licensing Method for content presentation during trick mode operations
US8554938B2 (en) 2010-08-31 2013-10-08 Millind Mittal Web browser proxy-client video system and method
US20120233345A1 (en) 2010-09-10 2012-09-13 Nokia Corporation Method and apparatus for adaptive streaming
US10637891B2 (en) 2010-11-02 2020-04-28 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for media description delivery
EP2451151B1 (en) 2010-11-08 2014-08-13 Deluxe Media Inc. Method and apparatus for use in controlling the playback of contents related with a recorded content.
EP2638682A4 (en) 2010-11-12 2014-07-23 Realnetworks Inc TRAFFIC MANAGEMENT IN ADAPTIVE STREAMING PROTOCOLS
US9510061B2 (en) 2010-12-03 2016-11-29 Arris Enterprises, Inc. Method and apparatus for distributing video
US9800941B2 (en) 2011-01-03 2017-10-24 Curt Evans Text-synchronized media utilization and manipulation for transcripts
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
US20120297423A1 (en) 2011-02-18 2012-11-22 Aereo, Inc. Method and system for program and stream control of video to target device
US8798777B2 (en) 2011-03-08 2014-08-05 Packetvideo Corporation System and method for using a list of audio media to create a list of audiovisual media
US8849950B2 (en) 2011-04-07 2014-09-30 Qualcomm Incorporated Network streaming of video data using byte range requests
US8510555B2 (en) 2011-04-27 2013-08-13 Morega Systems Inc Streaming video server with virtual file system and methods for use therewith
US20120284804A1 (en) 2011-05-02 2012-11-08 Authentec, Inc. System and method for protecting digital contents with digital rights management (drm)
US9462024B2 (en) 2011-06-08 2016-10-04 Futurewei Technologies, Inc. System and method of media content streaming with a multiplexed representation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100080290A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US20100235472A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth, stateless client media streaming
US20110116772A1 (en) * 2009-11-13 2011-05-19 Samsung Electronics Co., Ltd. Method and apparatus for providing trick play service
US20110125918A1 (en) * 2009-11-13 2011-05-26 Samsung Electronics Co., Ltd. Adaptive streaming method and apparatus

Also Published As

Publication number Publication date
EP2705671A1 (en) 2014-03-12
HK1193291A1 (zh) 2014-09-12
US9832245B2 (en) 2017-11-28
KR20140019003A (ko) 2014-02-13
US20140379873A1 (en) 2014-12-25
EP3002954A1 (en) 2016-04-06
AU2012262242B2 (en) 2015-07-02
US20120311094A1 (en) 2012-12-06
CN103650526B (zh) 2017-02-15
CN103650526A (zh) 2014-03-19
WO2012166813A1 (en) 2012-12-06
EP2705671B1 (en) 2015-12-16
TW201315211A (zh) 2013-04-01
US8856283B2 (en) 2014-10-07
TWI505676B (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
KR101535366B1 (ko) 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트
US20210263981A1 (en) Playlists for real-time or near real-time streaming
KR101593771B1 (ko) 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트
JP6141926B2 (ja) リアルタイム又はリアルタイムに近いストリーミング
CA2748548C (en) Real-time or near real-time streaming
US8260877B2 (en) Variant streams for real-time or near real-time streaming to provide failover protection
US8280863B2 (en) Real-time or near real-time streaming with compressed playlists
AU2012262242A1 (en) Playlists for real-time or near real-time streaming
WO2011123821A1 (en) Real-time or near real-time streaming
AU2015221573B2 (en) Playlists for real-time or near real-time streaming
AU2016202709B2 (en) Real-time or near real-time streaming

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
FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 5