KR102093429B1 - 유사한 도입 장면 캐싱 메커니즘 - Google Patents

유사한 도입 장면 캐싱 메커니즘 Download PDF

Info

Publication number
KR102093429B1
KR102093429B1 KR1020187016251A KR20187016251A KR102093429B1 KR 102093429 B1 KR102093429 B1 KR 102093429B1 KR 1020187016251 A KR1020187016251 A KR 1020187016251A KR 20187016251 A KR20187016251 A KR 20187016251A KR 102093429 B1 KR102093429 B1 KR 102093429B1
Authority
KR
South Korea
Prior art keywords
media
common
content item
client
server
Prior art date
Application number
KR1020187016251A
Other languages
English (en)
Other versions
KR20180081783A (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 KR20180081783A publication Critical patent/KR20180081783A/ko
Application granted granted Critical
Publication of KR102093429B1 publication Critical patent/KR102093429B1/ko

Links

Images

Classifications

    • 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
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23608Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/75Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0277Online advertisement
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • 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
    • 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
    • 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/25866Management of end-user data
    • H04N21/25891Management of end-user data being end-user preferences
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44222Analytics of user selections, e.g. selection of programs or purchase activity
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44222Analytics of user selections, e.g. selection of programs or purchase activity
    • H04N21/44224Monitoring of user activity on external systems, e.g. Internet browsing
    • H04N21/44226Monitoring of user activity on external systems, e.g. Internet browsing on social networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data
    • 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/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
    • 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/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
    • H04N21/8586Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Accounting & Taxation (AREA)
  • Social Psychology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

스트리밍 미디어 콘텐츠에 필요한 대역폭을 줄이는 방법이 개시된다. 이 방법은 스트리밍 미디어 서버에 의해, 미디어 데이터의 일부분을 공통으로 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계; 상기 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 공통 부분을 추출하는 단계; 상기 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하는 단계; 상기 공통 미디어 패키지를 클라이언트 미디어 디바이스로 제공하는 단계; 상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하는 단계; 상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하는 단계; 및 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하는 단계를 포함한다.

Description

유사한 도입 장면 캐싱 메커니즘
콘텐츠 제공자들은 소비자가 인터넷을 통해 이용 및/또는 구매할 수 있는 비디오, 영상, 오디오 레코딩, 텍스트, 대화형 게임, 퀴즈 또는 기타 콘텐츠와 같은 많은 콘텐츠 아이템을 만든다. 이러한 콘텐츠는 사용자가 종종 방송, 스트림, 프로그램, 영화, 피드(feed) 또는 다른 이름들로 지칭되는 비디오를 볼 때 표시될 수 있다.
스트리밍 기술은 모바일 컴퓨팅 디바이스에 직접 사본을 다운로드하지 않고도 주문형 비디오를 시청하는 것을 가능케 한다. 비디오에는 사용자가 반복적으로 재 스트림하여 대역폭 낭비를 초래하고 모바일 디바이스에 대해 배터리 수명 낭비를 초래하는 공통 도입 장면들(common introductory scenes)이 포함되어 있다. 공통 도입 장면들을 식별하고 저장함으로써 사용자는 비디오 콘텐츠를 스트리밍하는 시간을 최소화하여 향상된 시청 경험을 가질 수 있고, 서버 성능이 향상될 수 있으며 네트워크 대역폭 사용이 감소될 수 있다.
본 명세서에 개시된 일 양태는 스트리밍 미디어 콘텐츠에 필요한 대역폭을 감소시키는 방법으로서, 스트리밍 미디어 서버에 의해, 미디어 데이터의 일부분을 공통으로 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계; 스트리밍 미디어 서버에 의해, 상기 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 상기 공통 부분을 추출하는 단계; 스트리밍 미디어 서버에 의해, 상기 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하는 단계; 스트리밍 미디어 서버에 의해, 상기 공통 미디어 패키지를 클라이언트 미디어 디바이스로 제공하는 단계; 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하는 단계; 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하는 단계; 및 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 공통 미디어 패키지의 식별 및 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 클라이언트 미디어 디바이스로 전송하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 제2 요청을 수신하는 단계, 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브셋으로부터 제2 콘텐츠 아이템을 선택하는 단계, 및 상기 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 공통 미디어 패키지의 식별 및 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 클라이언트 미디어 디바이스로 전송하는 단계를 포함한다. 일부 구현예에서, 미디어의 공통 부분을 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계는 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교하는 단계; 및 매칭을 나타내는 비교에 응답하여, 제1 미디어 콘텐츠 아이템 및 제2 미디어 콘텐츠 아이템을 서브셋에 추가(add)하는 단계를 더 포함한다. 일부 구현예에서, 공통 미디어 패키지를 생성하는 단계는 공통 미디어 식별자 및 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 단계를 더 포함한다. 일부 구현예에서, 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 단계는 공통 미디어 패키지의 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록(manifest) 및 콘텐츠 서버에서 선택된 콘텐츠 아이템의 청크의 어드레스를 전송하는 단계를 더 포함한다. 일부 구현예에서, 상기 방법은 후속 청크에 대한 요청의 수신 전에, 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하는 단계를 포함한다. 일부 구현예에서, 상기 방법은 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하는 단계; 및 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 상기 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하는 단계를 포함한다. 일부 구현예에서, 공통 미디어 패키지의 식별 및 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 단계는 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 공통 미디어 패키지를 수정하도록 클라이언트에 대한 명령을 전송하는 단계를 더 포함한다.
본 명세서에 개시된 다른 양태는 스트리밍 미디어 콘텐츠에 필요한 대역폭을 줄이기 위한 시스템으로, 상기 시스템은 스트리밍 미디어 서버, 비디오 스플리터 및 비디오 인코더를 포함하고, 네트워크를 통해 클라이언트 미디어 디바이스 및 저장 디바이스와 통신하는 컴퓨팅 디바이스를 포함하고, 상기 저장 디바이스는 복수의 미디어 콘텐츠 아이템을 저장하고; 상기 스트리밍 미디어 서버는 미디어 데이터의 일부분을 공통으로 갖는 저장 디바이스에 저장된 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하도록 구성된 회로를 포함하고; 상기 비디오 스플리터는 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 공통 부분을 추출하도록 구성된 회로를 포함하고; 상기 비디오 인코더는 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하도록 구성된 회로를 포함하며; 상기 스트리밍 미디어 서버의 회로는 공통 미디어 패키지를 네트워크를 통해 클라이언트 미디어 디바이스로 제공하고, 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하고, 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하며; 그리고 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 공통 미디어 패키지의 식별 및 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 클라이언트 미디어 디바이스로 전송하도록 추가로 구성된다.
일부 구현예에서, 스트리밍 미디어 서버의 회로는, 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 제2 요청을 수신하고, 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠의 제2 콘텐츠 아이템을 선택하고; 그리고 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 클라이언트 미디어 디바이스로 전송하도록 추가로 구성된다. 일부 구현예에서, 스트리밍 미디어 서버의 회로는 미디어의 공통 부분을 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 동작이, 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 상기 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교하는 동작; 및 매칭을 나타내는 비교에 응답하여, 제1 미디어 콘텐츠 아이템 및 제2 미디어 콘텐츠 아이템을 상기 서브셋에 추가하는 동작을 더 포함하도록 추가로 구성된다. 일부 구현예에서, 스트리밍 미디어 서버의 회로는 공통 미디어 패키지를 생성하는 동작이, 공통 미디어 식별자 및 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 동작을 더 포함하도록 추가로 구성된다. 일부 구현예에서, 스트리밍 미디어 서버의 회로는 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 동작이, 상기 공통 미디어 패키지의 상기 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록(manifest) 및 콘텐츠 서버에서 선택된 콘텐츠 아이템의 청크의 어드레스를 전송하는 동작을 더 포함하도록 구성된다. 일부 구현예에서, 후속 청크에 대한 요청을 수신하기 전에, 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하도록 추가로 구성된다. 일부 구현예에서, 스트리밍 미디어 서버의 회로는 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하고; 그리고 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 상기 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하도록 추가로 구성된다. 일부 구현예에서, 스트리밍 미디어 서버의 회로는 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 동작이, 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 상기 공통 미디어 패키지를 수정하도록 상기 클라이언트에 대한 명령을 전송하는 동작을 더 포함하도록 추가로 구성된다.
본 명세서에 개시된 다른 양태는 스트리밍 미디어 콘텐츠에 필요한 대역폭을 감소시키는 방법으로서, 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지가 상기 클라이언트 미디어 디바이스에 저장되어 있지 않은 것으로 결정하는 단계, 상기 공통 미디어 패키지는 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 추출된 공통 부분을 포함하고; 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버 디바이스로부터 공통 미디어 패키지를 수신하는 단계; 클라이언트 미디어 디바이스에 의해, 상기 스트리밍 미디어 서버로부터 컨텐트 아이템을 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 선택된 제1 미디어 콘텐츠 아이템의 후속 청크의 식별을 상기 스트리밍 미디어 서버로부터 수신하는 단계; 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계; 및 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제1 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버로부터 제2 콘텐츠 아이템을 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 선택된 제2 미디어 콘텐츠 아이템의 후속 청크의 식별을 스트리밍 미디어 서버로부터 수신하는 단계; 클라이언트 미디어 디바이스에 의해, 제2 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 제2 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계; 및 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제2 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함한다. 일부 구현예에서, 공통 미디어 패키지를 수신하는 단계는 선택된 콘텐츠 아이템의 상기 수신된 후속 청크의 특성에 기초하여 상기 추출된 공통 부분을 수정하도록 클라이언트 미디어 디바이스에 대한 명령을 수신하는 단계를 더 포함한다. 일부 구현예에서, 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계는 이전에 제공된 추출된 공통 부분을 렌더링하는 동안 후속 청크를 수신하는 단계를 더 포함한다.
다른 양태에서, 본 발명은 방법을 수행하도록 구성된 클라이언트 미디어 디바이스에 관한 것으로, 상기 방법은 공통 미디어 패키지가 상기 클라이언트 미디어 디바이스에 저장되어 있지 않은 것으로 결정하는 단계, 상기 공통 미디어 패키지는 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 추출된 공통 부분을 포함하고; 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버 디바이스로부터 공통 미디어 패키지를 수신하는 단계; 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버로부터 컨텐트 아이템을 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 선택된 제1 미디어 콘텐츠 아이템의 후속 청크의 식별을 스트리밍 미디어 서버로부터 수신하는 단계; 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계; 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계; 및 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제1 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함한다.
다른 양태에서, 본 발명은 본 명세서에 기재된 임의의 양태 또는 구현예에 따른 방법을 수행하도록 구성된 서버를 포함하는 시스템에 관한 것이다. 일부 구현예에서, 시스템은 서버에 의해 실행될 때, 서버로 하여금 본 명세서에서 설명된 임의의 양태 또는 구현예에 따른 방법을 포함하는 동작들을 수행하게 하는 저장된 명령을 갖는 컴퓨터 판독 가능 매체를 포함할 수 있다. 다른 양태에서, 본 발명은 시스템에 관한 것으로서, 스트리밍 미디어 서버, 비디오 스플리터 및 비디오 인코더를 포함하고, 네트워크를 통해 클라이언트 미디어 디바이스 및 저장 디바이스와 통신하는 컴퓨팅 디바이스를 포함하고, 상기 저장 디바이스는 복수의 미디어 콘텐츠 아이템을 저장하고, 상기 스트리밍 미디어 서버는 본 명세서에 설명된 임의의 양태 또는 구현예에 따른 방법을 수행하도록 구성된 회로를 포함한다.
다른 양태에서, 본 발명은 프로그램이 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 본 명세서에서 정의된 임의의 양태 또는 구현에 따른 방법을 수행하도록 하는 명령들을 포함하는 컴퓨터 프로그램 제품에 관한 것이다.
또 다른 양태에서, 본 발명은 서버에 의해 실행될 때, 서버로 하여금 본 명세서에서 정의된 임의의 양태 또는 구현에 따른 방법을 포함하는 동작들을 수행하게 하는 저장된 명령들을 갖는 컴퓨터 판독 가능 매체에 관한 것이다.
하나 이상의 구현의 세부 사항은 첨부된 도면 및 이하의 설명에서 설명된다. 본개시의 다른 특징, 양태 및 이점은 상세한 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 일 실시예에 따라 타임라인상의 스트리밍 비디오의 재생에 선행되는 프리-페치된 비디오의 재생의 다이어그램이다.
도 2는 미디어 콘텐츠를 클라이언트 디바이스로 스트리밍하는데 필요한 대역폭을 줄이기 위한 예시적인 환경의 블록도이다.
도 3a는 일 구현예에 따른 클라이언트 디바이스의 블록도이다.
도 3b는 일 구현예에 따른 미디어 콘텐츠 서버의 블록도이다.
도 4는 미디어 콘텐츠를 클라이언트 디바이스에 스트리밍하는데 필요한 대역폭을 줄이기 위한 예시적인 프로세스(400)의 일 구현예에서 서버에 의해 행해진 단계들의 흐름도이다.
도 5는 스트리밍 미디어 콘텐츠를 클라이언트 디바이스로 스트리밍하는데 필요한 대역폭을 줄이기 위한 예시적인 프로세스(500)의 일 실시예에서 서버 및 클라이언트 디바이스에 의해 행해진 단계들의 흐름도이다.
다양한 도면에서 동일한 참조 번호 및 명칭은 동일한 요소를 나타낸다. 본 발명의 하나의 양태 또는 구현예를 참조하여 기술된 특징들은 다른 양태 또는 구현예에 포함될 수 있음을 이해해야 한다.
비디오, 팟캐스트(podcasts), 음악 또는 다른 레코딩과 같은 많은 미디어 콘텐츠 아이템은 재생의 처음 몇 초 내에 동일한 콘텐츠를 갖는다. 예를 들어 비디오는 제작 브랜드, 저작권 면책 조항, 표준 등급 기관의 승인 메시지(영화 예고편의 경우) 또는 기타 공통 오프닝 콘텐츠를 표시할 수 있다. 클라이언트에 의한 이들 도입 장면 각각을 다운로드하는 것은 클라이언트에 의해 요청된 나머지 미디어 콘텐츠의 다운로드를 지연시킬 것이고, 클라이언트 디바이스상에서 여분의 배터리 수명과 메모리 사용량을 소모할 것이다. 전체 파일에 중점을 둔 캐싱 시스템은 처음 몇 초 후에 미디어 콘텐츠의 각 아이템의 나머지 콘텐츠가 다를 수 있으므로 이 문제를 해결하지 못한다.
따라서, 본 발명은 클라이언트 디바이스로 스트리밍되거나 다운로드되는 미디어 콘텐츠에 대한 전송(transfer) 또는 로딩 시간을 감소시키고 및/또는 클라이언트 디바이스로 미디어 콘텐츠를 스트리밍하거나 다운로드하는데 필요한 대역폭을 감소시키기 위한 시스템 및 방법에 관한 것으로, 요구되는 네트워크 리소스를 감소시키고 및/또는 이러한 도입 장면의 다운로드와 관련된 대기시간(latency)을 감소시키거나 제거하여 사용자의 경험을 향상시킬 수 있다.
도 1은 공통 또는 공유된 도입 시퀀스를 갖는 미디어 콘텐츠의 2개의 타임라인을 나타내는 도면이다. 본 명세서에서 논의된 시스템은 유사한 도입 시퀀스를 식별 및 추출할 수 있고 클라이언트 디바이스상에 도입 시퀀스를 프리-페치(pre-fetches) 및 저장하며, 일부 구현예에서는 클라이언트가 미디어를 요청하기 전에 수행될 수 있다. 이후 클라이언트가 미디어 콘텐츠를 요청하면, 클라이언트는 서버로부터 나머지 콘텐츠를 스트리밍(및 버퍼링) 또는 다운로드하는 동안에, 로컬 저장소로부터 프리-페치된 도입 또는 공통 콘텐츠를 검색하여 표시할 수 있다. 일부 구현예에서, 이것은 서버가 공통 도입를 갖는 복수의 미디어 콘텐츠 아이템 중 어느 콘텐츠를 클라이언트에 전달할 것인지를 선택하기 전에 행해질 수도 있다. 예를 들어, 도 1은 2개의 상이한 스트리밍 비디오의 재생을 도시하는데, 여기서 각 비디오는 스트리밍 콘텐츠(예를 들어, PG)에 대한 표준 보드레이팅(boardrating)을 표시하는 동일한 5초 도입 장면에 의해 선행된다. 클라이언트 디바이스가 타임라인의 시간 B에서 시작하는 스트리밍 비디오를 요청하고 버퍼링함에 따라, 클라이언트 디바이스는 프리-페치된 도입 콘텐츠의 재생을 시작할 수 있다. 그 결과, 클라이언트는 클라이언트 디바이스상에서 이전에 검색 및/또는 본 것과 동일한 도입 콘텐츠를 다시 다운로드할 필요가 없다. 일부 구현예에서, 캐싱된 도입 콘텐츠들은 콘텐츠 선택 경매 시스템에서 보다 높은 품질의 스코어를 주어지므로 공통 또는 공유된 도입 시퀀스를 갖는 콘텐츠 아이템의 기회를 증가시킨다.
본 시스템 및 방법은 또한 스트리밍된 미디어 아이템이 도입 시퀀스 동안 동일한 시각적 콘텐츠를 갖지만 상이한 오디오를 갖는 경우를 포함한다. 그러한 구현에서, 시스템은 서버로부터의 제1응답에 제공된 오디오 샘플과 함께 프리-페치된 시각 콘텐츠를 디스플레이하여, 제1응답에 필요한 대역폭을 감소시킬 수 있다. 일부 구현예에서, 서버는 프리-페치된 비디오 데이터를 수정하기 위한 명령을 제공하여, 클라이언트가 데이터의 후속 부분으로 원활하게(seamlessly) 전이할 수 있다(예를 들어, 블랙 또는 다른 컬러로 페이딩함으로써, 사전 결정된 프레임을 디스플레이함으로써 등등).
구체적으로, 도 1은 일 실시예에 따라 타임라인(100, 120)상의 스트리밍 미디어의 나머지 부분의 재생에 선행된 프리-페치된 도입 시퀀스의 재생을 도시한다. 타임라인(100, 120)은 공통 도입 시퀀스를 갖는 상이한 콘텐츠의 선택 및 프리젠테이션을 갖는 대체 타임라인을 나타내며, 일반적으로 타임라인(100)으로 지칭될 수 있다. 타임라인(100)은 클라이언트 디바이스상의 비디오 재생기(102)를 사용하여 파일명(104a)을 갖는 프리-페치된 비디오(110a)의 재생을 포함할 수 있다. 타임라인(120)은 클라이언트 디바이스상의 비디오 재생기(103)를 사용하여 파일명(104c)을 갖는 프리-페치된 비디오(110c)의 재생을 포함할 수 있다. 도시된 바와 같이, 타임라인(100)과 타임라인(120)은 동일한 프리-페치된 비디오, 예를 들어, cached_intro_0058.mpeg를 디스플레이한다. 일부 구현예에서, 비디오 재생기(102)와 비디오 재생기(103)는 내장된 웹 브라우의 비디오 재생기, 비디오 재생기 애플리케이션 또는 다른 미디어 인터페이스와 같은, 동일한 비디오 미디어 재생기이다. 각 파일명은 .mpeg 확장자로 표시되지만, 미디어 페이로드는 임의의 비디오 포멧(예컨대, 3g2, 3gp, avi, flv, mov, MPEG-1, MPEG-2, MPEG-4, mpg), 임의의 오디오 포맷(예컨대, MP3), 임의의 아카이브(archive) 포맷(예컨대, ZIP) 또는 기타 미디어 컨테이너 포맷을 포함할 수 있다.
프리-페치된 비디오의 비디오 재생은 시작과 종료를 모두 가진다. 타임라인(100)상의 시작(106a)과 타임라인(120)상의 시작(106c)은 그들의 각각의 타임라인상의 시간 A에 모두 대응하는 반면, 타임라인(100)상의 종료(108a)와 타임라인(120)상의 종료(108c)는 둘 다 그들의 각각의 타임라인상의 시간 B에 대응한다. 각각의 시작(예컨대, 00:00:00)과 종료(예컨대, 00:00:05)는 도시된 예에서 시간: 분:초의 시간 형식을 사용한다. 재생 지속시간은 각 타임라인의 시작 및 종료 지점 쌍간의 시간 차이를 나타낼 수 있다. 5초의 지속시간으로 도시되었지만, 많은 구현예에서, 프리-페치된 비디오는 1초, 30초, 1분, 1시간 또는 비디오의 재생 시간의 임의의 다른 지속시간과 같은, 상이한 재생 시간을 가질 수 있다.
또한, 각각의 타임라인은 추가적인 스트리밍 비디오 콘텐츠의 재생을 포함할 수 있다. 도시된 바와 같이, 타임라인(100)은 클라이언트 디바이스상의 비디오 재생기(102)를 사용하여 파일명(104b)(예를 들어, www.url/a lane_landing.html)을 갖는 스트리밍 비디오(110b)의 재생을 포함한다. 타임라인(120)은 동일한 클라이언트 디바이스상의 비디오 재생기(103)를 사용하여 파일명(104d)(예를 들어, www.url/ad_0102.html)을 갖는 스트리밍 비디오(110d)의 재생을 포함한다. 일부 구현예에서, 비디오 재생기(102)와 비디오 재생기(103)는 동일한 비디오 미디어 재생기이다.
프리-페치된 비디오의 재생과 유사하게, 스트리밍 비디오의 재생 역시 시작과 종료 모두를 갖는다. 타임라인(100)상의 시작(106b)와 타임라인(120)의 종료(106d)는 그들의 각각의 타임라인상의 시간 C에 대응하는 반면, 타임라인(100)상의 종료(108b)와 타임라인(120)상의 종료(108d)는 각각 그들의 타임라인상의 시간 C에 대응한다. 특정 지속시간으로 도시되었지만, 많은 구현예에서, 스트리밍 비디오 콘텐츠는 1초, 30초, 1 분, 1시간 또는 비디오의 임의의 다른 재생 시간과 같은, 상이한 재생 시간을 가질 수 있다.
스트리밍 미디어는 데이터그램 프로토콜(UDP), 실시간 스트리밍 프로토콜(RTSP, 실시간 전송 프로토콜(RTP), 실시간 스트리밍 프로토콜(RTCP), 실시간 전송 프로토콜(RTP), HTTP 프로토콜, TCP, 유니 캐스트, 멀티 캐스트, IP 멀티 캐스트, 피어-투-피어와 같은, 임의의 프로토콜을 사용하여 클라이언트로 전달될 수 있다. 일부 구현예에서, 스트리밍 비디오 콘텐츠는 비디오 재생기에 디스플레이되기 전에 먼저 클라이언트로 다운로드된다. 예를 들어, 요청된 콘텐츠를 수신하는 것에 응답하여, 클라이언트는 먼저 스트리밍 콘텐츠를 디바이스 내부의 메모리 저장소에 다운로드할 수 있다. 일 구현예에서, 클라이언트 디바이스는 스트리밍 콘텐츠를 디바이스와 통신하는 데이터베이스(예컨대, RAM, ROM, 메모리 카드, 내부 또는 외부 하드 드라이브, USB 플래시 드라이브, 데이터베이스)에 다운로드할 수 있다. 스트리밍 콘텐츠는 임의의 비디오 포멧(예컨대, 3g2, 3gp, avi, flv, mov, mpeg-1, mpeg-2, mpeg-4, mpg), 임의의 오디오 포멧(예컨대, mp3), 임의의 아키브 포멧(예컨대, zip) 또는 임의의 다른 알려진 또는 나중에 발견된 미디어 컨테이너 포멧을포함할 수 있다. 일단 저장되거나 다운로드되면, 클라이언트 디바이스는 클라이언트 디바이스의 비디오 재생기를 사용하여 상기 저장된 콘텐츠를 렌더링할 수 있다.
콘텐츠를 스트리밍하기 위한 클라이언트 디바이스에 의한 요청 이전에, 클라이언트 디바이스는 미디어 페이로드(예컨대, 도입 콘텐츠) 및 공통 미디어 식별자(예컨대, 클라이언트 디바이스상에 저장된 미디어 페이로드에 대한 어드레스)를 포함하는 공통 미디어 패키지를 사전 캐싱(pre-cached)할 수 있다. 일부 구현예에서, 클라이언트 디바이스는 요청된 스트리밍 콘텐츠와 관련된 공통 미디어 패키지가 클라이언트 디바이스에 의해 이전에 수신 및 저장되지 않았음을 결정할 수 있다. 따라서, 그러 경우, 클라이언트 디바이스는 공통 미디어 패키지의 사본에 대한 요청을 미디어 서버로 전송할 수 있다. 다른 구현들에서, 미디어 서버는 클라이언트에 의한 요청을 수신하지 않고, 클라이언트 디바이스를 포함하는 하나 이상의 미디어 디바이스로 공통 미디어 패키지를 이전에 전송하거나 푸싱할 수 있다. 공통 미디어 패키지의 푸시는 공통 미디어 패키지에 대한 수정(예컨대, 업데이트), 시간 이벤트(예컨대, 하루의 특정 시간, 요일, 달, 년 또는 임의이 다른 시간 조합)와 같은 하나 이상의 트리거링 이벤트를 기반으로 할 수 있다. 다른 시간 조합), 일정 이벤트, 사용자의 관심을 기술하는 파일(예컨대, 클라이언트 디바이스상에 위치한 쿠키 파일은 클라이언트가 현재 요트에 관심이 있음을 보여준다) 또는 사용자가 행한 검색 요청과 같은 하나 이상의 트리거링 이벤트에 기초할 수 있다.
일부 구현예에서, 클라이언트 디바이스는 서로간에 공통 미디어 패키지를 공유 및 전송할 수 있다. 예를 들어, 도입 콘텐츠를 표시하기 위해 공통 미디어 패키지의 캐싱된 사본을 필요로 하는 스트리밍 콘텐츠를 요청하는 제1 클라이언트 디바이스는, 공통 미디어 패키지가 클라이언트 디바이스상에 현재 캐싱되지 않은 경우 미디어 서버로부터 공통 미디어 패키지를 요청할 수 있다. 일부 구현예에서, 클라이언트 디바이스는 미디어 콘텐츠 서버로부터 요청하는 대신에 상기 제1 클라이언트 디바이스와 관련된 제2 클라이언트 디바이스로부터 공통 미디어 패키지를 대신 수신할 수 있다. 예를 들어, 사용자는 이동 전화 및 데스크탑 컴퓨터를 가질 수 있다. 데스크탑 컴퓨터는 이미 영화와 관련된 공통 미디어 패키지의 사본을 프리-페치했을 수 있다. 따라서, 데스크탑 컴퓨터는 공통 미디어 패키지를 수신하면, 해당 공통 미디어 패키지를 이동 전화로부터의 요청에 응답하여 이동 전화로 전송할 수 있다. 따라서, 사용자가 데스크탑에서 영화의 전반부 및 이동 전화에서 후반부를 보기로 결정한 경우, 사용자는 이동 전화에서 볼 때 공통 미디어 패키지를 다운로드할 때까지 기다릴 필요가 없다. 일부 구현예에서, 상기 데스크탑은 이동 전화의 요청 없이도 공통 미디어 패키지를 이동 전화와 공유한다.
도 1을 여전히 참조하면, 일단 도입 콘텐츠가 종료되면 스트리밍 비디오가 표시된다. 이러한 2개의 비디오의 원활한 디스플레이를 보장하기 위해, 스트리밍 비디오(110b)는 프리-페치된 비디오(110a)의 비디오 재생을 시작하기 전에 특정 시간 동안 클라이언트 디바이스 상에 버퍼링될 필요가 있을 수 있다. 예를 들어, 클라이언트 디바이스는 영화를 요청할 수 있다. 영화를 수신하기 위한 요청을 미디어 서버로 전송한 후, 클라이언트 디바이스는 영화에 대한 3초 도입 장면을 포함하는 공통 미디어 패키지가 이미 프리-페치되어 그의 내부 메모리상에 캐싱된 것으로 결정할 수 있다. 그러나, 영화의 전달이 과도하게 지연되면(예를 들어, 불량한 네트워크 상태, 라이센스 또는 기타 이슈로 인한 미디어 서버에 의한 의도적 또는 비 의도적인 지연으로 인해), 영화를 버퍼링하기 전에 3초의 도입 장면을 표시하면 두 비디오가 끊김없이 표시된다.
스트리밍 비디오는 하나 이상의 클립, 영화(movies), 영화(films), 텔레비전 에피소드 또는 시리즈, 광고, 사용자 제작 콘텐츠, 다큐멘터리, 뮤지컬, 멀티미디어 스트림 또는 다른 콘텐츠를 포함할 수 있다. 따라서, 스트리밍 비디오(예컨대, 스트리밍 비디오(110b), 스트리밍 비디오(110d))는 비디오 콘텐츠 또는 프로그래밍의 임의의 하나 또는 임의의 조합과 관련될 수 있다.
도 2는 클라이언트 디바이스로 미디어 콘텐츠를 스트리밍(또는 로딩)하는데 필요한 전송 시간 및/또는 대역폭을 감소시키기 위한 예시적인 환경(200)의 블록도이다. 환경(200)은 스트리밍 멀티미디어 콘텐츠와 관련있는 공통 미디어 패키지를 제공하는 것을 포함하여 스트리밍 멀티미디어 콘텐츠(예를 들어, 비디오, 영화)를 제공하는 미디어 콘텐츠 서버(206)를 포함한다. 예시적인 환경(200)은 미디어 콘텐츠 서버(206)에 의해 생성된 공통 미디어 패키지뿐만 아니라 미디어 콘텐츠 서버(206)에 의해 네트워크(202)로부터 수신되거나 수집된 멀티미디어 콘텐츠를 저장하는, 멀티미디어 콘텐츠 저장소(232)와 같은 저장 디바이스를 포함한다. 예시적인 환경(200)은 클라이언트 디바이스(204)를 미디어 콘텐츠 서버(206)와 연결시키는 LAN(local area network), 광역 네트워크(WAN),인터넷, 또는 이들 또는 다른 네트워크들의 조합과 같은 네트워크(202)를 포함할 수 있다. 환경(200)은 수천의 클라이언트 디바이스(204)를 포함할 수 있다. 도시되지는 않았지만, 많은 구현예에서, 네트워크(202)는 게이트웨이, 라우터, 방화벽, 스위치, 네트워크 가속기, WiFi 액세스 포인트 또는 핫 스폿, 또는 다른 디바이스를 포함하는, 하나 이상의 중개 디바이스를 포함할 수 있다.
클라이언트 디바이스(204)는 사용자의 제어하에 있고 네트워크(202)를 통해 리소스 콘텐츠의 아이템들을 요청하여 수신할 수 있는 전자 디바이스이다. 예시적인 클라이언트 디바이스(204)는 퍼스널 컴퓨터, 이동 통신 디바이스(예를 들어, 스마트폰 또는 태블릿) 및 네트워크(202)를 통해 데이터를 송수신할 수 있는 다른 디바이스를 포함한다. 클라이언트 디바이스(204)는 전형적으로 네트워크(202)를 통해 데이터의 송신 및 수신을 용이하게 하기 위해 사용자 애플리케이션, 예를 들어 웹 브라우저 또는 미디어 플레이어 애플리케이션을 포함한다.
도 3a는 클라이언트 디바이스(204)와 같은 클라이언트의 클라이언트 디바이스(300)의 일 실시예의 블록도이다. 클라이언트 디바이스(300)는 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 디지털 비디오 레코더, 텔레비젼용 셋탑 박스, 비디오 게임 콘솔, 또는 임의의 다른 유형 및 형태의 컴퓨팅 디바이스 또는 디바이스의 조합을 포함하지만 이에 한정되지 않는, 네트워크를 통해 통신하도록 구성된 임의의 수의 상이한 유형의 사용자 전자 디바이스일 수 있다. 일부 구현예에서, 클라이언트 디바이스(300)의 유형은 이동 디바이스, 데스크탑 디바이스 또는 근거리 통신망을 통해 주로 네트워크에 액세스하도록 고정되거나 구성되도록 의도된 디바이스, 또는 미디어 소비 디바이스와 같은 다른 카테고리의 전자 디바이스로서 분류될 수 있다.
많은 구현예에서, 클라이언트 디바이스(300)는 프로세서(302)와 메모리 (304)를 포함한다. 메모리(304)는 프로세서(302)에 의해 실행될 때 프로세서(302)로 하여금 본 명세서에 설명된 하나 이상의 동작을 수행하게 하는 기계 명령을 저장할 수 있다. 프로세서(302)는 마이크로 프로세서, ASIC, FPGA 또는 이들의 조합을 포함 할 수 있다. 많은 구현들에서, 프로세서(302)는 멀티-코어 프로세서 또는 프로세서들의 어레이일 수 있다. 메모리(304)는 전자, 광학, 자기 또는 프로세서 (302)에 프로그램 명령을 제공할 수 있는 임의의 다른 저장소 디바이스를 포함 할 수 있지만, 이에 한정되는 것은 아니다. 메모리(304)는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 매체 또는 프로세서(302)가 명령을 판독 할 수 있는 임의의 다른 적절한 메모리를 포함 할 수 있다. 상기 명령에는 C, C ++, C#, Java, JavaScript, Perl, HTML, XML, Python 및 Visual Basic과 같은 임의의 적합한 컴퓨터 프로그래밍 언어의 코드가 포함될 수 있지만 이에 한정되는 것은 아니다.
클라이언트 디바이스(300)는 하나 이상의 네트워크 인터페이스(306)를 포함할 수 있다. 네트워크 인터페이스(306)는 10 Base T, 100 Base T 또는 1000 Base T("Gigabit")를 포함하는 이더넷; 802.11a, 802.11b, 802.11g, 802.11n 또는 802.11ac과 같은 임의 종류의 802.11 무선 제품; CDMA, LTE, 3G 또는 4G 셀룰러를 포함하는 셀룰러; 블루투스 또는 기타 근거리 무선 접속; 또는 네트워크 또는 다른 컴퓨팅 디바이스와 통신하기 위한 이들 또는 다른 인터페이스의 임의의 조합을 포함하는, 임의 유형 및 형태의 인터페이스를 포함할 수 있다. 많은 구현예에서, 클라이언트 디바이스(300)는 상이한 서브-네트워크를 통해 지역 네트워크 또는 인터넷을 포함하는 광역 네트워크와 같은, 다양한 네트워크로의 접속을 가능하게 하는 상이한 유형의 복수의 네트워크 인터페이스(306)를 포함할 수 있다.
클라이언트 디바이스(300)는 하나 이상의 사용자 인터페이스 또는 입력/출력 디바이스(308)를 포함할 수 있다. 사용자 인터페이스 디바이스(308)는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드, 촉각 피드백 등)를 생성함으로써 사용자에게 데이터를 전달하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호로 변환하는 임의의 전자 디바이스(예컨대, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크 등)일 수 있다. 하나 이상의 사용자 인터페이스 디바이스는 다양한 구현에에 따라, 내장형 디스플레이, 터치 스크린, 마이크로폰 등과 같이 클라이언트 디바이스(300)의 하우징 내부에 있거나 또는 클라이언트 디바이스(300)에 연결된 모니터, 클라이언트 디바이스(300)에 연결된 스피커와 같이 클라이언트 디바이스(300)의 하우징 외부에 있을 수 있다.
클라이언트 디바이스(300)는 메모리(304)에 애플리케이션(310)을 포함할 수 있거나 프로세서(302)로 애플리케이션(310)을 실행할 수 있다. 애플리케이션(310)은 콘텐츠를 수신하여 응답, 명령 또는 다른 데이터를 전송하기 위한 애플리케이션, 애플릿(applet), 스크립트, 서비스, 데몬, 루틴 또는 다른 실행 가능 로직일 수 있다. 일 실시예에서, 애플리케이션(310)은 웹 브라우저일 수 있고, 다른 구현에서, 애플리케이션(310)은 미디어 프리젠 테이션 애플리케이션일 수 있다. 애플리케이션(310)은 네트워크 인터페이스(306)를 통해 수신된 콘텐츠 및/또는 프로세서 (302)에 의해 국부적으로 생성된 콘텐츠를 디스플레이하고, 웹 사이트에 대한 요청, 설문 응답 옵션의 선택, 입력 텍스트 스트링 등과 같은 사용자 인터페이스 디바이스(308)를 통해 수신된 상호 작용을 전송하기 위한 기능(functionality)을 포함할 수 있다.
일부 구현예에서, 애플리케이션(310)은 수집(collection) 에이전트(312)를 포함할 수 있다. 수집 에이전트(312)는 애플리케이션(310)에 의해 처리된 데이터를 수집하고 및/또는 인터페이스(308)와의 사용자의 상호 작용을 모니터링하기 위한 애플리케이션 플러그-인, 애플리케이션 확장, 서브 루틴, 브라우저 툴바, 데몬 또는 다른 실행 가능 로직을 포함할 수 있다. 다른 구현들에서, 수집 에이전트(312)는 애플리케이션(310)과 별개인 별도의 애플리케이션, 서비스, 데몬, 루틴 또는 다른 실행 가능 로직일 수 있지만, 스크린 스크래퍼(screen scraper), 패킷 인터셉터, API 후킹(hooking) 프로세스 또는 다른 그러한 애플리케이션과 같은 애플리케이션(310)에 의해 처리되는 데이터를 인터셉트 및/또는 수집하도록 구성된다.
수집 에이전트(312)는 마우스 클릭, 스크롤 휠 이동, 스와이프, 핀치 또는 터치와 같은 제스처, 또는 임의의 다른 이러한 상호 작용을 포함하는 사용자 인터페이스 디바이스(308)를 통해 입력된 데이터; 이뿐만 아니라 디스플레이된 콘텐츠 또는 재생된 미디어, 시작시간, 종료시간 및 재생 지속 시간을 포함하는 애플리케이션(310)에 의해 수신되고 처리된 데이터, 이뿐만 아니라 일시정지(pausing), 재설정 또는 재시작, 빨리 감기, 뮤트 또는 임의의 다른 그러한 상호 작용을 포함하는 재생 제어와의 상호 작용을 인터셉트 또는 수신하도록 구성될 수 있다. 수집 에이전트(312)는 그의 관련된 공통 미디어 패키지에 추가하여, 텔레비전 쇼, 영화, 노래(song), 뮤직 비디오 또는 다른 그러한 콘텐츠와 같은, 클라이언트 디바이스에 의해 수신된 스트리밍된 멀티미디어 콘텐츠를 식별할 수 있다. 콘텐츠는 ID3 태그 또는 다른 그러한 메타 데이터, URL(Uniform Resource Locator) 또는 URI(Uniform Resource Identifier), 파일명, 캡션(captions), 제목 또는 콘텐츠와 함께 제공되는 다른 유형 및 형태의 데이터를 포함하는 식별자 태그에 기초하여 식별될 수 있다. 수집 에이전트(312)는 멀티미디어 콘텐츠의 재생 또는 시청 지속시간 또는 누적 재생 시간을 식별하거나 추적할 수 있다.
클라이언트 디바이스(300)는 디바이스 식별자(314)를 포함하거나 디바이스 식별자(314)로 식별될 수 있다. 디바이스 식별자(314)는 MAC 어드레스, 텍스트 및/또는 수치 데이터 스트링, 사용자명, 암호화 공개키, 쿠키, 디바이스 일련 번호, 사용자 프로필 데이터, 네트워크 어드레스, 또는 클라이언트 디바이스(300)를 다른 클라이언트 디바이스들(300)과 구별하기 위해 사용될 수 있는 임의의 다른 식별자를 포함하지만 이에 한정되지 않는, 임의의 유형 및 형태의 식별을 포함할 수 있다.
일부 구현예에서, 디바이스 식별자(314)는 하나 이상의 다른 디바이스 식별자(314)(예를 들어, 이동 디바이스에 대한 디바이스 식별자, 가정용 컴퓨터에 대한 디바이스 식별자 등)와 관련될 수 있다. 많은 구현예에서, 프라이버시를 유지하기 위해, 디바이스 식별자(314)는 암호로 생성되거나, 암호화되거나 또는 다른 방법으로 난독화될(obfuscated) 수 있다. 일부 구현예에서, 클라이언트 디바이스(300)는 디바이스 식별자(314)와 유사할 수 있지만, 매시간, 매일, 애플리케이션(310)의 활성화시 또는 임의의 다른 주기와 같이, 보다 빈번하게 생성되는 세션 식별자(316)를 포함할 수 있다. 세션 식별자(316)는 클라이언트 디바이스(300)에 의해 생성되거나 서버, 콘텐츠 제공자 또는 다른 디바이스로부터 수신될 수 있다. 세션 식별자(316)는 익명성을 증가시키기 위해 디바이스 식별자(314) 대신에 사용될 수 있거나, 하나의 세션의 상호 작용과 다른 세션의 상호 작용을 구별하기 위해 디바이스 식별자(314)와 관련하여 사용될 수 있다. 세션은 멀티미디어 콘텐츠(예를 들어, 스트리밍 콘텐츠 미디어, 공통 미디어 패키지)에 대한 하나 이상의 요청을 포함할 수 있고, 각각의 세션은 각 세션과 관련된 시간 및/또는 날짜 기록을 포함할 수 있다.
수집 에이전트(312)는 디바이스 식별자(314), 세션 식별자(316) 및 수집 에이전트(312)에 의해 수집된 임의의 데이터를 데이터베이스(예를 들어, 멀티미디어 콘텐츠 저장소(232))로 전달하도록 구성될 수 있다. 이러한 데이터의 사본을 데이터베이스에 저장하는 것은, 클라이언트 디바이스(204)가 네트워크(예를 들어, 네트워크(202))로부터 단절(disconnect)되거나, 열악한 신호 환경(예컨대, 페이딩)에서 데이터를 송신 또는 수신하거나, 전원이 꺼져 있는 경우에 미디어 콘텐츠 서버(예컨대, 미디어 콘텐츠 서버(318))에 이용 가능하다는 이점을 갖는다.
도 3b를 참조하면, 도 3b는 도 2의 미디어 콘텐츠 서버(206)와 같은 일 구현예에 따른 미디어 콘텐츠 서버(318)의 블록도이다. 클라이언트 디바이스(300)에서와 같이, 미디어 콘텐츠 서버(318)는 하나 이상의 프로세서(302), 메모리(304), 네트워크 인터페이스(306) 및 사용자 인터페이스(308)를 포함할 수 있다. 헤드리스 (headless) 서버로 지칭되는 일부 구현예에서, 미디어 콘텐츠 서버(318)는 사용자 인터페이스(308)를 포함하지 않을 수 있지만, 네트워크를 통해 사용자 인터페이스(308)를 갖는 클라이언트 디바이스(300)와 통신할 수 있다. 메모리(204)는 추출기/생성기 엔진(336)에 의해 추출 및 생성된 공통 미디어 패키지를 저장하는 공통 미디어 패키지 저장소(330)를 포함할 수 있다. 일부 구현예에서, 메모리(304)는 FTP 서버, 웹 서버, 메일 서버, 파일 공유 서버, 피어 투 피어 서버, 또는 멀티미디어 콘텐츠 저장소(232) 및 공통 미디어 패키지 저장소(330)에 저장된 콘텐츠를 전달하기 위한 다른 애플리케이션을 포함하는, 미디어 콘텐츠 서버(318)의 프로세서(302)에 의한 실행을 위한 하나 이상의 애플리케이션(310)(미 도시된)을 저장할 수 있다.
미디어 콘텐츠 서버(318)는 콘텐츠 선택 엔진(324)을 포함할 수 있다. 콘텐츠 선택 엔진(324)은 하나 이상의 식별자를 포함하는 클라이언트 디바이스(300)로부터의 요청에 응답하여 멀티미디어 콘텐츠 저장소(232)로부터 콘텐츠를 선택하기 위한 애플리케이션, 서비스, 루틴, 서버, 데몬, 또는 다른 실행 가능 로직을 포함할 수 있다. 멀티미디어 콘텐츠(예컨대, 스트리밍 멀티미디어 콘텐츠) 또는 공통 미디어 패키지(예컨대, 도입 멀티미디어 콘텐츠)에 대한 클라이언트 디바이스(300)에 의한 요청은 디바이스 식별자(예컨대, 디바이스 식별자(314)), 세션 식별자(예컨대, 세션 식별자(316)), 요청 날짜 및 시간, 키워드, 장르, 유형, 작성자, 작성일, 미복착(unwatched) 플래그, 또는 기타 다른 유형 및 형태의 식별 또는 특성을 포함할 수 있다. 콘텐츠 선택 엔진(324)은 요청 내의 특성들 또는 식별자들과 매칭하는 멀티미디어 콘텐츠 저장소(232) 내의 멀티미디어 콘텐츠의 하나 이상의 아이템을식별할 수 있다. 또한, 컨텐트 선택 엔진(324)은 요청된 멀티미디어 컨텐트와 연관된 멀티미디어 컨텐트 저장소(232) 내의 공통 미디어 패키지를 식별할 수 있다. 이후 콘텐츠 선택 엔진(324)은 클라이언트 디바이스(300)에 전달되도록 상기 선택된 멀티미디어 콘텐츠 및 공통 미디어 패키지를 콘텐츠 전달 엔진(328)으로 전달한다. 일부 구현예에서, 콘텐츠 선택 엔진(324)은 멀티미디어 콘텐츠의 선택된 아이템의 수를 제한하여, 10, 20, 50 또는 임의의 다른 사전 결정된 수의 아이템을 반환할 수 있다.
콘텐츠 관리 서버(318)는 콘텐츠 전달 엔진(328)을 포함할 수 있다. 콘텐츠 전달 엔진(328)은 하나 이상의 식별자를 포함하는 클라이언트 디바이스(300)로부터의 요청에 응답하여 멀티미디어 콘텐츠 저장소(232)로부터 멀티미디어 콘텐츠 및 공통 미디어 패키지를 선택하기 위한 애플리케이션, 서비스, 루틴, 서버, 데몬 또는 다른 실행 가능 로직을 포함할 수 있다. 일부 구현예에서, 콘텐츠 전달 엔진(328)은 콘텐츠 선택 엔진(324)으로부터 하나 이상의 콘텐츠 아이템 또는 공통 미디어 패키지를 수신하여 각각을 하나 이상의 클라이언트 디바이스로 전달할 수 있다. 다른 구현들에서, 콘텐츠 전달 엔진(328)은 콘텐츠 선택 엔진(324)으로부터 하나 이상의 콘텐츠 아이템들의 리스트를 수신하여 하나 이상의 클라이언트 디바이스들로 해당 리스트를 전달할 수 있다. 다른 구현예에서, 콘텐츠 전달 엔진(328)은 멀티미디어 콘텐츠 저장소(232)와 같은 데이터베이스로부터 리스트 상에 있는 하나 이상의 콘텐츠 아이템을 검색하여 하나 이상의 아이템을 하나 이상의 클라이언트 디바이스로 전달할 것이다. 일부 구현예에서, 콘텐츠 전달 엔진(328)은 하나 이상의 스폰서(sponsored) 콘텐츠 아이템에 컴퓨터 코드(예컨대, C, C ++, TCL, PERL, VBA, HTML, Hyperscript, VBscript, Flash 등)를 삽입하여, 클라이언트 디바이스의 브라우저로 하여금 스폰서 콘텐츠로 코딩된 리소스 위치로 이동(navigate)하게 할 수 있다.
미디어 콘텐츠 서버(318)는 식별자 엔진(332)을 포함할 수 있다. 식별자 엔진(332)은 공통의 미디어 데이터의 일부를 갖는 멀티미디어 콘텐츠 저장소(232) 내의 복수의 미디어 콘텐츠 아이템의 서브셋을 식별하기 위한 애플리케이션, 서비스, 루틴, 서버, 데몬, 또는 다른 실행 가능 로직을 포함할 수 있다. 일부 구현예에서, 식별자 엔진(332)은 후술되는 도 4에 도시된 프로세스(400)를 실행함으로써 미디어 아이템의 하나 이상의 서브 세트를 식별할 수 있다. 식별자 엔진(332)은 멀티미디어 콘텐츠 저장소(232)로부터, 서브 그룹에 이미 할당되지 않은 콘텐츠의 제1 아이템 및 서브 그룹에 할당된 콘텐츠의 제2 아이템을 선택함으로써 시작될 수 있다. 그런 다음, 식별자 엔진(332)은 콘텐츠의 제1아이템의 특정 시간 부분 또는 "타임슬롯"에 존재하는 멀티미디어 콘텐츠를 콘텐츠의 제2아이템의 특정 타임슬롯(예를 들어, 대응하는 프레임, 초, 분 또는 본 명세서에서 일반적으로 타임슬롯으로 지칭되는 임의의 다른 지속시간)과 비교하도록 진행한다. 일부 구현예에서는, 동일한 타임슬롯이 비교되고, 반면에 다른 구현에서는, 제1 아이템의 제1 타임슬롯 또는 일부(portion)는 제2 아이템의 지속 기간에 대해 이동된 슬라이딩 윈도우 내의 일부 또는 범위(예를 들어, ±10초)와 비교될 수 있다. 또한, 상기 비교는 콘텐츠 아이템의 비디오 정보 및 오디오 정보 모두에 기초한다. 다른 구현에서, 상기 비교는 비디오 콘텐츠 또는 오디오 콘텐츠에 기초한다.
멀티미디어 콘텐츠는 다양한 기술을 사용하여 비교될 수 있다. 예를 들어, 일 구현예에서, 식별자 엔진(332)은 제1 해시값을 계산하기 위해 제1 미디어 아이템의 하나의 타임슬롯 내에서 발생하는 멀티미디어 콘텐츠에 대한 암호화 해싱 기능(예를 들어, MD5)을 수행할 수 있다. 식별자 엔진(332)은 제2 미디어 아이템의 하나의 타임슬롯 내에서 발생하는 멀티미디어 콘텐츠에 대해 동일한 암호화 해싱 기능을 수행하여 제2 해시값을 계산할 수 있다. 그런 다음, 식별자 엔진(332)은 제1 해시값을 제2 해시값과 비교할 수 있다. 만약 해시값들이 일치하면, 멀티미디어 콘텐츠의 2개의 비교된 타임슬롯은 동일하다.
일부 구현예에서, 동일한 타임슬롯 인덱스들이 비교된다. 예를 들어, 제1 미디어 아이템의 제1 타임슬롯(예를 들어, 첫 1초, 첫 2초, 첫 3초)은 제2 미디어 아이템의 제1 타임슬롯과 비교될 수 있다. 일부 구현예에서, 상이한 타임슬롯 인덱스들이 비교되어, 상기 비교된 비디오들 간의 위상 또는 일시적 시프트를 고려할 수 있다. 예를 들어, 제1 미디어 아이템은 1초의 블랭크 영상(blank footage), 이어서 5초의 공통 영상(common footage) 및 이후 30초의 짧은 길이의 영화를 포함하고, 제2 미디어 아이템은 5초의 공통 영상에 이어서 2시간의 긴 길이의 영화를 포함한다고 가정하면, 각각의 타임슬롯이 1초인 경우, 식별자 엔진(332)은 제1 미디어 아이템의 제2 타임슬롯(예컨대, 00:00:01 내지 00:00:02)의 해시를 제2 미디어 아이템의 제1 타임슬롯의 해시와 비교한다. 많은 구현예에서, 이러한 비교는 제1 미디어 아이템의 제1 타임슬롯(예를 들어, 프레임, 제2, 10초 등)을 제2 미디어 아이템의 대응하는 제1 타임슬롯; 다음의 타임슬롯; 그 다음의 제3 타임슬롯과 비교하여 반복적으로 수행될 수 있다. 일부 구현예에서, 비교는 (예를 들어, 하나의 프레임을 제1 프레임, 제2 프레임, 제3 프레임 등과 비교하는) 비-중첩 윈도우(non-overlapping windows)를 사용할 수 있으며, 다른 구현예에서, 비교는 중첩 윈도우(예를 들어, 5초 부분을 제2 미디어 아이템의 1초~5초 사이와 비교하고, 이어서 2초~6초 사이와 비교하며, 그 후 3초~7초 사이와 비교하는)를 사용할 수 있다. 많은 구현예에서, 비교는 시각 콘텐츠 전체에 대해 수행될 수 있는 반면, 다른 구현예에서, 비교는 콘텐츠의 서브 세트에 대해 수행될 수 있다. 일부 그러한 구현예에서, 식별자 엔진(332)은 각 미디어 아이템의 공간 부분(spatial portions)의 해시값을 비교할 수 있다. 예를 들어, 식별자 엔진(332)은 프레임의 제1 매크로 블록(예를 들어, 8×8 또는 16×16 픽셀 영역) 또는 각 타임 슬롯의 상부 절반, 각 타임 슬롯의 중간 절반, 또는 각 미디어 아이템의 각 타임 슬롯의 하부 절반으로부터 계산된 해시값들을 비교할 수 있다. 일부 구현예에서, 식별자 엔진(332)은 각 미디어 아이템의 픽셀을 비교(예컨대, 픽섹 대 픽셀)할 수 있다. 일부 구현예에서, 식별자 엔진(332)은 제1 미디어 아이템의 픽셀 그룹을 제2 미디어 아이템의 픽셀 그룹과 비교할 수 있다. 다른 구현예에서, 식별자 엔진(332)은 비디오 프레임의 평균값(예를 들어, 평균 컬러값, 평균 휘도 등)을 제2 미디어 아이템의 다른 비디오 프레임의 평균값과 비교할 수 있다. 또 다른 구현예에서, 평균들이 일치하는 경우에만, 식별자 엔진(332)은 각 프레임의 보다 상세한 비교(예를 들어, 매크로 블록 단위의, 픽셀 단위의 등)를 수행할 수 있다. 상이한 또 다른 구현예에서, 식별자 엔진은 프레임들의 연속적인 평균값을 제2 미디어 아이템의 대응하는 프레임들의 연속적인 평균값과 비교할 수 있다. 예를 들어, 5개의 연속적인 프레임들의 평균 휘도(average brightness)가 [0.3, 0.4, 0.7, 0.6, 0.2]이면, 식별자 엔진(332)은 제2 미디어 아이템의 프레임들의 유사한 시퀀스를 식별할 수 있다. 다른 구현예에서, 식별자 엔진(332)은 제1 미디어 아이템의 오디오를 제2 미디어 아이템의 대응하는 오디오와 비교하거나, 또는 제1 미디어 아이템의 블랭킹 구간(interval)에 포함된 폐쇄 자막 데이터(closed captioning data)와 같은 임베디드(embedded) 데이터를 제2 미디어 아이템의 블랭킹 구간에 포함된 대응하는 폐쇄 자막 데이터와 비교할 수 있다.
비교가 일치하면, 식별자 엔진(332)은 동일한 서브 그룹으로부터 선택된 콘텐츠의 제3 아이템의 타임슬롯과 매칭하는 콘텐츠의 제2아이템의 타임슬롯의 수를 카운트하고 기록한다. 예를 들어, 식별자 엔진(332)이 (서브 그룹에 할당되지 않은) 제1 콘텐츠 아이템의 처음 3초와 (서브 그룹에 할당된) 제2 콘텐츠 아이템의 처음 3초 사이의 매치를 찾은 후에, 식별자 엔진(332)은 서브 그룹에 추가되기 위해 제1 콘텐츠 아이템의 어떤 나머지 부분이 제2 콘텐츠 아이템과 매칭되어야 하는지를 결정해야 한다. 이러한 결정을 내리기 위해, 식별자 엔진(332)은 (서브 그룹에 할당된) 제2 콘텐츠 아이템을 동일한 그룹에 또한 할당되는 다른 콘텐츠 아이템과 비교해야 한다. 이러한 비교로부터, 식별자 엔진(332)은 서브 그룹 멤버의 각 아이템이 서로 공통으로 갖는 최초 3초를 초과하는 콘텐츠의 초 수를 결정할 수 있다. 예를 들어, 제2 콘텐츠 아이템은 동일한 하위 그룹의 다른 콘텐츠 아이템과 공통으로 15초를 가질 수 있다. 따라서, 식별자 엔진(332)은 서브 그룹에 대한 멤버십이 허용되기 전에 제1 콘텐츠 아이템과 제2 콘텐츠 아이템간에 매칭하는 타임슬롯의 수(예를 들어, 1 타임슬롯 또는 3초)가 적어도 기록된 카운트(예컨대, 5 타임슬롯 또는 15초)와 동일한지 검증해야 한다
일부 구현예에서, 식별자 엔진(332)은 서브 그룹의 각 멤버가 서로 공통으로 갖는 타임슬롯의 총수가 서브 그룹 내에 관련된 인덱스에서 식별되면, 타임슬롯의 수를 카운트하는 단계를 건너 뛸 수 있다. 예를 들어, 서브 그룹은 5개의 서브 그룹 멤버가 공통적으로 3개의 타임슬롯을 가지며 각 타임슬롯은 15초의 시간으로 정의되는 것을 나타내는 인덱스를 가질 수 있다. 타임슬롯은 하나의 프레임, 5 프레임, 10 프레임, 1초, 5초, 15초, 1 분 또는 임의의 다른 길이와 같은, 임의의 길이 또는 지속시간일 수 있다. 다른 구현들에서, 서브 그룹들은 항상 시간의 가장 큰 공통 부분(예를 들어, 30초, 45초 등)에 의해 식별될 수 있고, 따라서 단일의 더 큰 타임슬롯을 가질 수 있다. 따라서, 타임슬롯은 파일 블록 또는 청크(chunks)를 표현하거나 장면, 시퀀스, 도입 부분 또는 다른 미디어 세그먼트를 완성할 수 있다. 예를 들어, 청크는 선택된 콘텐츠 아이템(예컨대, "Groundhogs Week”라고 하는 영화)의 등급(rating)을 나타내는, 클라이언트 디바이스(300)에 저장된 5초 클립의 비디오(예컨대, C:\movie_rating_PG.mpgor/localhost/media/movie_rating _PG.mpg)의 파일 어드레스를 포함할 수 있다. 다른 예에서, 청크의 식별은 URL(예를 들어, www.example.com/groundhogs_week.mpg)과 같은 네트워크 위치에 대한 어드레스일 수 있으며, 여기서 클라이언트 디바이스(300)는 클라이언트 디바이스 (300)상의 비디오 플레이어에 직접 콘텐츠를 스트리밍하거나 비디오 재생기로 렌더링하기 전에 클라이언트 디바이스(300)상의 저장 위치에 콘텐츠를 직접 다운로드함으로써 클라이언트 디바이스(300)가 선택된 콘텐츠 아이템에 액세스할 수 있다
콘텐츠 아이템이 검증 단계를 통과하면 제2 콘텐츠 아이템이 멤버인 동일한 서브 그룹에 추가된다. 이어서, 식별자 엔진(332)은 서브 그룹에 할당되지 않은 모든 콘텐츠 아이템이 스캔될 때까지 멀티미디어 콘텐츠 저장소(232)에서 다음 콘텐츠 아이템에 대한 처리를 계속한다.
콘텐츠 관리 서버(318)는 추출기/생성기 엔진(336)을 포함할 수 있다. 추출기/생성기 엔진(336)은 식별자 엔진(332)에 의해 식별된 바와 같이, 콘텐츠 아이템으로부터 공통 부분을 추출하기 위한 애플리케이션, 서비스, 루틴, 서버, 데몬, 또는 다른 실행 가능 로직을 포함할 수 있다. 일 실시예에서, 공통 부분은 상술한 바와 같이, 각 콘텐츠 아이템에 대해 식별자 엔진(332)에 의해 기록된 타임슬롯 카운트와 동일한 타임슬롯의 수에 포함된 부분으로서 식별된다.
또한, 추출기/생성기 엔진(336)은 공통 미디어 식별자 및 미디어 페이로드를 포함하는 공통 미디어 패키지를 생성할 수 있다. 일 구현예에서, 공통 미디어 식별자는 클라이언트 디바이스 상에 위치하는 또는 클라이언트 디바이스와 통신 상태에 있는 저장 공간에 대한 어드레스(예를 들어, C:\filename.mpeg)를 포함할 수 있다. 다른 구현들에서, 공통 미디어 식별자는 네트워크 위치(예를 들어, URL)에 대한 어드레스이다. 미디어 페이로드는 임의의 비디오 포멧(예컨대, 3g2, 3gp, avi, flv, mov, mpeg-1, mpeg-2, mpeg-4, mpg), 임의의 오디오 파일 포멧(예컨대, mp3), 임의의 아카이브 포멧(예컨대, zip) 또는 알려진 또는 나중에 발견된 미디어 컨테이너 포멧으로 변환될 수 있는, 추출된 공통 부분을 포함한다. 추출기/생성기 엔진(336)은 미디어 패키지 저장소(334)와 같은 데이터베이스에 공통 미디어 패키지를 저장한다.
일부 구현예에서, 미디어 콘텐츠 서버(318)는 지불 엔진(334)을 실행할 수 있다. 지불 엔진(334)은 제1 콘텐츠 아이템과의 검출된 상호 작용에 응답하여, 제1 콘텐츠 아이템의 제작자, 발행자, 배포자 또는 스폰서를 리스트에 삽입된 유료 (paid) 제2 콘텐츠 아이템과 연관시키기 위한 애플리케이션, 서비스, 서버, 데몬, 루틴, 또는 다른 실행 가능한 로직을 포함할 수 있다. 결재 엔진(334)은 광고와 같은 유료/스폰서 콘텐츠의 제작자 또는 발행자가 시청자를 끌어들이는 인기있는 제1 콘텐츠 아이템의 제작자에게 수입 분배(revenue sharing)를 제공할 수 있고 및/또는 그러한 상호 작용에 대한 지불 및/또는 수익 분배를 제3자 지불 시스템에 지시할 수 있다. 일부 구현예에서, 지불 엔진(334)은 어떤 콘텐츠 아이템이 비디오에 삽입되고 및/또는 비디오와 연관되는지, 상호 작용한 콘텐츠 아이템, 아이템과 상호 작용하는 클라이언트의 디바이스 식별자, 디스플레이된 리스트에 포함시키기 위해 제공된 제2 콘텐츠 아이템, 제2 콘텐츠 아이템이 상호 작용했는지의 여부의 식별 등의 기록 또는 로그를 유지할 수 있다. 지불 엔진(334)은 유료 콘텐츠의 제작자 또는 발행자에게 요금을 부과하기에 충분한 시간 동안 콘텐츠 아이템이 시청되었는지 여부를 결정하기 위해 재생 또는 시청 시간의 지속시간을 화폐화 임계치 (monetization threshold)와 비교할 수 있다.
도 4는 스트리밍 미디어 콘텐츠를 클라이언트 디바이스로 스트리밍하는데 필요한 대역폭을 줄이기 위한 예시적인 프로세스(400)의 일 구현예에서 서버에 의해 행해진 단계들의 흐름도이다. 일부 구현예에서, 프로세스(400)는 예를 들어 미디어 콘텐츠 서버(318)에 의해 수행될 수 있다. 프로세스(400)는 식별 단계(단계 402~450) 및 추출/생성 단계(단계 454~458)를 포함할 수 있다. 각 단계는 순서 재 지정, 추가 또는 제거될 수 있다.
프로세스(400)의 식별 단계의 일 구현예에서, i, j, k 및 Next_SG와 같은 카운터는 각각 0로 초기화된다(단계 402). 미디어 콘텐츠 서버(318)는 복수의 미디어 콘텐츠 아이템들의 서브 그룹 또는 서브 세트에 이미 할당되지 않은 미디어 아이템을 선택할 수 있다. 서브 그룹들은 공통 부분을 갖는 것으로 식별된 미디어 아이템을 포함할 수 있다. 다수의 서브 그룹이 있을 수 있으며(예컨대, 제1공통 도입이 있는 아이템, 면책 조항(disclaimers)이나 크레딧(credits)과 같은 공통 엔드(end)가 있는 아이템), 아이템은 다수의 서브 그룹에 포함될 수 있다. 데이터베이스에 저장된 서브 그룹의 총 수가 계산되어 count_SG로 기록된다(단계 404). 미디어 아이템들의 어레이의 요소인 미디어 아이템(i)이 데이터베이스로부터 검색된다(단계 406). 만약 미디어 아이템(i)이 이미 서브 그룹과 연관되면(단계 408), 카운터 i는 1만큼 증가되고(단계 410), 프로세스는 단계(406)로 되돌아가 반복된다. 그러나, 만약 미디어 아이템(i)이 서브 그룹과 연관되지 않으면(단계 408), 미디어 콘텐츠 서버(318)는 제2 미디어 아이템을 선택하기 위해 진행하지만, 아직 서브 그룹에 할당되지 않은 미디어 아이템을 선택한다. 예를 들어, 미디어 아이템들의 어레이의 요소인 미디어 아이템(j)이 데이터베이스로부터 검색된다(단계 412). 만약 미디어 아이템(j)이 서브 그룹과 관련되지 않거나 장래(future) 스캔에서 생략될 플래그가 있으면(단계 414), 카운터 j가 1만큼 증가되고(단계 416), 상기 프로세스는 단계 412로 되돌아가 반복된다. 따라서, 시스템은 서브 그룹 내에서 아직 식별되지 않은 미디어 아이템 선택하기 위해 데이터베이스를 반복적으로 가로지를(traverse) 수 있다. 아이템이 다수의 서브 그룹에 포함되는 것과 같은 다른 구현에서, 단계(408 내지 410)는 스킵될 수 있다.
프로세스(400)를 계속하여, 만약 미디어 아이템(j)이 서브 그룹과 관련되고 언플래그(un-flagged)되어 있으면(단계 414), 미디어 콘텐츠 서버(318)는 서브 그룹에게 장래 스캔에서 이것을 생략하도록 플래그하고(단계 418), 미디어 아이템(i)의 타임슬롯(k)과 미디어 아이템(j)의 타임슬롯(k)을 비교한다(단계 420). 즉, 단계(420)에서, 미디어 콘텐츠 서버(318)는 두개의 비디오 각각의 재생에서 동일한 시점의 윈도우를 비교한다. 타임슬롯으로 지칭되는 이 시간 윈도우는 초, 분,시간 또는 다른 시간 증가분의 조합으로 분리될 수 있다. 타임슬롯은 하나의 프레임, 5 프레임, 10 프레임, 1초, 5초, 15초, 1분 또는 임의의 다른 길이와 같은 임의의 길이 또는 지속시간일 수 있다. 매칭이 발견되지 않으면(단계 422), 카운터 j는 1만큼 증가되고(단계 416), 프롯헤스는 단계(412)로 되돌아가 반복된다. 그러나, 단계(422)에서 매칭이 발견되면, 미디어 콘텐츠 서버(318)는 미디어 아이템(i)이 식별된 서브 그룹에 추가되어야 하는지를 검증한다. 일 실시예에서, 검증은 미디어 아이템(i)이 미디어 아이템(j)과 공통인 타임슬롯의 개수를 갖고, 미디어 아이템(j)이 서브 그룹의 다른 모든 멤버와 공통으로 존재한다는 결정을 포함할 수 있다.
계속 도 4를 참조하면, 미디어 콘텐츠 서버(318)는 (단계 414에서 식별된 서브 그룹으로부터의) 각각의 미디어 아이템이 서로 공통으로 갖는 타임슬롯의 총 수(예컨대, 프레임, 초 등)를 카운트함으로써 검증 프로세스를 시작한다. 예를 들어, count_TS와 같은 카운터는 0으로 초기화되고(단계 424), 미디어 콘텐츠 서버(318)는 동일한 서브 그룹으로부터 제2 미디어 아이템을 검색한다(단계 426). 미디어 콘텐츠 서버(318)는 미디어 아이템(j)의 타임슬롯(k)을 제2 미디어 아이템의 동일한 타임슬롯과 비교한다(단계 428). 매칭이 발견되면(단계 430), count_TS(단계 432) 및 카운터 k(단계 434)는 각각 1씩 증가된다. 그러나, 만약 단계(430)에서 매칭이 발견되지 않으면, 카운터 k는 0으로 초기화되고(단계 436), 미디어 콘텐츠 서버(318)는 미디어 아이템(i)의 타임슬롯(k)과 미디어 아이템(j)의 동일한 타임슬롯을 비교하도록 진행한다(단계 438).
단계(438)에서의 비교로부터, 매칭이 발견되지 않으면(단계 440), 카운터 Next_SG가 1만큼 증가되고(단계 446), 미디어 콘텐츠 서버(318)는 데이터베이스에 남아있는 임의의 다른 서브 그룹이 있는지 결정한다 448). 모든 서브 그룹이 스캔되면, 미디어 콘텐츠 서버(318)는 카운터 i를 1만큼 증가시키고(단계 460) 다음 단계(406)로 진행하여 다음 미디어 아이템(i)에 대한 처리를 반복한다. 그렇지 않으면,이 시점에서, 미디어 콘텐츠 서버(318)는 미디어 아이템(i)이 비교된 미디어 아이템(j)의 서브 그룹에 추가되어서는 안된다고 결정하고; 따라서, 다음 미디어 아이템(j)이 검색되어야 하며(단계 412) 프로세스가 반복된다.
단계(440)로 돌아가서, 미디어 아이템(i)의 타임슬롯(k)이 미디어 아이템(j)의 동일한 타임슬롯과 매칭되면, 미디어 콘텐츠 서버(318)는 단계(440, 442 및 444)에서 모든 나머지 타임슬롯을 계속 체크한다. 만약 미디어 아이템(i)이, 미디어 아이템(j)이 서브 그룹의 다른 미디어 아이템들과 공통으로 갖는 타임슬롯의 수와 동일한 미디어 아이템(j)과 공통인 타임슬롯의 개수를 갖으면, 미디어 콘텐츠 서버(318)는 서브 그룹에 추가되어야 하는 적어도 하나의 미디어 아이템(예를 들어, 미디어 아이템(i))을 성공적으로 식별한다. 따라서, 미디어 콘텐츠 서버(318)는 미디어 아이템(i)을 서브 그룹에 추가하기 시작한다(단계 450).
단계(452)에서, 미디어 콘텐츠 서버(318)는 미디어 아이템(i)으로부터 공통 부분을 추출한다. 일부 실시예들에서, 공통 부분의 추출은 단계(428, 430, 432 및 434)에서 이전에 count_TS가 계산한, 타임슬롯(0)에서 타임슬롯(count TS)까지 미디어 콘텐츠 아이템(i)의 재생을 기록하는 단계를 포함한다. 이러한 추출된 부분은 (예를 들어, RAM에) 임시로 또는 (예를 들어, 데이터베이스에 저장된 플랫 파일로서 ROM에, 데이터베이스에) 영구적으로 저장될 수 있다.
일부 실시예에서, 공통 부분은 미디어 아이템의 시작 부분(beginning)에서 시작하지 않을 수 있으며, 따라서 k는 0보다 크거나 같을 수 있다. 이러한 시나리오는 미디어 아이템(i)이 둘 이상의 도입 장면으로 구성되는 경우에 발생할 수 있다. 예를 들어, 요청된 비디오 콘텐츠는 수퍼 히어로들에 관한 영화일 수 있다. 영화 제작사는 경주용 자동차 영화에 관한 30초짜리 예고편(trailer), 자동차 보험에 관한 30초짜리 상업 광고, 관람객에게 휴대 전화의 벨소리 기능을 사용 중지하도록 요청하는 영화관의 15초짜리 메시지 및 등급 기관으로부터의 5초 승인 메시지(예컨대, PG 등급)와 같이, 영화에 선행할 비디오 클립을 두개 이상 선택했을 수 있다. 제공된 예에서, 미디어 아이템(j)의 특정 부분에 공통인 미디어 아이템(i)의 부분은 타임슬롯 1에서 시작하여 타임슬롯 3에서 종료할 수 있다(예를 들어 00:30에서 1:15까지). 공통 부분은 미디어(i)의 임의의 시점 및 미디어(j)의 임의의 시점에서 발생할 수 있다는 것을 인식해야 한다.
프로세스(400)가 미디어 아이템(i)으로부터 단일 도입 장면의 추출 프로세스를 기술하지만, 다른 실시예들은 전술한 예에서 설명된 바와 같이 다수의 도입 장면의 식별 및 추출을 포함할 수 있다. 유사하게, 도입 장면으로 논의되었지만, 많은 구현예에서, 식별된 공통 미디어 부분은 상이한 미디어 아이템(예를 들어, 중단 세그먼트(intermission segments), 크레딧, 면책 조항, 용어 시트 등)의 중간 또는 말미에 발생할 수 있다.
프로세스(400)의 추출/생성 단계에서, 미디어 콘텐츠 서버(318)는 공통 미디어 패키지를 생성한다(단계 454). 일부 실시예에서, 공통 미디어 패키지는 공통 미디어 식별자 및 전술한 바와 같이 추출된 공통 부분을 포함하는 미디어 페이로드를 포함한다. 공통 매체 식별자는 클라이언트 디바이스상에 위치한 저장 공간에 대한 주소(예컨대, C:\filename.mpeg or http://localhost/media/filename.mpeg) 또는 공통 미디어 패키지가 초기에 획득될 수 있는 네트워크 위치에 대한 어드레스(예컨대, URL)를 포함할 수 있다. 다른 구현예에서, 상기 어드레스는 공통 미디어 패키지의 파일명(예컨대, filename.mpeg)일 뿐이다. 미디어 페이로드는 임의의 비디오 포멧(예컨대, 3g2, 3gp, avi, flv, mov, mpeg-1, mpeg-2, mpeg-4, mpg), 임의의 오디오 파일 포멧(예컨대, mp3) 및 아카이브 포멧(예컨대, zip) 또는 알려진 또는 나중에 발견된 미디어 컨테이너 포멧으로 저장될 수 있다.
단계(454)에서, 미디어 콘텐츠 서버(318)는 공통 미디어 패키지를 데이터베이스에 저장하고 서브 그룹에 대해 설정된 임의의 플래그를 클리어한다(단계 458). 미디어 콘텐츠 서버(318)는 몇몇 구현예에서 전체 프로세스를 반복하기 위해, 카운터 i를 1만큼 증가시키고(단계 460) 데이터베이스로부터 다음 미디어 아이템(i)을 검색할 수 있다(단계 406).
도 5는 스트리밍 미디어 콘텐츠를 클라이언트 디바이스로 스트리밍하는데 필요한 대역폭을 감소시키기 위한 예시적인 프로세스(500)의 일 실시예에서 서버 및 클라이언트 디바이스에 의해 행해지는 단계들의 흐름도이다. 프로세스(500)는 콘텐츠가 서버(흐름도의 좌측)로부터 전달되어 클라이언트 디바이스(흐름도의 우측)에 의해 수신되는 콘텐츠 전달 단계를 포함한다. 일부 구현예에서, 프로세스(500)는 예를 들어 미디어 콘텐츠 서버(318) 및 클라이언트 디바이스(300)에 의해 수행될 수 있다. 프로세스(500)의 각 단계는 재정렬(re-ordered), 추가 또는 제거될 수 있다.
클라이언트 디바이스(300)는 콘텐츠 아이템을 요청함으로써 프로세스(500)를 시작한다(단계 502). 콘텐츠 아이템은 멀티미디어 콘텐츠(예를 들어, 영화(films), 비디오, 만화, 영화(movies), 스트리밍 비디오) 또는 스폰서 콘텐츠(사진 또는 멀티미디어 형태의 광고)를 포함하는 임의의 유형의 콘텐츠일 수 있다. 예를 들어, 클라이언트 디바이스는 영화를 요청할 수 있으며, 일부 구현예에서, 상기 요청은 제1 영화 및 제2 영화와 같이, 단일 파일로 함께 연접된(concatenated) 멀티미디어 콘텐츠의 다중 아이템을 포함하는 비디오에 대한 것일 수 있다. 또한, 비디오는 프로덕션 브랜드(예컨대, 심볼), 저작권 면책 조항, 등급 위원회의 승인 메시지(예컨대, PG 등급 심볼), 다른 공통 오프닝 콘텐츠(예컨대, 공익 광고)의 디스플레이로 시작될 수 있다. 예를 들어, 영화는 "Groundhogs Week" 영화에 대한 30초 예고편으로 시작될 수 있다. 멀티미디어 콘텐츠의 각 클립은 초, 분, 시간 또는 일(day)과 같은 임의의 지속시간일 수 있다.
미디어 콘텐츠 서버(318)는 멀티미디어 콘텐츠에 대한 요청을 수신하여(단계 504), 데이터베이스 내의 복수의 미디어 콘텐츠 아이템들의 서브 그룹 또는 서브 세트로부터 상기 요청된 아이템을 선택하는 단계로 진행한다(단계 506). 일 구현예에서, 데이터베이스는 미디어 콘텐츠 서버(318) 내에 포함될 수 있거나 또는 미디어 콘텐츠 서버(318)와 통신하는 임의의 다른 데이터베이스에 있을 수 있다. 또한, 복수의 미디어 콘텐츠 아이템들의 각각의 서브 그룹은 도 4에 도시된 바와 같이 프로세스(400)에 의해 미리 구성될 수 있다.
도 5를 계속 참조하면, 미디어 콘텐츠 서버(318)는 공통 미디어 패키지의 식별 및 상기 공통 미디어 패키지에 후속하여, 종종 "청크(chunk)"라고 지칭되는 상기 선택된 콘텐츠 아이템의 부분, 세그먼트 또는 블록의 식별을 전달 또는 전송한다(단계 508). 예를 들어, 공통 미디어 패키지의 식별은 선택된 콘텐츠 아이템(예컨대, “Groundhogs Week"라고 하는 영화)의 등급을 디스플레이하는, 클라이언트 디바이스(300)상에 저장된 5초 클립의 파일 어드레스(예를 들어, C:\ movie_rating_PG.mpg or /localhost/media/movie_rating_PG.mpg)를 포함할 수 있다. 다른 예에서, 상기 청크의 식별은 URL(예를 들어, www.example.com/ groundhogs_week.mpg)과 같은 네트워크 위치에 대한 어드레스일 수 있으며, 여기서 클라이언트 디바이스(300)는 콘텐츠를 클라이언트 디바이스(300)상의 비디오 재생기에 직접 스트리밍하거나 또는 비디오 재생기로 렌더링하기 전에 클라이언트 디바이스(300)상의 저장 위치로 콘텐츠를 직접 다운로드함으로써 상기 선택된 콘텐츠 아이템에 액세스할 수 있다. 일 실시예에서, 아이템들은 유선 또는 무선 채널(적외선, 블루투스, WIFI, 셀룰러 네트워크 또는 임의의 다른 이동 통신 채널)을 통해 전달될 수 있다. 많은 구현예에서, 공통 미디어 패키지 및 콘텐츠의 부분들 또는 청크(들)의 식별은 컨텐트 아이템의 청크들의 목록(manifest) 또는 리스트로서 전달될 수 있다. 예를 들어, 목록은 콘텐츠 아이템(예를 들어, 제목, 아티스트, 게시자, 장르, 사이즈, 총 지속 시간 등)에 대한 메타 데이터를 포함하는 XML 파일 또는 유사 파일을 포함할 수 있으며, 콘텐츠 아이템의 각 청크의 URL(예를 들어, [address]/content_chunkl.mpg, [address]/content_chunk2.mpg 등)을 포함할 수 있다. 클라이언트 디바이스는 각 청크를 차례로 검색하여 미디어의 청크를 버퍼링 및/또는 재생할 수 있다. 하나 이상의 청크 URL은 클라이언트 디바이스에 저장된 공통 미디어 패키지의 식별자로 대체될 수 있으므로, 청크들을 검색하고 재생할 때 클라이언트의 미디어 재생기는 외부 디바이스로부터 패키지를 재검색하지 않고 상기 로컬 어드레스로부터 공용 미디어 패키지를 검색할 수 있다.
미디어 콘텐츠 서버(318)에 의한 전송은 디바이스(300)에 의해 수신되어, 공통 미디어 패키지가 클라이언트 디바이스(300) 상에 이미 저장되었는지 여부를 클라이언트 디바이스(300)에 질의하도록 프롬프트한다(단계 512). 예를 들어, 미디어 콘텐츠 서버(318)는 클라이언트 디바이스(300)에 의한 요청을 수신하지 않고, 클라이언트 디바이스(300)를 포함하는 하나 이상의 클라이언트 디바이스로 공통 미디어 패키지를 이전에 전송 또는 푸싱했었을 수 있다. 공통 미디어 패키지의 푸시는 공통 미디어 패키지에 대한 수정(예컨대, 업데이트), 시간 이벤트(예컨대, 하루중 특정 시간, 요일, 월간, 년 또는 임의의 다른 시간 조합), 일정 이벤트, 사용자의 관심을 기술하는 파일(예컨대, 클라이언트 디바이스상의 쿠키 파일은 클라이언트가 현재 요트에 관심이 있음을 보여준다)에 대한 업데이트 또는 사용자가 행한 검색 요청과 같은 하나 이상의 트리거링 이벤트에 기초할 수 있다. 다른 구현예에서, 클라이언트는 이전에 다른 콘텐츠 아이템의 스트리밍 동안 공통 미디어 패키지를 검색할 수 있다. 단계(512)에서, 만약 공통 미디어 패키지가 이전에 수신 및 저장되지 않았음이 결정되면, 클라이언트 디바이스(300)는 공통 미디어 패키지의 사본에 대한 요청을 미디어 콘텐츠 서버(318)로 전송한다(단계 514). 이러한 구현예에서, 목록은 공통 미디어 패키지에 대한 로컬 어드레스 및 대체 어드레스 모두를 포함할 수 있으므로, 애플리케이션은 공통 미디어 패키지를 국부적으로 검색하려고 시도할 수 있고, 실패할 경우 대체 외부 어드레스로 패키지를 요청할 수 있다.
요청을 수신하면(단계 516), 미디어 콘텐츠 서버(318)는 데이터베이스로부터 공통 미디어 패키지를 선택하여(단계 618), 해당 공통 미디어 패키지를 클라이언트 디바이스(300)로 전송한다(단계 520). 공통 미디어 패키지를 수신한 후(단계 522), 클라이언트 디바이스(300)는 이하에서 상세히 설명될 단계(524)로 진행한다.
단계(512)로 돌아 가서, 클라이언트 디바이스(300)가 이미 국부적으로 공통 미디어 패키지의 사본을 가지고 있는경우, 클라이언트 디바이스(300)는 제1 미디어 콘텐츠 아이템의 후속 청크를 요청하도록 진행할 수 있다(단계 524). 예를 들어, 클라이언트 디바이스(300)는 영화 등급을 PG(Parental Guidance required)로 표시하는 5초 도입 클립으로 시작할 수 있는 2시간 분량의 영화 "Groundhogs Week "를 (단계 502)에서 요청했었을 수 있다. 따라서, 이 예에서, 요청된 콘텐츠 아이템은 2시간 5초의 지속시간을 갖는다. 그러한 일 실시예에서, 요청을 수신하면, 미디어 콘텐츠 서버(318)는 초기(beginning) 5초의 도입 영화 등급 클립없이 2시간 의 영화에 대한 URL을 클라이언트 디바이스(300)로 제공한다. 전술한 바와 같이, 스트리밍된 미디어와 같은 다른 구현예에서, 미디어 콘텐츠 서버는, 5초 분량의 도입 영화 등급 클립에 대한 제1식별자 및 2시간 분량의 청크에 대한 하나 이상의 URL과 같은, 하나 이상의 청크 URL 및 하나 이상의 공통 미디어 패키지에 대한 어드레스 또는 식별자를 포함하는 영화에 대한 목록을 제공할 수 있다. 일부 실시예에서, 요청은 콘텐츠가 클라이언트 디바이스(300)상의 비디오 재생기(예를 들어, 비디오 재생기(102))로 스트리밍하기 위한 것이거나 클라이언트 디바이스(300) 상에 콘텐츠를 다운로드 및 저장하도록 요청하기 위한 요청이다.
요청을 수신하면(단계 526), 미디어 콘텐츠 서버(318)는 선택된 콘텐츠 아이템의 후속 부분 또는 청크를 클라이언트 디바이스(300)로 전송한다(단계 520). 앞에서 설명한 것처럼, 전달된 콘텐츠의 형식(form)은 요청 유형(즉, 스트리밍 대 다운로드된)에 기초한다. 콘텐츠 스트리밍의 경우에, 후속 청크는 공통 미디어 패키지 및 후속 청크 모두의 원활한 렌더링을 보장하기 위해, 비디오 재생기(102)상의비디오 재생의 시작 이전에 클라이언트 디바이스 상에 버퍼링될 필요가 있을 수 있다. 예를 들어, "Groundhogs Week" 영화의 충분한 후속 청크가 클라이언트 디바이스(300)에 버퍼링되기 전에 비디오 재생기(102)가 PG 영화 등급의 5초 클립의 재생을 시작하면, 비디오 재생기(102)는 5초 PG 영화 등급의 종료시 또는 그 부근 (near)에서 "Groundhogs Week"의 시작을 표시하지 못할 수 있다. 따라서, 일부 구현예에서, (서버로부터 클라이언트 디바이스로) 네트워크를 통한 후속 청크의 크기 및 전송율은 클라이언트 디바이스(300)에 대한 원활한 비디오 재생 경험을 위해 충분한 후속 청크를 클라이언트 디바이스(300)가 언제 수신했는지를 결정하는데 도움을 줄 수 있다(300).
따라서, 클라이언트 디바이스(300)는 버퍼링된 콘텐츠의 크기를 계산하고 및/또는 버퍼링 또는 전송률을 측정할 수 있다(단계 532). 만약 클라이언트 디바이스(300)가 이들 2개의 파라미터에 기초하여, 비디오 재생이 이 시점에서 시작해야 하는 경우 비디오 재생이 원활하지 않을 수 있다고 결정하면, 프로세스(500)는 단계(532)로 되돌아 가서 반복될 수 있다. 그렇지 않으면, 클라이언트 디바이스(300)는 이전에 추출된 공통 부분, 예를 들어, 5초 영화 등급 클립의 렌더링을 시작하고(단계 536), 이어서 시퀀스 내의 제1 미디어 콘텐츠 아이템의 후속 청크를 연속적으로(seamless) 렌더링할 수 있다(단계 538),
일부 구현예에서, 클라이언트 디바이스(300)는 영화의 첫 번째 10초 세그먼트와 두 번째 10초 세그먼트(공통 도입 세그먼트 이후의 두 세그먼트)와 같은, 하나 이상의 후속 청크를 요청할 수 있다. 청크는 동일한 미디어 서버 또는 다른 미디어 서버에 의해 전달될 수 있으므로 필요에 따라 부하 분산(load balancing) 및 요청 분배가 가능하도록 한다.
따라서, 프로세스(500)는 추가적인 후속 청크들이 요청되어야 하는지를 결정한다(단계 540). 만약 그런 경우, 프로세스(500)는 프로세스를 반복하기 위해 단계(512)로 되돌아 가고, 그렇지 않은 경우, 프로세스(500)는 단계(542)에서 종료한다.
상술한 설명에 더하여, 사용자는 본 명세서에 개시된 시스템, 프로그램 또는 특징이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 직업, 사용자의 선호 또는 사용자의 현재 위치)의 수집을 가능하게 할 수 있는 경우 및 사용자가 서버로부터 콘텐츠 또는 통신을 송신하는 경우 모두에 대하여 사용자가 선택할 수 있도록 하는 제어(controls)를 제공받을 수 있다. 또한, 특정 데이터는 저장되거나 사용되기 전에 하나 이상의 방법으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원을 처리되어 사용자에 대해 개인 식별 정보가 결정되지 않거나 사용자의 지리적 위치를 위치 정보가 획득된 곳(예컨대, 도시, 우편 번호 또는 주 수준)으로 일반화되어, 사용자의 특정 위치를 결정할 수 없게 할 수 있다. 따라서, 사용자는 사용자에 관해 수집되는 정보, 그 정보의 사용 방법 및 사용자에게 제공되는 정보를 제어할 수 있다. 많은 구현에서, 사용자에 대해 수집된 데이터는 프라이버시를 보호하기 위해 익명화되거나 모호해질 수 있다. 클라이언트 디바이스의 사용자에 관한 개인 정보가 측정을 위해 수집되거나 제3자 콘텐츠를 선택하는데 사용되는 많은 구현예에서, 사용자는 개인 정보(예컨대, 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 사용자의 선호 또는 사용자의 현재 위치에 대한 정보)를 수집할 수 있는 프로그램 또는 기능이 콘텐츠 미디어 서버로 측정 데이터를 전송할지 여부 또는 전송 방법을 제어할 수 있는 기회를 제어할 수 있는 기회를 제공받을 수 있다. 또한, 특정 데이터는 관객 측정 서버에 의해 저장되거나 사용되기 전에 하나 이상의 방식으로 처리될 수 있으므로 개인 식별 정보는 파라미터(예를 들어, 데모그래픽(demographic) 파라미터)를 생성할 때 제거될 수 있다.
본 명세서에서 설명된 주제 및 동작의 구현은 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서 구현될 수 있으며, 본 명세서에 개시된 구조 및 구조적 등가물, 또는 이들 중 하나 이상의 조합을 포함한다. 본 명세서에서 설명된 주제의 구현은 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의해 실행되거나 또는 데이터 처리장치의 동작을 제어하기 위해 하나 이상의 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 선택적으로 또는 부가 적으로, 프로그램 명령은 인위적으로 생성된 전파된 신호, 예를 들어 기계에 의해 생성된 전기적, 광학적 또는 전자기 신호에 인코딩될 수 있으며, 이는 데이터 처리장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩한다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파 신호는 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 하나 이상의 개별 구성 요소 또는 매체(예를 들어, 다수의 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 포함될 수 있다. 따라서, 컴퓨터 저장 매체는 유형(tanbible)일 수 있다.
본 명세서에서 설명된 동작은 하나 이상의 컴퓨터 판독 가능 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작으로서 구현될 수 있다.
"클라이언트 또는"서버 "라는 용어는 프로그램 가능 프로세서, 컴퓨터, 칩상의 시스템, 또는 전술한 다수의 것들 또는 조합을 포함하여, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 이 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(주문형 집적 회로)을 포함할 수 있다. 또한, 장치는 하드웨어에 부가하여 문제의 컴퓨터 프로그램, 예를 들어 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime), 가상 머신, 또는 이들의 하나 이상의 조합에 대한 실행 환경을 생성하는 코드를 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 서로 다른 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 알려진)은 컴파일된 또는 해석된 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램이나 모듈, 구성 요소, 서브 루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 장치를 포함하는 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예컨대, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하고 있는 파일의 일부분, 문제의 프로그램 전용의 단일 파일 또는 다수의 조정 파일(예컨대, 하나 이상의 모듈, 서브 프로그램 또는 코드의 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터상에서 또는 하나의 사이트에 있거나 여러 사이트에 분산되어 있고 통신 네트워크로 상호 연결된 다수의 컴퓨터상에서 실행되도록 배포될 수 있다.
본 명세서에서 설명되는 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 동작을 수행하기 위해, 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 상기 프로세스 및 논리 흐름은 또한 FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(주문형 집적 회로)과 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 또한 특수 목적 논리 회로로 구현될 수 있다.
컴퓨터 프로그램 실행에 적합한 프로세서는 일반 및 특수 목적 마이크로 프로세서 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트는 명령들에 따라 동작들을 수행하기 위한 프로세서 및 명령과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터(예를 들어, 자기, 광 자기 디스크 또는 광학 디스크)를 저장하기 위해 하나 이상의 대용량 저장 디바이스로부터 데이터를 수신하거나 전송하거나 둘 모두에 동작 가능하게 결합되거나 포함할 것이다. 그러나 컴퓨터에는 그러한 디바이스들이 있을 필요가 없다. 게다가, 컴퓨터는 다른 디바이스, 예를 들어, 이동 전화기, 개인 휴대 정보 단말기 (PDA), 모바일 오디오 또는 비디오 재생기, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예컨대, 범용 직렬 버스(USB) 플래시 드라이브)와 같은 다른 디바이스에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스; 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크; 광 자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하여, 모든 형태의 비 휘발성 메모리, 미디어 및 메모리 디바이스를 포함한다. 상기 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 개시된 주제의 구현예는 CRT(음극선관), LCD(liquid crystal display), OLED(organic light emitting diode), TFT(박막 트랜지스터), 플라즈마, 다른 플렉서블 구성, 또는 사용자에게 정보를 디스플레이하기 위한 임의 다른 모니터와 같은 디스플레이 디바이스 및 키보드, 포인팅 디바이(예컨대, 마우스, 트랙볼 등) 또는 사용자가 컴퓨터에 입력을 제공할 수 있는 터치 스크린, 터치 패드를 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류의 디바이스가 사용자와의 상호 작용을 제공하는데 사용될 수 있다. 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한 컴퓨터는 사용자가 사용하는 디바이스로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있다. 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 디바이스상의 웹 브라우저로 웹 페이지를 전송함으로써 달성될 수 있다.
본 명세서에서 설명된 주제의 구현은 데이터 서버와 같은 백엔드 구성 요소 또는 애플리케이션 서버와 같은 미들웨어 구성 요소를 포함하는 프론트 엔드 구성 요소 또는 본 명세서에서 기술된 주제의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터와 같은 프론트 엔드 구성 요소, 또는 하나 이상의 그러한 백엔드, 미들웨어 또는 프론트 엔드 구성 요소의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성 요소들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 접속될 수 있다. 통신 네트워크는 근거리 통신망("LAN"), 광역 통신망 ("WAN"), 네트워크 간(예컨대, 인터넷) 및 피어-투-피어 네트워크(예컨대, 애드혹 피어-투-피어 네트워크)의 다양한 결합을 포함할 수 있다.
본 명세서에 개시된 특징들은 인터넷 접속을 보다 전통적인 텔레비전 프로그래밍 소스(예컨대, 케이블, 위성, 공중파 또는 다른 신호들을 통해 수신되는)와 통합 하도록 구성된 프로세싱 회로를 포함할 수 있는 스마트 텔레비젼 모듈(또는 접속된 텔레비젼 모듈, 하이브리드 텔레비젼 모듈)상에 구현될 수 있다. 콘텐츠를 수신하고 중계 핑(pings), 식별자 또는 다른 데이터를 관객 측정 서비스 및/또는 패널 제공자에게 제공하는 클라이언트 디바이스는 스마트 텔레비전 모듈일 수 있다. 스마트 텔레비전 모듈은 텔레비전 세트에 물리적으로 통합될 수 있거나 셋탑 박스, 블루-레이 또는 다른 디지털 미디어 재생기, 게임 콘솔, 호텔 텔레비전 시스템 및 다른 동반(companion) 디바이스와 같은 개별 디바이스를 포함할 수 있다. 스마트 텔레비젼 모듈은 시청자가 웹, 로컬 케이블 TV 채널, 위성 TV 채널 또는 로컬 하드 드라이브에 저장된 비디오, 영화, 사진 및 기타 콘텐츠를 검색하고 찾을 수 있도록 구성될 수 있다. 셋탑 박스(STB) 또는 셋탑 장치(STU)는 튜너를 포함할 수 있고 텔레비전 세트 및 외부 신호 소스에 연결하여 신호를 콘텐츠로 바꾼 다음 텔레비전 스크린 또는 다른 디스플레이 디바이스에 표시할 수 있다. 스마트 텔레비전 모듈은 웹 브라우저 및 복수의 스트리밍 미디어 서비스, 연결된 케이블 또는 위성 미디어 소스, 다른 웹 "채널들"과 같은 복수의 상이한 애플리케이션에 대한 아이콘들을 포함하는 홈 스크린 또는 최상위 레벨 스크린을 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈은 또한 전자 프로그래밍 가이드를 사용자에게 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈에 대한 동반 애플리케이션은 이용 가능 프로그램에 관한 부가적인 정보를 사용자에게 제공하여 사용자가 스마트 텔레비전 모듈 등을 제어할 수 있도록 모바일 컴퓨팅 디바이스상에서 동작 가능할 수 있다. 다른 구현예에서, 상기 특징들은 랩탑 컴퓨터 또는 다른 개인용 컴퓨터, 스마트 폰, 다른 모바일 전화, 휴대용(handheld) 컴퓨터, 태블릿 PC, 또는 다른 컴퓨팅 디바이스 상에 구현될 수 있다.
본 명세서는 많은 특정 구현 세부 사항을 포함하고 있지만, 이것들은 발명의 범위 또는 청구될 수 있는 범위를 제한하는 것으로 해석되어서는 안되며, 오히려 특정 발명의 특정 구현에 특정한 특징을 기술한 것으로 해석되어야 한다. 별도의 구현의 문맥에서 본 명세서에 기술된 특정 특징은 또한 단일 구현으로 조합하여 구현될 수 있다. 반대로, 단일 구현의 문맥에서 기술된 다양한 특징은 또한 다수의 구현예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 더욱이, 특징들은 특정 조합으로 작용하고 상술한 바와같이 초기에 청구된 것으로서 설명될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 유도될 수 있다.
유사하게, 동작들이 도면에 특정 순서로 도시되어 있지만, 이것은 바람직한 동작을 달성하기 위해 표시된 동작 또는 순차적인 동작 또는 모든 예시된 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 또한, 상술한 구현예에서 다양한 시스템 구성 요소의 분리는 모든 구현예에서 그러한 분리를 필요로 하는 것으로 이해되어서는 안되며, 개시된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품 내에 함께 통합되거나다수의 소프트웨어 제품에 피키징될 수 있다.
따라서, 주제의 특정 구현예가 기술되었다. 다른 구현예들은 다음의 청구항들의 범위 내에 있다. 일부 경우, 청구 범위에 인용된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요로 하지는 않는다. 특정 구현예에서, 멀티 태스킹 또는 병렬 처리가 이용될 수 있다.
본 명세서에 개시된 일 실시예는 스트리밍 미디어 콘텐츠에 필요한 대역폭을 감소시키는 방법이다. 이 방법은 스트리밍 미디어 서버에 의해, 미디어 데이터의 일부분을 공통으로 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계 및 스트리밍 미디어 서버에 의해, 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 상기 공통 부분을 추출하는 단계를 포함한다. 이 방법은 또한 스트리밍 미디어 서버에 의해, 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하는 단계, 스트리밍 미디어 서버에 의해 공통 미디어 패키지를 클라이언트 미디어 디바이스로 제공하는 단계 및 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하는 단계를 포함한다. 이 방법은 또한 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하는 단계 및 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 공통 미디어 패키지의 식별 및 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 제2 요청을 수신하는 단계, 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브셋으로부터 제2 콘텐츠 아이템을 선택하는 단계, 및 상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하는 단계를 포함한다.
일부 구현예에서, 이 방법은 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교함으로써 미디어의 공통 부분을 갖는 상기 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계; 및 매칭을 나타내는 비교에 응답하여, 상기 제1 미디어 콘텐츠 아이템 및 상기 제2 미디어 콘텐츠 아이템을 상기 서브셋에 추가하는 단계를 포함한다. 다른 구현예에서, 이 방법은 공통 미디어 식별자 및 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 단계를 포함한다. 또 다른 구현예에서, 이 방법은 공통 미디어 패키지의 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록(manifest) 및 콘텐츠 서버에서 상기 선택된 콘텐츠 아이템의 청크의 주소를 전송하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 후속 청크에 대한 요청의 수신 전에, 상기 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하는 단계를 포함한다. 다른 구현예에서, 이 방법은 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하는 단계; 및 상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 상기 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하는 단계를 포함한다. 또 다른 구현에서, 상기 방법은 상기 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 상기 공통 미디어 패키지를 수정하도록 상기 클라이언트에 대한 명령을 전송하는 단계를 포함한다.
다른 양태에서, 본 발명은 스트리밍 미디어 컨텐트에 필요한 대역폭을 줄이기 위한 시스템에 관한 것이다. 이 시스템은 스트리밍 미디어 서버 및 비디오 스플리터를 포함하는 컴퓨팅 디바이스를 포함한다. 일부 구현예에서, 시스템은 네트워크를 통해 클라이언트 미디어 디바이스 및 저장 디바이스와 통신하는 비디오 인코더를 포함하며, 저장 디바이스는 복수의 미디어 콘텐츠 아이템을 저장한다. 스트리밍 미디어 서버는 미디어 데이터의 일부를 공통으로 갖는 저장 디바이스에 저장된 복수의 미디어 콘텐츠 아이템의 서브셋을 식별하도록 구성된 회로를 포함한다. 비디오 스플리터는 서브셋의 제1 미디어 콘텐츠 아이템으로부터 공통 부분을 추출하도록 구성된 회로를 포함한다. 일부 구현예에서, 비디오 인코더는 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하도록 구성된 회로를 포함한다.
또 다른 실시예에서, 스트리밍 미디어 서버의 회로는 네트워크를 통해 공통 미디어 패키지를 클라이언트 미디어 디바이스로 제공하고, 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하고, 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하며, 그리고 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하도록 구성된다.
일부 구현예에서, 시스템은 클라이언트 미디어 디바이스로부터, 콘텐츠 아이템에 대한 제2 요청을 수신하고, 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠의 제2 콘텐츠 아이템을 선택하며; 그리고 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하도록 추가로 구성된다.
일부 구현예에서, 상기 시스템은 미디어의 공통 부분을 갖는 상기 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 동작이, 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 상기 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교하는 동작, 및 매칭을 나타내는 비교에 응답하여, 상기 제1 미디어 콘텐츠 아이템 및 상기 제2 미디어 콘텐츠 아이템을 상기 서브셋에 추가하는 동작을 더 포함하도록 추가로 구성된 스트리밍 미디어 서버의 회로를 포함한다. 다른 구현들에서, 상기 시스템은 공통 미디어 패키지를 생성하도록 추가로 구성된 스트리밍 미디어 서버의 회로를 포함하여, 공통 미디어 식별자 및 상기 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 동작을 더 포함한다.
일부 구현예에서, 시스템은 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하도록 추가로 구성된 스트리밍 미디어 서버의 회로를 포함하여, 상기 공통 미디어 패키지의 상기 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록 및 콘텐츠 서버에서 선택된 콘텐츠 아이템의 청크의 어드레스를 전송하는 동작을 더 포함한다. 다른 구현예에서, 스트리밍 미디어 서버의 회로는 후속 청크에 대한 요청을 수신하기 전에, 스트리밍 미디어 서버에 의해 상기 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하도록 추가로 구성된다.
일부 구현예에서, 제9항의 시스템은, 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하고; 그리고 상기 스트리밍 미디어 서버에 의해, 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하도록 추가로 구성된다. 또 다른 구현예에서, 상기 시스템은 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하도록 추가 구성된 스트리밍 미디어 서버의 회로를 포함하여, 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 상기 공통 미디어 패키지를 수정하도록 상기 클라이언트에 대한 명령을 전송하는 동작을 더 포함한다.
다른 양태에서, 본 발명은 스트리밍 미디어 콘텐츠에 필요한 대역폭을 감소시키는 방법에 관한 것이다. 이 방법은 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지가 상기 클라이언트 미디어 디바이스에 저장되어 있지 않은 것으로 결정하는 단계를 포함하고, 상기 공통 미디어 패키지는 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 추출된 공통 부분을 포함한다. 일부 구현예에서, 이 방법은 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버 디바이스로부터 상기 공통 미디어 패키지를 수신하는 단계 및 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버로부터 컨텐트 아이템을 요청하는 단계를 포함한다. 일부 구현예에서, 이 방법은 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 선택된 제1 미디어 콘텐츠 아이템의 후속 청크의 식별을 스트리밍 미디어 서버로부터 수신하는 단계; 및 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계를 포함한다. 다른 구현예에서, 이 방법은 클라이언트 미디어 디바이스에 의해, 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계 및 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제1 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 클라이언트 미디어 디바이스에 의해, 상기 스트리밍 미디어 서버로부터 제2 콘텐츠 아이템을 요청하는 단계, 및 클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 선택된 제2 미디어 콘텐츠 아이템의 후속 청크의 식별을 상기 스트리밍 미디어 서버로부터 수신하는 단계를 포함한다. 다른 구현예에서, 상기 방법은 클라이언트 미디어 디바이스에 의해, 제2 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계, 클라이언트 미디어 디바이스에 의해, 제2 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계, 및 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제2 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함한다.
일부 구현예에서, 상기 방법은 선택된 콘텐츠 아이템의 수신된 후속 청크의 특성에 기초하여 상기 추출된 공통 부분을 수정하도록 클라이언트 미디어 디바이스에 대한 명령을 수신하는 단계를 더 포함하는 공통 미디어 패키지를 수신하는 단계를 포함한다. 다른 구현예에서, 상기 방법은 이전에 제공된 추출된 공통 부분을 렌더링하는 동안 상기 후속 청크를 수신하는 단계를 더 포함하는 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계를 포함한다.
이들 구현예는 본 발명의 범위를 제한하거나 정의하지 않으며, 본 발명의 이해를 돕기 위해 본 발명의 구현예를 제공하는 것으로 언급된다. 특정 구현예들이 다음의 이점들 중 하나 이상을 실현하기 위해 개발될 수 있다.

Claims (20)

  1. 방법으로서,
    스트리밍 미디어 서버에 의해, 미디어 데이터의 일부분을 공통으로 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 공통 부분을 추출하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 공통 미디어 패키지를 클라이언트 미디어 디바이스로 제공하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하는 단계; 및
    상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 제2 요청을 수신하는 단계;
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 제2 콘텐츠 아이템을 선택하는 단계; 및
    상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 미디어의 공통 부분을 갖는 상기 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하는 단계는
    상기 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 상기 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교하는 단계; 및
    매칭을 나타내는 비교에 응답하여, 상기 제1 미디어 콘텐츠 아이템 및 상기 제2 미디어 콘텐츠 아이템을 서브 세트에 추가(add)하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 공통 미디어 패키지를 생성하는 단계는 공통 미디어 식별자 및 상기 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 단계는
    상기 공통 미디어 패키지의 상기 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록(manifest) 및 콘텐츠 서버에서 선택된 콘텐츠 아이템의 청크의 어드레스를 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    후속 청크에 대한 요청의 수신 전에, 상기 스트리밍 미디어 서버에 의해, 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하는 단계; 및
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 상기 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하는 단계는 상기 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 상기 공통 미디어 패키지를 수정하도록 상기 클라이언트에 대한 명령을 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 시스템으로서,
    스트리밍 미디어 서버, 비디오 스플리터 및 비디오 인코더를 포함하여, 네트워크를 통해 클라이언트 미디어 디바이스 및 저장 디바이스에 통신하는 컴퓨팅 디바이스를 포함하고, 상기 저장 디바이스는 복수의 미디어 콘텐츠 아이템을 저장하고;
    상기 스트리밍 미디어 서버는
    미디어 데이터의 일부분을 공통으로 갖는 상기 저장 디바이스에 저장된 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하도록 구성된 회로를 포함하고;
    상기 비디오 스플리터는
    상기 서브 세트의 제1 미디어 콘텐츠 아이템으로부터 상기 공통 부분을 추출하도록 구성된 회로를 포함하고;
    상기 비디오 인코더는
    상기 추출된 공통 부분을 포함하는 공통 미디어 패키지를 생성하도록 구성된 회로를 포함하며;
    상기 스트리밍 미디어 서버의 회로는
    상기 공통 미디어 패키지를 네트워크를 통해 상기 클라이언트 미디어 디바이스로 제공하고,
    상기 클라이언트 미디어 디바이스로부터 콘텐츠 아이템에 대한 요청을 수신하고,
    상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠 아이템을 선택하며; 그리고
    상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 콘텐츠 아이템의 후속 청크(chunk)를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  10. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 클라이언트 미디어 디바이스로부터, 콘텐츠 아이템에 대한 제2 요청을 수신하고;
    상기 복수의 미디어 콘텐츠 아이템의 서브 세트로부터 콘텐츠의 제2 콘텐츠 아이템을 선택하고; 그리고
    상기 클라이언트 미디어 디바이스를 트리거하여 이전에 제공된 공통 미디어 패키지를 렌더링하고 상기 선택된 제2 콘텐츠 아이템의 후속 청크를 요청하기 위해, 상기 공통 미디어 패키지의 식별 및 상기 공통 부분에 후속하는 상기 선택된 제2 콘텐츠 아이템의 청크의 식별을 상기 클라이언트 미디어 디바이스로 전송하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  11. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 복수의 미디어 콘텐츠 아이템의 제1 미디어 콘텐츠 아이템의 일부분을 상기 복수의 미디어 콘텐츠 아이템의 제2 미디어 콘텐츠 아이템의 해당 부분과 비교하는 동작을 더 포함하여 상기 미디어의 공통 부분을 갖는 복수의 미디어 콘텐츠 아이템의 서브 세트를 식별하고; 및
    매칭을 나타내는 비교에 응답하여, 상기 제1 미디어 콘텐츠 아이템 및 상기 제2 미디어 콘텐츠 아이템을 서브 세트에 추가(add)하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  12. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    공통 미디어 식별자 및 상기 추출된 공통 부분을 포함하는 미디어 페이로드를 생성하는 동작을 더 포함하는, 상기 공통 미디어 패키지를 생성하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  13. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 공통 미디어 패키지의 상기 클라이언트 미디어 디바이스의 캐시내의 어드레스를 포함하는 목록(manifest) 및 콘텐츠 서버에서 선택된 콘텐츠 아이템의 청크의 어드레스를 전송하는 동작을 더 포함하여 상기 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  14. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 후속 청크에 대한 요청을 수신하기 전에, 상기 스트리밍 미디어 서버에 의해, 상기 클라이언트 미디어 디바이스에 의한 렌더링을 위해 상기 선택된 콘텐츠 아이템의 후속 청크를 전송하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  15. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 서브 세트내의 각 콘텐츠 아이템에 사전 결정된 제1품질 스코어를 할당하고; 그리고
    상기 스트리밍 미디어 서버에 의해, 상기 복수의 미디어 콘텐츠 아이템의 비중첩하는 제2서브 세트내의 각 콘텐츠 아이템에 상기 제1품질 스코어보다 낮은 사전 결정된 제2품질 스코어를 할당하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  16. 제9항에 있어서, 상기 스트리밍 미디어 서버의 회로는,
    상기 선택된 콘텐츠 아이템의 후속 청크의 특성에 기초하여 상기 공통 미디어 패키지를 수정하도록 상기 클라이언트에 대한 명령을 전송하는 동작을 더 포함하여 상기 공통 미디어 패키지의 식별 및 상기 선택된 콘텐츠 아이템의 청크의 식별을 전송하도록 추가로 구성되는 것을 특징으로 하는 시스템.
  17. 방법으로서,
    클라이언트 미디어 디바이스에 의해, 공통 미디어 패키지가 상기 클라이언트 미디어 디바이스에 저장되어 있지 않은 것으로 결정하는 단계, 상기 공통 미디어 패키지는 공통 미디어 패키지의 식별자 및 복수의 미디어 콘텐츠 아이템으로부터 추출된 공통 부분을 포함하고;
    상기 클라이언트 미디어 디바이스에 의해, 스트리밍 미디어 서버 디바이스로부터 상기 공통 미디어 패키지를 수신하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 스트리밍 미디어 서버로부터 컨텐트 아이템을 요청하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 공통 미디어 패키지의 식별자 및 상기 복수의 미디어 콘텐츠 아이템으로부터 선택된 제1 미디어 콘텐츠 아이템의 후속 청크의 식별을 상기 스트리밍 미디어 서버로부터 수신하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 제1 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계; 및
    상기 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제1 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제17항에 있어서,
    상기 클라이언트 미디어 디바이스에 의해, 상기 스트리밍 미디어 서버로부터 제2 콘텐츠 아이템을 요청하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 공통 미디어 패키지의 식별자 및 상기 복수의 미디어 콘텐츠 아이템으로부터 선택된 제2 미디어 콘텐츠 아이템의 후속 청크의 식별을 상기 스트리밍 미디어 서버로부터 수신하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 제2 미디어 콘텐츠 아이템의 후속 청크를 요청하는 단계;
    상기 클라이언트 미디어 디바이스에 의해, 상기 제2 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계; 및
    상기 클라이언트 미디어 디바이스에 의해, 이전에 제공된 추출된 공통 부분 및 제2 미디어 콘텐츠 아이템의 후속 청크를 순차적으로 렌더링하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 제17항에 있어서, 상기 공통 미디어 패키지를 수신하는 단계는,
    상기 선택된 콘텐츠 아이템의 상기 수신된 후속 청크의 특성에 기초하여 상기 추출된 공통 부분을 수정하도록 상기 클라이언트 미디어 디바이스에 대한 명령을 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 제17항에 있어서, 상기 제1 미디어 콘텐츠 아이템의 후속 청크를 수신하는 단계는, 상기 이전에 제공된 추출된 공통 부분을 렌더링하는 동안 상기 후속 청크를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020187016251A 2016-04-27 2016-12-30 유사한 도입 장면 캐싱 메커니즘 KR102093429B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/140,203 US10298646B2 (en) 2016-04-27 2016-04-27 Similar introduction advertising caching mechanism
US15/140,203 2016-04-27
PCT/US2016/069611 WO2017189054A1 (en) 2016-04-27 2016-12-30 Similar introduction caching mechanism

Publications (2)

Publication Number Publication Date
KR20180081783A KR20180081783A (ko) 2018-07-17
KR102093429B1 true KR102093429B1 (ko) 2020-03-25

Family

ID=58018198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187016251A KR102093429B1 (ko) 2016-04-27 2016-12-30 유사한 도입 장면 캐싱 메커니즘

Country Status (5)

Country Link
US (3) US10298646B2 (ko)
EP (2) EP3375192B1 (ko)
KR (1) KR102093429B1 (ko)
CN (2) CN108476329B (ko)
WO (1) WO2017189054A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9825801B1 (en) 2016-07-22 2017-11-21 Spotify Ab Systems and methods for using seektables to stream media items
US10079871B2 (en) 2016-10-10 2018-09-18 Google Llc Customizing media items for playback on alternative playback devices paired with a user device
US10349108B2 (en) * 2017-08-24 2019-07-09 Mobitv, Inc. System and method for storing multimedia files using an archive file format
US10567321B2 (en) * 2018-01-02 2020-02-18 Snap Inc. Generating interactive messages with asynchronous media content
EP3818722A1 (en) * 2018-07-05 2021-05-12 Dolby International AB Processing media data structures
US10820053B2 (en) 2018-12-05 2020-10-27 Hulu, LLC Extension bundle generation for recording extensions in video delivery
US11663633B2 (en) * 2019-12-10 2023-05-30 GumGum, Inc. Systems and methods for improved server-side contextual page analysis
US11284144B2 (en) 2020-01-30 2022-03-22 Snap Inc. Video generation system to render frames on demand using a fleet of GPUs
US11036781B1 (en) 2020-01-30 2021-06-15 Snap Inc. Video generation system to render frames on demand using a fleet of servers
US11991419B2 (en) 2020-01-30 2024-05-21 Snap Inc. Selecting avatars to be included in the video being generated on demand
CN115175748A (zh) 2020-01-30 2022-10-11 斯纳普公司 用于按需生成媒体内容项的系统
US11356720B2 (en) * 2020-01-30 2022-06-07 Snap Inc. Video generation system to render frames on demand
CN115314738B (zh) * 2022-08-15 2024-04-26 城云科技(中国)有限公司 对hook的数据添加标签处理拉流的方法及装置
CN115712583B (zh) * 2023-01-09 2023-04-18 之江实验室 一种提升分布式缓存跨节点访问性能的方法及装置、介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070136741A1 (en) 2005-12-09 2007-06-14 Keith Stattenfield Methods and systems for processing content
US20090099911A1 (en) 2007-10-11 2009-04-16 Sony Corporation Systems and Methods for Managing Advertising Content Corresponding to Streaming Media Content
US20120079059A1 (en) 2010-09-27 2012-03-29 Motorola-Mobility, Inc. Selectively receiving media content
US20120076357A1 (en) 2010-09-24 2012-03-29 Kabushiki Kaisha Toshiba Video processing apparatus, method and system
WO2012164360A1 (en) 2011-06-02 2012-12-06 Nds Limited Content insertion in adaptive streams
US20140297881A1 (en) 2013-03-28 2014-10-02 Sonic Ip, Inc. Downloading and adaptive streaming of multimedia content to a device with cache assist
US20150086033A1 (en) 2013-09-20 2015-03-26 Rawles Llc Reduced Latency Electronic Content System

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039699B1 (en) * 2000-05-02 2006-05-02 Microsoft Corporation Tracking usage behavior in computer systems
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US8949452B2 (en) 2005-04-07 2015-02-03 Opanga Networks, Inc. System and method for progressive download with minimal play latency
US20080172430A1 (en) 2007-01-11 2008-07-17 Andrew Thomas Thorstensen Fragmentation Compression Management
US8812673B2 (en) * 2007-02-14 2014-08-19 Alcatel Lucent Content rate control for streaming media servers
US8462759B2 (en) * 2007-02-16 2013-06-11 Semtech Canada Corporation Multi-media digital interface systems and methods
US7860996B2 (en) 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
WO2010052514A2 (en) * 2008-11-05 2010-05-14 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for utilizing ims data security mechanisms in a circuit switched network
US8898247B2 (en) 2009-06-17 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) Network cache architecture storing pointer information in payload data segments of packets
GB201105502D0 (en) * 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
EP2759075A4 (en) 2011-09-23 2015-06-03 Gilat Satellite Networks Ltd DECENTRALIZED COATING SYSTEM
US8645485B1 (en) * 2012-01-30 2014-02-04 Google Inc. Social based aggregation of related media content
WO2013148003A1 (en) 2012-03-26 2013-10-03 Unicorn Media, Inc. Dynamic audio track selection for media streaming
US9722852B2 (en) * 2013-05-24 2017-08-01 Cisco Technology, Inc. On-demand encapsulating of timed metadata in a network environment
US10754511B2 (en) * 2013-11-20 2020-08-25 Google Llc Multi-view audio and video interactive playback
EP2942971B8 (en) * 2014-05-08 2019-07-17 Icomera AB Method and system for bandwidth constrained media streaming to a moving vehicle

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070136741A1 (en) 2005-12-09 2007-06-14 Keith Stattenfield Methods and systems for processing content
US20090099911A1 (en) 2007-10-11 2009-04-16 Sony Corporation Systems and Methods for Managing Advertising Content Corresponding to Streaming Media Content
US20120076357A1 (en) 2010-09-24 2012-03-29 Kabushiki Kaisha Toshiba Video processing apparatus, method and system
US20120079059A1 (en) 2010-09-27 2012-03-29 Motorola-Mobility, Inc. Selectively receiving media content
WO2012164360A1 (en) 2011-06-02 2012-12-06 Nds Limited Content insertion in adaptive streams
US20140297881A1 (en) 2013-03-28 2014-10-02 Sonic Ip, Inc. Downloading and adaptive streaming of multimedia content to a device with cache assist
US20150086033A1 (en) 2013-09-20 2015-03-26 Rawles Llc Reduced Latency Electronic Content System

Also Published As

Publication number Publication date
CN111954033B (zh) 2023-01-13
EP3375192A1 (en) 2018-09-19
KR20180081783A (ko) 2018-07-17
US20170318065A1 (en) 2017-11-02
US11019125B2 (en) 2021-05-25
EP3375192B1 (en) 2021-01-27
EP3790278A1 (en) 2021-03-10
CN111954033A (zh) 2020-11-17
US10298646B2 (en) 2019-05-21
US20200267196A1 (en) 2020-08-20
US10659506B2 (en) 2020-05-19
CN108476329B (zh) 2020-08-25
CN108476329A (zh) 2018-08-31
US20190268395A1 (en) 2019-08-29
WO2017189054A1 (en) 2017-11-02

Similar Documents

Publication Publication Date Title
KR102093429B1 (ko) 유사한 도입 장면 캐싱 메커니즘
US11816683B2 (en) Refreshing content items in offline or virally distributed content
US10511894B2 (en) Apparatus and method for tagging media content and managing marketing
CN114727134B (zh) 中断经不可侵犯清单协议提供的流传输内容的系统和方法
US9264750B2 (en) Advertising insertion for playback of video streams on user devices
US9699513B2 (en) Methods and apparatus for providing access to content
US10015535B2 (en) Systems and methods for providing content in a content list
US9491496B2 (en) Systems and methods for delivering content to a media content access device
US20120116883A1 (en) Methods and systems for use in incorporating targeted advertising into multimedia content streams
US11188603B2 (en) Annotation of videos using aggregated user session data
US20130263180A1 (en) Pre-fetch Ads while Serving Ads in Live Stream
JP5833114B2 (ja) Httpライブストリーミングと両立できるようにストリーミングメディアプログラムおよび目標とされた広告を供給する方法および装置
US20120210351A1 (en) Presentation of customized digital media programming
US9288526B2 (en) Method and system for delivery of content over communication networks
WO2012031246A1 (en) Method and apparatus for callback supplementation of media program metadata
US10845948B1 (en) Systems and methods for selectively inserting additional content into a list of content
WO2016034958A1 (en) Media player with local mass data storage device and browser

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
GRNT Written decision to grant