KR20140047575A - 스트림 지연 및 채널 레이트에 기초하여 적응적 비트레이트 스트리밍을 수행하기 위한 시스템들 및 방법들 - Google Patents

스트림 지연 및 채널 레이트에 기초하여 적응적 비트레이트 스트리밍을 수행하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20140047575A
KR20140047575A KR20137020587A KR20137020587A KR20140047575A KR 20140047575 A KR20140047575 A KR 20140047575A KR 20137020587 A KR20137020587 A KR 20137020587A KR 20137020587 A KR20137020587 A KR 20137020587A KR 20140047575 A KR20140047575 A KR 20140047575A
Authority
KR
South Korea
Prior art keywords
video
video stream
streams
stream
delay
Prior art date
Application number
KR20137020587A
Other languages
English (en)
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
Priority to US201161430502P priority Critical
Priority to US61/430,502 priority
Priority to US13/341,667 priority patent/US9021119B2/en
Priority to US13/341,504 priority
Priority to US13/341,504 priority patent/US9020039B2/en
Priority to US13/341,667 priority
Application filed by 쏘닉 아이피, 아이엔씨. filed Critical 쏘닉 아이피, 아이엔씨.
Priority to PCT/US2011/068284 priority patent/WO2012094258A1/en
Publication of KR20140047575A publication Critical patent/KR20140047575A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • H04N21/6379Control signals issued by the client directed to the server or network components directed to server directed to encoder, e.g. for requesting a lower encoding rate
    • 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
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

재생 디바이스들이 본 발명의 실시예들에 따라 각각의 스트림의 지연 및 채널 레이트에 기초하여 스트림들을 선택하는 적응적 비트레이트 스트리밍을 위한 시스템들 및 방법들이 개시된다. 본 발명의 일 실시예는 클라이언트 애플리케이션 및 버퍼를 포함한 메모리, 및 프로세서를 포함하며, 상기 클라이언트 애플리케이션은 상기 프로세서를, 한 세트의 대안 비디오 스트림들로부터 제 1 비디오 스트림을 선택하는 것으로서, 적어도 복수의 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상한 탐색 지연을 갖도록 인코딩되는, 상기 선택하기; 네트워크 연결을 통해 상기 제 1 비디오 스트림의 청크들을 요청하고 상기 요청된 청크들을 상기 버퍼에 저장하도록 구성한다. 시스템들 및 방법들은 상기 버퍼링된 청크들의 재생을 포함할 수 있다.

Description

스트림 지연 및 채널 레이트에 기초하여 적응적 비트레이트 스트리밍을 수행하기 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR PERFORMING ADAPTIVE BITRATE STREAMING BASED UPON STREAM DELAY AND “CHANNEL RATE}

본 발명은 일반적으로 적응적 비트레이트 스트리밍에 관한 것으로 보다 구체적으로는 적응적 비트레이트 스트리밍 시스템들에서의 재생 디바이스들에 의한 미디어의 버퍼링에 관한 것이다.

상기 용어, 미디어를 스트리밍하는 것은 재생 디바이스 상에서의 미디어의 재생을 설명하며, 여기에서 상기 미디어는 서버상에 저장되고 재생 동안 네트워크를 통해 계속해서 상기 재생 디바이스로 전송된다. 통상적으로, 상기 재생 디바이스는 미디어의 다음 부분의 수신 이전에 버퍼링된 미디어의 모두의 재생을 완료한 재생 디바이스로 인한 재생의 중단을 방지하기 위해 재생 동안 임의의 주어진 시간에서 버퍼에 충분한 양의 미디어를 저장한다. 적응적 비트 레이트 스트리밍 또는 적응적 스트리밍은 현재 스트리밍 상태들(예로서, 사용자의 네트워크 대역폭)을 실시간으로 검출하는 것 및 그에 따라 스트리밍된 미디어의 품질을 조정하는 것을 수반한다. 통상적으로, 상기 소스 미디어는 다중 비트 레이트들로 인코딩되며 상기 재생 디바이스 또는 클라이언트는 이용가능한 리소스들에 의존하여 상이한 인코딩들을 스트리밍하는 것 사이에서 스위칭한다.

적응적 비트레이트 스트리밍에 대한 공통적인 목표는 언더플로우(underflow)로 인한 미디어의 재생시 멈춤들(stalls) 없이 상기 재생 디바이스에 의해 경험된 스트리밍 상태들을 고려해볼 때 이용가능한 최고 비트레이트 스트림을 스트리밍하는 것이다. 미디어가 재생되는 속도보다 낮은 속도로 상기 재생 디바이스가 스트리밍 미디어를 수신할 때 언더플로우가 발생한다. 대부분의 적응적 비트레이트 스트리밍 시스템들에서 사용된 비디오는 가변 비트레이트 인코딩을 사용하여 인코딩되며, 이것은 통상적으로 보다 효율적이다. 상기 스트림의 비트레이트가 시간적으로 변할지라도, 상기 스트림은 통상적으로 그것의 평균 비트 레이트에 기초하여 설명된다. 가변 비트레이트 인코딩이 사용될 때, 스트림의 최대 비트레이트는 특정 버퍼 크기를 고려할 때 어떤 언더플로우도 발생하지 않을 것임을 보장하는 레이트이다. 대부분의 재생 디바이스들은 버퍼를 사용하여 인코딩된 프레임들의 크기에서의 변화를 수용한다. 비디오의 문맥에서, 버퍼링 지연(또한 탐색 지연으로서 불리울 수 있는)은 재생 디바이스가 언더플로우를 방지하기 위해 상기 버퍼를 채우는 것을 시작하는 것 및 재생을 개시하는 것 사이에서 대기해야 하는 시간이다(즉, 특정 양의 데이터가 디코딩이 시작할 수 있기 전에 버퍼링될 수 있다).

본 발명에는 재생 디바이스들이 본 발명의 실시예들에 따라 각각의 스트림의 지연 및 채널 레이트에 기초하여 스트림들을 선택하는 적응적 비트레이트 스트리밍을 위한 시스템들 및 방법들이 개시된다.

본 발명의 실시예들에 따른 각각의 스트림의 지연 및 채널 레이트에 기초하여 재생 디바이스들이 스트림들을 선택하는 적응적 비트레이트 스트리밍을 수행하는 본 발명의 실시예들에 따른 시스템들 및 방법들이 예시된다. 본 발명의 일 실시예는 클라이언트 애플리케이션 및 버퍼를 포함한 메모리, 및 프로세서를 포함하며, 상기 클라이언트 애플리케이션은 상기 프로세서를: 한 세트의 대안 비디오 스트림들로부터 제 1 비디오 스트림을 선택하는 것으로서, 적어도 복수의 상기 대안 비디오 스트림들이 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상한 탐색 지연을 갖도록 인코딩되는, 상기 제 1 비디오 스트림 선택하기; 네트워크 연결을 통해 상기 제 1 비디오 스트림의 청크들을 요청하고 상기 요청된 청크들을 상기 버퍼에 저장하고; 상기 제 1 비디오 스트림의 상기 버퍼링된 청크들을 재생하고; 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하며; 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 것으로서, 상기 제 2 비디오 스트림은 상기 측정된 채널 데이터 레이트보다 적은 최대 비트레이트를 갖는, 상기 제 2 비디오 스트림을 선택하도록 구성한다.

본 발명의 방법의 일 실시예는 재생 디바이스를 사용하여 한 세트의 대안 비디오 스트림들로부터 제 1 비디오 스트림을 선택하는 단계로서, 적어도 복수의 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상기 상한 탐색 지연을 갖도록 인코딩되는, 상기 제 1 비디오 스트림 선택 단계, 상기 재생 디바이스를 사용하여 네트워크 연결을 통해 상기 제 1 비디오 스트림의 청크들을 요청하고 상기 요청된 청크들을 버퍼에 저장하는 단계, 상기 재생 디바이스를 사용하여 상기 제 1 비디오 스트림의 상기 버퍼링된 청크들을 재생하는 단계, 상기 재생 디바이스를 사용하여 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하는 단계, 및 상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계로서, 상기 제 2 비디오 스트림은 상기 측정된 채널 데이터 레이트보다 작은 최대 비트레이트를 갖는, 상기 제 2 비디오 스트림 선택 단계를 포함한다.

본 발명의 또 다른 실시예는 메모리, 및 프로세서를 포함하고, 상기 프로세서는, 소스 인코딩 애플리케이션에 의해: 기본 해상도 및 기본 샘플 종횡비를 가진 소스 비디오 데이터를 포함하는 멀티미디어 콘텐트를 수신하고; 한 세트의 대안 비디오 스트림들로서 상기 소스 비디오 데이터를 인코딩하도록 구성되고, 상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상한 탐색 지연을 갖도록 인코딩되는, 상기 인코딩을 하도록 구성된다.

또 다른 부가적인 실시예는 멀티미디어 콘텐트를 수신하는 것으로서, 상기 멀티미디어 콘텐트는 소스 인코더를 사용하여 기본 해상도 및 기본 샘플 종횡비를 가진 소스 비디오 데이터를 포함하는, 상기 수신하기, 상기 소스 인코더를 사용하여 한 세트의 대안 비디오 스트림들로서 상기 소스 비디오 데이터를 인코딩하는 것으로서, 상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며, 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상한 탐색 지연을 갖도록 인코딩되는, 상기 인코딩하기를 포함한다.

추가의 부가적인 실시예는 다시 프로세서 지시들을 포함한 기계 판독가능한 매체를 포함하며, 상기 프로세서에 의한 상기 지시들의 실행은 상기 프로세서로 하여금 기본 해상도 및 기본 샘플 종횡비를 갖는 소스 비디오 데이터를 포함하는 멀티미디어 콘텐트를 수신하고, 한 세트의 대안 비디오 스트림들로서 상기 소스 비디오 데이터를 인코딩하는 것으로서, 상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며, 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상한 탐색 지연을 갖도록 인코딩되는, 상기 인코딩하기를 포함한 프로세스를 수행하게 한다.

본 발명에 따른 재생 디바이스는 하한 탐색 지연이 새로운 채널 레이트로 현재 버퍼링된 미디어의 재생 지속 기간 내에서 버퍼링될 수 있는 최고 비트레이트 스트림을 선택함으로써 채널 레이트에서의 갑작스러운 하락에 응답할 수 있으며, 재생 디바이스가 재생되는 스트림의 상한 탐색 지연과 동일한 재생 지속 기간을 갖고 비디오의 양을 이미 버퍼링하고 상기 대안 비디오 스트림들이 상기 개괄된 방식으로 인코딩될 때, 새로운 네트워크 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 스트림을 간단히 선택함으로써 네트워크 데이터 레이트에서의 하락에 응답할 수 있다.

도 1a는 본 발명의 일 실시예에 따른 적응적 비트레이트 스트리밍 시스템의 아키텍처 다이어그램.
도 1b는 본 발명의 일 실시예에 따른 소스 인코더의 아키텍처 다이어그램.
도 1c는 본 발명의 일 실시예에 따른 재생 디바이스의 아키텍처 다이어그램.
도 2는 본 발명의 일 실시예에 따라 채널 데이터 레이트를 측정하기 위한 프로세스를 개념적으로 도시한 도면.
도 3은 본 발명의 일 실시예에 따라 비디오의 대안 스트림들을 인코딩하기 위한 프로세스를 도시한 흐름도.
도 4는 재생의 개시 전에 버퍼링된 미디어의 양이 본 발명의 일 실시예에 따른 상한 탐색 지연을 사용하여 결정될 때 스트림들 사이에서 스위칭하기 위한 프로세스를 도시한 흐름도.
도 5는 본 발명의 일 실시예에 따라 적응적 비트레이트 스트리밍을 수행하기 위한 프로세스를 도시한 도면.

이제 도면들로 가면, 재생 디바이스들이 본 발명의 실시예들에 따른 각각의 스트림의 지연 및 채널 레이트에 기초하여 스트림들을 선택하는 적응적 비트레이트 스트리밍을 위한 시스템들 및 방법들이 예시된다. 스트림의 지연은 언더플로우가 재생 동안 발생하지 않도록 재생을 개시하기 전에 미디어가 버퍼링되는 시간의 양이다. 여러 개의 실시예들에서, 상한 탐색 지연은 스트림이 인코딩되는 최대 비트레이트 및 최대 버퍼 크기에 기초하여 결정될 수 있다. 많은 실시예들에서, 모든 스트림은 보다 높은 비트레이트 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 적은 상한 탐색 지연을 갖도록 인코딩된다. 여러 개의 실시예들에서, 스트림의 상기 상한 탐색 지연은 공통 재생 디바이스들 상에서의 이용가능한 버퍼의 크기에 기초하여 결정되는 미리 결정된 최대 버퍼 크기에 기초하여 제한된다. 상기 스트림들이 이들 제약들에 따라 인코딩될 때, 상한 탐색 지연(더하기 안전 마진)과 동일한 지속 기간을 가진 재생 이전의 미디어의 양을 버퍼링하는 재생 디바이스는 상기 재생 디바이스가 새로운 채널 상태들에 대한 최적의 스트림으로 자동으로 스위칭할 수 있도록 채널 데이터 레이트에서의 감소에 응답하기 위한 충분한 시간을 가진다.

다수의 실시예들에서, 하한 탐색 지연은 특정 스트림을 분석하고 언더플로우를 방지하기 위해 최소량의 탐색 지연을 결정함으로써 결정된다. 상기 하한 탐색 지연을 이용하는 것은 스트리밍 미디어의 재생을 개시할 때 지연들을 상당히 감소시킬 수 있다. 그러나, 보다 적은 미디어를 버퍼링하는 것은 상기 재생 디바이스가 채널 레이트에서의 갑작스러운 하락에 응답하여 보다 낮은 비트레이트 스트림으로 스위칭하기 위해 보다 적은 시간을 갖는다는 것을 의미할 수 있다. 여러 개의 실시예들에서, 상기 재생 디바이스는 상기 하한 탐색 지연이 새로운 채널 레이트로 현재 버퍼링된 미디어의 재생 지속 기간 내에서 버퍼링될 수 있는 최고 비트레이트 스트림을 선택함으로써 채널 레이트에서의 갑작스러운 하락에 응답한다. 많은 실시예들에서, 안전 마진들이 또한 실세계 시스템들에서 발생하는 변화들을 수용하기 위해 상기 계산들에 이용된다.

상기 하한 탐색 지연은 재생이 개시되는 스트림 내에서의 포인트에 의존하여 변할 수 있다. 또한, 상기 하한 탐색 지연은 각각의 스트림의 레이트에 의존하여 변할 수 있다. 다수의 실시예들에서, 상기 재생 디바이스는 서버로부터의 스트림들의 모두에 대한 하한 탐색 지연들을 획득한다. 여러 개의 실시예들에서, 상기 재생 디바이스는 단지 상기 서버로부터 각각의 스트림에 대한 하한 탐색 지연들 중 가장 큰 것만을 획득한다. 비디오가 표준화를 위한 국제 기구(ISO), 국제 전기 기술 위원회(IEC) 및 동화상 전문가 그룹(MPEG)과 함께 전기통신 표준화 섹터의 비디오 코딩 전문가 그룹에 의해 개발된 H.264 표준에 따라 인코딩될 때, 본 발명의 많은 실시예들에 따른 재생 디바이스들은 상기 하한 탐색 지연과 같도록 상기 H.264 스트림 내에서의 SEI 버퍼링 메시지에서 initial_cpb_removal_delay 필드의 값을 고려한다. 다수의 실시예들에서, 각각의 스트림에서의 상기 initial_cpb_removal_delay 필드에서의 값은 상기 서버에 의해 호스팅된 대안 스트림들의 모두에 대한 최대 하한 탐색 지연 및/또는 initial_cpb_removal_delay 값이 되도록 상기 적응적 비트레이트 스트리밍 시스템에 의해 수정된다. 다른 실시예들에서, 상기 재생 디바이스는 상기 스트림의 다음의 다운로딩된 청크의 지연을 추정하기 위해 상기 initial_cpb_removal_delay를 조정한다. 여러 개의 실시예들에서, 상기 조정은 (이에 제한되지 않지만) 스케일링 인자, 정정 인자, 및/또는 안전 마진을 포함한다.

여러 개의 실시예들에서, 상기 하한 탐색 지연은 재생을 개시하기 전에 버퍼링할 미디어의 양을 결정하기 위해 상기 재생 디바이스에 의해 사용된다. 그러나, 상기 재생 디바이스는 상기 버퍼가 상기 스트림에 대한 상한 탐색 지연에 빨리 도달하도록 상기 채널 레이트보다 상당히 아래인 최대 비트레이트를 가진 스트림을 선택한다. 버퍼에서의 미디어의 양이 상한 탐색 지연과 동일한 재생 지속 기간을 가질 때, 상기 재생 디바이스는 그 후 상기 포인트 이후로부터 채널 상태들에 대한 최적의 스트림으로 자유롭게 스위칭할 수 있다. 본 발명의 실시예들에 따른 적응적 비트레이트 스트리밍 시스템들, 재생 디바이스들, 및 적응적 비트레이트 스트리밍 미디어의 버퍼링 및 재생이 이하에 추가로 논의된다.

적응적 스트리밍 시스템 아키텍처

본 발명의 일 실시예에 따른 적응적 비트레이트 스트리밍 시스템이 도 1a에 예시된다. 상기 적응적 비트레이트 스트리밍 시스템(10)은 다수의 대안 스트림들로서 소스 미디어를 인코딩하도록 구성된 소스 인코딩 서버(12)를 포함한다. 이하에 추가로 논의되는 바와 같이, 상기 소스 인코딩 서버(12)는 적어도 복수의 그것이 인코딩된 비디오의 대안 스트림들인, 상기 인코딩된 스트림들을 포함한 복수의 컨테이너 파일들에 대한 최상위 레벨 인덱스를 생성한다. 이들 파일들은 콘텐트 서버(14)로 업로딩된다. 다양한 재생 디바이스들(18)이 그 후 인터넷과 같은 네트워크(16)를 통해 콘텐트 서버(14)로부터 상기 인코딩된 스트림들의 부분들을 요청할 수 있다.

많은 실시예들에서, 상기 최상위 레벨 인덱스 파일은 SMIL 파일이며 상기 미디어는 마트로시카 컨테이너 파일들(Matroska container files)에 저장되고 재생 디바이스들은 HTTP 또는 또 다른 유사한 무상태 프로토콜을 사용하여 상기 파일들의 부분들을 요청한다. 그러나, 임의의 적절한 인덱스 파일 포맷 및/또는 컨테이너 파일 포맷이 인코딩된 스트림들을 저장 및 인덱싱하기 위해 이용될 수 있으며 임의의 적절한 통신 프로토콜이 본 발명의 실시예들에 따라 콘텐트 서버(14)로부터 데이터를 획득하기 위해 재생 디바이스들(18)에 의해 이용될 수 있다.

특정 아키텍처가 도 1a에 도시되지만, 다양한 아키텍처들 중 임의의 것이 본 발명의 실시예들에 따른 적응적 비트레이트 스트리밍을 수행하기 위해 이용될 수 있다. 본 발명의 실시예들에 따른 소스 인코더들 및 재생 디바이스들이 이하에 추가로 논의된다.

소스 인코더들

예시된 실시예에서, 상기 적응적 비트레이트 스트리밍 시스템은 비디오 콘텐트의 소스 스트림을 상이한 최대 비트레이트들을 가진 인코딩된 비디오의 대안 스트림들로 인코딩할 수 있고 상기 스트림들의 각각의 상한 탐색 지연들이 보다 높은 비트레이트로 인코딩된 다른 대안 스트림들 중 임의의 것의 상한 탐색 지연들과 동일하거나 또는 그보다 적은 하나 이상의 소스 인코더들을 포함한다. 많은 실시예들에서, 상기 소스 인코더는 멀티미디어의 스트림들을 인코딩할 수 있는 임의의 디바이스를 사용하여 구현될 수 있으며, 상기 스트림들은 상이한 해상도들, 샘플링 레이트들, 상한 탐색 지연들 및/또는 최대 비트레이트들로 인코딩된다. 본 발명의 일 실시예에 따른 적응적 스트리밍 시스템 소스 인코더의 기본 아키텍처는 도 1b에 예시된다. 상기 적응적 비트레이트 스트리밍 시스템(30)은 비-휘발성 메모리(34) 및 휘발성 메모리(36)와 통신하는 프로세서(32)를 포함한다. 예시된 실시예에서, 상기 휘발성 메모리는 소스 인코딩 애플리케이션(38) 및 비디오 데이터(40)의 대안 스트림들을 포함한다. 상기 소스 인코딩 애플리케이션(38)은 입력으로서 소스 비디오 스트림을 포함한 미디어를 취하며 복수의 대안 스트림들로서 상기 소스 비디오를 인코딩한다. 많은 실시예들에서, 상기 대안 스트림들은 상이한 해상도들, 샘플 종횡비들, 및/또는 최대 비트레이트들을 갖고 인코딩된다. 상기 대안 스트림들이 인코딩되는 최대 비트레이트들에서의 차이들로 인해, 재생 디바이스는 상기 인코딩된 소스 비디오의 적응적 비트레이트 스트리밍을 수행하기 위해 상기 대안 스트림들 사이에서 스위칭할 수 있다. 이하에 추가로 논의되는 바와 같이, 재생 디바이스는 그것의 상한 탐색 지연이 상기 버퍼에서의 미디어의 양의 재생 지속 기간보다 작도록 상기 대안 스트림들의 각각이 인코딩될 때 스트림들 사이에서 끊김없이 다운 스위칭할 수 있다. 상기 버퍼링된 미디어의 양이 보다 낮은 최대 비트레이트로 인코딩된 다른 대안 스트림들 중 임의의 것의 상한 탐색 지연과 동일한 재생 지속 기간을 가질 때, 상기 재생 디바이스는 끊김없이 다운 스위칭할 것이다. 또한 이하에 논의되는 바와 같이, 상기 하한 탐색 지연은 또한 재생의 보다 빠른 개시를 가능하게 할 때 재생 디바이스들에 유용할 수 있다. 여러 개의 실시예들에서, 스트림의 상한 탐색 지연 및/또는 스트림의 하한 탐색 지연에 관한 정보는 상기 스트림을 포함한 컨테이너 파일에 정보를 포함함으로써 또는 상기 스트림을 기술하는 최상위 레벨 인덱스 파일에 상기 정보를 포함함으로써 상기 소스 인코딩 애플리케이션(38)에 의해 재생 디바이스들에 대해 이용가능해질 수 있다.

비디오 데이터의 대안 스트림들이 H.264 표준에 따라 인코딩되는 실시예들에서, 상기 소스 인코딩 애플리케이션(38)은 각각의 대안 H.264 스트림 내에서의 SEI 버퍼링 메시지에서의 initial_cpb_removal_delay 필드로 상기 하한 탐색 지연을 나타내는 값을 기록할 수 있다. 많은 실시예들에서, 상기 소스 인코딩 애플리케이션(38)은 상기 대안 스트림들의 각각에서의 상기 initial_cpb_removal_delay 필드에 하한 탐색 지연 및/또는 최고 하한 탐색 지연을 가진 대안 스트림의 initial_cpb_removal_delay 값을 기록한다. 이하에 논의되는 바와 같이, 상기 최대 하한 탐색 지연은 통상적으로 본 발명의 많은 실시예들에 따른 스트림 스위칭을 수행하기에 충분하다. 다른 실시예들에서, H.264 표준에 따르는 것 외의 다른 포맷들로 인코딩되는 스트림들을 포함한 비디오 스트림들에서의 하한 탐색 지연 정보를 포함하기 위한 다양한 메커니즘들 중 임의의 것이 이용될 수 있다.

본 발명의 실시예들에 따라 복수의 대안 스트림들로서 소스 비디오를 인코딩하기 위한 프로세스가 도 3에 예시된다. 상기 프로세스(80)는 소스 비디오를 수신하는 것(82) 및 소스 인코더에 의해 생성될 대안 비디오 스트림들의 각각에 대한 최대 비트레이트들 및 최대 버퍼 크기들을 획득하는 것(84)을 포함한다. 상기 대안 비디오 스트림들은 그 후 인코딩되며(86) 통상적으로 컨테이너 파일들에 기록된다. 상기 인코딩된 비디오 스트림들을 컨테이너 파일들에 기록할 때, 상기 프로세스(80)는 또한 하한 탐색 지연들에 관한 정보를 상기 개괄된 것과 유사한 방식으로 상기 대안 스트림들의 각각에 기록할 수 있다(88). 많은 실시예들에서, 각각의 스트림의 하한 탐색 지연을 나타내는 정보가 상기 스트림과 함께 포함된다. 여러 개의 실시예들에서, 상기 스트림들의 모두의 상기 최고 하한 탐색 지연은 상기 파일들의 각각에 포함된다.

특정 아키텍처가 도 1b에 예시되지만, 상기 애플리케이션이 디스크 또는 몇몇 다른 형태의 저장 장치상에 위치되며 구동시 휘발성 메모리로 로딩되는 아키텍처들을 포함한 다양한 아키텍처들 중 임의의 것이 소스 비디오 콘텐트의 스트림을 상이한 최대 비트레이트들을 가진 인코딩된 비디오의 대안 스트림들로 인코딩할 수 있는 소스 인코더들을 구현하기 위해 이용될 수 있으며, 상기 스트림의 각각의 상한 탐색 지연들은 본 발명의 실시예들에 따라 보다 높은 비트레이트로 인코딩된 다른 대안 스트림들 중 임의의 것의 상한 탐색 지연들과 동일하거나 또는 그보다 적다.

재생 디바이스들

도 1a에 예시된 시스템에서, 상기 재생 디바이스들은 개인용 컴퓨터들, 및 이동 전화기들이다. 다른 실시예들에서, 재생 디바이스들은 DVD 플레이어들, 블루-레이 플레이어들, 텔레비전들, 셋 탑 박스들, 비디오 게임 콘솔들, 태블릿들, 및 서버에 연결하고 인코딩된 미디어를 재생할 수 있는 다른 디바이스들과 같은 소비자 가전 디바이스들을 포함할 수 있다. 본 발명의 일 실시예에 따른 재생 디바이스에 대한 기본 아키텍처가 도 1c에 예시된다. 상기 재생 디바이스(50)는 비-휘발성 메모리(54) 및 휘발성 메모리(56)와 통신하는 프로세서(52)를 포함한다. 상기 예시된 실시예에서, 상기 비-휘발성 메모리는 원격 서버로부터 콘텐트를 스트리밍하기 위해 프로세서 및 재생 디바이스를 구성하는 클라이언트 애플리케이션(58)을 포함한다.

동작 동안, 상기 클라이언트 애플리케이션(58)은 상기 재생 디바이스를, 콘텐트 저장소로부터 콘텐트를 구매하고 콘텐트 서버 또는 또 다른 서버로부터 최상위 레벨 인덱스 파일(60)을 요청하도록 구성할 수 있다. 상기 최상위 레벨 인덱스 파일(60)이 콘텐트 서버로부터 수신될 때, 상기 클라이언트 애플리케이션(58)은 상기 재생 디바이스를 메모리(56)에 최상위 레벨 인덱스 파일(60)을 저장하도록 구성한다. 상기 클라이언트 애플리케이션(58)은 그 후 상기 재생 디바이스(50)를 콘텐트 서버로부터 콘텐트를 포함한 컨테이너 파일들의 부분들을 요청하기 위해 상기 최상위 레벨 인덱스 파일을 사용함으로써 콘텐트를 재생하도록 구성할 수 있다. 상기 클라이언트 애플리케이션(58)에 의해 선택된 특정 컨테이너 파일들은 상기 최상위 레벨 인덱스 파일(60) 내에서의 클라이언트 애플리케이션에 이용가능한 정보에 기초하여 결정될 수 있다. 콘텐트를 포함한 컨테이너 파일들의 요청된 부분들은 재생 디바이스의 메모리(56)에서의 버퍼(62) 내에 저장된다. 상기 버퍼의 크기는 통상적으로 상기 최상위 레벨 인덱스 파일(60)에서의 특별한 스트림에 대해 특정된 비디오 버퍼 검증기에 의존한다. 그러나 많은 실시예들에서, 상기 버퍼 크기는 특정 애플리케이션 및/또는 스트림(들)에 적절한 임의의 수의 인자들에 기초하여 고정되거나 또는 결정된다. 상기 클라이언트 애플리케이션은 재생을 중단하는 사용자 지시가 수신될 때까지 또는 재생이 완료될 때까지 우세한 스트리밍 상태들에 의존하여 상이한 컨테이너 파일들로부터 콘텐트를 계속해서 요청 및 재생할 수 있다.

네트워크 데이터 레이트가 떨어질 때, 상기 재생 디바이스는 클라이언트 애플리케이션이 버퍼(62) 내에 저장된 콘텐트를 재생하는데 걸리는 시간 동안 보다 낮은 비트레이트 스트림으로부터 다운로딩될 수 있는 데이터의 양 및 이용가능한 데이터 레이트에 기초하여 적절한 보다 낮은 비트레이트 스트림을 결정할 수 있다. 버퍼 언더플로우는 충분한 양의 데이터가 다운로딩된다면 스트림 스위치에 이어 발생하지 않을 것이다. 여러 개의 실시예들에서, 상기 클라이언트 애플리케이션(58)은 하한 탐색 지연이 새로운 채널 레이트로 현재 버퍼링된 미디어의 재생 지속 기간 내에서 버퍼링될 수 있는 최고 비트레이트 스트림을 선택함으로써 채널 레이트에서의 갑작스러운 하락에 응답한다. 상기 재생 디바이스가 재생되는 스트림의 상한 탐색 지연과 동일한 재생 지속 기간을 갖고 비디오의 양을 이미 버퍼링하고 상기 대안 비디오 스트림들이 상기 개괄된 방식으로 인코딩될 때, 상기 재생 디바이스는 새로운 네트워크 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 스트림을 간단히 선택함으로써 네트워크 데이터 레이트에서의 하락에 응답할 수 있다. 많은 실시예들에서, 안전 마진들이 또한 실세계 시스템들에서 발생하는 변화들을 수용하기 위해 계산들에 이용된다. 여러 개의 실시예들에서, 부가적인 마진들은 상기 재생 디바이스가 스트림의 상한 탐색 지연에 대응하도록 버퍼링된 데이터의 양을 커지게 할 수 있도록 제공된다. 재생 디바이스들이 본 발명의 실시예들에 따라 스트림 스위칭 결정들을 하는 방식이 이하에 추가로 논의된다.

특정 재생 디바이스 아키텍처가 도 1c에 예시되지만, 상기 클라이언트 애플리케이션이 디스크 또는 몇몇 다른 형태의 저장 장치상에 저장되고 구동시 휘발성 메모리로 로딩되는 아키텍처들을 포함한 다양한 아키텍처들 중 임의의 것이 본 발명의 실시예들에 따른 적응적 비트레이트 스트리밍 시스템들에서의 사용을 위한 재생 디바이스들을 구현하기 위해 이용될 수 있다.

채널 데이터 레이트를 측정하는 것

콘텐트 서버로부터 재생 디바이스로의 데이터의 송신은 외부 상태들로 인해 변화하는 일정 레이트 채널을 수반하도록 고려될 수 있다. 본 발명의 실시예들에 따른 재생 디바이스들은 채널의 레이트를 측정하고 그 후 채널의 측정된 레이트(보다 작은 안전 마진)에 가장 가깝고 그보다 작은 최대 비트레이트를 가진 인코딩된 스트림을 스트리밍하기 시작한다. 다수의 실시예들에서, 상기 재생 디바이스는 데이터를 요청하고 상기 서버로부터 상기 요청된 데이터를 수신하기 위해 소요된 시간을 측정함으로써 상기 채널의 레이트를 측정한다.

재생 디바이스의 버퍼가 때때로 가득 차 있고 그러므로 콘텐트 서버상에 위치된 컨테이너 파일들로부터 데이터의 청크들 또는 바이트 범위들을 요청하거나 또는 데이터를 수용할 수 없다는 사실로 인해, 상기 재생 디바이스가 임의의 데이터를 수신하지 않는 간격들 또는 갭들이 발생할 수 있다. 또한, 상기 재생 디바이스는 다수의 스트림들로부터 콘텐트를 동시에 스트리밍할 수 있다. 예를 들면, 재생 디바이스는 오디오, 비디오, 및 자막 스트림들로부터 콘텐트를 동시에 요청할 수 있다. 많은 실시예들에서, 재생 디바이스들은 각각의 스트림으로부터 각각의 다운로딩된 청크의 크기, 시작 시간, 및 지속 기간을 기록한다. 이들 기록들은 시간 간격 및 어떤 데이터도 상기 시간 간격 동안 수신되지 않는 임의의 갭들 동안 수신되는 중첩 청크들을 결정함으로써 대역폭 측정들을 개선하기 위해 이용될 수 있다. 이러한 방식으로, 본 발명의 실시예들에 따른 재생 디바이스는 유효 간격으로 나뉘어진 미리 결정된 시간 간격 동안 다운로딩된 데이터의 합계로서 채널 데이터 레이트를 결정할 수 있으며, 이것은 미리 결정된 시간 간격으로부터 임의의 갭들의 지속 기간을 감산함으로써 결정된다. 많은 인스턴스들에서, 재생 디바이스에 의해 요청된 청크들은 폐쇄적 화상 그룹에 대응한다. 여러 개의 실시예들에서, 소스 비디오는 복수의 대안 스트림들로 인코딩되며 상기 소스 비디오의 각각의 부분은 대안 스트림들의 각각에서 폐쇄적 화상 그룹으로서 인코딩된다. 이러한 방식으로 대안 스트림들에서 인트라-코딩된 프레임들을 정렬시킴으로써, 상기 재생 디바이스는 폐쇄적 화상 그룹의 재생의 완료시 대안 스트림들 사이에서 스위칭할 수 있다. 폐쇄적 화상 그룹의 재생의 완료시 선택된 스트림과 관계없이, 선택된 스트림에서 비디오의 다음 프레임은 인트라-코딩된 프레임이다.

본 발명의 일 실시예에 따라 채널 데이터 레이트를 측정하기 위해 이용된 프로세스는 도 2에 개념적으로 예시된다. 예시된 실시예에서, 데이터가 두 개의 비디오 청크들(71, 72) 및 두 개의 오디오 청크들(73, 74)로부터 다운로딩되는 미리 결정된 시간 간격이 특정된다(70). 상기 미리 결정된 시간 간격 동안, 데이터가 재생 디바이스에 의해 수신되지 않는 갭(75) 또는 홀이 발생한다. 상기 채널 데이터 레이트는 미리 결정된 시간 간격으로부터 갭(75)의 지속 기간을 감산하는 결과에 의해 나뉘어진 비디오 청크들(71, 72) 및 오디오 청크들(73, 74)로부터 미리 결정된 시간 간격(70) 동안 다운로딩된 데이터의 바이트들의 합으로서 산출된다. 네트워크 데이터 레이트를 산출하기 위한 특정 프로세스가 상기 설명되지만, 특정 애플리케이션에 적절한 다양한 프로세스들 중 임의의 것이 본 발명의 실시예들에 따른 네트워크 데이터 레이트를 결정하기 위해 이용될 수 있다.

스트리밍 상태들에서의 변화들에 적응시키는 것

채널의 데이터 레이트가 변화함에 따라, 상기 재생 디바이스는 새로운 채널 상태들에 대해 최적으로 인코딩되는 스트림을 선택함으로써 적응할 수 있다. 여러 개의 실시예들에서, 각각의 인코딩된 스트림은 가변 비트레이트 인코딩 기술들을 사용하여 인코딩되며 상기 재생 디바이스들은 상기 인코딩 비트레이트에서의 변화들을 매끄럽게 하기 위해 버퍼들을 이용한다. 인코딩된 비트레이트에서의 변화들을 매끄럽게 하기 위한 미디어의 버퍼링은 스트림들 사이에서 스위칭하기 위해 재생 디바이스의 결정에 영향을 미칠 수 있다. 재생 디바이스가 충분히 많은 양의 데이터를 버퍼링할 때, 상기 재생 디바이스는 스트림들 사이에서 스위칭하기에 충분한 시간을 가지며 상기 재생 디바이스는 새로운 채널 레이트보다 작은, 최대 비트레이트를 가진 최고 비트레이트 스트림을 선택할 수 있다. 버퍼링된 비디오의 양이 네트워크 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 스트림으로부터 상한 탐색 지연과 동일한 재생 지속 기간을 가진 비디오의 부분을 다운로딩하기 위해 요구된 시간보다 작은 재생 지속 기간을 가질 때, 상기 재생 디바이스는 상기 스트림 스위치에 이어 버퍼 언더-플로우를 방지하기 위해 보다 낮은 최대 비트레이트를 가진 스트림을 선택할 수 있다.

재생 이전에 초기에 버퍼링되는 데이터의 양을 감소시키는 것은 재생이 시작되는 속도를 증가시킬 수 있다. 그러나, 보다 적은 미디어를 버퍼링하는 것은 채널 레이트가 갑작스럽게 감소하는 경우에 스트림들 사이에서 스위칭하기에 보다 적은 시간을 가진 재생 디바이스를 야기할 수 있다. 그러므로, 재생 디바이스는 그외 언더플로우를 회피하기 위한 경우보다 낮은 비트레이트를 가진 스트림을 선택하도록 강요될 수 있다. 본 발명의 실시예들에 따른 재생 디바이스들은 하나의 접근법 또는 양쪽 모두의 접근법들의 조합을 사용할 수 있다. 본 발명의 실시예들에 따른 재생 디바이스들이 버퍼에 대한 데이터의 양을 결정하는 방식 및 채널 레이트에서의 갑작스러운 감소에 응답하여 스트림들을 스위칭할 방법이 이하에 추가로 논의된다.

가변 비트 레이트 스트림들을 버퍼링하는 것

재생의 개시 이전에 가변 비트레이트 인코딩된 미디어의 버퍼링은 버퍼링 또는 탐색 지연으로서 불리울 수 있는 것을 도입한다. 상기 지연은 통상적으로, 일단 재생이 개시되면, 상기 버퍼가 언더플로우하지 않는 충분한 양의 미디어를 다운로딩하기 위해 소요된 시간과 동일하다. 채널 레이트가 변하지 않는다고 가정하면, 재생 디바이스는 초기 탐색 지연에 이어 중단되지 않는 재생을 경험해야 한다.

상한 탐색 지연을 사용한 버퍼링 및 재생

많은 실시예들에서, 각각의 스트림은 최대 비트레이트 및 최대 버퍼 크기를 갖고 인코딩된다. 그러므로, 스트림에 대한 탐색 지연은 상기 스트림의 최대 비트레이트로 나뉘어진 상기 스트림의 최대 버퍼 크기로서 결정될 수 있다. 상기 스트림의 최대 비트레이트에 기초하여 탐색 지연을 산출하는 것은 재생을 개시하기 위해 요구된 버퍼링의 양에 대한 상한을 표현하며 상한 탐색 지연으로서 불리울 수 있다. 재생 디바이스는 상기 재생 디바이스가 상기 상한 탐색 지연과 동일한 지속 기간을 갖는 미디어의 부분 또는 상기 스트림의 최대 버퍼 크기 속성과 크기가 동일한 미디어의 부분을 다운로딩할 때 채널 레이트보다 작은 최대 비트레이트를 가진 스트림의 재생을 안전하게 개시할 수 있다. 재생이 개시된 후, 대체로 상기 상한 탐색 지연의 지속 기간에 대응하는 미디어의 부분은 상기 채널의 레이트 및 상기 스트림의 인코딩의 결과로서 버퍼에 남아있다.

채널의 레이트가 상당히 감소할 때, 본 발명의 일 실시예에 따른 재생 디바이스는 보다 낮은 비트레이트 스트림(즉, 보다 낮은 최대 비트레이트를 가진 스트림)으로 스위칭할 수 있다. 상기 재생 디바이스가 이전에 버퍼링된 미디어의 재생을 완료하기 이전에 보다 낮은 비트레이트 스트림의 상한 탐색 지연과 동일한 재생 지속 기간을 가진 미디어의 부분을 버퍼링하지 않는다면, 상기 보다 낮은 비트레이트 스트림의 재생은 멈출 수 있다. 상기 재생 디바이스가 상기 상한 탐색 지연과 동일하거나 또는 그보다 큰 재생 지속 기간을 가진 미디어의 부분을 버퍼링한다는 것을 고려해볼 때, 언더플로우는 상기 보다 낮은 비트레이트 스트림의 상한 탐색 시간이 보다 높은 비트레이트 스트림의 상한 탐색 지연과 동일하거나 또는 그보다 작다면 회피될 수 있다. 따라서, 모든 스트림이 보다 높은 비트레이트 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상한 탐색 지연을 갖도록 인코딩된다면, 상기 재생 디바이스는 탐색 지연을 고려하지 않고 주어진 채널 상태들에 최적인 스트림들 사이에서 매끄럽게 전이할 수 있다.

스트림들 사이에서 스위칭하는 것

재생의 개시 전에 버퍼링된 미디어의 양이 상한 탐색 지연을 사용하여 결정될 때 스트림들 사이에서의 스위칭을 위한 프로세스가 도 4에 예시된다. 상기 프로세스(100)는 상기 재생 상태들에 대한 최적의 스트림을 선택하는 것(102) 및 재생 전에 상기 상한 탐색 지연과 동일한 재생 지속 기간을 가진 미디어의 부분을 버퍼링하는 것을 포함한다. 재생의 개시 전에, 상기 채널 상태들은 알려지지 않을 수 있으며, 재생은 최저 비트레이트에서 개시된다(비록 많은 실시예들은 재생을 개시하기 전에 채널 레이트를 측정하고 보다 높은 최대 비트레이트들을 가진 비트레이트 스트림들을 이용할 수 있지만). 상기 재생 디바이스는 그 후 상기 채널 데이터 레이트를 측정하며(104) 채널 레이트에 변화가 있는지 여부를 결정한다(106). 변화가 있다면, 상기 재생 디바이스는 새로운 채널 레이트에 대해 최적으로 인코딩되는 스트림을 선택한다(102). 상기 프로세스는 상기 스트림(108)의 끝이 도달될 때까지 반복한다. 쉽게 이해될 수 있는 바와 같이, 도 4에 예시된 상기 프로세스는 매우 간단하다. 상기 재생 디바이스는 보다 낮은 비트레이트 스트림들이 보다 높은 비트레이트 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상한 탐색 지연을 갖는다는 것을 보장하는 상기 스트림들의 인코딩으로 인해, 및 상기 스트림의 상한 탐색 지연과 동일한 재생 지속 기간을 가진 미디어의 부분을 버퍼링하는 재생 디바이스로 인해 탐색 지연을 무시할 수 있다. 특정 프로세스가 도 4에 예시되지만, 특정 애플리케이션들에 적절한 유사한 프로세스들이 또한 (이에 제한되지 않지만) 재생을 개시하기 위해 소요된 시간을 감소시키기 위해 탐색 지연에 대한 하한을 이용하는 프로세스들을 포함한 본 발명의 실시예들에 따라 이용될 수 있다.

하한 탐색 지연을 사용한 버퍼링 및 재생

비디오가 가변 비트 레이트로 인코딩될 때, 모든 화상들은 동일한 크기를 갖지 않는다. 채널 레이트에 의존하여, 큰 프레임(예로서, I-프레임)은 다운로드하기 위해 1 이상의 프레임 기간을 취할 수 있다. 그러므로, 큰 프레임들의 클러스터링은 주어진 채널 레이트에서 비디오 스트림의 재생시 중단들을 회피하기 위해 실제 최소 탐색 지연을 결정한다. 스트리밍을 개시하기 위해 소요된 시간을 감소시키기 위해 및 버퍼에서의 데이터의 양이 상한 탐색 지연보다 작을 때 스트림 스위칭 결정들을 하기 위해 최소 또는 하한 탐색 지연을 알고 있는 것에 이점이 있다. 버퍼에서의 데이터의 양이 상한 탐색 지연보다 작고 스트림들을 스위칭하기 위한 요구가 발생할 때, 이상적으로 상기 버퍼 내에 저장된 비디오를 재생하기 위해 소요할 시간의 양보다 작은 하한 탐색 지연을 가진 스트림이 선택된다. 비디오 데이터가 통상적으로 청크들로 요청된다는 사실로 인해, 상기 하한 탐색 지연은 다음과 같이 청크들의 크기에 기초하여 결정될 수 있다:

Figure pct00001

실질적으로, 상기 하한 탐색 지연은 청크 도착(즉, 채널 레이트로 나뉜 현재 청크(n) 및 모든 이전 청크들의 크기의 합) 및 그것이 언더플로우를 방지하기 위해 도달되어야 할 때(즉, (n-1)*각각의 청크의 재생 지속 기간) 사이에서의 시간에서 각각의 청크에 대한 차이의 최대치로서 결정된다. 상기 상한 탐색 지연은 다음과 같이 데이터의 스트림의 최대 버퍼 크기에 기초하여 결정된다:

Figure pct00002

상기 상한 탐색 지연은 가장 큰 가능한 청크를 다운로딩하기 위해 소요한 시간 더하기 상기 청크를 재생하기 위해 소요된 시간인 것으로 결정된다. 가변 비트 레이트 비디오가 인코딩되는 방식으로 인해, 스트림에서의 가장 큰 가능한 프레임은 이론적으로 버퍼 크기만큼 클 수 있다.

하나의 등식을 사용하여, 스트림에 대한 최소 버퍼 지연이 결정될 수 있다. 상기 하한 탐색 지연이 통상적으로 상한 탐색 지연보다 작지만, 상기 하한 탐색 지연은 또한 재생이 시작되는 포인트에 의존하여 변화한다. 각각의 스트림에서의 각각의 포인트에 대한 하한 탐색 지연은 서버에 의해 미리 산출될 수 있으며 요구에 따라 상기 재생 디바이스에 제공될 수 있다. 대안적으로, 많은 H.264 비트스트림들은 필드(initial_cpb_removal_delay)에서의 SEI 버퍼링 메시지에서 지연 정보를 운반한다. 이 값은 상기 산출을 수행하는 것과 동일하지 않지만, 동등한 것으로 발견되며, 여러 개의 실시예들에서, 상기 스트림에서의 특별한 포인트에서의 상기 initial_cpb_removal_delay 값은 상기 포인트에서 상기 하한 탐색 지연으로서 사용된다.

재생은 통상적으로 재생 디바이스가 언더플로우들을 방지할 수 있는 버퍼링된 미디어의 양을 결정하기 위해 상기 하한 탐색 지연을 사용할 때 보다 빨리 시작될 수 있다. 그러나, 재생 동안, 상기 재생 디바이스는 상기 상한 탐색 지연이 사용될 때보다 적은 버퍼링된 콘텐트를 가질 수 있다. 그러므로, 상기 채널 레이트가 감소할 때, 상기 재생 디바이스는 보다 낮은 비트레이트 스트림으로 스위칭하기 위해 보다 적은 시간을 가진다. 많은 실시예들에서, 상기 재생 디바이스는 새로운 채널 레이트보다 적고 그것에 가장 가까운 최대 비트레이트를 가진 스트림을 선택하며, 그로부터 하한 탐색 지연과 동일한 재생 지속 기간을 가진 미디어의 부분이 남아있는 버퍼링된 미디어를 재생하기 위해 소요할 시간에서 다운로딩될 수 있다. 많은 인스턴스들에서, 채널 상태들에 대해 최적으로 인코딩되는 스트림은 선택된 스트림이 아니며, 이는 불충분한 미디어가 그것이 버퍼링된 콘텐트를 재생하기 위해 소요할 시간에 다운로딩될 수 있기 때문이다. 대신에, 보다 낮은 비트레이트 스트림이 상기 버퍼링된 미디어의 재생 동안 다운로딩된 미디어의 부분이 상기 보다 낮은 비트레이트 스트림에 대한 하한 탐색 지연과 동일하거나 또는 그보다 큰 재생 지속 기간을 갖도록 선택될 수 있다. 미디어의 충분한 부분이 재생 디바이스의 버퍼에 축적될 때, 상기 재생 디바이스가 상기 채널 비트레이트에 대해 최적인 보다 높은 레이트 비트스트림으로 스위칭할 수 있다.

본 발명의 일 실시예에 따라 스트림들 사이에서 스위칭할 때 하한 탐색 지연들을 이용한 재생 디바이스는 서버로부터 스트림들의 각각에 대한 하한 탐색 지연을 획득할 수 있다. 여러 개의 실시예들에서, 상기 하한 탐색 지연들은 서버로부터 수신된 스트림에서 인코딩된다. 다수의 실시예들에서, 상기 재생 디바이스는 상기 서버로부터 상기 하한 탐색 지연들을 개별적으로 획득한다. 여러 개의 실시예들에서, 상기 재생 디바이스는 상기 스트림들의 모두에 대한 하한 탐색 지연으로서 상기 스트림들의 각각에 대한 하한 탐색 지연들 중 가장 높은 것을 이용한다. 상기 하한 탐색 지연들 중 가장 높은 것은 안전 탐색 지연으로서 불리울 수 있는데, 이는 상기 재생 디바이스가 상기 스트림들의 모두에 대하여 사용하기에 안전하기 때문이다. 각각의 스트림에 대한 하한 탐색 지연들 대신에 안전 탐색 지연을 이용하는 것은 모든 다른 대안 스트림들의 탐색 지연에 대해 충분한 지식을 제공한다. 많은 실시예들에서, 상기 스트림들에서의 모든 대응하는 위치들에 걸쳐 최대 initial_cpb_removal_delay 값은 안전 탐색 지연이 되도록 고려되며 각각의 스트림의 SEI 버퍼링 메시지에서의 initial_cpb_removal_delay 필드에 삽입된다. 다른 실시예들에서, 다양한 기술들 중 임의의 것이 채널 레이트에서의 변화에 응답하여 새로운 스트림을 선택하는 상기 재생 디바이스보다 앞에 상기 스트림들의 각각과 연관된 지연을 재생 디바이스에 제공하기 위해 이용된다.

하한 및 상한 탐색 지연의 조합을 사용한 버퍼링 및 재생

하한 탐색 시간들을 이용하는 것은 재생이 보다 빨리 시작되게 할 수 있다. 적절하게 인코딩된 콘텐트와 결합하여 상한 탐색 시간들을 사용하는 것은 스트림들 사이에서의 스위칭을 간략화한다. 다수의 실시예들에서, 재생 디바이스들은 양쪽 접근법들 모두의 이득들을 활용하는 프로세스들을 이용한다.

본 발명의 일 실시예에 따라 적응적 비트레이트 스트리밍을 수행하기 위한 프로세스가 도 5에 예시된다. 상기 프로세스(200)는 스트림들이 도 4에 도시된 프로세스에 대하여 상술된 스트림들과 유사한 방식으로 인코딩되며 하한 탐색 지연 또는 안전 탐색 지연 정보가 상기 재생 디바이스에(예로서, 각각의 스트림 내에서) 이용가능하다고 가정한다. 상기 프로세스(200)는 재생을 언제 개시할지를 결정하기 위해 하한 탐색 지연 또는 안전 탐색 지연을 이용하는 상술된 적응적 비트레이트 스트리밍 프로세스와 유사한 방식으로 시작된다. 그러나, 상기 적응적 비트레이트 프로세스는 초기 적응적 비트레이트 프로세스(202) 동안 선택된 스트림들의 레이트가 채널 레이트보다 작은 미리 결정된 양이라는 점에서 상술된 프로세스에 대하여 상이하다. 보다 낮은 비트레이트 스트림들은 미디어가 재생 디바이스의 버퍼에 축적하도록 선택된다. 다수의 실시예들에서, 채널 레이트보다 33% 낮은 비트레이트를 가진 스트림이 선택된다. 그러나, 다른 실시예들에서, 상기 미리 결정된 양은 보다 크고, 보다 작고, 및/또는 미디어 재생 동안 재생 디바이스의 버퍼에서의 미디어의 축적을 야기하는 다른 방식들로 결정될 수 있다. 상기 버퍼에 축적된 미디어의 양이 상기 스트림의 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간 및/또는 상기 인코딩된 스트림에 대한 최대 버퍼 크기보다 크거나 또는 동일한 크기를 갖도록 결정될 때(204), 상기 적응적 비트레이트 스트리밍 프로세스는 상기 스트림들의 인코딩 및 상기 재생 디바이스의 버퍼에 저장된 미디어의 양의 조합이 상기 재생 디바이스로 하여금 탐색 지연을 고려하지 않고 주어진 채널 레이트에 대해 최적으로 인코딩된 스트림을 선택할 수 있게 하는 도 4에 예시된 적응적 비트레이트 스트리밍 프로세스로 전이한다(206).

특정 프로세스가 도 5에 예시되며 특정 스트림 스위칭 규칙들이 스트림들을 스위칭할 때 상한 탐색 시간들의 단순성 및 빠른 재생을 달성하기 위해 하한 탐색 시간들의 이득들을 조합하여 상기 논의되었지만, 다수의 프로세스들은 본 발명의 실시예들에 따라 상이한 성능 목표들을 달성하기 위해 적응적 비트레이트 스트리밍 동안 변화하는 버퍼링 요건들을 이용할 수 있다.

하한 및 상한 탐색 지연의 조합을 사용할 때 스트림 스위칭

재생 디바이스가 하한 및 상한 탐색 지연들 모두를 이용할 수 있을 때 버퍼링된 비디오의 양에 의존하는 스트림 스위칭 규칙들의 세트가 이용된다. 도 5에 대하여 상기 논의된 바와 같이, 재생 디바이스는 비디오의 재생을 개시하기 전에 시간 소모 버퍼링을 감소시키기 위해 하한 탐색 지연들을 이용할 수 있다. 이러한 초기 시작 기간 동안, 상기 스트림의 하한 탐색 지연이 스트림 스위치의 시간에 버퍼링된 비디오를 재생하는데 소요할 시간의 양보다 작은 스트림을 선택하는 것을 수반하는 스트림 스위칭 규칙이 적용될 수 있다. 이러한 규칙은 다음과 같이 표현될 수 있다:

1. (버퍼 레벨 < 상한 탐색 지연)이면, 버퍼링된 비디오의 재생 지속 기간보다 작은 하한 탐색 지연을 가진 스트림을 선택한다.

네트워크 대역폭 측정이 신뢰가능하게 이루어질 수 없는 경우에, 재생 디바이스는 최저 비트레이트 스트림의 선택을 강요하는 부가적인 스트리밍 규칙을 이용할 수 있다. 이러한 스트림 스위칭 규칙은 다음과 같이 표현될 수 있다:

2. (버퍼 레벨 < 상한 탐색 지연이고 네트워크 데이터 레이트가 신뢰가능하지 않거나 또는 부정확하다면), 최저 비트레이트 스트림을 선택한다.

정상 네트워크 데이터 레이트가 충분히 긴 시간 기간 동안 경험되거나 또는 보다 낮은 비트레이트 스트림이 도 5에 대하여 상술된 방식으로 버퍼를 키우도록 선택될 때, 상기 재생 디바이스에 의해 버퍼링된 비디오의 양은 그것이 상기 스트림의 상한 탐색 지연을 초과하는 포인트로 올라갈 것이다. 이 점에서, 스트림 스위칭은 상기 스트림들의 최대 비트레이트 및 측정된 네트워크 대역폭에 기초하여 수행될 수 있다. 보다 낮은 최대 비트레이트로 인코딩된 스트림들의 상기 상한 탐색 지연이 알려질 때, 유사한 스트림 스위칭 결정이 스위치가 이루어지는 스트림의 상한 탐색 지연에 기초하여 이루어질 수 있다. 대응하는 스트림 스위칭 규칙은 다음과 같이 표현될 수 있다:

3. (네트워크 데이터 레이트가 신뢰가능하고 상한 탐색 지연 <= 버퍼링된 비디오이면), 상기 네트워크 데이터 레이트보다 작은 최대 비트레이트를 가진 대안 스트림들 중 가장 높은 최대 비트레이트를 가진 스트림을 선택한다.

상기 재생 디바이스가 레벨 레이트에 따라 예상된 것보다 훨씬 더 빨리 스트림의 청크들을 다운로딩할 때, 상기 채널 데이터 레이트는 스트림의 최대 비트레이트보다 훨씬 더 높으며, 버퍼링된 비디오의 양이 상한 탐색 지연을 초과할 때 보다 높은 비트레이트 스트림이 선택될 수 있도록 상기 네트워크 데이터 레이트를 신뢰가능하게 측정하는 것은 어렵다. 이러한 스트림 스위칭 규칙은 다음과 같이 표현될 수 있다:

4. (청크를 다운로드하기 위해 예상된 시간 >> 청크를 다운로드하기 위해 소요된 실제 시간 및 상한 탐색 지연 <= 버퍼링된 비디오이면), 다음으로 최고의 최대 비트레이트를 가진 스트림을 선택한다.

상기 규칙들 외에, 본 발명의 실시예들에 따른 재생 디바이스들은 상기 측정된 네트워크 데이터 레이트가 결정 임계치 주변을 왔다갔다 할 때 레벨들의 과도한 스위칭을 방지하기 위해 스트림 스위칭 규칙들에서의 히스테리시스를 통합할 수 있다. 더욱이, 재생 디바이스는 스트림들을 선택할 때 상기 측정된 네트워크 데이터 레이트 및 선택된 스트림의 최대 비트레이트 사이에 안전 마진들 또는 헤드룸을 포함할 수 있다. 많은 실시예들에서, 상기 헤드룸은 네트워크 데이터 레이트의 부가적인 하락의 경우에 버퍼 언더플로우의 가능성을 감소시키기 위해 상당한 대역폭 하락(예로서, 미리 결정된 양 또는 퍼센티지) 후 일시적으로 증가될 수 있다. 또한, 상기 재생 디바이스는 상기 상한 탐색 지연을 매칭하거나 또는 초과하기 위해 특별한 스트림에 대해 상기 버퍼링된 비디오 데이터의 재생 지속 기간 동안 소요된 시간을 감소시키기 위해 다른 미디어의 다운로딩(특히, 시작시)을 스로틀링(throttle)할 수 있다.

특정 스트림 스위칭 규칙들이 스트림들을 스위칭할 때 상한 탐색 시간들의 단순성 및 빠른 재생을 달성하기 위해 하한 탐색 시간들의 이득들을 조합하여 상기 논의되지만, 다양한 스트림 스위칭 규칙들 및 그 조합 중 임의의 것이 본 발명의 실시예들에 따른 상이한 성능 목표들을 달성하기 위해 적응적 비트레이트 스트리밍 동안 이용될 수 있다.

본 발명은 어떤 특정 양태들에서 설명되었지만, 많은 부가적인 수정들 및 변화들이 이 기술분야의 숙련자들에게 명백할 것이다. 그러므로, 본 발명은, 본 발명의 범위 및 사상으로부터 벗어나지 않고, 그것들이 따르는 특별한 표준 내에서 특정된 것들 이상의 특징들을 지원하는 인코더들 및 디코더들을 이용하는 것과 같은 구현에서의 다양한 변화들을 포함하여, 구체적으로 설명된 것 외의 다른 방법으로 실시될 수 있다는 것이 이해될 것이다. 따라서, 본 발명의 실시예들은 모든 면들에서, 예시적이며 비제한적인 것으로서 고려되어야 한다.

10: 적응적 스트리밍 시스템 12: 소스 인코딩 서버
14: 콘텐트 서버 16: 네트워크
18: 재생 디바이스
30: 적응적 비트레이트 스트리밍 시스템 32: 프로세서
34: 비-휘발성 메모리 36: 휘발성 메모리
38: 소스 인코딩 애플리케이션 40: 비디오 데이터
50: 재생 디바이스 52: 프로세서
54: 비-휘발성 메모리 56: 휘발성 메모리
58: 클라이언트 애플리케이션 60: 최상위 레벨 인덱스 파일
71, 72: 비디오 청크 73, 74: 오디오 청크
75: 갭

Claims (53)

  1. 한 세트의 대안 비디오 스트림들을 포함한 미디어의 적응적 비트레이트 스트리밍을 수행하도록 구성된 재생 디바이스에 있어서,
    클라이언트 애플리케이션 및 버퍼를 포함한 메모리; 및
    프로세서를 포함하고,
    상기 클라이언트 애플리케이션은 상기 프로세서를:
    한 세트의 대안 비디오 스트림들로부터 제 1 비디오 스트림을 선택하되, 적어도 복수의 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상기 상한 탐색 지연을 갖도록 인코딩되는, 상기 한 세트의 대안 비디오 스트림들로부터 상기 제 1 비디오 스트림을 선택하고;
    네트워크 연결을 통해 상기 제 1 비디오 스트림의 청크들을 요청하고 상기 요청된 청크들을 상기 버퍼에 저장하고;
    상기 제 1 비디오 스트림의 상기 버퍼링된 청크들을 재생하고;
    상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하고;
    상기 세트의 대안 스트림들로부터 상기 측정된 채널 데이터 레이트보다 작은 최대 비트레이트를 갖는 제 2 비디오 스트림을 선택하도록 구성하는, 상기 프로세서를 포함하는, 재생 디바이스.
  2. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를:
    미리 결정된 시간 간격 동안 다운로딩된 데이터의 양을 산출하고;
    상기 미리 결정된 시간 간격 동안 지금 데이터가 다운로딩되는 임의의 갭들을 관찰하고;
    상기 미리 결정된 시간 간격으로부터 임의의 갭들의 지속 기간을 감산함으로써 유효 시간 간격을 산출하고;
    데이터 레이트 측정을 획득하기 위해 상기 유효 시간 간격으로 다운로딩된 데이터의 양을 나누도록 구성함으로써 상기 프로세서로 하여금 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하도록 구성하는, 재생 디바이스.
  3. 제 2 항에 있어서,
    상기 클라이언트 애플리케이션은 또한 상기 프로세서를, 상기 데이터 레이트 측정으로부터 미리 결정된 안전 마진을 감산함으로써 측정된 채널 데이터 레이트를 획득하도록 구성하는, 재생 디바이스.
  4. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 그와 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  5. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 버퍼가 상기 제 2 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  6. 제 5 항에 있어서,
    비디오의 상기 대안 스트림들의 각각은 최대 버퍼 크기 제약 및 최대 비트레이트에 따라 인코딩되며,
    상기 애플리케이션은 상기 프로세서를, 상기 비디오 스트림의 인코딩에 사용된 상기 최대 버퍼 크기 제약 및 최대 비트레이트에 기초하여 비디오의 스트림의 상기 상한 탐색 지연을 결정하도록 구성하는, 재생 디바이스.
  7. 제 6 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 비디오의 스트림의 상기 상한 탐색 지연을
    Figure pct00003
    로서 결정하도록 구성하며,
    상기 레벨 버퍼크기는 상기 비디오 스트림을 인코딩할 때 사용된 상기 최대 버퍼 크기 제약이며,
    지속기간 청크는 비디오의 단일 청크를 재생하기 위해 소요된 시간이고;
    레벨 레이트는 상기 비디오의 상기 최대 비트레이트이며;
    레이트는 상기 네트워크 데이터 레이트인, 재생 디바이스.
  8. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 제 2 비디오 스트림으로부터 다운로딩된 미디어의 양의 상기 재생 지속 기간이 상기 제 2 비디오 스트림의 상기 하한 탐색 지연보다 크거나 또는 동일하도록 상기 세트의 대안 스트림들로부터 상기 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  9. 제 8 항에 있어서,
    상기 대안 비디오 스트림들의 각각의 상기 하한 탐색 지연은 상기 대안 비디오 스트림들의 각각에 포함되며;
    상기 클라이언트 애플리케이션은 또한 상기 프로세서를, 상기 제 1 비디오 스트림으로부터 상기 제 2 비디오 스트림의 상기 하한 탐색 지연을 획득하도록 구성하는, 재생 디바이스.
  10. 제 1 항에 있어서,
    비디오의 상기 대안 스트림들은 initial_cpb_removal_delay 필드에서의 SEI 버퍼링 메시지에서 지연 정보를 운반하는 H.264 비트스트림들이며;
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 제 2 비디오 스트림으로부터 다운로딩된 미디어의 양의 상기 재생 지속 기간이 상기 제 2 스트림에서 initial_cpb_removal_delay 필드에서의 SEI 버퍼링 메시지에서 특정된 값을 사용하여 산출된 지연보다 크거나 또는 동일하도록 상기 세트의 대안 스트림들로부터 상기 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  11. 제 1 항에 있어서,
    안전 탐색 지연이 상기 대안 비디오 스트림들의 각각에 포함되며;
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 제 2 비디오 스트림으로부터 다운로딩된 미디어의 양의 상기 재생 지속 기간이 상기 안전 탐색 지연보다 크거나 또는 동일하도록 상기 세트의 대안 스트림들로부터 상기 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  12. 제 11 항에 있어서,
    비디오의 상기 대안 스트림들은 initial_cpb_removal_delay 필드에서의 SEI 버퍼링 메시지에서 상기 안전 탐색 지연을 운반하는 H.264 비트스트림들인, 재생 디바이스.
  13. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를:
    상기 제 1 비디오 스트림이 상기 측정된 채널 데이터 레이트보다 아래의 미리 결정된 양인 최대 비트레이트를 갖도록 상기 세트의 대안 스트림들로부터 상기 제 1 비디오 스트림을 선택하며;
    상기 버퍼링된 청크들의 상기 재생 지속 기간이 상기 제 1 비디오 스트림에 대한 상기 상한 탐색 지연보다 크거나 또는 동일하도록 상기 제 1 비디오 스트림의 재생 동안 상기 제 1 비디오 스트림으로부터 수신된 청크들을 버퍼링하도록 구성하는, 재생 디바이스.
  14. 제 13 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 가진 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  15. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 작은 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함하고 상기 측정된 채널 데이터 레이트가 신뢰가능하지 않을 때 최저의 최대 비트레이트를 가진 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  16. 제 1 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 프로세서를, 상기 측정된 채널 데이터 레이트에 기초하여 상기 제 1 비디오 스트림의 청크를 다운로딩하기 위해 예상된 시간이 상기 제 1 비디오 스트림의 상기 청크를 다운로딩하기 위해 소요된 상기 실제 시간보다 큰 미리 결정된 양이고, 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때, 상기 제 1 비디오 스트림의 상기 최대 비트레이트보다 큰 최대 비트레이트를 가진 제 2 비디오 스트림을 선택하도록 구성하는, 재생 디바이스.
  17. 한 세트의 대안 비디오 스트림들을 포함한 미디어의 적응적 비트레이트 스트리밍을 수행하는 방법에 있어서,
    재생 디바이스를 사용하여 한 세트의 대안 비디오 스트림들로부터 제 1 비디오 스트림을 선택하는 단계로서, 적어도 복수의 상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상기 상한 탐색 지연을 갖도록 인코딩되는, 상기 제 1 비디오 스트림 선택 단계;
    상기 재생 디바이스를 사용하여 네트워크 연결을 통해 상기 제 1 비디오 스트림의 청크들을 요청하고 상기 요청된 청크들을 버퍼에 저장하는 단계;
    상기 재생 디바이스를 사용하여 상기 제 1 비디오 스트림의 상기 버퍼링된 청크들을 재생하는 단계;
    상기 재생 디바이스를 사용하여 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하는 단계; 및
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계로서, 상기 제 2 비디오 스트림은 상기 측정된 채널 데이터 레이트보다 작은 최대 비트레이트를 가진, 상기 제 2 비디오 스트림 선택 단계를 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  18. 제 17 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하는 단계는:
    상기 재생 디바이스를 사용하여 미리 결정된 시간 간격 동안 다운로딩된 데이터의 양을 산출하는 단계;
    상기 재생 디바이스를 사용하여 상기 미리 결정된 시간 간격 동안 지금 데이터가 다운로딩되는 임의의 갭들을 관찰하는 단계;
    상기 재생 디바이스를 사용하여 상기 미리 결정된 시간 간격으로부터 임의의 갭들의 지속 기간을 감산함으로써 유효 시간 간격을 산출하는 단계; 및
    상기 재생 디바이스를 사용하여 데이터 레이트 측정을 획득하기 위해 상기 유효 시간 간격으로 다운로딩된 상기 데이터의 양을 나누는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  19. 제 18 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 네트워크 연결의 상기 채널 데이터 레이트를 측정하는 단계는 상기 데이터 레이트 측정으로부터 미리 결정된 안전 마진을 감산함으로써 측정된 채널 데이터 레이트를 획득하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  20. 제 17 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는 상기 재생 디바이스를 사용하여 제 2 비디오 스트림을 선택하는 단계를 더 포함하며, 상기 제 2 스트림은 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 갖는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  21. 제 17 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는 상기 재생 디바이스를 사용하여 제 2 비디오 스트림을 선택하는 단계를 더 포함하며, 상기 제 2 스트림은 상기 버퍼가 상기 제 2 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 갖는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  22. 제 21 항에 있어서,
    비디오의 상기 대안 스트림들의 각각은 최대 버퍼 크기 제약에 따라 인코딩되며, 상기 방법은 상기 비디오 스트림의 상기 인코딩에 사용된 상기 최대 버퍼 크기 제약에 기초하여 상기 재생 디바이스를 사용하여 비디오의 스트림의 상기 상한 탐색 지연을 결정하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  23. 제 22 항에 있어서,
    비디오의 스트림의 상기 상한 탐색 지연을
    Figure pct00004
    으로서 결정하는 단계를 더 포함하며,
    상기 레벨 버퍼크기는 상기 비디오 스트림을 인코딩할 때 사용된 상기 최대 버퍼 크기 제약이며,
    지속기간 청크는 비디오의 단일 청크를 재생하기 위해 소요된 시간이고;
    레벨 레이트는 상기 비디오의 상기 최대 비트레이트이며;
    레이트는 상기 네트워크 데이터 레이트인, 적응적 비트레이트 스트리밍을 수행하는 방법.
  24. 제 17 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 제 2 비디오 스트림으로부터 다운로딩된 상기 미디어의 양의 상기 재생 지속 기간이 상기 제 2 비디오 스트림의 상기 하한 탐색 지연보다 크거나 또는 동일하도록, 상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  25. 제 24 항에 있어서,
    상기 대안 비디오 스트림들의 각각의 상기 하한 탐색 지연은 상기 대안 비디오 스트림들의 각각에 포함되며, 상기 방법은 상기 재생 디바이스를 사용하여 상기 제 1 비디오 스트림으로부터 상기 제 2 비디오 스트림의 상기 하한 탐색 지연을 획득하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  26. 제 17 항에 있어서,
    비디오의 상기 대안 스트림들은 initial_cpb_removal_delay 필드에서의 SEI 버퍼링 메시지에서 지연 정보를 운반하는 H.264 비트스트림들이며;
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 상기 제 2 비디오 스트림으로부터 다운로딩된 상기 미디어의 양의 상기 재생 지속 기간이 상기 제 2 스트림에서 initial_cpb_removal_delay 필드에서의 상기 SEI 버퍼링 메시지에 특정된 상기 값을 사용하여 산출된 지연보다 크거나 또는 동일하도록 상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 상기 제 2 비디오 스트림을 선택하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  27. 제 17 항에 있어서,
    안전 탐색 지연은 상기 대안 비디오 스트림들의 각각에 포함되며,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는, 상기 제 1 비디오 스트림으로부터의 콘텐트의 버퍼링된 청크들을 재생하기 위해 소요된 상기 시간 동안 제 2 비디오 스트림으로부터 다운로딩된 상기 미디어의 양의 상기 재생 지속 기간이 상기 안전 탐색 지연보다 크거나 또는 동일하도록, 상기 세트의 대안 스트림들로부터 상기 제 2 비디오 스트림을 선택하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  28. 제 27 항에 있어서,
    비디오의 상기 대안 스트림들은 initial_cpb_removal_delay 필드에서의 SEI버퍼링 메시지에서 상기 안전 탐색 지연을 운반하는 H.264 비트스트림들인, 적응적 비트레이트 스트리밍을 수행하는 방법.
  29. 제 17 항에 있어서,
    상기 세트의 대안 스트림들로부터 제 1 비디오 스트림을 선택하는 단계는,
    상기 제 1 비디오 스트림이 상기 측정된 채널 데이터 레이트 아래의 미리 결정된 양인 최대 비트레이트를 갖도록 상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 상기 제 1 비디오 스트림을 선택하는 단계; 및
    상기 제 1 비디오 스트림으로부터의 상기 버퍼링된 청크들의 양의 상기 재생 지속 기간이 상기 제 1 비디오 스트림에 대한 상기 상한 탐색 지연보다 크거나 또는 동일하도록 상기 제 1 비디오 스트림의 재생 동안 상기 제 1 비디오 스트림의 청크들을 버퍼링하는 단계를 더 포함하는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  30. 제 29 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는 상기 재생 디바이스를 사용하여 제 2 비디오 스트림을 선택하는 단계를 더 포함하며, 상기 제 2 비디오 스트림은 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때 상기 측정된 채널 데이터 레이트보다 작은 최고의 최대 비트레이트를 갖는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  31. 제 30 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는 상기 재생 디바이스를 사용하여 제 2 비디오 스트림을 선택하는 단계를 더 포함하며, 상기 제 2 비디오 스트림은 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 작은 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함하고 상기 측정된 채널 데이터 레이트가 신뢰가능하지 않을 때 최저의 최대 비트레이트를 갖는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  32. 제 17 항에 있어서,
    상기 재생 디바이스를 사용하여 상기 세트의 대안 스트림들로부터 제 2 비디오 스트림을 선택하는 단계는 상기 재생 디바이스를 사용하여 제 2 비디오 스트림을 선택하는 단계를 더 포함하며, 상기 제 2 비디오 스트림은, 상기 측정된 채널 데이터 레이트에 기초하여 상기 제 1 비디오 스트림의 청크를 다운로딩하기 위해 상기 예상된 시간이 상기 제 1 비디오 스트림의 상기 청크를 다운로딩하기 위해 소요된 상기 실제 시간보다 큰 미리 결정된 양이며, 상기 버퍼가 상기 제 1 비디오 스트림의 상기 상한 탐색 지연보다 크거나 또는 동일한 재생 지속 기간을 가진 상기 제 1 비디오 스트림으로부터의 청크들을 포함할 때, 상기 제 1 비디오 스트림의 최대 비트레이트보다 큰 상기 최대 비트레이트를 갖는, 적응적 비트레이트 스트리밍을 수행하는 방법.
  33. 다수의 대안 비디오 스트림들로서 소스 비디오를 인코딩하도록 구성된 소스 인코더에 있어서,
    메모리; 및
    프로세서로서, 소스 인코딩 애플리케이션에 의해:
    기본 해상도 및 기본 샘플 종횡비를 가진 소스 비디오 데이터를 포함하는 멀티미디어 콘텐트를 수신하고;
    한 세트의 대안 비디오 스트림들로서 상기 소스 비디오 데이터를 인코딩하도록 구성되는, 상기 프로세서를 포함하고,
    상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며;
    상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상한 탐색 지연을 갖도록 인코딩되는, 소스 인코더.
  34. 제 33 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를, 미리 결정된 최대 비트레이트들 및 최대 버퍼 크기들로 상기 대안 비디오 스트림들을 인코딩하도록 구성하며;
    스트림의 상기 상한 탐색 지연은 상기 스트림의 상기 미리 결정된 최대 비트레이트로 상기 스트림의 상기 미리 결정된 최대 버퍼 크기를 나눔으로써 결정되는, 소스 인코더.
  35. 제 33 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를, 상기 세트의 대안 스트림들에서의 각각의 스트림이 동일한 종횡비를 갖도록 상기 대안 비디오 스트림들을 인코딩하도록 구성하는, 소스 인코더.
  36. 제 33 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를, 상기 세트의 대안 비디오 스트림들에서의 각각의 스트림에 대한 하한 탐색 지연을 결정하도록 구성하는, 소스 인코더.
  37. 제 36 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를, 각각의 스트림 내에 그것의 하한 탐색 지연을 포함하도록 구성하는, 소스 인코더.
  38. 제 36 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를,
    상기 최고 하한 탐색 지연을 가진 상기 대안 스트림을 결정하며;
    각각의 스트림 내에 상기 최고 하한 탐색 지연을 포함하도록 구성하는, 소스 인코더.
  39. 제 38 항에 있어서,
    상기 대안 비디오 스트림들은 H.264 표준에 따라 인코딩되는, 소스 인코더.
  40. 제 39 항에 있어서,
    상기 소스 인코딩 애플리케이션은 또한 상기 프로세서를, 각각의 스트림 내에서 SEI 버퍼링 메시지에서의 initial_cpb_removal_delay 필드에 상기 최고 하한 탐색 지연을 포함하도록 구성하는, 소스 인코더.
  41. 제 36 항에 있어서,
    상기 소스 인코딩 애플리케이션은 상기 프로세서를, 상기 하한 탐색 지연을
    Figure pct00005
    과 같이 결정하도록 구성하는, 소스 인코더.
  42. 제 36 항에 있어서,
    상기 소스 인코딩 애플리케이션은 상기 프로세서를, 상기 상한 탐색 지연을 다음과 같이 결정하도록 구성하며:
    Figure pct00006

    상기 레벨 버퍼크기는 상기 비디오 스트림을 인코딩할 때 사용된 상기 최대 버퍼 크기 제약이며,
    지속기간 청크는 비디오의 단일 청크를 재생하기 위해 소요된 시간이고;
    레벨 레이트는 상기 비디오의 상기 최대 비트레이트이며;
    레이트는 상기 네트워크 데이터 레이트인, 소스 인코더.
  43. 다수의 대안 비디오 스트림들로서 소스 비디오를 인코딩하는 방법에 있어서,
    멀티미디어 콘텐트를 수신하는 단계로서, 상기 멀티미디어 콘텐트는 소스 인코더를 사용하여 기본 해상도 및 기본 샘플 종횡비를 가진 소스 비디오 데이터를 포함하는, 상기 수신 단계;
    상기 소스 인코더를 사용하여 한 세트의 대안 비디오 스트림들로서 상기 소스 비디오 데이터를 인코딩하는 단계로서,
    상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며;
    상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상기 상한 탐색 지연을 갖도록 인코딩되는, 상기 인코딩 단계를 포함하는, 소스 비디오를 인코딩하는 방법.
  44. 제 43 항에 있어서,
    상기 소스 인코더를 사용하여 미리 결정된 최대 비트레이트들 및 최대 버퍼 크기들로 상기 대안 비디오 스트림들을 인코딩하는 단계를 더 포함하며,
    스트림의 상기 상한 탐색 지연은 상기 스트림의 상기 미리 결정된 최대 비트레이트로 상기 스트림의 상기 미리 결정된 최대 버퍼 크기를 나눔으로써 결정되는, 소스 비디오를 인코딩하는 방법.
  45. 제 43 항에 있어서,
    상기 세트의 대안 스트림들에서의 각각의 스트림이 동일한 종횡비를 갖도록 상기 대안 비디오 스트림들을 인코딩하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  46. 제 43 항에 있어서,
    상기 세트의 대안 비디오 스트림들에서의 각각의 스트림에 대한 하한 탐색 지연을 결정하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  47. 제 46 항에 있어서,
    각각의 스트림 내에 그것의 하한 탐색 지연을 포함하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  48. 제 46 항에 있어서,
    상기 최고 하한 탐색 지연을 가진 상기 대안 스트림을 결정하는 단계; 및
    각각의 스트림 내에 상기 최고 하한 탐색 지연을 포함하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  49. 제 46 항에 있어서,
    상기 대안 비디오 스트림들은 상기 H.264 표준에 따라 인코딩되는, 소스 비디오를 인코딩하는 방법.
  50. 제 49 항에 있어서,
    각각의 스트림 내에서 SEI 버퍼링 메시지에서의 initial_cpb_removal_delay 필드에 상기 최고 하한 탐색 지연을 포함하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  51. 제 46 항에 있어서,
    상기 하한 탐색 지연을
    Figure pct00007
    과 같이 결정하는 단계를 더 포함하는, 소스 비디오를 인코딩하는 방법.
  52. 제 46 항에 있어서,
    상기 상한 탐색 지연을 다음과 같이 결정하는 단계를 더 포함하며,
    Figure pct00008

    상기 레벨 버퍼크기는 상기 비디오 스트림을 인코딩할 때 사용된 상기 최대 버퍼 크기 제약이며,
    지속기간 청크는 비디오의 단일 청크를 재생하기 위해 소요된 시간이고;
    레벨 레이트는 상기 비디오의 상기 최대 비트레이트이며;
    레이트는 상기 네트워크 데이터 레이트인, 소스 비디오를 인코딩하는 방법.
  53. 프로세서 지시들을 포함한 기계 판독가능한 매체로서, 상기 프로세서에 의한 상기 지시들의 실행은 상기 프로세서로 하여금 프로세스를 수행하게 하는, 상기 기계 판독가능한 매체에 있어서,
    상기 프로세스는:
    기본 해상도 및 기본 샘플 종횡비를 각진 소스 비디오 데이터를 포함하는 멀티미디어 콘텐트를 수신하고;
    상기 소스 비디오 데이터를 한 세트의 대안 비디오 스트림들로서 인코딩하는 것을 포함하고,
    상기 대안 비디오 스트림들은 상이한 최대 비트레이트들을 가지며;
    상기 대안 비디오 스트림들은 보다 높은 최대 비트레이트로 인코딩되는 상기 세트의 대안 비디오 스트림들에서의 스트림들의 상한 탐색 지연과 동일하거나 또는 그보다 작은 상기 상한 탐색 지연을 갖도록 인코딩되는, 기계 판독가능한 매체.
KR20137020587A 2011-01-06 2011-12-31 스트림 지연 및 채널 레이트에 기초하여 적응적 비트레이트 스트리밍을 수행하기 위한 시스템들 및 방법들 KR20140047575A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US201161430502P true 2011-01-06 2011-01-06
US61/430,502 2011-01-06
US13/341,504 2011-12-30
US13/341,504 US9020039B2 (en) 2011-01-06 2011-12-30 Systems and methods for encoding alternative streams of video for use in adaptive bitrate streaming
US13/341,667 2011-12-30
US13/341,667 US9021119B2 (en) 2011-01-06 2011-12-30 Systems and methods for performing adaptive bitrate streaming based upon the delay of each stream and the channel rate
PCT/US2011/068284 WO2012094258A1 (en) 2011-01-06 2011-12-31 Systems and methods for performing adaptive bitrate streaming based upon stream delay and "channel rate

Publications (1)

Publication Number Publication Date
KR20140047575A true KR20140047575A (ko) 2014-04-22

Family

ID=46455213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20137020587A KR20140047575A (ko) 2011-01-06 2011-12-31 스트림 지연 및 채널 레이트에 기초하여 적응적 비트레이트 스트리밍을 수행하기 위한 시스템들 및 방법들

Country Status (9)

Country Link
US (5) US9021119B2 (ko)
EP (1) EP2661694A4 (ko)
JP (1) JP2014505425A (ko)
KR (1) KR20140047575A (ko)
CN (1) CN103348336A (ko)
AU (1) AU2011353517A1 (ko)
CA (1) CA2823830A1 (ko)
MX (1) MX2013008000A (ko)
WO (1) WO2012094258A1 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1999883A4 (en) 2006-03-14 2013-03-06 Divx Llc Federated digital rights management scheme including trusted systems
US8553882B2 (en) * 2006-03-16 2013-10-08 Time Warner Cable Enterprises Llc Methods and apparatus for connecting a cable network to other network and/or devices
US8997161B2 (en) 2008-01-02 2015-03-31 Sonic Ip, Inc. Application enhancement tracks
JP5681641B2 (ja) 2009-01-07 2015-03-11 ソニック アイピー, インコーポレイテッド オンラインコンテンツのためのメディアガイドの特異的、収集的および自動的な生成
US8781122B2 (en) 2009-12-04 2014-07-15 Sonic Ip, Inc. 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
US9021119B2 (en) 2011-01-06 2015-04-28 Sonic Ip, Inc. Systems and methods for performing adaptive bitrate streaming based upon the delay of each stream and the channel rate
US9467708B2 (en) * 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8818171B2 (en) 2011-08-30 2014-08-26 Kourosh Soroushian Systems and methods for encoding alternative streams of video for playback on playback devices having predetermined display aspect ratios and network connection maximum data rates
KR101928910B1 (ko) 2011-08-30 2018-12-14 쏘닉 아이피, 아이엔씨. 복수의 최대 비트레이트 레벨들을 사용하여 인코딩된 비디오를 인코딩하고 스트리밍하기 위한 시스템들 및 방법들
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
CN103843297B (zh) * 2011-09-09 2017-07-11 诺基亚通信公司 用于为实时流服务提供和选择候选节点的方法、装置和系统
US9374406B2 (en) 2012-02-27 2016-06-21 Qualcomm Incorporated Dash client and receiver with a download rate estimator
US9503490B2 (en) 2012-02-27 2016-11-22 Qualcomm Incorporated Dash client and receiver with buffer water-level decision-making
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
US9197685B2 (en) * 2012-06-28 2015-11-24 Sonic Ip, Inc. Systems and methods for fast video startup using trick play streams
US9143812B2 (en) 2012-06-29 2015-09-22 Sonic Ip, Inc. Adaptive streaming of multimedia
US20140003799A1 (en) * 2012-06-30 2014-01-02 Divx, Llc Systems and methods for decoding a video sequence encoded using predictions that include references to frames in reference segments from different video sequences
US10452715B2 (en) 2012-06-30 2019-10-22 Divx, Llc Systems and methods for compressing geotagged video
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
US9936267B2 (en) * 2012-08-31 2018-04-03 Divx Cf Holdings Llc System and method for decreasing an initial buffering period of an adaptive streaming system
US9503753B2 (en) * 2012-09-24 2016-11-22 Qualcomm Incorporated Coded picture buffer arrival and nominal removal times in video coding
US8914836B2 (en) * 2012-09-28 2014-12-16 Sonic Ip, Inc. Systems, methods, and computer program products for load adaptive streaming
TWI528798B (zh) * 2012-10-11 2016-04-01 緯創資通股份有限公司 串流資料下載方法及其電腦可讀取儲存媒體
EP2728829A1 (en) * 2012-10-30 2014-05-07 Thomson Licensing Method for downloading content according to communication parameters, and associated content receiver
US9344472B2 (en) * 2012-12-28 2016-05-17 Microsoft Technology Licensing, Llc Seamlessly playing a composite media presentation
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
US9264475B2 (en) 2012-12-31 2016-02-16 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
KR102037413B1 (ko) 2013-02-22 2019-11-26 삼성전자주식회사 스트리밍 서비스를 제공하기 위한 동적 버퍼링 방법 및 그 장치
EP3005689A4 (en) * 2013-05-24 2017-01-11 Sonic IP, Inc. Systems and methods of encoding multiple video streams with adaptive quantization for adaptive bitrate streaming
US9357210B2 (en) * 2013-02-28 2016-05-31 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
US9350990B2 (en) 2013-02-28 2016-05-24 Sonic Ip, Inc. Systems and methods of encoding multiple video streams with adaptive quantization for adaptive bitrate streaming
US9654528B1 (en) 2013-03-11 2017-05-16 Google Inc. Dynamic bitrate selection for streaming media
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
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
GB2512310A (en) * 2013-03-25 2014-10-01 Sony Corp Media Distribution
US9344517B2 (en) 2013-03-28 2016-05-17 Sonic Ip, Inc. Downloading and adaptive streaming of multimedia content to a device with cache assist
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
US9544665B2 (en) * 2013-05-31 2017-01-10 Broadcom Corporation Providing multiple ABR streams using a single transcoder
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
KR20150022532A (ko) * 2013-08-23 2015-03-04 삼성전자주식회사 컨텐츠 재생 방법 및 그에 따른 단말, 그에 따른 시스템
TWI517687B (zh) * 2013-10-08 2016-01-11 晨星半導體股份有限公司 具資料保護功能之電視控制晶片與控制電視裝置之方法
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
US9722903B2 (en) 2014-09-11 2017-08-01 At&T Intellectual Property I, L.P. Adaptive bit rate media streaming based on network conditions received via a network monitor
US10152080B2 (en) * 2015-09-23 2018-12-11 Adobe Systems Incorporated Power efficient multimedia content streaming based on media segment duration
US10158682B2 (en) 2015-09-23 2018-12-18 Adobe Systems Incorporated Power efficient multimedia content streaming based on a server push
US9894366B2 (en) 2016-01-28 2018-02-13 Arris Enterprises Llc Variant and buffer handling for adaptive bitrate streaming
DE102016004172B4 (de) * 2016-04-11 2018-06-14 Exaring Ag Verfahren zum Umschalten zwischen digitalen Fernsehsignalen
US10148989B2 (en) 2016-06-15 2018-12-04 Divx, Llc Systems and methods for encoding video content
GB201614356D0 (en) 2016-08-23 2016-10-05 Microsoft Technology Licensing Llc Media buffering
US20180069909A1 (en) * 2016-09-08 2018-03-08 Sonic Ip, Inc. Systems and Methods for Adaptive Buffering for Digital Video Streaming
EP3520420A1 (en) * 2016-09-30 2019-08-07 British Telecommunications Public Limited Company Viewer importance adaptive bit rate delivery
CN109792546A (zh) * 2016-09-30 2019-05-21 英国电讯有限公司 观看者重视度自适应比特率传送
US10187681B2 (en) 2016-12-01 2019-01-22 The Directv Group, Inc. Enhanced streaming source change
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
US10362080B2 (en) 2017-04-25 2019-07-23 At&T Intellectual Property I, L.P. Methods, systems, and devices for video streaming adaptation using control theoretic approach
US10382829B1 (en) 2018-03-23 2019-08-13 Rovi Guides, Inc. Systems and methods for prompting a user to view an important event in a media asset when the user is using another application
US10440440B1 (en) 2018-03-23 2019-10-08 Rovi Guides, Inc. Systems and methods for prompting a user to view an important event in a media asset presented on a first device when the user is viewing another media asset presented on a second device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907688A (en) 1996-06-28 1999-05-25 Intel Corporation Smart arbitration for non-symmetric data streams
JPH10190746A (ja) * 1996-11-07 1998-07-21 Sony Corp 符号化信号伝送方法及び装置
US6637031B1 (en) * 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
JP3935419B2 (ja) * 2002-11-19 2007-06-20 Kddi株式会社 動画像符号化ビットレート選択方式
JP2004289628A (ja) * 2003-03-24 2004-10-14 Toshiba Corp ストリーミング配信システム、セットトップボックス、ストリーミング配信方法、ストリーミング配信プログラム
US7640352B2 (en) * 2004-09-24 2009-12-29 Microsoft Corporation Methods and systems for presentation of media obtained from a media stream
US7536469B2 (en) 2004-12-10 2009-05-19 Microsoft Corporation System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates
US20070160127A1 (en) * 2006-01-10 2007-07-12 International Business Machines Corporation Bandwidth adaptive stream selection
US7577980B2 (en) 2006-01-19 2009-08-18 International Business Machines Corporation Bit-rate constrained trick play through stream switching and adaptive streaming
JP5052220B2 (ja) * 2007-06-19 2012-10-17 パナソニック株式会社 動画像符号化装置
US7925774B2 (en) * 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US8170401B2 (en) 2008-11-25 2012-05-01 Cisco Technology, Inc. Optimizing ad insertion by removing low information frames
JP5072893B2 (ja) 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
JP2011151784A (ja) * 2009-12-25 2011-08-04 Panasonic Corp 動画像多重化装置、映像音声記録装置及び動画像多重化方法
US9021119B2 (en) 2011-01-06 2015-04-28 Sonic Ip, Inc. Systems and methods for performing adaptive bitrate streaming based upon the delay of each stream and the channel rate

Also Published As

Publication number Publication date
US9020039B2 (en) 2015-04-28
US9021119B2 (en) 2015-04-28
US10326987B2 (en) 2019-06-18
CN103348336A (zh) 2013-10-09
JP2014505425A (ja) 2014-02-27
US20120179834A1 (en) 2012-07-12
US20150296205A1 (en) 2015-10-15
US20120177101A1 (en) 2012-07-12
EP2661694A4 (en) 2015-06-03
US20170230655A1 (en) 2017-08-10
US20190306501A1 (en) 2019-10-03
EP2661694A1 (en) 2013-11-13
MX2013008000A (es) 2019-04-11
WO2012094258A1 (en) 2012-07-12
AU2011353517A1 (en) 2013-07-25
CA2823830A1 (en) 2012-07-12
US9667967B2 (en) 2017-05-30

Similar Documents

Publication Publication Date Title
US9009337B2 (en) On-device multiplexing of streaming media content
KR101412909B1 (ko) 병렬 스트리밍
US9420347B2 (en) Adaptive video switching for variable network conditions
CN101677376B (zh) 节目推荐装置
US9571550B2 (en) Optimized client side rate control and indexed file layout for streaming media
US8504713B2 (en) Adaptive progressive download
US8515265B2 (en) Method and apparatus for providing trick play service
US20150039782A1 (en) Apparatus, system, and method for adaptive-rate shifting of streaming content
US20100080290A1 (en) Fine-grained client-side control of scalable media delivery
TWI643502B (zh) 內容重製系統、內容重製裝置、程式、內容重製方法、及提供內容伺服器
US8661152B2 (en) Method and apparatus for reducing deterioration of a quality of experience of a multimedia service in a multimedia system
JP5025289B2 (ja) ビデオエンコーダ及びビデオをエンコードする方法
EP2360923A1 (en) Method for selectively requesting adaptive streaming content and a device implementing the method
US8930559B2 (en) Adaptive hypertext transfer protocol (“HTTP”) media streaming systems and methods
EP1641271A2 (en) Methods and systems for presentation of media obtained from a media stream
KR20100028156A (ko) 미디어 전송 시스템 및 방법
EP2661875B1 (en) Systems and methods for performing smooth visual search of media encoded for adaptive bitrate streaming using trick play streams
US10178399B2 (en) Systems and methods of encoding multiple video streams for adaptive bitrate streaming
EP2553896B1 (en) A method for recovering content streamed into chunk
US9571827B2 (en) Techniques for adaptive video streaming
JP5840702B2 (ja) 適応ストリーミングのための様々なビットのビデオストリーム
DE602004004436T2 (de) Vorrichtung, Verfahren und Verarbeitungsprogramm zum Empfangen und Wiedergeben von Daten
JP2008507922A (ja) トリックモードおよび速度移行
KR20150042191A (ko) 적응적 비트레이트 스트리밍에서 대역폭 할당을 위한 방법들 및 디바이스들
KR101653898B1 (ko) 예측적인 적응 미디어 스트리밍

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination