KR101629338B1 - 저스트-인-타임 분산 비디오 캐시 - Google Patents

저스트-인-타임 분산 비디오 캐시 Download PDF

Info

Publication number
KR101629338B1
KR101629338B1 KR1020157004371A KR20157004371A KR101629338B1 KR 101629338 B1 KR101629338 B1 KR 101629338B1 KR 1020157004371 A KR1020157004371 A KR 1020157004371A KR 20157004371 A KR20157004371 A KR 20157004371A KR 101629338 B1 KR101629338 B1 KR 101629338B1
Authority
KR
South Korea
Prior art keywords
source file
video
optimized
key
optimizer
Prior art date
Application number
KR1020157004371A
Other languages
English (en)
Other versions
KR20150038170A (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 KR20150038170A publication Critical patent/KR20150038170A/ko
Application granted granted Critical
Publication of KR101629338B1 publication Critical patent/KR101629338B1/ko

Links

Images

Classifications

    • 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
    • H04L29/06027
    • 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/10Architectures or entities
    • H04L65/1059End-user terminal functionalities specially adapted for real-time communication
    • 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/1066Session management
    • H04L65/1101Session protocols
    • H04L65/4084
    • 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/70Media network packetisation
    • 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/756Media network packet handling adapting media to device capabilities
    • 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/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2183Cache memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23103Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving 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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • H04N21/2396Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests characterized by admission policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/26613Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel for generating or managing keys in general
    • 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/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • 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
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/18Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

비디오 최적화기는 소스 파일을 최적화하고 상기 최적화된 파일을 스트리밍하기 위한 요청을 수신한다. 상기 요청은 최적화될 원본 소스 파일 및 클라이언트에게 스트리밍될 소스 파일의 최적화된 버전을 고유하게 식별하는 키를 동반할 수 있다. 변형된 소스 비디오 및 사용자 장치와의 호환성을 보장하기 위한 최적화 파라미터들에 의한 소스 파일의 최적화된 버전의 전송을 방지하기 위해서, 상기 키는 소스 비디오 파일이 기원 서버에 존재하는 동안 이를 고유하게 식별한다. 비디오 최적화기는, 비디오 최적화기들의 클러스터 내의 로컬 캐시들 사이의 최적화된 소스 파일들의 위치들 및 참조 키들을 포함하는, 수신된 요청에 응답하여 캐시 데이터베이스를 질의한다. 상기 캐시 데이터베이스 응답은 소스 파일의 매칭 최적화된 버전이 상기 클러스터의 주어진 비디오 최적화기의 로컬 캐시 내에 존재하는지 여부를 나타낸다.

Description

저스트-인-타임 분산 비디오 캐시{JUST-IN-TIME DISTRIBUTED VIDEO CACHE}
관련된 출원에 대한 크로스 레퍼런스
본 미국 출원은, 전체로 여기에서 참조에 의하여 결합되는 미국 가출원 제61/673,188호(2012년 07월 18일 출원)의 이익을 주장한다.
본 개시는 일반적으로 네트워크 상에서 사용자 경험을 향상시키는 것에 관련되며, 더욱 구체적으로, 네트워크에서 비디오 캐싱을 최적화하는 것에 관련된다.
최근 몇 년간, 스마트폰들 및 태블릿들과 같은 모바일 장치들이 널리 퍼졌다. 모바일 컴퓨팅 전원 및 광범위한 무선 인터넷 접속에서의 발전들을 고려할 때, 점점 더 많은 사용자들이 자신의 모바일 장치에서 스트리밍된 비디오를 시청한다. 이러한 스트리밍된 비디오들은 보통 사용자들이 그들의 모바일 장치들을 갖고 접근(access)하는 다양한 소스들로부터 다양한 품질들, 프레임 레이트들, 프레임 사이즈들 및 압축 레벨들로 스트리밍된다. 많은 경우들에서, 상기 네트워크 상에서 사용 가능한 비디오들이 무선 전송을 위해 또는 모바일 장치들 상에서 시청하기 위해 최적화 되지 않으며, 네트워크 컨디션에 상관없이 상기 소스로부터 주어진 품질로 스트리밍된다. 예를 들어, 최적화되지 않은 비디오는 사용자에게 컴퓨터 모니터 또는 텔레비전 상에서의 좋은 시청 경험을 제공하기에 충분한 품질 레벨을 가질 수 있다. 결과적으로, 보다 작은 부분이 상기 모바일 장치의 보다 작은 디스플레이 상에서 동일한 사용자 시청 경험을 제공하기에 충분할 때 대역폭의 불필요하게 큰 부분이 최적화되지 않은 비디오를 스트리밍하기 위해서 사용될 수 있다.
현존하는 네트워크 제공자들 또는 미디어 소스들은 스트리밍된 비디오상에서 비디오 최적화를 수행하여 비디오 스트리밍 동안의 상기 대역폭 사용을 향상시키려고 시도해왔다. 최적화는 종종 비디오와 같은 소스 파일을 모바일 장치들 또는 상기 네트워크 제공자의 시스템의 역량들에 보다 근접하게 들어맞는 포맷(format)으로 트랜스코딩(transcoding)하는 것을 수반한다. 최적화가, 모바일 장치 상에서 보여지는 것과 같은 상기 스트리밍된 비디오의 상기 품질에 적은 영향을 갖는 상기 대역폭 사용을 향상시키는 동안, 서버가 상기 트랜스코딩 처리를 시작하는 것에 따라서 상기 최적화 처리는 대개 비디오 스트리밍 및 재생에서 지연을 초래한다. 이러한 지연들은 궁극적으로 상기 사용자의 시청 경험에, 상기 사용자로 하여금 상기 비디오 스트리밍을 조기에 중단하거나 또는 다른 스트리밍 사이트로 전환하도록 이끄는, 부정적인 영향을 초래한다.
개시된 구현들은 발명을 실시하기 위한 구체적인 내용, 첨부된 청구항들 및 첨부된 도면들(또는 그림들)로부터 보다 손쉽게 확인될 다른 이점들 및 기능들을 갖는다. 상기 도면들의 간단한 소개는 다음과 같다.
도면(도) 1은 최적화된 비디오 캐싱을 위한 예시적인 통신 환경의 고-레벨 블록도를 나타낸다.
도 2는 기계 판독 가능한 매체로부터 명령들을 판독하고 그것들을 프로세서 또는 제어기에서 실행할 수 있는 예시적인 기계의 구성요소의 일 실시예를 나타낸다.
도 3a 내지 3d는 최적화된 비디오를 사용자 장치로 제공하기 위한 예시적인 이벤트 행적의 실시예들을 나타낸다.
도 4는 캐시 헤더들을 사용하는 예측 부호화의 일 실시예의 흐름도를 나타낸다.
상기 도면들(도) 및 이어지는 설명은 단지 선호되는 실시 예들에 관한 것이다. 이어지는 논의로부터, 여기에 개시된 구성 및 방법의 다른 실시 예들은 청구항에 기재된 발명의 원리에서 벗어나지 않고 이용될 수 있는 가능한 대안으로 인식될 것이다.
첨부된 도면들에 도시되어 있는 다수의 실시 예들에 대한 자세한 참조가 이루어질 것이다. 실질적으로 유사하거나 동일한 참조 번호가 도면에서 사용될 수 있으며 유사하거나 동일한 기능을 나타낼 수 있음에 유의한다. 상기 도면들은 설명을 위한 목적으로만 상기 개시된 시스템(또는 방법)의 실시 예들을 나타낸다. 당업자는 이어지는 설명으로부터 여기에 나타내어진 구성 및 방법의 다른 실시 예들이 여기서 설명된 상기 원리에서 벗어나지 않고 이용될 수 있음을 인식할 것이다.
개요(OVERVIEW)
네트워크 제공자들 및 미디어 소스들은 모바일 장치들로의 비디오와 같은 소스(source) 파일들의 상기 스트리밍 품질 향상 방법으로 로컬 캐싱(local caching)을 사용할 수 있다. 소스 파일이 비디오 트랜스코딩되고 비디오 최적화기에 의해 최적화될 때, 예를 들어, 이는 로컬 캐시(local cache)로 저장될 수 있다. 로컬 캐싱은 상기 비디오 최적화기가 상기 트랜스코딩된 소스 파일(또는 상기 소스 파일의 최적화된 버전)을 짧은 기간 동안, 그리고 트랜스코딩을 위한 상기 소스 파일을 재-검색함 없이 사용자의 요청(예를 들어, 상기 비디오를 다시 재생 또는 상기 비디오의 타임라인에서 건너뛰기)에 응답하여 저장하는 것을 허용한다. 따라서, 상기 로컬 캐시 설정은 단일 세션(session) 동안 특정 사용자에 대한 특정 파일을 반복하여 검색 및 트랜스코딩하는 것을 방지한다.
그러나 일반적으로 상기 트랜스코딩된 파일은 상기 사용자가 상기 세션을 종료한 직후 상기 로컬 캐시로부터 제거(purge)된다. 제거는, 다른 사용자들에 대한 트랜스코딩 동안 다른 파일들의 로컬 캐싱을 허용하기 위한 것 및 저작권 위반을 회피하기 위한 것인 두 개의 메인 세션들에 대해서 발생한다. 상기 후자는 상기 저작권 보유자(copyright holder)자로부터 더 이상 이용 가능하지 않은 저작권 파일의 최적화된 버전을 저장(및 스트리밍)하는 상기 비디오 최적화기에 기인한다. 이는 상기 트랜스코딩 서비스 제공자에게 원하지 않는 법적 책임까지 벌어지게 한다. 캐싱된(cached) 파일들이 제거되지 않더라도, 사용자는 상기 최적화된 소스 파일을 캐싱한, 잠재적으로 수천 개들 중에서, 특정 비디오 최적화기로 전송되기에 충분하여야 한다. 그렇지 않으면, 사용자는 다른 비디오 최적화기로부터 상기 비디오를 앞서 스트리밍한 사용자처럼 상기 동일한 트랜스코딩 구동에 걸쳐서 기다려야 한다.
여기에 개시된 실시예들은 다수의 비디오 최적화기들에서 발생되는 최적화된 비디오의 로컬 캐싱을 모니터링하기 위한 캐시 데이터베이스를 포함한다. 상기 캐시 데이터베이스는 주어진 최적화기에서 국소적으로(locally) 캐싱된 각각의 최적화된 비디오에 대응되는 엔트리들을 유지한다. 결국, 사용자가 비디오 최적화기에서 소스 서버 상의 주어진 소스 파일의 상기 최적화를 요청하면, 상기 캐시 데이터베이스는 상기 비디오 최적화기에게 다른 최적화기들-상기 다른 최적화기들은 상기 주어진 소스 파일을 그들의 로컬 캐시에서 앞서 최적화하고 저장-의 위치들 및 어드레스들을 제공할 수 있다. 상기 소스 파일에 대한 상기 최적화 요청을 수신하는 상기 최적화기는 그 후에 상기 최적화된 파일을 다른 최적화기에서 검색할 수 있고, 또는 상기 사용자 장치를 상기 제2 최적화기로 리다이렉트(redirect)할 수 있으며, 따라서 불필요한 최적화된 소스 파일들을 생성할 필요를 제거한다. 동일한 소스 파일들을 반복적으로 트랜스코딩하는 것보다 존재하는 최적화된 소스 파일들에 접근하는 것에 의해, 리소스 과도한 트랜스코딩 구동을 제공하기 위해서 보다 적은 비디오 최적화기들이 요구된다.
하나의 예시적인 실시예에서, 사용자 장치가 복수의 소스 파일들을 저장하고 있는 기원 서버(origin server)로부터 소스 파일을 요청할 때, 조종 장치는 네트워크 제어기에서 상기 요청을 처리하기 위해서 상기 요청을 탐지 및 가로챌 수 있다. 상기 네트워크 프로세서는 네트워크 흐름들이, 상기 네트워크에서 상기 대역폭 사용을 최적화하기 위해 요청들 및 다른 데이터를 리다이렉트하는, 상기 네트워크를 트래버스(traverse)함에 따라서 네트워크 흐름들에 관한 데이터를 수집할 수 있다. 일 실시예에서, 상기 네트워크 제어기는 상기 소스 파일, 상기 네트워크의 상태 및 상기 사용자 장치에 관한 정보를 결정하기 위해서 상기 요청 및 관련된 트래픽(즉, 네트워크 흐름)을 검사한다. 추가적으로, 상기 네트워크 제어기는 상기 소스 파일을 위한 상기 요청을 기원 서버로 포워딩할 수 있으며, 상기 소스 파일이 비디오에 대응되는지 여부를 결정하기 위해 상기 기원 서버의 응답을 가로챌 수 있다. 상기 가로채어진 요청 및/또는 응답은 비디오 정보 또는 상기 소스 파일 자체의 일부를 포함할 수 있다.
상기 네트워크 제어기는 상기 요청된 소스 파일을 트랜스코딩할지 여부를 결정하고 상기 사용자 장치에 대한 상기 소스 파일을 트랜스코딩하기 위한 최적화 파라미터들을 결정하기 위해서 상기 정보를 처리한다. 상기 네트워크 제어기는 상기 원본 소스 파일 및 상기 최적화된 소스 파일 양쪽 모두와 연관하여 식별자(ID) 키를 고유하게 생성(예를 들어, 상기 특정된 최적화 파라미터들에 기초하여)할 수 있다. 결국, 상기 네트워크 제어기는 상기 사용자 장치를 비디오 최적화기로 리다이렉트할 수 있다. 일 실시예에서, 상기 네트워크 제어기는 상기 사용자 장치로 전송되는 리다이렉트된 요청 내부에 상기 ID 키를 포함시킬 수 있다. 이와는 달리, 상기 네트워크 제어기는 상기 ID 키를 상기 사용자 장치가 리다이렉트 되었던 상기 비디오 최적화기로 전송할 수 있다. 상기 소스 비디오 파일을 검색하기 위해서 상기 ID 키를 전달하고 상기 사용자 장치를 비디오 최적화기로 리다이렉팅하는 것에 의해, 상기 사용자는 직접 입력 없이 또는 상기 처리의 발생조차도 알지 못하고 상기 소스 파일의 최적화된 버전을 수신할 수 있다.
이미 트랜스코딩된 소스 파일을 재-트랜스코딩할 필요를 제거하기 위해서, 상기 비디오 최적화기는 그의 로컬 캐시 및/또는 참조 ID 키들을 저장하는 캐시 데이터베이스를 조회(query)할 수 있으며, 상기 참조 ID 키들은 상기 캐시 데이터베이스로 보고하는 비디오 최적화기들에 저장된 소스 파일들의 최적화된 버전들에 대응된다. 만약 참조 ID 키가 상기 요청된 소스 파일에 대한 상기 ID 키와 매치(match)하면, 상기 소스 파일의 존재하는 최적화된 버전은 상기 사용자 장치로 제공될 수 있다. 중요하게, 상기 ID 키는 상기 소스 파일 및 상기 최적화된 소스 파일 양쪽 모두를 고유하게 식별한다. 만약 상기 소스 파일에 대한 어떤 변화라도 있는 경우, 참조 키들은 상기 생성된 ID 키들과 매치하지 않을 것이고 새로운 소스 파일이 검색되고 트랜스코딩될 것이다. 따라서, 예를 들어, 만약 상기 소스 파일의 저작권 소유자(copyright owner)가 상기 소스 파일을 변형시킨다면, 상기 저작권 보유자로부터 현재 이용 가능한 상기 소스 파일의 최적화된 버전만이 상기 사용자 장치로 제공된다. 상기 소스 파일을 요청하는 상기 사용자 장치를 위해 상기 특정 최적화 파라미티들로의 상기 소스 파일의 상기 최적화된 버전을 매칭하는 것은 적당하게 최적화된 버전이(하나 이상이 있을 수 있으며, 예를 들어, 모바일 폰의 사이즈가 아니라 태블릿 디스플레이 사이즈를 위한 것 또는 3G 연결의 속도가 아니라 4G 연결 속도를 위한 것) 상기 사용자 장치로 제공되는 것을 보장한다.
일 실시예에서, 상기 소스 파일은 앞서 트랜스코딩되지 않았거나 또는 특정 최적화 파라미터들에 기초하여 트랜스코딩되고 따라서 상기 사용자 장치의 요구사항들을 만족하는 상기 소스 파일의 최적화된 버전은 상기 비디오 최적화기들의 어느 것에도 존재하지 않게 된다. 따라서, 상기 ID 키는 상기 캐시 데이터베이스내의 어떠한 참조 키와도 매치하지 않을 것이다. 상기 캐시 데이터베이스는 상기 ID 키를 갖고 상기 캐시 데이터베이스를 조회하는 상기 비디오 최적화기에게, 상기 비디오 최적화기로 하여금 상기 기원 서버로부터 상기 소스 파일을 검색하고 트랜스코딩 및 상기 소스 파일을 상기 사용자에게 스트리밍하기 시작하도록 하는, 캐시 미스 표시를 반환한다. 상기 최적화된 소스 파일의 적어도 일 부분이 상기 비디오 최적화기에서 캐싱되면, 상기 비디오 최적화기는 상기 캐시 데이터베이스를, 상기 비디오 최적화기에서 현재 국소적으로 캐싱된 상기 최적화된 소스 파일의 상기 부분에 대응되는 엔트리와 함께 업데이트할 수 있다. 일 실시예에서, 상기 비디오 최적화기는 상기 비디오 최적화기의 상기 로컬 캐시에 저장된 상기 소스 파일의 상기 최적화된 버전의 상기 파라미터들 및 상기 소스 파일을 고유하게 식별하는 새로운 참조 키로서 상기 캐시 데이터베이스에 저장하기 위해 상기 네트워크 제어기로부터 수신한 상기 ID 키를 제출한다. 상기 소스 파일의 동일한 부분에 대한 상기 저장된 참조 키와 매칭되는 ID 키를 갖고 상기 캐시 데이터베이스를 조회하는 다른 비디오 최적화기들은 상기 소스 파일의 상기 동일한 부분을을 재-트랜스코딩하는 대신에 상기 비디오 최적화기의 상기 로컬 캐시에 저장된 상기 소스 파일의 상기 존재하는 최적화된 버전으로 나타내어질 수 있다.
다른 실시예에서, 상기 소스 파일은 다른 최적화기에 의해서 이미 앞서서 트랜스코딩되었고 원하는 파라미터들을 갖는 최적화된 버전은 상기 다른 최적화기들 중 어느 하나의 로컬 캐시에 저장된다. 상기 캐시 데이터베이스는 캐시 히트 표시를 상기 ID 키를 갖고 상기 캐시 데이터베이스를 조회하는 상기 비디오 최적화기로 전달한다. 상기 캐시 히트 응답은 제2 비디오 최적화기가 상기 소스 파일의 최적화된 버전을 갖고 있다는 것을 그의 로컬 캐시의 상기 ID 키 내에 있는 상기 특정 최적화 파라미터들과 매칭되는 참조키를 이용하여 표시한다. 일 사례에서, 상기 최적화기는 상기 소스 파일의 상기 최적화된 버전을 국소적으로 캐싱한 상기 제2 최적화기로부터 상기 최적화된 소스 파일을 요청할 수 있다. 상기 제1 최적화기는 이후에 재생을 위해 상기 최적화된 비디오를 상기 사용자 장치로 포워딩할 수 있다. 다른 사례에서, 제1 최적화기는 리다이렉트를 상기 사용자 장치로 전달할 수 있다. 상기 리다이렉트는 상기 사용자 장치가 상기 소스 파일의 상기 최적화된 버전을 저장하고 있는 상기 제2 비디오 최적화기로 연결되도록 할 수 있다. 상기 리다이렉트는 상기 네트워크 상에서 상기 제2 최적화기의 위치 및 상기 생성된 ID 키를 포함할 수 있다. 이 사례에서, 상기 제2 최적화기는 상기 소스 파일의 상기 최적화된 버전을 상기 사용자 장치로 즉시 스트리밍하여 응답한다.
몇몇 사례들에서, 대중적인 소스 파일은 많은 사용자들에 의해 자주 요청된다. 그러한 특정 소스 파일에 대한 증가된 요구에 응답하여, 비디오 최적화기는 제2 최적화기상에 존재하는 상기 소스 파일의 최적화된 버전을 복제하기 위해 요청할 수 있다. 상기 자주 요청된 소스 파일의 상기 최적화된 버전을 상기 제1 최적화기에 저장하여, 상기 제1 최적화기는 상기 소스 파일에 대한 상기 요청 부담을 상기 제2 최적화기와 나눌 수 있고, 따라서 상기 제2 최적화기에 대한 부담을 감소시킬 수 있다. 이익으로는 최적화기들 모두가 상기 소스 파일의 동일한 최적화된 버전을 제공할 수 있으며 다른 소스 파일 최적화 요청들을 여전히 처리하고 있는 동안 상기 소스 파일에 대한 요청들에 보다 빨리 응답할 수 있다는 점이다.
최적화된 비디오 캐싱 환경(OPTIMIZED VIDEO CACHING ENVIRONMENT)
이제 도(도면) 1을 참조하면, 이는 최적화된 비디오 캐싱을 위한 예시적인 통신 환경(100)의 고-레벨 블록도를 나타낸다. 상기 환경(100)은 사용자 장치들(110A 및 110B)(총괄하여 사용자 장치들(110)로 나타내어짐), 기원 서버(170), 조종 장치(130), 네트워크 제어기(140), 비디오 최적화기(150), 캐시 데이터베이스(160) 및 네트워크(120)을 포함한다. 상기 네트워크(120)는 상기 사용자 장치들(110), 상기 조종 장치(130) 및 상기 기원 서버(170) 및/또는 상기 비디오 최적화기(150) 사이에서 데이터를 전송하는 통신 네트워크이다. 일 실시예에서 상기 네트워크(120)는 무선 네트워크 및 인터넷(Internet)을 포함한다.
자본 지출이 수익을 앞지르지 못하게 하기 위한 네트워크 효율성 전략은, 더 높은 데이터 사용에 점점 더 의존하는 더 좋은 사용자 경험을 위해서 소비자로부터의 요청과 균형을 이루어야 한다. 오늘날, 이동통신 사업자들은 지능적 최적화, 와이파이 오프로드(Wi-Fi offload) 및 데이터 사용 한도들을 포함하는 용량을 관리하기 위한 다양한 도구들을 사용한다. 상기 환경(100)은 어떤 서비스 제공에도 적합하도록 통일된 기반을 깊은 세션 정보, 집적된 서비스 관리 및 역동적 적응성과 함께 제공하는 솔루션을 시연한다. 이와 함께, 상기 네트워크 제어기(140) 및 상기 비디오 최적화기(150)는 다른 대체 솔루션들에 비해서 더 좋은 최대 용량 절감과 함께 인터넷 사업 제공자들뿐만 아니라 무선 사업자들에게 외과적 용량 이익을 가져오는 월드 클래스 미디어 최적화 솔루션을 전달한다.
일 실시 예에서, 상기 사용자 장치들(110)은 네트워크 능력들을 갖는 컴퓨팅 장치들이다. 예를 들어, 상기 사용자 장치들(110)은 종종 웹 브라우저 및 미디어 디스플레이 능력을 갖는 무선 가능한 모바일 컴퓨팅 장치들이다. 모바일 컴퓨팅 장치들로서 상기 사용자 장치들(110)은 랩탑들, 넷북들, 태블릿들, 스마트 폰들, 또는 개인용 디지털 보조기기(personal digital assistants; PDAs)를 포함할 수 있다. 도 1에 단지 두 개의 사용자 장치들(110A 및 110B)이 도시되어 있으나, 상기 환경(100)은 수천 또는 수백만의 상기 장치들을 포함할 수 있다. 상기 웹 브라우저들은 상기 기원 서버(160)로부터 웹 콘텐츠를 포한하는 소스 파일들을 검색하고 상기 웹 콘텐츠를 모바일 장치와 연결된 디스플레이에 표시하기 위해 모바일 장치들(110)에서 실행되는 소프트웨어 어플리케이션들일 수 있다. 상기 사용자 장치들(110)에 의해 접근된 멀티미디어 웹 콘텐트는 문자, 이미지들, 오디오 및 비디오 콘텐트를 포함한다. 소스 파일들은 멀티미디어 웹 콘텐트의 하나 이상의 유형들을 포함할 수 있다. 상기 멀티미디어 콘텐트는 상기 브라우저들, 예를 들어 HTML5 호환 브라우저들, 플러그인(plug-in) 또는 독자적인 미디어 플레이어에 의해 재생될 수 있다. 상기 브라우저들은 또한 상기 사용자 장치들(110) 상에서 상기 미디어 플레이어들 또는 플러그인 들이 사용 가능하도록 불러올 수 있으며 재생을 위해서 상기 미디어 플레이어 또는 플러그인으로 이미지들, 오디오 및/또는 비디오를 전달할 수 있다.
상기 조종 장치(130)는 상기 사용자 장치(110) 및 상기 네트워크(120) 사이에 위치하는 로드 밸런서(load balancer) 또는 라우터(router)일 수 있다. 상기 조종 장치(130)는 상기 사용자 장치(110)에게 상기 네트워크로의 접근을 제공함에 따라서, 상기 사용자 장치가 통과하는 게이트웨이(gateway)에게 상기 네트워크 방향으로 흐르는 트래픽 흐름을 제공하며, 이의 역도 또한 같다. 일 실시 예에서, 상기 조종 장치(130)는 상기 네트워크 제어기(140)에서 보다 자세한 검사를 위한 흥미 있는 흐름들을 식별하기 위해서 그것을 통과하는 트래픽을 분류한다. 이와는 달리, 상기 네트워크 제어기(140)는 상기 모니터링 및 네트워크 트래픽의 분류, 예를 들어 HTTP 트래픽 흐름들에서 크고 작은 객체들을 식별하는 것을 조직화 하기 위해서 상기 조종 장치(130)와 접속된다. 이러한 경우에, 상기 조종 장치(130)는, 보다 자세한 검사를 위해 흥미 있는 흐름들을 분류하기 위한 요구된 기준에 기초하여 상기 네트워크 제어기(140)로부터 명령을 수신한다.
그러나, 상기 무선/셀룰라 사용자 장치들(110) 측면에 대한 정보는 종종 상기 셀룰라(cellular) 네트워크 및 상기 유선 인터넷 사이에 있는 상기 조종 장치(130)에서 사용 가능하지 않다. 예를 들어, 상기 모바일 장치들(110)과 연관된 상기 타워들의 상기 식별자에 대한 정보가 종종 없다. 타워 관련 정보는 상기 모바일 장치들이 처음에 상기 네트워크에 연결 될 때에만 방송된다. 추가로, 사용자 장치들(110)은 그들의 IP 어드레스들을 제외하고 어떤 식별 정보도 대게는 보고하지 않는다. 그러므로, 상기 네트워크 트래픽의 모니터링 및 상기 혼잡의 탐지는 상기 탐지기(140)에 의해 자동화되고 관리되어 네트워크는 상기 모바일 사용자가 알지 못하게 최종 사용자의 경험을 위해서 최적화 될 수 있다.
전송 및 수신되는 모든 단일 데이터 패킷들을 모니터링하는 종래의 인라인 TCP 처리량 모니터링 장치들과는 대조적으로, 상기 네트워크 제어기(140)는 흥미 있는 사용자 흐름들을 선택적으로 검사하기 위해 상기 조종 장치(130)와 접속되는 “대역 외(out-of-band)” 컴퓨터 서버이다. 상기 네트워크 제어기(140)는 최적화를 위해서 사용자 흐름들을(예를 들어, 흥미 있는 상기 흐름들 중에서) 더 식별할 수 있다. 일 실시 예에서, 상기 네트워크 제어기(140)는 트래픽을 모니터하기 위해서 상기 조종 장치(130)에서 구현될 수 있다. 다른 실시 예에서, 상기 네트워크 제어기(140)는 트래픽 모니터링 및 최적화를 위해서 상기 조종 장치(130)와 연결되어 통신할 수 있다. 상기 조종 장치(130)에 의해 질의될 때, 상기 네트워크 제어기(140)는 주어진 네트워크 흐름이 무시되어야 하는지, 더 모니터 되어야 하는지 또는 최적화 되어야 하는지를 결정한다. 한번 최적화되지 않은 콘텐트 전달이 시작되면 도중에 최적화된 콘텐트로 전환하는 것은 드물게 가능하기 때문에, 흐름의 최적화는 종종 상기 흐름의 초기에 결정된다. 그러나, 상기 네트워크 제어기(140)는 특정 가입자 또는 다른 개체와 연관된 현존하는 흐름들이 최적화 되어야 하는 것으로 결정할 수 있다. 결국, 상기 개체와 연관되도록 결정된 새로운 흐름들(예를 들어, 미디어에서 탐색 요청, 새로운 미디어 요청, 일시 정지 이후의 재개 등으로 인한)은 최적화 될 수 있다. 상기 네트워크 제어기(140)는 이전 이력의 트래픽 데이터뿐만 아니라 상기 네트워크 상태를 모니터링 및 최적화를 위한 결정에 이용한다. 혼잡과 같은 현재 네트워크 상태에 대한 지식은 데이터 최적화에 관한 한 결정적인 것으로 여겨진다.
일 실시예에서, 상기 네트워크 제어기(140)는 상기 사용자 장치(110) 및 상기 환경(100)의 다른 구성요소들, 예를 들어 상기 비디오 최적화기(150) 또는 상기 기원 서버(170), 사이의 조정자이다. 상기 사용자 장치(110)가 비디오들 또는 다른 관련된 소스 파일들에 대한 요청들을 전송할 때, 상기 요청은 상기 조종 장치(130)에 의해 가로채어지고 상기 흐름은 추가 분석을 위해 상기 네트워크 제어기(140)로 전달된다. 몇몇 경우들에서, 상기 네트워크 제어기(140)는 상기 네트워크(120)의 전체 용량 향상시키기 위해 상기 요청된 소스 파일이 더 최적화될 수 있다는 것을 결정할 수 있다. 몇몇 사례들에서, 상기 제어기(140)는 상기 소스 파일을 위해 상기 가로채어진 요청을 상기 기원 서버(170)로 포워딩할 수 있고, 상기 소스 파일을 최적화할지 여부 및 상기 소스 파일에 관한 정보를 결정하기 위해서 상기 기원 서버(170)로부터의 상기 응답을 가로챌 수 있다.
만약 상기 네트워크 제어기(140)가 상기 요청된 소스 파일이 최적화 되어야 한다고 결정한다면, 상기 네트워크 제어기(140)는 상기 소스 파일의 최적화된 버전을 생성하기 위한 최적화 파라미터들을 결정한다. 상기 최적화 파라미터들은 상기 사용자 장치(110)와 호환되고 상기 네트워크(120) 및 상기 사용자 장치(110)의 사용 가능한 대역폭 용량을 만족하도록 상기 소스 파일을 트랜스코딩하기 위한 타겟 비트 레이트, 프레임 폭, 프레임 높이, 샘플 레이트, 오디오 속성들 등과 같은 속성들을 지정한다. 상기 네트워크 제어기(140)는, 결과적으로, 상기 최적화 파라미터들을 비디오 최적화기(150)에게 제공하고 상기 소스 파일의 최적화된 버전(예를 들어, 상기 최적화 파라미터들에 따라서 트랜스코딩된)을 검색하기 위해서 상기 사용자 장치(110)를 상기 비디오 최적화기(150)로 리다이렉트한다. 만약 상기 네트워크 제어기(140)가 상기 요청된 소스 파일을 최적화하지 않기로 결정한다면, 상기 네트워크 제어기(140)는 계속하여 상기 흐름을 모니터링 하거나 또는 상기 조종 장치(130)에게 상기 흐름을 상기 네트워크 제어기(140)로 전송하지 않도록 명령할 수 있다.
상기 네트워크 제어기(140) 도시된 바와 같이 요청 소스 파일들 및 최적화 파라미터들을 고유하게 식별하는 식발자(ID) 키를 생성하기 위한 키 생성기(145)를 포함하며, 상기 최적화 파라미터들은 상기 사용자 장치(110)를 위해 상기 소스 파일을 비디오 최적화기(150)가 어떻게 트랜스코딩 하여야 하는지를 설명한다. 상기 소스 파일에 대한 상기 ID 키를 생성하기 위해서, 상기 키 생성기(145)는 상기 요청된 소스 파일을 고유하게 설명하는 상기 기원 서버(170)로부터 가로채어진 응답에 포함된 소스 파일 정보 및/또는 장치 요청(110)으로부터 가로채어진 요청에 포함된 소스 파일 정보로부터 소스 파일 시그니쳐(signature)를 결정할 수 있다. 일 실시예에서, 상기 소스 파일 시그니쳐는 상기 원본 파일의 또는 상기 원본 파일 부분의 해시(hash), 상기 비디오의 속성들(예를 들어, 비트 레이트, 프레임 폭, 프레임 높이, 샘플 레이트, 오디오 속성들 등), 상기 원본 파일의 URL 등을 포함할 수 있다. 몇몇 사례들에서, 도메인 또는 웹사이트가 상기 URL에 추가적인 부분들을 추가하거나 변형하는 사례들에서 상기 소스 시그니쳐의 상기 URL 부분은 변하지 않도록, 상기 URL이 변형될 수 있다. 추가적으로, 상기 키를 생성하기 위해서, 상기 키 생성기(145)는 상기 소스 파일의 상기 최적화된 버전을 생성하기 위해서 상기 네트워크 제어기(140)에 의해 결정된 최적화 파라미터들을 수신할 수 있다. 이러한 파라미터들을 통해서, 상기 생성된 키는 다양한 비디오 최적화기들(150)의 캐시에 저장된 상기 소스 파일의 특정한 최적화된 버전을 식별하기 위해서 이용될 수 있다. 일 실시예에서, 상기 생성된 키는 상기 사용자 장치(110)로의 리다이렉트 요청을 따라서 전송된다. 상기 비디오 최적화기(150)는 상기 소스 파일에 대한 상기 리다이렉트된 요청을 따라서 상기 ID 키를 수신한다. 상기 비디오 최적화기(150)는 상기 소스 비디오 파일의 최적화된 버전이 이미 로컬에 존재하는지 또는 다른 비디오 최적화기에 존재하는지 여부를 결정하기 위해서 그의 로컬 캐시(155) 및 상기 캐시 데이터베이스를 상기 ID 키를 갖고 질의할 수 있다.
상기 비디오 최적화기(150)는 비디오 및 이미지와 같은 소스 파일 최적화를 제공하고, 상기 네트워크(120)를 통해 상기 사용자 장치들(110)로 최적화된 비디오 및 이미지 콘텐트를 전달하는 컴퓨터 서버이다. 상기 비디오 및 이미지 최적화는 상기 비디오 및 이미지 콘텐트의 트랜스코딩(transcoding)을 통해 제공되는 온-디맨드 서비스이다. 예를 들어, 사용자 장치가 상기 기원 서버(160)로부터 비디오를 검색 하려고 시도할 때, 상기 네트워크 제어기(140)는 콘텐트 최적화를 위해서 상기 흐름이 어떤 기준을 만족하는지를 결정할 수 있다. 상기 네트워크 제어기(140)는 그러면 상기 최적화된 콘텐트를 검색하기 위해서 상기 사용자 장치들(110)을 상기 비디오 최적화기(150)로 다시 보낸다. 상기 비디오 최적화기(150)는 상기 사용자 장치들(110)로부터 또는 상기 네트워크 제어기(140)로부터 상기 리다이렉트 요청의 상기 비디오 또는 이미지 콘텐트의 위치 및 최적화 파라미터들을 수신하며 최적화 및 상기 사용자 장치들(110)로의 이어지는 전달을 위해서 상기 대응되는 기원 서버(170)로부터 상기 비디오 또는 이미지 콘텐트를 검색한다.
일 실시예에서, 상기 비디오 최적화기(150)는 기원 서버(170) 또는 다른 소스로부터 직접 소스 파일 콘텐트를 습득하고 실시간으로 감소된 비트 레이트 스트림을 생산한다. 상기 트랜스코딩되고 최적화된 스트림은 일시적으로, 로컬 캐시(155)로 나타내어질 수 있는, 로컬 저장소에 저장될 수 있다. 예를 들어, 상기 로컬 캐시(155)는 SATA(serial ATA)/ SAS(serial Attached SCSI) 스피닝(spinning) 또는 플래시 미디어의 형식일 수 있다. 몇몇 실시예들에서, 상기 로컬 캐시(155)는 상기 비디오 최적화기(150) 내에 물리적으로 위치하고 버스를 통해 상기 비디오 최적화기(150) 시스템의 다른 구성요소들과 연결될 수 있다. 다른 실시예들에서, 상기 로컬 캐시(155)는 상기 비디오 최적화기(150)의 외부에 위치하고 네트워크(120) 또는 다른 방식의 유선/무선 연결을 통해 상기 비디오 최적화기(150)와 연결될 수 있다. 각각의 비디오 최적화기(150)가 최적화된 소스 파일 스트림의 평균 사이즈와 비교하여 대용량의 저장소를 갖고 있기 때문에, 각각의 비디오 최적화기(150)는 최적화된 데이터의 일부를 캐싱할 수 있다. 다수의 비디오 최적화기들(150)은, 로컬에서 캐싱된 최적화된 소스 파일들이 상기 개개의 비디오 최적화기들(150) 사이에서 공유되는, 비디오 캐싱 클러스터로 결합될 수 있다.
비디오 최적화기(150)의 상기 로컬 캐시(155) 내의 한정된 저장 공간 때문에, 상기 캐시(155)는 더 새로운 및/또는 더 인기 있는 소스 파일들의 최적화된 버전들이 분배 가능할 수 있도록 하기 위해서 효율적으로 관리된다. 상기 비디오 최적화기(150)는, 최소 최근 사용(least recently used) 파일들, 마지막 접근 시간, 히트 수(예를 들어, 전체 기간 및 마지막 기간), 복제 요청의 수(예를 들어, 트렌딩 업(tranding up)), 파일 사이즈(예를 들어, 공간을 절약하기 위해서 큰 파일들은 작은 파일들에 비해서 빠르게 제거될 수 있다), 또는 이전에/최근에 제거되었는지 여부 중 하나 이상에 따라서 삭제를 위해 캐싱된 파일들을 고려한다. 일 실시예에서, 상기 비디오 최적화기(150)는 삭제 구동에 필요한 시스템 프로세서 부하를 최소한도까지 유지하기 위해서 오랜 기간에 걸쳐서 작은 덩어리들의 캐싱된 파일들을 삭제한다. 몇몇 사례들에서, 상기 비디오 최적화기(150)는 또한 액티브 파일을 삭제하기 전에 상기 액티브 파일에 접근하는 모든 사용자들을 리다이렉트 할 때까지 기다릴 수 있다. 마지막 사용자가 리다이렉트되면, 사용자의 스트리밍 경험에 영향을 미치지 않고 상기 액티브 파일이 삭제될 수 있다. 몇몇 실시예들에서, 상기 비디오 최적화기(150)는 저장을 위해 그의 캐싱된 파일들 전부를 상기 캐시 데이터베이스(160)로 푸시할 수 있다.
비디오 최적화기(150)의 상기 로컬 캐시(155) 내의 상기 한정된 저장 공간을 보다 효율적으로 관리하기 위해서, 상기 캐시(155)는 최적화된 소스 파일의 작은 세그먼트(segment)들 또는 클립(clip)들 만을 저장할 수 있다. 일 실시예에서, 상기 작은 세그먼트는 상기 최적화된 소스 파일의 미리보기를 나타낼 수 있다. 사용자들이 일반적으로 사용자 장치(110)로 시트리밍되고 재생되는 비디오를 처음부터 끝까지 시청하지는 않기 때문에, 최적화된 소스 파일 전체를 상기 로컬 캐시(155)에 저장하는 것이 저장 공간의 효율적인 사용이 된다. 따라서, 상기 소스 파일의 일부 만을 비디오 미리보기로서 저장하여, 더 많은 최적화된 소스 파일들이 상기 로컬 캐시(155)에 저장될 수 있다. 더욱이, 상기 로컬 캐시(155)에 저장되어 있는 상기 비디오 미리보기 세그먼트 밖에 있는 상기 소스 파일의 부분들을 상기 사용자가 시청하기 원할 때, 상기 로컬 캐시(155)에 저장되어 있는 상기 비디오 미리보기 파일들이 검색되고 상기 대응되는 소스 파일의 최적화된 부분들에 연결(stitch)된다. 만약 소스 파일의 상이한 세그먼트들이 최적화된 비디오 미리보기 파일들로서 상이한 비디오 최적화기들(150)의 로컬 캐시들에 저장되면, 단일 비디오 최적화기(150)는 또한 상기 상이한 로컬 캐시들(155)로부터 상기 세그먼트들을 검색할 수 있으며 상기 세그먼트들을 함께 연결할 수 있고, 필요한 경우 추가적인 세그먼트들을 트랜스코딩한다.
상기 비디오 최적화기(150)의 상기 로컬 캐시(155)가 변형되면(예를 들어, 파일들이 추가, 제고 또는 갱신되면), 상기 비디오 최적화기(150)는 상기 변형된 파일과 연관되는 대응되는 엔트리를 갱신하기 위해서 상기 캐시 데이터베이스(160)로 명령어를 발행한다. 일 실시예에서, 상기 명령어들은 “캐시 추가(cache add)”, “캐시 제거(cache remove)”, “캐시 획득(cache get)” 또는 “캐시 전부 삭제(cache remove all)”을 포함할 수 있다. “캐시 추가(cache add)” 및 “캐시 제거(cache remove)”는, 예를 들어, 최적화된 소스 파일들이 상기 로컬 캐시(155)에서 갱신/저장될 경우 또는 파일들이 상기 로컬 캐시(155)에서 제거될 경우, 상기 캐시 데이터베이스(160)에서 엔트리들을 추가 또는 제거하기 위해서 사용된다. “캐시 전부 삭제(cache remove all)”는 특정 비디오 최적화기(150)와 연관된 엔트리들의 집합 전부를 제거하기 위해서 사용될 수 있다. 이는 특히 비디오 최적화기(150)가 종료되거나 또는 충돌하여 전체 캐시가 상실될 수 있는 경우에 유용하다. “캐시 획득(cache get)” 명령어는, 주어진 비디오 최적화기(150)의 또는 그의 로컬 캐시(155)에 저장된 상기 소스 파일의 상기 요청된 최적화된 버전을 갖는 서버의 IP 주소를 식별하기 위해서 상기 캐시 데이터베이스(160)를 질의하기 위한 ID 키와 종종 동반된다. 이러한 실시예들에 나타난 상기 명령어들에 추가하여 다른 캐시 명령어들이 사용될 수 있다.
몇몇 실시예들에서, 상기 로컬 캐시(155)는 예측 부호화에서 사용될 최적화된 소스 파일들에 대한 헤더들을 저장하는데 또한 사용될 수 있다. 도 4에서 더욱 상세하게 설명될 헤더들은 트랜스코딩 처리의 시작에 앞서서 생성되며 상기 소스 파일들과 관련된 기본 정보를 포함한다. 미디어 플레이어들은 소스 파일들을 재생 및 인식할 수 있기 위해서 헤더 파일들을 분석한다. 최적화된 소스 파일이 처음 생성되면, 상기 비디오 최적화기(150)는 최종 최적화된 소스 파일의 특징들을 예측한다. 상기 예측이 상기 트랜스코딩 처리 이전에 수행되기 때문에, 결과 헤더 파일이 부정확할 수 있다. 예측 부호화를 통해, 비디오 최적화기(150)는 생성된 헤더들을 상기 트랜스코딩 처리 이후에 상기 로컬 캐시(155)에 저장할 수 있으며 동일한 소스 파일의 이후의 최적화 동안 더욱 정확한 헤더 파일을 생성하는데 사용하기 위해서 상기 저장된 헤더들을 검색할 수 있다.
상기 캐시 데이터베이스(160)는 이미 다른 비디오 최적화기(150)에 의해 앞서 최적화가 된 소스 파일들을 트랜스코딩 할 필요를 제거하는 것에 의해서 상기 비디오 최적화기(150)의 수행능력을 향상시킨다. 일 실시예에서, 상기 캐시 데이터베이스(160)는 소스 파일들의 로컬에서 캐싱된 최적화된 버전들의 위치를 그의 데이터베이스의 최적화 클러스터에 저장한다. 상기 캐싱된 최적화된 소스 파일의 상기 위치에 더해서, 상기 캐시 데이터베이스(160)는 또한 저장된 참조 키들, 각각의 소스 파일/최저화된 버전에 대한 최종 접근 시간 및 각각의 소스 파일/최적화된 버전에 대한 히트들/요청들의 총 수를 포함할 수 있다. 정보는 사용자 장치들(110)에게 가장 자주 제공된 것을 식별하기 위해서 상이한 최적화된 버전들에 대해서 수집될 수 있다.
상기 캐시 데이터베이스(160)는 중앙 집중식 리소스/서버일 수 있거나, 또는 상기 비디오 최적화기들(150) 사이에서 분산 될 수 있다. 상기 캐시 데이터베이스(160)가 상기 사용자 장치(110)로 전송하기 위한 상기 소스 파일의 최적화된 버전 및 상기 소스 파일에 대응되는 ID 키에 기초하여 최적화된 소스 파일의 위치를 위한 질의(query)를 수신하면, 상기 캐시 데이터베이스(160)는 그의 데이터베이스를 매칭 참조 키를 갖는 소스 파일의 최적화된 버전의 위치를 식별하기 위해서 탐색할 수 있다. 상기 캐시 데이터베이스(160)는 또한 비디오 최적화기(150) 클러스터들 내의 최적화된 소스 파일들을 배치 및 식별하기 위해서 유지하는 엔트리들의 리스트를 갱신하기 위해서 비디오 최적화기들(150)로부터 명령어들을 수신한다.
상기 개시된 실시예들은 소스 파일들의 최적화된 버전들의 캐싱에 초점을 맞추고 있으며, 이는 비디오 트래픽이 전체 네트워크 트래픽의 절반 가량을 구성하기 때문이며- 그 비율은 매년 증가한다. 따라서, 비디오 트래픽을 최적화하는 것은 네트워크의 혼잡을 매우 감소시킨다. 소스 파일들의 최적화된 버전들을 캐싱하는 효율적인 방법을 구현하는 것에 의해서, 비디오 최적화기는 다른 비디오 최적화기에 의해 달리 트랜스코딩된 소스 파일들을 트랜스코딩 하는 것으로부터 자유로워질 수 있다. 이러한 자유로워진 비디오 최적화기들은 다른 요청된 소스 파일들을 트랜스코딩하는 것에서 더욱 효율적으로 사용될 수 있으며, 이는 전반적으로 사용자들에게 더 좋은 스트리밍 경험을 제공한다. 상기 비디오 최적화기들(150)의 상기 로컬 캐시들(155)에서 최적화된 소스 파일들을 절약하고 다양한 비디오 최적화기들을 통해 탐색하기 위한 캐시 데이터베이스를 제공하는 것에 의해서, 최적화된 비디오 캐싱을 위한 상기 시스템은 최적화된 버전들을 이미 갖고 있지 않은 소스 파일들을 주로 트랜스코딩하는 것에 의해 비디오 최적화의 상기 처리과정을 간소화한다. 상기 캐시 데이터베이스는 또한, 단일 비디오 최적화기로 전달되는 요청들의 수를 줄이기 위해서 과도하게 요청된 소스 파일들의 최적화된 버전들이 몇몇 비디오 최적화기들로 복사될 수 있도록 전체 비디오 최적화기 클러스터를 통해 소스 파일들의 다수의 최적화된 버전들의 상기 캐싱 및 저장을 관리하기 위해 사용될 수 있다.
상기 비디오 최적화기(150), 캐시 데이터베이스(160) 및 기원 서버(170)는 일반적으로 도 2를 참조하여 보다 상세하게 설명되는 기능 및 구성들을 포함할 수 있는 하나 이상의 컴퓨터 서버들의 형태이다. 도 1의 상기 환경(100)에서 각각의 비디오 최적화기(150), 캐시 데이터베이스(160) 및 기원 서버(170) 각각의 하나의 서버 만이 도시되어 있으나, 상이한 실시예들은 하나의 개체 또는 다수의 개체들에 의해 구동되는 다수의 웹 서버들 및 비디오 서버들을 포함할 수 있다. 다른 실시예들에서, 단일 서버는 또한 최적화된 비디오 콘텐트를 제공하는 것뿐만 아니라 웹 서버로서 웹 콘텐트 전달하는 것과 같은 상이한 기능들을 제공할 수 있다. 조종 장치(130), 네트워크 제어기(140), 및 사용자 장치들(110)도 또한 도 2에서 설명되는것들과 유사한 기능 및 구성들을 포함할 수 있다.
컴퓨팅 기기 구조(COMPUTING MACHINE ARCHITECTURE)
이제 도 2로 돌아가면, 이는 상기 개시된 온-디맨드 리얼-타임 네트워크 모니터링 및 가입자 식별을 위한 시스템을 구현하기 위해서 기계 판독 가능한 매체로부터 명령들을 판독하고 그것들을 프로세서(또는 제어기)에서 실행할 수 있는 예시적인 기기의 구성요소를 나타내는 블록도이다. 특히, 도 2는 상기 기기로 하여금 여기서 논의된 방법론들 중 어느 하나 또는 그 이상을 수행하도록 하는 명령들(224)(예를 들어, 소프트웨어)이 실행되는 컴퓨터 시스템(200)의 예시적인 형태에 있는 기기의 도식적 표현을 나타낸다. 선택 가능한 실시 예들에서, 상기 기기는 독자적인 장치로서 구동되고, 또는 다른 기기들에 연결(예를 들어, 네트워크화)될 수 있다. 네트워크 형성된 배치에서, 상기 기기는 서버-클라이언트 네트워크 환경에서 서버 기기 또는 클라이언트 기기로서 구동될 수 있고, 또는 피어-투-피어(peer-to-peer) (또는 분산) 네트워크 환경에서 피어 기기로서 구동될 수 있다.
상기 기기는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(personal computer; PC), 태블릿 PC, 셋톱 박스(set-top box; STB), PDA(personal digital assistant), 핸드폰, 스마트폰, 웹 어플라이언스(web appliance), 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 컴퓨팅 장치(110)에 의해 행해질 동작을 명시하는 명령어들(1124)(순차적인 또는 그 밖에)을 실행시킬 수 있는 어떤 컴퓨팅 장치일 수 있다. 뿐만 아니라, 단일 기기(machine)만이 도시되어 있으나, 상기 “기기(machine)”라는 용어는 여기에서 논의된 하나 또는 그 이상의 상기 방법론들을 수행하기 위한 명령어들(224)을 독립적으로 또는 협력하여 실행하는 기기들의 무리를 포함하는 것으로 받아들여질 수 있다.
상기 예시적인 컴퓨터 시스템(200)은, 버스(208)를 통해 서로 통신할 수 있는, 하나 또는 그 이상의 프로세서들(202)(예를 들어, CPU(central processing unit), GPU(graphics processing unit), DSP(digital signal processor), 하나 또는 그 이상의 ASICs(application specific integrated circuits), 하나 또는 그 이상의 RFICs(radio-frequency integrated circuits), 또는 이들의 조합들), 메인 메모리(204), 및 스태틱 메모리(206)를 포함할 수 있다. 상기 컴퓨터 시스템(200)은 그래픽 표시 유닛(210)(예를 들어, PDP(plasma display panel), LCD(liquid crystal display), 프로젝터, 또는 CRT(cathode ray tube))을 더 포함할 수 있다. 상기 컴퓨터 시스템(200)은, 상기 버스(208)를 통해 또한 서로 통신할 수 있는, 알파뉴메릭(alphanumeric) 입력 장치(212)(예를 들어, 키보드), 커서 제어 장치(214)(예를 들어, 마우스, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 기구), 저장 유닛(216), 및 네트워크 인터페이스 장치(220)를 또한 포함할 수 있다.
상기 저장 유닛(216)은 여기에 설명되어있는 기능들 또는 방법론들의 하나 또는 그 이상을 포함하는 명령어들(224)(예를 들어, 소프트웨어)이 저장되어 있는 컴퓨터-판독 가능한 매체(222)를 포함할 수 있다. 상기 명령어들(224)(예를 들어, 소프트웨어)은, 상기 컴퓨터 시스템(200)에 의해 실행되는 동안, 컴퓨터-판독 가능한 매체를 또한 구성하는 상기 메인 메모리(204) 또는 상기 프로세서(202)(예를 들어, 프로세서의 캐시 메모리)에 완전히 또는 적어도 부분적으로도 상주할 수 있다. 상기 명령어들(224)(예를 들어, 소프트웨어)은 상기 네트워크 인터페이스 장치(220)을 통해 네트워크(110)상에서 전송 또는 수신될 수 있다.
컴퓨터-판독 가능한 매체(222)가 단일 매체로 예시적인 구현으로 도시되어 있으나, 상기 “컴퓨터-판독 가능한 매체”라는 용어는 명령어들(예를 들어, 명령들(224))을 저장할 수 있는 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중식 또는 분산된 데이터베이스, 또는 연관된 캐시들 및 서버들)를 포함하는 것으로 받아들여질 수 있다. 상기 “컴퓨터-판독 가능한 매체”라는 용어는 또한 상기 기기에 의해 실행되기 위한 명령어들(예를 들어, 명령들(224))을 저장할 수 있고, 여기에 설명되어있는 방법론들 중 그 어떤 하나 또는 그 이상을 상기 기기가 수행하게끔 하는 어떠한 매체라도 포함하는 것으로 또한 받아들여질 수 있다. 상기 “컴퓨터-판독 가능한 매체”라는 용어는 반도체(solid-state) 메모리, 광학(optical) 매체, 및 자기(magnetic) 매체의 형태에 있는 데이터 저장소들을 포함할 수 있으나, 이에 한정되지는 않는다.
최적화된 비디오 캐싱(OPTIMIZED VIDEO CACHING)
도 3a 내지 3d는 최적화된 비디오를 사용자 장치로 제공하기 위한 예시적인 이벤트 행적을 나타낸다. 도 3a는 특히 데이터베이스 질의에 의해 진행되는 소스 파일 요청의 예시를 보여준다. 도 3b 내지 3d는 비디오 최적화기들이 상기 데이터베이스로부터 상이한 요청들에 어떻게 반응하는지의 다양한 실시예들을 보여준다. 다른 실시예들에서, 상기 비디오 최적화기가 다른 비디오 최적화기들로 상기 요청을 리다이렉트 하여야 할 수도 있는 반면에, 몇몇 실시예들에서, 상기 비디오 최적화기는 단순히 상기 비디오 자체를 트랜스코딩할 수 있다. 도시되어 있는 것들은 사용자 장치(110), 네트워크 제어기(140), 비디오 최적화기(150), 캐시 데이터베이스(160) 및 기원 서버(170)이다. 조종 장치(도 3a 내지 3d에 미도시)는 네트워크에 걸쳐서 하나 이상의 개체들 사이의 트래픽 흐름을 관리한다. 도 3c 및 3c에는, 두 개의 비디오 최적화기들(150a 및 150b)이 존재한다. 이러한 비디오 최적화기들은 서로 독립적으로 구동할 수 있으나 또한 공유된 로컬 캐시(155)에 저장된 최적화된 소스 파일들을 공유할 수 있다.
도 3a는 비디오 최적화기에서 소스 비디오 요청을 핸들링하기 위한 처리를 나타내는 예시적인 이벤트 행적이다. 상기 처리는 사용자 장치(110), 네트워크 제어기(140), 비디오 최적화기(150), 캐시 데이터베이스(160) 및 기원 서버(170)를 포함한다. 상기 처리는 상기 사용자 장치(110)가 소스 파일을 위해 사용자로부터 요청을 생성(302)할 때 시작한다. 예를 들어, 상기 사용자는 상기 사용자가 시청하고자 하는 비디오를 포함하고 있는 인터넷 사이트를 둘러볼(browse) 수 있다. 상기 사용자 장치(110)는 상기 기원 서버(170)로부터 상기 비디오 소스 파일 콘텐트를 검색하기 위해서 상기 요청을 생성(320)하고 HTTP GET 비디오 요청(304)을 전송한다. 일 실시예에서, 상기 조종 장치(130)는 비디오를 상기 사용자 장치(110)로 제공하는 것과 연관된 요청들 및 응답들을 가로챈다. 상기 조종 장치(130)는 상기 비디오 콘텐트 요청을, 변경된 HTTP GET 비디오 요청(306)을 상기 기원 서버(170)로 포워딩하는, 상기 네트워크 제어기(140)로 리다이렉트한다. 상기 변경에서, 상기 네트워크 제어기(140)는 상기 기원 서버(170)가 상기 소스 파일에 대한 비디오 정보로 응답하도록 명령한다. 상기 비디오 정보를 갖는 HTTP RESPONSE(308)을 가로채는 것에 의해서, 상기 네트워크 제어기(140)는 상기 사용자 장치(110)를 비디오 최적화기(150)로 다이렉트(direct)하기 위해서 HTTP 리다이렉트 명령이 상기 사용자 장치(110)로 포워딩 되어야 하는지 여부 또는 상기 기원 서버(170)로부터 검색된 상기 비디오 콘텐트가 상기 사용자 장치(110)로 직접 전달되어야 하는지 여부(즉, 상기 비디오 콘텐트는 더 이상의 최적화를 필요로 하지 않는다.)를 결정할 수 있다.
상기 비디오 정보를 갖는 HTTP RESPONSE(308)를 수신하는 것에 응답하여, 상기 네트워크 제어기(140)는 상기 HTTP GET 비디오(304) 요청 및/또는 HTTP 응답(308) 내의 상기 수신된 정보 및 상기 네트워크 및 상기 사용자 장치의 상태에 관한 정보를 모니터링 흐름들로부터 사용하여 ID 키를 생성(310)한다. 상기 ID 키는 상기 기원 서버(170)상의 상기 원본 소스 파일을 고유하게 식별하는 소스 시그니쳐 및 상기 사용자 장치에 적합하고 상기 네트워크의 능력에 부합하는 상기 소스 파일의 최적화된 버전을 식별하는 결정된 최적화 파라미터들을 포함한다.
상기 네트워크 제어기(140)는 상기 사용자 장치(110)가, 상기 소스 파일을 트랜스코딩하역 직접 생성될 수 있거나 또는 비디오 최적화기(150)의 로컬 캐시(155)로부터 검색될 수 있는, 상기 소스 파일의 상기 최적화된 버전을 획득하기 위해서 비디오 최적화기(150)로 리다이렉트될 수 있음을 결정한다. 상기 네트워크 제어기(140)는 상기 HTTP RESPONSE 요청에 대한 대응되는 명령을 결정하고, HTTP 리다이렉트 명령(312)을 상기 생성된 키와 함께 상기 사용자 장치(110)로 전달한다. 일 실시예에서, 상기 HTTP 리다이렉트 명령(312)은 상기 HTTP RESPONSE 요청(308)의 재작성(rewrite)일 수 있다. 다른 실시예들에서, 상기 HTTP 리다이렉트 명령(312)은 상기 수신된 HTTP RESPONSE 요청(308)에 매핑되는 명령들 또는 상기 요청(308)의 변환(translation)일 수 있다. 일 실시예에서, 상기 네트워크 제어기(140)는 사용자 장치(110)를 리다이렉트 보내기 위해서 비디오 최적화기(150)를 무작위로 선택한다. 다른 실시예에서, 상기 네트워크 제어기(140)는 로드 밸런서(load balancer)로서 행동하고, 상기 네트워크 제어기(140)와 연관된 각각의 비디오 최적화기의 현재 처리 로드(load)에 기초하여 상기 사용자 장치(110)를 리다이렉트한다. 예를 들어, 상기 네트워크 제어기(140)는 비디오 최적화기(150) 작업량을 모니터링하고 상기 사용자 장치(110)를 그 순간에 가작 적은 수의 요청들 또는 최대 사용 가능한 처리 능력을 갖고 있는 상기 비디오 최적화기(150)로 리다이렉트할 수 있다. 상기 명령을 수신함과 동시에, 상기 사용자 장치(110)는 HTTP GET 요청 및 상기 수신된 키(314)를 상기 네트워크 제어기(140)가 그의 HTTP 리다이렉트 명령들(312)에서 나타내고 있는 상기 비디오 최적화기(150)로 전달한다.
일 실시예에서, 상기 비디오 최적화기(150)가 상기 HTTP GET 요청을 상기 원본 소스 파일(314)와 연관된 키와 함께 수신하면, 상기 비디오 최적화기(150)는 최적화된 소스 파일이 존재하는지 여부를 결정하기 위해서 상기 캐시 데이터베이스(160)를 조회한다. 상기 비디오 최적화기(150)는 또한 그의 로컬 캐시(155)가 상기 소스 비디오의 최적화된 버전을 포함하고 있는지 여부를 결정할 수 있다. 상기 캐시 데이터베이스(160)는 상기 수신된 키에 기초하여 그의 데이터베이스를 검색(318)하며, 이는 상기 데이터베이스가 상기 키와 매칭되는 임의의 참조 키 엔트리들을 포함하고 있는지 여부를 결정하기 위함이다. 참조 키 엔트리가 상기 키와 매칭되는 일 사례에서, 상기 캐시 데이터베이스(160)는 상기 소스 파일의 최적화된 버전이 다른 비디오 최적화기(150)에 존재한다는 것을 표시하는 데이터베이스 응답(320)을 전달하고 상기 최적화된 소스 파일의 위치를 포함한다. 이는 캐시 히트로 알려져 있으며 상기 소스 파일의 최적화된 버전을 상기 사용자 장치(110)로 전달하기 위해서 상기 비디오 최적화기(150)가 상기 소스 파일을 트랜스코딩 하지 않아도 된다는 것을 표시한다. 상기 참조 키 엔트리들 중 어느 것도 상기 키와 매칭되지 않는 일 사례에서, 상기 캐시 데이터베이스(160)는 상기 캐시 데이터베이스(160)에게 보고하는 어떤 비디오 최적화기들(150)의 캐시에도 상기 소스 파일의 요청된 최적화된 버전이 저장되어 있지 않다는 것을 표시하는 데이터베이스 응답(320)을 전달한다. 이는 캐시 미스로 알려져 있으며 최적화된 소스 파일을 상기 사용자 장치(110)로 전달하기 위해서 상기 비디오 최적화기(150)가 상기 소스 파일을 트랜스코딩 하여야 한다는 것을 표시한다.
도 3b는 캐시 미스에 응답하여 사용자 장치로 최적화된 소스 파일을 제공하기 위한 처리의 일 실시예를 나타내는 예시적인 이벤트 행적이다. 캐시 미스(예를 들어, 상기 ID 키가 어떤 참조키와도 매칭되지 않는 경우)가 있는 경우, 상기 캐시 데이터베이스(160)는 상기 비디오 최적화기의 조회에 대해서 데이터베이스 응답(320)을 전달하는 것에 의해서 응답하며, 상기 데이터베이스 응답(320)은 상기 원본 소스 파일의 최적화된 버전이 상기 캐시 데이터베이스(160)와 연관된 비디오 최적화기들(150) 내의 상기 캐시들 중 어느 것에도 존재하지 않는다는 것을 표시한다. 이러한 데이터베이스 응답(320)에 응답하여, 상기 비디오 최적화기(150)는 상기 소스 파일의 최적화된 버전을 상기 사용자 장치로 제공하기 위해서 상기 원본 소스 파일 자체를 트랜스코딩 하여야 한다. 상기 비디오 최적화기(150)는, 트랜스코딩을 위해서 상기 원본 소스 파일을 요청하는, HTTP GET 비디오 요청(332)을 상기 기원 서버(170)로 전달하는 것에 의해 상기 트랜스코딩 처리를 시작한다. 상기 비디오 최적화기(150)가 상기 HTTP RESPONSE 비디오 콘텐트(334)를 상기 기원 서버(170)로부터 수신하면, 상기 비디오 최적화기(150)는 상기 ID 키 내에 제공된 상기 최적화 파라미터들에 따라서 상기 사용자 장치(110)에 의해 사용 가능하며 최적화된 포맷으로 상기 비디오를 트랜스코딩(336)한다. 따라서, 상기 최적화는 상기 비디오 최적화기(150)가 수신하는 정보에 기초할 수 있으며, 상기 정보는 상기 네트워크 속성들(예를 들어, 서비스 제공자, 대역폭, 네트워크 혼잡 등)뿐만 아니라 상기 사용자 장치의 사양 및 능력(예를 들어, 스크린 사이즈, 프로세서, 네트워크 연결, 저장 공간, 스크린 해상도, 버퍼, 캐시, 구동 시스템 등)에 관한 상기 사용자 장치(110)에 대한 정보이다.
일 실시예에서, 상기 사용자가 경험할 지연을 최소화 하기 위해서 상기 비디오가 트랜스코딩 됨에 따라서 상기 비디오 최적화기(150)는 상기 최적화된 비디오를 상기 사용자 장치(110)로 스트리밍 한다. 다른 실시예들에서, 상기 최적화된 스트림(338)은 상기 비디오 최적화기(150)에 의해서 약간 지연될 수 있어서 상기 비디오 최적화기(150)는 예를 들어 상기 트랜스코딩이 지연(lag)될 수 있는 경우에 버퍼를 구축할 수 있다. 상기 비디오 최적화기(150)가 상기 소스 파일의 일 부분을 트랜스코딩 할 때, 상기 비디오 최적화기(150)는 장래의 미디어 콘텐트 요청들을 위해서 상기 소스 파일의 상기 최적화된 버전의 부분이 상기 비디오 최적화기(150)의 상기 로컬 캐시(155) 내에서 지금 사용 가능하다는 것을 표시하기 위해 데이터베이스 갱신(340)을 상기 캐시 데이터베이스(160)로 전달한다. 상기 데이터베이스 갱신(340)은 상기 소스 파일의 상기 최적화된 버전의 상기 파라미터들, 상기 기원 서버(170)로부터 검색된 상기 원본 소스 파일의 상기 소스 시그니쳐를 포함하는 상기 키 및 상기 로컬 캐시(155) 내의 상기 소스 파일의 상기 최적화된 버전의 위치, 및 트랜스코딩 된 상기 원본 소스 파일의 상기 세그먼트(segment)를 포함할 수 있다. 일 실시예에서, 상기 비디오 최적화기(150)는 전체 비디오가 최적화 되기 이전에 상기 데이터베이스 갱신(340)을 전달할 수 있다. 따라서, 만약 상기 트랜스코딩 처리가 여전히 진행중인 동안 다른 요청이 수신되면, 트랜스코딩 된 상기 비디오의 상기 세그먼트는 다른 사용자 장치(110)로의 스트리밍을 위해서 다른 비디오 최적화기(150)로 제공될 수 있다. 상기 데이터베이스 갱신(340)을 수신하는 것에 응답하여, 상기 캐시 데이터베이스(160)는 상기 데이터베이스 엔트리들을 갱신(342)하여 상기 캐시 데이터베이스(160)는 장래의 데이터베이스 질의들에 응답하기 위한 상기 소스 파일의 최적화된 버전의 상기 위치를 식별할 수 있다.
도 3c는 캐시 히트에 응답하여 사용자 장치로 최적화된 소스 파일을 제공하기 위한 처리의 실시예들을 나타내는 예시적인 이벤트 행적이다. 도 3c에는, 비디오 최적화기들의 네트워크 사이에서 가능한 데이터 전송을 설명하기 위해 두 개의 비디오 최적화기들(150A 및 150B)이 존재한다. 이러한 비디오 최적화기들(150A 및 150B) 각각은 앞서 등장한 상기 비디오 최적화기(150)와 기능적으로 동일하나, 각각의 비디오 최적화기(150A 및 150B)는 그들의 로컬 캐시들(155)에 저장된 상이한 최적화된 소스 파일들을 가질 수 있다. 캐시 히트(예를 들어, 상기 ID 키가 참조 키와 매칭)에 응답하여, 상기 캐시 데이터베이스(160)는 상기 원본 소스 파일의 최적화된 버전이 상기 캐시 데이터베이스(160)와 연관된 비디오 최적화기(150B)의 로컬 캐시(155) 내에 위치한다는 것을 표시하는 데이터베이스 응답(320 및 332)을 전달하는 것에 의해서 상기 소스 파일의 최적화된 버전을 식별하기 위한 상기 제1 비디오 최적화기의 질의에 응답한다.
캐시 히트를 핸들링 하기 위한 처리(350)의 일 실시예에서, 상기 제1 비디오 최적화기(150A)는 비디오 최적화기(150B)로부터 상기 소스 파일의 상기 최적화된 버전을 검색 또는 스트리밍 할 수 있으며, 결국, 상기 최적화된 소스 파일 자체를 상기 사용자 장치(110)로 스트리밍 할 수 있다. 이러한 실시예에서, 상기 제1 비디오 최적화기(150A)는 HTTP GET 비디오 또는, 상기 소스 파일의 상기 최적화된 버전을 검색하기 위한 다른 요청(352)을 상기 제2 비디오 최적화기(150B)로 전달할 수 있다. 상기 요청(352)을 수신함과 동시에, 상기 제2 비디오 최저화기(150B)는 최적화된 스트림(354)을 상기 제1 비디오 최적화기(150A)로 제공한다. 일 실시예에서, 상기 제1 비디오 최적화기(150A)는 상기 최적화된 스트림(356)을 상기 사용자 장치(110)로 전송하는 동안 상기 소스 파일의 상기 수신된 최적화된 버전을 로컬에서 캐싱할 수 있다. 예를 들어, 상기 비디오 최적화기(150A)는 자주 요청되는 소스 파일의 최적화된 버전을 로컬에서 캐싱할 수 있다. 이러한 처리를 통해서, 상기 제1 비디오 최적화기(150A)는 장래의 스트리밍 목적들을 위해서 비디오 최적화기(150B)로부터 수신되는 상기 최적화된 스트림(356)의 부분을 로컬에서 캐싱한다. 다른 실시예에서, 상기 제1 비디오 최적화기(150A)는 상기 수신된 최적화된 스트림(354)을 스트리밍 하는 것을 포기할 수 있으며 상기 최적화된 스트림(356)을 상기 사용자 장치(110)로 포워딩 하는 것 만을 선택할 수 있다. 예를 들어, 상기 제1 비디오 최적화기(150A)는 상기 최적화된 소스 파일이 자주 요청되지 않는다는 결정 또는 상기 로컬 캐시(155)가 이미 가득 차있다는 결정에 응답하여 상기 최적화된 스트림을 저장하지 않을 수 있다. 소스 파일의 최적화된 버전들에 대한 통계는 상기 비디오 최적화기들(150) 자체에서 및/또는, 질의들에 대한 응답과 함께 상기 통계를 제공할 수 있는, 상기 캐시 데이터베이스(160)에서 개별적으로 유지될 수 있다.
다른 실시예에서, 상기 비디오 최적화기(150A)는 상기 최적화된 스트림을 포워딩(354 및 356) 하는 것 대신에 상기 제2 비디오 최적화기(150B)로부터 상기 최적화된 소스 파일을 검색하기 위해서 상기 사용자 장치(110)를 리다이렉트 하기로 결정할 수 있다. 상기 제2 비디오 최적화기(150B)로부터 상기 최적화된 소스 파일을 검색하기 위해서 상시 사용자 장치(110)를 리다이렉트 하는 것에 의해서, 상기 제1 비디오 최적화기(150A)는 다른 미디어 요청들을 처리하기 위한 네트워크 대역폭들 및 프로세서 부하를 해소한다. 상기 제1 비디오 최적화기(150A)는, 원하는 최적화된 소스 파일이 위치할 수 있는 상기 비디오 최적화기를 표시하는, HTTP 리다이렉트 명령(362)을 상시 사용자 장치(110)로 전달한다. 상시 사용자 장치(110)는 이후에, 상기 제2 비디오 최적화기(150B)가 상시 요청된 최적화된 소스 파일을 스트리밍 하도록 요청하는, HTTP GET 요청(364)을 상기 HTTP 리다이렉트 명령에서 표시된 상시 제2 비디오 최적화기(150B)로 전송한다. 상시 HTTP GET 요청(364)에 응답하여, 상기 제2 비디오 최적화기(150B)는 상기 최적화된 스트림(366)을 상기 사용자 장치로 전송한다. 몇몇 실시예들에서, 상기 제1 최적화기(150A)는, 상기 제2 최적화기(150B)가 그의 로컬 캐시(155) 내의 상기 소스 파일의 상기 최적화된 버전을 식별하기 위해 사용하는 상기 생성된 ID 키를 포함하는 HTTP 리다이렉트를 생성한다. 상기 제2 최적화기(150B)는 도 3A를 참조하여 앞서 설명된 바와 같이 다른 데이터베이스 질의(316)를 생성할 수 있다.
몇몇 사례들에서, 다양한 다른 요인들에 의해서 캐시 히트 에러가 발생할 수 있다. 일 예시에서, 상기 캐시 데이터베이스(160)에 저장된 참조 엔트리, ID 키 또는 상기 소스 시그니쳐는 비디오 최적화기(150)에 저장되어 있는 상기 소스 파일의 상기 최적화된 버전에 미스매칭 될 수 있다. 예를 들어, 상기 캐시 데이터베이스(160)는 엔트리를 잘못 저장하였거나 또는 손상시켰을 수 있으며 또는 상기 비디오 최적화기(150)는 상기 로컬에서 캐싱된 상기 소스 파일의 최적화된 버전이 손상되거나 삭제된 에러를 경험 하였을 수 있다. 다른 실시예에서, 상기 비디오 최적화기(150)는 상기 엔트리가 삭제된다는 것을 요청하는 상기 캐시 데이터베이스(160)에게 명령들을 전달할 수 있다. 상기 캐시 데이터베이스(160)와 연관된 각각의 비디오 최적화기(150)는 또한 로컬에서 캐싱된 리소스(resource)들을 상기 캐시 데이터베이스(160)에 저장된 엔트리들과 주기적으로 동기화 할 수 있으며, 이는 엔트리들이 상기 캐시 데이터베이스(160)로부터 플러쉬(flush) 될 필요가 있는지 여부를 결정하기 위함이다.
다른 실시예에서, 제1 비디오 최적화기(150A)는 특정한 최적화된 소스 파일을 갖는 제2 비디오 최적화기(150B)로 상기 캐시 데이터베이스(160)에 의해 리다이렉트 될 수 있다. 그러나, 상기 제2 비디오 최적화기(150B)는, 서버 충돌 또는 네트워크 연결 이슈들로 인한 것과 같은 몇몇 이유로 사용할 수 없을 수 있다. 상기 제1 비디오 최적화기(150A)는 상기 캐시 데이터베이스(160)에게 상기 제2 비디오 최적화기(150B)가 사용 불가하다는 것을 통지하는 것에 의해서 응답할 수 있다. 응답에서, 상기 캐시 데이터베이스(160)는 그의 사용 가능한 서버 리소스들의 집합으로부터 상기 제2 비디오 최적화기(150B)를, 상기 제2 비디오 최적화기(150B)가 상기 캐시 데이터베이스(160)와 동기화 되거나 또는 다른 비디오 최적화기(150)로부터의 요청에 응답할 때까지 일시적으로 제거할 수 있다.
몇몇 실시예들에서, 상기 제1 비디오 최적화기(150A)는, 캐시 데이터베이스(160)가 상기 제2 비디오 최적화기(150B)가 갖고 있는 것처럼 보고 한 상기 최적화된 파일을 상기 제2 비디오 최적화기(150B)가 갖고 있지 않은 것과 같은 에러가 발생하였다는 것을 탐지할 수 있다. 상기 에러에 응답하여, 상기 제2 비디오 최적화기(150B)는 어느 것이 더 많은 대역폭을 갖고 있는지를 결정하기 위해서 그의 현재 서버 부하를 상기 제1 비디오 최적화기(150A)의 그것과 비교할 수 있다. 만약 상기 제1 비디오 최적화기(150A)가 상기 제2 비디오 최적화기(150B)에 비해서 부하를 덜 받으면, 상기 제1 비디오 최적화기(150A)는 상기 소스 파일을 트랜스코딩 및 최적화 할 수 있다. 만약 상기 제2 비디오 최적화기(150B)가 상기 제1 비디오 최적화기(150A)에 비해서 부하를 덜 받으면, 상기 제2 비디오 최적화기(150B)는 상기 소스 파일을 트랜스코딩 및 최적화 할 수 있다. 몇몇 실시예들에서, 상기 비디오 최적화기들(150)은 또한, 비디오 최적화기(150)가 상기 소스 파일을 트랜스코딩하는 요인을 결정 함에 따라서 연결 품질 또는 상기 클라이언트와의 근접성을 비교할 수 있다. 상기 비디오 최적화기들(150)은 또한 캐싱된 최적화된 소스 파일들의 상기 위치들과 관련된 상기 엔트리들을 갱신하기 위해서 상기 캐시 데이터베이스(160)로 데이터베이스 갱신 명령을 전달할 수 있다.
도 3d는 최적화된 소스 파일을 사용자 장치로 제공하고 캐시 히트에 응답하여 상기 최적화된 소스 파일을 복제하기 위한 처리의 실시예를 나타내는 예시적인 이벤트 행적이다. 도 3c와 유사하게, 도 3d는 사용자 장치(110), 네트워크 제어기(140), 제1 비디오 최적화기(150A), 제2 비디오 최적화기(150B) 및 캐시 데이터베이스(160)를 포함한다. 상기 제1 비디오 최적화기(150A)에 의한 데이터베이스 질의에 응답하여, 상기 캐시 데이터베이스(160)는 제2 비디오 최적화기(150B)가 상기 요청된 최적화된 소스 파일을 갖고 있다는 것을 표시하는 데이터베이스 응답(320)을 전달한다. 일 실시예에서, 상기 제1 비디오 최적화기(150A)는 상기 제2 비디오 최적화기(150B)의 로컬 캐시에 저장된 상기 소스 파일의 상기 최적화된 버전을 복제할 수 있다. 예를 들어, 상기 제1 비디오 최적화기(150A)는 상기 소스 파일의 특정한 최적화된 버전이 종종 요청되는지를 결정할 수 있으며 만약 상기 소스 파일의 상기 최적화된 버전이 로컬에서 저장 및 캐싱 되었다면 처리 시간을 단축할 수 있다. 상기 소스 파일의 상기 최적화된 버전은, 상기 소스 파일의 상기 최적화된 버전을 저장하는 단일 비디오 최적화기(150)를 압도하는 높은 히트 레이트(hit rate)를 경험할 수 있다. 따라서, 높은 히트 레이트를 갖고 소스 파일의 최적화된 버전을 요청하는 다른 최적화기는, 상기 단일 서버가 뒤덮이는 것을 방지하기 위해서 그의 로컬 캐시(155) 내의 저장소를 위하여 상기 최적화된 버전을 복제하도록 요청할 수 있다. 상기 최적화된 소스 파일을 복제하여, 상기 비디오 최적화기들은 상기 캐시 데이터베이스(160)에게 보고하는 상기 비디오 최적화기들 사이의 요청들을 로드 밸런싱(load balance)한다. 다른 예시에서, 상기 요청된 최적화된 소스 파일은 상기 원본 파일의 전체 재생 길이의 세그먼트 만을 나타낼 수 있다. 상기 제1 비디오 최적화기(150A)는, 남아있는 최적화되지 않은 세그먼트들을 트랜스코딩하기 전에 가능한 많은 상기 원본 소스 파일의 최적화된 세그먼트들을 수집하기 위해서 다수의 비디오 최적화기들(150)에게 요청들을 제출할 수 있다. 최적화된 소스 파일 스티칭(stitching)은 비디오 미리보기 캐시와 함께 아래에서 논의된다.
일 실시예에서, 상기 제1 비디오 최적화기(150A)는 HTTP GET 비디오 요청 및 복제 요청(382)을 상기 소스 파일의 원하는 최적화된 버전을 갖는 상기 제2 비디오 최적화기(150B)로 전달한다. 상기 요청에 응답하여, 상기 제2 비디오 최적화기(150B)는 상기 최적화된 스트림(384)을 상기 제1 비디오 최적화기(150B)로 전달한다. 다른 실시예에서, 상기 제1 비디오 최적화기(150A)는 HTTP GET 비디오 요청을 상기 소스 파일의 상기 최적화된 버전의 복제 요청 없이 전달한다. 상기 요청에 응답하여, 상기 제2 비디오 최적화기(150B)는 요청들 또는 트랜스코딩 처리들로 인해 부하가 과도하다고 결정할 수 있다. 상기 제2 비디오 최적화기(150B)는 상기 제1 비디오 최적화기(150A)에게, 상기 복제된 최적화된 비디오를 저장(386)하기 위한 상기 제1 비디오 최적화기(150A)에 대한 요청뿐만 아니라 상기 최적화된 스트림을 상기 제1 비디오 최적화기(150A)로 전달하는 것에 의해 응답할 수 있다. 상기 제1 비디오 최적화기(150A)가 상기 최적화된 스트림(384)을 수신함에 따라서, 상기 제1 비디오 최적화기(150A)는 재생을 위해 상기 사용자 장치(110)로 상기 최적화된 스트림(388)을 전달하는 동안 로컬 캐시(155)에 상기 소스 파일의 상기 최적화된 버전을 저장(386)한다. 상기 제1 비디오 최적화기(150A)가 상기 최적화된 소스 파일의 로컬에서 캐싱된 버전을 이제 처리하기 때문에, 상기 제1 비디오 최적화기(150A)는 데이터베이스 갱신(390)에 대한 명령들을 상기 캐시 데이터베이스(160)로 전달한다. 상기 수신된 명령들에 응답하여, 상기 캐시 데이터베이스(160)는 비디오 최적화기들(150A 및 150B) 양자 모두 로컬에서 캐싱된 상기 소스 파일의 특정한 최적화된 버전을 갖는다는 것을 표시하는 엔트리를 추가하도록 상기 데이터베이스를 갱신(392)한다.
비디오 미리보기 캐시(VIDEO PREVIEW CACHE)
최적화된 비디오 캐싱과의 추가적인 가능성은 비디오 미리보기 캐시이다. 비디오 최적화기(150)에서 소스 파일의 전체-길이 최적화된 버전들의 다수를 로컬에서 캐싱하는 것 보다는, 훨씬 많은 수의 부분-길이 최적화된 버전들이 저장될 수 있다. 따라서, 각각의 비디오 최적화기(150)는 다른 최적화기로부터 최적화된 버전을 스트리밍 하거나 또는 트랜스코딩 처리를 시작할 필요 없이 많은 수의 요청들을 곧바로 처리하기 시작할 수 있다. 예를 들어, 만약 상기 비디오 최적화기(150)가 상기 사용자 장치(110)에 의해 요청된 소스 파일의 최적화된 버전의 1분 부분을 저장하면, 상기 스트림을 매끄럽게 전달하기 위해서 진행될 필요가 있는 스트리밍 처리 또는 트랜스코딩 처리 이전에 사용자가 상기 비디오를 그만둘 때(예를 들어, 처음 30초에서), 추가적인 처리가 요구되지 않는다. 따라서, 많은 수의 사용자들이 초기 세그먼트들을 지나서는 시청하지 않기 때문에 상기 네트워크 상에서 사용되는 대역폭 및 요청들을 감소 시키기 위해 상기 미리보기 캐시는 최적화된 버전의 처음 30-60초를 저장할 수 있다. 따라서, 사용자들이 보통 시청하지 않는 소스 파일의 세그먼트들을 저장 및 트랜스코딩 하는 추가적인 프로세서 대역폭을 소비하기 보다는, 상기 비디오 최적화기(150)는 그것의 콘텐트를 짧은 최적화된 비디오 미리보기들을 생성하는 것에 의해 보다 효율적으로 관리할 수 있다. 더 짧은 최적화된 비디오는 또한 소스 파일들의 보다 최적화된 버전들이 상기 비디오 최적화기(150) 내의 동일한 제한된 저장 캐시에 저장될 수 있도록 한다. 인기 있는 파일들은 여전히 전체-길이 최적화된 버전들로 저장되나, 사용자 트렌드를 따라잡기 위해서 더 자주 제거 및 갱신된다.
일 실시예에서, 상기 비디오 최적화기(150)는 소스 파일을 트랜스코딩 하기 시작하고 최적화된 소스 파일을 상기 사용자 장치(110)로 스트리밍 한다. 상시 사용자가 상시 사용자 장치(100)에 대해 재생을 취소하면, 상기 비디오 최적화기(150)는 상기 소스 파일을 최적화하는 것을 중단하고 이미 최적화된 세그먼트를 저장한다. 상기 비디오 최적화기(150)는 캐시 데이터베이스(160)를 최적화된 상기 비디오의 상기 세그먼트, 상기 원본 소스 파일과 연관된 키, 및 최적화된 상기 소스 파일을 표시하는 엔트리와 함께 갱신할 수 있다. 만약 이후의 사용자가 상기 소스 파일의 동일한 세그먼트를 요청하면, 상기 캐시 데이터베이스(160)는 요청하는 비디오 최적화기(150)를 상기 최적화된 비디오 세그먼트를 포함하는 절절한 로컬 캐시(155)로 리다이렉트 할 수 있다. 다른 실시예들에서, 소스 파일의 상기 최적화된 버전의 일 부분은 상기 다양한 비디오 최적화기들(150) 사이에서 분산될 수 있다.
몇몇 실시예들에서, 상기 사용자는 완전히 최적화되지 않은 소스 파일의 세그먼트를 요청할 수 있다. 이러한 실시예에서, 상기 비디오 최적화기(150)는 상기 소스 파일의 이미 존재하는 최적화된 세그먼트를 다시 트랜스코딩하는 것을 방지하기 위해서 이미 최적화된 비디오 세그먼트들을 결정할 수 있다. 상기 비디오 최적화기(150)는 상기 최적화된 비디오 세그먼트들을 상기 사용자 장치로 스트리밍하는 동안, 상기 비디오 트랜스코딩 처리가 이전에 최적화되지 않은 세그먼트에 도달하는지 여부를 계속하여 모니터링 한다. 상기 비디오 최적화기(150)는 임의의 키 프레임으로부터 최적화되지 않은 상기 소스 파일의 상기 부분을 트랜스코딩하는 것을 시작할 수 있으며 이전에 최적화된 비디오 세그먼트의 시작점에 도달할 때까지 트랜스코딩을 계속한다. 상기 트랜스코딩 처리가 이전에 최적화된 비디오 세그먼트의 시작점에 도달할 때 또는 그에 앞서, 상기 비디오 최적화기(150)는 상기 이전에 최적화된 비디오 세그먼트를 상기 세그먼트가 저장되어 있는 다른 비디오 최적화기로부터 요청한다. 상기 요청에 응답하여, 상기 다른 비디오 최적화기는 요청된 최적화된 비디오 세그먼트를 처음의 비디오 최적화기(150)로 전달하며, 상기 처음의 비디오 최적화기(150)는 마지막 키 프레임에서 상기 비디오 최적화기가 스스로 트랜스코딩한 상기 세그먼트를 수신된 최적화된 비디오 세그먼트와 연결(stich)한다.
예를 들어, 세 개의 연이은 비디오 세그먼트들이 비디오 최적화기들(150)의 클러스터에서 캐싱될 수 있고, 각각의 비디오 최적화기(150)는 상이한 세그먼트를 갖고 있다. 제1 비디오 최적화기는 상기 소스 파일의 상기 최적화된 버전으로부터 저장된 미리보기를 스트리밍하고 이어서 상기 저장된 미리보기의 마지막 키 프레임으로부터 시작하는 상기 소스 파일을 검색하며 상기 사용자 장치(110)에 매끄러운 재생을 제공하기 위해서 키 프레임에서 새로이 트랜스코딩된 스트림을 연결하는 상기 마지막 키 프레임으로부터 상기 소스 파일을 트랜스코딩 할 수 있다. 상기 제1 비디오 최적화기는 다른 비디오 최적화기 상에서 식별된 최적화된 비디오 세그먼트의 시작점에 도달할 때까지 계속하여 상기 소스 파일을 트랜스코딩하고 최적화된 버전을 스트리밍 한다. 상기 제1 비디오 최적화기는 그 다음에 대응되는 비디오 최적화기로부터 이미 트랜스코딩된 상기 세그먼트를 검색할 수 있다. 상기 제1 비디오 최적화기(150)는 상기 사용자가 상기 비디오 시청을 중단하거나 또는 상기 소스 파일의 부분에 대하여 사용 가능한 최적화된 세그먼트들이 없어질 때까지 다른 비디오 최적화기들로부터 세그먼트들을 계속하여 요청할 수 있다. 상기 소스 파일의 부분을 위해서 사용 가능한 최적화된 세그먼트들이 없는 경우에는, 상기 처음의 비디오 최적화기(150)는 마지막 최적화된 세그먼트가 중단된 곳으로부터 상기 소스 파일을 트랜스코딩 한다. 만약 원한다면, 상기 비디오 최적화기는 또한 장래의 비디오 요청들을 위해 사용 가능해지도록 전체 스트림을 로컬에서 캐싱할 수 있다.
로커 캐시 관리 동안, 상기 비디오 최적화기(150)는 소스 파일들의 다른 최적화된 버전들을 위한 저장 드라이브 내의 빈 공간을 생성하기 위해서 소스 파일들의 최적화된 버전들의 부분들 만을 버리도록 결정할 수 있다. 예를 들어, 소스 파일의 30분 최적화된 버전이 분할 및 처리될 수 있어서, 소스 파일의 최적화된 버전의 나머지가 상기 로컬 캐시(155)로부터 제거되는 반면에 소스 파일의 최적화된 버전의 첫 1분 만이 저장된다. 로컬 캐시(155) 제거는 많은 양의 저장 공간을 해소시키는 반면에 여전히 사용자를 위한 초기 스트리밍 시간 및 빠른 응답을 보전하며, 특히 다른 것들에 비해서 덜 인기 있는 소스 파일들의 최적화에 대해서 그러하다. 상기 삭제 및 다른 캐시 관리 구동들에 응답하여, 상기 비디오 최적화기(150)는 데이터베이스 갱신을 상기 캐시 데이터베이스(160)로 상기 데이터베이스에 저장된 엔트리들을 갱신하기 위해서 전달한다.
예측 부호화 향상(PREDICTIVE ENCODING IMPROVEMENT)
도 4는 캐시 헤더들을 사용하는 예측 부호화의 일 실시예의 흐름도를 나타낸다. 일 실시예에서, 도 4에 도시된 처리는 헤더들을 포함하는 소스 파일들을 위해서 비디오 최적화기(150)에 의해 수행된다. 예를 들어, 헤더들은 MP4 파일들, AVI 파일들, MPEG 파일들, MOV 파일들, MKV 파일들, OGM 파일들, 및 미디어 파일의 다른 타입들에 대해서 생성될 수 있다. 명확성을 위해서, MP4 소스 파일들 및 헤더들은 이어지는 설명에서 나타내어지나 미디어 파일들의 다른 타입들은 또한 적용될 수 있다. MP4 소스 파일들의 최적화된 버전들이 생성되면, 원본 소스 파일 및/또는 원본 소스 파일 헤더에 기초하여 트랜스코딩의 시작에 앞서 예측 헤더가 생성된다. 상기 예측 헤더는 미디어 플레이어들이 상기 소스 파일의 최적화된 버전을 인식 및 재생하기 위한 상기 소스 파일과 관련된 기본 정보를 포함한다. 예를 들어, 상기 예측 헤더는 소스 프로필, 프레임/샘플 레이트들(frame/sample rates), 프레임 타입, 출력 샘플 사이즈, 각 출력 프레임의 사이즈, 인코딩 내역(encoding used), 압축 등과 같은 정보를 포함할 수 있다. 실시간 스트리밍이 가능하기 위해서 상기 소스 파일이 전체적으로 트랜스코딩 되기에 앞서 상기 예측 헤더가 생성되기 때문에, 상기 비디오 최적화기(150)는 상기 헤더 내부로 삽입하기 위해 정보를 예측하여야만 한다. 결과적으로, 상기 헤더는 트랜스코딩된 미디어에서 프레임들을 트랜스코딩하기 위해 필요한 미디어 컨테이너 사이즈의 과대추정 또는 과소추정을 포함할 수 있다. 프레임 사이즈의 과소추정을 보상하기 위해서, 상기 비디오 최적화기(150)는 상기 소스 파일의 최적화된 버전에 왜곡을 유발하여 추가적인 처리 시간을 필요로 하게 할 수 있는 뜯긴-트랜스코드(tore-transcode) 프레임들을 그들의 퀄리티를 감소시켜 사이즈를 줄이기 위해서 가질 수 있다. 프레임 사이즈의 과대추정을 보상하기 위해서는, 미리 특정된 사이즈 조간을 만족시키기 위해 프레임을 추가하기 위해서 프레임에 중복 비트 또는 데이터가 부가될 수 있다. 따라서, 상기 소스 파일의 상기 최적화된 버전 채움은 초과 최적화된 프레임들을 포함할 수 있다.
추정된 품질의 왜곡 및 차이는, 다음 패스를 위한 새로운 헤더 데이터를 보다 정확하게 예측하기 위해서 이전에 생성된 예측 헤더를 사용하는 각각의 패스를 갖고, 소스 파일을 트랜스코딩하는 것에 대한 다수의 패스(pass)들을 수행하는 것에 의해서 감소될 수 있다. 상기 비디오 최적화기(150)는 전체 최적화된 소스 파일의 품질을 다듬는 동안에 몇몇 프레임들에 관해서 필요한 상기 추가(padding)를 감소시켜서 헤더 생성의 에러를 바로잡을 수 있다. 최적화된 소스 파일에서 상기 추가(padding)를 감소시키는 것에 의해서, 상기 비디오 최적화기(150)는 또한 상기 최적화된 소스 파일을 로컬에서 캐싱하기 위해 필요한 저장 공간을 감소시킬 수 있다. 그러나, 비디오 트랜스코딩 및 최적화는 종종 온-더-플라이(on-the-fly)하게 수행되기 때문에, 상기 원본 소스 파일에 다중-패스를 수행하는 것은 상기 비디오 최적화기에게 실현 가능하지 않다. 추가적으로, 이러한 패스들은 불필요하게 발행하지 않아야 하므로, 소스 파일을 사용자 장치(100)로 제공하기 위한 요청이 있을 때만 수행될 수 있다.
일 실시예에서, 최적화된 비디오 캐싱은 예측 부호화 향상 시스템을 제공한다. 원본 소스 파일이 먼저 트랜스코딩되면, 소스 파일의 출력 최적화된 버전의 특성에 대해서 최선으로 추측하기 위해 소스 파일 또는 소스 파일의 작은 부분 및/또는 상기 소스 파일의 헤더에 예측 알고리즘을 사용하는 종래의 방법으로 예측 헤더가 생성된다. 상기 예측 헤더는 상기 소스 파일의 최적화된 버전과 함께 비디오 최적화기(150)의 캐시에 저장될 수 있거나 또는 상기 캐시 데이터베이스(160)에 상기 소스 파일의 최적화된 버전에 대응되는 키와 함께 저장될 수 있으며, 이후의 헤더 예측 향상에 사용하기 위해서 검색될 수도 있다. 소스 파일의 트랜스코딩 다음에 저장된 상기 예측 헤더들은 트랜스코딩 동안 생성된 상기 소스 파일의 최적화된 버전과 관련된 정보를 포함하도록 갱신될 수 있다. 예를 들어, 갱신된 예측 헤더는 최적화된 버전의 실제 프레임 사이즈들, 소스 파일의 시작 프레임 사이즈들, 너무 큰 사이즈로 인해서 재-트랜스코딩 요청된 마지막 프레임 사이즈들, 및 상기 소스 파일의 최적화된 버전을 위해서 예측 헤더가 갱신된 횟수를 포함할 수 있다. 따라서, 이후의 트랜스코딩 처리들은 첫 번째 패스와 비교하여 높은 품질 및 향상된 최적화를 낼 수 있으며, 패스들의 문턱값 수가 완료되면, 비디오 최적화기(150)는 다른 패스를 수행하지 않고 직접 예측 헤더 정보를 활용할 수 있다.
도 4를 통해 도시된 바와 같이, 비디오 최적화기(150)가 소스 파일을 트랜스코딩 하라는 요청을 수신하면, 상기 비디오 최적화기(150)는 기원 서버(170)로부터 원본 소스 파일을 검색(402)하고 원본 소스 파일 헤더 역시 수신한다. 상기 원본 소스 파일 헤더 및 ID 키를 수신하는 것에 응답하여, 상기 비디오 최적화기(150)는 헤더 및 소스 파일의 임의의 대응되는 이전에 최적화된 버전의 위치를 상기 캐시 데이터베이스(160)가 갖고 있는지 여부를 결정하기 위해서 상기 캐시 데이터베이스(160)를 질의(404)한다. 데이터베이스 응답에서, 상기 캐시 데이터베이스(160)는 연관된 헤더 및 소스 파일의 최적화된 버전이 다른 비디오 최적화기의 로컬 캐시(155)에 위치하고 있는지 여부, 헤더 정보는 캐싱 되었으나 소스 파일의 요청된 최적화된 버전은 어떤 로컬 캐시(155)에도 존재하지 않는지 여부, 또는 소스 파일의 최적화된 버전 및 연관된 헤더 양쪽 모두 비디오 최적화기 클러스터에 존재하지 않는지 여부를 결정한다(406). 후자의 경우, 트랜스코딩 처리는 비디오 최적화기(150)에 의한 장래 사용을 위해서 로컬로 저장되거나 또는 캐시 데이터베이스(160)에서 갱신된 첫 번째 패스 최적화된 버전에 대한 예측 헤더 정보(및 이에 기초한 갱신된 헤더 정보) 및/또는 상기 소스 파일에 대한 헤더 정보와 함께 도 3a 내지 3d를 참조하여 설명된 바와 같이 진행될 수 있다. 몇몇 실시예들에서, 동일한 소스 파일에 대한 예측 헤더 정보이나 상이한 최적화된 버전은 높거나 또는 낮은 품질의 소스 파일의 새로운 최적화된 버전 생성을 지원하기 위해서 사용될 수 있다.
최적화된 소스 파일 및 연관된 헤더가 캐시 데이터베이스(160) 및/또는 다른 비디오 최적화기에서 사용 가능한 일 실시예에서, 초기 비디오 최적화기(150)는 소스 파일을 위해 생성된 ID 키 및/또는 원본 소스 파일 헤더 정보를 검색(402)할 수 있으며 임의의 앞서 생성된 예측 헤더 및 상기 소스 파일 정보의 최적화된 버전을 검색하기 위해서 캐시 데이터베이스(160)를 질의(404)할 수 있다. 만약 초기 비디오 최적화기(150)가 앞서 생성된 예측 헤더 및 상기 소스 파일 정보의 최적화된 버전을 수신하면, 상기 초기 비디오 최적화기(150)는 다른 패스와 함께 상기 최적화된 버전의 품질을 향상시키기 위해서, 또는 상기 사용자 장치(110)로 스트리밍 하기에 앞서서 상이한 최적화된 버전(예를 들어, 상이한 품질 수준의)을 생성하기 위해서 상기 소스 파일의 최적화된 버전이 재-트랜스코딩 되어야 하는지 여부를 결정한다.
비디오 최적화기(150)는 분석에 기초하여 새로운 예측 헤더를 생성(414)하기 위해 파일 및 헤더의 속성들을 분석(412)한다. 일 실시예에서, 상기 비디오 최적화기(150)는 새로운 예측 헤더 내의 정보를 보다 잘 결정하기 위해서 최적화된 소스 파일 헤더, 소스 파일의 최적화된 버전, 원본 소스 파일 및/또는 원본 소스 파일 헤더를 분석(412)하기 위한 예측 알고리즘을 사용할 수 있다. 따라서, 각각의 이어지는 패스에서, 소스 파일의 최적화된 버전에 대한 보다 정확한 헤더를 생성하기 위해서 새로운 세션(session)의 예측 알고리즘을 미세 조정하기 위해 앞서 생성된 헤더는 분석(412)될 수 있다. 새로이 생성된 헤더는 그러면 최적화된 소스 파일과 함께 저장(430)되며 이후의 최적화된 비디오 요청들 및 예측 부호화 구동들을 위해 캐시 데이터베이스(160)에서 갱신된다. 장래의 예측 부호화 구동을 지원하기 위해서, 상기 비디오 트랜스코더(150)는 트랜스코딩 처리에 관한 정보를 기록할 수 있으며 예측 헤더가 최적화된 버전의 실제 프레임 사이즈들, 소스 파일의 초기 프레임 사이즈들, 너무 큰 사이즈로 인해서 재-트랜스코딩 요청된 마지막 프레임 사이즈들, 및 소스 파일의 최적화된 버전을 위해서 예측 헤더가 갱신된 횟수와 같은 정보를 포함하도록 갱신(430)할 수 있다.
이전에 최적화된 소스 파일 헤더가 존재(406)하지 않는 사례에서, 비디오 최적화기(150)는 최선의 추측을 이용하여 새로운 최적화된 소스 파일에 대한 속성들을 예측(422)한다. 이러한 방법을 이용하여, 상기 비디오 최적화기(150)는 상기 예측에 기초하여 생성(424)된 헤더에 있어서, 최적화된 비디오 프레임 사이즈들의 과대추정 또는 과소추정을 야기하는, 부정확함을 종종 생성한다. 앞서 언급된 바와 같이, 상기 비디오 최적화기(150)는 과소추정을 보상하고 과대추정에 대한 중복 비트로 상기 프레임들을 추가하기 위해서 프레임의 품질을 감소시켜야 한다. 이후의 패스들이 이러한 에러들을 감소시킬 수 있는 반면에, 비디오 최적화기(150)가 스트리밍 구동 중에 두 번째 패스를 수행하는 것은 종종 실행 불가능하다. 새로운 예측 헤더는 이후의 최적화된 비디오 요청들 및 예측 부호화 구동을 위해서 최적화된 소스 파일과 함께 저장된다. 장래의 예측 부호화 구동을 지원하기 위해서, 비디오 트랜스코더(150)는 트랜스코딩 처리에 관한 정보를 기록할 수 있으며 예측 헤더가 최적화된 버전의 실제 프레임 사이즈들, 소스 파일의 초기 프레임 사이즈들, 너무 큰 사이즈로 인해서 재-트랜스코딩 요청된 마지막 프레임 사이즈들, 및 소스 파일의 최적화된 버전을 위해서 예측 헤더가 갱신된 횟수와 같은 정보를 포함하도록 갱신(430)할 수 있다.
추가적인 구성 고려사항(ADDITIONAL CONFIGURATION CONSIDERATIONS)
개시된 구성들은 캐시 데이터베이스를 도입하여 최적화기가 소스 파일들을 재-트랜스코딩 하도록 요청하지 않고 최적화된 소스 파일들이 사용자 장치들로 신속하게 검색 및 스트리밍 되도록 유익하게 허용한다. 종래의 시스템에서, 소스 파일들은, 제한된 네트워크 대역폭의 비효율적인 사용인, 어떤 최적화도 없이 사용자 장치로 스트리밍 되거나, 또는 소스 파일들은, 각각의 최적화기에 대해 처리 능력의 비효율적인 사용인, 사용자가 소스 파일을 요청할 때마다 최적화한다. 최적화기들이 종종 분리되어 서로 독립되게 구동되기 때문에, 캐시 데이터베이스를 도입하는 것은 어느 로컬 캐시들이 어떤 최적화된 소스 파일들을 포함하고 있는지를 결정하기 위한 중앙 관리 카탈로그를 허용한다. 최적화된 소스 파일들은 따라서 사용자들에게 신속하게 제공될 수 있으며 재-트랜스코딩을 필요로 하지 않는다.
본 명세서를 통해서, 복수의 사례들이 단일 사례로서 설명된 구조들, 구동들, 또는 구성요소들을 구현할 수 있다. 하나 또는 그 이상의 방법들의 개별 동작들이 분리된 동작들로 도시되고 설명되어있더라도, 하나 또는 그 이상의 상기 개별 동작들은 동시에 수행될 수 있고, 상기 동작들이 도시된 순서대로 수행될 필요는 없다. 예시적인 구성들에 있는 분리된 구성요소들로서 나타내어진 구조들 및 기능들은 결합된 구성 또는 구성요소들로서 구현될 수 있다. 유사하게, 단일 구성요소로서 나타내어진 구조들 및 기능들은 분리된 구성요소들로서 구현될 수 있다. 이러한 것들 및 다른 변형들, 변경들, 추가들, 및 보강들은 여기에 있는 목적 범위 내에 있다.
특정 실시 예들은 로직 또는 많은 수의 구성들, 모듈들, 또는 메커니즘들을 포함하는 것으로서 여기서 기술된다. 모듈들은 소프트웨어 모듈들(예를 들어, 컴퓨터-판독 가능한 매체 또는 전송 신호에 포함된 코드) 또는 하드웨어 모듈들 모두를 포함하는 것으로 여겨질 수 있다. 하드웨어 모듈들은 특정 동작을 수행할 수 있는 유형의 유닛이고, 특정 방법으로 배열되거나 구성될 수 있다. 예시 적인 실시 예들에서, 하나 또는 그 이상의 컴퓨터 시스템들(예를 들어, 독립적, 클라이언트 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 또는 그 이상의 하드웨어 모듈들(예를 들어, 프로세서 또는 프로세서들 그룹(102))은 여기에서 설명된 것과 같이 특정 동작을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어에 의해 구성될 수 있다.
다양한 실시 예들에서, 하드웨어 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 특정 동작을 수행하도록 영구적으로 구성되는(예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit) 같은 특정-목적 프로세서) 전용 회선 또는 로직을 포함할 수 있다. 하드웨어 모듈은 또한 특정 동작을 수행하도록 하는 소프트웨어에 의해 일시적으로 구성되는 프로그램가능 로직 또는 회로(예를 들어, 범용 프로세서 또는 다른 프로그램가능 프로세서를 망라하는)를 포함할 수도 있다. 하드웨어 모듈을, 전용이며 영구적으로 구성되는 회로, 또는 일시적으로 구성되는 회로(예를 들어, 소프트웨어에 의해 구성)를 통해, 기계적으로 구현하려는 결정은 비용 및 시간 고려에 의해 움직인다는 것을 이해할 수 있을 것이다.
여기에 설명된 예시적인 방법들(예를 들어, 도 3a 내지 3d 및 4와 함께 설명된 바와 같은)의 상기 다양한 동작들은, 상기 관련된 동작을 수행하도록 영구적으로 또는 일시적으로 구성(예를 들어, 소프트웨어에 의해)되는, 하나 또는 그 이상의 프로세서들(예를 들어, 프로세서(202))에 의해, 적어도 부분적으로, 수행될 수 있다. 일시적으로 또는 영구적으로 구성되든, 상기 프로세서는 하나 또는 그 이상의 동작들 또는 기능들을 수행하도록 동작하는 프로세서-구현된 모듈이 되는 것으로 여겨질 수 있다. 여기서 참조된 상기 모듈은, 몇몇 예시적인 실시 예들에서, 프로세서-구현된 모듈들을 포함할 수 있다.
데이터 상의 동작들의 기호적 표현들 또는 알고리즘에 관하여 제시된 본 명세서의 몇몇 부분들은 비트 또는 바이너리 디지털 신호로서 기계 메모리(예를 들어, 컴퓨터 메모리(204))에 저장된다. 이러한 알고리즘들 또는 기호적 표현들은 다른 당업자에게 작업의 핵심을 전달하기 위해서 데이터 처리 분야의 당업자에 의해 이용되는 기술들의 예시이다. 여기서 사용되는, “알고리즘(algorithm)”은 일관성 있는 동작 순서 또는 원하는 결과로 이끄는 유사한 과정이다. 이러한 문맥에서, 알고리즘들 및 동작들은 물리량의 물리적 조작을 포함한다. 일반적으로, 하지만 반드시 그런 것 만은 아닌, 상기 수량은 저장, 접속, 전송, 결합, 비교될 수 있고 또는 기기에 의해 조작될 수 있는 전기적, 전자적, 또는 광학적 신호들의 형태를 취할 수 있다. “데이터(data)”, “콘텐츠(content)”, “비트들(bits)”, “값들(values)”, “요소들(elements)”, “기호들(symbols)”, “문자들(characters)”, “용어들(terms)”, “수들(numbers)”, “숫자들(numerals)”, 또는 그 밖의 유사한 것들 것 같은 단어들을 사용하여 상기 신호들을 나타내는 것은, 주로 일반적인 사용에서, 때때로 편리하다. 이러한 단어들은, 그러나, 단지 편리한 라벨들이고, 적절한 물리적 수량들과 연관되어야 한다.
별도로 언급된 경우를 제외하고, 여기서 “처리(processing)”, “컴퓨팅(computing)”, “계산(calculating), “결정, 판단(determining)”, “나타내는(presenting)”, “디스플레이(displaying)”, 또는 그 밖의 유사한 것들과 같은 용어들을 이용한 설명들은, 하나 또는 그 이상의 메모리들(예를 들어, 휘발성 메모리, 비-휘발성 메모리, 또는 이들의 결합), 레지스터들, 또는 정보를 수신, 저장, 전송 또는 표시하는 다른 기계적 구성들 내에서 물리적(예를 들어, 전기적, 자기적, 또는 광학적) 수량으로 나타내어지는 데이터를 조작 또는 변환하는 기기(예를 들어, 컴퓨터)의 행동 및 처리 과정들을 나타낼 수 있다.
여기서 사용된 “일 실시 예” 또는 “실시 예”의 표현은 상기 실시 예와 관련되어 설명된 특정 요소, 특성, 구조, 또는 특징이 적어도 하나의 실시 예에 포함되어 있다는 것을 의미한다. 명세서 곳곳에서 사용된 “일 실시 예에서”라는 문구의 표현은 반드시 모두 동일한 실시 예를 지칭하는 것은 아니다.
몇몇 실시 예들은 “결합된(coupled)” 및 “연결된(connected)”이라는 표현을 그들의 파생어와 함께 이용하여 설명된다. 예를 들어, 몇몇 실시 예들은 둘 또는 그 이상의 요소들이 물리적 또는 전기적으로 직접 접촉되어 있다는 것을 나타내기 위해서 상기 “결합된(coupled)”이라는 용어를 이용하여 설명될 수 있다. 상기 “결합된(coupled)”이라는 용어는, 그러나, 둘 또는 그 이상의 요소들인 서로 직접 접촉되어 있지는 않으나 서로 협력하거나 상호작용한다는 것을 또한 의미할 수 있다. 상기 실시 예들은 이 문맥에서 제한되지는 않는다.
여기서 사용된, “포함하다(comprises)”, “포함하는(comprising)”, “포함하다(includes)”, “포함하는(including)”, “가지다(has)”, “갖는(having)”이라는 용어 또는 이들의 다른 임의의 변형은 비배타적으로 포함함을 커버하는 의도로 사용되었다. 예를 들어, 구성요소들의 리스트를 포함하는 프로세스, 방법, 물품 또는 장치는 반드시 상기 구성요소들에만 제한되지 않으며, 리스트에 언급되지 않은 다른 구성요소들이나 그러한 프로세스, 방법, 물품 또는 장치에 내재된 다른 구성요소들을 포함할 수 있다. 또한, 반대의미로 표현되지 않았다면, “또는(or)”은 포괄적인 의미로 지칭되며 배타적인 “또는” 으로 지칭되는 것이 아니다. 예를 들어, 조건 A 또는 B는 다음 중의 하나를 만족하는 것이다: A는 참이며(또는 존재하며) B는 거짓이다(존재하지 않는다), A는 거짓이며(또는 존재하지 않으며) B는 참이다(또는 존재한다), 및 A와 B 모두 참이다(존재한다).
추가적으로, “하나” 또는 “한”(“a” 또는 “an”)의 사용은 상기 실시 예들의 구성요소들과 컴포넌트들을 설명하기 위해 적용된다. 이것은 단지 편의와 발명의 일반적인 개념을 제공하기 위한 것이다. 이러한 설명은 하나 또는 적어도 하나를 포함하는 것으로 해석되어야 하며, 단일이라는 표현도 명백하게 복수라고 뜻하지 않은 이상 복수를 포함한다.
본 개시를 검토하건대, 당업자라면 본 명세서에 개시된 사상을 통해 HTML 언더레이와 함께 쌍방향 비디오 제공시스템 및 프로세스를 위해 부가적인 대체 구조와 기능들을 설계할 수 있을 것이다. 그러므로, 특정한 실시 예들과 적용들이 표현되고 설명되었다고 할지라도, 개시된 실시 예들은 본 명세서에 개시된 특정한 구조와 컴포넌트들에 제한되지 않음을 이해될 수 있을 것이다. 당업자라면, 본 명세서에 개시된 방법과 장치의 배치, 동작 및 세부내용들이 청구항에 정의된 사상과 범위를 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 변화가 이루어 질 수 있음을 알 수 있을 것이다.

Claims (20)

  1. 복수의 비디오 최적화기들에 저장된 하나 이상의 소스 파일들의 복수의 최적화된 버전들에 대응되는 복수의 참조 키들을 포함하는 캐시 데이터베이스를, 제1 비디오 최적화기에 의해, 유지하는 단계, 각각의 참조 키는 소스 파일의 최적화된 버전의 파라미터들을 특정하고, 상기 소스 파일의 식별자 및 상기 소스 파일의 최적화된 버전을 저장하는 비디오 최적화기의 식별자를 포함함;
    클라이언트 장치로부터 원본 소스 파일을 최적화하기 위한 요청을 상기 제1 비디오 최적화기에서 수신하는 단계, 상기 원본 소스 파일은 기원 서버에 저장되고 상기 요청은 상기 원본 소스 파일의 식별자 및 상기 원본 소스 파일을 최적화하기 위한 파라미터들을 특정하는 키를 포함함;
    상기 캐시 데이터베이스로의 질의를, 상기 키에 기초하여, 생성하는 단계;
    상기 키가 상기 캐시 데이터베이스에서 유지되는 참조 키와 매칭되는지 여부를 표시하는 응답을, 상기 캐시 데이터베이스로부터, 수신하는 단계; 및
    상기 원본 소스 파일의 최적화된 버전을 요청하기 위해 상기 클라이언트 장치에 대한 상기 참조 키에 의해 특정되는 제2 비디오 최적화기의 주소 및 상기 키를 포함하는 리다이렉트 요청을, 상기 키가 상기 참조 키와 매칭되는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여, 상기 클라이언트 장치로 전송하는 단계를 포함하는, 최적화된 비디오 캐싱 방법.
  2. 제1항에 있어서, 상기 키가 상기 참조 키와 매칭되는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여,
    상기 제2 비디오 최적화기에 저장된 상기 원본 소스 파일의 최적화된 버전에 대한 요청을, 상기 참조 키에 의해 특정되는 상기 제2 비디오 최적화기로, 전송하는 단계를 더 포함하는, 최적화된 비디오 캐싱 방법.
  3. 제2항에 있어서,
    상기 소스 파일의 수신된 최적화된 버전의 부분을 저장하는 단계를 더 포함하는, 최적화된 비디오 캐싱 방법.
  4. 제2항에 있어서,
    상기 참조 키에 의해 특정된 상기 제2 비디오 최적화기에 저장된 상기 원본 소스 파일의 최적화된 버전에 대한 상기 요청과 함께, 상기 제2 비디오 최적화기에 저장된 최적화된 소스 파일을 상기 제1 비디오 최적화기 상에 복제하기 위한 요청을 전송하는 단계; 및
    상기 제1 비디오 최적화기 내에 저장된 상기 원본 소스 파일의 최적화된 버전을 저장하는 것에 응답하여 상기 캐시 데이터베이스를 갱신하기 위한 명령들을, 상기 캐시 데이터베이스로, 전송하는 단계를 더 포함하는, 최적화된 비디오 캐싱 방법.
  5. 제4항에 있어서,
    상기 원본 소스 파일의 저장된 최적화된 버전이 상기 원본 소스 파일의 비디오 길이와 매칭되는지 여부를 결정하기 위해서 상기 기원 서버를 질의하는 단계를 더 포함하는, 최적화된 비디오 캐싱 방법.
  6. 제1항에 있어서, 상기 키는 소스 시그니쳐를 포함하고, 상기 소스 시그니쳐는 상기 원본 소스 파일의 일 부분의 해시인, 최적화된 비디오 캐싱 방법.
  7. 제1항에 있어서, 상기 캐시 데이터베이스는 상기 원본 소스 파일의 최적화된 버전을 저장하는 복수의 비디오 최적화기들을 식별하는 데이터 엔트리들을 포함하며, 상기 데이터 엔트리들은 상기 원본 소스 파일의 최적화된 버전이 저장된 위치를 갱신하기 위해서 상기 캐시 데이터베이스로 전송되는 명령들을 통해 변형되는, 최적화된 비디오 캐싱 방법.
  8. 제1항에 있어서, 상기 원본 소스 파일의 저장된 최적화된 버전은 생성된 최적화된 소스 파일 전체의 미리 정의된 세그먼트를 포함하는, 최적화된 비디오 캐싱 방법.
  9. 제1항에 있어서, 상기 키가 상기 원본 소스 파일의 최적화된 버전에 대한 어떠한 참조 키와도 매칭되지 않는다는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여,
    상기 원본 소스 파일에 대한 요청을, 상기 기원 서버로, 전송하는 단계;
    상기 원본 소스 파일을, 상기 기원 서버로부터, 스트림 시키는(streaming) 단계;
    미리 결정된 트랜스코딩 설정들에 기초하여 스트림을 트랜스코딩하는 것에 의해 상기 원본 소스 파일의 최적화된 버전을 생성하고 상기 원본 소스 파일의 최적화된 버전을 저장하는 단계;
    상기 클라이언트 장치에서 재생하기 위해 상기 원본 소스 파일의 최적화된 버전을 스트림 시키는 단계; 및
    상기 제1 비디오 최적화기에 저장된 최적화된 소스 파일에 대응되는 참조 키와 함께 상기 캐시 데이터베이스를 갱신하기 위한 명령들을, 상기 캐시 데이터베이스로, 전송하는 단계를 더 포함하는, 최적화된 비디오 캐싱 방법.
  10. 프로세서; 및
    실행 가능한 컴퓨터 프로그램 명령들을 저장하는 비-일시적인 컴퓨터-판독 가능한 저장 매체를 포함하며,
    상기 실행 가능한 컴퓨터 프로그램 명령들은 실행되면 상기 프로세서로 하여금:
    복수의 비디오 최적화기들에 저장된 하나 이상의 소스 파일들의 복수의 최적화된 버전들에 대응되는 복수의 참조 키들을 포함하는 캐시 데이터베이스를, 제1 비디오 최적화기에 의해, 유지하게 하고, 각각의 참조 키는 소스 파일의 최적화된 버전의 파라미터들을 특정하고, 상기 소스 파일의 식별자 및 상기 소스 파일의 최적화된 버전을 저장하는 비디오 최적화기의 식별자를 포함함;
    클라이언트 장치로부터 원본 소스 파일을 최적화하기 위한 요청을 수신하게 하며, 상기 원본 소스 파일은 기원 서버에 저장되고 상기 요청은 상기 원본 소스 파일의 식별자 및 상기 원본 소스 파일을 최적화하기 위한 파라미터들을 특정하는 키를 포함함;
    상기 캐시 데이터베이스로의 질의를, 상기 키에 기초하여, 생성하게 하고;
    상기 키가 상기 캐시 데이터베이스에서 유지되는 참조 키와 매칭되는지 여부를 표시하는 응답을, 상기 캐시 데이터베이스로부터, 수신하게 하며; 및
    상기 원본 소스 파일의 최적화된 버전을 요청하기 위해 상기 클라이언트 장치에 대한 상기 참조 키에 의해 특정되는 제2 비디오 최적화기의 주소 및 상기 키를 포함하는 리다이렉트 요청을, 상기 키가 상기 참조 키와 매칭되는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여, 상기 클라이언트 장치로 전송하게 하는;
    최적화된 비디오 캐싱 시스템.
  11. 제10항에 있어서,
    상기 키가 상기 참조 키와 매칭되는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여, 상기 프로세서로 하여금:
    상기 제2 비디오 최적화기에 저장된 상기 원본 소스 파일의 최적화된 버전에 대한 요청을, 상기 참조 키에 의해 특정되는 상기 제2 비디오 최적화기로, 전송하게 하는 명령들을 더 포함하는, 최적화된 비디오 캐싱 시스템.
  12. 제10항에 있어서,
    상기 키가 상기 원본 소스 파일의 최적화된 버전에 대한 어떠한 참조 키와도 매칭되지 않는다는 것을 표시하는 상기 캐시 데이터베이스 응답에 응답하여, 상기 프로세서로 하여금:
    상기 원본 소스 파일에 대한 요청을, 상기 기원 서버로, 전송하게 하고;
    상기 원본 소스 파일을, 상기 기원 서버로부터, 스트림하게 하며;
    미리 결정된 트랜스코딩 설정들에 기초하여 스트림을 트랜스코딩하는 것에 의해 상기 원본 소스 파일의 최적화된 버전을 생성하고 상기 원본 소스 파일의 최적화된 버전을 저장하게 하고;
    상기 클라이언트 장치에서 재생하기 위해 상기 원본 소스 파일의 최적화된 버전을 스트림하게 하며; 및
    상기 제1 비디오 최적화기에 저장된 최적화된 소스 파일에 대응되는 참조 키와 함께 상기 캐시 데이터베이스를 갱신하기 위한 명령들을, 상기 캐시 데이터베이스로, 전송하게 하는;
    명령들을 더 포함하는, 최적화된 비디오 캐싱 시스템.
  13. 제1항에 있어서,
    상기 소스 파일의 최적화된 버전의 파라미터들과 매칭되는 상기 키에 의해 식별되는 최적화 파라미터들 및 상기 참조 키 내의 상기 소스 파일의 식별자와 매칭되는 상기 키 내의 상기 원본 소스 파일의 식별자에 응답하여 상기 키는 상기 참조 키와 매칭되는, 최적화된 비디오 캐싱 방법.
  14. 제10항에 있어서,
    상기 소스 파일의 최적화된 버전의 파라미터들과 매칭되는 상기 키에 의해 식별되는 최적화 파라미터들 및 상기 참조 키 내의 상기 소스 파일의 식별자와 매칭되는 상기 키 내의 상기 원본 소스 파일의 식별자에 응답하여 상기 키는 상기 참조 키와 매칭되는, 최적화된 비디오 캐싱 시스템.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020157004371A 2012-07-18 2013-07-18 저스트-인-타임 분산 비디오 캐시 KR101629338B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261673188P 2012-07-18 2012-07-18
US61/673,188 2012-07-18
PCT/US2013/051126 WO2014015168A2 (en) 2012-07-18 2013-07-18 Just-in-time distributed video cache

Publications (2)

Publication Number Publication Date
KR20150038170A KR20150038170A (ko) 2015-04-08
KR101629338B1 true KR101629338B1 (ko) 2016-06-13

Family

ID=49947523

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157004371A KR101629338B1 (ko) 2012-07-18 2013-07-18 저스트-인-타임 분산 비디오 캐시

Country Status (6)

Country Link
US (3) US9154361B2 (ko)
EP (1) EP2875635B1 (ko)
JP (1) JP5961850B2 (ko)
KR (1) KR101629338B1 (ko)
CN (1) CN104604240B (ko)
WO (1) WO2014015168A2 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9819984B1 (en) 2007-03-26 2017-11-14 CSC Holdings, LLC Digital video recording with remote storage
US9055309B2 (en) 2009-05-29 2015-06-09 Cognitive Networks, Inc. Systems and methods for identifying video segments for displaying contextually relevant content
EP2706467A1 (en) * 2012-09-05 2014-03-12 Awingu Nv Method for accessing a content item in a cloud storage system, and a corresponding cloud broker, cloud cache agent and client application
US10136443B2 (en) * 2012-09-07 2018-11-20 Nokia Solutions And Networks Oy Mechanism and apparatus to perform cooperative resource management in wireless networks
US8782285B1 (en) * 2013-12-06 2014-07-15 Limelight Networks, Inc. Lazy transcoding and re-transcoding of media objects in an online video platform
US20140115056A1 (en) * 2012-10-22 2014-04-24 Apple Inc. Book thinning
US9183049B1 (en) * 2013-01-25 2015-11-10 Amazon Technologies, Inc. Processing content using pipelines
US8813245B1 (en) 2013-01-25 2014-08-19 Amazon Technologies, Inc. Securing content using pipelines
US9219784B2 (en) 2013-03-07 2015-12-22 International Business Machines Corporation Synchronization of a server side deduplication cache with a client side deduplication cache
US9674255B1 (en) * 2014-03-26 2017-06-06 Amazon Technologies, Inc. Systems, devices and methods for presenting content
US9800904B2 (en) * 2014-05-13 2017-10-24 Piksel, Inc. Media asset duplication
US9525893B2 (en) * 2014-05-28 2016-12-20 Verizon Patent And Licensing Inc. Methods and systems for managing storage of media program copies within a network digital video recording system
CN104159249B (zh) * 2014-07-30 2018-05-18 华为技术有限公司 一种业务数据管理的方法、装置及系统
JP6331967B2 (ja) * 2014-10-27 2018-05-30 ソニー株式会社 通信装置および通信方法
US9936040B2 (en) 2014-12-19 2018-04-03 Citrix Systems, Inc. Systems and methods for partial video caching
US10165033B2 (en) * 2014-12-30 2018-12-25 Sling Media LLC Live encoding for distribution of long tail media content
BR112017016123A2 (pt) 2015-01-30 2018-04-17 Inscape Data Inc servidor de correspondência para identificação de conteúdo de vídeo que é exibido por um sistema de televisão, método executado por computador, e produto de programa informático concretamente incorporado a um meio de armazenamento de leitura por máquina permanente de um dispositivo de informática
US20160226790A1 (en) * 2015-01-30 2016-08-04 Comcast Cable Communications, Llc Provisioning and managing resources
US20160283436A1 (en) * 2015-03-23 2016-09-29 Comcast Cable Communications, Llc Distributed microcaching for content delivery
KR101668957B1 (ko) * 2015-07-09 2016-10-24 라인 가부시키가이샤 통신 비용의 절감을 위한 컨텐츠 스트리밍 서비스 방법 및 시스템
CA2992319C (en) 2015-07-16 2023-11-21 Inscape Data, Inc. Detection of common media segments
JP6763019B2 (ja) 2015-07-16 2020-09-30 インスケイプ データ インコーポレイテッド メディアセグメント識別効率向上のために探索索引を区分するためのシステムおよび方法
JP6891170B2 (ja) * 2015-07-16 2021-06-18 インスケイプ データ インコーポレイテッド ステムリソース利用を最適化するための映像セグメントの将来の視聴予測
US10080062B2 (en) 2015-07-16 2018-09-18 Inscape Data, Inc. Optimizing media fingerprint retention to improve system resource utilization
CN106612456A (zh) * 2015-10-26 2017-05-03 中兴通讯股份有限公司 网络视频播放方法和系统及用户终端、家庭流服务节点
WO2017145781A1 (ja) * 2016-02-25 2017-08-31 日本電信電話株式会社 ペーシング制御装置、ペーシング制御方法、及びプログラム
JP6483044B2 (ja) * 2016-03-17 2019-03-13 Kddi株式会社 保持しているオブジェクトの変換を行う転送装置及びプログラム
US10225309B1 (en) 2016-03-22 2019-03-05 Amazon Technologies, Inc. Monitoring of media pipeline health using tracing
US10200428B1 (en) 2016-03-30 2019-02-05 Amazon Technologies, Inc. Unicast routing of a media stream to subscribers
CN108243116B (zh) * 2016-12-23 2021-09-14 华为技术有限公司 一种流量控制方法及交换设备
US10904329B1 (en) * 2016-12-30 2021-01-26 CSC Holdings, LLC Virtualized transcoder
EP3410728A1 (en) * 2017-05-30 2018-12-05 Vestel Elektronik Sanayi ve Ticaret A.S. Methods and apparatus for streaming data
US10742736B2 (en) 2017-12-19 2020-08-11 Western Digital Technologies, Inc. Integrated erasure coding for data storage and transmission
US11653040B2 (en) * 2018-07-05 2023-05-16 Mux, Inc. Method for audio and video just-in-time transcoding
US10649980B2 (en) * 2018-03-07 2020-05-12 Xanadu Big Data, Llc Methods and systems for resilient, durable, scalable, and consistent distributed timeline data store
US20190394512A1 (en) * 2018-06-25 2019-12-26 Verizon Digital Media Services Inc. Low Latency Video Streaming Via a Distributed Key-Value Store
US11695978B2 (en) 2018-07-05 2023-07-04 Mux, Inc. Methods for generating video-and audience-specific encoding ladders with audio and video just-in-time transcoding
EP3797518A1 (en) * 2018-08-21 2021-03-31 Rovi Guides, Inc. Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media
CN109639813B (zh) * 2018-12-24 2022-04-12 北京京东尚科信息技术有限公司 视频文件传输处理方法及装置、电子设备和存储介质
US10972761B2 (en) * 2018-12-26 2021-04-06 Purdue Research Foundation Minimizing stall duration tail probability in over-the-top streaming systems
US11151609B2 (en) 2019-01-07 2021-10-19 Alphonso Inc. Closed loop attribution
US10803480B2 (en) 2019-01-07 2020-10-13 Alphonso Inc. Bidding agent with optimized reach limitation
US10873785B2 (en) * 2019-01-07 2020-12-22 Alphonso Inc. Content recommendation system and method-based implicit ratings
US11037205B2 (en) 2019-01-07 2021-06-15 Alphonso Inc. Bidding agent using ad opportunity source to limit ad reach
CN109889919A (zh) * 2019-03-27 2019-06-14 深圳市网心科技有限公司 一种视频转码方法、装置、系统及介质
US11527266B2 (en) * 2019-04-04 2022-12-13 Wowza Media Systems, LLC Artificial intelligence analysis of multimedia content
CN110099293B (zh) * 2019-04-30 2021-06-01 广州酷狗计算机科技有限公司 播放视频的方法、装置、设备及可读存储介质
US11133037B1 (en) * 2020-07-17 2021-09-28 Idomoo Ltd System and method for generating dynamic media
CN112203031B (zh) * 2020-08-12 2023-06-02 深圳市豪恩汽车电子装备股份有限公司 数字视频缓存系统及方法
CN112770132B (zh) * 2021-01-05 2023-01-24 北京东方网信科技股份有限公司 一种代理缓存中降低mp4视频出口流量的方法及系统
US11284165B1 (en) 2021-02-26 2022-03-22 CSC Holdings, LLC Copyright compliant trick playback modes in a service provider network
US20220321623A1 (en) * 2021-04-05 2022-10-06 Ademco Inc. Establishing a producer / consumer session in the cloud
US11650957B2 (en) * 2021-06-01 2023-05-16 International Business Machines Corporation Receiving at a cache node notification of changes to files in a source file system served from a cache file system at the cache node
US11645238B2 (en) 2021-06-01 2023-05-09 International Business Machines Corporation Notifying a cache file system of changes to files in a source file system served from the cache file system
US11848990B2 (en) * 2021-10-15 2023-12-19 Siden, Inc. Method and system for distributing and storing content using local clouds and network clouds
US12003559B1 (en) * 2023-05-15 2024-06-04 Netflix, Inc. Techniques for delivering current media content via content delivery networks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174471A1 (en) 2003-04-30 2007-07-26 Cedric Van Rossum Secure, continous, proxy-optimized, device-to-device data download reception system and method of use
WO2011106009A1 (en) 2010-02-26 2011-09-01 Mobovivo, Inc. Intelligent optimization of video encoding during video content delivery
US20120030212A1 (en) 2010-07-30 2012-02-02 Frederick Koopmans Systems and Methods for Video Cache Indexing
US20120131138A1 (en) 2010-11-18 2012-05-24 Skyfire Labs, Inc. Client-Selected Network Services

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE512880C2 (sv) * 1998-07-03 2000-05-29 Ericsson Telefon Ab L M Ett cacheservernät
US7028096B1 (en) * 1999-09-14 2006-04-11 Streaming21, Inc. Method and apparatus for caching for streaming data
US7636792B1 (en) * 2001-07-13 2009-12-22 Oracle International Corporation Methods and systems for dynamic and automatic content creation for mobile devices
US6954456B2 (en) * 2001-12-14 2005-10-11 At & T Corp. Method for content-aware redirection and content renaming
US8484282B2 (en) * 2002-03-21 2013-07-09 International Business Machines Corporation High-speed content transformation engine
US20030204602A1 (en) * 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US20040098463A1 (en) * 2002-11-19 2004-05-20 Bo Shen Transcoding-enabled caching proxy and method thereof
US7188216B1 (en) * 2002-12-13 2007-03-06 Vignette Corporation Method and system for an extensible caching framework
US20050165941A1 (en) * 2004-01-22 2005-07-28 Edward Eytchison Methods and apparatuses for streaming content
US20060190616A1 (en) * 2005-02-04 2006-08-24 John Mayerhofer System and method for aggregating, delivering and sharing audio content
FR2884671B1 (fr) * 2005-04-19 2007-07-27 Streamezzo Sa Procede d'optimisation de la gestion d'un cache de serveur pouvant etre consulte par des terminaux clients de caracteristiques differentes
US8181107B2 (en) * 2006-12-08 2012-05-15 Bytemobile, Inc. Content adaptation
US20100281042A1 (en) * 2007-02-09 2010-11-04 Novarra, Inc. Method and System for Transforming and Delivering Video File Content for Mobile Devices
US8560729B2 (en) * 2007-02-09 2013-10-15 Onmobile Global Limited Method and apparatus for the adaptation of multimedia content in telecommunications networks
US7962640B2 (en) * 2007-06-29 2011-06-14 The Chinese University Of Hong Kong Systems and methods for universal real-time media transcoding
US7818355B2 (en) * 2007-11-07 2010-10-19 Mills Brendon W System and method for managing content
US8145779B2 (en) * 2008-04-08 2012-03-27 Microsoft Corporation Dynamic server-side media transcoding
US8290036B2 (en) * 2008-06-11 2012-10-16 Optibase Technologies Ltd. Method, apparatus and system for concurrent processing of multiple video streams
US8706910B2 (en) * 2008-10-28 2014-04-22 Panzura, Inc. Dynamically adaptive network-based data processing system and method
JP2010273298A (ja) * 2009-05-25 2010-12-02 Broad Earth Inc コンテンツ配信システム、配信制御装置及び配信制御プログラム
CN102055964A (zh) * 2009-11-11 2011-05-11 腾讯科技(深圳)有限公司 一种多媒体文件转码方法和转码器
KR101657196B1 (ko) * 2009-12-01 2016-09-19 밴트릭스 코오퍼레이션 캐시를 이용한 효율적인 미디어 배송 시스템 및 방법
US8982738B2 (en) 2010-05-13 2015-03-17 Futurewei Technologies, Inc. System, apparatus for content delivery for internet traffic and methods thereof
US8458362B2 (en) * 2010-09-30 2013-06-04 Comcast Cable Communications, Llc Delivering content in multiple formats
US9418353B2 (en) * 2010-12-20 2016-08-16 Akamai Technologies, Inc. Methods and systems for delivering content to differentiated client devices
US8639718B2 (en) * 2011-12-02 2014-01-28 Cisco Technology, Inc. Systems and methods for client transparent video readdressing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174471A1 (en) 2003-04-30 2007-07-26 Cedric Van Rossum Secure, continous, proxy-optimized, device-to-device data download reception system and method of use
WO2011106009A1 (en) 2010-02-26 2011-09-01 Mobovivo, Inc. Intelligent optimization of video encoding during video content delivery
US20120030212A1 (en) 2010-07-30 2012-02-02 Frederick Koopmans Systems and Methods for Video Cache Indexing
US20120131138A1 (en) 2010-11-18 2012-05-24 Skyfire Labs, Inc. Client-Selected Network Services

Also Published As

Publication number Publication date
EP2875635A4 (en) 2016-01-20
US9800633B2 (en) 2017-10-24
KR20150038170A (ko) 2015-04-08
EP2875635A2 (en) 2015-05-27
US9154361B2 (en) 2015-10-06
US10484442B2 (en) 2019-11-19
CN104604240B (zh) 2018-01-26
US20180007105A1 (en) 2018-01-04
WO2014015168A3 (en) 2014-03-27
CN104604240A (zh) 2015-05-06
JP2015530781A (ja) 2015-10-15
JP5961850B2 (ja) 2016-08-02
US20150381677A1 (en) 2015-12-31
US20140025837A1 (en) 2014-01-23
WO2014015168A2 (en) 2014-01-23
EP2875635B1 (en) 2019-09-04

Similar Documents

Publication Publication Date Title
KR101629338B1 (ko) 저스트-인-타임 분산 비디오 캐시
US20230319229A1 (en) System and method for modifying media streams using metadata
US20200183882A1 (en) System and method for storing content on a content delivery network
US8489760B2 (en) Media file storage format and adaptive delivery system
US20170149860A1 (en) Partial prefetching of indexed content
EP2409241B1 (en) Dynamic variable rate media delivery system
US8392615B2 (en) Dynamic variable rate media delivery system
US8615630B2 (en) Systems and methods for managing data storage
US10225590B2 (en) Method and system of dynamic routing of aggregated online media streams
US10375444B2 (en) Partial video pre-fetch
US20130151580A1 (en) Method, network unit and system for optimizing rendering of media content
WO2016063161A1 (en) Partial prefetching of indexed content
US11470368B2 (en) Ascription based modeling of video delivery system data in a database
US11496803B2 (en) Video stream switching service
CN111726339A (zh) 一种直播流快速截图系统

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 4