KR20220059425A - 비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정 - Google Patents

비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정 Download PDF

Info

Publication number
KR20220059425A
KR20220059425A KR1020210148207A KR20210148207A KR20220059425A KR 20220059425 A KR20220059425 A KR 20220059425A KR 1020210148207 A KR1020210148207 A KR 1020210148207A KR 20210148207 A KR20210148207 A KR 20210148207A KR 20220059425 A KR20220059425 A KR 20220059425A
Authority
KR
South Korea
Prior art keywords
profile
subset
video
session
client
Prior art date
Application number
KR1020210148207A
Other languages
English (en)
Other versions
KR102652518B1 (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 KR20220059425A publication Critical patent/KR20220059425A/ko
Application granted granted Critical
Publication of KR102652518B1 publication Critical patent/KR102652518B1/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2385Channel allocation; Bandwidth allocation
    • 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/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • 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/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/4104Peripherals receiving signals from specially adapted client devices
    • H04N21/4126The peripheral being portable, e.g. PDAs or mobile phones
    • 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 or rendering scenes according to encoded video stream scene graphs
    • 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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4621Controlling the complexity of the content stream or additional data, e.g. lowering the resolution or bit-rate of the video stream for a mobile client with a small screen
    • 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/47202End-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 content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Graphics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)

Abstract

일부 실시형태들에서, 방법은 세클라이언트로부터의 비디오에 대한 요청과 연관된 세션에 대한 세션 피처들을 수신하고 세션 피처들을 사용하여 세션에 대한 네트워크 조건들을 예측한다. 이용가능한 프로파일들의 서브세트는 네트워크 조건들에 기초하여 선택된다. 이용가능한 프로파일들은 상이한 재생 특징과 연관된다. 방법은 클라이언트에 비디오 재생을 위해 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 제공한다. 프로파일 래더는 세션 동안 비디오의 세크먼트들을 요청하기 위해 이용가능한 프로파일들의 서브세트를 사용하는 것으로 클라이언트를 제한한다.

Description

비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정{SESSION BASED ADAPTIVE PLAYBACK PROFILE DECISION FOR VIDEO STREAMING}
비디오 스트리밍에서, 프로파일 래더는 클라이언트가 비디오의 세그먼트들을 스트리밍할 때 사용하는데 이용가능한 상이한 프로파일들을 나열한다. 각각의 프로파일은 비트레이트의 상이한 레벨과 같은, 상이한 레벨과 연관될 수도 있다. 따라서, 네트워크 조건들이 양호할 때, 클라이언트는 더 높은 비트레이트로 프로파일을 요청할 수도 있다. 대조적으로, 네트워크 조건들이 악화될 때, 클라이언트는 더 낮은 비트레이트로 프로파일을 요청할 수도 있다. 비디오 전달 시스템은 양호한 네트워크 조건들이 경험되고 있을 때 더 높은 비트레이트를 갖는 비디오 프로파일을 클라이언트에 제공하려고 하며, 이는 스트리밍되고 있는 비디오의 품질을 개선한다. 불량 네트워크 조건들이 경험되고 있을 때, 비디오 전달 시스템은 클라이언트들이 리버퍼링 또는 다운로딩 실패와 같은 어떠한 재생 문제 없이 비디오를 재생할 수 있도록 더 낮은 비트 레이트를 갖는 프로파일을 클라이언트에 제공하려고 한다.
프로파일 래더는 플랫폼 상의 클라이언트들에 대한 모든 세션들에 대해 동일할 수도 있다. 예를 들어, 모바일 디바이스 플랫폼 상의 모든 모바일 클라이언트들은 동일한 프로파일 래더를 수신할 수도 있다. 동일한 프로파일 래더를 사용하면 최적의 재생 조건들을 제공하지 못할 수도 있는데, 이는 상이한 모바일 클라이언트들이 상이한 네트워크 조건들을 경험할 수도 있기 때문이다. 예를 들어, 이용가능한 네트워크 대역폭이 프로파일 래더에서 최상위 프로파일의 비트레이트를 초과할 때, 클라이언트는 이용가능한 대역폭을 통해 플레이될 수 있는 가능한 최고 품질 비디오를 수신하지 못한다. 또한, 이용가능한 네트워크 대역폭이 프로파일 래더에서 최하위 프로파일의 최소 비트레이트일 때, 클라이언트는 리버퍼링을 경험할 수도 있는데, 이는 프로파일 래더에서 최하위 프로파일에 의해 제공된 최저 비트레이트로 비디오를 스트리밍하기에 충분한 이용가능한 네트워크 대역폭이 없기 때문이다. 따라서, 프로파일 래더에서의 프로파일들은 클라이언트에 대한 재생 경험을 최적화하지 않는다.
이어지는 논의 및 특히 도면들과 관련하여, 나타낸 명세는 예시적인 논의를 위한 예들을 나타내며, 본 개시의 원리 및 개념적 양태들의 설명을 제공하기 위해 제시됨이 강조된다. 이와 관련하여, 본 개시의 기본적인 이해를 위해 필요한 것 이상의 구현 상세들을 나타내려는 시도는 이루어지지 않는다. 도면들과 함께 이어지는 논의는 본 개시에 따른 실시형태들이 어떻게 실시될 수도 있는지가 당업자에게 자명하게 된다. 유사하거나 동일한 참조 번호들은 다양한 도면들 및 지원 설명들에서 유사하거나 동일한 엘리먼트들을 식별하거나 그렇지 않으면 이를 지칭하는데 사용될 수도 있다. 첨부 도면들에서:
도 1 은 일부 실시형태들에 따른 적응적 프로파일 래더를 생성하기 위한 간략화된 시스템을 도시한다.
도 2 는 일부 실시형태들에 따른 프로파일 서브세트를 예측하기 위한 간략화된 플로우챠트를 도시한다.
도 3 은 일부 실시형태들에 따른 프로파일 예측 시스템의 보다 상세한 예를 도시한다.
도 4 는 일부 실시형태들에 따른 프로파일 래더에 대해 선택될 수 있는 상이한 프로파일 서브세트들의 예를 도시한다.
도 5 는 일부 실시형태들에 따른 프로파일 예측 시스템을 훈련하는 예를 도시한다.
도 6 은 일부 실시형태들에 따른 네트워크 메트릭 예측의 보다 상세한 예를 도시한다.
도 7 은 일부 실시형태들에 따른 예측 모델을 사용하여 프로파일 서브세트 판정을 생성하는 예를 도시한다.
도 8 은 일부 실시형태들에 따른 프로파일 서브세트를 선택하기 위한 간략화된 플로우챠트를 도시한다.
도 9 는 일부 실시형태들에 따른 재생 세션 동안 프로파일 래더를 적응하기 위한 방법의 간략화된 플로우챠트를 도시한다.
도 10 은 일부 실시형태들에 따른 프로파일 래더에 프로파일에 대한 낮은 비트레이트를 부가하는 예를 도시한다.
도 11 은 일 실시형태에 따른 하나 이상의 통신 네트워크들을 통해 다중 클라이언트 디바이스들과 통신하는 비디오 스트리밍 시스템을 도시한다.
도 12 는 비디오 콘텐츠 및 광고를 시청하기 위한 장치의 도식도를 도시한다.
본 명세서에서는 비디오 스트리밍 시스템을 위한 기법들이 설명된다. 다음의 기재에서는, 설명의 목적으로, 많은 예들 및 특정 상세들이 일부 실시형태들의 철저한 이해를 제공하기 위해 기술된다. 청구항들에 의해 정의된 바와 같이 일부 실시형태들은 이러한 예들에서 피처들의 일부 또는 전부를 단독으로 또는 하기에 기재된 다른 피처들과의 조합으로 포함할 수도 있고 본 명세서에 기재된 피처들 또는 개념들의 변형들 및 등가물들을 더 포함할 수도 있다.
비디오 전달 시스템은 동적으로, 예컨대 세션 당 적응될 수 있는 적응적 프로파일 래더를 사용할 수도 있다. 프로파일 예측 시스템은 세션이 시작되기 전에 세션에 대한 네트워크 조건들을 예측할 수 있다. 그 후 프로파일 예측 시스템은 예측된 네트워크 조건들을 사용하여 세션에 대한 프로파일 래더를 선택한다. 또한, 재생 동안, 네트워크 조건들이 예측된 네트워크 조건들로부터 변경된 경우, 세션내 프로파일 어댑터는 따라서 예컨대 낮은 비트레이트를 갖는 하위 프로파일 또는 높은 비트레이트를 갖는 상위 프로파일을 부가하는 것에 의해, 프로파일 래더를 조정할 수도 있다.
적응적 프로파일 래더를 사용하면 비디오의 재생을 개선할 수도 있다. 예를 들어, 네트워크 조건들을 예측하고 그러한 예측된 네트워크 조건들에 프로파일 래더를 적응하면 현재 세션 동안 경험될 수도 있는 네트워크 조건들에 더 적합한 프로파일들을 클라이언트에 제공할 수도 있다. 따라서, 비디오 전달 시스템은 플랫폼 (예를 들어, 모바일 디바이스 플랫폼, 거실 디바이스 플랫폼 등) 과 같은, 클라이언트들에 대한 고정 프로파일 래더를 사용하는 대신 상이한 클라이언트들에 대한 세션 당 프로파일 래더를 적응적으로 계산한다. 이 경우, 비디오 전달 시스템은 동일한 플랫폼의 클라이언트에 대해 그리고 또한 상이한 플랫폼들의 클라이언트들에 대해 프로파일 래더를 적응할 수도 있다. 상이한 세션들이 상이한 네트워크 조건들을 경험할 수도 있기 때문에, 적응적 프로파일 래더는 개개의 세션들에서 경험될 수도 있는 네트워크 조건들에 더 적합한 프로파일들을 포함할 수도 있다. 또한, 네트워크 조건들이 변경되면, 세션내 프로파일 어댑터가 이러한 변화하는 네트워크 조건들에 적응하여 더 적절할 수도 있는 상이한 프로파일들을 부가하거나 더 이상 적절하지 않을 수도 있는 프로파일들을 제거할 수도 있다. 따라서, 비디오의 재생은 네트워크 조건들의 변화들에 탄력적일 수도 있다.
시스템 개관
도 1 은 일부 실시형태들에 따른 적응적 프로파일 래더를 생성하기 위한 간략화된 시스템 (100) 을 도시한다. 시스템 (100) 은 비디오 전달 시스템 (102), 클라이언트(104), 및 콘텐츠 전달 네트워크 (106) 를 포함한다. 비디오 전달 시스템 (102), 콘텐츠 전달 네트워크 (106), 및 클라이언트 (104) 는 하나 이상의 컴퓨팅 디바이스들을 사용하여 구현될 수 도 있다. 또한, 비디오 전달 시스템 (102), 콘텐츠 전달 네트워크 (106), 및 클라이언트 (104) 의 단일 경우들이 나타나 있지만, 시스템 (100) 은 하나보다 많은 비디오 전달 시스템 (102), 콘텐츠 전달 네트워크 (106), 및/또는 클라이언트 (104) 를 포함할 수도 있음을 이해할 것이다. 예를 들어, 비디오 전달 시스템 (102) 은 다중 클라이언트들 (104) 과 통신할 수도 있고, 콘텐츠 전달 네트워크 (106) 는 다중 서버들 등을 통해 클라이언트 (104) 에 비디오들을 전송할 수도 있다. 또한, 비디오 전달 시스템 (102), 콘텐츠 전달 네트워크 (106), 및 클라이언트 (104) 가 별도의 엔티티들로서 나타나 있지만, 이들에 의해 수행된 기능들은 이들 사이 또는 다른 엔티티들에 분산될 수도 있다.
비디오 전달 시스템 (102) 은 클라이언트 (104) 가 라이브 텔레비전으로부터 주문형 비디오들 또는 라이브 비디오들과 같은 비디오들을 요청할 수 있게 하는 비디오 전달 서비스를 제공할 수도 있다. 비디오 전달 시스템 (102) 은 클라이언트 (104) 에 인터페이스 (112) 에서 디스플레이되는 애플리케이션을 제공할 수도 있다. 사용자 계정은 비디오 전달 서비스에 액세스하기 위해 애플리케이션들에 로그 온할 수도 있다. 그 후, 비디오 전달 시스템 (102) 은 클라이언트 (104) 로부터 비디오 요청을 수신하고 이 비디오 요청을 프로세싱하여 클라이언트 (104) 가 비디오를 스트리밍하게 할 수도 있다.
클라이언트 (104) 는 예컨대, 미디어 플레이어 (미도시) 를 통해, 인터페이스 (112) 에서 비디오를 재생할 수 있는 컴퓨팅 디바이스를 포함할 수도 있다. 클라이언트 (104) 는 모바일 폰, 스마트폰, 셋톱 박스, 텔레비전, 거실 디바이스, 태블릿 디바이스 등을 포함할 수도 있다. 클라이언트 (104) 는 플랫폼 상에서 동작하는 디바이스의 타입에 의해 분류될 수도 있는 플랫폼 상에서 동작할 수도 있다. 예를 들어, 플랫폼은 모바일 디바이스 플랫폼, 거실 디바이스 플랫폼 등을 포함한다. 사용자에 의해 사용되는 사용자 계정은 클라이언트 (104) 를 사용하여 비디오 전달 서비스에 액세스할 수도 있다. 예를 들어, 사용자 계정은 사용자 계정에 대한 정보를 식별하기 위해 비디오 전달 서비스에 로그 인할 수도 있다. 클라이언트 (104) 가 사용자 계정으로부터 비디오에 대한 요청을 수신할 때, 클라이언트 (104) 는 그 비디오에 대한 비디오 요청을 비디오 전달 시스템 (102) 에 전송할 수도 있다.
콘텐츠 전달 네트워크 (106) 는 비디오를 클라이언트 (104) 에 전달할 수 있는 서버들을 포함한다. 예를 들어, 콘텐츠 전달 서버 시스템 (116) 은 비디오를 클라이언트 (104) 에 전달할 수 있는 하나 이상의 서버들을 포함할 수도 있다. 일부 실시형태들에서, 콘텐츠 전달 서버 시스템 (116) 은 비디오의 세그먼트들을 클라이언트 (104) 에 전달한다. 세그먼트들은 비디오의 6 초와 같은, 비디오의 일부일 수도 있다. 알려진 바와 같이, 비디오는 비트레이트 및/또는 품질의 상이한 레벨들일 수 있는, 상이한 레벨들에 대응하는 다중 프로파일들로 인코딩될 수도 있다. 클라이언트 (104) 는 현재 재생 조건들에 기초하여 프로파일 레벨들 중 하나로부터 비디오의 세그먼트를 요청할 수도 있다. 예를 들어, 클라이언트 (104) 는 현재 이용가능한 대역폭 및 다른 네트워크 조건들에 기초하여 비디오에 대한 프로파일을 선택하기 위해 적응적 비트레이트 알고리즘을 사용할 수도 있다.
비디오의 재생을 시작하는 프로세스에서, 비디오 전달 시스템 (102) 은 클라이언트 (104) 로부터 비디오에 대한 요청을 수신할 수도 있다. 비디오 전달 시스템 (102) 은 콘텐츠 전달 네트워크 (106) 를 선택하고 정보를 콘텐츠 전달 네트워크 (106) 및/또는 클라이언트 (104) 에 제공하여 비디오가 콘텐츠 전달 네트워크 (106) 와 클라이언트 (104) 사이에서 스트리밍되게 할 수도 있다. 비디오 전달 시스템 (102) 은 또한 재생 구성 및 미디어 프리젠테이션 디스크립션과 같은 상이한 정보를 제공할 수도 있다. 재생 구성은 스트리밍 등을 위한 이용가능한 프로토콜들을 포함할 수도 있다. 미디어 프레젠테이션 디스크립션은 이용가능한 프로파일들, 세그먼트 지속기간, 및 비디오의 다른 특징들에 대한 정보를 포함할 수도 있다.
비디오 전달 시스템 (102) 은 콘텐츠 전달 네트워크 (106) 와 클라이언트 (104) 사이에서 비디오를 스트리밍하기 위해 세션에서 사용되는 프로파일 래더를 적응적으로 결정한다. 프로파일 래더는 세션에서 요청하기 위해 클라이언트 (104) 에게 이용가능한 프로파일들을 포함한다. 프로파일들은 상이한 레벨들로 분류될 수도 있으며 각각의 레벨은 상이한 특징과 연관된다. 예를 들어, 각각의 레벨은 400kbps (초당 킬로바이트), 650kbps, 1000kbps, 1500kbps, ...12000kbps 와 같은, 상이한 비트레이트와 연관될 수도 있다. 그러나, 레벨은 품질 특징 (예를 들어, 해상도) 과 같은 비트레이트 이외의 특징과 연관될 수도 있다. 일부 실시형태들에서, 레벨은 비디오가 400kbps 와 연관된 프로파일에 대해 400kbps 레벨에서 인코딩되는 것과 같은, 비디오가 레벨에 대해 어떻게 인코딩되는지에 기초하여 결정될 수도 있다.
일부 실시형태들에서, 12 개의 프로파일들과 같은, 이용가능한 X 개의 프로파일들이 있을 수도 있지만, 7 개와 같은, 그러한 프로파일들의 서브세트만이 세션 동안 사용될 수도 있다. 이러한 수의 프로파일들이 논의되지만, 상이한 수의 프로파일들이 이용가능할 수도 있고 및/또는 서브세트가 상이한 수의 프로파일들을 포함할 수도 있음을 이해할 것이다. 따라서, 프로파일들의 서브세트만이 사용되기 때문에, 경험되고 있는 네트워크 조건들 하에서 유용할 수도 있는 프로파일 래더에서 프로파일들의 선택을 클라이언트 (104) 에 제공하는 것이 중요하다. 프로파일 예측 시스템 (108) 은 세션에 적응되는 프로파일 서브세트를 생성한다. 적응적 프로파일 래더를 생성하는 것이 세션에 대해 설명되어 있지만, 적응적 프로파일 래더는 다중 세션들에, 예컨대 동일한 클라이언트로부터의 비디오에 대한 다중 요청들에 또는 다른 클라이언트들과의 세션들에 적용될 수도 있다. 적응적 프로파일 래더는 이후의 적응적 프로파일이 클라이언트 (104) 와 연관된 특징들에 기초하여 생성되기 때문에 고정 래더와 상이하다. 하기에서 더 상세히 논의될 바와 같이, 프로파일 예측 시스템 (108) 은 세션에 대한 네트워크 조건들을 예측하고, 그 후 네트워크 조건들을 사용하여 프로파일 서브세트 판정을 생성할 수도 있다. 프로파일 서브세트 판정은 세션에 대한 프로파일 래더에 포함하기 위해 이용가능한 프로파일들의 서브세트를 식별할 수도 있다. 그 후, 비디오 전달 시스템 (102) 은 프로파일 서브세트 판정을 콘텐츠 전달 네트워크 (106) 및/또는 클라이언트 (104) 에 제공할 수도 있다.
콘텐츠 전달 네트워크 (106) 는 비디오 요청 및 프로파일 서브세트 판정을 반영하는 프로파일 래더를 수신할 수도 있다. 매니페스트 생성기 (114) 는 클라이언트 (104) 에 대한 매니페스트를 생성할 수도 있다. 매니페스트는 클라이언트 (104) 에 의해 요청될 수 있는 비디오의 세그먼트들에 대한 정보 및 비디오의 세그먼트들을 재생하는데 필요한 임의의 다른 정보를 나열할 수도 있다. 정보는 클라이언트 (104) 가 재생을 위한 세그먼트를 요청하는데 사용할 수도 있는 링크들을 포함할 수도 있다. 일부 실시형태들에서, 매니페스트는 세그먼트 당 각각의 프로파일에 대한 링크를 포함하는 것과 같은, 각각의 세그먼트에 대한 모든 이용가능한 프로파일들을 나열한다. 클라이언트 (104) 는 세그먼트의 재생을 요청하기 위해 링크들 중 하나를 선택할 수 있다.
위에 논의된 바와 같이, 프로파일 래더는 클라이언트 (104) 를 프로파일들의 서브세트로 제한할 수도 있다. 제한을 강제하기 위해 상이한 방법들이 사용될 수도 있다. 예를 들어, 매니페스트 생성기 (114) 는 클라이언트 (104) 에 의해 사용될 수 있는 프로파일 래더에서의 프로파일 서브세트를 식별하는 정보를 매니페스트에 삽입할 수도 있다. 다른 실시형태들에서, 콘텐츠 전달 네트워크 (106) 는 메타데이터에서 또는 제어 채널에서와 같은 다른 방식으로 프로파일 래더를 전송할 수도 있다. 또한, 비디오 전달 시스템 (102) 은 프로파일 래더에서의 프로파일들의 서브세트에 대한 정보를 클라이언트 (104) 에 전송할 수도 있는데, 이는 그 후 서브세트에서의 프로파일들로부터만 선택할 수도 있다. 따라서, 매니페스트가 모든 프로파일들에 대한 링크들을 포함하더라도, 프로파일 래더는 클라이언트 (104) 가 매니페스트로부터 요청할 수 있는 프로파일들을 제한한다.
일부 실시형태들에서, 콘텐츠 전달 네트워크 (106) 의 로직은, 콘텐츠 전달 네트워크 (106) 가 개개의 프로파일들에 대해 세그먼트들에 대한 요청을 수신함에 따라 세그먼트들의 전달 동안 변경되지 않은 채로 유지될 수도 있다. 클라이언트 (104) 는 사용될 수 있는 프로파일 래더에서 프로파일들을 결정하고 그러한 프로파일들에 대한 요청들을 전송한다. 제한은 콘텐츠 전달 네트워크 (106) 가 아니라 클라이언트 (104) 에 적용될 수도 있다. 콘텐츠 전달 네트워크 (106) 는 적응적 프로파일 래더에 기초하여 매니페스트로부터 프로파일을 부가하거나 제거할 필요없이 매니페스트에 모든 프로파일들을 제공하고 링크들에 대한 요청에 응답할 수도 있다. 그러나, 콘텐츠 전달 네트워크 (106) 는 프로파일 래더에 제공된 프로파일들의 서브세트만을 갖는 매니페스트를 제공할 수도 있다.
클라이언트 (104) 가 매니페스트를 수신할 때, 클라이언트 (104) 는 프로파일과 연관된 세그먼트들에 대한 요청을 전송할 수 있다. 예를 들어, 클라이언트 (104) 는 원하는 비트레이트와 연관되는 세그먼트에 대한 링크를 선택할 수도 있다. 그 후 콘텐츠 전달 서버 시스템 (116) 은 요청된 프로파일에 대한 비디오의 세그먼트를 클라이언트 (104) 에 전송할 수도 있으며, 이는 그 후 인터페이스 (112) 상의 미디어 플레이어의 세그먼트들을 디스플레이할 수 있다. 위에 논의된 바와 같이, 클라이언트 (104) 는 현재 네트워크 조건들에 기초하여 세그먼트들에 대해 요청된 프로파일들을 변경할 수도 있다.
세션 동안 네트워크 조건들이 변경되는 것이 가능하다. 변경되는 네트워크 조건들에 적응하기 위해, 세션내 프로파일 어댑터 (110) 는 클라이언트 (104) 에서 경험되고 있는 현재 네트워크 조건들을 분석하고 프로파일 래더가 조정되어야 하는지를 결정할 수도 있다. 예를 들어, 세션내 프로파일 어댑터 (110) 는 프로파일 래더로부터 프로파일들을 부가하거나 제거할 수도 있다. 부가 또는 제거는 클라이언트 (104) 가 경험되고 있는 네트워크 조건들에 더 적합할 수 있는 프로파일들을 요청하거나 경험되고 있는 현재 조건들에 최적으로 적합하지 않은 프로파일들을 요청하지 않도록 강제할 수도 있다. 적합하지 않은 프로파일들이 프로파일 래더에 포함되는 경우, 클라이언트 (104) 가 바람직하지 않은 프로파일을 선택할 수도 있을 가능성이 있다.
프로파일 래더 예측
비디오 요청이 수신될 때, 프로파일 예측 시스템 (108) 은 현재 세션에서 사용할 프로파일 서브세트를 예측한다. 도 2 는 일부 실시형태들에 따른 프로파일 서브세트를 예측하기 위한 방법의 간략화된 플로우챠트 (200) 를 도시한다. 202 에서, 비디오 전달 시스템 (102) 은 세션에 대한 비디오에 대한 요청을 수신한다. 비디오에 대한 요청은 사용자 계정 및 다른 정보, 예컨대 디바이스 타입, 위치 등의 식별을 포함할 수도 있다.
204 에서, 프로파일 예측 시스템 (108) 은 세션에 대한 네트워크 메트릭을 예측할 수도 있다. 일부 실시형태들에서, 네트워크 메트릭들은 네트워크 대역폭, 리버퍼율 및 실패율과 같은 비디오 전달 또는 재생의 양태들을 설명하는 상이한 메트릭들을 포함할 수도 있다. 네트워크 대역폭은 세션에 대해 측정되는 이용가능한 네트워크 대역폭일 수도 있고, 리버퍼율은 재생 동안 세그먼트들의 성공적인 재생과 비교하여 리버퍼 발생들의 측정에 기초할 수도 있으며, 실패율은 성공적인 다운로드에 비해 세그먼트 다운로딩이 실패하는 횟수의 측정에 기초할 수도 있다. 다른 네트워크 메트릭들이 또한 사용될 수도 있다.
206 에서, 프로파일 예측 시스템 (108) 은 네트워크 메트릭들을 사용하여 프로파일 래더에 대한 프로파일들의 서브세트를 예측한다. 예측은 이용가능한 프로파일 리스트에서 프로파일들의 서브세트를 예측할 수도 있다. 위에 논의된 바와 같이, 클라이언트 (104) 는 전체 이용가능한 프로파일 리스트로부터 모든 프로파일들을 선택하지 못할 수도 있으며; 오히려 이용가능한 프로파일들의 서브세트가 프로파일 래더에 대해 선택된다.
208 에서, 비디오 전달 시스템 (102) 은 프로파일 래더를 콘텐츠 전달 네트워크 (106) 및/또는 클라이언트 (104) 에 제공한다. 프로파일 래더는 클라이언트 (104) 에 의해 세션에서 사용될 수 있는 이용가능한 프로파일들의 서브세트를 식별한다.
도 3 은 일부 실시형태들에 따른 프로파일 예측 시스템 (108) 의 보다 상세한 예를 도시한다. 프로파일 예측 시스템 (108) 은 프로파일 래더에서 사용될 수도 있는 모든 프로파일들을 나열하는 이용가능한 프로파일들 (306) 을 수신한다. 프로파일 레벨들은 이 예에서 비트레이트로서 분류되지만, 상이한 특징들을 사용하여 분류될 수 있다. 나타낸 바와 같이, 이용가능한 프로파일들은 최저 비트레이트로서 200kbps 에서 시작하고 최고 비트레이트에서 12000kbps 까지의 프로파일들을 포함한다. 이 예에서, 이용가능한 프로파일들 (306) 은 12 개의 프로파일들을 포함하지만, 상이한 수의 프로파일들이 이용가능할 수도 있다.
일부 실시형태들에서, 프로파일 예측 시스템 (108) 은 프로파일 래더에 포함될 수 있는 프로파일들의 수에 대한 제한을 수신한다. 예를 들어, 프로파일 래더는 7 개의 프로파일들로 제한될 수도 있지만, 제한은 상이한 수의 프로파일들로 프로파일 래더를 제한할 수도 있다. 그러나, 제한은 이용가능한 프로파일들의 수보다 작을 수도 있다.
도 4 는 일부 실시형태들에 따른 프로파일 래더에 대해 선택될 수도 있는 상이한 프로파일 서브세트들의 예를 도시한다. 4 개의 프로파일 서브세트들은 프로파일 서브세트 A (402-1), 프로파일 서브세트 B (402-2), 프로파일 서브세트 C (402-3) 및 프로파일 서브세트 D (402-4) 로 나타낸다; 그러나, 다른 프로파일 서브세트들이 인식될 수도 있다. 각각의 프로파일 서브세트 (402) 는 일부 실시형태들에서 서브세트가 적어도 하나의 상이한 프로파일을 포함한다는 점에서 상이할 수도 있다. 서브세트들에 대한 목표는 클라이언트 (104) 에서 경험되고 있는 네트워크 조건들에 더 적합할 수도 있는 프로파일들을 캡처하는 것일 수도 있다. 예를 들어, 프로파일 서브세트 A (402-1) 는 200kbps 의 최저 비트레이트가 프로파일 서브세트 A (402-1) 에 포함되는 것과 같은, 더 낮은 비트레이트를 향해 편향되는 프로파일들을 가질 수도 있다. 또한, 프로파일 서브세트 A (402-1) 는 4000kbps 의 최고 비트레이트 프로파일을 포함한다. 프로파일 서브세트 A (402-1) 는 네트워크 조건들이 4000kbps 보다 낮은 이용가능한 대역폭을 가질 것으로 예측될 때 우수하게 작동할 수도 있다.
프로파일 서브세트 B (402-2) 는 프로파일 서브세트 A (402-1) 보다 약간 더 높은 비트레이트 분포에 대해 더 최적인 일부 프로파일들을 포함할 수도 있다. 예를 들어, 프로파일 서브세트 B (402-2) 의 최저 비트레이트는 400kbps 이다. 이 경우, 클라이언트 (104) 가 200kbps 에서 낮은 비트레이트를 경험하고 있다면, 클라이언트 (104) 는 200kbps 프로파일로 스위칭할 수 없을 것이며 네트워크 대역폭이 비디오의 비트레이트보다 작기 때문에 리버퍼링을 경험할 수도 있다. 그러나, 클라이언트 (104) 가 4000kbps 이상의 이용가능한 대역폭을 경험하고 있는 경우, 클라이언트 (104) 는 4500kbps 프로파일 및 8000kbps 프로파일로부터 선정할 수 있다.
프로파일 서브세트 C (402-3) 는 프로파일 서브세트 B (402-2) 보다 더 높은 이용가능한 대역폭을 경험하고 있는 클라이언트 (104) 에 대해 최적일 수도 있는 프로파일들을 포함한다. 예를 들어, 프로파일 서브세트 C (402-3) 는 비트레이트가 650kbps 인 최하위 프로파일을 포함하고 8000kbps 의 최상위 프로파일을 포함한다. 또한, 프로파일 서브세트 C (402-3) 는 더 높은 비트레이트에서 더 많은 옵션들을 포함하는 6000kbps 프로파일을 포함한다. 마지막으로, 프로파일 서브세트 D (402-4) 는 최고 예측된 이용가능한 대역폭 분산을 경험하고 있는 클라이언트 (104) 를 위한 것일 수도 있다. 이 경우, 프로파일 서브세트 D (402-4) 는 1000kbps 인 최하위 프로파일을 포함하고 12000kbps 의 최상위 프로파일을 포함한다.
다시 도 3 을 참조하면, 네트워크 메트릭 예측기 (302) 는 개개의 세션의 재생 전에 네트워크 조건들을 예측할 수도 있다. 일부 실시형태들에서, 네트워크 메트릭 예측기 (302) 는 예측된 네트워크 대역폭 그리고 또한 하나 이상의 서비스 품질 (QoS) 메트릭들을 출력할 수도 있다. 예측된 네트워크 대역폭은 세션 동안 예측된 이용가능한 대역폭일 수도 있다. QoS 메트릭들은 세션 동안 예측되는 서비스 품질을 측정하는 상이한 메트릭들일 수도 있다. 예를 들어, QoS 메트릭들은 리버퍼율 및 실패율을 포함할 수도 있다.
네트워크 메트릭이 예측되면, 프로파일 판정 생성기 (304) 는 프로파일 서브세트 판정을 생성한다. 일부 실시형태들에서, 프로파일 판정 생성기 (304) 는 네트워크 조건들을 분석하고 네트워크 조건들에 기초하여 적절한 프로파일 래더를 선택할 수도 있다. 예를 들어, 네트워크 조건들이 낮은 이용가능한 대역폭, 더 높은 리버퍼율, 및/또는 더 높은 실패율과 연관될 때, 그 후 프로파일 판정 생성기 (304) 는 최저 비트레이트를 포함하는 프로파일 서브세트를 선택할 수도 있다. 더 낮은 비트레이트를 갖는 프로파일 서브세트는 재생 동안 리버퍼 또는 실패 발생을 최소화하기 위해 선택된다. 그러나, 네트워크 대역폭이 높을 것으로 예측되고, 리버퍼율이 낮을 것으로 예측되고, 및/또는 실패율이 더 낮을 것으로 예측되는 것과 같이, 네트워크 조건들이 우수할 때, 그 후 프로파일 판정 생성기 (304) 는 더 높은 비트레이트와 연관된 프로파일 서브세트를 선택한다. 더 높은 비트레이트 분포를 갖는 프로파일 서브세트는 클라이언트 (104) 가 재생 품질을 개선하기 위해 더 높은 비트레이트를 요청할 수 있도록 선택된다.
프로파일 판정 생성기 (304) 는 프로파일 서브세트를 생성하기 위해 상이한 방법들을 사용할 수도 있다. 일부 실시형태들에서, 프로파일 판정 생성기 (304) 는 도 4 에 나타낸 바와 같이 미리 생성된 프로파일 서브세트로부터 프로파일 서브세트를 선택할 수도 있다. 다른 실시형태들에서, 프로파일 판정 생성기 (304) 는 네트워크 조건들에 기초하여 프로파일 서브세트를 동적으로 생성할 수도 있다. 이러한 프로세스들은 하기에서 더 상세히 설명될 것이다. 이제, 프로파일 예측 시스템 (108) 의 훈련이 논의될 것이고 그 후 예측이 더 상세하게 논의될 것이다.
훈련
도 5 는 일부 실시형태들에 따른 프로파일 예측 시스템 (108) 을 훈련하는 예를 도시한다. 일부 실시형태들에서, 네트워크 메트릭 예측기 (302) 및 프로파일 판정 생성기 (304) 중 하나는 위에 논의된 바와 같이 네트워크 조건들 또는 프로파일 서브세트 판정을 예측하기 위해 사용될 수 있는 파라미터들을 포함하는 예측 모델을 사용할 수도 있다. 다른 실시형태들에서, 네트워크 메트릭 예측기 (302) 및 프로파일 판정 생성기 (304) 는 규칙 기반 시스템을 사용할 수도 있다. 다음은 프로파일 서브세트 판정을 생성하기 위해 예측 모델을 사용하는 프로파일 판정 생성기 (304) 및 네트워크 메트릭 예측기 (302) 양자 모두를 먼저 설명하지만, 논의될 바와 같이 네트워크 메트릭 예측기 (302) 및 프로파일 판정 생성기 (304) 에 대해 규칙 기반 프로세스가 사용될 수도 있다.
훈련 정보 (502) 는 세션 #1 피처들 (504-1), 세션 #2 피처들 (504-2),..., 및 세션 #N 피처들 (504-N) 과 같은 이력 세선 피처들을 포함할 수도 있다. 세션 피처들은 특정 사용자 계정의 이력 세션들로부터 추출될 수도 있다. 또한, 세션 피처들 (504) 은 다른 사용자 계정으로부터 추출될 수도 있다. 다음은 세션을 특징화하는데 사용될 수도 있는 피처들의 일부일 수도 있다.
Figure pat00001
표 1 에 나열된 피처들이 사용될 수도 있거나 사용되지 않을 수도 있으며 다른 피처들이 또한 사용될 수도 있다. 일부 실시형태들에서, 피처들은 사용자, 네트워크 및 컨텍스트의 카테고리들과 연관될 수도 있다. 사용자 피처들은 사용자 계정 또는 클라이언트의 특징들과 연관될 수도 있다. 네트워크 피처들은 재생 세션 동안 네트워크 메트릭들과 연관될 수도 있다. 컨텍스트는 세션 재생과 관련된 정보일 수도 있다.
일부 실시형태들에서, 사용자 계정 피처들은 디바이스 플랫폼, 사용자 국가, 사용자 지역, 사용자 도시, 및 인터넷 서비스 제공자 (ISP) 를 포함한다. 디바이스 플랫폼은 모바일 디바이스, 거실 디바이스 등과 같은, 클라이언트 (104) 와 연관된 플랫폼일 수도 있다. 사용자 국가는 미국과 같은 클라이언트 (104) 또는 사용자 계정이 위치되는 곳일 수도 있다. 사용자 지역은 워싱턴과 같은, 클라이언트 (104) 또는 사용자 계정이 위치되는 주일 수도 있다. 사용자 도시는 시애틀과 같은, 클라이언트 (104) 또는 사용자 계정이 위치되는 도시일 수도 있다. ISP 는 클라이언트 (104) 에 의해 사용되고 있는 인터넷 제공자일 수도 있다.
네트워크 카테고리에서, 네트워크 타입은 WiFi, 4G 등과 같은 세션 동안 클라이언트 (104) 에 의해 사용된 네트워크일 수도 있다. 콘텐츠 전달 네트워크는 연관된 재생 세션에서 사용되었던 CDN 일 수도 있다.
컨텍스트 카테고리에서, 피처들은 피크내 시간, 주중, 시간, 낮시간, 이전 대역폭, 및 이전 서비스 품질 (QoS) 을 포함할 수도 있다. 피크내 시간 피처는 연관된 세션이 로컬 시간의 7:00 p.m. 부터 11:00 p.m 까지일 수도 있는, 피크 시간 동안 발생하는지 여부일 수도 있다. 주중은 세션과 연관되는 주중일 수도 있고, 낮시간은 세션과 연관된 낮시간이다. 이전 대역폭은 사용자 계정과 연관된 마지막 세션 동안 경험한 대역폭 스테이터스일 수도 있다. 이전 QoS 는 사용자 계정과 연관된 마지막 세션으로부터의 이전 QoS 메트릭들일 수도 있으며, 이는 세션 동안 경험한 리버퍼율 및 실패율을 포함할 수도 있다.
예측 프로파일 시스템 (108) 은 세션 피처들 (504) 을 수신하고 네트워크 메트릭 예측기 (302) 및/또는 프로파일 판정 생성기 (304) 에 대한 예측 모델을 훈련할 수 있다. 일부 실시형태들에서, 세션들로부터 수집될 수 있는 통계가 경험된 대역폭 및 QoS 메트릭들을 포함하기 때문에 프로파일 서브세트를 직접 예측하는 대신 네트워크 조건들이 예측된다. 이는 소정의 피처 세트들에 대해 QoS 메트릭들 및 대역폭의 지상 실측 정보가 알려져 있기 때문에 파라미터들이 정확히 훈련될 수 있게 한다. 즉, 세션 동안 경험된 실제 대역폭이 알려져 있고 세션 피처들과 상관될 수 있다. 훈련 프로세스는 모델에 세션 피처들 (504) 을 입력하고 모델의 출력과 QoS 메트릭들 및 대역폭의 지상 실측에 기초하여 모델의 파라미터들을 훈련할 수도 있다.
예측되었던 네트워크 조건들은 세션의 등급 (rating) 및 이력 세션들로부터의 지상 실측 정보 (예를 들어, 네트워크 대역폭, 리버퍼율, 실패율, 및 그 세션에 사용된 프로파일 래더) 를 사용함으로써 프로파일 서브세트 판정 예측 모델을 훈련하는데 사용될 수 있다. 세션 피처들 (504) 은 양호한 세션 (예를 들어, 리버퍼링이 발생하지 않음) 또는 불량 세션 (예를 들어, 리버퍼링이 발생함) 과 같은 등급으로 레이팅될 수도 있다. 지상 실측 피처들은 세션들이 양호한 세션들로 분류되었는지 또는 불량 세션들로 분류되었는지에 기초하여 모델의 파라미터들을 훈련하기 위해 프로파일 판정 생성기 (304) 에 입력된다. 현재 세션의 피처들은 프로파일 판정 생성기 (304) 에 입력될 수 있고 프로파일 판정 생성기 (304) 는 이용가능한 프로파일 래더들이 양호하거나 불량 세션들을 초래할 것인지 여부를 예측한다. 양호한 세션인 것으로 예측되는 최고 대역폭 분포를 가진 프로파일 래더가 선택될 수도 있다.
네트워크 메트릭 예측기 (302) 및 프로파일 판정 생성기 (304) 를 훈련하기 위한 상이한 방법들이 인식될 수도 있다는 점에 유의한다. 훈련 후, 네트워크 조건 예측 모델과 프로파일 서브세트 판정 예측 모델이 생성되고 실시간 실행 동안 사용될 수 있다.
네트워크 메트릭 예측
도 6 은 일부 실시형태들에 따른 네트워크 메트릭 예측의 보다 상세한 예를 도시한다. 네트워크 메트릭 예측기 (302) 는 세션 피처들 (602) 을 수신한다. 현재 세션 피처들 (602) 은 표 1 에 설명된 피처들에 대한 정보를 포함할 수도 있다. 예를 들어, 비디오 전달 시스템 (102) 은 비디오를 요청한 사용자 계정을 수신하고 그 사용자 계정에 대한 피처들을 취출할 수도 있다.
네트워크 메트릭 예측기 (302) 는 네트워크 메트릭 예측 (604) 을 출력하기 위해 훈련된 네트워크 조건 예측 모델에 세션 피처들 (602) 을 입력한다. 예를 들어, 네트워크 메트릭 예측 (604) 은 네트워크 대역폭 (606-1), 리버퍼율 (606-2), 및 실패율 (606-3) 을 포함한다. 간략화된 예에서, 세션 피처들 (602) 이 높은 네트워크 대역폭을 초래한 이력 피처들과 유사한 경우 네트워크 대역폭 (606-1) 은 높을 수도 있다. 또한, 리버퍼율 (606-2) 및 실패율 (606-3) 은 현재 세션 피처들 (602) 과 유사했던 피처들에 대한 리버퍼율 및 실패율과 유사할 수도 있다. 그 후 네트워크 메트릭 예측기 (302) 는 네트워크 메트릭 예측 (604) 을 프로파일 판정 생성기 (304) 로 출력한다.
또한, 네트워크 메트릭 예측기 (302) 는 네트워크 메트릭 예측 (604) 을 예측하기 위해 규칙 기반 프로세스를 사용할 수도 있다. 네트워크 메트릭 예측기 (302) 는 네트워크 대역폭 (606-1), 리버퍼율 (606-2) 및 실패율 (606-3) 에 대한 값을들 생성하기 위해 현재 세션 피처들에 규칙들을 적용한다. 예를 들어, 일부 피처들은 더 높은 네트워크 대역폭에 매핑될 수도 있고, 일부 피처들은 더 낮은 리버퍼율 등에 매핑될 수도 있다.
프로파일 서브세트 판정
프로파일 서브세트 판정 생성기 (304) 는 프로파일 서브세트 판정을 결정하기 위해 예측 모델 또는 규칙 기반 방법을 사용할 수도 있다. 예측 모델 접근법은 도 7 에 설명되어 있고 규칙 기반 접근법은 도 8 에 설명되어 있다.
도 7 은 일부 실시형태들에 따른 예측 모델을 사용하여 프로파일 서브세트 판정을 생성하는 예를 도시한다. 프로파일 판정 생성기 (304) 는 훈련된 프로파일 서브세트 판정 예측 모델을 사용할 수도 있다. 이 경우, 네트워크 메트릭 예측 (604)(예를 들어, 네트워크 대역폭 (606-1), 리버퍼율 (606-2) 및 실패율 (606-3)) 은 프로파일 판정 생성기 (304) 에 입력된다. 그 후, 프로파일 판정 생성기 (304) 는 프로파일 서브세트 판정을 출력한다. 프로파일 서브세트 판정은 선택된 프로파일 서브세트들 A, B, C, 또는 D 중 하나일 수도 있다. 다른 예들에서, 프로파일 서브세트 판정은 프로파일 래더에 포함될 특정 프로파일들을 출력할 수도 있다. 예를 들어, 프로파일 판정 생성기 (304) 는 네트워크 메트릭들을 분석하고 프로파일 래더에 동적으로 포함할 프로파일들을 결정할 수도 있다. 따라서, 프로파일 판정 생성기 (304) 는 미리 결정된 서브세트들로 제한될 수 없을 수도 있다. 프로파일들을 동적으로 선택하면 적응적 프로파일 래더에 대한 프로파일들의 분포를 결정하는데 있어서 더 많은 유연성을 제공할 수도 있다.
다른 예들에서, 프로파일 판정 생성기 (304) 는 규칙 기반 프로세스를 사용할 수도 있다. 도 8 은 일부 실시형태들에 따른 프로파일 서브세트를 선택하기 위한 간략화된 플로우챠트 (800) 를 도시한다. 802 에서, 프로파일 판정 생성기 (304) 는 네트워크 메트릭 예측 (604) 을 수신한다. 프로파일 판정 생성기 (304) 는 그 후 네트워크 메트릭 예측 (604) 에 규칙들을 적용할 수도 있다. 규칙들을 위해 사용된 임계치들은 예시이며 변경될 수도 있다. 일부 예들에서, 804 에서, 프로파일 판정 생성기 (304) 는 네트워크 대역폭 (606-1) 의 예측된 대역폭이 1000kbps 와 같은 임계치보다 작은지를 결정한다. 1000kbps 의 값이 사용될 수도 있는데, 이는 이 값이 더 낮은 비트레이트이고 대역폭이 1000kbps 보다 작은 경우 프로파일 판정 생성기 (304) 가 806 에서 프로파일 서브세트 A 를 선택하기 때문이다. 프로파일 판정 생성기 (304) 는 이 서브세트가 프로파일들의 최저 비트레이트 분포와 연관되기 때문에 프로파일 서브세트 A 를 선택한다.
대역폭이 1000kbps 보다 작지 않은 경우, 프로파일 판정 생성기 (304) 는 리버퍼율 값이 3% 보다 큰 것과 같은, 리버퍼율 (606-2) 이 임계치를 충족하는지를 결정한다. 리버퍼율 (606-2) 이 3% 보다 큰 경우, 810 에서 프로파일 판정 생성기 (304) 는 프로파일 서브세트 B 를 선택한다. 프로파일 판정 생성기 (304) 는 프로파일 서브세트 B 를 선택하는데 이는 프로파일 서브세트 B 에서 더 낮은 비트레이트 분포가 이용가능한 대역폭보다 더 높은 비디오의 비트레이트로 인해 발생하는 리버퍼들의 수를 감소시킬 수도 있기 때문이다. 예를 들어, 프로파일 서브세트 C 또는 프로파일 서브세트 D 가 선택되면, 클라이언트 (104) 에 의해 더 높은 비트레이트 프로파일이 선택되는 더 높은 기회가 있을 것이고, 이는 원하는 리버퍼율보다 더 높은 결과를 초래할 수도 있다. 예측된 대역폭이 1000kbps 보다 작지 않기 때문에 프로파일 서브세트 A 는 선택되지 않을 수도 있고 최저 비트레이트 분포를 갖는 프로파일은 필요하지 않을 수도 있다.
812 에서, 리버퍼율 (606-2) 이 3% 보다 크지 않은 경우, 프로파일 판정 생성기 (304) 는 실패율 (606-3) 이 8% 보다 큰지 여부와 같은, 임계치를 충족하는지를 결정한다. 실패율 (606-3) 이 8% 보다 큰 경우, 814 에서 프로파일 판정 생성기 (304) 는 프로파일 서브세트 C 를 선택한다. 프로파일 판정 생성기 (304) 는 세그먼트들을 다운로딩할 때 실패 수를 감소시키기 위해 프로파일 서브세트 D 대신에 프로파일 서브세트 C 를 선택할 수도 있다. 프로파일 서브세트 C 는 비트레이트 분포가 프로파일 서브세트 D 보다 더 낮기 때문에 더 적은 실패를 초래할 수도 있다.
실패율 (606-3) 이 8% 보다 큰 경우, 816 에서, 프로파일 판정 생성기 (304) 는 프로파일 서브세트 D 를 선택한다. 이 경우, 네트워크 메트릭 예측 (204) 은 모든 규칙들을 통과했고 프로파일 서브세트에서 최고 비트레이트 분포가 선택된다. 위의 로직이 설명되어 있지만, 각각의 메트릭에 대한 다중 임계치를 테스트하는 것과 같은 다른 로직이 사용될 수도 있다.
세션내 적응적 프로파일 판정
비디오 전달 시스템 (102) 은 세션이 시작하기 전에 초기 프로파일 래더를 결정한다. 그러나, 재생이 시작되면, 네트워크 조건들이 변화할 수도 있을 가능성이 있다. 즉, 비디오 전달 시스템 (102) 은 예측된 네트워크 조건들을 사용하여 프로파일 래더를 생성하지만, 세션 동안 경험될 수도 있는 실제 네트워크 조건들을 사용하지 않는다. 따라서, 네트워크 조건들이 변경되면 프로파일 래더에 대한 프로파일들의 서브세트가 적절하지 않을 수도 있을 가능성이 있다. 도 9 는 일부 실시형태들에 따른 재생 세션 동안 프로파일 래더를 적용하기 위한 방법의 간략화된 플로우챠트 (900) 를 도시한다. 이러한 프로파일 래더를 적응하는 프로세스가 설명되지만, 다른 프로세스들이 사용될 수도 있다.
902 에서, 클라이언트 (104) 는 비디오의 세그먼트들을 다운로드하고 현재 네트워크 조건들을 검출한다. 현재 네트워크 조건들은 이용가능한 대역폭, 리버퍼율 및 현재 세션에 대한 실패율을 포함할 수도 있다. 904 에서, 세션내 프로파일 어댑터 (110) 는 네트워크 조건들이 제 1 임계치를 충족하는지를 결정한다. 예를 들어, 임계치는 비트레이트가 임계치 상이어야 하고, 리버퍼율이 임계치 미만이어야 하며, 실패율이 임계치 미만이어야 하는 것과 같은, 경험되어야 하는 최소 네트워크 조건들에 기초할 수도 있다. 테스트는 개개의 임계치를 충족하기 위해 메트릭들의 하나 이상을 필요로 할 수도 있다. 비트레이트에 대해, 테스트는 현재 네트워크 대역폭이 프로파일에서의 최저 비트레이트의 임계치 이상인 것으로 요구할 수도 있다.
네트워크 조건들이 제 1 임계치를 충족하는 경우, 906 에서, 세션내 프로파일 어댑터 (110) 는 프로파일 래더에 현재 존재하는 최저 비트레이트보다 낮은 비트레이트를 갖는 프로파일, 또는 프로파일 래더에서 현재 최저 비트레이트에 다음으로 최저 비트레이트를 가진 프로파일과 같은, 더 낮은 비트레이트를 갖는 프로파일을 프로파일 래더에 부가한다. 일부 실시형태들에서, 세션내 프로파일 어댑터 (110) 는 제한없이 프로파일 래더에 프로파일들을 부가할 수 있다. 다른 예들에서, 프로파일 래더는 프로파일들의 수를 제한할 수도 있고 세션내 프로파일 어댑터 (110) 는 더 낮은 비트레이트 프로파일을 부가할 때 더 높은 비트레이트를 갖는 프로파일을 제거할 수도 있다.
네트워크 조건들이 제 1 임계치를 충족하지 않는 경우, 908 에서, 세션내 프로파일 어댑터 (110) 는 안정적인 네트워크 조건들이 발생하고 있는지를 결정한다. 현재 대역폭, 리버퍼율, 실패율이 임계치 또는 임계치들의 범위 내에 있는 경우 안정적인 네트워크 조건들이 발생할 수도 있다. 테스트는 개개의 임계치를 충족하기 위해 메트릭들의 하나 이상을 필요로 할 수도 있다. 예를 들어, 현재 비트레이트가 프로파일 래더에서 최저 비트레이트와 최고 비트레이트 사이에 있는 경우, 안정적인 네트워크 조건들이 결정될 수도 있다. 910 에서, 안정적인 네트워크 조건들이 발생하고 있으면, 세션내 프로파일 어댑터 (110) 는 현재 프로파일 래더를 유지한다.
안정적인 네트워크 조건들이 발생하고 있지 않은 경우, 912 에서, 세션내 프로파일 어댑터 (110) 는 네트워크 조건들이 제 2 임계치를 충족하는지를 결정한다. 예를 들어, 이용가능한 대역폭은 프로파일 래더에서 프로파일들의 최고 비트레이트보다 클 수도 있다.
914 에서, 네트워크 조건들이 제 2 임계치를 충족하는 경우, 세션내 프로파일 어댑터 (110) 는 더 높은 비트레이트를 갖는 프로파일을 프로파일 래더에 부가한다. 예를 들어, 현재 이용가능한 대역폭이 12000kbps 이면, 세션내 프로파일 어댑터 (110) 는 12000kbps 를 갖는 프로파일을 프로파일 래더에 부가하거나 또는 프로파일 래더에 최고 비트레이트 이상의 다음 최고 비트레이트를 부가할 수도 있다. 네트워크 조건들이 제 2 임계치를 충족하지 않으면, 프로세스는 902 로 반복되어 계속해서 세그먼트들을 다운로드하고 현재 네트워크 조건들을 검출한다.
도 10 은 일부 실시형태들에 따른 프로파일 래더에 프로파일에 대한 낮은 비트레이트를 부가하는 예를 도시한다. 1002 에서, 클라이언트 (104) 는 세그먼트를 다운로드한다. 1004 에서, 세션내 프로파일 어댑터 (110) 는 재생 리버퍼링이 발생하는지 여부를 결정한다. 재생 리버퍼링이 발생하는 경우, 1006 에서, 세션내 프로파일 어댑터 (110) 는 리버퍼 카운트를 구현한다. 리버퍼 카운트는 세션에 대한 리버퍼 발생들의 수를 카운트할 수도 있다. 1008 에서, 세션내 프로파일 어댑터 (110) 는 리버퍼 카운트가 임계치 rebuffer_thres 보다 큰지를 결정한다. 리버퍼 카운트가 리버퍼 임계치보다 크지 않으면, 프로세스는 1002 로 반복하여 또 다른 세그먼트를 다운로드한다.
재생 리버퍼링이 발생하지 않으면, 1012 에서, 세션내 프로파일 어댑터 (110) 는 대역폭이 대역폭 임계치 Bw_thres 보다 큰지 및/또는 버퍼 길이가 버퍼 임계치 Bl_thres 보다 큰지를 결정한다. 세션내 프로파일 어댑터 (110) 는 이용가능한 대역폭을 대역폭 임계치에 대해 비교하여 더 높은 대역폭이 경험되고 있는지를 결정한다. 또한, 세션내 프로파일 어댑터 (110) 는 버퍼 길이를 버퍼-길이 임계치와 비교하여 소정량의 시간 동안 더 낮은 대역폭을 핸들링하기에 충분한 비디오가 버퍼에 있는지를 결정한다. 버퍼는 비디오의 세그먼트들을 이들이 수신될 때 저장하는데 사용되고, 미디어 플레이어는 버퍼로부터 세그먼트들을 판독한다 이용가능한 대역폭이 줄어들면, 이용가능한 대역폭이 다시 증가할 때까지 시간 기간 동안 리버퍼링이 발생하지 않을 수도 있도록 버퍼에 여전히 충분한 비디오가 저장되어 있을 수도 있다.
이용가능한 대역폭이 대역폭 임계치보다 크고 버퍼 길이가 버퍼 길이 임계치보다 큰 경우, 1014 에서, 세션내 프로파일 어댑터 (110) 는 세션내 프로파일 어댑터 (110) 가 더 낮은 비트레이트를 갖는 또 다른 프로파일을 부가한 것과 같은, 프로파일 래더에 프로파일이 부가되었는지를 결정한다. 그렇지 않은 경우, 프로세스는 1002 로 반복하여 또 다른 다운로드된 세그먼트를 분석한다. 부가된 프로파일이 존재하는 경우, 1016 에서, 세션내 프로파일 어댑터 (110) 는 부가된 프로파일을 제거할 수도 있다. 예를 들어, 세션내 프로파일 어댑터 (110) 는 최저 비트레이트를 갖는 부가된 프로파일을 제거할 수도 있다. 이러한 프로파일은 이용가능한 대역폭이 임계치 이상인 경우 또는 더 낮은 대역폭을 핸들링하는데 충분한 비디오 데이터가 버퍼에 있는 경우 필요하지 않을 수도 있다. 그 후, 1018 에서, 세션내 프로파일 어댑터 (110) 는 래더로부터 프로파일을 제거함으로써 프로파일 래더를 업데이트한다. 부가된 프로파일의 제거는 클라이언트 (104) 가 더 낮은 비트레이트를 가진 프로파일을 선택하는 것을 허용하지 않을 수도 있으며, 이는 현재 네트워크 조건들과 우수하게 매칭하는 비트레이트를 갖는 프로파일들을 포함하기 때문에 래더를 더 효율적이게 한다.
세션내 프로파일 어댑터 (110) 는 더 높은 대역폭 분포를 갖는 더 높은 프로파일을 부가하거나 삭제할 수도 있다. 예를 들어, 이용가능한 대역폭이 프로파일 래더에서 최고 프로파일 비트레이트보다 더 높은 경우, 세션내 프로파일 어댑터 (110) 는 프로파일 래더에 더 높은 비트레이트 분포를 갖는 더 높은 프로파일을 부가할 수도 있다. 그러나, 네트워크 조건들이 악화될 때, 부가된 상위 프로파일은 실제로 재생 경험에 영향을 미치지 않을 수도 있는데, 이는 적응적 비트레이트 알고리즘이 낮은 대역폭을 경험하는 경우 프로파일을 선택하지 않을 수도 있지 때문이다. 그러나, 프로파일 래더 수의 제한을 고려하여, 세션내 프로파일 어댑터 (110) 가 하위 프로파일을 부가할 때, 세션내 프로파일 어댑터 (110) 는 부가된 상위 프로파일을 제거할 수도 있다.
결론
따라서, 비디오 전달 시스템 (102) 은 각각의 세션에 대해 적응적 프로파일 래더를 사용한다. 적응적 프로파일은 세션의 예측된 네트워크 조건들에 대해 최적화될 수도 있는 프로파일들의 서브세트를 선택한다. 네트워크 조건들이 변경되면, 세션내 프로파일 어댑터 (110) 가 사용되어 프로파일 래더를 조정할 수도 있다. 따라서, 프로파일들이 고정되지 않고 네트워크 조건들에 적응할 수 있기 때문에, 세션에서 경험된 품질이 개선될 수도 있다. 예를 들어, 더 높은 비트레이트를 갖는 프로파일이 클라이언트 (104) 에 제공되는 경우, 더 높은 비트레이트가 세션에서 요청될 수도 있다. 또한, 리버퍼링은 더 낮은 비트레이트를 갖는 프로파일들이 클라이언트 (104) 에 이것이 더 낮은 비트레이트 환경을 경험하고 있을 때 제공되는 경우 감소될 수도 있다.
예시의 실시형태들
일부 실시형태들에서, 방법은 다음은, 컴퓨팅 디바이스에 의해, 클라이언트로부터의 비디오에 대한 요청과 연관된 세션에 대한 세션 피처들을 수신하는 단계; 컴퓨팅 디바이스에 의해, 세션 피처들을 사용하여 세션에 대한 네트워크 조건들을 예측하는 단계; 컴퓨팅 디바이스에 의해, 네트워크 조건들에 기초하여 이용가능한 프로파일들의 서브세트를 선택하는 단계로서, 이용가능한 프로파일들은 상이한 재생 특징과 연관되는, 상기 이용가능한 프로파일들의 서브세트를 선택하는 단계; 및 컴퓨팅 디바이스에 의해, 클라이언트에 비디오의 재생을 위한 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 제공하는 단계로서, 프로파일 래더는 세션 동안 비디오의 세그먼트들을 요청하기 위해 이용가능한 프로파일들의 서브세트를 사용하는 것으로 클라이언트를 제한하는, 상기 프로파일 래더를 제공하는 단계를 포함한다.
일부 실시형태들에서, 네트워크 조건들을 예측하는 단계는, 세션 피처들을 네트워크 조건들을 예측하기 위해 예측 네트워크에 입력하는 단계를 포함한다.
일부 실시형태들에서, 네트워크 조건들은 예측된 이용가능한 대역폭 및 서비스 품질 메트릭 중 적어도 하나를 포함한다.
일부 실시형태들에서, 방법은 세션 피처들로부터 네트워크 조건들을 예측하기 위해 예측 모델을 생성하도록 클라이언트에 대한 이력 세션 피처들로 예측 네트워크를 훈련시키는 단계를 더 포함한다.
일부 실시형태들에서, 이용가능한 프로파일들의 서브세트를 선택하는 단계는, 복수의 프로파일 서브세트들로부터 프로파일 서브세트를 선택하는 단계를 포함하고, 각각의 프로파일 서브세트는 상이한 이용가능한 프로파일들의 서브세트를 포함한다.
일부 실시형태들에서, 이용가능한 프로파일들의 서브세트를 선택하는 단계는, 이용가능한 프로파일들의 서브세트에서 프로파일을 예측하는 단계를 포함하고, 이용가능한 프로파일들의 서브세트는 고정된 프로파일 서브세트로부터 선택하지 않으면서 동적으로 예측된다.
일부 실시형태들에서, 이용가능한 프로파일들의 서브세트를 선택하는 단계는, 이용가능한 프로파일들의 서브세트를 선택하기 위해 네트워크 메트릭들에 규칙들의 세트를 적용하는 단계를 포함한다.
일부 실시형태들에서, 이용가능한 프로파일들의 서브세트를 선택하는 단계는, 복수의 프로파일 서브세트들로부터 하나를 선택하기 위해 네트워크 메트릭들에 규칙들의 세트를 적용하는 단계를 포함하고, 각각의 프로파일 서브세트는 상이한 이용가능한 프로파일들의 서브세트를 포함한다.
일부 실시형태들에서, 프로파일 래더를 제공하는 단계는, 프로파일 래더를 클라이언트에 전송하는 단계를 포함하고, 클라이언트는 세션 동안 비디오의 세그먼트들을 요청하기 위해 이용가능한 프로파일들의 서브세트를 사용하는 것에 제한을 적용한다.
일부 실시형태들에서, 프로파일 래더를 제공하는 단계는, 프로파일 래더를 콘텐츠 전달 네트워크에 전송하는 단계를 포함하고, 콘텐츠 전달 네트워크는 프로파일 래더를 클라이언트에 통신한다.
일부 실시형태들에서, 클라이언트에 전송되는 매니페스트는 비디오의 세그먼트에 대한 모든 이용가능한 프로파일들에 대한 정보를 포함하고, 클라이언트는 세그먼트 비디오에 대한 프로파일을 요청하기 위해 이용가능한 프로파일들의 서브세트를 사용하는 것에 제한을 적용한다.
일부 실시형태들에서, 클라이언트는 비디오의 재생을 시작하면 이용가능한 프로파일들의 서브세트에 프로파일을 부가하도록 허용된다.
일부 실시형태들에서, 클라이언트는 비디오의 재생을 시작하면 이용가능한 프로파일들의 서브세트에 대해 로파일을 제거하도록 허용된다.
일부 실시형태들에서, 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서, 명령들은, 실행될 때, 클라이언트로부터의 비디오에 대한 요청과 연관된 세션에 대한 세션 피처들을 수신하고; 세션 피처들을 사용하여 세션에 대한 네트워크 조건들을 예측하고; 네트워크 조건들에 기초하여 이용가능한 프로파일들의 서브세트를 선택하는 것으로서, 이용가능한 프로파일들은 상이한 재생 특징과 연관되는, 상기 이용가능한 프로파일들의 서브세트를 선택하며; 그리고 클라이언트에 비디오의 재생을 위한 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 제공하는 것으로서, 프로파일 래더는 세션 동안 비디오의 세그먼트들을 요청하기 위해 이용가능한 프로파일들의 서브세트를 사용하는 것으로 클라이언트를 제한하는, 상기 프로파일 래더를 제공하기 위해, 동작가능하도록 컴퓨터 시스템을 제어한다.
일부 실시형태들에서, 방법은 컴퓨팅 디바이스에 의해, 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 수신하는 단계로서, 이용가능한 프로파일들의 서브세트는 비디오를 재생하기 위한 세션에 대해 결정되는, 상기 프로파일 래더를 수신하는 단계; 컴퓨팅 디바이스에 의해, 프로파일 래더에서의 프로파일을 사용하여 비디오의 세그먼트에 대한 요청을 전송하는 단계; 컴퓨팅 디바이스에 의해, 비디오의 재생을 위한 재생 조건들을 분석하는 단계; 재생 조건들을 분석하는 것에 기초하여 세션에 대한 프로파일 래더를 조정할지 여부를 결정하는 단계; 및 프로파일 래더를 조정하기로 결정될 때, 이용가능한 프로파일들로부터의 프로파일을 프로파일 래더에 부가하거나 이용가능한 프로파일들의 서브세트로부터 프로파일을 제거하는 단계를 포함한다.
일부 실시형태들에서, 프로파일 래더를 조정할지 여부를 결정하는 단계는, 비디오의 재생 동안의 발생들을 리버퍼링하기 위한 정보를 유지하는 단계; 및 이용가능한 프로파일들의 서브세트에서 최저 대역폭을 갖는 프로파일보다 낮은 대역폭을 갖는 프로파일을 부가하는 단계를 포함한다.
일부 실시형태들에서, 프로파일 래더를 조정할지 여부를 결정하는 단계는 이용가능한 대역폭이 임계치보다 큰지 여부를 결정하는 단계; 및 이용가능한 프로파일들의 서브세트에 이전에 부가되었던 프로파일을 제거하는 단계를 포함한다.
일부 실시형태들에서, 프로파일 래더를 조정할지 여부를 결정하는 단계는, 이용가능한 대역폭이 임계치보다 큰지 여부 및 또는 버퍼 길이가 임계치보다 큰지 여부를 결정하는 단계; 및 이용가능한 프로파일들의 서브세트에 대해 이전에 부가되었던 프로파일을 제거하는 단계를 포함한다.
일부 실시형태들에서, 프로파일 래더를 조정할지 여부를 결정하는 단계는, 이용가능한 프로파일들의 서브세트에서 최고 비트레이트를 갖는 프로파일보다 높은 비트레이트를 갖는 프로파일을 부가하는 단계를 포함한다.
일부 실시형태들에서, 이용가능한 프로파일들의 서브세트는 세션에 대한 예측된 네트워크 조건들에 기초하여 예측된다.
시스템
본 명세서에 개시된 피처들 및 양태들은 도 11 에 나타낸 바와 같이 하나 이상의 통신 네트워크들을 통해 다중 클라이언트 디바이스들과 통신하는 비디오 스트리밍 시스템 (1100) 과 협력하여 구현될 수도 있다. 비디오 스트리밍 시스템 (1100) 의 양태들은 단지 본 개시에 따라 준비된 콘텐츠의 분산 및 전달을 가능하게 하기 위한 애플리케이션의 예를 제공하기 위해 설명된다. 본 기술은 스트리밍 비디오 애플리케이션들에 제한되지 않고 다른 애플리케이션들 및 전달 메커니즘에 적응될 수도 있음을 이해해야 합니다.
일 실시형태에서, 미디어 프로그램 제공자는 미디어 프로그램들의 라이브러리를 포함할 수도 있다. 예를 들어, 미디어 프로그램은 사이트 (예를 들어, 웹사이트), 애플리케이션, 또는 브라우저를 통해 집성되고 제공될 수도 있다. 사용자는 미디어 프로그램 제공자의 사이트 또는 애플리케이션에 액세스하고 미디어 프로그램을 요청할 수 있다. 사용자는 미디어 프로그램 제공자에 의해 제공된 미디어 프로그램들만을 요청하도록 제한될 수도 있다.
시스템 (1100) 에서, 비디오 데이터는 비디오 콘텐츠 서버 (1102) 에 대한 입력으로서 사용하기 위해, 하나 이상의 소스들로부터, 예를 들어 비디오 소스 (1110) 로부터 획득될 수도 있다. 입력 비디오 데이터는 임의의 적절한 디지털 포맷, 예를 들어 무빙 픽처 전문가 그룹 (Moving Picture Experts Group; MPEG)-1, MPEG-2, MPEG-4, VC-1, H.264/어드밴스드 비디오 코딩 (Advanced Video Coding; AVC), 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC), 또는 다른 포맷으로 원시 또는 편집된 프레임-기반 비디오 데이터를 포함할 수도 있다. 대안으로, 비디오는 비-디지털 포맷으로 제공되고 스캐너 및/또는 트랜스코더를 사용하여 디지털 포맷으로 변환될 수도 있다. 입력 비디오 데이터는 다양한 타입들의 비디오 클립들 또는 프로그램들, 예를 들어 텔레비전 에피소드, 모션 픽처, 및 소비자에 대한 주요 관심 콘텐츠로서 생성된 다른 콘텐츠를 포함할 수도 있다. 비디오 데이터는 또한 오디오를 포함할 수도 있거나 오디오만이 사용될 수도 있다.
비디오 스트리밍 시스템 (1100) 은 하나 이상의 컴퓨터들을 통해 분산된 하나 이상의 컴퓨터 서버들 또는 모듈들 (1102, 1104, 및/또는 1107) 을 포함할 수도 있다. 각각의 서버 (1102, 1104, 1107) 는 하나 이상의 데이터 스토어들 (1109), 예를 들어 데이터베이스, 인덱스, 파일, 또는 다른 데이터 구조를 포함할 수도 있거나 이에 동작가능하게 커플링될 수도 있다. 비디오 콘텐츠 서버 (1102) 는 다양한 비디오 세그먼트들의 데이터 스토어 (미도시) 에 액세스할 수도 있다. 비디오 콘텐츠 서버 (1102) 는 클라이언트 디바이스와 통신하는 사용자 인터페이스 제어기에 의해 지시된 대로 비디오 세그먼트들을 서빙할 수도 있다. 본 명세서에 사용된 바와 같이, 비디오 세그먼트는 텔레비전 에피소드, 모션 픽처, 레코딩된 라이브 공연, 또는 다른 비디오 콘텐츠를 시청하기 위해 스트리밍 비디오 세션에서 사용될 수도 있는 것과 같은, 프레임 기반 비디오 데이터의 정해진 부분을 지칭한다.
일부 실시형태들에서, 비디오 광고 서버 (1104) 는 특정 광고주 또는 메시지에 대한 광고로서 구성된 비교적 짧은 비디오 (예를 들어, 10초, 30초, 또는 60초 비디오 광고) 의 데이터 스토어에 액세스할 수도 있다. 광고는 어떤 종류의 지불에 대한 대가로 광고주에게 제공될 수도 있거나 시스템 (1100) 에 대한 판촉 메시지, 공공 서비스 메시지, 또는 일부 다른 정보를 포함할 수도 있다. 비디오 광고 서버 (1104) 는 사용자 인터페이스 제어기 (미도시) 에 의해 지시된 대로 비디오 광고 세그먼트들을 서빙할 수도 있다.
비디오 스트리밍 시스템 (1100) 은 또한 비디오 전달 시스템 (102) 을 포함할 수도 있다.
비디오 스트리밍 시스템 (1100) 은 비디오 콘텐츠 및 비디오 광고를 스트리밍 비디오 세그먼트로 통합하는 통합 및 스트리밍 컴포넌트 (1107) 를 더 포함할 수도 있다. 예를 들어, 스트리밍 컴포넌트 (1107) 는 콘텐츠 서버 또는 스트리밍 미디어 서버일 수도 있다. 제어기 (미도시) 는 임의의 적절한 알고리즘 또는 프로세스에 기초하여 트리밍 비디오에서 광고의 선택 또는 구성을 결정할 수도 있다. 비디오 스트리밍 시스템 (1100) 은 도 11 에 도시되지 않은 다른 모듈들 또는 유닛들, 예를 들어 관리 서버, 상거래 서버, 네트워크 인프라구조, 광고 선택 엔진 등을 포함할 수도 있다.
비디오 스트리밍 시스템 (1100) 은 데이터 통신 네트워크 (1112) 에 연결될 수도 있다. 데이터 통신 네트워크 (1112) 는 로컬 영역 네트워크 (LAN), 광역 네트워크 (WAN), 예를 들어 인터넷, 전화 네트워크, 무선 셀룰러 텔레통신 네트워크 (WCS)(1114), 또는 이들의 일부 조합 또는 유사한 네트워크들을 포함할 수도 있다.
하나 이상의 클라이언트 디바이스들 (1120) 은 데이터 통신 네트워크 (1112), 무선 셀룰러 텔레통신 네트워크 (1114), 및/또는 또 다른 네트워크를 통해 비디오 스트리밍 시스템 (1100) 과 통신할 수도 있다. 이러한 클라이언트 디바이스들은 예를 들어, 하나 이상의 랩톱 컴퓨터들 (1120-1), 데스크톱 컴퓨터들 (1120-2), "스마트" 모바일 폰들 (1120-3), 태블릿 디바이스들 (1120-4), 네트워크-인에이블형 텔레비전들 (1120-5), 또는 이들의 조합을, LAN 에 대해서는 라우터 (1118) 를 통해, 무선 셀룰러 텔레통신 네트워크 (1114) 에 대해서는 기지국 (1117) 을 통해, 또는 일부 다른 연결을 통해 포함할 수도 있다. 동작에 있어서, 이러한 클라이언트 디바이스들 (1120) 은 사용자 입력 디바이스들로부터 수신된 사용자 입력 또는 다른 입력에 응답하여 데이터 또는 명령들을 시스템 (1100) 으로 전송 및 수신할 수도 있다. 응답으로, 시스템 (1100) 은 미디어 프로그램의 선택에 응답하여 데이터 스토어 (1109) 로부터의 메타데이터 및 비디오 세그먼트들을 클라이언트 디바이스들 (1120) 에 서빙할 수도 있다. 클라이언트 디바이스들 (1120) 은 디스플레이 스크린, 프로젝터, 또는 다른 비디오 출력 디바이스를 사용하여 미디어 플레이어에서 스트리밍 비디오 세그먼트로부터의 비디오 콘텐츠를 출력하고 비디오 컨텐츠와 상호작용하기 위한 사용자 입력을 수신할 수도 있다.
오디오-비디오 데이터의 분산은 다양한 방법들, 예를 들어 스트리밍을 사용하여 컴퓨터 네트워크, 텔레통신 네트워크 및 이러한 네트워크들의 조합을 통해 스트리밍 컴포넌트 (1107) 로부터 원격 클라이언트 디바이스들로 구현될 수도 있다. 스트리밍에서, 콘텐츠 서버는 오디오-비디오 데이터를 클라이언트 디바이스 상에서 적어도 부분적으로 동작하는 미디어 플레이어 컴포넌트로 연속적으로 스트리밍하며, 이는 서버로부터 스트리밍 데이터를 수신하는 것과 동시에 오디오-비디오 데이터를 재생할 수도 있다. 스트리밍이 논의되지만, 다른 전달 방법들이 사용될 수도 있다. 미디어 플레이어 컴포넌트는 콘텐츠 제공자로부터 데이터의 초기 부분을 수신한 직후 비디오 데이터의 플레이를 개시할 수도 있다. 전형적인 스트리밍 기법들은 데이터의 스트림을 엔드 사용자들의 세트에 전달하는 단일 제공자를 사용한다. 단일 스트림을 많은 청중에게 전달하기 위해 높은 대역폭 및 프로세싱 파워가 필요할 수도 있으며, 엔드 사용자들의 수가 증가함에 따라 제공자의 필요한 대역폭이 증가할 수도 있다.
스트리밍 미디어는 온-디맨드 또는 라이브로 전달될 수 있다. 스트리밍은 파일 내의 임의의 지점에서 즉시 재생을 가능하게 한다. 엔드-사용자들은 미디어 파일을 통해 스킵하여 재생을 시작하거나 미디어 파일에서의 임의의 지점으로 재생을 변경할 수도 있다. 이로써, 엔드-사용지는 파일이 점진적으로 다운로드하기 위해 대기할 필요가 없다. 통상적으로, 스트리밍 미디어는 비디오 파일에 대한 요청을 수락하는 특수 디바이스를 통해 고 대역폭 능력을 갖는 몇몇 전용 서버들로부터 전달되고, 포맷에 관한 정보, 대역폭 및 그러한 파일들의 구조로, 비디오를 플레이하는데 필요한 데이터의 양만을, 이를 플레이하는데 필요한 레이트로 전달한다. 스트리밍 미디어 서버는 또한 목적지 클라이언트 상에서 미디어 플레이어의 송신 대역폭 및 능력들을 처리할 수도 있다. 스트리밍 컴포넌트 (1107) 는 제어 메시지 및 데이터 메시지를 사용하여 클라이언트 디바이스 (1120) 와 통신하여 비디오가 플레이될 때 네트워크 조건들을 변경하는 것으로 조정할 수도 있다. 이러한 제어 메시지들은 빨리 감기, 빨리 되감기, 일시중지 또는 클라이언트에서의 파일의 특정 부분 찾기와 같은 제어 기능들을 가능하게 하기 위한 커맨드들을 포함할 수 있다.
스트리밍 컴포넌트 (1107) 는 비디오 데이터를 필요할 때에만 필요한 레이트로 송신하기 때문에, 서빙된 스트림들의 수에 걸친 정밀한 제어가 유지될 수 있다. 뷰어는 더 낮은 데이터 송신 매체를 통해 높은 데이터 레이트 비디오들을 시청하는 것이 가능하지 않을 것이다. 그러나, 스트리밍 미디어 서버들은 (1) 사용자들에게 비디오 파일에 대한 랜덤 액세스를 제공하고, (2) 누가 어떤 비디오 프로그램들을 시청하는지 얼마나 오래 시청하는지의 모니터링을 허용하고, (3) 시청 경험을 지원하는데 필요한 데이터의 양만이 송신되기 때문에, 보다 효율적으로 송신 대역폭을 사용하며, 그리고 (4) 비디오 파일이 뷰어의 컴퓨터에 저장되지 않지만, 미디어 플레이어에 의해 폐기되며, 따라서 콘텐츠를 통한 더 많은 제어를 허용한다.
스트리밍 컴포넌트 (1107) 는 HTTP 및 실시간 메시징 프로토콜 (Real Time Messaging Protocol; RTMP) 과 같은, TCP-기반 프로토콜들을 사용할 수도 있다. 스트리밍 컴포넌트 (1107) 는 또한 라이브 웹캐스트를 전달할 수 있고 멀티캐스트할 수 있으며, 이는 하나보다 많은 클라이언트가 단일 스트림으로 튜닝할 수 있게 하여, 대역폭을 절약한다. 스트리밍 미디어 플레이어들은 전체 비디오를 버퍼링하는 것에 의존하여 미디어 프로그램의 임의의 지점에 대한 랜덤 액세스를 제공하지 않을 수도 있다. 대신, 이것은 미디어 플레이어에서 스트리밍 미디어 서버로 송신된 제어 메시지들의 사용을 통해 달성된다. 스트리밍을 위해 사용된 다른 프로토콜들은 하이퍼텍스트 전송 프로토콜 (Hypertext Transfer Protocol; HTTP) 라이브 스트리밍 (HLS) 또는 HTTP 를 통한 동적 적응 스트리밍 (Dynamic Adaptive Streaming over HTTP; DASH) 이다. HLS 및 DASH 프로토콜들은 통상적으로 하나 이상의 콘텐츠 전달 네트워크 (CDN) 로부터 다양한 비트레이트로 이용가능하게 하는 작은 세그먼트들의 플레이리스트를 통해 HTTP 에 걸쳐 비디오를 전달한다. 이는 미디어 플레이어가 세그먼트 별로 비트레이트 및 콘텐츠 소스들 양자 모두를 스위칭하게 할 수 있다. 스위칭은 네트워크 대역폭 변동들 그리고 또한 비디오의 재생 동안 발생할 수도 있는 인프라구조 실패를 보상하는 것을 돕는다.
스트리밍에 의한 비디오 콘텐츠의 전달은 다양한 모델들 하에서 달성될 수도 있다. 하나의 모델에서, 사용자는 예를 들어, 미디어 프로그램들의 라이브러리 또는 제한된 미디어 프로그램들의 부분에 대한 액세스를 위한 요금을 지불하거나 유료 서비스 (pay-per-view service) 를 사용하는, 미디어 프로그램들의 시청을 위해 지불한다. 개시 직후 브로드캐스트 텔레비전에 의해 널리 채택된 또 다른 모델에서는, 스폰서가 프로그램의 프레젠테이션 동안 또는 이에 인접하여 광고를 제시하는 권리에 대한 대가로 미디어 프로그램의 프레젠테이션에 대해 지불한다. 일부 모델들에서, 광고는 시간이 "광고 슬롯" 또는 "광고 브레이크" 로 지칭될 수도 있는, 비디오 프로그램에서 미리결정된 시간에 삽입된다. 스트리밍 비디오로, 미디어 플레이어는 클라이언트 디바이스가 지정된 광고 슬롯 동안 미리결정된 광고를 또한 플레이하지 않으면서 비디오를 플레이할 수 없도록 구성될 수도 있다.
도 12 를 참조하면, 비디오 콘텐츠 및 광고를 시청하기 위한 장치 (1200) 의 도식도가 도시된다. 선택된 실시형태들에서, 장치 (1200) 는 프로세서 (1202) 에 의한 실행을 위한 이진- 코딩된 기능 모듈들을 유지하는, 프로세서 메모리 (1204) 에 동작가능하게 커플링된 프로세서 (CPU)(1202) 를 포함할 수도 있다. 이러한 기능 모듈들은 입력/출력 및 메모리 액세스와 같은 시스템 기능들을 핸들링하기 위한 오퍼레이팅 시스템 (1206), 웹 페이지를 디스플레이하는 브라우저 (1208), 및 비디오를 플레이하기 위한 미디어 플레이어 (1210) 를 포함할 수도 있다. 모듈들은 세션내 프로파일 어댑터 (110) 를 더 포함할 수도 있다. 메모리 (1204) 는 도 12 에 나타내지 않은 부가 모듈들, 예를 들어 본 명세서의 다른 곳에서 설명된 다른 동작들을 수행하기 위한 모듈들을 유지할 수도 있다.
버스 (1214) 또는 다른 통신 컴포넌트는 장치 (1200) 내의 정보의 통신을 지원할 수도 있다. 프로세서 (1202) 는 특정 태스크들을 정의하는 머신-판독가능 소프트웨어 코드를 실행함으로써 본 명세서에 개시된 피처들 및 양태들에 따라 특정 태스크들을 수행하도록 구성되거나 동작가능한 특수화된 또는 전용 마이크로프로세서일 수도 있다. 프로세서 메모리 (1204)(예를 들어, 랜덤 액세스 메모리 (RAM) 또는 다른 동적 저장 디바이스) 는 버스 (1214) 에 연결되거나 프로세서 (1202) 에 직접 연결되고, 프로세서 (1202) 에 의해 실행될 정보 및 명령들을 저장할 수도 있다. 메모리 (1204) 는 또한 이러한 명령들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장할 수도 있다.
저장 디바이스 (1224) 에서의 컴퓨터 판독가능 매체는 버스 (1214) 에 연결되고 프로세서 (1202) 에 대한 정적 정보 및 명령들을 저장할 수도 있고; 예를 들어, 저장 디바이스 (CRM)(1224) 는 장치 (1200) 가 파워 오프될 때 모듈들 (1206, 1208, 1210, 1212) 을 저장할 수도 있으며, 이로부터 장치 (1200) 가 파워 업될 때 모듈이 프로세서 메모리 (1204) 로 로딩될 수도 있다. 저장 디바이스 (1224) 는 정보, 명령들, 또는 이들의 일부 조합, 예를 들어 프로세서 (1202) 에 의해 실행될 때, 장치 (1200) 로 하여금 본 명세서에 설명된 바와 같이 방법의 하나 이상의 동작들을 수행하도록 구성되게 하거나 동작가능하게 하는 명령들을 유지하는 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수도 있다.
통신 인터페이스 (1216) 는 또한 버스 (1214) 에 연결될 수도 있다. 통신 인터페이스 (1216) 는 선택적으로 라우터/모뎀 (1226) 및 유선 또는 무선 연결을 통해, 장치 (1200) 와 하나 이상의 외부 디바이스들, 예를 들어 스트리밍 시스템 (1100) 사이의 양방향 데이터 통신을 제공하거나 지원할 수도 있다. 대안으로 또는 부가적으로, 장치 (1200) 는 안테나 (1229) 에 연결된 트랜시버 (1218) 를 포함할 수도 있고, 이를 통해 장치 (1200) 는 무선 통신 시스템을 위한 기지국과 또는 라우터/모뎀 (1226) 과 무선으로 통신할 수도 있다. 대안으로, 장치 (1200) 는 로컬 영역 네트워크, 가상 사설 네트워크, 또는 다른 네트워크를 통해 비디오 스트리밍 시스템 (1100) 과 통신할 수도 있다. 다른 대안으로, 장치 (1200) 는 시스템 (1100) 의 모듈 또는 컴포넌트로서 통합되고 버스 (1214) 를 통해 또는 일부 다른 방식에 의해 다른 컴포넌트들과 통신할 수도 있다.
장치 (1200) 는 (예를 들어, 버스 (1214) 및 그래픽 프로세싱 유닛 (1220) 을 통해) 디스플레이 유닛 (1228) 에 연결될 수도 있다. 디스플레이 (1228) 는 장치 (1200) 의 오퍼레이터에게 정보를 디스플레이하기 위한 임의의 적절한 구성을 포함할 수도 있다. 예를 들어, 디스플레이 (1228) 는 액정 디스플레이 (LCD), 터치스크린 LCD (예를 들어, 용량성 디스플레이), 발광 다이오드 (LED) 디스플레이, 프로젝터, 또는 시각적 디스플레이로 장치의 사용자에게 정보를 제시하는 다른 디스플레이 디바이스를 포함하거나 활용할 수도 있다.
하나 이상의 입력 디바이스들 (1230)(예를 들어, 영숫자 키보드, 마이크로폰, 키패드, 원격 제어기, 게임 제어기, 카메라, 또는 카메라 어레이) 은 정보 및 커맨드들을 장치 (1200) 에 통신하기 위해 사용자 입력 포트 (1222) 를 통해 버스 (1214) 에 연결될 수도 있다. 선택된 실시형태들에서, 입력 디바이스 (1230) 는 커서의 포지셔닝을 통해 제어를 제공하거나 지원할 수도 있다. 또한 포인팅 디바이스라고도 하는 이러한 커서 제어 디바이스는, 마우스, 트랙볼, 트랙 패드, 터치 스크린, 커서 방향 키 또는 물리적 이동을 수신하거나 추적하고 그 이동을 커서 이동을 표시하는 전기 신호로 변환하기 위한 다른 디바이스로 구성될 수도 있다. 커서 제어 디바이스는 예를 들어, 터치 감지 스크린을 사용하여 디스플레이 유닛 (1228) 에 통합될 수도 있다. 커서 제어 디바이스는 방향 정보 및 커맨드 선택을 프로세서 (1202) 에 통신하고 디스플레이 (1228) 상의 커서 이동을 제어할 수도 있다. 커서 제어 디바이스는 예를 들어, 디바이스가 평면 또는 3 차원 공간에서 커서 포지션들을 특정할 수 있게 하는 2 이상의 자유도를 가질 수 도 있다.
일부 실시형태들은 명령 실행 시스템, 장치, 시스템 또는 머신에 의해 또는 이와 관련하여 사용하기 위한 비일시적 컴퓨터 판독가능 저장 매체에서 구현될 수도 있다. 컴퓨터 판독가능 저장 매체는 일부 실시형태들에 의해 설명된 방법을 수행하도록 컴퓨터 시스템을 제어하기 위한 명령들을 포함한다. 컴퓨터 시스템은 하나 이상의 컴퓨팅 디바이스들을 포함할 수도 있다. 명령들은 하나 이상의 컴퓨터 프로세서들에 의해 실행될 때, 일부 실시형태들에서 설명되는 것을 수행하도록 구성되거나 동작가능할 수도 있다.
본 명세서의 설명에서 그리고 후속하는 청구범위 전체에 걸쳐 사용된 바와 같이, 부정관사 및 정관사 ("a," "an" 및 "the") 는 문맥이 달리 명확하게 진술하지 않는 한, 복수의 레퍼런스들을 포함한다. 또한, 본 명세서의 설명에서 그리고 후속하는 청구범위 전체에 걸쳐 사용된 바와 같이, "에서 (in)" 의 의미는 문맥이 달리 명확하게 진술하지 않는 한, "에서(in)" 및 "상에서(on)" 를 포함한다.
위의 설명은 일부 실시형태들의 양태들이 어떻게 구현될 수 있는지의 예들과 함께 다양한 실시형태들을 예시한다. 위의 예들 및 실시형태들은 유일한 실시형태로 간주되지 않아야 하며 후속하는 청구범위에 의해 정의된 바와 같이 일부 실시형태들의 유연성 및 이점을 예시하기 위해 제시된다. 위의 개시 및 후속하는 청구범위에 기초하여, 청구범위에 의해 정의된 바와 같은 본 명세서의 범위를 벗어나지 않으면서 다른 배열들, 실시형태들, 구현들 및 균등물들이 채용될 수도 있다.

Claims (20)

  1. 컴퓨팅 디바이스에 의해, 클라이언트로부터의 비디오에 대한 요청과 연관된 세션에 대한 세션 피처들을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 세션 피처들을 사용하여 상기 세션에 대한 네트워크 조건들을 예측하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 네트워크 조건들에 기초하여 이용가능한 프로파일들의 서브세트를 선택하는 단계로서, 상기 이용가능한 프로파일들은 상이한 재생 특징과 연관되는, 상기 이용가능한 프로파일들의 서브세트를 선택하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 클라이언트에 상기 비디오의 재생을 위한 상기 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 제공하는 단계로서, 상기 프로파일 래더는 상기 세션 동안 상기 비디오의 세그먼트들을 요청하기 위해 상기 이용가능한 프로파일들의 서브세트를 사용하는 것으로 상기 클라이언트를 제한하는, 상기 프로파일 래더를 제공하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 네트워크 조건들을 예측하는 단계는
    상기 세션 피처들을 상기 네트워크 조건들을 예측하기 위해 예측 네트워크에 입력하는 단계를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 네트워크 조건들은 예측된 이용가능한 대역폭 및 서비스 품질 메트릭 중 적어도 하나를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 세션 피처들로부터 상기 네트워크 조건들을 예측하기 위해 상기 클라이언트에 대한 예측 모델을 생성하도록 이력 세션 피처들로 예측 네트워크를 훈련시키는 단계를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 이용가능한 프로파일들의 서브세트를 선택하는 단계는
    복수의 프로파일 서브세트들로부터 프로파일 서브세트를 선택하는 단계로서, 각각의 프로파일 서브세트는 상이한 이용가능한 프로파일들의 서브세트를 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 이용가능한 프로파일들의 서브세트를 선택하는 단계는
    상기 이용가능한 프로파일들의 서브세트에서 상기 프로파일을 예측하는 단계를 포함하고, 상기 이용가능한 프로파일들의 서브세트는 고정된 프로파일 서브세트로부터 선택하지 않으면서 동적으로 예측되는, 방법.
  7. 제 1 항에 있어서,
    상기 이용가능한 프로파일들의 서브세트를 선택하는 단계는
    상기 이용가능한 프로파일들의 서브세트를 선택하기 위해 상기 네트워크 메트릭들에 규칙들의 세트를 적용하는 단계를 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 이용가능한 프로파일들의 서브세트를 선택하는 단계는
    복수의 프로파일 서브세트들로부터 하나를 선택하기 위해 상기 네트워크 메트릭들에 규칙들의 세트를 적용하는 단계를 포함하고, 각각의 프로파일 서브세트는 상이한 이용가능한 프로파일들의 서브세트를 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 프로파일 래더를 제공하는 단계는
    상기 프로파일 래더를 상기 클라이언트에 전송하는 단계를 포함하고, 상기 클라이언트는 상기 세션 동안 상기 비디오의 세그먼트들을 요청하기 위해 상기 이용가능한 프로파일들의 서브세트를 사용하는 것에 제한을 적용하는, 방법.
  10. 제 1 항에 있어서,
    상기 프로파일 래더를 제공하는 단계는
    상기 프로파일 래더를 콘텐츠 전달 네트워크에 전송하는 단계를 포함하고, 상기 콘텐츠 전달 네트워크는 상기 프로파일 래더를 상기 클라이언트에 통신하는, 방법.
  11. 제 10 항에 있어서,
    상기 클라이언트로 전송되는 매니페스트는 비디오의 세그먼트를 위한 모든 이용가능한 프로파일들에 대한 정보를 포함하고, 그리고
    상기 클라이언트는 세그먼트 비디오에 대한 프로파일을 요청하기 위해 상기 이용가능한 프로파일들의 서브세트를 사용하는 것에 제한을 적용하는, 방법.
  12. 제 1 항에 있어서,
    상기 클라이언트는 상기 비디오의 재생을 시작하면 상기 이용가능한 프로파일들의 서브세트에 프로파일을 부가하도록 허용되는, 방법.
  13. 제 1 항에 있어서,
    상기 클라이언트는 상기 비디오의 재생을 시작하면 상기 이용가능한 프로파일들의 서브세트에 대한 프로파일을 제거하도록 허용되는, 방법.
  14. 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때,
    클라이언트로부터의 비디오에 대한 요청과 연관된 세션에 대한 세션 피처들을 수신하고;
    상기 세션 피처들을 사용하여 상기 세션에 대한 네트워크 조건들을 예측하고;
    상기 네트워크 조건들에 기초하여 이용가능한 프로파일들의 서브세트를 선택하는 것으로서, 상기 이용가능한 프로파일들은 상이한 재생 특징과 연관되는, 상기 이용가능한 프로파일들의 서브세트를 선택하며; 그리고
    상기 클라이언트에 상기 비디오의 재생을 위한 상기 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 제공하는 것으로서, 상기 프로파일 래더는 상기 세션 동안 상기 비디오의 세그먼트들을 요청하기 위해 상기 이용가능한 프로파일들의 서브세트를 사용하는 것으로 상기 클라이언트를 제한하기
    위해 동작가능하도록 컴퓨터 시스템을 제어하는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 컴퓨팅 디바이스에 의해, 이용가능한 프로파일들의 서브세트를 포함하는 프로파일 래더를 수신하는 단계로서, 상기 이용가능한 프로파일들의 서브세트는 비디오를 재생하기 위한 세션에 대해 결정되는, 상기 프로파일 래더를 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 프로파일 래더에서의 프로파일을 사용하여 비디오의 세그먼트에 대한 요청을 전송하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 비디오의 재생을 위한 재생 조건들을 분석하는 단계;
    상기 재생 조건들을 분석하는 것에 기초하여 상기 세션에 대한 상기 프로파일 래더를 조정할지 여부를 결정하는 단계; 및
    상기 프로파일 래더를 조정하기로 결정될 때, 상기 이용가능한 프로파일들로부터의 프로파일을 상기 프로파일 래더에 부가하거나 상기 이용가능한 프로파일들의 서브세트로부터 프로파일을 제거하는 단계를 포함하는, 방법.
  16. 제 15 항에 있어서,
    상기 프로파일 래더를 조정할지 여부를 결정하는 단계는
    상기 비디오의 재생 동안의 리버퍼링 발생들에 대한 정보를 유지하는 단계; 및
    상기 이용가능한 프로파일들의 서브세트에서 최저 대역폭을 갖는 프로파일보다 낮은 대역폭을 갖는 프로파일을 부가하는 단계를 포함하는, 방법.
  17. 제 15 항에 있어서,
    상기 프로파일 래더를 조정할지 여부를 결정하는 단계는
    이용가능한 대역폭이 임계치보다 큰지 여부를 결정하는 단계; 및
    상기 이용가능한 프로파일들의 서브세트에 이전에 부가되었던 프로파일을 제거하는 단계를 포함하는, 방법.
  18. 제 15 항에 있어서,
    상기 프로파일 래더를 조정할지 여부를 결정하는 단계는
    이용가능한 대역폭이 임계치보다 큰지 또는 버퍼 길이가 임계치보다 큰지 여부를 결정하는 단계; 및
    상기 이용가능한 프로파일들의 서브세트에 이전에 부가되었던 프로파일을 제거하는 단계를 포함하는, 방법.
  19. 제 15 항에 있어서,
    상기 프로파일 래더를 조정할지 여부를 결정하는 단계는
    상기 이용가능한 프로파일들의 서브세트에서 최고 비트레이트를 갖는 프로파일보다 높은 비트레이트를 갖는 프로파일을 부가하는 단계를 포함하는, 방법.
  20. 제 15 항에 있어서,
    상기 이용가능한 프로파일들의 서브세트는 상기 세션에 대한 예측된 네트워크 조건들에 기초하여 예측되는, 방법.
KR1020210148207A 2020-11-02 2021-11-01 비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정 KR102652518B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/087,255 2020-11-02
US17/087,255 US11812081B2 (en) 2020-11-02 2020-11-02 Session based adaptive playback profile decision for video streaming

Publications (2)

Publication Number Publication Date
KR20220059425A true KR20220059425A (ko) 2022-05-10
KR102652518B1 KR102652518B1 (ko) 2024-03-28

Family

ID=78414581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210148207A KR102652518B1 (ko) 2020-11-02 2021-11-01 비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정

Country Status (6)

Country Link
US (1) US11812081B2 (ko)
EP (1) EP3993365A1 (ko)
JP (2) JP2022074119A (ko)
KR (1) KR102652518B1 (ko)
CN (1) CN114449353B (ko)
MX (1) MX2021013344A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022133237A1 (de) 2022-05-16 2023-11-16 Electro M Co., Ltd. Weichmagnetische Pulverzusammensetzung für Induktorkern und Verfahren zur Herstellung eines Induktorkerns unter Verwendung dieser Zusammensetzung
EP4391494A1 (en) * 2022-12-19 2024-06-26 Beijing Hulu Software Technology Development Co., Ltd. Selection of content delivery networks using agents

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11800167B2 (en) * 2021-10-29 2023-10-24 Roku, Inc. Machine learning for adaptive bitrate selection
EP4311242A1 (en) * 2022-07-21 2024-01-24 Ateme Method for dynamic configuration of multimedia content encoder and apparatus for implementing the same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10178043B1 (en) * 2014-12-08 2019-01-08 Conviva Inc. Dynamic bitrate range selection in the cloud for optimized video streaming
US20200099733A1 (en) * 2018-09-26 2020-03-26 Vmware, Inc. System and method for widescale adaptive bitrate selection

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1014480A3 (en) 1998-12-17 2001-12-05 Ntt Mobile Communications Network Inc. High sensitivity radio receiver
US7571246B2 (en) 2004-07-29 2009-08-04 Microsoft Corporation Media transrating over a bandwidth-limited network
US8392600B2 (en) 2009-09-14 2013-03-05 Adobe Systems Incorporated Dynamic stream switch control
US8527647B2 (en) * 2009-10-06 2013-09-03 Unwired Planet, Inc. Managing network traffic using intermediate flow control
WO2011139305A1 (en) * 2010-05-04 2011-11-10 Azuki Systems, Inc. Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction
KR101528991B1 (ko) 2011-01-11 2015-06-15 애플 인크. 실시간 또는 준 실시간 스트리밍
WO2012142510A1 (en) * 2011-04-15 2012-10-18 Skyfire Labs, Inc. Real-time video detector
US20130042013A1 (en) * 2011-08-10 2013-02-14 Nokia Corporation Methods, apparatuses and computer program products for enabling live sharing of data
US8854958B2 (en) * 2011-12-22 2014-10-07 Cygnus Broadband, Inc. Congestion induced video scaling
US8949440B2 (en) 2012-07-19 2015-02-03 Alcatel Lucent System and method for adaptive rate determination in mobile video streaming
US9923771B2 (en) * 2014-01-15 2018-03-20 Cisco Technology, Inc. Adaptive bitrate modification of a manifest file
KR20160031642A (ko) 2014-09-12 2016-03-23 주식회사 구루미디어 스트리밍 서비스 서버 및 그의 제어 방법
US9578395B1 (en) * 2014-09-30 2017-02-21 Amazon Technologies, Inc. Embedded manifests for content streaming
US10148713B2 (en) * 2014-10-21 2018-12-04 Adobe Systems Incorporated Live manifest update
US9769536B2 (en) 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
KR101638509B1 (ko) 2015-04-14 2016-07-12 고려대학교 산학협력단 모바일 멀티미디어 스트리밍 서비스를 위한 비디오 품질 제어 장치 및 방법
KR20170135069A (ko) 2016-05-30 2017-12-08 삼성에스디에스 주식회사 QoE 분석 기반 비디오 프레임 관리 방법 및 그 장치
US10225620B1 (en) * 2017-08-25 2019-03-05 Telefonaktiebolaget Lm Ericsson (Publ) System and method for effectuating selective ABR segment delivery for ABR bandwidth control
KR20190088380A (ko) 2018-01-18 2019-07-26 경북대학교 산학협력단 딥 러닝 기반 적응형 멀티미디어 스트리밍 제공방법 및 그 시스템
KR101982290B1 (ko) 2018-02-27 2019-05-24 광운대학교 산학협력단 적응적 스트리밍 서비스의 체감 품질 향상을 위한 콘텐츠 특성 기반 스트리밍 시스템 및 방법
US11025987B2 (en) 2019-08-15 2021-06-01 Hulu, LLC Prediction-based representation selection in video playback
US11102260B1 (en) * 2020-09-23 2021-08-24 Amazon Technologies, Inc. Dynamic congestion control through real-time QOS monitoring in video streaming

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10178043B1 (en) * 2014-12-08 2019-01-08 Conviva Inc. Dynamic bitrate range selection in the cloud for optimized video streaming
US20200099733A1 (en) * 2018-09-26 2020-03-26 Vmware, Inc. System and method for widescale adaptive bitrate selection

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022133237A1 (de) 2022-05-16 2023-11-16 Electro M Co., Ltd. Weichmagnetische Pulverzusammensetzung für Induktorkern und Verfahren zur Herstellung eines Induktorkerns unter Verwendung dieser Zusammensetzung
EP4391494A1 (en) * 2022-12-19 2024-06-26 Beijing Hulu Software Technology Development Co., Ltd. Selection of content delivery networks using agents

Also Published As

Publication number Publication date
KR102652518B1 (ko) 2024-03-28
US11812081B2 (en) 2023-11-07
JP2023175841A (ja) 2023-12-12
US20220141513A1 (en) 2022-05-05
CN114449353A (zh) 2022-05-06
JP2022074119A (ja) 2022-05-17
CN114449353B (zh) 2024-03-12
EP3993365A1 (en) 2022-05-04
MX2021013344A (es) 2022-05-03

Similar Documents

Publication Publication Date Title
KR102652518B1 (ko) 비디오 스트리밍을 위한 세션 기반 적응적 재생 프로파일 판정
US11277620B1 (en) Adaptive transcoding of profile ladder for videos
US11218663B2 (en) Video chunk combination optimization
US11025987B2 (en) Prediction-based representation selection in video playback
US20240137585A1 (en) Multiple protocol prediction and in-session adaptation in video streaming
US11082741B2 (en) Dynamic multi-content delivery network selection during video playback
US9247315B2 (en) Disabling of multiple bitrate algorithm for media programs while playing advertisements
EP3354033B1 (en) Dynamic seeking in video delivery systems
US11140060B2 (en) Dynamic variation of media segment durations for optimization of network round trip times
JP7494265B2 (ja) アダプティブビットレートアルゴリズムのための動的パラメータ調整

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant