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

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

Info

Publication number
KR20140019449A
KR20140019449A KR1020137034815A KR20137034815A KR20140019449A KR 20140019449 A KR20140019449 A KR 20140019449A KR 1020137034815 A KR1020137034815 A KR 1020137034815A KR 20137034815 A KR20137034815 A KR 20137034815A KR 20140019449 A KR20140019449 A KR 20140019449A
Authority
KR
South Korea
Prior art keywords
playlist
audio
program
content
file
Prior art date
Application number
KR1020137034815A
Other languages
English (en)
Other versions
KR101593771B1 (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 KR20140019449A publication Critical patent/KR20140019449A/ko
Application granted granted Critical
Publication of KR101593771B1 publication Critical patent/KR101593771B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia components thereof involving special audio data, e.g. different tracks for different languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4722End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting additional data associated with the content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4825End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/485End-user interface for client configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/485End-user interface for client configuration
    • H04N21/4856End-user interface for client configuration for language selection, e.g. for the menu or subtitles
    • 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/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • 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/81Monomedia components thereof
    • 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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/439Processing of audio elementary streams
    • H04N21/4394Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks

Abstract

HTTP 스트리밍 시스템과 같은 콘텐츠 스트리밍 시스템은, 변형 오디오 재생 리스트와 별개일 수 있는 비디오 재생 리스트에 의해 지정된 비디오 프로그램과 같은 동일한 프로그램에 대해, 영어로 된 하나의 재생 리스트와 스페인어로 된 하나의 재생 리스트와 같은 상이한 오디오 재생 리스트를 식별하는 변형 오디오 재생 리스트를 이용할 수 있다. 클라이언트는 그러한 변형 오디오 재생 리스트를 이용하여 동일한 프로그램에 대한 특정한 오디오 콘텐츠를 선택할 수 있고, 상기 특정한 오디오 콘텐츠는 상기 변형 오디오 재생 리스트에서 대안적인 오디오 콘텐츠에 대한 대안적인 URL 집합 중에서 상기 변형 오디오 재생 리스트 내의 하나의 URL에 의해 나타낼 수 있다.

Description

실시간 또는 준 실시간 스트리밍을 위한 재생 리스트{PLAYLISTS FOR REAL-TIME OR NEAR REAL-TIME STREAMING}
관련 출원
본 출원은, 35 U.S.C. 119(e)에 따라, 2011년 6월 3일 출원된 미국 가출원 제61/493,324호의 출원 일자의 이득을 주장한다. 본 미국 특허 출원은 또한 다음과 같은 미국 특허 출원들과 관련되며, 그 각각은 본 명세서에서 참조 문헌으로 인용된다.
(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)에게 제공된다. 그러한 명칭은 매체 자체라기보다 매체의 전달 방법을 지칭한다.
현재의 스트리밍 서비스는 일반적으로 특화된 서버에게 "라이브" 콘텐츠를 최종 사용자에게 배포할 것을 요구한다. 어떠한 대규모 배치에서도, 이는 많은 비용을 초래할 수 있고, 설정 및 실행에 특화된 기술을 필요로 한다. 이는 스트리밍을 위해 이용가능한 콘텐츠 라이브러리가 별로 바람직하지 못한 결과를 야기한다.
일 실시예에서, HTTP 스트리밍 시스템은 비디오 콘텐츠에 대한 재생 리스트(playlist)도 갖는 동일한 비디오 프로그램에 대해, 예를 들어 하나가 영어이고 다른 하나가 스페인어이고 또 다른 하나가 중국어로 된 상이한 오디오 재생 리스트를 식별하는 변형(variant) 재생 리스트를 이용할 수 있다. 예를 들어, 베이스볼 게임(baseball game)과 같은 라이브(live) 스포츠 이벤트는 서버로부터 클라이언트로 전송된 비디오 재생 리스트를 가질 수 있고 동일한 라이브 스포츠 이벤트는 상이한 언어 또는 상이한 커버리지(coverage) 관점(이를테면 게임을 방송하는 국제 방송사에 대한 게임을 방송하는 지역 방송사)에 해당하는 상이한 오디오 재생 리스트를 지정하는 변형 오디오 재생 리스트를 가질 수 있다. 클라이언트 장치는 서버에서 비디오 재생 리스트를 다운로드하고 또한 변형 오디오 재생 리스트도 다운로드한 다음, 클라이언트 장치는 변형 오디오 재생 리스트에서 적절한 오디오 프로그램을 선택하고 그 선택된 적절한 오디오 프로그램에 해당하는 적절한 오디오 재생 리스트를 다운로드할 수 있다. 다운로드된 비디오 재생 리스트와 선택된 오디오 재생 리스트 둘 다를 이용하여, 클라이언트는 두 재생 리스트의 처리를 동시에, 일 실시예에서는 독립적으로 시작하여 비디오 및 오디오를 클라이언트 장치에서 생성 및 프리젠테이션(present)할 수 있다.
일 실시예에서, 클라이언트 장치에서의 방법은 프로그램의 변형(variant) 오디오 재생 리스트(playlist)를 수신하는 동작 - 상기 변형 오디오 재생 리스트는 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하고, 상기 URL 집합 내의 각 URL은 상기 프로그램의 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ; 상기 상이한 오디오 콘텐츠 중 하나에 대한 상기 URL 집합 중 제1 URL을 선택하는 동작 - 상기 제1 URL은 제1 재생 리스트를 나타냄 - ; 상기 제1 재생 리스트를 나타내는 상기 제1 URL을 전송하는 동작; 상기 제1 재생 리스트를 수신하는 동작; 및 상기 제1 재생 리스트를 처리하여 상기 프로그램의 오디오 콘텐츠를 검색하는 동작을 포함할 수 있다. 일 실시예에서, 상기 방법은 오디오 선호도(preference)를 결정하는 단계를 더 포함할 수 있고, 이러한 오디오 선호도는 사용자 선호도의 설정과 같이 사용자에 의해 설정될 수 있고, 이러한 오디오 선호도는 상기 방법에서 상기 제1 URL의 선택을 유발할 수 있다. 일 실시예에서, 상기 방법은 상기 프로그램에 대한 비디오 재생 리스트를 수신하는 단계를 더 포함할 수 있고, 상기 비디오 재생 리스트는 상기 프로그램의 비디오 콘텐츠에 대한 URL을 포함할 수 있고, 상기 비디오 콘텐츠의 각 URL은 상기 비디오 콘텐츠의 시간의 일부와 연관되거나 관련된다. 이러한 시간의 일부는 상기 비디오 재생 리스트가 처리되는 동안 상기 클라이언트 장치에 의해 동시에 처리되는 상기 오디오 재생 리스트에 대한 시간의 일부와 일치한다. 상기 방법은 또한 상기 변형 오디오 재생 리스트를 이용하여 상이한 오디오 재생 리스트를 선택함으로써 상기 오디오 콘텐츠에 대한 URL들 사이를 전환하는 단계를 포함할 수 있고; 일 실시예에서, 상기 변형 오디오 재생 리스트에서 오디오 재생 리스트들 사이를 전환하는 단계는 상기 비디오 재생 리스트의 재생과 독립적으로 수행될 수 있다. 상기 방법은 일 실시예에서 상기 오디오 재생 리스트와 상기 비디오 재생 리스트를 동시에 그리고 독립적으로 처리하는 단계를 더 포함할 수 있고; 예를 들어, 오디오 재생기인 제1 소프트웨어 컴포넌트는 상기 비디오 재생 리스트를 처리하는 제2 소프트웨어 컴포넌트와 독립적으로 상기 오디오 재생 리스트를 처리할 수 있다. 또한, 일 실시예에서, 오디오 다운로드 모듈은 오디오 콘텐츠를 독립적으로 다운로드 및 처리할 수 있는 반면에, 비디오 다운로드 모듈은 비디오 콘텐츠를 개별적으로 다운로드 및 처리할 수 있다. 일 실시예에서, 상기 오디오 재생 리스트를 통해 검색된 오디오 콘텐츠 내의 타임스탬프(timestamps)와 상기 비디오 재생 리스트를 통해 검색된 비디오 콘텐츠 내의 타임스탬프는 동일한 시간 기간을 지정한다. 또한, 상이한 오디오 콘텐츠를 나타내는 URL 집합 내의 각 URL은 동일한 시간 기간을 지정하는 타임스탬프를 포함한다.
본 발명의 일 실시예에서 서버 장치에 의해 수행되는 방법은 장치로부터의 요청에 따라, 요청된 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하는 변형 오디오 재생 리스트를 전송하는 단계를 포함할 수 있고, 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타낸다. 상기 방법은 상기 장치로부터 상기 URL 집합 내의 제1 URL을 수신하고, 상기 제1 URL를 수신함에 따라, 제1 오디오 재생 리스트를 상기 장치로 전송하는 단계를 더 포함할 수 있고, 상기 제1 URL은 상기 제1 오디오 재생 리스트를 나타낸다.
다른 방법이 본 명세서에서 설명되고, 기계 판독가능한 비일시적인 저장 매체도 또한 본 명세서에서 설명되며, 이러한 방법을 수행하는 시스템 또한 본 명세서에서 설명된다.
본 발명은 같은 참조 부호가 유사한 구성 요소를 나타내는 첨부의 도면에서 제한이 아니라 예로서 예시되어 있다.
도 1은 실시간, 또는 준 실시간 콘텐츠를 송수신할 수 있는 서버 및 클라이언트의 일 실시예의 블록도이다.
도 2a는 하나 이상의 서버 장치가 비-스트리밍 프로토콜을 이용하여 미디어 콘텐츠를 지원하도록 하는 기술의 일 실시예의 흐름도이다.
도 2b는 하나 이상의 서버 장치가 동적으로 업데이트된 재생 리스트를 하나 이상의 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다.
도 2c는 하나 이상의 서버 장치가 다중 비트 레이트를 이용하여 미디어 콘텐츠를 클라이언트 장치로 제공하도록 하는 기술의 일 실시예의 흐름도이다.
도 3a는 클라이언트 장치가 비-스트리밍 프로토콜을 이용하여 콘텐츠의 스트리밍을 지원하는 기술의 일 실시예의 흐름도이다.
도 3b는 클라이언트 장치가 다중 비트 레이트를 이용하여 콘텐츠의 스트리밍을 지원하도록 하는 기술의 일 실시예의 흐름도이다.
도 4는 서버 스트림 에이전트의 일 실시예의 블록도이다.
도 5는 클라이언트 스트림 에이전트의 일 실시예의 블록도이다.
도 6은 다중 태그를 갖는 재생 리스트 파일의 일 실시예를 예시한다.
도 7은 본 명세서에 설명된 바와 같은 조립된 스트림의 재생 기술의 일 실시예의 흐름도이다.
도 8은 전자 시스템의 일 실시예의 블록도이다.
도 9a는 클라이언트 장치가 어떻게 변형 재생 리스트 내의 대안적인 콘텐츠 사이를 전환할 수 있는지에 대한 일례를 도시하는 흐름도이다.
도 9b는 클라이언트 장치가 어떻게 두 재생 리스트 내의 콘텐츠 사이를 전환할 수 있는지를 도시하는 다른 흐름도이다.
도 9c는 클라이언트 장치가 어떻게 오디오 패턴 매칭을 이용하여 콘텐츠 사이를 전환할 수 있는지에 대한 일례를 도시하는 또 다른 흐름도이다.
도 9d는 도 9c의 방법이 어떻게 오디오 패턴 매칭을 이용하여 구현되는지를 도식적으로 도시한다.
도 10은 동일한 프로그램의 상이한 오디오 콘텐츠에 대한 URL들을 포함할 수 있는 변형 재생 리스트의 일례를 도시한다.
도 11은 동일한 프로그램의 오디오 콘텐츠의 변형들에 대한 URL들을 포함하는 변형 재생 리스트를 이용하기 위한 일 실시예의 방법을 도시하는 흐름도이다.
도 12는 본 명세서에 설명된 실시예들 중 하나 이상에서 이용될 수 있는 다양한 컴포넌트를 갖는 클라이언트 장치의 일례를 도시한다.
도 13은 서버 장치 또는 서버 장치들의 집합에 의해 수행되는 일 실시예에 따른 방법을 도시하는 흐름도이다.
도 14는 본 발명의 일부 실시예에 이용가능한 예시적인 API 아키텍처의 블록도를 예시한다.
도 15는 본 발명의 일부 실시예에 이용가능한 소프트웨어 스택의 예시적인 실시예를 도시한다.
후술하는 설명에서는, 많은 구체적인 상세 내용이 기술된다. 그러나, 본 발명의 실시예들은 이러한 구체적인 상세 내용 없이도 실시될 수 있다. 다른 경우에, 잘 알려진 회로, 구조 및 기술은 본 설명의 이해를 불명확하게 하지 않도록 하기 위해 상세히 도시되지 않았다.
본 설명은 그래픽 사용자 인터페이스 이미지의 삽화와 같은, 저작권에 의해 보호되는 내용을 포함한다. 이로써 본 발명의 양수인을 포함하여 본 저작권의 소유자는 이러한 내용에 있어서 저작권을 포함하여 자신들의 권리를 보유한다. 본 저작권자는 특허 문서 또는 특허 명세서가 미국 특허 상표청의 파일 또는 기록에 나타나 있는 경우에 누구든지 이를 복사하여도 반대하지 않지만, 그렇지 않다면 무엇이든지 모든 저작권을 보유한다. 저작권 Apple Inc. 2009.
일 실시예에서, 본 명세서에 설명된 기술 및 컴포넌트는 비-스트리밍(non-streaming) 프로토콜(예를 들어, HTTP) 및 다른 기술(예를 들어, 동화상 전문가 그룹(MPEG) 스트림)을 이용하여 스트리밍 경험을 전달하는 메커니즘을 포함할 수 있다. 예를 들어, 준 실시간(near real-time) 스트리밍 경험은 HTTP를 이용하여 "라이브(live)" 음악 또는 스포팅(sporting) 이벤트, 라이브 뉴스, 웹 카메라 피드(feed) 등을 방송하기 위해 제공될 수 있다. 일 실시예에서, 프로토콜은 입력 미디어 데이터를 다중 미디어 파일들로 분할하여 이들 분할된 미디어 파일을 서버에 저장할 수 있다. 이러한 프로토콜은 또한 클라이언트를 서버에 저장된 분할된 미디어 파일들로 향하게 하는 URI(Uniform Resource Identifier)들을 포함하는 재생 리스트(playlist) 파일을 구축할 수 있다. 분할된 미디어 파일들이 재생 리스트 파일(들)에 따라 재생되면, 클라이언트는 "라이브" 이벤트의 준 실시간 방송을 사용자에게 제공할 수 있다. 사전 녹화된 콘텐츠도 유사한 방식으로 제공될 수 있다.
본 설명의 일 양태는 선택된 프로그램의 오디오의 변형들을 제공하는 오디오 재생 리스트의 사용과 관련되며; 예를 들어, 오디오 재생 리스트는 비디오 콘텐츠에 대한 재생 리스트도 포함하는 동일한 비디오 프로그램에 대해 상이한 언어들로 된 상이한 재생 리스트를 제공할 수 있고, 여기서 그 비디오 재생 리스트는 상이한 언어들로 된 오디오 재생 리스트와 분리된다. 이러한 양태는 도 1 내지 도 9d와 함께 일부 배경 정보를 제공한 후 도 10 내지 도 15와 함께 설명될 것이다.
일 실시예에서, 서버는 부가적인 또는 대안적인 미디어 콘텐츠(예를 들어, 광고, 스포팅 이벤트와 관련된 통계, 주 프리젠테이션(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 스트림을 이용한다. 전술한 방법은 일 실시예에서 더 느린 비트 레이트에서 더 빠른 비트 레이트로의 변경과 더 빠른 비트 레이트에서 더 느린 비트 레이트로의 변경 둘 다에 이용될 수 있고 (예를 들어, 전이점의 위치를 찾으려고 시도하지 않고 가능한 빨리 더 늦은 비트 레이트 스트림으로부터 콘텐츠를 저장 및 프리젠테이션하려고 시도하는) 또 다른 방법은 더 빠른 비트 레이트에서 더 느린 비트 레이트로 변경하는 데 이용될 수 있다.
이제, 변형 오디오 재생 리스트와, HTTP 라이브 스트리밍 시스템과 함께 이들의 사용에 관한 본 발명의 일 양태가 도 10 내지 도 15와 함께 설명될 것이다. 변형 재생 리스트(1001)는 도 10에 도시되고, 이것은 동일한 라이브 스포츠 이벤트 또는 주문형 비디오 또는 영화 등과 같은 동일한 프로그램의 대응하는 복수의 다른 오디오 콘텐츠에 대한 복수의 URL을 포함할 수 있다. 또한, 변형 재생 리스트(1001)는 또한 비디오 콘텐츠에 대한 복수의 URL을 포함할 수 있고, 여기서 이들 재생 리스트 각각은 동일한 프로그램에 대한 것이고 다른 대역폭 또는 품질 레벨에 대한 것은 아니다. 비디오 콘텐츠에 대한 URL은 또한 오디오 콘텐츠를 포함할 수 있고, 만일 클라이언트 장치가 변형 오디오 재생 리스트에서 대안적인 오디오 콘텐츠를 선택한다면, 그 선택된 대안적인 콘텐츠는 비디오 재생 리스트에서 검색되거나 검색가능한 임의의 오디오의 프리젠테이션을 오버라이드(override)할 것이다. 변형 재생 리스트 또는 변형 오디오 재생 리스트를 이용하면 콘텐츠 제공자는 클라이언트 장치가 주 프리젠테이션을 오버라이드할 수 있는 다양한 다른 오디오 콘텐츠에서 선택할 옵션들을 제공할 수 있다. 일 실시예에서, 클라이언트 장치는 변형 오디오 재생 리스트에서 선택된 선택된 오디오 재생 리스트에서 단지 오디오만 재생할 수 있고, 콘텐츠의 파일에 함께 멀티플렉스된 오디오와 비디오 둘 다를 포함하는 파일에서 오디오를 검색하는 데 이용될 수 있는 비디오 재생 리스트와 같은 다른 재생 리스트에서 모든 오디오를 억제할 것이다. 이는, 콘텐츠 제공자가 대안적인 오디오 콘텐츠를 포함하는 중복(duplicate) 비디오를 저장할 것을 요구하거나 클라이언트가 단지 하나만을 필요로 할 때 모든 오디오 변형들을 다운로드할 것을 요구하지 않고, 프리젠테이션이 복수 버전의 오디오를 제공하도록 한다. 이는 또한 원 콘텐츠를 리마스터링(remastering)하지 않고 나중에 추가 오디오를 제공하도록 한다.
도 10에서 변형 재생 리스트(1001)가 URL(1003 및 1005)과 같은 비디오 재생 리스트에 대한 둘 다의 URL을 포함하고 또한 비디오 재생 리스트(1003 및 1005)에 의해 제공된 프로그램의 오디오 콘텐츠에 대해 세 개의 다른 오디오 버전(1007, 1009 및 1011)에 대한 세 개의 URL을 포함하는 것을 알 수 있다. 도 10에 도시된 예에서, 변형 재생 리스트(1001)는 대안적인 오디오 콘텐츠에 대한 URL뿐 아니라 비디오 콘텐츠에 대한 URL도 포함하고; 다른 실시예에서는, 도 10에 도시된 바와 같이 둘 다를 포함하는 단일 변형 재생 리스트를 갖는 대신 하나는 비디오 콘텐츠에 대한 URL을 포함하고 또 다른 개별 변형 재생 리스트는 변형 오디오 재생 리스트 URL을 포함하는 두 개의 개별 변형 재생 리스트가 클라이언트 장치로 제공될 수 있다는 것도 또한 인식될 것이다. 일 실시예에서, 각 오디오 전용 재생 리스트는 첨부 부록의 명세서의 섹션 6.2.4의 모든 제약 조건을 충족하는 완비된 재생 리스트이다.
또 다른 실시예에서, 대안적인 오디오(이를테면 동일한 프로그램에 대한 상이한 언어) 또는 대안적인 비디오(이를테면 동일한 프로그램에 대한 상이한 카메라 각도 또는 위치) 또는 대안적인 오디오 및 대안적인 비디오 양자의 조합을 제공할 수 있는 변형 재생 리스트에 대한 새로운 태그가 정의된다. 이 실시예에서, 새로운 태그는 다음과 같은 구문을 가질 수 있다:
#EXT-X-MEDIA:TYPE=<type>, GROUP-ID=<group-id>, NAME=<name>[,
LANGUAGE=<language-tag>], [,AUTOSELECT=<yes or no>] [,
DEFAULT=<yes or no>], URI=<url>
여기서 type은 오디오(AUDIO) 또는 비디오(VIDEO)이고, GROUP-ID는 "그룹(group)"을 정의하는 문자열(string)이고, name은 기술적인 문자열(descriptive string)이고, language-tag는 rfc 4646 언어 태그이고, AUTOSELECT는 스트림이 자동 선택될 것인지를 클라이언트에게 나타내고, DEFAULT는 그룹 내의 초기 엔트리(예를 들어, 대안적인 오디오 그룹 내의 초기 엔트리 또는 대안적인 비디오 그룹 내의 초기 엔트리)를 선택하는 데 이용되고, URI는 대안적인 오디오 재생 리스트 또는 대안적인 비디오 재생 리스트와 같은 재생 리스트의 URI이다. 이러한 유형의 새로운 태그를 이용한 변형 재생 리스트의 일례는 다음과 같다:
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="English", AUTOSELECT=YES, DEFAULT=YES,
URI="OCEANS11_20min_English_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="Commentary1", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary1_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="Commentary2", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary2_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="fre",
NAME="French", AUTOSELECT=YES, DEFAULT=NO,
URI="OCEANS11_20min_French_Stereo/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=1233110,CODECS="mp4a.40.2, avc1.4d401e",AUDIO="aac"
OCEANS11_20min_Audio_Video_500Kbs/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=2027440,CODECS="mp4a.40.2, avc1.4d4014",AUDIO="aac"
OCEANS11_20min_Audio_Video_1Mbs/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=5334235,CODECS="mp4a.40.2, avc1.4d401e",AUDIO="aac"
OCEANS11_20min_Audio_Video_3Mbs/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=9451601,CODECS="mp4a.40.2, avc1.4d401e",AUDIO="aac"
OCEANS11_20min_Audio_Video_6Mbs/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=16090967,CODECS="mp4a.40.2, avc1.64001e",AUDIO="aac"
OCEANS11_20min_Audio_Video_12Mbs/prog_index.m3u8
EXT-X-STREAMINF이라는 새로운 속성은 AUDIO=<group-id> 또는 VIDEO=<group-id>의 <type> 값이고; (서브타이틀과 같은) 다른 미디어 유형이 지정될 수 있음이 인식될 것이다. 이 실시예에서, 유형 및 명칭 값은 튜플(tuple)을 이룬다. 원한다면, 코덱(codecs) 또는 비트 레이트의 변경을 가능하게 하는 다중 그룹이 있을 수 있고, 이 실시예에서, group-id는 다중 그룹을 제공하도록 변경되고; (다중 그룹을 가능하게 하기 위해) 상이한 group-ID를 갖는 변형 재생 리스트의 일례는 다음과 같다:
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="English", AUTOSELECT=YES, DEFAULT=YES,
URI="OCEANS11_20min_English_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="Commentary1", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary1_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="Commentary2", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary2_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="fre",
NAME="French", AUTOSELECT=YES, DEFAULT=NO,
URI="OCEANS11_20min_French_Stereo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="AC3", LANGUAGE="eng",
NAME="English", AUTOSELECT=YES, DEFAULT=YES,
URI="OCEANS11_20min_English_AC3/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="AC3", LANGUAGE="eng",
NAME="Commentary1", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary1_AC3/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="AC3", LANGUAGE="eng",
NAME="Commentary2", AUTOSELECT=NO, DEFAULT=NO,
URI="OCEANS11_20min_Commentary2_AC3/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="AC3", LANGUAGE="fre",
NAME="French", AUTOSELECT=YES, DEFAULT=NO,
URI="OCEANS11_20min_French_AC3/prog_index.m3u8"
(롤링 스톤스(Rolling Stones) 비디오인 동일 프로그램에 대해 상이한 카메라 각도를 갖는) 변형 비디오 재생 리스트의 일례는 다음과 같다:
#EXT-X-MEDIA:TYPE=VIDEO, GROUP-ID="4Mbs", NAME="Angle1-Mick",
AUTOSELECT=YES, DEFAULT=NO, URI="Mick-4Mbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO, GROUP-ID="4Mbs", NAME="Angle2-Keith",
AUTOSELECT=YES, DEFAULT=NO, URI="Keith-4Mbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO, GROUP-ID="4Mbs", NAME="Angle3-Ronnie",
AUTOSELECT=YES, DEFAULT=NO, URI="Ronnie-4Mbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO, GROUP-ID="4Mbs", NAME="Angle4-Charlie",
AUTOSELECT=YES, DEFAULT=NO, URI="Charlie-4Mbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO, GROUP-ID="4Mbs", NAME="Angle5-All",
AUTOSELECT=YES, DEFAULT=YES
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="aac", LANGUAGE="eng",
NAME="English AAC", AUTOSELECT=YES, DEFAULT=YES,
URI="Stones_Angie_Audio_AAC_140kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO, GROUP-ID="AC3", LANGUAGE="eng",
NAME="English AC3", AUTOSELECT=YES, DEFAULT=YES,
URI="Stones_Angie_Audio_AC3_640kbs/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=4742970,CODECS="mp4a.40.2,
avc1.4d401e",VIDEO="4Mbs",AUDIO="aac"
All-4Mbs/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5215970,CODECS="ac-3,
avc1.4d401e",VIDEO="4Mbs",AUDIO="AC3"
All-4Mbs/prog_index.m3u8
이러한 변형 비디오 재생 리스트는 단지 하나의 비트 레이트를 갖지만, 더 많은 비트 레이트를 갖는 더 많은 변형들이 이 재생 리스트에 추가될 수 있다.
도 11은 도 10의 변형 재생 리스트(100) 또는 전술한 변형 오디오 재생 리스트와 같은 변형 오디오 재생 리스트를 처리하는 클라이언트 장치에 의해 수행될 수 있는 방법의 일례를 도시한다. 일 실시예에서, 도 11의 방법을 수행하는 클라이언트 장치는 도 8에 도시된 바와 같은 하드웨어 장치일 수 있고 도 12에 도시된 바와 같은 소프트웨어 아키텍처를 포함할 수 있다. 동작(1101)에서, 클라이언트 장치는 주문형 비디오 프로그램 또는 라이브 스포츠 이벤트, 또는 녹화된 스포츠 이벤트 또는 영화, 또는 오디오 콘텐츠를 갖는 다른 콘텐츠와 같은 프로그램을 요청할 수 있다. 특정 프로그램의 요청은 사용자 애플리케이션(1203)과 같이, 일 실시예에서 Netflix로부터의 애플리케이션 또는 메이저 리그 베이스볼로부터의 애플리케이션 또는 사용자가 콘텐츠의 카탈로그를 통해 탐색하여 콘텐츠의 카탈로그로부터 프로그램들 중 하나를 선택하도록 설계된 다른 애플리케이션일 수 있는 사용자 애플리케이션을 통해 올 수 있다. 동작(1101)에서의 요청에 따라, 클라이언트 장치는 동작(1103)에서 오디오 콘텐츠의 변형들에 대한 하나 이상의 URL을 포함하고 또한 비디오 콘텐츠의 변형들에 대한 하나 이상의 URL을 포함하는 변형 재생 리스트를 수신할 수 있다. 동작(1103)에서 수신된 변형 재생 리스트는 사용자가 이용가능한 오디오 프로그램의 변형들에서 특정 오디오 프로그램을 선택하도록 하는 사용자 인터페이스를 사용자에게 제시하기 위해 사용자 애플리케이션(1203)에 의해 처리될 수 있는 (장치(1201)의 메모리에 저장된) 변형 재생 리스트(1205)일 수 있다. 또 다른 실시예에서, 사용자에 의해 설정된 사용자 선호도는 영어를 디폴트로서 또는 중국어를 디폴트로서 또는 스페인어를 디폴트로서 설정하는 등, 디폴트 언어를 설정할 수 있고, 그 선택은 사용자 애플리케이션이 변형 재생 리스트를 처리하여 특정 오디오 재생 리스트를 선택할 때 자동으로 이용될 수 있다. 다음에, 동작(1105)에서, 클라이언트 시스템은 변형 오디오 재생 리스트에서 특정 오디오 재생 리스트를 선택하고 선택적으로 또한 (그러한 동일한 재생 리스트 또는 또 다른 변형 재생 리스트에서) 특정 비디오 재생 리스트를 선택할 수 있고; 이러한 선택은 클라이언트 장치의 사용자 인터페이스와의 사용자 상호 작용을 통해 또는 디폴트 설정 또는 사용자에 의해 미리 설정된 사용자 선호도 등을 통한 사용자 입력 없이 클라이언트 장치의 동작을 통해 수행될 수 있다. 다음에, 동작(1107)에서, 클라이언트 장치는 동작(1105)에서 하나가 선택된 경우 선택된 오디오 재생 리스트에 대한 URL과 선택된 비디오 재생 리스트에 대한 URL을 전송할 수 있다. 이러한 전송된 URL에 따라, 클라이언트 장치는 동작(1109)에서 선택된 오디오 재생 리스트를 수신 및 처리하고; 오디오 재생 리스트의 처리는 기존의 HTTP 라이브 스트리밍 프로토콜 하에서 다른 오디오 재생 리스트의 처리와 유사한 방식으로 수행될 수 있다. 만일 선택된 비디오 재생 리스트의 URL이 또한 동작(1107)에서 선택되었다면, 클라이언트 장치는 동작(1111)에서 선택된 비디오 재생 리스트를 수신 및 처리할 것이다. 일 실시예에서, 오디오 재생 리스트의 처리는 비디오 재생 리스트의 처리와 별개이고 구별되지만, 이들은 동시에 수행된다. 일 실시예에서, 오디오 재생 리스트의 소프트웨어 다운로드 모듈은 도 12의 아키텍처에 도시된 바와 같은 비디오 재생 리스트의 비디오 다운로드 모듈과 별개일 수 있다. 일 실시예에서, 비디오 재생 리스트는 오디오도 포함하는 미디어 파일을 말하며, 그 오디오는 프로그램에 대한 디폴트 또는 주 프리젠테이션 오디오일 수 있고, 그 경우 클라이언트 장치는 그 디폴트 오디오의 재생을 억제할 것이다. 비디오 재생 리스트에 의해 나타낸 그 디폴트 오디오의 재생 억제는 오디오가 파일의 별개 부분인 경우 그 오디오를 다운로딩하지 않거나 오디오의 다운로딩이 일 실시예에서 회피될 수 없는 경우 다운로드된 오디오를 처리하지 않음으로써 수행될 수 있다.
도 12는 도 11에 도시된 방법 또는 변형 오디오 재생 리스트와 함께 설명된 다른 방법들을 수행할 수 있는 클라이언트 장치의 아키텍처의 일례를 도시한다. 클라이언트 장치(1201)에 도시된 컴포넌트들은 (도 8에 도시된 시스템과 같은 데이터 처리 시스템에서 실행하는) 소프트웨어 컴포넌트 또는 하드웨어 컴포넌트 또는 소프트웨어와 하드웨어의 조합일 수 있다. 일 실시예에서, 사용자 애플리케이션(1203)은 사용자에 의한 영화 또는 베이스볼 게임의 디스플레이 또는 라디오 쇼의 청취 등을 위해 실행되는 소프트웨어 애플리케이션이다. 예를 들어, 일 실시예에서, 사용자 애플리케이션은 Netflix에 의해 영화를 시청하기 위해 제공된 애플리케이션 또는 메이저리그 베이스볼에 의해 라이브 베이스볼 게임 또는 녹화된 베이스볼 게임을 시청하기 위해 제공된 애플리케이션일 수 있다. 사용자 애플리케이션(1203)은 변형 재생 리스트(1205)를 처리하여 사용자가 변형 오디오 재생 리스트에 의해 지정된 다양한 다른 오디오 콘텐츠에서 선택하도록 하는 사용자 인터페이스를 사용자에게 제시할 수 있고; 대안으로, 사용자 애플리케이션(1203)은 사용자 상호 작용 없이 변형 재생 리스트(1205)와 같은 변형 오디오 재생 리스트를 검색하여 적절한 오디오 콘텐츠를 선택 및 정의함으로써 이전에 설정된 사용자 선호도에 기초하여 특정한 오디오 콘텐츠를 자동으로 선택할 수 있다. 사용자 애플리케이션(1203)은 오디오 재생기(1207) 및 비디오 재생기(1209)와 상호 작용하여 이들 재생기 각각에서 콘텐츠를 수신 및 프리젠테이션할 수 있다. 오디오 재생기(1207)는 비디오 재생 리스트(1213)를 처리하는 비디오 재생기(1209)의 처리와 독립적으로 오디오 재생 리스트(1211)를 처리할 수 있다. 비디오 재생 리스트(1213)는 본 명세서에 설명된 바와 같은 통상의 비디오 재생 리스트인 반면, 오디오 재생 리스트(1211)는 오디오 전용 콘텐츠를 제공하는 재생 리스트이다. 만일 비디오 재생 리스트(1213)가 오디오 데이터를 포함하는 URL을 포함한다면, 비디오 재생기(1209)는 오디오 데이터를 다운로딩하지 않거나 다운로드된 오디오 데이터를 폐기함으로써 비디오 재생 리스트에서 오디오를 억제해야 한다. 오디오 재생기(1207) 및 비디오 재생기(1209)는 일 실시예에서 각각 이들 자신의 데이터 버퍼를 갖고 일 실시예에서 각각 이들 자신의 다운로드 모듈을 갖는다. 특히, 오디오 재생기(1207)는 오디오 데이터 버퍼(1215)에 연결되고, 이는 다시 오디오 다운로드 모듈(1219)에 연결된다. 오디오 다운로드 모듈(1219)은 API를 통해 오디오 데이터를 클라이언트 장치 내에 있는 하나 이상의 네트워크 인터페이스(1223)(예를 들어, 셀룰러 전화 모뎀 또는 WiFi 라디오 등)를 통해 다운로딩하도록 하는 소프트웨어 모듈일 수 있다. 하나 이상의 네트워크 인터페이스(1223)는 다시 재생 리스트 및 콘텐츠를 저장 및 제공하는 하나 이상의 서버(1227)에도 연결된 인터넷과 같은 하나 이상의 네트워크(1225)에 연결된다. 네트워크(1225)를 통해 다운로드된 오디오 데이터는 오디오 데이터 버퍼(1215)에 저장된 다음 스피커 또는 다른 변환기를 통해 사용자에게 출력으로서 제공된다. 비디오 다운로드 모듈(1221)은 하나 이상의 서버(1227)로부터 네트워크 또는 네트워크들(1225)을 통해 그리고 네트워크 인터페이스(1223)를 통해 비디오 데이터를 다운로드하도록 한다. 다운로드된 비디오 데이터는 비디오 데이터 버퍼(1217)에 저장될 수 있고, 여기서 그 비디오 데이터는 비디오 재생기 또는 클라이언트 장치의 다른 컴포넌트에 의해 디스플레이 장치 상에 디스플레이하기 위해 디코드되고 처리될 수 있다. 오디오 재생기(1207) 및 비디오 재생기(1209)는 변형 오디오 재생 리스트 내의 다른 URL 사이를 전환하여 오디오 콘텐츠가 동일한 프로그램의 상이한 오디오 콘텐츠들 사이에서 전환될 수 있도록 동시에 그리고 독립적으로 동작할 수 있다. 오디오 재생기(1207) 및 비디오 재생기(1209)는 이들 각각의 재생 리스트들 각각을 처리하고 콘텐츠 자체 내의 또는 재생 리스트 내의 타임스탬프를 이용하여 재생을 동기화할 수 있다. 일 실시예에서, 오디오 콘텐츠 또는 오디오 콘텐츠의 재생 리스트에 나타낸 타임스탬프는 오디오 및 비디오의 재생이 동기화되도록 비디오 콘텐츠 또는 비디오 재생 리스트 내의 타임스탬프와 동일한 시간 기간을 차지할 수 있다. 오디오 재생기(1207) 및 비디오 재생기(1209)는 일 실시예에서 오디오 및 비디오의 재생 동안 그 둘의 동기화가 가능하도록 영화 시간 또는 실제 시간 또는 둘 다를 추적한다는 것을 알 것이다.
이제, 본 발명의 일 실시예에 따른 서버를 동작시키기 위한 방법이 도 13과 함께 설명될 것이다. 하나 이상의 서버가 도 13에 도시된 각 동작을 수행할 수 있음이 인식될 것이며; 예를 들어, 하나의 서버가 도 13의 모든 동작을 수행할 수 있거나 하나의 서버가 하나의 동작을 수행할 수 있는 반면, 또 다른 서버가 다른 동작들을 수행한다. 예를 들어, 하나의 서버는 변형 재생 리스트를 제공할 수 있는 반면, 또 다른 서버는 변형 재생 리스트에서 특정 재생 리스트가 선택된 이후의 재생 동안 이용되는 오디오 및 비디오 재생 리스트를 제공 및 전송할 수 있다. 동작(1301)에서, 서버는 프로그램 요청에 따라 상이한 오디오 재생 리스트에 대한 URL을 포함하고 선택적으로 또한 하나 이상의 비디오 재생 리스트에 대한 URL도 포함할 수 있는 변형 재생 리스트를 전송할 수 있다. 동작(1303)에서, 동일한 서버 장치 또는 또 다른 서버 장치는 선택된 오디오 및 비디오 재생 리스트에 대한 요청을 수신하고, 동작(1305)에서, 그 오디오 및/또는 비디오 재생 리스트를 전송한다. 또한, 동일한 서버 또는 다른 서버(들)는 동작(1305)에서 전송된 그러한 재생 리스트의 요청에 응답하여 실제 콘텐츠를 제공할 수 있다.
도 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 집합을 호출할 수 있다.
도 14는 본 발명의 일부 실시예에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다. 도 14에 도시된 바와 같이, 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)에 액세스할 수 있다는 것을 이해해야 한다. 도 14가 API(1820)와 상호 작용하는 단일 API-호출 컴포넌트(1830)를 예시하지만, API-호출 컴포넌트(1830)와 다른 언어(또는 동일 언어)로 작성될 수 있는 다른 API-호출 컴포넌트들도 API(1820)를 이용할 수 있음이 이해되어야 한다.
API-구현 컴포넌트(1810), API(1820), 및 API-호출 컴포넌트(1830)는 기계(예를 들어, 컴퓨터 또는 다른 데이터 처리 시스템)에 의해 판독가능한 형태로 정보를 저장하는 어떤 메커니즘이라도 포함하는 기계 판독가능한 비일시적인 저장 매체에 저장될 수 있다. 예를 들어, 기계 판독가능한 매체는 자기 디스크, 광학 디스크, 랜덤 액세스 메모리; 판독 전용 메모리, 플래시 메모리 장치 등을 포함한다.
예시적인 실시예인 도 15("소프트웨어 스택")에서, 애플리케이션은 몇몇 서비스 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 (24)

  1. 데이터 처리 시스템에 의해 실행될 때 상기 데이터 처리 시스템이 방법을 수행하도록 하는 실행가능한 프로그램 명령어를 저장한 기계 판독가능한 비일시적인 저장 매체로서, 상기 방법은,
    프로그램에 대한 변형 오디오 재생 리스트(variant audio playlist)를 수신하는 단계 - 상기 변형 오디오 재생 리스트는 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하고, 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ;
    상기 상이한 오디오 콘텐츠 중 하나에 대한 상기 URL 집합 중 제1 URL을 선택하는 단계 - 상기 제1 URL은 제1 재생 리스트를 나타냄 - ;
    상기 제1 재생 리스트를 나타내는 상기 제1 URL을 전송하는 단계;
    상기 제1 재생 리스트를 수신하는 단계; 및
    상기 제1 재생 리스트를 처리하여 상기 프로그램에 대한 오디오 콘텐츠를 검색하는 단계
    를 포함하는, 기계 판독가능한 비일시적인 저장 매체.
  2. 제1항에 있어서, 상기 방법은,
    오디오 선호도(preference)를 결정하는 단계를 더 포함하고,
    상기 제1 URL을 선택하는 단계는 사용자 선호도에 의해 설정된 상기 오디오 선호도에 기초하는, 기계 판독가능한 비일시적인 저장 매체.
  3. 제2항에 있어서, 상기 방법은,
    상기 프로그램에 대한 비디오 재생 리스트를 수신하는 단계를 더 포함하고,
    상기 비디오 재생 리스트는 상기 프로그램에 대한 비디오 콘텐츠에 대한 URL들을 포함하고, 상기 비디오 콘텐츠에 대한 각 URL은 상기 비디오 콘텐츠의 시간의 일부를 나타내는, 기계 판독가능한 비일시적인 저장 매체.
  4. 제3항에 있어서, 상기 방법은,
    상기 변형 오디오 재생 리스트에서, 오디오 콘텐츠에 대해 URL들 사이를 전환하는 단계를 더 포함하고,
    상기 전환하는 단계는 상기 비디오 재생 리스트의 재생과 독립적으로 수행되는, 기계 판독가능한 비일시적인 저장 매체.
  5. 제4항에 있어서, 상기 제1 재생 리스트 및 상기 비디오 재생 리스트는 제1 소프트웨어 컴포넌트 및 제2 소프트웨어 컴포넌트에 의해 각각 동시에 처리되고,
    상기 제1 소프트웨어 컴포넌트는 상기 제1 재생 리스트 내의 URL들에 의해 나타낸 오디오 콘텐츠를 검색하고 상기 제2 소프트웨어 컴포넌트는 상기 비디오 재생 리스트 내의 URL들에 의해 나타낸 비디오 콘텐츠를 검색하며, 상기 제1 소프트웨어 컴포넌트 및 상기 제2 소프트웨어 컴포넌트는 독립적으로 이들 각각의 콘텐츠를 검색하도록 동작하는, 기계 판독가능한 비일시적인 저장 매체.
  6. 제4항에 있어서, 상기 제1 재생 리스트를 통해 검색된 상기 오디오 콘텐츠 내의 타임스탬프(timestamps)와 상기 비디오 재생 리스트를 통해 검색된 상기 비디오 콘텐츠 내의 타임스탬프는 동일한 시간 기간을 지정하는, 기계 판독가능한 비일시적인 저장 매체.
  7. 제4항에 있어서, 상기 URL 집합 내의 각 URL은 상이한 오디오 콘텐츠를 나타내고, 상기 상이한 오디오 콘텐츠 각각은 동일한 시간 기간을 지정하는 타임스탬프를 포함하고, 상기 변형 오디오 재생 리스트 및 상기 비디오 재생 리스트는 상기 프로그램에 대한 한 번의 요청에 따라 수신되는, 기계 판독가능한 비일시적인 저장 매체.
  8. 기계로 구현된 방법으로서,
    프로그램에 대한 변형 오디오 재생 리스트를 수신하는 단계 - 상기 변형 오디오 재생 리스트는 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하고, 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ;
    상기 상이한 오디오 콘텐츠 중 하나에 대한 상기 URL 집합 중 제1 URL을 선택하는 단계 - 상기 제1 URL은 제1 재생 리스트를 나타냄 - ;
    상기 제1 재생 리스트를 나타내는 상기 제1 URL을 전송하는 단계;
    상기 제1 재생 리스트를 수신하는 단계; 및
    상기 제1 재생 리스트를 처리하여 상기 프로그램에 대한 오디오 콘텐츠를 검색하는 단계
    를 포함하는, 기계로 구현된 방법.
  9. 제8항에 있어서, 상기 방법은,
    오디오 선호도를 결정하는 단계를 더 포함하고,
    상기 제1 URL을 선택하는 단계는 사용자 선호도에 의해 설정된 상기 오디오 선호도에 기초하는, 기계로 구현된 방법.
  10. 제9항에 있어서, 상기 방법은,
    상기 프로그램에 대한 비디오 재생 리스트를 수신하는 단계를 더 포함하고,
    상기 비디오 재생 리스트는 상기 프로그램에 대한 비디오 콘텐츠에 대한 URL들을 포함하고, 상기 비디오 콘텐츠에 대한 각 URL은 상기 비디오 콘텐츠의 시간의 일부를 나타내는, 기계로 구현된 방법.
  11. 제10항에 있어서, 상기 방법은,
    상기 변형 오디오 재생 리스트에서, 오디오 콘텐츠에 대해 URL들 사이를 전환하는 단계를 더 포함하고,
    상기 전환하는 단계는 상기 비디오 재생 리스트의 재생과 독립적으로 수행되는, 기계로 구현된 방법.
  12. 제11항에 있어서, 상기 제1 재생 리스트 및 상기 비디오 재생 리스트는 제1 소프트웨어 컴포넌트 및 제2 소프트웨어 컴포넌트에 의해 각각 동시에 처리되고,
    상기 제1 소프트웨어 컴포넌트는 상기 제1 재생 리스트 내의 URL들에 의해 나타낸 오디오 콘텐츠를 검색하고 상기 제2 소프트웨어 컴포넌트는 상기 비디오 재생 리스트 내의 URL들에 의해 나타낸 비디오 콘텐츠를 검색하며, 상기 제1 소프트웨어 컴포넌트 및 상기 제2 소프트웨어 컴포넌트는 독립적으로 이들 각각의 콘텐츠를 검색하도록 동작하는, 기계로 구현된 방법.
  13. 제11항에 있어서, 상기 제1 재생 리스트를 통해 검색된 상기 오디오 콘텐츠 내의 타임스탬프와 상기 비디오 재생 리스트를 통해 검색된 상기 비디오 콘텐츠 내의 타임스탬프는 동일한 시간 기간을 지정하는, 기계로 구현된 방법.
  14. 제11항에 있어서, 상기 URL 집합 내의 각 URL은 상이한 오디오 콘텐츠를 나타내고, 상기 상이한 오디오 콘텐츠 각각은 동일한 시간 기간을 지정하는 타임스탬프를 포함하고, 상기 변형 오디오 재생 리스트 및 상기 비디오 재생 리스트는 상기 프로그램에 대한 한 번의 요청에 따라 수신되는, 기계로 구현된 방법.
  15. 데이터 처리 시스템으로서,
    프로그램에 대한 변형 오디오 재생 리스트를 수신하는 수단 - 상기 변형 오디오 재생 리스트는 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하고, 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ;
    상기 상이한 오디오 콘텐츠 중 하나에 대한 상기 URL 집합 중 제1 URL을 선택하는 수단 - 상기 제1 URL은 제1 재생 리스트를 나타냄 - ;
    상기 제1 재생 리스트를 나타내는 상기 제1 URL을 전송하는 수단;
    상기 제1 재생 리스트를 수신하는 수단; 및
    상기 제1 재생 리스트를 처리하여 상기 프로그램에 대한 오디오 콘텐츠를 검색하는 수단
    을 포함하는 데이터 처리 시스템.
  16. 데이터 처리 시스템에 의해 실행될 때 상기 데이터 처리 시스템이 방법을 수행하도록 하는 실행가능한 프로그램 명령어를 저장한 기계 판독가능한 비일시적인 저장 매체로서, 상기 방법은,
    장치로부터의 프로그램에 대한 요청에 따라, 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하는 변형 오디오 재생 리스트를 전송하는 단계 - 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ; 및
    상기 장치로부터 상기 URL 집합 내의 제1 URL을 수신하고, 상기 제1 URL을 수신함에 따라, 제1 오디오 재생 리스트를 상기 장치로 전송하는 단계 - 상기 제1 URL은 상기 제1 오디오 재생 리스트를 나타냄 - ;
    를 포함하는, 기계 판독가능한 비일시적인 저장 매체.
  17. 제16항에 있어서, 상기 방법은,
    상기 장치로부터의 상기 요청에 따라, 상기 프로그램에 대한 비디오 재생 리스트를 전송하는 단계를 더 포함하고,
    상기 비디오 재생 리스트는 상기 프로그램에 대한 비디오 콘텐츠에 대한 URL들을 포함하고, 상기 비디오 콘텐츠에 대한 각 URL은 상기 비디오 콘텐츠의 시간의 일부를 나타내는, 기계 판독가능한 비일시적인 저장 매체.
  18. 제17항에 있어서, 상기 방법은,
    상기 장치로부터 상이한 오디오 콘텐츠에 대한 상기 URL 집합 내의 제2 URL을 수신하는 단계; 및
    상기 제2 URL을 수신함에 따라, 제2 오디오 재생 리스트를 전송하는 단계를 더 포함하고,
    상기 제2 URL은 상기 제2 오디오 재생 리스트를 나타내고 상기 제2 오디오 재생 리스트는 상기 프로그램에 대한 대안적인 오디오 콘텐츠를 제공하는, 기계 판독가능한 비일시적인 저장 매체.
  19. 제18항에 있어서, 상기 제1 오디오 재생 리스트를 통해 검색된 상기 오디오 콘텐츠 내의 타임스탬프와 상기 대안적인 오디오 콘텐츠 내의 타임스탬프는 동일한 시간 기간을 지정하는, 기계 판독가능한 비일시적인 저장 매체.
  20. 기계로 구현된 방법으로서,
    장치로부터의 프로그램에 대한 요청에 따라, 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하는 변형 오디오 재생 리스트를 전송하는 단계 - 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ; 및
    상기 장치로부터 상기 URL 집합 내의 제1 URL을 수신하고, 상기 제1 URL을 수신함에 따라, 제1 오디오 재생 리스트를 상기 장치로 전송하는 단계 - 상기 제1 URL은 상기 제1 오디오 재생 리스트를 나타냄 - ;
    를 포함하는, 기계로 구현된 방법.
  21. 제20항에 있어서, 상기 방법은,
    상기 장치로부터의 상기 요청에 따라, 상기 프로그램에 대한 비디오 재생 리스트를 전송하는 단계를 더 포함하고,
    상기 비디오 재생 리스트는 상기 프로그램에 대한 비디오 콘텐츠에 대한 URL들을 포함하고, 상기 비디오 콘텐츠에 대한 각 URL은 상기 비디오 콘텐츠의 시간의 일부를 나타내는, 기계로 구현된 방법.
  22. 제21항에 있어서, 상기 방법은,
    상기 장치로부터 상이한 오디오 콘텐츠에 대한 상기 URL 집합 내의 제2 URL을 수신하는 단계; 및
    상기 제2 URL을 수신함에 따라, 제2 오디오 재생 리스트를 전송하는 단계를 더 포함하고,
    상기 제2 URL은 상기 제2 오디오 재생 리스트를 나타내고 상기 제2 오디오 재생 리스트는 상기 프로그램에 대한 대안적인 오디오 콘텐츠를 제공하는, 기계로 구현된 방법.
  23. 제22항에 있어서, 상기 제1 오디오 재생 리스트를 통해 검색된 상기 오디오 콘텐츠 내의 타임스탬프와 상기 대안적인 오디오 콘텐츠 내의 타임스탬프는 동일한 시간 기간을 지정하는, 기계로 구현된 방법.
  24. 데이터 처리 시스템으로서,
    장치로부터의 프로그램에 대한 요청에 따라, 상기 프로그램에 대한 상이한 오디오 콘텐츠에 대한 URL 집합을 포함하는 변형 오디오 재생 리스트를 전송하는 수단 - 상기 URL 집합 내의 각 URL은 상기 프로그램에 대한 상기 상이한 오디오 콘텐츠 중 하나에 해당하는 오디오 재생 리스트를 나타냄 - ; 및
    상기 장치로부터 상기 URL 집합 내의 제1 URL을 수신하고, 상기 제1 URL을 수신함에 따라, 제1 오디오 재생 리스트를 상기 장치로 전송하는 수단 - 상기 제1 URL은 상기 제1 오디오 재생 리스트를 나타냄 - ;
    을 포함하는 데이터 처리 시스템.
KR1020137034815A 2011-06-03 2012-05-30 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트 KR101593771B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161493324P 2011-06-03 2011-06-03
US61/493,324 2011-06-03
US13/225,037 2011-09-02
US13/225,037 US8843586B2 (en) 2011-06-03 2011-09-02 Playlists for real-time or near real-time streaming
PCT/US2012/040031 WO2012166816A1 (en) 2011-06-03 2012-05-30 Playlists for real-time or near real-time streaming

Publications (2)

Publication Number Publication Date
KR20140019449A true KR20140019449A (ko) 2014-02-14
KR101593771B1 KR101593771B1 (ko) 2016-02-12

Family

ID=46210452

Family Applications (1)

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

Country Status (7)

Country Link
US (1) US8843586B2 (ko)
EP (1) EP2716061B1 (ko)
KR (1) KR101593771B1 (ko)
CN (1) CN103583051B (ko)
AU (1) AU2012262245B2 (ko)
TW (1) TWI461043B (ko)
WO (1) WO2012166816A1 (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2781582B1 (fr) * 1998-07-21 2001-01-12 Technical Maintenance Corp Systeme de telechargement d'objets ou de fichiers pour mise a jour de logiciels
US8086752B2 (en) 2006-11-22 2011-12-27 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US8290603B1 (en) 2004-06-05 2012-10-16 Sonos, Inc. User interfaces for controlling and manipulating groupings in a multi-zone media system
US8234395B2 (en) 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US10613817B2 (en) 2003-07-28 2020-04-07 Sonos, Inc. Method and apparatus for displaying a list of tracks scheduled for playback by a synchrony group
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US8326951B1 (en) 2004-06-05 2012-12-04 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US8868698B2 (en) 2004-06-05 2014-10-21 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
JP4085284B2 (ja) * 2005-03-24 2008-05-14 ソニー株式会社 再生装置
JP5200204B2 (ja) 2006-03-14 2013-06-05 ディブエックス リミテッド ライアビリティー カンパニー 高信頼性システムを含む連合型デジタル権限管理機構
US8788080B1 (en) 2006-09-12 2014-07-22 Sonos, Inc. Multi-channel pairing in a media system
US8483853B1 (en) 2006-09-12 2013-07-09 Sonos, Inc. Controlling and manipulating groupings in a multi-zone media system
US9202509B2 (en) 2006-09-12 2015-12-01 Sonos, Inc. Controlling and grouping in a multi-zone media system
MX2011007344A (es) 2009-01-07 2012-02-28 Divx Inc Creacion singular, colectiva y automatizada de una guia de medios de contenido en linea.
WO2011068668A1 (en) 2009-12-04 2011-06-09 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US9247312B2 (en) 2011-01-05 2016-01-26 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
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
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
WO2013089437A1 (ko) * 2011-12-12 2013-06-20 엘지전자 주식회사 미디어 컨텐트를 수신하는 장치 및 방법
US9654821B2 (en) 2011-12-30 2017-05-16 Sonos, Inc. Systems and methods for networked music playback
US9276989B2 (en) 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US8908879B2 (en) 2012-05-23 2014-12-09 Sonos, Inc. Audio content auditioning
US9674587B2 (en) 2012-06-26 2017-06-06 Sonos, Inc. Systems and methods for networked music playback including remote add to queue
US9225307B2 (en) 2012-06-28 2015-12-29 Sonos, Inc. Modification of audio responsive to proximity detection
US9197685B2 (en) * 2012-06-28 2015-11-24 Sonic Ip, Inc. Systems and methods for fast video startup using trick play streams
US9804668B2 (en) * 2012-07-18 2017-10-31 Verimatrix, Inc. Systems and methods for rapid content switching to provide a linear TV experience using streaming content distribution
WO2014015110A1 (en) 2012-07-18 2014-01-23 Verimatrix, Inc. Systems and methods for rapid content switching to provide a linear tv experience using streaming content distribution
US9154854B1 (en) * 2012-09-19 2015-10-06 Time Warner Cable Enterprises Llc Notification in a network environment
US9008330B2 (en) 2012-09-28 2015-04-14 Sonos, Inc. Crossover frequency adjustments for audio speakers
JP6218379B2 (ja) * 2012-12-28 2017-10-25 キヤノン株式会社 送信装置、受信装置、送信方法、受信方法、及び、プログラム
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
US9647997B2 (en) 2013-03-13 2017-05-09 Nagrastar, Llc USB interface for performing transport I/O
US9888283B2 (en) 2013-03-13 2018-02-06 Nagrastar Llc Systems and methods for performing transport I/O
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US8984569B2 (en) 2013-03-15 2015-03-17 Echostar Technologies L.L.C. Chunking of multiple track audio for adaptive bit rate streaming
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
US9247363B2 (en) 2013-04-16 2016-01-26 Sonos, Inc. Playback queue transfer in a media playback system
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
US9584556B2 (en) * 2013-05-14 2017-02-28 Morega Systems Inc. Client proxy for adaptive bitrate selection in HTTP live streaming
US9798510B2 (en) 2013-05-29 2017-10-24 Sonos, Inc. Connected state indicator
US9735978B2 (en) 2013-05-29 2017-08-15 Sonos, Inc. Playback queue control via a playlist on a mobile device
US9953179B2 (en) 2013-05-29 2018-04-24 Sonos, Inc. Private queue indicator
US9495076B2 (en) 2013-05-29 2016-11-15 Sonos, Inc. Playlist modification
US9684484B2 (en) 2013-05-29 2017-06-20 Sonos, Inc. Playback zone silent connect
US10715973B2 (en) 2013-05-29 2020-07-14 Sonos, Inc. Playback queue control transition
US9703521B2 (en) 2013-05-29 2017-07-11 Sonos, Inc. Moving a playback queue to a new zone
US9094737B2 (en) 2013-05-30 2015-07-28 Sonic Ip, Inc. Network 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
US9298415B2 (en) 2013-07-09 2016-03-29 Sonos, Inc. Systems and methods to provide play/pause content
CN104378331B (zh) 2013-08-14 2019-11-29 腾讯科技(北京)有限公司 网络媒介信息的播放及响应处理方法、装置和系统
US9444870B2 (en) * 2013-09-25 2016-09-13 Ericsson Ab Adaptive video white spot learning and user bandwidth delivery control system
US9270721B2 (en) * 2013-10-08 2016-02-23 Qualcomm Incorporated Switching between adaptation sets during media streaming
US9226087B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9226073B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US20150244772A1 (en) * 2014-02-24 2015-08-27 Triple It B.V. Fast rendering of content using a mobile user 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
EP3149957B1 (en) * 2014-05-27 2019-07-03 Hewlett-Packard Development Company, L.P. Portable speaker
US20160092052A1 (en) * 2014-09-30 2016-03-31 Theater Ears, LLC Syncronizing audio playback in coordination with external video playback with auto-dimming
CN105786440A (zh) * 2014-12-23 2016-07-20 上海证大喜马拉雅网络科技有限公司 一种一键播放云端标签化频道的方法和系统
CA2973740C (en) * 2015-01-30 2021-06-08 Inscape Data, Inc. Methods for identifying video segments and displaying option to view from an alternative source and/or on an alternative device
US9635131B2 (en) 2015-02-05 2017-04-25 Qwire Inc. Media player distribution and collaborative editing
US9891880B2 (en) 2015-03-31 2018-02-13 Sonos, Inc. Information display regarding playback queue subscriptions
USD864968S1 (en) 2015-04-30 2019-10-29 Echostar Technologies L.L.C. Smart card interface
US10248376B2 (en) 2015-06-11 2019-04-02 Sonos, Inc. Multiple groupings in a playback system
US9742870B2 (en) * 2015-06-19 2017-08-22 Arris Enterprises Llc Selective download of alternate media files
CN105657579A (zh) * 2015-10-29 2016-06-08 乐视致新电子科技(天津)有限公司 直播音频切换方法、流媒体服务器及客户端
CN105898366A (zh) * 2015-12-03 2016-08-24 乐视致新电子科技(天津)有限公司 直播音频切换方法及流媒体服务器
US10075292B2 (en) 2016-03-30 2018-09-11 Divx, Llc Systems and methods for quick start-up of playback
CN105847897A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种提供及处理视频下载的方法及设备
CN106303754A (zh) * 2016-08-04 2017-01-04 天脉聚源(北京)传媒科技有限公司 一种音频数据播放方法及装置
CN106331751B (zh) * 2016-08-31 2019-05-31 广州易方信息科技股份有限公司 一种基于iOS操作系统的在线加密切片视频播放方法
US10712997B2 (en) 2016-10-17 2020-07-14 Sonos, Inc. Room association based on name
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
CN107360442A (zh) * 2017-08-29 2017-11-17 广州华多网络科技有限公司 一种直播方法、装置及电子设备
WO2019061256A1 (zh) * 2017-09-29 2019-04-04 腾讯科技(深圳)有限公司 基于流媒体的音视频播放方法及装置
CN108595709B (zh) * 2018-05-10 2020-02-18 阿里巴巴集团控股有限公司 基于区块链的音乐原创性分析方法和装置
US11838578B2 (en) * 2019-11-20 2023-12-05 Dolby International Ab Methods and devices for personalizing audio content
CN112135182B (zh) * 2020-09-22 2023-02-03 杭州网易云音乐科技有限公司 列表处理方法、列表处理装置、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1158799A1 (en) * 2000-05-18 2001-11-28 Deutsche Thomson-Brandt Gmbh Method and receiver for providing subtitle data in several languages on demand
KR20050015937A (ko) * 2003-08-05 2005-02-21 삼성전자주식회사 정보 저장 매체, 그 재생 장치 및 방법

Family Cites Families (248)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US5778374A (en) 1995-08-03 1998-07-07 International Business Machines Corporation Compressed common file directory for mass storage systems
CN1198862A (zh) 1995-09-01 1998-11-11 斯塔盖德数字网络有限公司 对比资料及通过引用加入的软件
IL115263A (en) 1995-09-12 1999-04-11 Vocaltec Ltd System and method for distributing multi-media presentations in a computer network
JPH0981497A (ja) 1995-09-12 1997-03-28 Toshiba Corp 実時間ストリームサーバ並びに実時間ストリームデータの格納方法および転送方法
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ä
US5987510A (en) 1995-11-10 1999-11-16 Kabushiki Kaisha Toshiba Method for transferring files according to file list provided in response to file request
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
AU1616597A (en) 1996-02-14 1997-09-02 Olivr Corporation Ltd. Method and systems for progressive asynchronous transmission of multimedia data
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
RU2189119C2 (ru) 1997-01-29 2002-09-10 Инсигма Технолоджиз Лимитед Способ передачи медиа-файлов по сети связи
JPH10229420A (ja) 1997-02-17 1998-08-25 Matsushita Electric Ind Co Ltd 通信システム
US6292834B1 (en) 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US6151632A (en) 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
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
WO1998044733A1 (en) 1997-03-31 1998-10-08 Broadband Associates Method and system for providing a presentation on a network
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
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
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
US6847778B1 (en) 1999-03-30 2005-01-25 Tivo, Inc. Multimedia visual progress indication system
US6538665B2 (en) 1999-04-15 2003-03-25 Apple Computer, Inc. User interface for presenting media information
JP2001036423A (ja) 1999-05-20 2001-02-09 Yamaha Corp 番組再生システム及び番組再生方法
CA2338695C (en) 1999-05-28 2009-07-07 Matsushita Electric Industrial Co., Ltd. Semiconductor memory card, playback apparatus, recording apparatus, playback method, recording method, and computer-readable recording medium
JP3522635B2 (ja) 1999-08-03 2004-04-26 ヴィジョンアーツ株式会社 画像ファイルを記録したコンピュータ読み取り可能な記録媒体、この記録媒体の作成装置、画像ファイル作成プログラムを記録した媒体、画像ファイル送信装置、画像ファイル処理装置、画像ファイル処理プログラムを記録した媒体
RU2272318C2 (ru) 1999-08-03 2006-03-20 Вижионартс Инк. Считываемый компьютером носитель записи, на котором записан файл изображения, устройство для изготовления носителя записи, носитель, на котором записана программа для создания файла изображения, устройство для передачи файла изображения, устройство для обработки файла изображения и носитель, на котором записана программа обработки файла изображения
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
AU1627601A (en) 1999-11-29 2001-06-04 Binary Broadcasting Corporation Secure digital music distribution
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
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
GB2365287B (en) 1999-12-16 2002-11-06 Actv Inc Method using a local host for network communication
US6928403B2 (en) 2000-03-02 2005-08-09 Texas Instruments Incorporated Automatic detection of connectivity between an emulator and a target device
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
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
AU2001283004A1 (en) 2000-07-24 2002-02-05 Vivcom, Inc. System and method for indexing, searching, identifying, and editing portions of electronic multimedia files
US7471834B2 (en) 2000-07-24 2008-12-30 Vmark, Inc. Rapid production of reduced-size images from compressed video streams
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
WO2002057943A1 (en) 2001-01-18 2002-07-25 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
JP3871274B2 (ja) 2001-09-10 2007-01-24 トムソン ライセンシング オーディオ・データ・ファイル・プレイリストに各プレイリスト・レコードの内容情報および索引情報を付加する方法
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.
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
JP4039489B2 (ja) 2002-01-12 2008-01-30 コアトラスト インコーポレーテッド マルチメディアコンテンツの情報保護方法及びシステム
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
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
US20060026376A1 (en) * 2002-10-16 2006-02-02 Microsoft Corporation Retrieving graphics from slow retrieval storage devices
US7668842B2 (en) * 2002-10-16 2010-02-23 Microsoft Corporation Playlist structure for large playlists
US7054888B2 (en) 2002-10-16 2006-05-30 Microsoft Corporation Optimizing media player memory during rendering
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
KR20060022235A (ko) * 2003-04-30 2006-03-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 사용자 프로파일에 기초한 비디오 언어 필터링
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
US7912218B2 (en) 2003-07-04 2011-03-22 Nxp B.V. Method of broadcasting multimedia content via distribution network
US20050005025A1 (en) 2003-07-04 2005-01-06 Michael Harville Method for managing a streaming media service
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
US20060179153A1 (en) 2004-03-22 2006-08-10 Nam-Yul Lee 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 動画像中のオブジェクトに関するメタデータストリームのデータ構造、検索方法及び再生方法
NZ552887A (en) 2004-07-23 2008-11-28 Commw Scient Ind Res Org Method and system for integrating browsing histories with media playlists
US20110213879A1 (en) 2010-03-01 2011-09-01 Ashley Edwardo King Multi-level Decision Support in a Content Delivery Network
JP4332089B2 (ja) 2004-08-19 2009-09-16 ソニー株式会社 再生装置、再生方法および再生プログラム、ならびに、記録媒体
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
WO2006065223A1 (en) 2004-12-13 2006-06-22 Muvee Technologies Pte Ltd A method of automatically editing media recordings
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
US7978955B2 (en) 2005-04-22 2011-07-12 Sony Corporation Recording device, recording method, reproducing device, reproducing method, program, and recording medium
US8321041B2 (en) * 2005-05-02 2012-11-27 Clear Channel Management Services, Inc. Playlist-based content assembly
WO2006119186A2 (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
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
JPWO2007111312A1 (ja) 2006-03-28 2009-08-13 パイオニア株式会社 コンテンツ配信システム、サーバ装置、コンテンツ配信方法およびプログラム
US7730420B1 (en) 2006-05-03 2010-06-01 The Weather Channel, Inc. Systems and methods for creating a playlist
WO2008094279A1 (en) 2006-06-06 2008-08-07 Cts Media A method and system for dynamic management of multiple media data streams
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
US20080133603A1 (en) 2006-08-28 2008-06-05 Lawrence Fischer System and method for media publishing
KR20080020868A (ko) 2006-09-01 2008-03-06 삼성전자주식회사 스트리밍 컨텐츠 기록과 재생에 관한 장치 및 방법
GB2454618B (en) 2006-09-01 2010-03-03 Rowe Internat Corp Automatic music management methods and systems
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 주식회사 한랭크닷컴 웹상의 텍스트를 음악으로 재생하는 저작 시스템 및 방법
US8601018B2 (en) 2006-11-08 2013-12-03 Open Invention Network, Llc Apparatus and method for dynamically providing web-based multimedia to a mobile phone
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
US8180735B2 (en) 2006-12-29 2012-05-15 Prodea Systems, Inc. Managed file backup and restore at remote storage locations through multi-services gateway at user premises
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
US10382514B2 (en) 2007-03-20 2019-08-13 Apple Inc. Presentation of media in an application
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
JP5276099B2 (ja) * 2007-07-03 2013-08-28 スリーエム イノベイティブ プロパティズ カンパニー タイムスロットサンプルにコンテンツの複数小片を割り当てて、その割り当てられたコンテンツの効果を測定するためのシステム及び方法
US7769829B1 (en) 2007-07-17 2010-08-03 Adobe Systems Inc. Media feeds and playback of content
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
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
WO2009097492A1 (en) 2008-01-30 2009-08-06 Azuki Systems, Inc. Media navigation system
WO2009110605A1 (ja) * 2008-03-07 2009-09-11 日本ビクター株式会社 サーバ装置、端末装置、再生装置
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
US8224775B2 (en) * 2008-03-31 2012-07-17 Packetvideo Corp. System and method for managing, controlling and/or rendering media in a network
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
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
EP2392112A2 (en) 2008-12-31 2011-12-07 Apple Inc. Method for streaming multimedia data over a non-streaming protocol
US8099476B2 (en) 2008-12-31 2012-01-17 Apple Inc. Updatable real-time or near real-time streaming
US8161137B2 (en) 2009-01-16 2012-04-17 At&T Intellectual Property I., L.P. Environment delivery network
US8621044B2 (en) 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
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
CA2822185C (en) 2009-08-14 2014-04-22 Azuki Systems, Inc. Method and system for unified mobile content protection
EP2467786B1 (en) 2009-08-17 2019-07-31 Akamai Technologies, Inc. Method and system for http-based stream delivery
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
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
CN107911332B (zh) 2009-11-04 2021-01-08 阿莫泰克有限公司 媒体内容流播的方法、系统和计算机可读介质
KR101750048B1 (ko) 2009-11-13 2017-07-03 삼성전자주식회사 변속 재생 서비스 제공 방법 및 장치
KR101750049B1 (ko) 2009-11-13 2017-06-22 삼성전자주식회사 적응적인 스트리밍 방법 및 장치
JP5758398B2 (ja) * 2009-11-16 2015-08-05 トゥウェンティース・センチュリー・フォックス・フィルム・コーポレイションTwentieth Century Fox Film Corporation 多数の言語及び版のための非破壊的なファイルベースのマスタリング
DK2526671T3 (en) * 2010-01-18 2017-02-27 ERICSSON TELEFON AB L M (publ) METHODS AND DEVICES FOR HTTP MEDIA FLOW DISTRIBUTION
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
WO2011119554A1 (en) * 2010-03-22 2011-09-29 Echostar Technologies Llc Systems and methods for securely streaming media content
GB201105502D0 (en) 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
US8560642B2 (en) 2010-04-01 2013-10-15 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
US8683007B2 (en) 2010-05-27 2014-03-25 Smsc Holdings S.A.R.L. Seamless transfer of media streams
US8555163B2 (en) * 2010-06-09 2013-10-08 Microsoft Corporation Smooth streaming client component
AU2010202741B1 (en) * 2010-06-30 2010-12-23 Brightcove Inc. Dynamic chunking for media streaming
EP2596626B8 (en) * 2010-07-20 2018-11-21 InterDigital Madison Patent Holdings Method for content presentation during trick mode operations
EP2614653A4 (en) * 2010-09-10 2015-04-15 Nokia Corp METHOD AND APPARATUS FOR ADAPTIVE CONTINUOUS DIFFUSION
WO2012059376A1 (en) 2010-11-02 2012-05-10 Telefonaktiebolaget L M 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.
US20120124179A1 (en) * 2010-11-12 2012-05-17 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
US20120315009A1 (en) 2011-01-03 2012-12-13 Curt Evans Text-synchronized media utilization and manipulation
US9247312B2 (en) * 2011-01-05 2016-01-26 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
WO2012112896A2 (en) 2011-02-18 2012-08-23 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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1158799A1 (en) * 2000-05-18 2001-11-28 Deutsche Thomson-Brandt Gmbh Method and receiver for providing subtitle data in several languages on demand
KR20050015937A (ko) * 2003-08-05 2005-02-21 삼성전자주식회사 정보 저장 매체, 그 재생 장치 및 방법

Also Published As

Publication number Publication date
US8843586B2 (en) 2014-09-23
WO2012166816A1 (en) 2012-12-06
US20120311075A1 (en) 2012-12-06
AU2012262245A1 (en) 2013-12-12
EP2716061B1 (en) 2018-12-19
KR101593771B1 (ko) 2016-02-12
AU2012262245B2 (en) 2015-05-07
TW201301832A (zh) 2013-01-01
TWI461043B (zh) 2014-11-11
CN103583051B (zh) 2017-02-22
EP2716061A1 (en) 2014-04-09
CN103583051A (zh) 2014-02-12

Similar Documents

Publication Publication Date Title
KR101593771B1 (ko) 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트
US20210263981A1 (en) Playlists for real-time or near real-time streaming
KR101535366B1 (ko) 실시간 또는 준 실시간 스트리밍을 위한 재생 리스트
US10523726B2 (en) Real-time or near real-time streaming
JP6141926B2 (ja) リアルタイム又はリアルタイムに近いストリーミング
KR101445994B1 (ko) 압축된 재생목록을 이용한 실시간 또는 준 실시간 스트리밍
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
GB2479272A (en) Setting playlist file and media file duration and timing
WO2011123821A1 (en) Real-time or near real-time streaming
GB2510766A (en) Determining earliest and latest transmission times for playlist files having plural tags and universal resource indicators (URIs)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20190116

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 5