KR101904244B1 - 개량된 스트리밍 미디어 재생 - Google Patents

개량된 스트리밍 미디어 재생 Download PDF

Info

Publication number
KR101904244B1
KR101904244B1 KR1020167036892A KR20167036892A KR101904244B1 KR 101904244 B1 KR101904244 B1 KR 101904244B1 KR 1020167036892 A KR1020167036892 A KR 1020167036892A KR 20167036892 A KR20167036892 A KR 20167036892A KR 101904244 B1 KR101904244 B1 KR 101904244B1
Authority
KR
South Korea
Prior art keywords
video
proxy server
streaming
media
representation
Prior art date
Application number
KR1020167036892A
Other languages
English (en)
Other versions
KR20170012471A (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 KR20170012471A publication Critical patent/KR20170012471A/ko
Application granted granted Critical
Publication of KR101904244B1 publication Critical patent/KR101904244B1/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
    • H04L65/4084
    • H04L65/608
    • 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/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • 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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6371Control signals issued by the client directed to the server or network components directed to network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server

Landscapes

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

Abstract

스트리밍 비디오 재생 시스템은 클라이언트 디바이스의 미디어 플레이어를 위한 스트리밍 비디오와 연관된 매니페스트 파일을 로컬 방식으로 생성하도록 제공된다. 로컬 방식으로 생성된 매니페스트 파일은 미디어 플레이어를 위한 기동 시간을 감소시키는 것을 돕고, 매니페스트 파일은 스트리밍 비디오와 연관된 스트리밍 메타데이터에 기초하여 로컬 방식으로 생성되고, 매니페스트 파일들은 HTTP 라이브 스트리밍(HLS) 기반 마스터 플레이리스트들 및 미디어 플레이리스트들을 포함한다. 로컬 방식으로 생성된 매니페스트 파일은 또한, 스트리밍 비디오의 비디오 세그먼트들의 프리-페치 및 재생 동안의 캐싱을 가능하게 함으로써 더욱 양호한 적응적 비트 레이트 제어를 제공한다. 스트리밍 비디오 재생 시스템은 최후의 비디오 세그먼트의 인덱스를 이용하여 컨텐츠 공유 서비스로 송신되는 미디어 플레이리스트의 크기를 감소시키고, 더 큰 탐색 윈도우를 갖는 DVR-가능 라이브 비디오 스트리밍을 가지는 것을 실현가능하게 한다.

Description

개량된 스트리밍 미디어 재생{ENHANCED STREAMING MEDIA PLAYBACK}
개시내용은 일반적으로 디지털 미디어 스트리밍의 분야에 관한 것으로, 구체적으로 스트리밍 미디어 재생(streaming media playback)을 개량하는 것에 관한 것이다.
디지털 미디어 컨텐츠 공유 및 인터넷 네트워킹의 개발은 사용자 경험을 개량하기 위한 많은 특징들을 가능하게 하였다. 예를 들어, 인터넷 상에서, 컨텐츠 호스팅 웹사이트들 및 컨텐츠 공유 서비스들은 사용자들이 오디오/음악 클립들, 비디오 클립들, 및 오디오 및 비디오 컨텐츠의 조합을 포함할 수도 있는 디지털 미디어 컨텐츠를 업로드하고, 시청하고, 공유하도록 해준다. 시청자는 컨텐츠 공유 서버로부터 재생을 위한 시청 디바이스로 스트리밍되는 미디어 컨텐츠를 시청할 수 있다. 미디어 컨텐츠 재생의 재생을 방해하는 버퍼링을 방지하기 위하여, 컨텐츠는 HTTP 라이브 스트리밍(HTTP Live Streaming)(HLS)과 같은 적응적 비트레이트 프로토콜로 스트리밍될 수도 있다.
HLS는 다양한 컴퓨팅 디바이스들 상에서 재생을 위한 웹 서버로부터 HTTP를 통해 오디오 및 비디오를 스트리밍하기 위한 네트워크 프로토콜이고, 여기서, 스트리밍 컨텐츠의 품질은 시청 디바이스의 네트워크 접속에 따라 변경될 수 있다. 그러나, 스트리밍 미디어 재생을 위한 기존의 HLS 기반 솔루션들은 다수의 도전들에 직면한다. 첫 번째 도전은 높은 레이턴시(latency)이다. 예를 들어, 기존의 HLS 기반 솔루션들은 클라이언트 디바이스가 임의의 비디오 컨텐츠를 재생할 수 있기 전에, 클라이언트 디바이스가 컨텐츠 공유 서버로의 3 번의 라운드 트립(round trip)들을 행하는 것을 요구한다. 3 번의 라운드 트립들은 마스터 플레이리스트를 페치(fetch)하기 위한 트립, 미디어 플레이리스트를 위한 하나의 트립, 및 초기 미디어 세그먼트를 위한 하나의 트립을 포함한다. 이러한 요구는 특히, 라운드 트립 시간(round trip time)(RTT)이 무선 네트워크들과 같이 높은 상황들에서 컨텐츠 재생을 위한 레이턴시를 상당히 증가시킨다.
스트리밍 미디어 재생을 위한 기존의 솔루션들, 예컨대, HLS 또는 DASH는 클라이언트에 의해 이용된 미디어 플레이어가 스트림들 선택을 지원하지 않을 때에 스트림 선택에 대한 클라이언트 제어를 또한 결여한다. 예를 들어, HLS 프로토콜을 이용하여 비디오를 스트리밍하기 위한 이러한 미디어 플레이어를 이용하는 클라이언트들은 어느 미디어 세그먼트들을 페치할 것인지와, 이들을 언제 페치할 것인지를 제어할 수 없다. 스트리밍 비디오가 다수의 비트레이트들 또는 해상도들에서 이용가능할 경우, 클라이언트들은 마스터 플레이리스트 URL을 미디어 플레이어에 제공하도록 요구되고, 여기서, 마스터 플레이리스트는 모든 이용가능한 미디어 플레이리스트들을 포함하고, 이 미디어 플레이리스트들의 각각은 특정 비트레이트 또는 해상도에서의 스트리밍 비디오의 표현에 대응한다. 재생 동안, 미디어 플레이어는 스트리밍 비디오의 어느 표현을 재생을 위하여 선택할 것인지를 판단한다.
또한, 스트리밍 비디오 컨텐츠 재생을 위한 기존의 솔루션들은 라이브 비디오 스트리밍을 지원하기 위하여 효율적이지 않다. 스트리밍 미디어의 라이브 재생들 동안, 기존의 HLS 기반 스트리밍 비디오 솔루션들의 클라이언트는 새로운 미디어 세그먼트들을 위하여 몇 초마다 라이브 플레이리스트를 재-페치(re-fetch)할 필요가 있다. 클라이언트가 시간에 있어서 역으로 탐색하도록 허용될 경우, 라이브 미디어 플레이리스트는 컨텐츠의 전체 탐색된 기간을 포함해야 하고, 이것은 라이브 미디어 플레이리스트가 많이 저장하게 하여, 플레이리스트를 저장하고 파싱하기 위한 비용을 증가시킨다.
설명된 실시예들은 스트리밍 비디오 컨텐츠 재생으로 개량된 사용자 경험을 가능하게 한다. 클라이언트 디바이스의 미디어 플레이어를 위한 스트리밍 비디오와 연관된 매니페스트 파일(manifest file)은 스트리밍 비디오 재생 시스템에서 로컬 방식으로 생성된다. 스트리밍 메타데이터로부터 매니페스트 파일 또는 매니페스트 파일들을 로컬 방식으로 생성하는 것은 컨텐츠 공유 서비스로의 네트워크를 통한 라운드 트립들의 수를 감소시킴으로써 기동 시간(startup time)을 감소시키는 것을 돕는다. 프록시 서버는 로컬 방식으로 생성된 매니페스트 파일을 통해, 스트리밍 비디오의 비디오 세그먼트들의 프리-페치(pre-fetch) 및 재생 동안의 캐싱(caching)을 가능하게 함으로써 더욱 양호한 적응적 비트 레이트 제어를 제공한다. 스트리밍 비디오 재생 시스템은 최후의 비디오 세그먼트의 인덱스를 이용하여 컨텐츠 공유 서비스로 송신되는 미디어 플레이리스트의 크기를 감소시키고, 더 큰 탐색 윈도우를 갖는 DVR-가능 라이브 비디오 스트리밍을 가지는 것을 실현가능하게 한다.
하나의 실시예는 클라이언트 디바이스의 미디어 플레이어를 위한 프록시 서버를 포함하는 스트리밍 비디오 재생 시스템을 포함한다. 프록시 서버는 미디어 플레이어로부터 YouTube와 같은 컨텐츠 공유 서비스로의 스트리밍 비디오들에 대한 요청들을 검출한다. 컨텐츠 공유 서비스는 스트리밍 메타데이터를 스트리밍 비디오 재생 시스템에 제공한다. 스트리밍 메타데이터는 예컨대, HLS 또는 DASH와 같은, 미디어 플레이어에 의해 이해된 스트리밍 프로토콜에 따르는 표준적인 형태로 되어 있을 수도 있다. 스트리밍 메타데이터는 프로토콜 버퍼와 같은, 맞춤형 형태로 되어 있을 수도 있다. 스트리밍 비디오 재생 시스템은 스트리밍 메타데이터를, 미디어 플레이어에 의해 이해된 스트리밍 프로토콜들을 준수하는 매니페스트 파일 또는 매니페스트 파일들의 세트로 변환한다.
프록시 서버는 요청을 수정하여, 프록시 서버가 예컨대, 더욱 간결한 표현 및 응답 데이터의 용이한 파싱을 위하여 요청의 파일 포맷을 변환하여 컨텐츠 공유 서비스로부터 상이한 포맷으로 된 응답 데이터를 얻고, 수정된 요청을 컨텐츠 공유 서비스에 제공한다. 컨텐츠 공유 서비스로부터 요청된 비디오와 연관된 스트리밍 데이터를 수신할 시에, 프록시 서버는 스트리밍 프로토콜의 타입에 따라 비디오에 대한 매니페스트 파일 또는 매니페스트 파일들의 세트를 생성한다. HLS 스트리밍 프로토콜의 경우, 매니페스트 파일들은 HLS 마스터 및 미디어 플레이리스트들이다. DASH의 경우, 매니페스트 파일들은 DASH 매니페스트들이다. 매니페스트 파일은 비디오의 로케이션, 비디오의 이용가능한 표현들의 리스트, 및 비디오의 각각의 이용가능한 표현에 대한 비디오 세그먼트들의 리스트를 기술하는 정보를 포함할 수도 있다. 프록시 서버는 컨텐츠 공유 서비스로부터의 요청된 비디오의 컨텐츠를 스트리밍하기 위하여 매니페스트 파일을 미디어 플레이어에 제공한다. 대안적으로, 프록시 서버는 미디어 플레이어를 위한 컨텐츠 공유 서비스로부터의 요청된 비디오의 컨텐츠를 스트리밍한다.
명세서에서 설명된 특징들 및 장점들은 모두 포괄적인 것이 아니며, 특히, 많은 추가적인 특징들 및 장점들이 도면들, 명세서, 및 청구항들을 고려하는 본 기술분야의 통상의 기술자에게 명백할 것이다. 또한, 명세서에서 이용된 언어는 가독성 및 교육 목적들을 위하여 주로 선택되었고, 개시된 발명요지를 상세히 기술하거나 제한하기 위하여 선택되지 않았을 수도 있다는 것에 주목해야 한다.
도 1은 일 실시예에 따른 스트리밍 비디오 재생을 개량하기 위한 컴퓨팅 환경의 블록도이다.
도 2는 일 실시예에 따른 예시적인 스트리밍 비디오 재생 시스템이다.
도 3은 일 실시예에 따른 스트리밍 비디오 재생을 개량하기 위한 프로세스를 예시하는 플로우차트이다.
도 4는 일 실시예에 따른 스트리밍 비디오 재생을 개량하는 동작을 예시하는 상호작용 도면이다.
도면들 및 다음의 설명은 오직 예시로서 어떤 실시예들을 설명한다. 본 기술분야의 통상의 기술자는 다음의 설명으로부터, 본원에서 예시된 구조들 및 방법들의 대안적인 실시예들이 본원에서 설명된 원리들로부터 이탈하지 않으면서 채용될 수도 있다는 것을 용이하게 인식할 것이다. 동반된 도면들에서 그 예들이 예시되어 있는 몇몇 실시예들에 대하여 상세하게 지금부터 참조가 행해질 것이다. 무엇이든 실현가능한 유사하거나 같은 참조 번호들은 유사하거나 같은 기능성을 표시하기 위하여 도면들에서 이용될 수도 있다는 것에 주목한다.
도 1은 일 실시예에 다른 스트리밍 비디오 재생을 개량하기 위한 컴퓨팅 환경(100)을 도시한다. 컴퓨팅 환경(100)은 네트워크(150)를 통해 컨텐츠 공유 서비스(160)에 접속된 클라이언트 디바이스(110)를 포함한다. 설명을 간략화하고 명확하게 하기 위하여, 오직 하나의 컨텐츠 공유 서비스(160) 및 하나의 클라이언트 디바이스(110)가 도 1에서 도시된다. 컴퓨팅 환경(100)의 구현예들은 네트워크(150)를 통해 접속된 많은 클라이언트 디바이스들(110) 및 컨텐츠 공유 서비스들(160)을 가질 수 있다. 마찬가지로, 도 1의 다양한 엔티티들에 의해 수행된 기능들은 상이한 실시예들에서 상이할 수도 있다.
클라이언트 디바이스(110) 및 컨텐츠 공유 서비스(160)는 임의의 타입의 컴퓨팅 디바이스, 예를 들어, 컴퓨터 프로세서 및 메모리(예컨대, 컴퓨터-판독가능 저장 매체)를 포함하는 디바이스일 수도 있다. 컨텐츠 공유 서비스(160) 또는 클라이언트 디바이스(110)는 개인용 컴퓨터(personal computer)(PC), 서버 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant)(PDA), 스마트폰, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 디바이스, 또는 머신에 의해 취해져야 할 액션들을 특정하는 컴퓨터 프로그램 명령들의 세트를 실행할 수 있는 임의의 머신과 같은, 넓은 범위의 프로세싱 기능들을 가지는 컴퓨팅 디바이스들을 포함할 수도 있다. 개시내용의 실시예들은 단일 서버 디바이스 또는 다수의 서버 디바이스들 내에서 동작할 수도 있다.
일 실시예에서, 컨텐츠 공유 서비스(160)는 클라이언트 디바이스(110)로 스트리밍되어야 할 비디오 컨텐츠와 같은 디지털 컨텐츠를 제공한다. 예를 들어, 컨텐츠 공유 서비스(160)는 네트워크(150)를 통해 클라이언트 디바이스(110) 상에서의 재생을 위한 사용자에 의해 요청된, 스트리밍 비디오와 같은 미디어 항목을 제공할 수도 있다. 컨텐츠 공유 서비스(160)의 구현을 위한 적당한 시스템은 www.youtube.com에서 발견된 YouTube™ 웹사이트이고; 다른 비디오 호스팅 사이트들이 마찬가지로 알려져 있고, 본원에서 개시된 교시사항에 따라 동작하도록 적응될 수 있다. 용어 "사이트"는 임의의 인터넷작동 프로토콜들을 이용하여 디지털 미디어 컨텐츠를 서빙하도록 적응된 임의의 컴퓨터 시스템을 표현하고, 인터넷 또는 HTTP 프로토콜을 통해 업로드되거나 다운로드된 컨텐츠로 제한되도록 의도된 것이 아니다.
이 개시내용에서, "디지털 컨텐츠" 또는 "디지털 미디어 컨텐츠"는 임의의 머신-판독가능 및 머신-저장가능 작품을 일반적으로 지칭한다. 디지털 컨텐츠는 예를 들어, 비디오, 오디오, 또는 비디오 및 오디오의 조합을 포함할 수 있다. 일 실시예의 간략화 및 설명의 목적들을 위하여, 재생을 위한 디지털 컨텐츠는 "비디오", "스트리밍 비디오", "비디오 파일들", 또는 "비디오 항목들"로서 지칭될 것이지만, 스트리밍될 수 있고 재생될 수 있는 디지털 컨텐츠의 타입에 대한 제한은 이 용어에 의해 의도된 것이 아니다. 이에 따라, 스트리밍 비디오 컨텐츠를 재생하기 위하여 본원에서 설명된 동작들은 비디오들을 포함하는 임의의 타입의 디지털 컨텐츠와, 오디오 파일들(예컨대, 음악, 팟캐스트들, 오디오 책들 등), 문서들, 웹사이트들, 이미지들, 멀티미디어 프리젠테이션들 및 그 외의 것들을 포함하는 다른 적당한 타입들의 디지털 컨텐츠에 적용될 수 있다.
네트워크(150)는 컨텐츠 공유 서비스(160)와 클라이언트 디바이스(110) 사이의 통신을 가능하게 하고, 인터넷, 또 다른 광역 네트워크, 로컬 영역 네트워크 등일 수도 있다. 네트워크 구현을 위한 다양한 통신 기술들 및 프로토콜들이 기존에 알려진 방법론들 중으로부터 선택될 수도 있다. 일 실시에에서, 컨텐츠 공유 서비스(160)와 클라이언트 디바이스(110) 사이의 통신들을 위한 통신 프로토콜은 비디오 컨텐츠를 스트리밍하기 위한 HTTP 라이브 스트리밍(HLS)이다. HTTP를 통한 동적 적응적 스트리밍(Dynamic Adaptive Streaming over HTTP)(DASH)와 같은, 비디오를 스트리밍하기 위한 다른 통신 프로토콜들이 네트워크 구현을 위하여 또한 이용될 수 있다.
클라이언트 디바이스(110)는 스트리밍 비디오 요청들을 컨텐츠 공유 서비스(160)로 전송하고, 컨텐츠 공유 서비스(160)로부터 비디오 세그먼트들 및 연관된 메타데이터를 취출(retrieve)하고, 클라이언트 디바이스(110)에서 비디오 컨텐츠를 재생한다. 일 실시예에서, 클라이언트 디바이스(110)는 미디어 플레이어(120), 스트리밍 비디오 재생 시스템(130), 및 데이터 저장소(140)를 포함한다. 클라이언트 디바이스(110)의 다른 실시예들은 인터넷 관련된 프로토콜들(예컨대, TCP/IP 및 HTTP)을 통해 통신하도록 적응된 다른 엘리먼트(element)들 또는 다른 컴퓨터 모듈들을 가질 수도 있다. 클라이언트 디바이스(110)는 사용자가 비디오 컨텐츠를 시청할 수도 있는 디스플레이 디바이스와의 인터페이스들을 포함할 수도 있다.
미디어 플레이어(120)는 클라이언트 디바이스(110)의 사용자가 디지털 컨텐츠를 시청하도록 해준다. 일 실시예에서, 미디어 플레이어(120)는 컨텐츠 공유 서비스(160)에 의해 서빙된 디지털 컨텐츠를 액세스할 수 있고, 취출할 수 있고, 제시할 수 있고, 내비게이팅할 수 있는 웹 브라우저이다. 미디어 플레이어(120)는 디지털 컨텐츠를 사용자에게 렌더링할 수도 있고, 디스플레이할 수도 있고, 제시할 수도 있다. 미디어 플레이어(120)는 또한, 웹 페이지에서 내장되는 내장된 미디어 플레이어(예컨대, Flash® 플레이어 또는 HTML5 플레이어)일 수도 있다. 또 다른 예에서, 미디어 플레이어(120)는 사용자들이 디지털 미디어 항목들(예컨대, 디지털 비디오들, 디지털 이미지들, 및 전자 책들)을 시청하도록 해주는 단독형 애플리케이션일 수도 있다. 또 다른 예에서, 미디어 플레이어(120)는 이동 오퍼레이팅 시스템에 의해 제공된 프레임워크(예컨대, 애플리케이션 프로그램 인터페이스들(application program interfaces)(APIs)의 세트)이다.
일 실시예에서, 미디어 플레이어(120)는 스트리밍 비디오들에 대한 요청들을 컨텐츠 공유 서비스(160)로 전송하고, 재생들을 위한 요청된 스트리밍 비디오들의 비디오 세그먼트들을 획득한다. 미디어 플레이어(120)는 획득된 스트리밍 비디오 컨텐츠를 데이터 저장소(140)에서 캐시하고, 클라이언트 디바이스(110)의 디스플레이 디바이스 상에서 스트리밍 비디오 컨텐츠를 재생한다. 또 다른 실시예에서, 스트리밍 비디오 재생 시스템(130)은 미디어 플레이어(120)가 스트리밍 비디오들에 대한 요청들을 전송하고 요청된 스트리밍 비디오 컨텐츠를 획득하기 위한 프록시로서 기능한다.
데이터 저장소(140)는 클라이언트 디바이스(110) 상에서의 재생들을 위한 비디오 컨텐츠 및/또는 메타데이터를 저장한다. 일 실시예에서, 데이터 저장소(140)는 메모리들, 테이프들, 및 디스크들과 같은 하나 이상의 컴퓨터 기록가능한 지속형 저장 디바이스들을 포함한다. 디바이스들의 예들은 컴퓨터 서버들, 메인프레임 컴퓨터들, 네트워크화된 컴퓨터들, 프로세스-기반 디바이스들, 및 유사한 타입의 시스템들 및 디바이스들을 포함할 수도 있지만, 그것으로 제한되지는 않는다. 일 실시예에서, 데이터 저장소(140)는 컨텐츠 공유 서비스(160)로부터 스트리밍된 비디오 컨텐츠 및 대응하는 메타데이터를 저장한다.
클라이언트 디바이스(110)는 스트리밍 비디오 컨텐츠의 재생을 용이하게 하기 위한 스트리밍 비디오 재생 시스템(130)을 포함할 수 있다. 스트리밍 비디오 재생 시스템(130)은 미디어 플레이어(120)의 사용자로부터 스트리밍 비디오에 대한 요청들을 검출하고, 컨텐츠 공유 서비스(160) 또는 데이터 저장소(140)로부터 요청된 비디오의 비디오 세그먼트들을 페치하고, (아직 개시되지 않았을 경우) 비디오 세그먼트들을 데이터 저장소(140)에 저장하거나 캐시하고, 비디오 세그먼트들을 재생하기 위한 미디어 플레이어(120)에 제공한다. 스트리밍 비디오 재생 시스템(130)은 도 2 내지 도 5를 참조하여 추가로 설명된다.
도 2는 일 실시예에 따른 예시적인 스트리밍 비디오 재생 시스템(130)이다. 도 2에서 예시된 실시예에서, 스트리밍 비디오 재생 시스템(130)은 프록시 서버(210) 및 로컬 데이터 저장장치(220)를 가진다. 일 실시예에서, 스트리밍 비디오 재생 시스템(130)은 로컬 데이터 저장장치(220)를 포함하지 않을 수도 있고, 프록시 서버(210)는 획득된 스트리밍 컨텐츠 또는 메타데이터를 저장하기 위하여 데이터 저장소(140)를 이용한다. 프록시 서버(210)는 클라이언트 디바이스(110)의 미디어 플레이어(120)에 의해 전송된 스트리밍 비디오들에 대한 요청들을 검출하고, 미디어 플레이어(120)를 대신하여 요청들을 전송한다. 프록시 서버(210)는 컨텐츠 공유 서비스(160)로부터 (예컨대, 요청된 스트리밍 비디오 컨텐츠를 다운로드함으로써) 요청된 스트리밍 비디오 컨텐츠를 획득하고, 획득된 스트리밍 비디오 컨텐츠를 로컬 데이터 저장장치(220)에 저장한다.
로컬 데이터 저장장치(220)는 요청된 스트리밍 비디오들 및 대응하는 메타데이터의 비디오 컨텐츠를 저장한다. 일 실시예에서, 요청된 스트리밍 비디오에 대하여, 로컬 데이터 저장장치(220)는 요청된 비디오의 부분적인 또는 전체적인 컨텐츠를 저장한다. 비디오 컨텐츠의 일부분은 하나 이상의 비디오 세그먼트들로서 저장되고; 각각의 비디오 세그먼트는 스트리밍 비디오의 다수의 비디오 프레임들을 가지고, 각각의 비디오 세그먼트는 스트리밍 비디오의 일부, 예컨대, 각각 10초에 대응한다. 스트리밍 비디오의 비디오 세그먼트는 세그먼트 식별정보(ID)에 의해 식별된다. 스트리밍 비디오의 비디오 세그먼트는 또한, 스트리밍 비디오에서의 그 위치, 예컨대, 미디어 플레이리스트 상의 스트리밍 비디오의 10번째 세그먼트를 표시하는 인덱스를 가질 수 있다.
로컬 데이터 저장장치(220)는 또한, 각각의 요청된 스트리밍 비디오에 대한 매니페스트 파일(들)의 로컬 생성을 위하여 필요한 메타데이터를 저장한다. 예를 들어, 스트리밍 비디오에 대한 메타데이터는 각각의 비디오 세그먼트에 대한 기간, 스트리밍 비디오의 전체적인 기간, 비디오 코딩에 대한 메타데이터(예컨대, MIME 타입), 및 다른 정보를 포함할 수도 있다. 프록시 서버(210)에 의해 생성된 스트리밍 비디오의 매니페스트 파일은 스트리밍 비디오의 URL을 제공하는 마스터 플레이리스트를 포함하고, URL은 컨텐츠 공유 서비스(160)에서의 로케이션, 또는 스트리밍 비디오를 다운로드하기 위한 프록시 서버(210)에서의 로케이션을 식별한다. 매니페스트 파일(들)은 하나 이상의 미디어 플레이리스트들을 추가적으로 포함할 수도 있고, 이 미디어 플레이리스트들의 각각은 특정한 시각적 품질의 스트리밍 비디오의 표현을 식별한다. 예를 들어, 스트리밍 비디오가 3 개의 해상도들, 예컨대, 240p, 360p, 및 480p에서 이용가능할 경우, 매니페스트는 3 개의 미디어 플레이리스트들을 포함할 수도 있고, 이 미디어 플레이리스트들의 각각은 3 개의 해상도들 중의 하나에서 스트리밍 비디오를 표현한다. 매니페스트 파일은 미디어 플레이리스트 상에서의 스트림 비디오의 비디오 세그먼트들의 리스트를 더 포함할 수도 있다.
도 2에서 예시된 프록시 서버(210)는 모니터링 모듈(212), 매니페스트 생성 모듈(214), 스트림 선택 모듈(216), 및 컨텐츠 인덱스 모듈(218)을 가진다. 프록시 서버(210)는 컨텐츠 공유 서비스(160)로부터 미디어 플레이어(120)로의 스트리밍 비디오에 대한 HTTP 라이브 스트리밍 프로토콜을 지원한다. 프록시 서버(210)의 다른 실시예들은 상이한 통신 프로토콜들을 통한 상이하거나 추가적인 모듈들을 가질 수 있다.
모니터링 모듈(212)은 미디어 플레이어(120)와 컨텐츠 공유 서비스(160) 사이의 통신들을 모니터링한다. 일 실시예에서, 모니터링 모듈(212)은 미디어 플레이어(120)로부터 컨텐츠 공유 서비스(160)로의 스트리밍 비디오들에 대한 요청들을 차단한다. 미디어 플레이어(120)로부터의 스트리밍 비디오에 대한 요청은 요청된 스트리밍 비디오를 식별한다. 스트리밍 비디오에 대한 요청을 차단 시에, 모니터링 모듈(212)은 요청된 비디오의 스트리밍 데이터를 요청하기 위하여 컨텐츠 공유 서비스(160)와 원래의 요청 또는 수정된 원래의 요청을 통신하여, 예컨대, 애플리케이션 프로그래밍 인터페이스(API) 기능 호출을 컨텐츠 공유 서비스(160)에 발행한다. 컨텐츠 공유 서비스(160)로부터 요청된 스트리밍 데이터를 수신하는 것에 응답하여, 모니터링 모듈(212)은 추가의 프로세싱을 위하여, 수신된 스트리밍 데이터를 매니페스트 생성 모듈(214)에 제공한다.
일 실시예에서, 요청된 스트리밍 데이터는 스트리밍 비디오와 연관된 인덱스 파일의 로케이션 표시자(예컨대, URL)를 포함한다. 스트리밍 비디오와 연관된 인덱스 파일은 컨텐츠 공유 서비스(160)에서 위치되고, 인덱스 파일은 요청된 스트리밍 비디오의 실제적인 미디어 컨텐츠를 지시하는 URL들을 포함하는 플레이리스트들의 리스트를 포함한다. 인덱스 파일은 마스터 플레이리스트 파일로서 또한 지칭된다.
요청된 스트리밍 데이터는 또한, 요청된 스트리밍 비디오와 연관된 하나 이상의 미디어 플레이리스트들을 포함할 수도 있다. 요청된 스트리밍 비디오와 연관된 각각의 미디어 플레이리스트는 특정한 시각적 품질의 스트리밍 비디오의 하나의 이용가능한 표현을 식별한다. 표현들은 상이한 오디오 표현들을 마찬가지로 포함할 수도 있다. 품질에 있어서의 차이들에 추가하여, 대안적인 표현들은 (오디오 표현들을 위한) 대안적인 언어 트랙들 또는 (시각적 표현들을 위한) 상이한 카메라 각도들을 포함할 수도 있다. 스트리밍 비디오의 시각적 품질은 비트 레이트, 해상도, 초 당 프레임들의 수, 인코딩 포맷, 피크 신호-대-잡음 비율(peak signal-to-noise ratio)(PSNR), 또는 다른 시각적 특징들의 측면에서 측정될 수 있다. 예를 들어, 요청된 비디오가 3 개의 해상도들, 예컨대, 240p, 360p, 및 480p에서 이용가능할 경우, 요청된 스트리밍 데이터는 각각의 해상도에 대하여 하나인 3 개의 미디어 플레이리스트들을 포함할 수도 있다. 요청된 스트리밍 데이터는 또한, 요청된 스트리밍 비디오의 다른 메타데이터, 예컨대, 스트리밍 데이터가 암호화될 경우에 암호화 키들을 포함할 수도 있다.
일 실시예에서, 모니터링 모듈(212)은 미디어 플레이어(120)로부터의 스트리밍 비디오에 대한 요청의 파일 포맷을, 스트리밍 데이터의 더 많은 간결한 표현 또는 용이한 파싱을 위한 상이한 파일 포맷으로 변환한다. 파일 포맷 변환은 프록시 서버(210)가 요청의 원래의 포맷과는 상이한 포맷의 스트리밍 데이터를 요청하는 것을 가능하게 한다. 예를 들어, 미디어 플레이어(120)로부터 컨텐츠 공유 서비스(160)로의 스트리밍 비디오에 대한 요청은 HLS 프로토콜의 표준 ".m3u8" 파일 포맷으로 되어 있다. 모니터링 모듈(212)은 ".m3u8" 파일 포맷을, 스트리밍 데이터를 수신하기 위한 내부 표현, 예컨대, 포맷에 있어서 더욱 간결하고 스트리밍 데이터를 수신하기 위하여 송신하기 위한 더 적은 대역폭을 요구하는 프로토콜 버퍼 표현으로 변환한다.
매니페스트 생성 모듈(214)은 스트리밍 비디오와 연관된 요청된 스트리밍 데이터를 수신하고, 요청된 스트리밍 데이터에 대한 매니페스트 파일을 생성한다. 일 실시예에서, 매니페스트 파일은 요청된 스트리밍 비디오에 대한 마스터 플레이리스트의 URL을 포함한다. 또 다른 실시에에서, 매니페스트 파일은 요청된 스트리밍 비디오에 대한 마스터 플레이리스트 및 스트리밍 비디오와 연관된 미디어 플레이리스트들의 URL을 포함한다. 또 다른 실시예에서, 매니페스트 파일은 마스터 플레이리스트, 요청된 스트리밍 비디오에 대한 미디어 플레이리스트들, 및 요청된 스트리밍 비디오와 연관된 비디오 세그먼트들의 리스트의 URL을 포함한다.
일 실시에에서, 매니페스트 생성 모듈(214)은 수신된 스트리밍 데이터의 파일 포맷과는 상이한 파일 포맷으로 된 스트리밍 비디오에 대한 매니페스트 파일을 생성한다. 예를 들어, 컨텐츠 공유 서비스(160)로부터의 수신된 스트리밍 데이터는 더욱 간결한 표현 및 효율적인 송신을 위한 내부 파일 포맷으로 되어 있다. 매니페스트 생성 모듈(214)은 내부 파일 포맷을 ".m3u8" 파일 포맷, 또는 미디어 플레이어(120)에 의해 이해된 파일 포맷으로 변환한다. 프록시 서버(210)에서 로컬 방식에서 스트리밍 비디오에 대한 매니페스트 파일을 생성하는 것은 미디어 플레이어(120)로부터 컨텐츠 공유 서비스(160)로의 라운드 트립들의 수를 감소시키고, 이것은 궁극적으로, 스트리밍 비디오 컨텐츠를 재생하기 위한 레이턴시를 감소시킨다.
스트림 선택 모듈(216)은 미디어 플레이어(120)의 사용자들이 스트리밍 비디오 품질, 스트리밍 비디오 컨텐츠 재생들로 사용자 경험을 개량하는 특징을 제어하는 것을 가능하게 한다. 특히, 스트리밍 선택 모듈(216)은 미디어 플레이어(120)의 사용자들이 어느 비디오 세그먼트들을 페치하거나 다운로드할 것인지와, 비디오 세그먼트들을 언제 페치할 것인지를 제어하도록 해준다. 일 실시예에서, 스트리밍 선택 모듈(216)은 요청된 스트리밍 비디오의 이용가능한 표현들의 리스트를 제시하는 사용자 인터페이스를 제공한다. 요청된 스트리밍 비디오의 이용가능한 표현들은 요청된 비디오의 상이한 시각적 품질들을 표현한다. 예를 들어, 높은 해상도에서의 스트리밍 비디오의 표현은 일반적으로 높은 시각적 품질을 표현한다. 스트리밍 선택 모듈(216)은 사용자 인터페이스를 통해, 요청된 스트리밍 비디오의 시각적 품질의 사용자 선택을 수신하고, 컨텐츠 공유 서비스(160)로부터, 사용자 선택된 시각적 품질을 가지는 비디오 세그먼트들을 페치한다. 예를 들어, 이용가능한 해상도들 중에서 높은 해상도의 사용자 선택에 응답하여, 스트리밍 선택 모듈(216)은 요청된 해상도를 가지는 비디오 세그먼트들을 페치한다.
스트리밍 선택 모듈(216)은 적응적 비트 레이트 스트리밍을 지원한다. 일 실시예에서, 스트리밍 선택 모듈(216)은 네트워크 상태들, 예컨대, 네트워크 접속 속도 및 스트리밍 데이터 패킷들의 손실 레이트에 기초하여 요청된 비디오의 시각적 품질의 사용자 선택을 증강시킨다. 높은 시각적 품질 스트리밍 데이터이지만, 열악한 네트워크 접속의 사용자 선택에 응답하여, 스트리밍 선택 모듈(216)은 재생을 위한 더 낮은 시각적 품질의 비디오 세그먼트들을 페치할 수도 있다. 스트리밍 선택 모듈(216)은 네트워크 상태가 더욱 양호한 미래의 어떤 시점에서 높은 시각적 품질의 비디오 세그먼트들을 페치하고 캐시할 수도 있고, 필요할 경우에 후속 재생들을 위하여, 낮은 시각적 품질의 비디오 세그먼트들을 대응하는 높은 시각적 품질의 비디오 세그먼트들로 대체할 수도 있다.
스트리밍 비디오 컨텐츠 재생으로 사용자 경험을 추가로 개량하기 위하여, 스트리밍 선택 모듈(216)은 요청된 스트리밍 비디오의 시각적 품질의 타입을 표시하는, 미디어 플레이리스트를 갖는 마스터 플레이리스트를 제공한다. 미디어 플레이리스트에 의해 표시된 요청된 스트리밍 비디오는 고정된 비트레이트 비디오 스트림이 아니라, 미디어 플레이리스트 내에 포함된 각각의 비디오 세그먼트 URL이 프록시 서버(210)를 지시하는 프록시된 플레이리스트이다. 스트리밍 선택 모듈(216)은 특정한 위치에서의 비디오 세그먼트가 페치되는 시간에서, 요청된 스트리밍 비디오의 어느 표현을 선택할 것인지의 결정을 행할 수 있다. 스트리밍 선택 모듈(216)은 컨텐츠 공유 서비스(160)로부터, 또는 로컬 데이터 저장소(140)로부터 선택된 표현에 대한 비디오 세그먼트를 다운로드하고, 비디오 세그먼트를 미디어 플레이어(120)에 서빙한다.
프록시 서버(210)는 스트리밍 선택 모듈(216)을 통해, 비디오 스트림 선택 선택권 및 미디어 플레이어(120)로부터의 비디오 세그먼트 페치들에 대한 제어를 제거함으로써 요청된 스트리밍 비디오 컨텐츠에 대한 사용자 제어를 가능하게 한다. 예를 들어, 요청된 스트리밍 비디오에 대한 제공된 마스터 플레이리스트는 단일 오디오 및 단일 비디오 표현을 오직 포함한다. 미디어 플레이어로부터의 모든 선택권을 없앰으로써, 그것은 프록시 서버(210)가 오디오 또는 비디오 요청을 차단하고 어느 미디어 표현을 치환할 것인지를 선택하도록 해준다. 추가적으로, 위에서 설명된 바와 같은 미디어 플레이리스트를 갖는 마스터 플레이리스트를 제공하는 것은 다음의 장점들을 스트리밍 비디오의 사용자들에게 또한 제공한다:
● 수동적 시각적 품질 선택 - 스트리밍 선택 모듈(216)은 HLS 스트리밍 프로토콜에 대한 기존의 적응적 비트 레이트 제어 로직이 아니라 사용자 입력에 기초하여 특정한 시각적 품질을 선택할 수도 있다.
● 비디오 세그먼트 페치에 대한 낮은 레이턴시 - 스트리밍 선택 모듈(216)은 레이턴시를 감소시키기 위하여 네트워크를 통해 비디오 세그먼트들을 다운로드하는 대신에, 로컬 저장장치/캐시에 저장된 프리-페치된 비디오 세그먼트들을 서빙하도록 선택할 수도 있다.
● 버퍼링 거동에 대한 제어 - 스트리밍 선택 모듈(216)은 비디오 세그먼트들이 연관된 스트리밍 비디오에 대한 요청에서 식별될 때에 비디오 세그먼트들을 프리-페치할 수도 있고, 재생을 위하여 요청될 때에 로컬 저장장치로부터 프리-페치된 비디오 세그먼트들을 서빙할 수도 있다.
● 스트리밍 비디오들에 대한 요청들의 더욱 양호한 스케줄링을 통한 더욱 양호한 배터리 이용 - 스트리밍 선택 모듈(216)은 미래의 재생들을 위한 다수의 비디오 세그먼트들에 추가하여, 순간적인 재생들을 위한 다수의 비디오 세그먼트들을 프리-페치할 수도 있다. 스트리밍 선택 모듈(216)에 의한 비디오 세그먼트들의 프리-페치는 클라이언트 디바이스(110)의 배터리를 더욱 양호하게 이용하고, 이에 따라 배터리 수명을 개선시킨다.
컨텐츠 인덱스 모듈(218)은 라이브 스트리밍 비디오와 연관된 미디어 플레이리스트에서 최후 비디오 세그먼트를 추적하고, 미디어 플레이리스트 리프레시(refresh)들의 비용(cost)을 감소시킨다. 일 실시예에서, 컨텐츠 인덱스 모듈(218)은 컨텐츠 공유 서비스(160)와의 상호작용들에 기초하여 미디어 플레이리스트 상의 각각의 비디오 세그먼트에 대한 인덱스를 배정하고, 미디어 플레이리스트의 내부 표현에서 최후 비디오 세그먼트의 인덱스를 레코딩한다. 비디오 세그먼트의 인덱스는 비디오의 전체적인 기간에 대한 비디오 세그먼트의 시간 스탬프(time stamp)에 의해 표현될 수도 있다. 컨텐츠 공유 서비스(160)는 라이브 스트리밍의 전체 기간, 라이브 스트리밍의 시작 시간, 및 라이브 스트리밍 비디오와 연관된 시간 스탬프들을 수신한다. 컨텐츠 공유 서비스(160)는 미디어 플레이리스트 상의 최후 비디오 세그먼트에 대한 시간 스탬프 또는 인덱스를 결정하고, 이러한 결정을 컨텐츠 인덱스 모듈(218)에 제공한다. 컨텐츠 인덱스 모듈(218)은 새로운 비디오 세그먼트들에 대하여 요청할 때에 최후 비디오 세그먼트의 인덱스에 대한 업데이트를 위하여 컨텐츠 공유 서비스(160)에 질의할 수도 있고, 컨텐츠 공유 서비스(160)는 오직 새로운 비디오 세그먼트들(즉, 스트리밍 비디오의 최후 비디오 세그먼트 및 후속 비디오 세그먼트들)을 프록시 서버(210)에 반환한다.
프록시 서버(210)는 컨텐츠 인덱스 모듈(218)을 통해, DVR-가능 라이브 비디오 스트리밍의 성능을 개선시킨다. DVR-가능 라이브 스트림은 클라이언트 디바이스가 시간에 있어서 역으로 탐색할 수도 있는 비디오 스트림이다. DVR-가능 라이브 비디오 스트리밍을 지원하기 위하여, 각각의 미디어 플레이리스트는 클라이언트 디바이스가 탐색할 수도 있는 비디오 세그먼트들의 전체적인 세트를 포함해야 한다. 라이브 비디오 스트림이 길 경우(예컨대, 몇 시간), 이것은 다운로드되고 저장되어야 할 대량의 데이터를 표현한다. 라이브 재생들 동안, 클라이언트 디바이스는 새로운 세그먼트들에 대하여 몇 초마다 라이브 미디어 플레이리스트를 재-페치해야 한다. 프록시 서버(210)는 최후 비디오 세그먼트의 인덱스를 이용하여 컨텐츠 공유 서비스(160)로 송신되는 미디어 플레이리스트의 크기를 감소시키고, 더 큰 탐색 윈도우를 갖는 DVR-가능 라이브 비디오 스트리밍을 가지는 것을 실현가능하게 한다.
도 3은 일 실시예에 따른 스트리밍 비디오 재생 시스템(130)에 의해 스트리밍 비디오 재생을 개량하기 위한 프로세스를 예시하는 플로우차트이다. 먼저, 스트리밍 비디오 재생 시스템(130)은 클라이언트 디바이스의 미디어 플레이어, 예컨대, 클라이언트 디바이스(110)의 미디어 플레이어(120)로부터의 스트리밍 비디오에 대한 요청을 차단한다(320). 요청은 요청된 스트리밍 비디오, 예컨대, 스트리밍 비디오의 URL을 식별한다. 스트리밍 비디오 재생 시스템(130)은 예컨대, 스트리밍 비디오 재생 시스템(130)이 더욱 간결한 표현에 ?나 상이한 파일 포맷으로 된 스트리밍 데이터를 수신할 수 있도록 요청의 파일 포맷을 변환하여 요청을 프로세싱하고, 프로세싱된 요청을 컨텐츠 공유 서비스, 예컨대, 도 1에서의 컨텐츠 공유 서비스(160)로 전송한다(320).
스트리밍 비디오 재생 시스템(130)은 컨텐츠 공유 서비스로부터 스트리밍 메타데이터를 수신한다(330). 스트리밍 메타데이터는 마스터 플레이리스트의 형태로 된 스트리밍 비디오의 URL을 포함할 수도 있다. 마스터 플레이리스트는 하나 이상의 미디어 플레이리스트들을 포함하고, 이 미디어 플레이리스트들의 각각은 특정한 시각적 품질에서의 스트리밍 비디오의 표현에 대응한다. 스트리밍 비디오 재생 시스템(130)은 수신된 스트리밍 메타데이터에 기초하여 매니페스트 파일을 생성한다(340). 매니페스트 파일은 마스터 플레이리스트, 미디어 플레이리스트, 및 미디어 플레이리스트와 연관된 비디오 세그먼트들의 리스트를 포함할 수도 있다. 스트리밍 비디오 재생 시스템(130)은 요청된 스트리밍 비디오의 비디오 세그먼트들을 다운로드하기 위하여 매니페스트 파일을 요청하는 미디어 플레이어에 제공한다(350). 대안적으로, 스트리밍 비디오 재생 시스템(130)은 미디어 플레이어에 대한 프록시로서 작동하고, 미디어 플레이어를 위한 비디오 세그먼트들을 다운로드한다.
어느 비디오 세그먼트들을 페치할 것인지와 이들을 언제 페치할 것인지의 측면에서 스트리밍 비디오 재생들에 대한 사용자 제어를 가능하게 하기 위하여, 스트리밍 비디오 재생 시스템(130)은 적응적 비트 레이트 스트리밍을 이용하여 스트리밍 비디오의 적절한 표현을 결정한다. 스트리밍 비디오 재생 시스템(130)은 사용자 입력 또는 네트워크 상태들에 기초하여 결정을 행할 수도 있다. 스트리밍 비디오의 적절한 표현은 클라이언트 디바이스 상에서의 스트리밍 비디오의 재생들을 위한 바람직한 시각적 품질을 가진다.
스트리밍 비디오 재생 시스템(130)은 결정된 표현에서의 스트리밍 비디오에 대한 미디어 플레이리스트의 최후 비디오 세그먼트를 또한 추적한다(370). 스트리밍 비디오 재생 시스템(130)은 컨텐츠 공유 서비스(160)와의 상호작용들에 기초하여 최후 비디오 세그먼트로의 인덱스를 배정할 수 있다. 스트리밍 비디오 재생 시스템(130)은 컨텐츠 공유 서비스로의 새로운 세그먼트들에 대한 요청에서 스트리밍 비디오의 최후 비디오 세그먼트 및 결정된 표현으로의 인덱스를 포함한다(380). 최후 비디오 세그먼트를 추적하는 것은 스트리밍 비디오 재생 시스템(130)이 스트리밍 비디오 재생 시스템(130)에 의해 다운로드되지 않았던 오직 새로운 비디오 세그먼트들을 요청하도록 해주고, 개선된 성능을 갖는 DVR-가능 라이브 비디오 스트리밍을 가능하게 한다.
도 4는 일 실시예에 따른 스트리밍 비디오 재생 시스템(130)에 의해 스트리밍 비디오 재생을 개량하는 동작을 예시하는 상호작용 도면이다. 도 4에서 예시된 실시예에서, 스트리밍 비디오 재생 시스템(130)은 클라이언트 디바이스의 미디어 플레이어(120)에 대한 프록시 서버(210)를 가진다. 미디어 플레이어(120)는 스트리밍 데이터에 대한 요청들을 컨텐츠 공유 서비스(160)로 전송한다. 프록시 서버(210)는 미디어 플레이어(120)에 대한 프록시로서, 컨텐츠 공유 서비스(160)와 통신한다.
미디어 플레이어(120)는 스트리밍 비디오에 대한 요청을 컨텐츠 공유 서비스(160)로 전송한다(402). 프록시 서버(210)는 요청을 차단하고(404), 요청을 프로세싱하고(406), 프로세싱된 요청을 컨텐츠 공유 서비스(160)로 전송한다(408). 프록시 서버(210)가 요청의 간결한 표현을 위한 내부 표현 파일 포맷으로 된 스트리밍 데이터를 수신할 수 있도록, 프록시 서버(210)는 요청의 파일 포맷(예컨대, m3u8)을 변환할 수도 있다. 프록시 서버(210)는 미디어 플레이어(120)로부터의 요청을 또한 프로세싱할 수도 있어서, 프로세싱된 요청은 컨텐츠 공유 서비스(160)로의 API 기능들 호출들을 위하여 적당하다.
프록시 서버(210)는 컨텐츠 공유 서비스(160)로부터 스트리밍 데이터를 수신하고(410), 여기서, 스트리밍 데이터는 URL에 의해 식별된 마스터 플레이리스트 및 하나 이상의 미디어 플레이리스트들을 포함한다. 각각의 미디어 플레이리스트는 예를 들어, 스트리밍 비디오의 비트 레이트, 해상도, 및 다른 시각적 특징들에 의해 측정된 특정한 시각적 품질에서의 이용가능한 스트리밍 비디오를 표현한다. 각각의 미디어 플레이리스트는 스트리밍 비디오의 대응하는 표현의 비디오 세그먼트들에 대한 URL들의 리스트를 포함한다.
프록시 서버(210)는 사용자 입력 또는 네트워크 상태(예컨대, 컨텐츠 공유 서비스(160)로부터 비디오를 스트리밍하기 위한 현재의 비트 레이트)에 기초하여 미디어 플레이리스트를 선택한다(412). 대안적으로, 프록시 서버(210)는 매니페스트 파일 내의 스트리밍 비디오의 모든 이용가능한 미디어 플레이리스트들을 포함할 수도 있다. 프록시 서버(210)는 선택된 미디어 플레이리스트에 기초하여 매니페스트 파일을 생성하고(414), 매니페스트 파일을 미디어 플레이어(120)로 전송한다(416).
미디어 플레이어(120)는 프록시 서버(210)에 의해 선택된 미디어 플레이리스트에 대한 요청을 전송한다(418). 프록시 서버(210)는 요청을 차단하고, 요청을 컨텐츠 공유 서비스(160)로 전송한다(420). 컨텐츠 공유 서비스(160)로부터 요청된 미디어 플레이리스트를 수신(422)할 시에, 프록시 서버(210)는 미디어 플레이리스트를 미디어 플레이어(120)로 전송하고(424), 여기서, 미디어 플레이리스트는 스트리밍 비디오의 비디오 세그먼트들의 URL들의 리스트를 포함한다.
미디어 플레이어(120)는 미디어 플레이리스트 상의 최초 비디오 세그먼트에 대한 요청을 전송하고(426), 여기서, 요청은 컨텐츠 공유 서비스(160)로부터 최초 비디오 세그먼트를 다운로드하기 위한 URL을 식별한다. 프록시 서버(210)는 요청을 차단하고, 요청을 컨텐츠 공유 서비스(160)로 전송한다(428). 컨텐츠 공유 서비스(160)로부터 최초 비디오 세그먼트를 수신(430)할 시에, 프록시 서버(210)는 최초 비디오 세그먼트를 로컬 저장장치 내에 저장하거나, 재생을 위하여 최초 비디오 세그먼트를 미디어 플레이어(120)로 전송한다(432).
스트리밍 비디오 재생 시스템(130)은 클라이언트 디바이스의 미디어 플레이어를 위한 스트리밍 비디오와 연관된 매니페스트 파일을 로컬 방식으로 생성한다. 매니페스트 파일은 클라이언트 디바이스 상에서 로컬 방식으로 HLS 기반 마스터 플레이리스트들 및 미디어 플레이리스트들을 생성하기 위하여 필요한 메타데이터를 제공하므로, 로컬 방식으로 생성된 매니페스트 파일은 미디어 플레이어를 위한 기동 시간을 감소시킨다. 로컬 방식으로 생성된 매니페스트 파일은 또한, 스트리밍 비디오의 비디오 세그먼트들의 프리-페치 및 재생 동안의 캐싱을 가능하게 함으로써 더욱 양호한 적응적 비트 레이트 제어를 제공한다. 스트리밍 비디오 재생 시스템(130)은 최후의 비디오 세그먼트의 인덱스를 이용하여 컨텐츠 공유 서비스로 송신되는 미디어 플레이리스트의 크기를 감소시키고, 더 큰 탐색 윈도우를 갖는 DVR-가능 라이브 비디오 스트리밍을 가지는 것을 실현가능하게 한다.
상기 설명은 바람직한 실시예들의 동작을 예시하기 위하여 포함되고, 발명의 범위를 제한하도록 의도된 것은 아니다. 발명의 범위는 다음의 청구항들에 의해서만 제한되어야 한다. 상기 논의로부터, 발명의 사상 및 범위에 의해 더욱 망라될 많은 변형들이 본 기술분야의 통상의 기술자에게 명백할 것이다.

Claims (30)

  1. 비디오 컨텐츠를 재생하기 위한 컴퓨터-구현 방법으로서,
    프록시 서버에 의해, 미디어 플레이어로부터 컨텐츠 공유 서비스로의 비디오에 대한 제1 파일 포맷으로 된 요청을 검출하는 단계;
    상기 프록시 서버에 의해, 상기 요청을 상기 제1 파일 포맷으로부터 제2 파일 포맷으로 수정하는 단계 - 상기 제2 파일 포맷으로 된 스트리밍 데이터는 상기 컨텐츠 공유 서비스로부터 상기 스트리밍 데이터를 송신하기 위해 상기 제1 파일 포맷에서 요구되는 것보다 더 적은 대역폭을 요구함 - ;
    상기 미디어 플레이어를 대신하여 상기 프록시 서버에 의해, 상기 비디오에 대한 상기 수정된 요청을 상기 컨텐츠 공유 서비스에 제공하는 단계;
    상기 프록시 서버에 의해, 상기 수정된 요청에 응답하여 상기 컨텐츠 공유 서비스로부터 상기 제2 파일 포맷으로 된 상기 비디오와 연관된 스트리밍 데이터를 수신하는 단계;
    상기 프록시 서버에 의해, 상기 컨텐츠 공유 서비스로부터 수신된 상기 비디오와 연관된 상기 수신된 스트리밍 데이터에 기초하여 매니페스트 파일을 생성하는 단계 - 상기 매니페스트 파일은 상기 요청된 비디오와 연관된 마스터 플레이리스트 및 복수의 미디어 플레이리스트를 포함하고, 상기 마스터 플레이리스트는 단일 표현에서의 상기 요청된 비디오의 유니버셜 자원 로케이터(URL)를 포함하며, 상기 복수의 미디어 플레이리스트의 각각의 미디어 플레이리스트는 특정한 시각적 품질에서의 상기 요청된 비디오의 표현을 식별하고 상기 요청된 비디오의 상기 표현에 대한 복수의 비디오 세그먼트를 포함함 - ;
    상기 프록시 서버에 의해, 상기 요청된 비디오의 컨텐츠를 다운로드하기 위하여 상기 매니페스트 파일을 상기 미디어 플레이어에 제공하는 단계; 및
    상기 미디어 플레이어가 상기 요청된 비디오의 비디오 세그먼트를 페치하는 것(fetching)에 응답하여, 상기 프록시 서버에 의해, 상기 복수의 미디어 플레이리스트로부터 선택하기 위해 상기 요청된 비디오의 표현을 결정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 비디오와 연관된 상기 스트리밍 데이터는 상기 컨텐츠 공유 서비스에 의해 제공된 상기 비디오의 유니버셜 자원 로케이터(universal resource locator)(URL)를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 프록시 서버에 의해, 상기 비디오와 연관된 상기 수신된 스트리밍 데이터에 기초하여 상기 매니페스트 파일을 생성하는 단계는,
    상기 요청된 비디오와 연관된 하나 이상의 플레이리스트들을 생성하기 위하여 상기 수신된 스트리밍 데이터를 파싱하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 복수의 미디어 플레이리스트의 미디어 플레이리스트는 상기 미디어 플레이리스트에 의해 식별된 상기 비디오의 비디오 세그먼트들의 로케이션들의 리스트를 포함하고, 비디오 세그먼트는 상기 비디오의 컨텐츠의 일부분을 표현하는, 방법.
  5. 제1항에 있어서,
    상기 요청된 비디오의 상기 시각적 품질은 상기 요청된 비디오와 연관된 하나 이상의 시각적 특징들에 의해 측정되고, 상기 시각적 특징들은:
    상기 비디오를 표현하기 위한 비트 레이트;
    상기 비디오의 해상도;
    초 당 프레임들의 수;
    상기 비디오의 인코딩 포맷; 및
    상기 비디오의 피크 신호-대-잡음 비율 중의 적어도 하나를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 비디오와 연관된 상기 복수의 미디어 플레이리스트들은 HTTP 라이브 스트리밍(HTTP Live Streaming)(HLS) 포맷으로 되어 있고, HLS 스트리밍 프로토콜에 의해 지원되는, 방법.
  7. 제1항에 있어서,
    상기 프록시 서버에 의해, 상기 요청된 비디오의 표현을 결정하는 단계는,
    상기 프록시 서버에 의해, 상기 미디어 플레이어의 사용자로부터의 입력에 기초하여 상기 요청된 비디오의 표현을 결정하는 단계; 및
    상기 프록시 서버에 의해, 상기 결정된 표현에서의 상기 비디오의 상기 비디오 세그먼트들을 스트리밍하기 위한 현재의 비트 레이트에 기초하여 상기 표현을 적응적으로 업데이트하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 프록시 서버에 의해, 결정된 표현에서의 상기 비디오의 최후 비디오 세그먼트의 인덱스를 추적하는 단계;
    상기 프록시 서버에 의해, 상기 결정된 표현에서의 상기 비디오의 비디오 세그먼트들에 대한 상기 미디어 플레이어로부터의 요청을 검출하는 단계;
    상기 프록시 서버에 의해, 상기 비디오 세그먼트들에 대한 수정된 요청 - 상기 수정된 요청은 상기 결정된 표현에서의 상기 최후 비디오 세그먼트의 상기 인덱스를 포함함 - 을 상기 컨텐츠 공유 서비스에 제공하는 단계;
    상기 프록시 서버에 의해, 상기 컨텐츠 공유 서비스로부터 하나 이상의 비디오 세그먼트들을 수신하는 단계 - 상기 수신된 비디오 세그먼트들은 상기 최후 비디오 세그먼트에 의해 표현된 상기 컨텐츠에 후속하는 상기 비디오의 컨텐츠를 표현함 - ; 및
    상기 프록시 서버에 의해, 상기 비디오의 상기 수신된 하나 이상의 비디오 세그먼트들을 상기 미디어 플레이어에 제공하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 프록시 서버에 의해, 상기 비디오의 표현을 선택하는 단계;
    상기 프록시 서버에 의해, 상기 선택된 표현에서의 상기 비디오의 하나 이상의 비디오 세그먼트들을 프리-페치하는 단계; 및
    상기 프록시 서버에 의해, 상기 프리-페치된 비디오 세그먼트들을 로컬 저장장치에 저장하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서,
    상기 제2 파일 포맷으로 된 상기 스트리밍 데이터는 상기 제1 파일 포맷에 의해서보다 상기 제2 파일 포맷에 의해 더욱 간결하게 표현되는, 방법.
  11. 비디오 컨텐츠를 재생하기 위한 실행가능한 컴퓨터 프로그램 명령들을 저장하는 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 프로그램 명령들은,
    프록시 서버에 의해, 미디어 플레이어로부터 컨텐츠 공유 서비스로의 비디오에 대한 제1 파일 포맷으로 된 요청을 검출하고;
    상기 프록시 서버에 의해, 상기 요청을 상기 제1 파일 포맷으로부터 제2 파일 포맷으로 수정하며 - 상기 제2 파일 포맷으로 된 스트리밍 데이터는 상기 컨텐츠 공유 서비스로부터 상기 스트리밍 데이터를 송신하기 위해 상기 제1 파일 포맷에서 요구되는 것보다 더 적은 대역폭을 요구함 - ;
    상기 미디어 플레이어를 대신하여 상기 프록시 서버에 의해, 상기 비디오에 대한 상기 수정된 요청을 상기 컨텐츠 공유 서비스에 제공하고;
    상기 프록시 서버에 의해, 상기 수정된 요청에 응답하여 상기 컨텐츠 공유 서비스로부터 상기 제2 파일 포맷으로 된 상기 비디오와 연관된 스트리밍 데이터를 수신하며;
    상기 프록시 서버에 의해, 상기 컨텐츠 공유 서비스로부터 수신된 상기 비디오와 연관된 상기 수신된 스트리밍 데이터에 기초하여 매니페스트 파일을 생성하고 - 상기 매니페스트 파일은 상기 요청된 비디오와 연관된 마스터 플레이리스트 및 복수의 미디어 플레이리스트를 포함하고, 상기 마스터 플레이리스트는 단일 표현에서의 상기 요청된 비디오의 유니버셜 자원 로케이터(URL)를 포함하며, 상기 복수의 미디어 플레이리스트의 각각의 미디어 플레이리스트는 특정한 시각적 품질에서의 상기 요청된 비디오의 표현을 식별하고 상기 요청된 비디오의 상기 표현에 대한 복수의 비디오 세그먼트를 포함함 - ;
    상기 프록시 서버에 의해, 상기 요청된 비디오의 컨텐츠를 다운로드하기 위하여 상기 매니페스트 파일을 상기 미디어 플레이어에 제공하며;
    상기 미디어 플레이어가 상기 요청된 비디오의 비디오 세그먼트를 페치하는 것에 응답하여, 상기 프록시 서버에 의해, 상기 복수의 미디어 플레이리스트로부터 선택하기 위해 상기 요청된 비디오의 표현을 결정하기 위한 명령들을 포함하는, 컴퓨터 판독가능 매체.
  12. 제11항에 있어서,
    상기 비디오와 연관된 상기 스트리밍 데이터는 상기 컨텐츠 공유 서비스에 의해 제공된 상기 비디오의 유니버셜 자원 로케이터(URL)를 포함하는, 컴퓨터 판독가능 매체.
  13. 제11항에 있어서,
    상기 프록시 서버에 의해, 상기 비디오와 연관된 상기 수신된 스트리밍 데이터에 기초하여 상기 매니페스트 파일을 생성하기 위한 상기 컴퓨터 프로그램 명령들은,
    상기 요청된 비디오와 연관된 하나 이상의 플레이리스트들을 생성하기 위하여 상기 수신된 스트리밍 데이터를 파싱하기 위한 명령들을 포함하는, 컴퓨터 판독가능 매체.
  14. 제11항에 있어서,
    상기 복수의 미디어 플레이리스트의 미디어 플레이리스트는 상기 미디어 플레이리스트에 의해 식별된 상기 비디오의 비디오 세그먼트들의 로케이션들의 리스트를 포함하고, 비디오 세그먼트는 상기 비디오의 컨텐츠의 일부분을 표현하는, 컴퓨터 판독가능 매체.
  15. 제11항에 있어서,
    상기 요청된 비디오의 상기 시각적 품질은 상기 비디오와 연관된 하나 이상의 시각적 특징들에 의해 측정되고, 상기 시각적 특징들은:
    상기 비디오를 표현하기 위한 비트 레이트;
    상기 비디오의 해상도;
    초 당 프레임들의 수;
    상기 비디오의 인코딩 포맷; 및
    상기 비디오의 피크 신호-대-잡음 비율 중의 적어도 하나를 포함하는, 컴퓨터 판독가능 매체.
  16. 제11항에 있어서,
    상기 비디오와 연관된 상기 복수의 미디어 플레이리스트들은 HTTP 라이브 스트리밍(HLS) 포맷으로 되어 있고, HLS 스트리밍 프로토콜에 의해 지원되는, 컴퓨터 판독가능 매체.
  17. 제11항에 있어서,
    상기 프록시 서버에 의해, 상기 요청된 비디오의 표현을 결정하기 위한 상기 컴퓨터 프로그램 명령들은,
    상기 프록시 서버에 의해, 상기 미디어 플레이어의 사용자로부터의 입력에 기초하여 상기 비디오의 표현을 결정하고;
    상기 프록시 서버에 의해, 상기 결정된 표현에서의 상기 비디오의 상기 비디오 세그먼트들을 스트리밍하기 위한 현재의 비트 레이트에 기초하여 상기 표현을 적응적으로 업데이트하기 위한 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  18. 제11항에 있어서,
    상기 프록시 서버에 의해, 결정된 표현에서의 상기 비디오의 최후 비디오 세그먼트의 인덱스를 추적하고;
    상기 프록시 서버에 의해, 상기 결정된 표현에서의 상기 비디오의 비디오 세그먼트들에 대한 상기 미디어 플레이어로부터의 요청을 검출하고;
    상기 프록시 서버에 의해, 상기 비디오 세그먼트들에 대한 수정된 요청 - 상기 수정된 요청은 상기 결정된 표현에서의 상기 최후 비디오 세그먼트의 상기 인덱스를 포함함 - 을 상기 컨텐츠 공유 서비스에 제공하고;
    상기 프록시 서버에 의해, 상기 컨텐츠 공유 서비스로부터 하나 이상의 비디오 세그먼트들을 수신하고 - 상기 수신된 비디오 세그먼트들은 상기 최후 비디오 세그먼트에 의해 표현된 상기 컨텐츠에 후속하는 상기 비디오의 컨텐츠를 표현함 - ;
    상기 프록시 서버에 의해, 상기 비디오의 상기 수신된 하나 이상의 비디오 세그먼트들을 상기 미디어 플레이어에 제공하기 위한 컴퓨터 프로그램 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  19. 제11항에 있어서,
    상기 프록시 서버에 의해, 상기 비디오의 표현을 선택하고;
    상기 프록시 서버에 의해, 상기 선택된 표현에서의 상기 비디오의 하나 이상의 비디오 세그먼트들을 프리-페치하고;
    상기 프록시 서버에 의해, 상기 프리-페치된 비디오 세그먼트들을 로컬 저장장치에 저장하기 위한 컴퓨터 프로그램 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  20. 제11항에 있어서,
    상기 제2 파일 포맷으로 된 상기 스트리밍 데이터는 상기 제1 파일 포맷에 의해서보다 상기 제2 파일 포맷에 의해 더욱 간결하게 표현되는, 컴퓨터 판독가능 매체.
  21. 비디오 컨텐츠를 재생하기 위한 컴퓨터 시스템으로서,
    프록시 서버를 포함하고, 상기 프록시 서버는,
    미디어 플레이어로부터 컨텐츠 공유 서비스로의 비디오에 대한 제1 파일 포맷으로 된 요청을 검출하고;
    상기 요청을 상기 제1 파일 포맷으로부터 제2 파일 포맷으로 수정하며 - 상기 제2 파일 포맷으로 된 스트리밍 데이터는 상기 컨텐츠 공유 서비스로부터 상기 스트리밍 데이터를 송신하기 위해 상기 제1 파일 포맷에서 요구되는 것보다 더 적은 대역폭을 요구함 - ;
    상기 미디어 플레이어를 대신하여, 상기 비디오에 대한 상기 수정된 요청을 상기 컨텐츠 공유 서비스에 제공하고;
    상기 수정된 요청에 응답하여 상기 컨텐츠 공유 서비스로부터 상기 비디오와 연관된 스트리밍 데이터를 수신
    하기 위한 모니터링 모듈; 및
    상기 컨텐츠 공유 서비스로부터 수신된 상기 비디오와 연관된 상기 수신된 스트리밍 데이터에 기초하여 매니페스트 파일을 생성하고 - 상기 매니페스트 파일은 상기 요청된 비디오와 연관된 마스터 플레이리스트 및 복수의 미디어 플레이리스트를 포함하고, 상기 마스터 플레이리스트는 단일 표현에서의 상기 요청된 비디오의 유니버셜 자원 로케이터(URL)를 포함하며, 상기 복수의 미디어 플레이리스트의 각각의 미디어 플레이리스트는 특정한 시각적 품질에서의 상기 요청된 비디오의 표현을 식별하고 상기 요청된 비디오의 상기 표현에 대한 복수의 비디오 세그먼트를 포함함 - ;
    상기 요청된 비디오의 컨텐츠를 다운로드하기 위하여 상기 매니페스트 파일을 상기 미디어 플레이어에 제공하며;
    상기 미디어 플레이어가 상기 요청된 비디오의 비디오 세그먼트를 페치하는 것에 응답하여, 상기 복수의 미디어 플레이리스트로부터 선택하기 위해 상기 요청된 비디오의 표현을 결정
    하기 위한 매니페스트 생성 모듈을 포함하는, 컴퓨터 시스템.
  22. 제21항에 있어서,
    상기 비디오와 연관된 상기 스트리밍 데이터는 상기 컨텐츠 공유 서비스에 의해 제공된 상기 비디오의 유니버셜 자원 로케이터(URL)를 포함하는, 컴퓨터 시스템.
  23. 제21항에 있어서,
    상기 매니페스트 생성 모듈은 추가로,
    상기 요청된 비디오와 연관된 하나 이상의 플레이리스트들을 생성하기 위하여 상기 수신된 스트리밍 데이터를 파싱하기 위한 것인, 컴퓨터 시스템.
  24. 제21항에 있어서,
    미디어 플레이리스트는 상기 미디어 플레이리스트에 의해 식별된 상기 비디오의 비디오 세그먼트들의 로케이션들의 리스트를 포함하고, 비디오 세그먼트는 상기 비디오의 컨텐츠의 일부분을 표현하는, 컴퓨터 시스템.
  25. 제21항에 있어서,
    상기 요청된 비디오의 상기 시각적 품질은 상기 비디오와 연관된 하나 이상의 시각적 특징들에 의해 측정되고, 상기 시각적 특징들은:
    상기 비디오를 표현하기 위한 비트 레이트;
    상기 비디오의 해상도;
    초 당 프레임들의 수;
    상기 비디오의 인코딩 포맷; 및
    상기 비디오의 피크 신호-대-잡음 비율 중의 적어도 하나를 포함하는, 컴퓨터 시스템.
  26. 제21항에 있어서,
    상기 비디오와 연관된 상기 복수의 미디어 플레이리스트들은 HTTP 라이브 스트리밍(HLS) 포맷으로 되어 있고, HLS 스트리밍 프로토콜에 의해 지원되는, 컴퓨터 시스템.
  27. 제21항에 있어서,
    상기 매니페스트 생성 모듈은 추가로,
    상기 미디어 플레이어의 사용자로부터의 입력에 기초하여 상기 요청된 비디오의 표현을 결정하고;
    상기 결정된 표현에서의 상기 비디오의 상기 비디오 세그먼트들을 스트리밍하기 위한 현재의 비트 레이트에 기초하여 상기 표현을 적응적으로 업데이트하기 위한 것인, 컴퓨터 시스템.
  28. 제21항에 있어서,
    결정된 표현에서의 상기 비디오의 최후 비디오 세그먼트의 인덱스를 추적하고;
    상기 결정된 표현에서의 상기 비디오의 비디오 세그먼트들에 대한 상기 미디어 플레이어로부터의 요청을 검출하고;
    상기 비디오 세그먼트들에 대한 수정된 요청 - 상기 수정된 요청은 상기 결정된 표현에서의 상기 최후 비디오 세그먼트의 상기 인덱스를 포함함 - 을 상기 컨텐츠 공유 서비스에 제공하고;
    상기 컨텐츠 공유 서비스로부터 하나 이상의 비디오 세그먼트들을 수신하고 - 상기 수신된 비디오 세그먼트들은 상기 최후 비디오 세그먼트에 의해 표현된 상기 컨텐츠에 후속하는 상기 비디오의 컨텐츠를 표현함 - ;
    상기 비디오의 상기 수신된 하나 이상의 비디오 세그먼트들을 상기 미디어 플레이어에 제공하기 위한 컨텐츠 인덱스 모듈을 더 포함하는, 컴퓨터 시스템.
  29. 제21항에 있어서,
    상기 비디오의 표현을 선택하고;
    상기 선택된 표현에서의 상기 비디오의 하나 이상의 비디오 세그먼트들을 프리-페치하고;
    상기 프리-페치된 비디오 세그먼트들을 로컬 저장장치에 저장하기 위한 스트림 선택 모듈을 더 포함하는, 컴퓨터 시스템.
  30. 제21항에 있어서,
    상기 제2 파일 포맷으로 된 상기 스트리밍 데이터는 상기 제1 파일 포맷에 의해서보다 상기 제2 파일 포맷에 의해 더욱 간결하게 표현되는, 컴퓨터 시스템.
KR1020167036892A 2014-06-11 2015-04-30 개량된 스트리밍 미디어 재생 KR101904244B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/302,244 2014-06-11
US14/302,244 US9692800B2 (en) 2014-06-11 2014-06-11 Enhanced streaming media playback
PCT/US2015/028606 WO2015191177A1 (en) 2014-06-11 2015-04-30 Enhanced streaming media playback

Publications (2)

Publication Number Publication Date
KR20170012471A KR20170012471A (ko) 2017-02-02
KR101904244B1 true KR101904244B1 (ko) 2018-10-05

Family

ID=54834074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167036892A KR101904244B1 (ko) 2014-06-11 2015-04-30 개량된 스트리밍 미디어 재생

Country Status (6)

Country Link
US (2) US9692800B2 (ko)
EP (1) EP3155817A4 (ko)
KR (1) KR101904244B1 (ko)
CN (1) CN106464945B (ko)
AU (2) AU2015272044B2 (ko)
WO (1) WO2015191177A1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX354712B (es) 2013-07-23 2018-03-16 Ericsson Ab Sistema de distribucion de medios con ejecucion de autorizacion con base en una declaracion.
US8718445B1 (en) 2013-09-03 2014-05-06 Penthera Partners, Inc. Commercials on mobile devices
US9244916B2 (en) * 2013-10-01 2016-01-26 Penthera Partners, Inc. Downloading media objects
FR3016263A1 (fr) * 2014-01-07 2015-07-10 Orange Procede de traitement d'erreur de restitution d'un contenu numerique
FR3029376B1 (fr) * 2014-11-28 2016-12-30 B<>Com Procede de traitement d'une requete de livraison de donnees, dispositif, module proxy, terminal client et programme d'ordinateur associes
KR20160082167A (ko) * 2014-12-31 2016-07-08 삼성전자주식회사 네트워크에서 재생 목록을 제공하는 방법 및 장치
US9471954B2 (en) * 2015-03-16 2016-10-18 International Business Machines Corporation Video sequence assembly
FR3034943B1 (fr) * 2015-04-07 2017-04-14 Streamroot Inc Procede de lecture en continu sur un equipement client d'un contenu diffuse au sein d'un reseau pair a pair
US11757970B2 (en) * 2015-04-13 2023-09-12 Sony Group Corporation System and method for content streaming in a network environment
US10673907B2 (en) * 2015-07-16 2020-06-02 Arris Enterprises Llc Systems and methods for providing DLNA streaming to client devices
US9716905B2 (en) * 2015-08-10 2017-07-25 Verizon Patent And Licensing Inc. Selective content delivery over diverse networks
CN105847990B (zh) * 2016-03-30 2019-03-19 华为技术有限公司 播放媒体文件的方法和设备
US10116713B2 (en) * 2016-03-31 2018-10-30 Jamdeo Canada, Ltd. System and methods for content streaming with a content buffer
US10009659B2 (en) * 2016-03-31 2018-06-26 Disney Enterprises, Inc. System and method for hybrid push-based streaming
WO2017207861A1 (en) * 2016-05-30 2017-12-07 Teleste Oyj An arrangement for media stream organization
WO2018027237A1 (en) 2016-08-05 2018-02-08 Sportscastr.Live Llc Systems, apparatus, and methods for scalable low-latency viewing of broadcast digital content streams of live events
US10187681B2 (en) * 2016-12-01 2019-01-22 The Directv Group, Inc. Enhanced streaming source change
US10476822B2 (en) * 2016-12-08 2019-11-12 T-Mobile Usa, Inc. MSRP/HTTP file transfer
US10476943B2 (en) * 2016-12-30 2019-11-12 Facebook, Inc. Customizing manifest file for enhancing media streaming
US10440085B2 (en) 2016-12-30 2019-10-08 Facebook, Inc. Effectively fetch media content for enhancing media streaming
US10311012B2 (en) 2016-12-31 2019-06-04 Spotify Ab Media content playback with state prediction and caching
US10678497B2 (en) * 2016-12-31 2020-06-09 Spotify Ab Display of cached media content by media playback device
US10484446B1 (en) 2017-01-31 2019-11-19 Amazon Technologies, Inc. VBR encoding of live content
US10313419B1 (en) * 2017-01-31 2019-06-04 Amazon Technologies, Inc. VBR encoding of live content
US10491645B2 (en) 2017-03-01 2019-11-26 At&T Intellectual Property I, L.P. System and method for switching between adaptive bit rate and fixed rate streams
WO2018213481A1 (en) 2017-05-16 2018-11-22 Sportscastr.Live Llc Systems, apparatus, and methods for scalable low-latency viewing of integrated broadcast commentary and event video streams of live events, and synchronization of event information with viewed streams via multiple internet channels
KR102332525B1 (ko) 2017-06-01 2021-11-29 삼성전자주식회사 전자 장치 및 그 동작방법
US20180352287A1 (en) * 2017-06-02 2018-12-06 Apple Inc. Persistent ID for Offline Access to Streamed Media
US10764650B2 (en) * 2017-12-07 2020-09-01 At&T Intellectual Property I, L.P. Video optimization proxy system and method
CN108235104B (zh) * 2018-01-19 2020-08-28 深圳市富途网络科技有限公司 一种用于移动终端的直播视频浮窗播放方法
US10555018B2 (en) * 2018-02-02 2020-02-04 Martell Broadcasting Systems, Inc. Systems and methods of programmatic video content distribution
CN108401174B (zh) * 2018-02-24 2021-03-02 广州久邦世纪科技有限公司 一种带有虚拟直播房间直播系统的系统及其实现方法
US10182269B1 (en) * 2018-04-24 2019-01-15 Verizon Patent And Licensing Inc. HTTP live streaming delivery over multicast
CN108600778B (zh) * 2018-05-07 2020-11-03 广州酷狗计算机科技有限公司 媒体流发送方法、装置、系统及服务器、终端、存储介质
US10764494B2 (en) 2018-05-25 2020-09-01 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using composite pictures
US10666863B2 (en) * 2018-05-25 2020-05-26 Microsoft Technology Licensing, Llc Adaptive panoramic video streaming using overlapping partitioned sections
KR102428194B1 (ko) 2018-09-17 2022-08-02 구글 엘엘씨 매니페스트리스 스트리밍 미디어 콘텐츠를 전달하기 위한 방법들, 시스템들, 및 매체들
US20200106778A1 (en) * 2018-09-28 2020-04-02 Comcast Cable Communications, Llc Content Authorization and Delivery
US11184665B2 (en) * 2018-10-03 2021-11-23 Qualcomm Incorporated Initialization set for network streaming of media data
CN109348240A (zh) * 2018-10-25 2019-02-15 网易(杭州)网络有限公司 视频播放方法、装置及系统、电子设备以及存储介质
US10911793B2 (en) 2018-11-14 2021-02-02 Sony Interactive Entertainment LLC Video start-time reduction employing reductive edging principles
CN111526379B (zh) * 2019-02-03 2021-06-29 华为技术有限公司 数据传输方法和数据传输装置
US11647241B2 (en) * 2019-02-19 2023-05-09 Sony Interactive Entertainment LLC Error de-emphasis in live streaming
US11695817B2 (en) * 2019-03-20 2023-07-04 Qualcomm Incorporated Methods and apparatus to facilitate using a streaming manifest including a profile indication
FR3094597B1 (fr) * 2019-03-27 2021-06-11 Streamroot Procédé de diffusion de contenus en streaming dans un réseau pair à pair
US10862946B1 (en) * 2019-04-05 2020-12-08 Sony Interactive Entertainment LLC Media player supporting streaming protocol libraries for different media applications on a computer system
US11509972B2 (en) * 2019-07-09 2022-11-22 Dolby International Ab Method and device for personalization of media data for playback
US11622164B2 (en) * 2019-07-12 2023-04-04 Carrier Corporation System and method for streaming video/s
US11388471B2 (en) 2019-09-27 2022-07-12 At&T Intellectual Property I, L.P. Pre-fetching of information to facilitate channel switching
US10880347B1 (en) * 2019-11-15 2020-12-29 Adobe Inc. Media players for digital display devices using proxy services for offline capability
CN111131844A (zh) * 2019-12-02 2020-05-08 钛马信息网络技术有限公司 一种行车记录仪的资源共享方法及系统
KR102228375B1 (ko) * 2019-12-11 2021-03-16 네이버 주식회사 다수의 스트리밍 콘텐츠들을 재생하는 방법 및 시스템
US11343584B2 (en) 2020-01-10 2022-05-24 At&T Intellectual Property I, L.P. System and method for accelerated video startup
CN111800644B (zh) * 2020-07-14 2022-10-14 深圳市人工智能与机器人研究院 一种视频分享、获取方法、服务器、终端设备及介质
KR102432376B1 (ko) * 2020-10-19 2022-08-12 네이버 주식회사 콘텐츠 재생 방법 및 시스템
CN113395266B (zh) * 2020-11-06 2022-08-19 中软数智信息技术(武汉)有限公司 应用于物联网和直播平台的数据处理方法及云计算中心
GB2625477A (en) * 2021-09-10 2024-06-19 Brightcove Inc Dynamic creation of low latency video streams in a live event

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20130067052A1 (en) * 2011-09-13 2013-03-14 Jennifer Reynolds User adaptive http stream manager and method for using same
US20130275557A1 (en) * 2012-04-12 2013-10-17 Seawell Networks Inc. Methods and systems for real-time transmuxing of streaming media content

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282898A1 (en) * 2006-05-05 2007-12-06 Real Digital Media, Llc Automated local insertion of content into master playlist in digital signage networks
US8812579B2 (en) * 2006-12-21 2014-08-19 Verizon Patent And Licensing Inc. Apparatus for transferring data via a proxy server and an associated method and computer program product
US8914824B2 (en) * 2009-01-07 2014-12-16 Microsoft Corporation Video ad delivery using configurable video ad policies
US8677428B2 (en) * 2010-08-20 2014-03-18 Disney Enterprises, Inc. System and method for rule based dynamic server side streaming manifest files
US20120136941A1 (en) * 2010-11-30 2012-05-31 Timothy Howes User specific sharing feature
CN102567396A (zh) * 2010-12-30 2012-07-11 中国移动通信集团公司 一种基于云计算的数据挖掘方法、系统及装置
US8892763B2 (en) * 2011-01-05 2014-11-18 Motorola Mobility Llc Live television playback optimizations
US8510460B2 (en) * 2011-04-29 2013-08-13 Cbs Interactive Inc. Reduced video player start-up latency in HTTP live streaming and similar protocols
US9160779B2 (en) * 2011-06-30 2015-10-13 Qualcomm Incorporated Dynamic adaptive streaming proxy for unicast or broadcast/multicast services
US10225306B2 (en) * 2011-12-29 2019-03-05 Koninklijke Kpn N.V. Controlled streaming of segmented content
US8887215B2 (en) * 2012-06-11 2014-11-11 Rgb Networks, Inc. Targeted high-value content in HTTP streaming video on demand
US20140040496A1 (en) * 2012-08-06 2014-02-06 General Instrument Corporation On-demand http stream generation
EP2696552A1 (en) * 2012-08-07 2014-02-12 NTT DoCoMo, Inc. Method, system and network for transmitting multimedia data to a plurality of clients
US9197944B2 (en) * 2012-08-23 2015-11-24 Disney Enterprises, Inc. Systems and methods for high availability HTTP streaming
CN102801656B (zh) * 2012-08-29 2016-01-20 腾讯科技(深圳)有限公司 实现即时通信应用的状态控制方法、设备及系统
EP3562167A1 (en) * 2013-02-12 2019-10-30 Ericsson AB Method for providing variant manifest file to media player for rendering content from personal over-the-top network video recorder
US8898338B1 (en) * 2014-03-06 2014-11-25 Unicorn Media, Inc. Traffic shaping for live media streaming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20130067052A1 (en) * 2011-09-13 2013-03-14 Jennifer Reynolds User adaptive http stream manager and method for using same
US20130275557A1 (en) * 2012-04-12 2013-10-17 Seawell Networks Inc. Methods and systems for real-time transmuxing of streaming media content

Also Published As

Publication number Publication date
EP3155817A4 (en) 2017-11-29
US10069884B2 (en) 2018-09-04
AU2018202004B2 (en) 2019-04-11
US20150365450A1 (en) 2015-12-17
AU2015272044B2 (en) 2017-12-21
AU2018202004A1 (en) 2018-04-12
US9692800B2 (en) 2017-06-27
WO2015191177A1 (en) 2015-12-17
CN106464945A (zh) 2017-02-22
CN106464945B (zh) 2019-07-12
EP3155817A1 (en) 2017-04-19
US20170257408A1 (en) 2017-09-07
KR20170012471A (ko) 2017-02-02
AU2015272044A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
KR101904244B1 (ko) 개량된 스트리밍 미디어 재생
US10999340B2 (en) Cloud-based video delivery
US8327013B2 (en) Dynamic index file creation for media streaming
US20170149860A1 (en) Partial prefetching of indexed content
US20120005313A1 (en) Dynamic indexing for ad insertion in media streaming
US20140297881A1 (en) Downloading and adaptive streaming of multimedia content to a device with cache assist
CN113141522B (zh) 资源传输方法、装置、计算机设备及存储介质
US8954540B2 (en) Dynamic audio track selection for media streaming
AU2013240578B2 (en) Dynamic audio track selection for media streaming
US20140189141A1 (en) Real-time content transcoding method, apparatus and system, and real-time content receiving method and apparatus
KR102237900B1 (ko) 클라이언트 단말에 의해 멀티미디어 콘텐츠의 콘텐츠 부분을 검색하기 위한 방법
CN115460184A (zh) 用于传递无清单流媒体内容的方法、系统和介质
US20200059528A1 (en) Client-side quality-of-service (qos) for viewing of adaptive bitrate (abr) streams
SG184587A1 (en) A method and apparatus for caching and retrieving a stream object

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right