KR102493871B1 - 세그먼터 유동성을 위한 패키저 - Google Patents

세그먼터 유동성을 위한 패키저 Download PDF

Info

Publication number
KR102493871B1
KR102493871B1 KR1020200117707A KR20200117707A KR102493871B1 KR 102493871 B1 KR102493871 B1 KR 102493871B1 KR 1020200117707 A KR1020200117707 A KR 1020200117707A KR 20200117707 A KR20200117707 A KR 20200117707A KR 102493871 B1 KR102493871 B1 KR 102493871B1
Authority
KR
South Korea
Prior art keywords
playlist
segment
segments
client device
client
Prior art date
Application number
KR1020200117707A
Other languages
English (en)
Other versions
KR20210032289A (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 KR20210032289A publication Critical patent/KR20210032289A/ko
Application granted granted Critical
Publication of KR102493871B1 publication Critical patent/KR102493871B1/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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4825End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2223Secondary servers, e.g. proxy server, cable television Head-end being a public access point, e.g. for downloading to or uploading from clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • 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/2408Monitoring of the upstream path of the transmission network, e.g. client requests
    • 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
    • H04N21/25833Management of client data involving client hardware characteristics, e.g. manufacturer, processing or storage capabilities
    • 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
    • H04N21/25858Management of client data involving client software characteristics, e.g. OS identifier
    • 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
    • H04N21/44004Processing 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 involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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
    • H04N21/4402Processing 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 involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440281Processing 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 involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
    • 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
    • H04N21/4402Processing 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 involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/44029Processing 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 involving reformatting operations of video signals for household redistribution, storage or real-time display 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/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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/64322IP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

실시예들은 변형 스트림을 수신하는 단계, 변형 스트림에 포함된 미디어 콘텐트를 플레이할 복수의 상이한 유형들의 클라이언트 디바이스들에 대한 각자의 최대 세그먼트 지속기간들을 식별하는 단계, 변형 스트림을 사용하여 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 각자의 플레이리스트를 생성하는 단계 - 각자의 플레이리스트들 각각은 상이한 최대 세그먼트 지속기간들을 포함함 -, 및 배포 네트워크를 통해 복수의 상이한 유형들의 클라이언트 디바이스들 중 적어도 하나에 각자의 플레이리스트들을 전달하는 단계를 포함하는 미디어 재생을 개선하는 방법들, 컴퓨터 프로그램 제품들 및 시스템들을 제공한다.

Description

세그먼터 유동성을 위한 패키저{PACKAGER FOR SEGMENTER FLUIDITY}
적응적 비트레이트 스트리밍(Adaptive Bitrate Streaming)(ABR)은 클라이언트 디바이스에 지속적이고 중단 없는 미디어 재생을 제공할 수 있는 컴퓨터 네트워크 스트리밍 기술이다. ABR은 실시간으로 클라이언트 디바이스의 네트워크 대역폭 및 데이터 처리량을 측정하고, 그에 따라 클라이언트 디바이스에 전달되는 스트리밍 품질을 조정하는 것을 수반한다.
스트리밍 품질은 미디어 콘텐트를 포함하는 파일의 크기를 나타낸다. 고품질 스트림은 높은 스트리밍 비트레이트를 나타내고, 그래서 상대적으로 큰 파일 크기를 나타낸다. 따라서, 고품질 스트림은 클라이언트 디바이스에서 지속적이고 중단 없는 미디어 재생을 보장하기 위해 클라이언트 디바이스의 더 많은 네트워크 대역폭 및 더 큰 데이터 처리량을 필요로 한다. 유사하게, 저품질 스트림은 작은 스트리밍 비트레이트를 나타내고, 그래서 상대적으로 작은 파일 크기를 나타낸다. 따라서, 저품질 스트림은 클라이언트 디바이스에서 지속적이고 중단 없는 미디어 재생을 보장하기 위해 클라이언트 디바이스의 더 적은 네트워크 대역폭 및 더 적은 데이터 처리량을 필요로 한다.
위에서 언급된 양태들이 달성되고 상세하게 이해될 수 있는 방식이 되도록 하기 위해, 위에서 간략하게 요약된 본 명세서에 설명된 실시예들의 보다 특정한 설명은 다양한 첨부 도면들을 참조함으로써 설명될 수 있다. 그러나 첨부 도면들은 전형적인 실시예들을 예시하고 그래서 제한하는 것으로 간주되지 않아야 하고; 다른 동등하게 효과적인 실시예들이 고려된다는 것을 유의해야 한다.
도 1은 일 실시예에 따른, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들을 클라이언트 디바이스들에 전달하기 위한 시스템을 예시한다.
도 2는 일 실시예에 따른, 공통의 미디어 콘텐트에 대한 인코딩된 변형 스트림들을 예시한다.
도 3은 일 실시예에 따른, 패키저(packager)를 동작하기 위한 흐름도를 예시한다.
도 4는 일 실시예에 따른, 대응하는 클라이언트 특정 플레이리스트들을 가진 처리된 변형 스트림들을 예시한다.
도 5는 일 실시예에 따른, 동일한 변형 스트림에 대한 상이한 클라이언트 특정 플레이리스트들의 세그먼트 지속기간들 및 세그먼트 경계들을 예시한다.
도 6은 일 실시예에 따른, 미디어 재생의 다양한 지점들에서 변경되는 세그먼트 지속기간 그룹화들을 예시한다.
도 7은 일 실시예에 따른, 클라이언트 디바이스에서 미디어 재생을 예시한다.
본 개시내용의 특징들이 상세히 이해될 수 있도록 하기 위해, 본 명세서에 개시된 본 발명의 실시예들은 컴퓨터 네트워크 스트리밍 프로토콜로서 HTTP 라이브 스트리밍(HTTP Live Streaming)(HLS)을 참조할 수 있다. 클라이언트 디바이스 플랫폼 또는 운영 체제(operating system)(OS)는 OS A, OS B, OS C 등으로 참조될 수 있다. OS의 예들은 Android™ 및 iOS™를 포함한다. 클라이언트 디바이스 미디어 플레이어는 미디어 플레이어 A, 미디어 플레이어 B, 미디어 플레이어 C 등으로 참조될 수 있다. 클라이언트 디바이스 미디어 플레이어의 하나의 예는 JavaScript 기반 미디어 플레이어이다. 그러나 개시된 실시예들은 앞서 언급한 네트워크 프로토콜들, 플랫폼들 또는 OS들, 또는 미디어 플레이어들 중 어느 것으로 국한되는 것으로 해석되지 않아야 한다.
HLS는 마스터 플레이리스트를 통해 미디어 콘텐트를 전달할 수 있는 컴퓨터 네트워크 스트리밍 프로토콜이다. 마스터 플레이리스트는 다수의 변형 스트림들을 참조하고, 변형 스트림들 각각은 동일한 미디어 콘텐트에 대해 상이한 스트리밍 품질을 나타낸다. 각각의 변형 스트림은 클라이언트 디바이스에 의해 순서대로 재생될 미디어 콘텐트의 순차적인 최대 지속기간 세그먼트(maximum-duration segment)들의 모음을 참조하는 미디어 플레이리스트를 포함한다.
세그먼트들은 하나 이상의 통합 자원 식별자(Uniform Resource Identifier)(URI)들에 의해 그리고 임의로는 바이트 범위(byte-range)에 의해 미디어 플레이리스트에서 식별된다. URI는 인터넷에서 자원을 식별하는 문자열이다. 미디어 플레이리스트의 각 세그먼트는 다수의 변형 스트림들에 걸쳐 전형적으로 동기화되는 세그먼트 경계에서 시작하고 끝난다. ABR은 이러한 정렬된 세그먼트 경계들에서 스트리밍 품질을 조정함으로써 구현된다. 이러한 조정들은 하나의 변형 스트림 내 세그먼트들의 그룹화로부터 상이한 변형 스트림 내 순차적 세그먼트들의 그룹화로 스위칭하는 것을 수반한다.
HLS를 위해 미디어 재생을 최적화하는 것은 클라이언트 디바이스들 또는 클라이언트 미디어 플레이어들의 차이들로 인해 방해를 받을 수 있다. 미디어 재생을 시작할 때, 많은 클라이언트 디바이스들은 세그먼트의 지속기간에 관계없이 고정된 개수의 세그먼트들을 다운로드한다. 다른 클라이언트 디바이스들은 다운로드된 세그먼트들의 개수에 관계없이 고정된 양의 시간 동안 버퍼링한다. 따라서, 상이한 클라이언트 디바이스들(예를 들어, 상이한 유형들의 OS 또는 미디어 플레이어들을 가진 클라이언트들)은 미디어 재생 동안 상이한 또는 반대되는 성능 최적화들을 가질 수 있다.
또한, 많은 미디어 플레이어들은 미디어 재생시 초기의 높은 스트리밍 품질을 유지할 수 없음으로 인해 야기되는 버퍼링 때문에 건너 뛰기(skip)들을 최소화하기 위해 높은 스트리밍 품질이 아닌 중간 스트리밍 품질로 미디어 재생을 시작한다. 중간 스트리밍 품질에서 미디어 재생을 시작하는 것의 한 가지 단점은 클라이언트 디바이스의 가용 대역폭 및 데이터 처리량에 의해 더 높은 스트리밍 품질이 지원될 때 발생한다. 이러한 경우에는 미디어 재생의 성능이 최적화되지 않는데, 왜냐하면 클라이언트의 대역폭 및 데이터 처리량에 의해 허용되는 즉시 미디어 재생을 더 높은 스트리밍 품질을 향해 옮겨가는 것과는 반대로, 클라이언트가 고정된 개수의 세그먼트들을 다운로드하거나 또는 고정된 양의 시간 동안 세그먼트들을 다운로드하는 동안 시간이 중간 스트리밍 품질에서 소비되기 때문이다.
예를 들어, 클라이언트 디바이스 A가 다른 스트리밍 품질로 스위칭하기 전에 8초 세그먼트 지속기간들의 다섯 개 세그먼트를 다운로드하도록 프로그램되어 있다고 가정하고, 클라이언트 디바이스 A의 가용 대역폭 및 데이터 처리량이 미디어 재생의 모든 지점들에서 높은 스트리밍 품질을 지원한다고 가정한다. 클라이언트 디바이스 A가 중간 스트리밍 품질로 스트리밍을 시작하고 높은 스트리밍 품질로 전환하고자 하면, 클라이언트 디바이스 A는 높은 스트리밍 품질로 전환하기 전에 중간 스트리밍 품질로 40초 동안 스트리밍해야 한다. 40초 동안 중간 스트리밍 품질로 스트리밍하게 되면 클라이언트 디바이스 A가 40초 동안 높은 스트리밍 품질로 스트리밍할 수도 있었기 때문에 미디어 재생을 최적화하지 못하는 것이다.
앞서 언급한 문제의 해결뿐만 아니라, 미디어 재생의 추가적인 최적화는 각각의 특정 클라이언트 디바이스의 플랫폼마다 최적의 지속기간의 세그먼트들이 필요에 따라 각자의 클라이언트 디바이스들에 제시될 수 있도록 미디어 생성 또는 미디어 처리 동안 세그먼트들을 그룹화하는 기술인 세그먼트 유동성(segment fluidity)을 사용하여 달성될 수 있다.
본 명세서의 실시예들에서, 패키저는 특정 유형들의 클라이언트 디바이스들에 대해 최적화된 세그먼트 지속기간들을 갖는 하나 이상의 URI들을 참조하는 클라이언트 특정 플레이리스트를 생성한다. 클라이언트 디바이스가 서버로부터 플레이리스트를 수신할 때, 서버는 요청하는 클라이언트 디바이스의 유형을 식별하고, 특정 클라이언트 디바이스에 최적화된 플레이리스트를 클라이언트 디바이스에 전달할 수 있다. 클라이언트 디바이스는 최적화된 클라이언트 특정 플레이리스트를 사용하여 서버로부터 세그먼트들의 가변적 그룹화를 페치(fetch)하거나 요청한다. 세그먼트들의 가변적 그룹화는 개선된 미디어 재생 성능을 위해 세그먼트 길이의 실시간으로 최적화를 가능하게 한다. 이러한 방식으로, 세그먼트 유동성은 상이한 운영 체제들 및 미디어 플레이어들을 구현하는 클라이언트 디바이스들에서 미디어 재생 성능을 개선한다.
일 실시예에서, 세그먼트들의 가변적 그룹화는 미디어 재생 시작 및 탐색 지점들에서 더 짧은 세그먼트 지속기간들을 제공하는 반면, 말단 사용자가 시작 또는 탐색 동작을 시작할 가능성이 없는 미디어 재생의 부분들 동안에는 더 긴 세그먼트 지속기간을 제공하는 데 사용된다.
도 1은 일 실시예에 따른, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들을 클라이언트 디바이스들에 전달하기 위한 시스템을 예시한다. 이 실시예에서, 오디오-비주얼(audio-visual)(AV) 입력들(110)은 트랜스코더(130)에 전달되는 멀티미디어 스트림을 생성한다. 트랜스코더(130)는 멀티미디어 스트림을 하나 이상의 인코딩된 변형 스트림들로 변환하며, 변형 스트림들 각각은 동일한 미디어 콘텐트이지만 비트레이트가 상이한 미디어 콘텐트를 포함한다. 인코딩된 변형 스트림들은 인코딩된 변형 스트림들에 걸쳐 정렬되는 세그먼트 경계들에 있는 구획(demarcation)들을 포함한다. 인코딩된 변형 스트림들은 패키저(140)로 전달된다.
패키저(140)는 데이터 유닛(142), 플레이리스트 유닛(144) 및 전달 유닛(146)을 포함할 수 있다. 일 실시예에서, 데이터 유닛(142), 플레이리스트 유닛(144) 및 전달 유닛(146)은 하드웨어(예를 들어, 프로세서 및 메모리)에서 실행되는 소프트웨어 모듈들이다. 데이터 유닛(142)은 다양한 클라이언트 디바이스 운영 체제들(158a) 및 미디어 플레이어들(158b)에 대해 최적의 미디어 재생 성능을 제공하는 최대 세그먼트 지속기간들에 관한 데이터를 포함한다. 최대 세그먼트 지속기간들은 클라이언트 디바이스별로 최적화된다. 예를 들어, 제1 유형의 클라이언트 디바이스는 더 짧은 최대 세그먼트 지속기간들을 사용하는 최적의 미디어 재생을 가질 수 있는데 비해, 제2 유형의 클라이언트 디바이스는 더 긴 최대 세그먼트 지속기간들을 사용하는 최적의 피드백을 갖는다.
플레이리스트 유닛(144)은 각각의 클라이언트 디바이스의 운영 체제(158a) 또는 미디어 플레이어(158b)의 최대 세그먼트 지속기간을 식별하고, 이러한 클라이언트 디바이스 운영 체제들(158a) 또는 미디어 플레이어들(158b) 각각에 대한 각자의 미디어 플레이리스트(클라이언트 특정 플레이리스트)를 생성한다. 인코딩된 변형 스트림들은 최대 세그먼트 지속기간들 또는 최대 세그먼트 지속기간들의 그룹화가 바이트 범위들을 사용하여 액세스 가능하도록 처리된다. 그런 다음 처리된 각각의 변형 스트림(148)에 대해 클라이언트 특정 플레이리스트들이 생성된다.
전달 유닛(146)은 클라이언트 특정 플레이리스트들을 배포 네트워크(150)에 전달한다. 일 실시예에서, 그곳에서 먼저 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 하나 이상의 서버들(152)로 전송된다. 그 다음에 클라이언트 특정 플레이리스트들이 클라이언트 디바이스들(156)로 전송된다. 하나 이상의 서버들은 클라이언트 디바이스들로부터의 미디어 콘텐트의 세그먼트들에 대한 임의의 페치들/요청들을 서비스한다. 즉, 클라이언트 특정 플레이리스트들을 사용하여, 클라이언트 디바이스들(156)은 미디어 콘텐트를 플레이하기 위해 그러한 플레이리스트들에서 식별된 세그먼트들에 대한 요청을 배포 네트워크(150)에 제출할 수 있다.
대안적으로, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 먼저 하나 이상의 서버들(152)로 전송된다. 그 다음에 클라이언트 특정 플레이리스트들이 콘텐트 전달 네트워크(content delivery network)(CDN)(154)로 전송되고, 콘텐트 전달 네트워크는 클라이언트 특정 플레이리스트들을 클라이언트 디바이스들(156)에 전달하고 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스들의 페치들/요청들을 서비스한다. 또 다른 예에서, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 먼저 CDN(154)으로 전송되고, CDN은 클라이언트 특정 플레이리스트들을 클라이언트 디바이스들(156)에 전달하고 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스들의 페치들/요청들을 서비스한다. 페치된/요청된 세그먼트들을 서비스하는 데 CDN을 사용하는 것은 CDN 에지 서버들의 국부화 때문에 페치된/요청된 세그먼트들의 전달 시간을 줄임으로써 미디어 재생을 개선할 수 있다.
도 2는 일 실시예에 따른, 공통의(즉, 동일한) 미디어 콘텐트에 대한 인코딩된 변형 스트림들을 예시한다. 이 실시예에서, 변형 스트림 1(206) 및 변형 스트림 2(204)는 상이한 스트리밍 품질들(비트레이트 1 및 비트레이트 2)의 인코딩된 변형 스트림들이다. 각각의 변형 스트림은 인코딩된 변형 스트림이 처리된 후에 존재할 수 있는 잠재적 세그먼트들의 구획들을 포함한다. 각각의 잠재적 세그먼트는 동일한 세그먼트 지속기간(예를 들어, 204d1-204dn)에 의해 또는 인접한 세그먼트 경계들(예를 들어, 204b1 및 204b2)에 의해 지정된다.
세그먼트 경계들은 변형 스트림들에 걸쳐 정렬되어 있다. 이 예에서, ABR 변형 스위칭은 세그먼트 경계들(204b1-n 및 206b1-n)에서 발생한다. 각각 세그먼트 경계에서, 클라이언트 디바이스의 네트워크 대역폭 및 데이터 처리량에 기초하여 상이한 변형 스트림이 클라이언트 디바이스에 전달될 수 있다. 즉, ABR을 구현하는 클라이언트 디바이스는, 세그먼트 경계에서, 클라이언트 디바이스의 현재 네트워크 대역폭 및 데이터 처리량에 기초하여 더 낮거나 더 높은 비트레이트의 변형 스트림으로 스위칭하도록 결정할 수 있다.
예를 들어, 비트레이트 1이 5 Mbps이고 비트레이트 2가 2 Mbps이라고 하면, 미디어 재생(202)은 더 낮은 스트리밍 품질의 변형 스트림 2(204)로 스트리밍함으로써 시작할 수 있다. 클라이언트 디바이스의 가용 네트워크 대역폭 및 데이터 처리량으로 인해 더 높은 스트리밍 품질의 변형 스트림 1(206)의 재생이 가능해지면, 클라이언트 디바이스는 변형 스트림 1에 대한 플레이리스트를 검색하고 변형 스트림 1(206)의 세그먼트들의 요청들을 제출한다. 변형 스트림 2(204)으로부터 변형 스트림 1(206)로의 스위칭은 변형 스트림 1(206) 및 변형 스트림 2(204)에 걸쳐 정렬된 임의의 세그먼트 경계들(예를 들어, 204b1 및 206b1)에서 발생할 수 있다.
그 결과, 클라이언트 디바이스의 가용 네트워크 대역폭 및 데이터 처리량이 더 높은 스트리밍 품질의 변형 스트림 1(206)을 더 이상 유지할 수 없다면, 클라이언트는 서버로부터 또는 요청을 서비스하는 CDN으로부터 더 낮은 스트리밍 품질의 변형 스트림 2(204)의 세그먼트들을 요청할 수 있다. 변형 스트림 1(206)로부터 변형 스트림 2(204)로의 스위칭은 변형 스트림 1(206) 및 변형 스트림 2(204)에 걸쳐 정렬된 더 뒤의 세그먼트 경계들(예를 들어, 204bn 및 206bn)에서 발생한다.
챕터(chapter)는 미디어 콘텐트에서 전환의 지점이다. 예를 들어, 챕터는 광고 중단의 시작 또는 끝을 표시하거나, 또는 미디어 콘텐트 내 등장 인물들 사이에서 대화의 자연스러운 중단을 표시할 수 있다. 일 실시예에서, 챕터들은 세그먼트 경계들로서 동작한다. 챕터는 비-챕터(non-chapter) 세그먼트 경계에 관한 챕터의 위치에 관계없이 미디어 재생(202)의 임의의 적절한 위치에서 발생할 수 있다.
도 3은 일 실시예에 따른, 패키저의 동작에 대한 흐름도를 예시한다. 상이한 클라이언트 디바이스들은 최적의 미디어 재생을 위한 상이한 최적의 최대 세그먼트 지속기간들을 갖기 때문에, 도 3은 클라이언트 최적화 세그먼트 지속기간(client-optimized segment duration)들을 각 클라이언트 디바이스에 전달하는 기술들을 제공한다. 또한, 최적의 세그먼트 지속기간은 미디어 재생 중에 변경될 수 있기 때문에, 도 3은 세그먼트 지속기간의 폭을 실시간으로 변경하기 위한 기술들을 최적화할 수 있게 한다. 패키저는 앞서 언급한 문제들을 해결하기 위해 동작한다. 비록 도 3이 본 출원의 다른 도면들을 참조하여 설명되지만, 명확함을 위해 그렇게 참조된 것이며 도 3의 해석을 앞서 언급한 도면들의 실시예들로 제한하는 것으로 해석되지 않아야 한다.
블록(302)에서, 패키저는 트랜스코더로부터 인코딩된 변형 스트림들을 수신한다. 각각의 인코딩된 변형 스트림은 미디어 콘텐트의 잠재적 세그먼트들에 대한 구획들을 포함한다. 각각의 인코딩된 변형 스트림은 동일한 미디어 콘텐트를 포함하지만 상이한 스트리밍 품질/비트레이트를 갖는다. 미디어 콘텐트의 각각의 잠재적 세그먼트의 시작과 끝은 모든 인코딩된 변형 스트림들에 걸쳐 정렬되어 있는 세그먼트 경계(예를 들어, 도 2의 204b1 및 204b2)이다. 두 개의 인접한 세그먼트 경계들(예를 들어, 204b1 및 204b2)은 세그먼트 지속기간(예를 들어, 204dn)을 지정한다.
블록(304)에서, 플레이리스트 유닛(144)은 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들을 전달하기 위해 클라이언트 디바이스들을 식별한다. 일 실시예에서, 데이터 유닛(142), 플레이리스트 유닛(144) 및 전달 유닛(146)은 하드웨어(예를 들어, 프로세서 및 메모리)에서 실행되는 소프트웨어 모듈들이다. 플레이리스트 유닛(144)은 각각의 클라이언트 디바이스에 관해 미리 결정된 데이터로 채워진 데이터 유닛(142)으로부터 클라이언트의 특성들에 관한 데이터를 수집할 수 있다. 미리 결정된 데이터는 최적의 성능을 위해 미디어 플레이어들 및 클라이언트들을 테스트함으로써 결정될 수 있다. 예를 들어, 현장 테스트에 의하면, 제1 유형의 클라이언트 디바이스의 경우, 최대 세그먼트 지속기간이 4초인 플레이리스트를 사용하는 것이 비디오 시작 시간들이 더 빨라지거나, 변형 스위칭이 더 빨라지거나 또는 서버 부하가 감소하는 결과를 가져오고, 반면에 제2 유형의 클라이언트 디바이스의 경우, 최대 세그먼트 지속기간이 8초인 플레이리스트를 사용하는 것이 비디오 시작 시간들이 더 빨라지거나, 변형 스위칭이 더 빨라지거나 또는 서버 부하가 감소하는 결과를 가져 온다는 것을 보여줄 수 있다. 따라서, 이 예에서, 4초의 최대 세그먼트 지속기간은 제1 클라이언트의 특성인 미리 결정된 데이터이고, 반면에 8초의 최대 세그먼트 지속기간은 제2 클라이언트의 특성인 미리 결정된 데이터이다.
블록(306)에서, 플레이리스트 유닛(144)은 각각의 클라이언트 디바이스의 최적의 재생을 위해 인코딩된 변형 스트림들에서 최대 세그먼트 지속기간을 식별한다. 플레이리스트 유닛(144)은 데이터 유닛(142)으로부터 각각의 클라이언트 디바이스에 대한 최대 세그먼트 지속기간에 관한 데이터를 수집할 수 있고, 이 데이터는 다양한 클라이언트 디바이스 운영 체제들(158a) 및 미디어 플레이어들(158b)에 대한 최적의 미디어 재생 성능을 제공하는 최대 세그먼트 지속기간에 관한 데이터를 포함한다.
최대 세그먼트 지속기간들은 클라이언트 디바이스별로 최적화된다. 예를 들어, 제1 클라이언트 디바이스는 OS B를 사용하는 반면에, 제2 클라이언트 디바이스는 OS A를 사용할 수 있고; 또는 제1 클라이언트 디바이스는 미디어 플레이어 A를 사용하는 반면 제2 클라이언트 디바이스는 미디어 플레이어 B를 사용할 수 있다. 제1 클라이언트는 8초라는 최적의 최대 세그먼트 지속기간을 갖는 반면, 제2 클라이언트 디바이스는 4초라는 최적의 최대 세그먼트 지속기간을 가질 수 있다. 제1 클라이언트에 대해 최적화된 최대 세그먼트 지속기간들을 가진 세그먼트들을 전달하는 플레이리스트는 제2 클라이언트 디바이스의 재생 경험에 부정적으로 영향을 미칠 수 있는 데, 적어도 그 이유는 ABR을 구현할 때 최대 세그먼트 지속기간이 더 길수록 제2 클라이언트 디바이스가 변형 스트림들에 걸쳐 스위칭할 기회들이 더 적어지기 때문이다.
앞서 언급한 문제는 클라이언트 특정 플레이리스트를 각 클라이언트 디바이스에 제공함으로써 해결된다. 그러므로 제1 클라이언트 디바이스는 8초의 최대 세그먼트 지속기간을 갖는 모든 클라이언트 특정 플레이리스트들을 수신할 때 최적의 성능을 갖는다. 마찬가지로, 제2 클라이언트 디바이스는 4초의 최대 세그먼트 지속기간을 갖는 모든 클라이언트 특정 플레이리스트들을 수신할 때 최적의 성능을 갖는다.
블록(308)에서, 패키저는 인코딩된 변형 스트림들에 포함된 구획들에서 인코딩된 변형 스트림들을 세그먼팅함으로써 처리된 변형 스트림들을 생성한다. 인코딩된 변형 스트림들을 세그먼팅하는 것은 각각의 인코딩된 변형 스트림을 대응하는 처리된 변형 스트림을 일괄하여 포함하는 다수의 세그먼트 파일들로 세그먼팅하는 것을 포함할 수 있다. 대안적으로, 인코딩된 변형 스트림들을 세그먼팅하는 것은 각각의 최대 지속기간 세그먼트 또는 그의 그룹화에 대한 단일 파일 바이트 범위 액세스(single-file byte-range access)에 대비하여 각각의 대응하는 처리된 변형 스트림을 준비하는 것을 포함할 수 있다.
각각의 인코딩된 변형 스트림은 미디어 콘텐트의 잠재적 세그먼트에 대한 구획들을 포함하고 있기 때문에, 각각의 처리된 변형 스트림은 미디어 콘텐트의 (실제 생성된) 세그먼트들을 포함한다. 처리된 변형 스트림에서 각 세그먼트의 시작과 끝은 클라이언트 디바이스 별로 처리된 변형 스트림들에 걸쳐 정렬되어 있는 세그먼트 경계이다. 인접한 두 세그먼트 경계들의 타임스탬프들 간의 차이는 세그먼트 지속기간을 표시한다.
블록(310)에서, 패키저는 각각의 클라이언트 디바이스마다 각각의 처리된 변형 스트림에 대한 클라이언트 특정 플레이리스트들을 생성한다. 패키저가 인코딩된 변형 스트림들을 세그먼팅할 때, 플레이리스트 유닛(144)은 각각의 클라이언트 디바이스마다 클라이언트 특정 플레이리스트들을 생성한다. 이것은 도 4에 예시된다.
도 4는 일 실시예에 따른 대응하는 클라이언트 특정 플레이리스트들을 가진 처리된 변형 스트림들을 예시한다. 이 실시예에서, 세 개의 변형 스트림들은 동일한 미디어 콘텐트에 대응하고, 각각의 변형 스트림은 세 개의 클라이언트 특정 플레이리스트들을 포함한다. 이 예에서, 클라이언트 특정 플레이리스트들은 세 가지의 상이한 운영 체제들 또는 미디어 플레이어들을 갖는 클라이언트 디바이스들에 대한 것이다. 위에서 언급한 바와 같이, 본 명세서의 실시예들은 상이한 운영 체제들 또는 미디어 플레이어들을 갖는 클라이언트들에 대한 특정 플레이리스트들을 생성하는 것으로 제한되지 않는다. 패키저는 다른 유형들의 소프트웨어 또는 하드웨어 모듈들을 갖는 클라이언트 디바이스들에 대한 클라이언트 특정 플레이리스트들을 생성할 수 있다.
도시된 바와 같이, 플레이리스트들 1H, 1M 및 1L은 동일한 유형의 클라이언트 디바이스 - 즉, 미디어 플레이어 A를 사용하는 클라이언트 디바이스 - 에 대한 플레이리스트들이다. 플레이리스트 1H(412)는 고품질 변형 스트림 1(410)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 1M(422)는 중간 품질 변형 스트림 2(420)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 1L(432)는 저품질 변형 스트림 3(430)에 대한 클라이언트 특정 플레이리스트이다. 이 실시예에서 미디어 플레이어 A는 2초의 세그먼트 지속기간들을 가진 최적의 미디어 재생 성능을 갖는다. 그러므로 플레이리스트들 1H, 1M 및 1L의 최대 세그먼트 지속기간은 2초간 이어진다.
플레이리스트들 2H, 2M 및 2L은 OS A를 구현하는 클라이언트 디바이스에 최적화되어 있다. 플레이리스트 2H(414)는 고품질 변형 스트림 1(410)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 2M(424)는 중간 품질 변형 스트림 2(420)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 2L(434)는 저품질 변형 스트림 3(430)에 대한 클라이언트 특정 플레이리스트이다. 이 실시예에서, OS A는 4초의 세그먼트 지속기간들을 가진 최적의 미디어 재생 성능을 갖는다. 그러므로 플레이리스트들 2H, 2M 및 2L의 최대 세그먼트 지속기간은 4초간 이어진다.
플레이리스트들 3H, 3M 및 3L은 OS B를 구현하는 클라이언트 디바이스에 사용 가능하게 만들어진다. 플레이리스트 3H(416)는 고품질 변형 스트림 1(410)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 3M(426)는 중간 품질 변형 스트림 2(420)에 대한 클라이언트 특정 플레이리스트이다. 플레이리스트 3L(436)는 저품질 변형 스트림 3(430)에 대한 클라이언트 특정 플레이리스트이다. 이 실시예에서, OS B는 8초의 세그먼트 지속기간들을 가진 최적의 미디어 재생 성능을 갖는다. 그러므로 플레이리스트들 3H, 3M 및 3L의 최대 세그먼트 지속기간은 8초간 이어진다.
ABR은 동일한 클라이언트 디바이스에 대해 클라이언트 특정 플레이리스트들의 고품질, 중간 품질 또는 저품질 변형 스트림들로부터 적절한 세그먼트들을 전달함으로써 구현된다. 예를 들어, 재생이 현재 플레이리스트 3M(426)으로부터의 세그먼트들을 사용하고 있다면, 클라이언트는 중간 품질 변형 스트림 2(420)로부터 OS A에 대한 세그먼트들을 다운로드한다.
가용 네트워크 대역폭 및 데이터 처리량이 더 높은 품질 변형 스트림 1(410)로 스위칭할 수 있게 하면, OS A가 클라이언트 디바이스인 플레이리스트 3H(416)의 세그먼트들이 클라이언트 디바이스로 전달된다. 대안적으로, 가용 네트워크 대역폭 및 데이터 처리량이 중간 품질 변형 스트림 2(420)의 중단 없는 재생을 유지할 수 없다면, OS A가 클라이언트 디바이스인 플레이리스트 3L(436)의 세그먼트들이 클라이언트 디바이스로 전달된다. 이러한 방식으로, 클라이언트 디바이스는 최적화된 세그먼트 지속기간을 갖는 클라이언트 특정 플레이리스트들을 요청할 수 있다.
일 실시예에서, 클라이언트 특정 플레이리스트들은 하나 이상의 URI들 및 설명 태그들의 리스트를 포함하는 UTF-8 텍스트 파일들이다. URI들은 처리된 변형 스트림들에서 미디어 콘텐트의 세그먼트들을 식별한다. 설명 태그들은 클라이언트 특정 플레이리스트들의 정보 및 파라미터들을 명시한다.
일 실시예에서, 리스트 내 각각의 URI에는 URI에 대응하는 세그먼트의 세그먼트 지속기간을 표시하는 EXTINF 태그가 바로 앞에 온다. 세그먼트 그룹화는 세그먼트 그룹화에 대응하는 URI 자원의 범위를 표시하는 EXT-X-BYTERANGE 태그들에 의해 지정될 수 있다. 클라이언트 특정 플레이리스트는 클라이언트 특정 플레이리스트에 더 이상의 세그먼트들이 없다는 것을 표시하는 EXT-X-ENDLIST 태그를 포함한다.
일 실시예에서, 클라이언트 특정 플레이리스트들은 각자의 클라이언트 디바이스에 대해 최적화된 최대 세그먼트 지속기간을 지정하는 바이트 범위들을 포함한다. 예를 들어, 클라이언트 디바이스가 OS A를 사용하면, 클라이언트 디바이스는 4초라는 최적의 최대 세그먼트 지속기간을 가질 수 있다. 이러한 클라이언트 디바이스는 높은 스트리밍 품질로 처리된 변형 스트림 1(410)을 나타내는 플레이리스트 2H(414), 중간 스트리밍 품질 변형 스트림 2(420)을 나타내는 플레이리스트 2M(424), 및 낮은 스트리밍 품질 변형 스트림 3(430)을 나타내는 플레이리스트 2L(434)을 수신한다.
클라이언트 특정 플레이리스트들은 처리된 변형 스트림들에 걸쳐 정렬된 세그먼트들 및 세그먼트 경계들을 갖고 있기 때문에, 클라이언트 디바이스는 클라이언트 디바이스에 의해 현재 사용되고 있지 않은 클라이언트 특정 플레이리스트들 중 하나로부터 세그먼트들의 그룹화를 요청함으로써 스트리밍 품질들 사이에서 스위칭할 수 있다. 그러면 요청을 서비스하는 서버는 다음 세그먼트 경계에서 클라이언트 특정 플레이리스트로부터 원하는 스트리밍 품질에 대응하는 순차적 세그먼트들을 클라이언트 디바이스로 전달할 것이다.
도 3으로 돌아가서, 블록(312)에서, 패키저는 클라이언트 특정 플레이리스트들을 배포 네트워크를 통해 클라이언트에 전달한다. 일 실시예에서, 전달 유닛(146)은 클라이언트 특정 플레이리스트들을 배포 네트워크(150)에 전달한다. 배포 네트워크(150)에서, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 먼저, 하나 이상의 서버들(152)로 전송된다. 클라이언트 디바이스가 미디어 콘텐트를 요청할 때, 서버는 미디어 콘텐트 요청의 헤더들에 포함된 사용자 에이전트 데이터에 기초하여 클라이언트 디바이스의 유형을 결정할 수 있다. 그런 다음 하나 이상의 서버들은 적절한 클라이언트 특정 플레이리스트들을 클라이언트 디바이스(156)에 전달하고, 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스로부터의 임의의 페치들/요청들을 서비스한다.
다른 실시예에서, 전달 유닛(146)은 하나 이상의 마스터 플레이리스트들을 배포 네트워크(150)에 전달한다. 배포 네트워크(150)에서, 마스터 플레이리스트들이 먼저 하나 이상의 서버들(152)로 전송된다. 하나 이상의 서버들(152)은 다수의 소스들로부터의 다수의 마스터 플레이리스트들을 포함할 수 있다. 각각의 마스터 플레이리스트는 그 각자의 마스터 플레이리스트 내의 모든 변형 스트림들에 대한 세그먼트 지속기간들이 동일한 변형 스트림들을 포함한다. 그러나 변형 스트림들에 대한 세그먼트 지속기간들은 각각의 마스터 플레이리스트마다 상이하다. 예를 들어, 마스터 플레이리스트 A는 4초의 세그먼트 지속기간을 각각 갖는 변형 스트림들 A1, A2 및 A3을 포함할 수 있는 반면, 마스터 플레이리스트 B는 8초의 세그먼트 지속기간들을 각각 갖는 변형 스트림들 B1, B2 및 B3을 포함할 수 있다. 클라이언트 디바이스가 미디어 콘텐트를 요청할 때, 서버는 클라이언트 디바이스에 대한 최적의 세그먼트 지속기간들을 포함하는 마스터 플레이리스트를 클라이언트 디바이스에 전달한다. 그 다음에 서버들은 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스들로부터의 임의의 페치들/요청들을 서비스한다.
다른 실시예에서, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 먼저 하나 이상의 서버들(152)로 전송된다. 그 다음에 클라이언트 특정 플레이리스트들이 콘텐트 전달 네트워크(content delivery network)(CDN)(154)로 전송된다. 클라이언트 디바이스가 미디어 콘텐트를 요청할 때, CDN은 미디어 콘텐트 요청의 헤더들에 포함된 사용자 에이전트 데이터에 기초하여 클라이언트 디바이스의 유형을 결정할 수 있다. 그런 다음 CDN은 적절한 클라이언트 특정 플레이리스트들을 클라이언트 디바이스(156)에 전달하고, 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스들의 임의의 페치들/요청들을 서비스한다.
또 다른 실시예에서, 클라이언트 특정 플레이리스트들 및 처리된 변형 스트림들(148)이 먼저 CDN(154)으로 전송된다. 클라이언트 디바이스가 미디어 콘텐트를 요청할 때, CDN은 미디어 콘텐트 요청의 헤더들에 포함된 사용자 에이전트 데이터에 기초하여 클라이언트 디바이스의 유형을 결정할 수 있다. 그런 다음 CDN은 적절한 클라이언트 특정 플레이리스트들을 클라이언트 디바이스(156)에 전달하고, 미디어 콘텐트의 세그먼트들에 대한 클라이언트 디바이스들의 임의의 페치들/요청들을 서비스한다. 페치된/요청된 세그먼트들을 서비스하는 데 CDN을 사용하는 것은 CDN 에지 서버들의 국부화 때문에 페치된/요청된 세그먼트들의 전달 시간을 줄임으로써 미디어 재생을 개선할 수 있다. 이러한 실시예는 이 실시예가 단지 CDN을 클라이언트 디바이스에 플레이리스트들을 배포하는 데 사용하는 반면, 이전 실시예가 서버들과 CDN들의 조합을 클라이언트 디바이스들에 플레이리스트들을 배포하는 데 사용할 수 있다는 점에서 이전 실시예와 상이하다.
도 5는 단일 변형 스트림(예를 들어, 도 4의 변형 스트림 1)에 대한 상이한 클라이언트 특정 플레이리스트들의 세그먼트 지속기간들 및 세그먼트 경계들을 예시한다. 일 실시예에서, 고품질 변형 스트림은 세 개의 클라이언트 특정 플레이리스트들(504, 506 및 508)을 포함한다. 클라이언트 특정 플레이리스트들에는 세 개의 클라이언트 디바이스 운영 체제들 및 미디어 플레이어들, 즉, OS A, OS B 및 미디어 플레이어 A가 제시되어 있다.
플레이리스트 1H는 미디어 플레이어 A에 최적화된 세그먼트를 포함한다. 두 개의 인접한 세그먼트 경계들(예를 들어, 504b1 및 504b2)은 세그먼트 지속기간(예를 들어, 504d1)을 지정한다. ABR은 세그먼트 경계(예를 들어, 504b2)에서 스트리밍 품질을 스위칭하도록 동작할 수 있다.
플레이리스트 2H는 OS A에 대해 최적화된 세그먼트들을 포함한다. 두 개의 인접한 세그먼트 경계들(예를 들어, 506b1 및 506b2)은 세그먼트 지속기간(예를 들어, 506d1)을 지정한다. ABR은 세그먼트 경계(예를 들어, 506b2)에서 스트리밍 품질을 스위칭하도록 동작할 수 있다.
플레이리스트 3H는 OS B에 대해 최적화된 세그먼트들을 포함한다. 두 개의 인접한 세그먼트 경계들(예를 들어, 508b1 및 508b2)은 세그먼트 지속기간(예를 들어, 508d1)을 지정한다. ABR은 세그먼트 경계(예를 들어, 508b2)에서 스트리밍 품질을 스위칭하도록 동작할 수 있다.
플레이리스트들 1H, 2H 및 3H의 세그먼트 지속기간들은 서로 상이할 수 있다. 예를 들어, 플레이리스트 3H는 8초의 세그먼트 지속기간을 가질 수 있고, 플레이리스트 2H는 4초의 세그먼트 지속기간을 가질 수 있으며, 플레이리스트 1H는 2초의 세그먼트 지속기간을 가질 수 있다. 따라서, 일 실시예에서, 플레이리스트들 1H, 2H 및 3H는 동일한 변형 스트림에서, 각자의 플레이리스트들마다 상이한 세그먼트 지속기간들을 갖는 세그먼트들을 참조한다.
클라이언트 디바이스별로 최적화된 최대 세그먼트 지속기간들은 예를 들어, 모든 클라이언트 디바이스들에 대해 고정된 지속기간의 세그먼트 지속기간을 수신하는 것에 비해 미디어 재생을 개선한다. 예를 들어, OS B를 실행하는 제1 클라이언트 디바이스는 8초라는 최적의 최대 세그먼트 지속기간을 갖는 반면, OS A를 실행하는 제2 클라이언트 디바이스는 4초라는 최적의 최대 세그먼트 지속기간을 갖는다. 제1 클라이언트에 대해 최적화된 최대 세그먼트 지속기간들을 가진 세그먼트들을 전달하는 플레이리스트는 제2 클라이언트 디바이스의 재생 경험에 부정적으로 영향을 미칠 수 있는 데, 적어도 그 이유는 ABR을 구현할 때 최대 세그먼트 지속기간이 더 길수록 제2 클라이언트 디바이스가 변형 스트림들에 걸쳐 스위칭할 기회들이 더 적어지기 때문이다. 또한, 최대 세그먼트 지속기간들이 너무 작으면 클라이언트 디바이스에 의해 실행되는 세그먼트 페치들/요청들의 개수가 불필요하게 증가하고, 그 때문에 클라이언트 디바이스에서 처리 능력을 낭비하고 페치들/요청들을 서비스하는 서버에서 부하를 증가시킨다.
또한, 클라이언트 디바이스 미디어 플레이어가 ABR을 구현하기 전에 고정된 개수의 세그먼트들을 다운로드하도록 프로그램되어 있다면, 클라이언트 디바이스의 최적화된 최대 세그먼트 지속기간보다 긴 최대 세그먼트 지속기간들은, 최대 세그먼트 지속기간이 더 긴 세그먼트들을 다운로드하는 데 더 많은 시간이 요구될 것이기 때문에, 원하지 않는 스트리밍 품질에서 소비되는 시간을 연장시킬 수 있다. 예를 들어, 8초 세그먼트 지속기간들을 가진 세그먼트들이 2초 세그먼트 지속기간들에 대해 최적화된 클라이언트 디바이스에 전달되고 클라이언트 디바이스의 미디어 플레이어가 상이한 스트리밍 품질로 스위칭할 수 있게 되기 전에 2 개의 세그먼트들을 다운로드하도록 프로그램되어 있다면, 2초 세그먼트 지속기간들을 가진 세그먼트들에 대한 4초의 대기 시간과 비교하여, 8초 세그먼트 지속기간들을 가진 세그먼트들은 미디어 플레이어가 ABR을 구현하기 전에 16초의 대기 시간을 강요할 것이다. 그러므로 미디어 플레이어가 시작 또는 탐색 지점 뒤에서 상급의 스트리밍 품질로 스위칭하기를 원하면, 미디어 플레이어가 2초 세그먼트 지속기간들을 사용할 때와 비교하여, 미디어 플레이어는 8초 세그먼트 지속기간들을 가진 세그먼트들을 사용하는 시점에서 더 나은 품질의 스트림으로 스위칭하기 전에 말단 사용자에게 하급의 스트리밍 품질을 12초간 더 전달할 것이다.
또한, 클라이언트 디바이스 미디어 플레이어가 ABR을 구현하기 전에 고정된 양의 시간 동안 세그먼트들을 다운로드하도록 프로그램되어 있다면, 미디어 플레이어는 ABR을 구현하기 전에 필요한 시간을 필연적으로 더 많이 쓰기 때문에, 클라이언트 디바이스의 최적화된 최대 세그먼트 지속기간보다 긴 최대 세그먼트 지속기간들은 원하지 않는 스트리밍 품질에서 소비되는 시간을 연장시킬 것이다.
예를 들어, 8초 세그먼트 지속기간들을 갖는 세그먼트들이 2초 세그먼트 지속기간들에 대해 최적화된 클라이언트 디바이스에 전달되고 클라이언트 디바이스의 미디어 플레이어가 상이한 스트리밍 품질로 스위칭할 수 있게 되기 전에 10초 동안 세그먼트들을 다운로드하도록 프로그램되어 있다면, 세그먼트 내내 ABR이 구현될 수 없고, 그리고 세그먼트들을 다운로드하는데 필요한 10초가 하나의 8초 세그먼트를 다운로드하여서는 충족되지 못하기에, 두 개의 8초 세그먼트들이 다운로드될 것이기 때문에, 8초 세그먼트들은 필요한 다운로드 시간을 6초만큼 더 많이 쓸 것이다. 그러므로 미디어 플레이어가 시작 또는 탐색 지점 다음에 상급의 스트리밍 품질로 스위칭하기를 원하면, 미디어 플레이어가 2초 세그먼트 지속기간들을 사용할 때와 비교하여, 미디어 플레이어는 8초 세그먼트 지속기간들을 가진 세그먼트들을 사용하는 시점에서 더 나은 품질의 스트림으로 스위칭하기 전에 말단 사용자에게 하급의 스트리밍 품질을 6초간 더 전달할 것이다.
도 6은 일 실시예에 따른, 미디어 재생의 다양한 지점들에서 변경되는 세그먼트 지속기간 그룹화들을 예시한다. 가변 세그먼트 지속기간 그룹화들은 세그먼트 유동성을 이용하여 더 짧은 지속기간 세그먼트들을 실시간으로 더 긴 지속기간 세그먼트들로 결합한다. 구체적으로는, 가변 세그먼트 지속기간 그룹화는 처리된 변형 스트림들에서 세그먼트들을 식별하는 바이트 범위들을 포함하는 클라이언트 특정 플레이리스트들을 사용함으로써 가능해진 최적화이다.
예를 들어, 도 4의 플레이리스트 1H(412)는 2초의 최대 세그먼트 지속기간을 가진 클라이언트 디바이스를 예시한다. 그러나 플레이리스트 1H(412)에서 지정된 모든 세그먼트들은 정적이다. 플레이리스트 1H를 사용하는 미디어 재생은 일련의 2초 세그먼트들을 스트리밍한다. 다른 한편, 가변 세그먼트 지속기간 그룹화들은 재생 조건들을 변경하는 동안 최적화를 위해 최대 지속기간 세그먼트들에 기초하여 더 큰 세그먼트들을 구축할 수 있게 한다.
일 실시예에서, 세그먼트 지속기간들은 하나 이상의 최대 세그먼트 지속기간들을 그룹화함으로써 변경된다. 인접한 세그먼트 경계들(예를 들어, 608b1 및 608b2)은 세그먼트 및 세그먼트 지속기간을 정의한다. ABR은 세그먼트 경계(예를 들어, 608b3)에서 스트리밍 품질을 스위칭하도록 동작할 수 있다. 각각의 세그먼트는 클라이언트 특정 플레이리스트에서 바이트 범위들을 사용하여 식별 가능하다. 다수의 세그먼트들은 바이트 범위들을 사용하여 함께 그룹화될 수 있다.
이 예에서, 클라이언트 디바이스는 최대 세그먼트 지속기간이 2초간 이어지는 최적의 미디어 재생 성능에 도달한다. 클라이언트 디바이스는 중간 스트리밍 품질로 미디어 재생(602)을 시작한다. 미디어 재생의 시작 지점인 시작(604)은 세그먼트 경계(608b1)에서 발생한다.
시작(604)에서, 클라이언트 디바이스는 2초 지속기간들의 다수의 세그먼트들을 다운로드하며, 이는 상이한 스트리밍 품질로 스위칭할 다수의 기회들 - 즉, 다수의 세그먼트 경계들(608b2, 608b3)을 제공한다. 시작(604)에서 스트리밍 품질들 사이에서 스위칭할 많은 기회들을 갖는다는 것은 스트리밍 품질이 더 이른 세그먼트 경계(608b2)에서 스위칭될 수 있기 때문에 최적의 재생 성능을 달성하는 데 필요한 시간을 줄여준다. 마찬가지로, 상이한 스트리밍 품질로 스위칭하기 전에 고정된 양의 세그먼트들을 다운로드해야 하는 클라이언트 디바이스 미디어 플레이어들의 경우, 스위칭을 위한 조건이 미디어 재생(602) 동안 이른 시간에 만족될 수 있기 때문에, 최적의 재생 성능을 달성하는 데 필요한 시간은 줄어들 수 있다.
초기의 다수의 세그먼트들의 세트를 다운로드한 후에, 클라이언트 디바이스는 바이트 범위들을 사용하여 세 개의 연속 세그먼트들의 그룹화를 요청한다. 그룹화는 인접한 세그먼트 경계들(608b3 및 608b4)에 의해 지정된 결합된 6초 세그먼트를 포함한다. 세그먼트들의 동적 그룹화를 가능하게 하는 것은, 서버가 더 긴 세그먼트들을 다수의 더 짧은 세그먼트 상대방들보다 처리하기 더 쉽기 때문에, 앞서 언급한 미디어 재생 성능 최적화를 세그먼트들을 전달하는 서버의 부하를 감소시키는 것과 균형을 맞출 수 있다.
탐색 지점은 미디어 플레이어의 말단 사용자에 의해 선택되는 미디어 재생(602)의 특정 위치이다. 탐색(606)은 세그먼트 경계(608b4)에서 시작된다. 탐색(606)에서, 클라이언트 디바이스는 2초 지속기간들의 다수의 세그먼트들을 다운로드한다. 클라이언트 디바이스가 즉각적인 미디어 재생에 필요한 세그먼트들을 포함하는 캐시에 액세스하지 않는 한, 탐색은 시작 지점처럼 동작할 것이다. 따라서 탐색은 초기의 더 작은 다수의 세그먼트들의 세트를 다운로드한 다음 더 작은 세그먼트들을 더 큰 세그먼트들로 동적으로 그룹화할 것이다.
도 7은 일 실시예에 따른, 클라이언트 디바이스에서 미디어 재생을 예시한다. 이 실시예에서, 클라이언트 디바이스는 클라이언트 특정 플레이리스트를 통해 다수의 세그먼트들을 요청하여 말단 사용자에게 미디어 콘텐트를 출력한다. 클라이언트 디바이스는 미디어 재생의 최적화를 위해 세그먼트들을 동적으로 그룹화할 수 있다.
블록(702)에서, 클라이언트 디바이스는 하나 이상의 클라이언트 특정 플레이리스트들을 수신한다. 각각의 클라이언트 특정 플레이리스트는 바이트 범위 태그들을 사용하여 하나 이상의 세그먼트들을 참조한다. 각각의 클라이언트 특정 플레이리스트는 동일한 미디어 콘텐트를 상이한 비트레이트들로 제시하는 상이한 처리된 변형 스트림들에 대응한다. 각각의 클라이언트 특정 플레이리스트는 하나 이상의 클라이언트 특정 플레이리스트들의 끝을 표시하는 엔드리스트 태그(Endlist tag)를 포함한다.
일 실시예에서, 클라이언트 특정 플레이리스트를 수신하기 위해, 클라이언트 디바이스는 식별 정보를 패키저에 전송하고, 패키저는 이 정보를 사용하여 클라이언트 디바이스의 유형을 결정하고, 이에 따라 클라이언트 디바이스에 대한 최적의 플레이리스트를 결정한다. 그 다음에 패키저는 클라이언트 디바이스(또는 보다 구체적으로는 클라이언트 디바이스의 미디어 플레이어)로 최적의 플레이리스트를 전송한다. 일단 플레이리스트가 식별되면, 클라이언트 디바이스는 배포 네트워크로부터 플레이리스트를 요청한 다음 아래에서 설명되는 바와 같이 플레이리스트를 사용하여 미디어 콘텐트의 세그먼트들을 다운로드하기 시작할 수 있다.
다른 실시예에서, 클라이언트 디바이스는 플레이리스트들 및 변형 스트림들을 포함하는 (패키저가 아닌) CDN에게 자신을 식별시킨다. CDN은 클라이언트 디바이스에서 미디어 재생에 최적인 최대 세그먼트 지속기간을 가진 플레이리스트를 식별하고, 클라이언트 디바이스는 식별된 플레이리스트를 요청하며, CDN은 이 플레이리스트를 클라이언트 디바이스에 전달한다.
블록(704)에서, 클라이언트 디바이스는 하나 이상의 클라이언트 특정 플레이리스트들에 의해 참조되는 처리된 변형 스트림의 세그먼트에 대해 페치/요청을 전송한다. 클라이언트 디바이스가 시작 또는 탐색 지점 다음의 미디어 콘텐트 세그먼트를 처음 요청할 때, 페치/요청은 클라이언트 특정 플레이리스트에서 명시된 최대 세그먼트 지속기간을 갖는 세그먼트에 대한 것일 것이다.
클라이언트 디바이스는 스트리밍 품질들을 변경할 상이한 클라이언트 특정 플레이리스트(즉, 상이한 변형 스트림을 나타내는 수신된 클라이언트 특정 플레이리스트들 중 하나)에서 참조된 세그먼트를 타겟팅함으로써 ABR을 구현할 수 있다. 클라이언트 디바이스는 클라이언트 디바이스의 가용 네트워크 대역폭 및 현재의 데이터 처리량에 기초하여 상이한 클라이언트 특정 플레이리스트로부터 세그먼트를 페치하기로/요청하기로 결정한다.
블록(706)에서, 클라이언트 디바이스는 처리된 변형 스트림의 페치된/요청된 세그먼트들을 수신한다. 블록(708)에서, 클라이언트 디바이스는 페치된/요청된 세그먼트들에 의해 참조되는 미디어 콘텐트를 플레이한다.
블록(710)에서, 클라이언트 디바이스는 바이트 범위들을 사용하여 복수의 세그먼트들을 하나 이상의 처리된 변형 스트림들로부터 페치될/요청될 단일 세그먼트 그룹으로 그룹화할 수 있다. 클라이언트 디바이스는 바이트 범위들을 사용하여 클라이언트 특정 플레이리스트들에 명시된 최대 세그먼트 지속기간의 다수의 연속 세그먼트들을 함께 그룹화할 수 있다. 다수의 세그먼트들을 단일 세그먼트로 그룹화하는 것은 다수의 세그먼트들을 요청하고, 수신하고 처리하는 것과 비교할 때 클라이언트 디바이스에 의해 사용되는 처리 능력의 양을 줄임으로써 미디어 재생을 최적화할 수 있다. 또한, 다수의 세그먼트들을 단일 세그먼트로 그룹화하는 것은 유사한 이유들로 미디어 콘텐트에 대한 클라이언트 디바이스의 페치들/요청들을 서비스하는 서버의 부하를 줄여준다.
블록(712)에서, 마지막 세그먼트에 도달하면, 블록(714) 대로 하나 이상의 클라이언트 특정 플레이리스트들에 의해 참조되는 미디어 콘텐트의 재생이 종료된다. 엔드리스트 태그에 도달되지 않았다면, 클라이언트 디바이스는 블록(704) 대로 스트리밍 동작을 지속한다.
본 개시내용에서, 다양한 실시예들이 참조된다. 그러나 본 개시내용은 설명된 특정 실시예들로 제한되지 않는다는 것을 이해해야 한다. 대신에, 상이한 실시예들과 관련이 있든 없든 다음의 특징들 및 요소들의 임의의 조합은 본 명세서에서 제공된 교시들을 구현하고 실행할 것으로 생각된다. 또한, 실시예들의 요소들이 "A 및 B 중 적어도 하나"의 형태로 설명될 때, 이것은 요소 A를 배타적으로 포함하고, 요소 B를 배타적으로 포함하고, 요소 A 및 B를 포함하는 실시예들이 각각 고려된다는 것을 이해할 것이다. 더욱이, 일부 실시예들이 다른 가능한 해결책들에 비해 또는 종래 기술에 비해 장점들을 달성할 수 있지만, 특정한 장점이 주어진 실시예에 의해 달성되는지 여부는 본 개시내용을 제한하지 않는다. 따라서, 본 명세서에 개시된 양태들, 특징들, 실시예들 및 장점들은 단지 예시적일 뿐이며 청구항(들)에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구항들의 요소들 또는 제한들로 간주되지 않는다. 마찬가지로, "본 발명"이라는 언급은 본 명세서에 개시된 임의의 발명 주제의 일반화로서 해석되지 않아야 할 것이고 청구항(들)에서 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소들 또는 제한들로 간주되지 않아야 할 것이다.
관련 기술분야에서 통상의 기술자에 의해 인식될 수 있는 바와 같이, 본 명세서에 설명된 실시예들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 실시예들은 본 명세서에서 모두 일반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 전체적으로 하드웨어 실시예, 전체적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 소프트웨어 양태와 하드웨어 양태를 결합하는 실시예의 형태를 취할 수 있다. 더욱이, 본 명세서에 설명된 실시예들은 컴퓨터 판독 가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독 가능 매체(들)에서 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
컴퓨터 판독 가능 매체 상에 구현된 프로그램 코드는 이것으로 제한되는 것은 아니지만 무선, 유선, 광섬유 케이블, RF 등, 또는 앞서 언급한 것들의 임의의 적합한 조합을 비롯한, 임의의 적절한 매체를 사용하여 전송될 수 있다.
본 개시내용의 실시예들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 통상의 절차적 프로그래밍 언어들, 이를테면 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들을 비롯한 하나 이상의 프로그래밍 언어들의 임의의 조합으로 작성될 수 있다. 프로그램 코드는 전체적으로 사용자의 컴퓨터에서, 부분적으로는 사용자의 컴퓨터에서, 스탠드-얼론 소프트웨어 패키지로서, 부분적으로는 사용자의 컴퓨터에서, 그리고 부분적으로는 원격 컴퓨터에서 또는 전체적으로 원격 컴퓨터나 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(local area network)(LAN) 또는 광역 네트워크(wide area network)(WAN)를 비롯한 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결되거나, 또는 (예를 들어, 인터넷 서비스 제공업체를 사용하여 인터넷을 통해) 외부 컴퓨터에 연결될 수 있다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 본 명세서에 설명된다. 흐름도들 또는 블록도들의 각 블록, 및 흐름도들 또는 블록도들 내 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것이 이해될 것이다. 이러한 컴퓨터 프로그램 명령어들은 머신을 생성하기 위해 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그램 가능 데이터 프로세싱 장치의 프로세서에 제공되어, 컴퓨터 또는 다른 프로그램 가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령어들이 흐름도들 및/또는 블록도들의 블록(들)에서 명시된 기능들/작동들을 구현하기 위한 수단을 생성하도록 할 수 있다.
이러한 컴퓨터 프로그램 명령어들은 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치 또는 다른 디바이스에게 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 또한 저장되어, 컴퓨터 판독 가능 매체에 저장된 명령어들이 흐름도들 또는 블록도들의 블록(들)에서 명시된 기능/작동을 구현하는 명령어들을 포함하는 제조 물품을 생성하도록 한다.
컴퓨터 프로그램 명령어들은 또한 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치 또는 다른 디바이스에 로딩되어 일련의 동작 단계들이 컴퓨터, 다른 프로그램 가능 장치 또는 다른 디바이스 상에서 수행되게 하여, 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치 또는 다른 디바이스 상에서 실행되는 명령어들이 흐름도들 또는 블록도들의 블록(들)에서 명시된 기능들/작동들을 구현하기 위한 프로세스들을 제공하도록, 컴퓨터 구현 프로세스를 생성할 수 있다.
도면들에서 흐름도들 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성 및 동작을 예시한다. 이 점에서, 흐름도들 또는 블록도들 내 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령어들을 포함하는 모듈, 세그먼트, 또는 일부의 코드를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록에서 언급된 기능들은 도면들에서 언급된 순서를 벗어나 발생할 수 있다는 것을 또한 유의해야 한다. 예를 들어, 연속적으로 도시된 두 개의 블록들은 사실상 실질적으로 동시에 실행될 수 있고, 또는 블록들은 연루된 기능성에 따라 때로는 역순으로 또는 순서를 벗어나 실행될 수 있다. 블록도들 또는 흐름도들의 각 블록, 및 블록도들 또는 흐름도들 내 블록들의 조합들은 명시된 기능들 또는 작동들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 것이 또한 유의될 것이다.
전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들이 본 개시내용의 기본 범위를 벗어나지 않고 고안될 수 있으며, 그 범위는 다음의 청구 범위에 의해 결정된다.

Claims (20)

  1. 방법으로서,
    제1 변형 스트림에 포함된 미디어 콘텐트를 플레이할 복수의 상이한 유형들의 클라이언트 디바이스들에 대한 각자의 최대 세그먼트 지속기간들을 식별하는 단계;
    상기 제1 변형 스트림에 기초하여, 상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 각자의 플레이리스트를 생성하는 단계 - 상기 각자의 플레이리스트들 각각은 상이한 최대 세그먼트 지속기간들을 포함함 -;
    배포 네트워크를 통해 상기 복수의 상이한 유형들의 클라이언트 디바이스들 중의 제1 클라이언트 디바이스에 상기 각자의 플레이리스트들 중의 제1 플레이리스트를 전달하는 단계 - 상기 제1 플레이리스트는 상기 각자의 최대 세그먼트 지속기간들 중의 제1 최대 세그먼트 지속기간을 포함함 -;
    상기 제1 변형 스트림과 동일한 미디어 콘텐트에 대응하지만 상이한 스트리밍 비트레이트를 갖는 제2 변형 스트림에 기초하여, 상기 제1 클라이언트 디바이스에 대한 제2 플레이리스트를 생성하는 단계 - 상기 제2 플레이리스트는 상기 제1 최대 세그먼트 지속기간을 포함하고, 상기 제2 플레이리스트는 상기 제1 플레이리스트와 동일한 미디어 콘텐트에 대응하고 상이한 스트리밍 비트레이트를 가지며, 상기 제2 플레이리스트의 세그먼트들의 세그먼트 경계들은 상기 제1 플레이리스트의 세그먼트들의 세그먼트 경계들과 정렬됨 -; 및
    상기 동일한 미디어 콘텐트의 플레이아웃을 지속하기 위해 상기 배포 네트워크를 통해 상기 제1 클라이언트 디바이스에 상기 제1 플레이리스트의 세그먼트들을 대신해서 상기 제2 플레이리스트의 세그먼트들을 전달하는 단계
    를 포함하는, 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 상기 최대 세그먼트 지속기간을 식별하는 단계는 상기 복수의 클라이언트 디바이스들의 운영 체제 및 미디어 플레이어 중 적어도 하나에 기초하는, 방법.
  4. 제1항에 있어서,
    상기 각자의 플레이리스트들 각각은 단일의 통합 자원 표시자(Uniform Resource Indicator)를 참조하는, 방법.
  5. 제1항에 있어서,
    상기 각자의 플레이리스트들에 바이트 범위 태그(byte-range tag)들을 삽입하여 상기 제1 변형 스트림에서 각각의 세그먼트 경계 및 챕터를 구획하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 복수의 상이한 유형들의 클라이언트 디바이스들 중 하나로부터 그룹화된 세그먼트에 대한 요청을 수신하는 단계를 더 포함하고, 상기 그룹화된 세그먼트는 상기 최대 세그먼트 지속기간의 다수의 세그먼트들을 포함하는 바이트 범위에 의해 식별되는, 방법.
  7. 컴퓨터 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 프로그램 코드는, 하나 이상의 컴퓨터 프로세서들의 동작에 의해 실행될 때,
    제1 변형 스트림에 포함된 미디어 콘텐트를 플레이할 복수의 상이한 유형들의 클라이언트 디바이스들에 대한 각자의 최대 세그먼트 지속기간들을 식별하는 것;
    상기 제1 변형 스트림에 기초하여, 상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 각자의 플레이리스트를 생성하는 것 - 상기 각자의 플레이리스트들 각각은 상이한 최대 세그먼트 지속기간들을 포함함 -;
    배포 네트워크를 통해 상기 복수의 상이한 유형들의 클라이언트 디바이스들 중의 제1 클라이언트 디바이스에 상기 각자의 플레이리스트들 중의 제1 플레이리스트를 전달하는 것 - 상기 제1 플레이리스트는 상기 각자의 최대 세그먼트 지속기간들의 제1 최대 세그먼트 지속기간을 포함함 -;
    상기 제1 변형 스트림과 동일한 미디어 콘텐트에 대응하지만 상이한 스트리밍 비트레이트를 갖는 제2 변형 스트림에 기초하여, 상기 제1 클라이언트 디바이스에 대한 제2 플레이리스트를 생성하는 것 - 상기 제2 플레이리스트는 상기 제1 최대 세그먼트 지속기간을 포함하고, 상기 제2 플레이리스트는 상기 제1 플레이리스트와 동일한 미디어 콘텐트에 대응하고 상이한 스트리밍 비트레이트를 가지며, 상기 제2 플레이리스트의 세그먼트들의 세그먼트 경계들은 상기 제1 플레이리스트의 세그먼트들의 세그먼트 경계들과 정렬됨 -; 및
    상기 동일한 미디어 콘텐트의 플레이아웃을 지속하기 위해 상기 배포 네트워크를 통해 상기 제1 클라이언트 디바이스에 상기 제1 플레이리스트의 세그먼트들을 대신해서 상기 제2 플레이리스트의 세그먼트들을 전달하는 것
    을 포함하는 동작을 수행하는, 비일시적 컴퓨터 판독 가능 매체.
  8. 삭제
  9. 제7항에 있어서,
    상기 컴퓨터 프로그램 코드는 추가로,
    상기 복수의 클라이언트 디바이스들의 운영 체제 및 미디어 플레이어 중 적어도 하나에 기초하여 상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 상기 최대 세그먼트 지속기간을 식별하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  10. 제7항에 있어서,
    상기 각자의 플레이리스트들 각각은 단일의 통합 자원 표시자를 참조하는, 비일시적 컴퓨터 판독 가능 매체.
  11. 제7항에 있어서,
    상기 컴퓨터 프로그램 코드는 추가로,
    상기 각자의 플레이리스트들에 바이트 범위 태그들을 삽입하여 상기 제1 변형 스트림 각각에서 각각의 세그먼트 경계 및 챕터를 구획하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체.
  12. 제7항에 있어서,
    상기 컴퓨터 프로그램 코드는 추가로,
    상기 복수의 상이한 유형들의 클라이언트 디바이스들 중 하나로부터 그룹화된 세그먼트에 대한 요청을 수신하도록 구성되고, 상기 그룹화된 세그먼트는 상기 최대 세그먼트 지속기간의 다수의 세그먼트들을 포함하는 바이트 범위에 의해 식별되는, 비일시적 컴퓨터 판독 가능 매체.
  13. 시스템으로서,
    복수의 상이한 유형들의 클라이언트 디바이스들에 대한 최대 세그먼트 지속기간들을 표시하는 데이터를 포함하는 데이터 유닛;
    플레이리스트 유닛 - 상기 플레이리스트 유닛은,
    제1 변형 스트림에 포함된 미디어 콘텐트를 플레이할 복수의 상이한 유형들의 클라이언트 디바이스들에 대한 각자의 최대 세그먼트 지속기간들을 식별하고;
    상기 제1 변형 스트림에 기초하여, 상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 각자의 플레이리스트를 생성하도록 구성되고, 상기 각자의 플레이리스트들 각각은 상이한 최대 세그먼트 지속기간들을 포함하고, 상기 각자의 플레이리스트들은 복수의 상이한 유형들의 클라이언트 디바이스들 중의 제1 클라이언트 디바이스에 대한 제1 플레이리스트를 포함하고, 상기 제1 플레이리스트는 상기 각자의 최대 세그먼트 지속기간들의 제1 최대 세그먼트 지속기간을 포함함 -;
    상기 제1 변형 스트림과 동일한 미디어 콘텐트에 대응하지만 상이한 스트리밍 비트레이트를 갖는 제2 변형 스트림에 기초하여, 상기 제1 클라이언트 디바이스에 대한 제2 플레이리스트를 생성하고 - 상기 제2 플레이리스트는 상기 제1 최대 세그먼트 지속기간을 포함하고, 상기 제2 플레이리스트는 상기 제1 플레이리스트와 동일한 미디어 콘텐트에 대응하고 상이한 스트리밍 비트레이트를 가지며, 상기 제2 플레이리스트의 세그먼트들의 세그먼트 경계들은 상기 제1 플레이리스트의 세그먼트들의 세그먼트 경계들과 정렬됨 -; 및
    배포 네트워크를 통해 상기 제1 클라이언트 디바이스에 상기 제1 플레이리스트를 전달하고,
    상기 동일한 미디어 콘텐트의 플레이아웃을 지속하기 위해 상기 배포 네트워크를 통해 상기 제1 클라이언트 디바이스에 상기 제1 플레이리스트의 세그먼트들을 대신해서 상기 제2 플레이리스트의 세그먼트들을 전달하도록 구성된 전달 유닛
    을 포함하는, 시스템.
  14. 삭제
  15. 제13항에 있어서,
    상기 복수의 상이한 유형들의 클라이언트 디바이스들 각각에 대한 상기 최대 세그먼트 지속기간을 식별하는 것은 상기 복수의 클라이언트 디바이스들의 운영 체제 및 미디어 플레이어 중 적어도 하나에 기초하는, 시스템.
  16. 제13항에 있어서,
    상기 각자의 플레이리스트들 각각은 단일의 통합 자원 표시자를 참조하는, 시스템.
  17. 제13항에 있어서,
    상기 플레이리스트 유닛은 상기 각자의 플레이리스트들에 바이트 범위 태그들을 삽입하여 상기 제1 변형 스트림에서 각각의 세그먼트 경계 및 챕터를 구획하도록 구성되는, 시스템.
  18. 제13항에 있어서,
    상기 전달 유닛은 상기 복수의 상이한 유형들의 클라이언트 디바이스들 중 하나로부터 그룹화된 세그먼트에 대한 요청을 수신하도록 구성되고, 상기 그룹화된 세그먼트는 상기 최대 세그먼트 지속기간의 다수의 세그먼트들을 포함하는 바이트 범위에 의해 식별되는, 시스템.
  19. 컴퓨팅 시스템으로서,
    프로세서; 및
    메모리
    를 포함하고, 상기 메모리는 상기 프로세서에 의해 실행될 때 동작을 수행하는 프로그램을 저장하고, 상기 동작은,
    제1 유형의 클라이언트 디바이스로부터 제1 플레이리스트에 대한 요청을 수신하는 것 - 상기 제1 플레이리스트는 상기 제1 유형의 클라이언트 디바이스에 대해 맞춤화된 제1 최대 세그먼트 지속기간을 포함함 -;
    제2 유형의 클라이언트 디바이스로부터 제2 플레이리스트에 대한 요청을 수신하는 것 - 상기 제2 플레이리스트는 상기 제2 유형의 클라이언트 디바이스에 대해 맞춤화된 제2 최대 세그먼트 지속기간을 포함하고, 상기 제1 유형의 클라이언트 디바이스 및 제2 유형의 클라이언트 디바이스는 상이하고, 상기 제1 및 제2 최대 세그먼트 지속기간들은 상이함 -;
    상기 제1 및 제2 플레이리스트들을 각각 상기 제1 및 제2 유형들의 클라이언트 디바이스들로 전송하는 것;
    상기 제1 플레이리스트와 동일한 미디어 콘텐트에 대응하지만 상이한 스트리밍 비트레이트를 갖는 변형 스트림에 기초하여, 상기 제1 유형의 클라이언트 디바이스에 대한 제3 플레이리스트를 생성하는 것 - 상기 제3 플레이리스트는 상기 제1 최대 세그먼트 지속기간을 포함하고, 상기 제3 플레이리스트는 상기 제1 플레이리스트와 동일한 미디어 콘텐트에 대응하고 상이한 스트리밍 비트레이트를 가지며, 상기 제3 플레이리스트의 세그먼트들의 세그먼트 경계들은 상기 제1 플레이리스트들의 세그먼트들의 세그먼트 경계들과 정렬됨 -; 및
    상기 동일한 미디어 콘텐트의 플레이아웃을 지속하기 위해 상기 제1 유형의 클라이언트 디바이스에 상기 제1 플레이리스트의 세그먼트들을 대신해서 상기 제2 플레이리스트의 세그먼트들을 전달하는 것을 포함하는, 컴퓨팅 시스템.
  20. 제19항에 있어서,
    상기 동작은,
    상기 제1 및 제2 유형들의 클라이언트 디바이스들 중 적어도 하나로부터 그룹화된 세그먼트에 대한 요청을 수신하는 것을 더 포함하고, 상기 제1 유형의 클라이언트 디바이스로부터 요청된 상기 그룹화된 세그먼트는 상기 제1 최대 세그먼트 지속기간의 다수의 세그먼트들을 포함하는 바이트 범위에 의해 식별되며, 상기 제2 유형의 클라이언트 디바이스로부터 요청된 상기 그룹화된 세그먼트는 상기 제2 최대 세그먼트 지속기간의 다수의 세그먼트들을 포함하는 바이트 범위에 의해 식별되는, 컴퓨팅 시스템.
KR1020200117707A 2019-09-13 2020-09-14 세그먼터 유동성을 위한 패키저 KR102493871B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/569,835 US11509949B2 (en) 2019-09-13 2019-09-13 Packager for segmenter fluidity
US16/569,835 2019-09-13

Publications (2)

Publication Number Publication Date
KR20210032289A KR20210032289A (ko) 2021-03-24
KR102493871B1 true KR102493871B1 (ko) 2023-01-30

Family

ID=72473438

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200117707A KR102493871B1 (ko) 2019-09-13 2020-09-14 세그먼터 유동성을 위한 패키저

Country Status (6)

Country Link
US (3) US11509949B2 (ko)
EP (1) EP3793201A1 (ko)
JP (1) JP2021048582A (ko)
KR (1) KR102493871B1 (ko)
CN (1) CN112511871B (ko)
MX (1) MX2020009434A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12063423B1 (en) * 2018-09-24 2024-08-13 Nova Modum Inc Enhanced interactive web features for displaying and editing digital content
US11489899B1 (en) 2021-04-12 2022-11-01 Comcast Cable Communications, Llc Segment ladder transitioning in adaptive streaming
US20230019723A1 (en) * 2021-07-14 2023-01-19 Rovi Guides, Inc. Interactive supplemental content system
US11936935B2 (en) * 2021-08-09 2024-03-19 Charter Communications Operating, Llc Adaptive bitrate streaming time shift buffer
US20230217086A1 (en) * 2021-12-30 2023-07-06 Interwise Ltd. Providing and Using a Branching Narrative Content Service
US11631252B1 (en) 2022-01-03 2023-04-18 Brian Lawrence Repper Visual media management for mobile devices
JP7483775B2 (ja) * 2022-03-08 2024-05-15 本田技研工業株式会社 アプリケーションプログラム、端末装置の制御方法、コンテンツ提供装置、およびコンテンツ提供方法
US20240185891A1 (en) * 2022-12-03 2024-06-06 Synamedia Limited Common Timeline Processing for Unique Manifests

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151009A1 (en) * 2010-06-18 2012-06-14 Nokia Corporation Method and Apparatus for Generating and Handling Streaming Media Quality-of-Experience Metrics
US20120311094A1 (en) * 2011-06-03 2012-12-06 David Biderman Playlists for real-time or near real-time streaming
US20150089557A1 (en) * 2013-09-25 2015-03-26 Verizon Patent And Licensing Inc. Variant playlist optimization

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155735B1 (en) * 1999-10-08 2006-12-26 Vulcan Patents Llc System and method for the broadcast dissemination of time-ordered data
US7738550B2 (en) * 2000-03-13 2010-06-15 Sony Corporation Method and apparatus for generating compact transcoding hints metadata
US20070154169A1 (en) * 2005-12-29 2007-07-05 United Video Properties, Inc. Systems and methods for accessing media program options based on program segment interest
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US20080127272A1 (en) * 2006-11-28 2008-05-29 Brian John Cragun Aggregation of Multiple Media Streams to a User
US9705935B2 (en) * 2008-01-14 2017-07-11 Qualcomm Incorporated Efficient interworking between circuit-switched and packet-switched multimedia services
MX2011006973A (es) 2008-12-31 2011-12-06 Apple Inc Transmision de flujos de datos en tiempo real o en tiempo casi real.
US8099476B2 (en) * 2008-12-31 2012-01-17 Apple Inc. Updatable real-time or near real-time streaming
US8769589B2 (en) * 2009-03-31 2014-07-01 At&T Intellectual Property I, L.P. System and method to create a media content summary based on viewer annotations
US8355433B2 (en) 2009-08-18 2013-01-15 Netflix, Inc. Encoding video streams for adaptive video streaming
GB201105502D0 (en) * 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
US9043484B2 (en) * 2010-04-02 2015-05-26 Disney Enterprises, Inc. Streaming playback and dynamic ad insertion
TWI451279B (zh) * 2010-04-07 2014-09-01 Apple Inc 即時或接近即時串流傳輸之內容存取控制
KR101702562B1 (ko) * 2010-06-18 2017-02-03 삼성전자 주식회사 멀티미디어 스트림 파일의 저장 파일 포맷, 저장 방법 및 이를 이용한 클라이언트 장치
US8677428B2 (en) * 2010-08-20 2014-03-18 Disney Enterprises, Inc. System and method for rule based dynamic server side streaming manifest files
US8849899B1 (en) * 2011-01-30 2014-09-30 Israel L'Heureux Accelerated delivery of media content via peer caching
US9049494B2 (en) * 2011-01-31 2015-06-02 Cbs Interactive, Inc. Media playback control
US8489760B2 (en) * 2011-03-31 2013-07-16 Juniper Networks, Inc. Media file storage format and adaptive delivery system
WO2012170904A2 (en) * 2011-06-10 2012-12-13 Bytemobile, Inc. Adaptive bitrate management on progressive download with indexed media files
WO2013028565A1 (en) 2011-08-19 2013-02-28 General Instrument Corporation Encoder-aided segmentation for adaptive streaming
US8972262B1 (en) * 2012-01-18 2015-03-03 Google Inc. Indexing and search of content in recorded group communications
US20130254041A1 (en) * 2012-03-23 2013-09-26 Jeffrey Sherwin Method for delivering fair advertising inventory splits given position preferences
US9613042B1 (en) * 2012-04-09 2017-04-04 Conviva Inc. Dynamic generation of video manifest files
EP2869579B1 (en) * 2012-07-02 2017-04-26 Sony Corporation Transmission apparatus, transmission method, and network apparatus for multi-view video streaming using a meta file including cache priority or expiry time information of said video streams
US9866886B2 (en) * 2012-10-23 2018-01-09 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing a media content service
US9544344B2 (en) * 2012-11-20 2017-01-10 Google Technology Holdings LLC Method and apparatus for streaming media content to client devices
EP2944089B1 (en) * 2013-01-11 2018-03-07 Telefonaktiebolaget LM Ericsson (publ) Technique for operating client and server devices in a broadcast communication network
CN105009601A (zh) * 2013-02-27 2015-10-28 索尼公司 信息处理装置和方法、程序和内容供应系统
US9538232B2 (en) * 2013-03-14 2017-01-03 Verizon Patent And Licensing Inc. Chapterized streaming of video content
US10027993B2 (en) * 2013-03-15 2018-07-17 Arris Enterprises Llc System and method for multiscreen network digital video recording using on-demand transcoding
FR3004054A1 (fr) * 2013-03-26 2014-10-03 France Telecom Generation et restitution d'un flux representatif d'un contenu audiovisuel
US9413806B2 (en) * 2013-05-24 2016-08-09 Broadcom Corporation Adaptive bit rate proxy
US20150256600A1 (en) * 2014-03-05 2015-09-10 Citrix Systems, Inc. Systems and methods for media format substitution
US20160014439A1 (en) 2014-07-14 2016-01-14 Cisco Technology Inc. Indexing of Video Assets
US9930405B2 (en) * 2014-09-30 2018-03-27 Rovi Guides, Inc. Systems and methods for presenting user selected scenes
US9794601B2 (en) * 2014-10-21 2017-10-17 Cisco Technology, Inc. Dynamic programming across multiple streams
US9509742B2 (en) * 2014-10-29 2016-11-29 DLVR, Inc. Configuring manifest files referencing infrastructure service providers for adaptive streaming video
US9794604B2 (en) * 2014-11-14 2017-10-17 Panopto, Inc. Systems and methods for transmitting segment-quality units of a streaming video session
US10432688B2 (en) * 2015-03-13 2019-10-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for optimized delivery of live ABR media
US9641578B2 (en) * 2015-04-02 2017-05-02 Arris Enterprises, Inc. Minimizing unicast bandwidth in an adaptive bit rate system
WO2016172379A1 (en) * 2015-04-21 2016-10-27 Stinkdigital, Ltd Video delivery platform
MX2017015855A (es) * 2015-06-09 2018-06-06 Arris Entpr Llc Sincronizacion de cliente de video de transmision por secuencias en vivo http (hls).
US10476926B2 (en) 2015-06-12 2019-11-12 Telefonaktiebolaget Lm Ericsson (Publ) System and method for managing ABR bitrate delivery responsive to video buffer characteristics of a client
US10638179B2 (en) * 2015-08-06 2020-04-28 At&T Intellectual Property I, L.P. Content insertion in streaming media content
US9654815B2 (en) * 2015-09-18 2017-05-16 Arris Enterprises, Inc. Advertising detection in adaptive bitrate streaming
JP2017069636A (ja) * 2015-09-28 2017-04-06 株式会社リコー 情報処理装置、配信方法、及びプログラム
WO2017124083A1 (en) * 2016-01-15 2017-07-20 Vid Scale, Inc. Scalable coding based video distribution
US10009659B2 (en) * 2016-03-31 2018-06-26 Disney Enterprises, Inc. System and method for hybrid push-based streaming
US10390071B2 (en) * 2016-04-16 2019-08-20 Ittiam Systems (P) Ltd. Content delivery edge storage optimized media delivery to adaptive bitrate (ABR) streaming clients
US10701415B2 (en) * 2016-05-19 2020-06-30 Arris Enterprises Llc Method and apparatus for segmenting data
US11617019B2 (en) * 2016-07-28 2023-03-28 Qualcomm Incorporated Retrieving and accessing segment chunks for media streaming
US10404649B2 (en) * 2016-09-30 2019-09-03 DISH Technologies L.L.C. Content delivery optimization using adaptive and dynamic DNS
US10931763B2 (en) * 2017-01-11 2021-02-23 Qualcomm Incorporated Systems and methods for opaque object delivery in a communication network
MY198093A (en) * 2017-01-17 2023-07-31 Tutela Tech Ltd System and method for evaluating wireless device and/or wireless network performance
US10263830B2 (en) * 2017-01-23 2019-04-16 Wyse Technology L.L.C. Optimized data transfer for redirected UASP devices
US10484446B1 (en) * 2017-01-31 2019-11-19 Amazon Technologies, Inc. VBR encoding of live content
US10225603B2 (en) * 2017-03-13 2019-03-05 Wipro Limited Methods and systems for rendering multimedia content on a user device
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
US12028397B2 (en) * 2017-08-29 2024-07-02 Comcast Cable Communications, Llc Bandwidth reduction through duration averaging
US11025998B2 (en) * 2017-11-27 2021-06-01 Rovi Guides, Inc. Systems and methods for dynamically extending or shortening segments in a playlist
CA3100047A1 (en) * 2018-05-11 2019-11-14 Arris Enterprises Llc Broadcast delivered hls system
US20200344510A1 (en) * 2019-04-25 2020-10-29 Comcast Cable Communications, Llc Dynamic Content Delivery

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151009A1 (en) * 2010-06-18 2012-06-14 Nokia Corporation Method and Apparatus for Generating and Handling Streaming Media Quality-of-Experience Metrics
US20120311094A1 (en) * 2011-06-03 2012-12-06 David Biderman Playlists for real-time or near real-time streaming
US20150089557A1 (en) * 2013-09-25 2015-03-26 Verizon Patent And Licensing Inc. Variant playlist optimization

Also Published As

Publication number Publication date
US11509949B2 (en) 2022-11-22
EP3793201A1 (en) 2021-03-17
CN112511871A (zh) 2021-03-16
KR20210032289A (ko) 2021-03-24
US20210084354A1 (en) 2021-03-18
MX2020009434A (es) 2021-03-15
JP2021048582A (ja) 2021-03-25
US11877022B2 (en) 2024-01-16
US20230083464A1 (en) 2023-03-16
CN112511871B (zh) 2023-01-24
US20240107097A1 (en) 2024-03-28

Similar Documents

Publication Publication Date Title
KR102493871B1 (ko) 세그먼터 유동성을 위한 패키저
US10116971B2 (en) Method and system for fetching a portion of a live media stream before a first ad finishes playing to detect the subsequent ad indicator for live consecutive ad replacement
US10820063B2 (en) Manifest customization in adaptive bitrate streaming
US11665218B2 (en) Fast encoding of live streaming media content
US10469885B2 (en) Playback synchronization among adaptive bitrate streaming clients
KR102110627B1 (ko) 적응적 비트레이트 스트리밍에서 대역폭 할당을 위한 방법들 및 디바이스들
KR102086873B1 (ko) 복수의 트랜스코딩된 컨텐츠 스트림들을 제공하기 위한 방법 및 장치
US9060207B2 (en) Adaptive video streaming over a content delivery network
US10397289B2 (en) HTTP live streaming (HLS) video client synchronization
US10003830B1 (en) Controller to manage streaming video of playback devices
US20150200992A1 (en) Method for downloading, at a client terminal, an upcoming sequence of segments of a multimedia content, and corresponding terminal
US20140289257A1 (en) Methods and systems for providing file data for media files
EP2538629A1 (en) Content delivering method
US20190037003A1 (en) Client-driven, abr flow rate shaping
CN113891176B (zh) 基于hls的点播流量控制方法、装置、设备及存储介质
WO2016110324A1 (en) An improved method and apparatus for trick-play in abr streaming
US20170142179A1 (en) Delivery of media content segments in a content delivery network
CN110545492A (zh) 媒体流的实时递送方法及服务器
EP3292698A1 (en) Http live streaming (hls) video client synchronization
GB2601406A (en) Adaptive bit rate streaming
CN118590474A (zh) 云媒体播放器
WO2013030237A1 (en) Method for adapting the segment size in transcoded multimedia streams

Legal Events

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