BR102021003482A2 - Pré-armazenamento em cache seletivo de fluxos de mídia - Google Patents

Pré-armazenamento em cache seletivo de fluxos de mídia Download PDF

Info

Publication number
BR102021003482A2
BR102021003482A2 BR102021003482-3A BR102021003482A BR102021003482A2 BR 102021003482 A2 BR102021003482 A2 BR 102021003482A2 BR 102021003482 A BR102021003482 A BR 102021003482A BR 102021003482 A2 BR102021003482 A2 BR 102021003482A2
Authority
BR
Brazil
Prior art keywords
media
media item
cache
item
caching
Prior art date
Application number
BR102021003482-3A
Other languages
English (en)
Inventor
Jeffrey Grubb
Eric Ross Klein
Christopher J. Zucker
William B. May, Jr.
Original Assignee
Disney Enterprises, Inc.
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 Disney Enterprises, Inc. filed Critical Disney Enterprises, Inc.
Publication of BR102021003482A2 publication Critical patent/BR102021003482A2/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/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/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
    • 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
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving MPEG packets from an IP network
    • H04N21/4383Accessing a communication channel
    • H04N21/4384Accessing a communication channel involving operations to reduce the access time, e.g. fast-tuning for reducing channel switching latency
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/44029Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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/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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2407Monitoring of transmitted content, e.g. distribution time, number of downloads

Abstract

pré-armazenamento em cache seletivo de fluxos de mídia. várias modalidades estabelecem um método implementado por computador para seletivamente armazenar em cache conteúdo digital para transmissão contínua (streaming), compreendendo analisar um conjunto de dados de tráfego associado à transmissão contínua (streaming) de uma pluralidade de itens de mídia em um primeiro período de tempo, selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo, e armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo, pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados com o primeiro item de mídia, e pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia, em que cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.

Description

PRÉ-ARMAZENAMENTO EM CACHE SELETIVO DE FLUXOS DE MÍDIA FUNDAMENTOS Campo das várias modalidades
[001] As modalidades da presente divulgação se referem geralmente a mídia digital e, mais especificamente, a pré-armazenamento em cache seletivo de fluxos de mídia.
Descrição da Técnica Relacionada
[002] Os serviços de transmissão contínua ("streaming") de conteúdo oferecem aos clientes acesso a uma biblioteca de mídia digital, como texto, áudio, programas audiovisuais, e assim por diante. Um serviço de transmissão contínua ("streaming") de vídeo, por exemplo, pode fornecer a um cliente acesso a uma biblioteca de itens de mídia (por exemplo, filmes, episódios de televisão, canções, etc.). O cliente pode usar uma aplicação de reprodução em execução em um dispositivo de transmissão contínua ("streaming") cliente para visualizar, ou de outro modo consumir, os itens de mídia. Em várias infraestruturas de distribuição de conteúdo, os clientes que tentam acessar a biblioteca de mídia se conectam ao serviço de transmissão contínua ("streaming") de vídeo usando diferentes dispositivos de reprodução e sob diferentes condições operacionais. Os servidores de conteúdo em uma rede de distribuição de conteúdo podem entregar conteúdo digital ao dispositivo cliente por meio de transmissão contínua ("streaming") em tempo real, permitindo que o cliente inicie a reprodução antes de descarregar o item de mídia completo.
[003] Os serviços de transmissão contínua ("streaming") de conteúdo convencionais melhoram o desempenho de transmissão contínua ("streaming") por armazenar conteúdo digital relacionado a itens de mídia em servidores de borda distribuídos em uma rede. Dessa forma, os dispositivos clientes podem ser servidos por servidores de borda que estão mais próximos dos dispositivos clientes e, portanto, são mais capazes de servir conteúdo de forma eficiente aos dispositivos clientes do que outros servidores na rede. Armazenar o conteúdo digital em servidores de borda permite que os dispositivos clientes recebam rapidamente o conteúdo dos servidores de borda mais próximos (ou de outra forma mais eficiente) para um determinado dispositivo em uma determinada situação. Isso reduz o tempo entre um dispositivo cliente solicitar um item de mídia e o dispositivo cliente receber o conteúdo necessário para reproduzir o item de mídia solicitado. Além disso, os serviços de transmissão contínua ("streaming") de conteúdo convencionais melhoram o desempenho de buffer e reprodução por armazenar conteúdo digital relacionado a itens de mídia no cache de um servidor de borda antes que um cliente solicite o item de mídia particular (referido neste documento como "pré-armazenamento em cache") . Em tais casos, a rede de distribuição de conteúdo entrega o conteúdo relacionado ao item de mídia a partir do cache de alta velocidade (mas com capacidade limitada) do servidor de borda em vez do armazenamento de dados de baixa velocidade (mas maior), reduzindo ainda mais o tempo necessário para receber o conteúdo necessário para reproduzir o item de mídia solicitado.
[004] A capacidade de armazenamento de cache de servidor de borda é limitada, portanto, o pré-armazenamento em cache do conteúdo digital relacionado a um item de mídia em um servidor de borda pode preencher o servidor de borda com arquivos raramente acessados, consumindo espaço que poderia ser ocupado por arquivos acessados com mais frequência. Por exemplo, quando um serviço de transmissão contínua ("streaming") de vídeo fornece um item de mídia via transmissão contínua ("streaming") adaptativa, o serviço de transmissão contínua ("streaming") de vídeo mantém múltiplas versões (por exemplo, 30 versões distintas codificadas em taxas de bits diferentes ou para diferentes tipos de dispositivos clientes) de conteúdo digital relacionado ao mesmo item de mídia. Como resultado, a rede de distribuição de conteúdo armazena arquivos separados para cada versão distinta do conteúdo digital. Consequentemente, ao pré-armazenar em cache um único item de mídia para transmissão contínua ("streaming") adaptativa, o serviço de transmissão contínua ("streaming") de mídia armazena cada versão no cache, incluindo versões que não são acessadas regularmente pelos clientes. Como o cache tem capacidade de armazenamento limitada, preencher o cache com versões raramente acessadas desperdiça recursos de memória e recursos de armazenamento de cache sem melhorar o desempenho de transmissão contínua ("streaming") experimentado pela maioria dos clientes.
[005] Conforme ilustrado acima, técnicas mais eficazes para pré-armazenamento em cache de programas audiovisuais são necessárias na técnica.
BREVE DESCRIÇÃO DOS DESENHOS
[006] De modo que a maneira pela qual os recursos recitados acima das várias modalidades possam ser entendidos em detalhes, uma descrição mais particular dos conceitos inventivos, resumidos brevemente acima, pode ser feita por referência a várias modalidades, algumas das quais são ilustradas nos desenhos anexos. Deve ser notado, no entanto, que os desenhos anexos ilustram apenas modalidades típicas dos conceitos inventivos e, portanto, não devem ser considerados limitantes do escopo de qualquer forma, e que existem outras modalidades igualmente eficazes.
[007] A Figura 1 ilustra um sistema de distribuição de conteúdo configurado para implementar um ou mais aspectos de várias modalidades.
[008] A Figura 2 é uma ilustração mais detalhada do sistema de distribuição de conteúdo da Figura 1, de acordo com várias modalidades.
[009] A Figura 3 é uma ilustração mais detalhada do cache da Figura 2, de acordo com várias modalidades.
[010] A Figura 4A é um fluxograma dos passos de método para pré-seletivamente armazenar em cache múltiplas versões de um programa audiovisual, de acordo com várias modalidades.
[011] A Figura 4B é um fluxograma dos passos de método para pré-seletivamente armazenar em cache múltiplas versões de um segmento particular de um programa audiovisual, de acordo com várias modalidades.
[012] A Figura 5 ilustra os componentes de um servidor e dispositivo cliente incluídos no sistema de distribuição de conteúdo da Figura 1, de acordo com várias modalidades.
DESCRIÇÃO DETALHADA
[013] Na descrição a seguir, vários detalhes específicos são apresentados para fornecer uma compreensão mais completa das várias modalidades. No entanto, será evidente para um versado na técnica que os conceitos inventivos podem ser praticados sem um ou mais desses detalhes específicos.
[014] Conforme mencionado acima, um serviço de transmissão contínua ("streaming") pré-armazena em cache um item de mídia por armazenar fluxos de mídia associados ao item de mídia no cache de um servidor de borda na rede de distribuição de conteúdo. Os fluxos de mídia podem ser armazenados no cache antes que um cliente solicite o item de mídia. Por exemplo, antes de lançar um novo episódio de televisão, um serviço de transmissão contínua ("streaming") pode armazenar os arquivos de transmissão contínua ("streaming") de mídia ("fluxos de mídia") associados ao episódio de televisão em um cache incluído em um servidor de borda na rede de distribuição de conteúdo. O armazenamento em cache dos fluxos de mídia associados ao novo episódio de televisão no servidor de borda reduz o tempo entre o momento em que um cliente solicita inicialmente o novo episódio de televisão e o momento em que o dispositivo cliente recebe um fluxo de mídia associado ao novo episódio de televisão para reprodução.
[015] A capacidade de armazenamento de cache de servidor de borda é limitada, portanto, se o cache não for preenchido de forma inteligente, o cache do servidor de borda pode ser preenchido com dados raramente acessados, enquanto os dados acessados com mais frequência permanecem nos vários armazenamentos de dados dentro da rede de distribuição de conteúdo com uma latência de transmissão contínua ("streaming") relativamente mais longa. Por exemplo, o serviço de transmissão contínua ("streaming") de vídeo pode manter 30 fluxos de mídia distintos associados ao mesmo item de mídia. As 30 versões distintas do programa audiovisual podem incluir, por exemplo, versões do item de mídia codificado em diferentes resoluções de vídeo (por exemplo, 2160p de alta faixa dinâmica (HDR), 1080p, 480i, etc.) e diferentes codificações de áudio (por exemplo, mono, 5.1 estéreo, 7.1 estéreo, etc.). Esses fluxos podem fornecer experiências diferentes para diferentes dispositivos, conexões de rede, etc. Como resultado, quando um serviço de transmissão contínua ("streaming") convencional pré-armazena em cache um item de mídia, como um filme de cinema, o serviço de transmissão contínua ("streaming") de vídeo preenche o cache do servidor de borda com dados para cada um dos fluxos de mídia distintos associados ao item de mídia, independentemente de os dispositivos clientes que se conectam ao servidor de borda solicitarem fluxos de reprodução específicos. Consequentemente, o cache do servidor de borda é preenchido com fluxos de mídia que raramente são acessados por dispositivos clientes, desperdiçando os recursos de memória do cache. Por exemplo, o serviço de transmissão contínua ("streaming") pode armazenar um fluxo de mídia codificado em uma resolução de vídeo muito baixa que raramente é acessada por dispositivos clientes. O fluxo de mídia raramente acessado, portanto, ocupa espaço no cache que poderia ser ocupado com outros fluxos de mídia que os dispositivos clientes solicitam com frequência.
[016] Para resolver esses problemas, várias modalidades incluem um sistema de distribuição de conteúdo que inclui um banco de dados de conteúdo e um ou mais caches incluídos em um ou mais servidores de borda. O banco de dados de conteúdo armazena fluxos de mídia associados a uma biblioteca de itens de mídia. Para um determinado item de mídia, o banco de dados de conteúdo pode armazenar múltiplos fluxos de mídia. Por exemplo, o banco de dados de conteúdo pode armazenar um ou mais fluxos de mídia associados a um episódio de televisão de 28 minutos, onde cada um dos um ou mais fluxos de mídia inclui dados associados ao episódio de televisão que é codificado em diferentes taxas de bits de fluxo. Cada item de mídia inclui uma sequência contígua de arquivos de dados ("fragmentos"), onde cada fragmento inclui dados que são necessários para uma aplicação de reprodução para renderizar um intervalo correspondente do item de mídia. Continuando o exemplo acima, um determinado item de mídia associado ao episódio de televisão de 28 minutos inclui uma sequência de 560 fragmentos, em que cada fragmento inclui os dados necessários para renderizar um intervalo de 3 segundos correspondente do episódio de televisão. Em várias modalidades, o cache incluído em um servidor de borda pode armazenar um ou mais dos 560 fragmentos do item de mídia associado ao episódio de televisão de 28 minutos.
[017] Em várias modalidades, o sistema de distribuição de conteúdo pode incluir uma aplicação de pré-armazenamento em cache que identifica um ou mais itens de mídia para armazenar em cache em um servidor de borda. Quando armazenados em cache, uma aplicação de reprodução pode receber uma ou mais partes do item de mídia a partir do cache em vez do banco de dados de conteúdo, acelerando a reprodução no dispositivo de reprodução. A fim de usar o cache de forma eficiente para aumentar a eficiência da reprodução de múltiplos dispositivos de reprodução, o sistema de distribuição de conteúdo pode determinar quais itens de mídia devem ser armazenados no cache antes de serem solicitados por um dispositivo cliente e quais itens devem permanecer no banco de dados de conteúdo. Por preencher o cache com itens de mídia que provavelmente serão solicitados com frequência pelos dispositivos clientes que se conectam ao servidor de borda que inclui o cache, o sistema de distribuição de conteúdo pode usar com eficiência os recursos de memória limitados do cache. Em algumas modalidades, o sistema de distribuição de conteúdo também pode armazenar múltiplas versões de um item de mídia selecionado, onde cada item está associado a uma resolução de vídeo diferente ou são codificados em diferentes taxas de bits de transmissão contínua ("streaming").
[018] Em algumas modalidades, o sistema de distribuição de conteúdo da aplicação de pré-armazenamento em cache pode identificar uma ou mais seções de um determinado item de mídia para pré-armazenamento em cache em vez de pré-armazenamento em cache de todo o item de mídia. Por exemplo, a aplicação de pré-armazenamento em cache poderia identificar os dois minutos iniciais do item de mídia para pré-armazenamento em cache. Como outro exemplo, a aplicação de pré-armazenamento em cache pode analisar os dados de tráfego da semana anterior e determinar que os dispositivos clientes solicitaram uma ou mais seções particulares de um item de mídia com relativa mais frequência do que outras seções do mesmo item de mídia, que correspondem a cenas específicas (por exemplo, uma cena musical popular, sequência de ação, desempenho de destaque, etc.) . A aplicação de pré-armazenamento em cache poderia então identificar essas seções particulares do item de mídia, em vez de todo o item de mídia, para pré-armazenamento em cache no servidor de borda.
[019] Depois que uma seção particular de um item de mídia é identificada, a aplicação de pré-armazenamento em cache determina os fluxos de mídia associados ao item de mídia para armazenar em cache, e determina os fragmentos de dados incluídos que devem ser armazenados no cache. Em várias modalidades, cada fluxo de mídia associado ao item de mídia pode incluir conteúdo digital codificado em uma taxa de bits diferente. Para uma seção identificada do item de mídia, a aplicação de pré-armazenamento em cache pode determinar que os fragmentos correspondentes a essa seção precisam ser pré-armazenados em apenas um subconjunto dos fluxos de mídia associados ao item de mídia. Por exemplo, fragmentos apenas de fluxos de mídia codificados na taxa de bits mais alta e na segunda taxa de bits mais alta podem ser pré-armazenados em cache, com base nos padrões de acesso históricos e outros atributos associados ao item de mídia.
[020] Pelo menos uma vantagem tecnológica das técnicas divulgadas em relação à técnica anterior é que a capacidade de armazenamento limitada de um cache incluído em um servidor de borda é preenchida com fragmentos correspondentes a seções de itens de mídia que são mais prováveis de serem acessadas por clientes da infraestrutura de rede, iniciando assim a reprodução do item de mídia de maneira eficiente. Uma vez que os fragmentos a partir do cache, associados à seção relevante do item de mídia selecionado, tenham sido entregues ao dispositivo cliente, o servidor de distribuição de conteúdo pode começar a entregar fragmentos subsequentes na sequência a partir do armazenamento de dados do servidor de conteúdo. Embora o armazenamento de dados possa ser mais lento para o dispositivo cliente acessar os fragmentos subsequentes, a entrega anterior de fragmentos a partir do cache permite que o dispositivo cliente inicie a reprodução do item de mídia enquanto os fragmentos subsequentes estão sendo acessados e entregues a partir do armazenamento de dados. Além disso, o armazenamento de vários fragmentos correspondentes a uma seção particular de um item de mídia no cache permite que a rede de distribuição de conteúdo forneça reprodução adaptativa de forma eficiente, aprimorando os recursos de reprodução para uma variedade de cenários de reprodução e, assim, melhorando o desempenho para vários clientes visualizando um item de mídia particular acima do que os clientes experimentariam de outra forma quando as seções dos itens de mídia solicitados não são pré-armazenadas em cache.
Visão geral de sistema
[021] A Figura 1 ilustra o sistema de distribuição de conteúdo 100 configurado para implementar um ou mais aspectos da presente divulgação. Como mostrado, o sistema de distribuição de conteúdo 100 inclui, sem limitação, servidor de distribuição de conteúdo 110, dispositivo cliente 120 e servidor de controle 140. O servidor de distribuição de conteúdo 110 inclui banco de dados de conteúdo 112 e cache 114. O dispositivo cliente inclui buffer de conteúdo 124 e aplicação de reprodução 126. Servidor de controle 140 inclui a aplicação de pré-armazenamento em cache 142 e o banco de dados de atributos 144.
[022] Para fins explicativos, várias instâncias de objetos semelhantes são denotadas com números de referência que identificam o objeto e números adicionais que identificam a instância onde necessário. Além disso, o sistema de distribuição de conteúdo 100 inclui várias instâncias de dispositivos, mesmo quando não mostrado. Por exemplo, o sistema de distribuição de conteúdo 100 pode incluir vários servidores de distribuição de conteúdo 110 (por exemplo, 110-1, 110-2, etc.), dispositivos clientes 120 (por exemplo, 120-1, 120-2, etc.) ou servidores de controle 140 (por exemplo, 140-1, 140-2, etc.), e ainda estar dentro do escopo das modalidades divulgadas.
[023] Em várias modalidades, cada um dos servidores 110 e 140 pode incluir um ou mais dispositivos que incluem um processador e memória. Em várias modalidades, um único servidor pode operar como servidor de distribuição de conteúdo 110 e servidor de controle 140. Por exemplo, um único servidor (não mostrado) pode atuar como servidor de distribuição de conteúdo 110 e servidor de controle 140.
[024] O servidor de distribuição de conteúdo 110 armazena fluxos de mídia, que estão associados a uma biblioteca de itens de mídia. Além disso, o servidor de distribuição de conteúdo 110 recebe e responde a solicitações a partir de dispositivos clientes 120 para tais fluxos de mídia. Em várias modalidades, o servidor de distribuição de conteúdo 110 pode ser um servidor de borda que inclui banco de dados de conteúdo (DB) 112 e cache 114. O banco de dados de conteúdo 112 armazena fluxos de mídia associados a múltiplos itens de mídia. Em várias modalidades, um fluxo de mídia pode incluir dados de vídeo, dados de áudio, dados textuais, dados gráficos, metadados ou outros tipos de dados. Para um determinado item de mídia, o banco de dados de conteúdo 112 pode armazenar múltiplos fluxos de mídia associados ao item de mídia (referido neste documento como o "conjunto de fluxos de mídia associados ao item de mídia") . Em várias modalidades, cada fluxo de mídia no conjunto de fluxos de mídia associados a um determinado item de mídia pode incluir o mesmo conteúdo digital que é codificado em diferentes qualidades de reprodução. Por exemplo, um conjunto de fluxos de mídia associados a um determinado episódio de 28 minutos de uma série de televisão pode incluir um fluxo de mídia incluindo conteúdo codificado em uma primeira taxa de bits e outro fluxo de mídia incluindo conteúdo codificado em uma segunda taxa de bits. O conteúdo digital incluído em cada fluxo de mídia é representado como uma sequência contígua de fragmentos, onde cada fragmento inclui dados que são necessários para um reprodutor de mídia para renderizar um intervalo correspondente do item de mídia. Continuando com o exemplo acima, um determinado fluxo de mídia associado ao episódio de televisão de 28 minutos pode incluir uma sequência de 168 fragmentos, em que cada fragmento inclui os dados necessários para renderizar um intervalo de 10 segundos correspondente do episódio de televisão.
[025] O cache 114 é uma porção da memória volátil que armazena temporariamente fragmentos de fluxos de mídia associados a um ou mais itens de mídia. Cada fragmento de um fluxo de mídia armazenado no cache está associado a um cabeçalho de cache que especifica vários atributos do fragmento armazenado. Por exemplo, um cabeçalho de cache para um determinado fragmento pode incluir um valor de Max-Age que especifica por quanto tempo o fragmento é válido enquanto armazenado no cache 114. O cabeçalho de cache também pode incluir um identificador de ativo único (UAID) que está associado a um determinado item de mídia que corresponde ao fluxo de mídia.
[026] Em sistemas anteriores que pré-armazenam em cache itens de mídia, um servidor de origem normalmente atribui um valor de Max-Age padrão (por exemplo, 7 dias) a todos os itens de mídia enviados para o cache. Assim que um item de mídia for armazenado no cache pelo tempo definido pelo valor de Max-Age, o item de mídia será marcado como "obsoleto". Ser marcado como obsoleto faz com que o sistema armazenamento em cache responda a uma solicitação para o item de mídia por comunicar com a fonte do item de mídia para verificar o status do item de mídia (por exemplo, se a versão armazenada em cache permanece a versão atual). Além disso, uma vez que um item de mídia é marcado como obsoleto, o item de mídia torna-se elegível para exclusão se for necessário espaço no sistema armazenamento em cache.
[027] Embora os sistemas anteriores definam um valor de Max-Age padrão que é aplicado a todos os itens de mídia pré-armazenados em cache, em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode usar o conhecimento do conteúdo e os itens de mídia, juntamente com uma taxa de atualização conhecida, para aplicar um Max-Age específico de sistema que informa ao cache 114 para armazenar um item de mídia particular além de um valor de Max-Age inicial que foi especificado pela fonte de conteúdo. Como resultado, a fonte de conteúdo pode especificar um valor de Max-Age de 7 dias para um determinado objeto de mídia, enquanto a aplicação de pré-armazenamento em cache 142 pode aplicar um valor de Max-Age específico de 30 dias a um determinado objeto de mídia. Em vez de selecionar um valor de Max-Age padrão para aplicar a todos os itens de mídia pré-armazenados em cache, como em sistemas anteriores, os itens de mídia armazenados no cache 114 podem ser atribuídos a um valor de Max-Age que é determinado a partir da análise de conteúdo e metadados associados. Desta maneira, um determinado item de mídia recebe um valor de Max-Age personalizado que aumenta a eficiência do sistema de distribuição de conteúdo 100. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode calcular o valor de Max-Age personalizado para um determinado item de mídia pré-armazenado em cache por multiplicar o valor de Max-Age atualmente atribuído por um valor constante (por exemplo, multiplicar o valor de Max-Age de 7 dias atribuído por três para produzir um valor de 21 dias). Em outro exemplo, a aplicação de pré-armazenamento em cache 142 poderia atribuir ao objeto de mídia um valor de Max-Age personalizado que estende o valor de Max-Age a um valor fixo (por exemplo, atribuir ao item de mídia um valor de Max-Age de 1 ano).
[028] O servidor de controle 140 opera em conjunto com o servidor de distribuição de conteúdo 110 para monitorar e preencher seletivamente o cache 114 com fragmentos de fluxos de mídia a partir do banco de dados de conteúdo 112. Em várias modalidades, o servidor de controle 140 pode gerar um grupo de fluxos de mídia candidatos para preencher o cache 114, onde cada fluxo de mídia candidato satisfaz uma probabilidade de limiar de ser solicitado por dispositivos clientes 120. Em tais casos, o servidor de controle 140 pode implementar a aplicação de pré-armazenamento em cache 142 para selecionar fragmentos particulares dos fluxos de mídia candidatos a fim de preencher o cache 114 de forma eficiente. Em outras modalidades, o grupo de fluxos de mídia candidatos pode, adicional ou alternativamente, ser uma lista de fluxos disponíveis que são classificados de acordo com uma probabilidade de que um fluxo de mídia candidato será solicitado pelo(s) dispositivo(s) cliente(s) 120, sem aplicação de um limiar.
[029] O servidor de controle 140 inclui a aplicação de pré-armazenamento em cache 142 e o banco de dados de atributos 144. O banco de dados de atributos 144 armazena vários atributos associados à biblioteca de itens de mídia para os quais os fluxos de mídia são armazenados no banco de dados de conteúdo 112. Em várias modalidades, para um determinado item de mídia, os atributos podem incluir padrões de acesso históricos que são determinados com base em solicitações recebidas anteriormente para o item de mídia ou itens de mídia relacionados. Esses padrões podem incluir, mas não estão limitados a, uma frequência com a qual um item de mídia foi solicitado, uma frequência com a qual uma seção de um item de mídia foi solicitada, uma frequência com a qual itens de mídia pertencentes a um único gênero ou uma única série associada com um item de mídia foram solicitados, ou uma frequência com a qual fluxos de mídia individuais correspondentes a um item de mídia foram solicitados. Para um determinado item de mídia, os atributos também podem incluir atributos de conteúdo, como gêneros, membros do elenco, seções importantes do item de mídia, etc.
[030] A aplicação de pré-armazenamento em cache 142 identifica itens de mídia particulares e seções de itens de mídia para pré-armazenamento em cache seletivamente no cache 114, antes de dispositivos clientes 120 solicitarem esses itens de mídia ou seções particulares dos itens de mídia. Uma vez que uma seção particular de um item de mídia é identificada, a aplicação de pré-armazenamento em cache 142 determina fluxos de mídia que correspondem ao item de mídia, onde os fluxos de mídia incluem fragmentos a serem armazenados no cache 114. Como discutido acima, em várias modalidades, diferentes fluxos de mídia associados ao item de mídia pode incluir conteúdo digital codificado em taxas de bits diferentes. Para uma seção do item de mídia identificado para pré-armazenamento em cache, a aplicação de pré-armazenamento em cache 142 pode determinar que os fragmentos correspondentes à seção só precisam ser pré-armazenados em cache a partir de um subconjunto dos fluxos de mídia associados ao item de mídia. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode determinar, com base em padrões de atributos associados ao item de mídia, que apenas os fragmentos incluídos em um fluxo de mídia codificado na taxa de bits mais alta devem ser pré-armazenados em cache.
[031] As operações da aplicação de pré-armazenamento em cache 142 com relação à identificação de itens de mídia para pré-armazenamento em cache, seções dos itens de mídia identificados para pré-armazenamento em cache, e fluxos de mídia a partir dos quais fragmentos correspondentes às seções identificadas são pré-armazenados em cache, são descritas em maiores abaixo em conjunto com as Figuras 2-5.
[032] O dispositivo cliente 120 se comunica com o servidor de distribuição de conteúdo 110 para descarregar conteúdo, como fluxos de mídia associados a múltiplos itens de mídia. Em várias modalidades, o dispositivo cliente 120 pode ser um dispositivo capaz de permitir a reprodução de transmissão contínua ("streaming") de um fluxo de mídia por meio da aplicação de reprodução 126. Em várias modalidades, um ou mais dispositivos clientes 120 podem incluir sistemas de computador, decodificadores (STBs), computadores móveis, telefones inteligentes, tablets, sistemas de videogame de console, sistemas de videogame portáteis, gravadores de vídeo digital (DVRs), reprodutores de DVD, TVs digitais conectadas, dispositivos de transmissão contínua ("streaming") de mídia dedicados ("streamboxes") ou qualquer outra plataforma de computação tecnicamente viável que tenha conectividade de rede via rede 150 e é capaz de apresentar conteúdo (por exemplo, texto, imagens, áudio, vídeo, etc.) para um usuário.
[033] A aplicação de reprodução 126 realiza várias funções de reprodução associadas a itens de conteúdo digital, incluindo um ou mais fluxos de mídia que correspondem a itens de mídia particulares. Em várias modalidades, a aplicação de reprodução 126 realiza uma ou mais funções, como exibir uma interface gráfica de usuário (GUI) para seleção de item de mídia ou causar reprodução de vídeo de fluxos de mídia associados a itens de mídia selecionados. A GUI fornece um mecanismo para interação do usuário com o dispositivo cliente 120. Pessoas versadas na técnica reconhecerão vários sistemas operacionais ou interfaces de usuário que são adequados para incorporação na aplicação de reprodução 126. Em várias modalidades, o servidor de controle 140 pode executar a aplicação de reprodução 126 em ordem para solicitar ou receber conteúdo a partir do servidor de distribuição de conteúdo 110 através da rede 150. Por exemplo, em resposta a uma solicitação de usuário para um item de mídia particular, a aplicação de reprodução 126 pode fazer com que o dispositivo cliente 120 envie uma solicitação ao servidor de distribuição de conteúdo 110 para um item de mídia específico. Além disso, em algumas modalidades, o servidor de controle 140 pode executar a aplicação de reprodução 126 a fim de interpretar os dados e, em seguida, apresentar o conteúdo por meio de um dispositivo de exibição, ou um ou mais dispositivos de entrada/saída (E/S) de usuário.
[034] O buffer de conteúdo 124 é uma porção da memória, incluída em um subsistema de memória do dispositivo cliente 120, que armazena temporariamente fragmentos de fluxos de mídia. Em operação, a aplicação de reprodução 126 faz com que fragmentos de um fluxo de mídia sejam descarregados para uma fila de primeiro a entrar, primeiro a sair (FIFO) no buffer de conteúdo 124. Em várias modalidades, a aplicação de reprodução 126 pode carregar uma sequência de um ou mais fragmentos de um fluxo de mídia no buffer de conteúdo 124, onde decodificadores de vídeo, decodificadores de áudio ou outros processadores de conteúdo associados à aplicação de reprodução 126 leem unidades de dados a partir do buffer de conteúdo 124 e renderizam os dados em uma sequência de quadros de vídeo do item de mídia.
Pré-armazenamento em cache seletivo de itens de mídia
[035] A Figura 2 é uma ilustração mais detalhada do banco de dados de conteúdo 112 e cache 114 da Figura 1, de acordo com várias modalidades. Conforme discutido acima, o banco de dados de conteúdo 112 armazena conteúdo digital associado a qualquer número de itens de mídia, como item de mídia 230, 240 e 250, em memória não volátil.
[036] Em algumas modalidades, cada item de mídia está associado a um identificador de ativo único (UAID). Além disso, cada item de mídia 230, 240, 250 está associado a um ou mais fluxos de mídia (por exemplo, fluxos de mídia 230A-230C associados ao item de mídia 230) que permitem a reprodução de transmissão contínua ("streaming") do item de mídia em taxas de bits de transmissão contínua ("streaming") correspondentes. Por exemplo, o fluxo de mídia 230A pode ser uma versão do item de mídia 230 codificado em uma taxa de bits alta, enquanto o fluxo de mídia 230B é codificado em uma taxa de bits média e o fluxo de mídia 230C é codificado em uma taxa de bits baixa. Cada fluxo de mídia 230A-230C, 240A-240B, 250A-250D é armazenado como uma sequência de fragmentos. Uma determinada seção do item de mídia, que se estende por um intervalo de tempo especificado, corresponde a um determinado conjunto de fragmentos que está incluído em cada um dos fluxos de mídia associados. Por exemplo, quando cada fragmento corresponde a um intervalo de tempo de três segundos de um item de mídia, uma versão da primeira seção de trinta segundos do item de mídia 230 pode ser armazenada como fragmentos 232(1), 234(1), 236(1) do fluxo de mídia 230A.
[037] Em um exemplo, o banco de dados de conteúdo 112 pode armazenar diferentes episódios de televisão de uma série como itens de mídia separados 230, 240, 250. Para um determinado episódio, como o item de mídia 230, o banco de dados de conteúdo 112 pode armazenar três fluxos de mídia distintos 230A, 230B e 230C. Cada um dos fluxos de mídia 230A-230C, quando transmitido ao dispositivo cliente 120 em tempo real, permite a reprodução de transmissão contínua ("streaming") em diferentes taxas de bits de transmissão contínua ("streaming"), conforme especificado na Tabela 1.
Tabela 1: Taxas de bits de transmissão contínua
("streaming") de fluxos de mídia para o item de mídia 230
Figure img0001
[038] Cada fluxo de mídia 230A-230C inclui uma sequência de fragmentos contíguos que correspondem a uma sequência de intervalos contíguos do item de mídia 230. Por exemplo, o fragmento 232(1) pode incluir dados necessários para a reprodução de transmissão contínua ("streaming") do primeiro intervalo de três segundos do item de mídia 230 a uma taxa de bits de transmissão contínua ("streaming") de 3.000 Kbps. Alem disso, o fragmento 234(2) pode ser reproduzido sequencialmente após o fragmento 234(1). Em tais casos, o fragmento 234(2) pode incluir dados necessários para a reprodução de transmissão contínua ("streaming") do segundo intervalo de três segundos do item de mídia 230, subsequente ao primeiro intervalo de três segundos do item de mídia 230, a uma taxa de bits de transmissão contínua ("streaming") de 3.000 Kbps.
[039] Em várias modalidades, cada fluxo de mídia 230A-230C pode ser armazenado como uma sequência que compreende milhares de fragmentos contíguos. Por exemplo, quando o item de mídia 230 é um episódio de 90 minutos de um programa de televisão, o fluxo de mídia 230A pode ser armazenado como uma sequência de 1.800 fragmentos contíguos (por exemplo, 232(1), 234(1), 236(1), etc..), cada fragmento incluindo dados necessários para reprodução de transmissão contínua ("streaming") de intervalos de seis segundos do item de mídia 230. Em algumas modalidades, cada fragmento incluído em um fluxo de mídia pode ser armazenado com um identificador correspondente. O identificador pode incluir o identificador de ativo único (UAID) do item de mídia particular correspondente ao fluxo de mídia que inclui o fragmento. Por exemplo, o item de mídia 240 pode ter um valor de UAID de "7358". Em tais casos, cada fragmento 242, 244 é armazenado em associação com o valor de UAID de 7358.
[040] Em operação, a aplicação de pré-armazenamento em cache 142 analisa atributos de itens de mídia armazenados no banco de dados de atributos 144, a fim de identificar um ou mais itens de mídia (e uma ou mais seções dos itens de mídia) para pré-armazenamento em cache. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar atributos de itens de mídia, como dados de tráfego, dados de registro, metadados, etc. associados a múltiplos itens de mídia. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode determinar a partir da análise a popularidade do item de mídia 230 por um determinado período de tempo. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode, com base nesta determinação, primeiro identificar o item de mídia 230 como um item de mídia candidato que pode ser pré-armazenado em cache 114 em um período de tempo subsequente.
[041] Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 também pode analisar atributos de seções particulares dos itens de mídia (por exemplo, analisar dados de tráfego para solicitações de cenas específicas, identificar atores ou personagens incluídos em uma cena, etc.). Em tais casos, a aplicação de pré-armazenamento em cache 142 poderia identificar uma seção particular do item de mídia 230 (por exemplo, a primeira seção de cinco minutos) como uma seção candidata para pré-armazenamento em cache. Por exemplo, a aplicação de pré-armazenamento em cache 142 poderia analisar dados de tráfego e, com base na análise da construção de URL de URLs solicitados com frequência, identificar uma seção de três minutos do item de mídia 230 como um candidato para pré-armazenamento em cache. A aplicação de pré-armazenamento em cache 142 pode, então, determinar um ou mais fragmentos que correspondem à seção de três minutos identificada.
[042] Em várias modalidades, o banco de dados de atributos 144 armazena padrões de acesso associados a fluxos de mídia, ou porções dos mesmos, armazenados no cache 114 a qualquer momento. Esses padrões de acesso podem ser reunidos com base na identificação dos fragmentos usados mais frequentemente dos fluxos de mídia, os fragmentos usados menos recentemente (LRU) dos fluxos de mídia, o número de falhas de acesso, etc. Os padrões de acesso podem ser horodatados, de modo que padrões de acesso históricos ocorridos na última hora, 24 horas, semana anterior, mês anterior, etc. possam ser determinados.
[043] Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar padrões de acesso e outros atributos que são armazenados no banco de dados de atributos 144 a fim de identificar um conjunto de itens de mídia candidatos para pré-armazenamento em cache. Em várias modalidades, os outros atributos associados a um item de mídia podem incluir metadados associados a uma representação de item de mídia, como componentes de conteúdo (por exemplo, elenco, equipe, personagens, cenário, data de produção, linguagem falada, etc.), e metadados associado a solicitações para um fluxo de mídia particular (por exemplo, região geográfica, tipo de dispositivo, canal de comunicação, etc.).
[044] Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar padrões de acesso (por exemplo, registros de IDs de ativo de itens de mídia acessados) e determinar um valor de prioridade de armazenamento em cache para cada item de mídia. O valor de prioridade de armazenamento em cache pode, por exemplo, ser, ou representar, pelo menos um de uma frequência com a qual um item de mídia foi acessado durante um período de tempo anterior, um valor de probabilidade que um item de mídia será acessado em um determinado período de tempo futuro, ou outro valor que representa um valor de prioridade relativa que o item de mídia pode receber para ser colocado em um cache, em relação a outros itens de mídia. Além de determinar um valor de prioridade de armazenamento em cache para um item de mídia, a aplicação de pré-armazenamento em cache 142 pode analisar ainda padrões de acesso para renderizações/versões específicas de itens de mídia para gerar valores de prioridade de armazenamento em cache específicos para essas renderizações/versões.
[045] Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode identificar um conjunto de itens de mídia candidatos para pré-armazenamento em cache. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode analisar padrões de acesso e gerar uma probabilidade de limiar de que um determinado item de mídia será solicitado para reprodução subsequente. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode limitar a quantidade de itens de mídia candidatos incluídos no conjunto por selecionar apenas itens de mídia cujo valor de probabilidade de acesso (que pode ser o mesmo que seu valor de prioridade de armazenamento em cache) excede o valor de limiar. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode preencher o cache usando versões de um ou mais itens de mídia que estão incluídos no conjunto de itens de mídia candidatos. Adicionalmente ou alternativamente, a aplicação de pré-armazenamento em cache 142 também pode incluir uma capacidade de cache disponível como um fator na determinação de modo que, todos os itens de mídia cujos valores de prioridade de armazenamento em cache excedem o valor de limiar serão selecionados para armazenamento em cache.
[046] Por exemplo, a aplicação de pré-armazenamento em cache 142 pode determinar o tamanho do cache 114 e determinar que o cache 114 pode armazenar porções de 1% dos itens de mídia armazenados no banco de dados de conteúdo 112. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode definir uma quantidade de corte que representa um número de itens de mídia (por exemplo, os vinte itens de mídia mais populares). A aplicação de pré-armazenamento em cache 142 poderia, então, selecionar para armazenar em cache os itens de mídia de maior prioridade até que a quantidade de corte seja alcançada. Em outro exemplo, os itens de mídia podem ser classificados de acordo com um valor de prioridade de armazenamento em cache, como a probabilidade de que um determinado item de mídia seja solicitado por uma quantidade de usuários em um período subsequente (por exemplo, 10.000 solicitações em uma semana), ou uma porcentagem do número total de itens de mídia armazenados no banco de dados de conteúdo 112 (por exemplo, os 10% principais itens de mídia armazenados).
[047] Em várias modalidades, ao definir um valor de limiar e uma quantidade de corte, a aplicação de pré-armazenamento em cache 142 pode determinar se um item de mídia particular deve ser incluído em um conjunto de itens de mídia candidatos para pré-armazenamento em cache com base em se seu valor de prioridade de armazenamento em cache excede o valor de limiar. A aplicação de pré-armazenamento em cache 142 pode então preencher o cache 114 com itens de mídia a partir do conjunto de itens de mídia candidatos até que a quantidade de corte seja atingida. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar atributos incluídos no banco de dados de atributos 144 a fim de determinar um grupo de itens de mídia que foram acessados frequentemente por um ou mais dispositivos clientes 120 ao longo de um período de tempo específico. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode, então, selecionar, a partir do grupo de itens de mídia candidatos, um número de itens de mídia acima do valor de corte, onde o corte pode ser definido com base na capacidade de cache, tamanho de itens de mídia, ou outros fatores.
[048] Em várias modalidades, a aplicação de pré- armazenamento em cache 142 também pode identificar itens de mídia que têm atributos de conteúdo que estão correlacionados com outros itens de mídia que foram frequentemente acessados por dispositivos clientes 120. Por exemplo, quando os padrões de acesso de um episódio de uma série de televisão indicam que o episódio é acessado com frequência mais alta em relação a outros itens de mídia, então a aplicação de pré-armazenamento em cache 142 poderia determinar que múltiplos itens de mídia compartilhando atributos de conteúdo comuns com este episódio da série de televisão (por exemplo, outros episódios da série de televisão, itens de mídia com membros do elenco ou personagens comuns, etc.) são semelhantes ao item de mídia e, portanto, têm uma probabilidade semelhante de serem solicitados por dispositivos clientes 120 no futuro. Alguns outros atributos de conteúdo podem ser, por exemplo, itens de mídia que compartilham um gênero com o episódio da série de televisão, itens de mídia compartilhando anos de produção comuns, etc. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 inclui, no conjunto de itens de mídia candidatos, itens de mídia que compartilham atributos de conteúdo com os N principais itens de mídia acessados com mais frequência.
[049] Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode priorizar o pré-armazenamento em cache de múltiplas versões de um item de mídia particular 230 em vez de pré-armazenamento em cache de itens de mídia adicionais. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode fazer com que o cache 114 seja preenchido com fragmentos de mídia a partir de múltiplos fluxos de mídia (por exemplo, fragmentos a partir de fluxos de mídia 250A, 250B, 250C, 250D do item de mídia 250) ao longo do armazenamento de fragmentos a partir de itens de mídia adicionais. Alternativamente, a aplicação de pré-armazenamento em cache 142 pode priorizar o pré-armazenamento em cache de múltiplos itens de mídia. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode selecionar fragmentos a partir de menos fluxos de mídia (por exemplo, fragmentos apenas a partir de fluxos de mídia 250B, 250C do item de mídia 250) , a fim de reservar espaço para outros itens de mídia (por exemplo, fragmentos a partir de fluxos de mídia 240A, 240B do item de mídia 240).
[050] Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode combinar padrões relacionados a diferentes fragmentos de um fluxo de mídia, como um número de vezes que cada fragmento foi acessado a partir do cache 114, a fim de gerar padrões relacionados ao fluxo de mídia ou item de mídia como um todo. Em particular, a aplicação de pré-armazenamento em cache 142 pode combinar padrões para fragmentos que compartilham um UAID comum. Por exemplo, o banco de dados de atributos 144 pode incluir padrões relacionados aos fragmentos usados mais recentemente ou os fragmentos usados menos recentemente no cache 114 durante a semana anterior. A aplicação de pré-armazenamento em cache 142 poderia analisar os padrões e determinar que o fragmento usado mais frequentemente era o fragmento 254(3). A aplicação de pré-armazenamento em cache 142 poderia então recuperar o UAID para o fragmento 254(3), que é o UAID para o item de mídia 250. A aplicação de pré-armazenamento em cache 142 também pode determinar que o UAID é compartilhado pelos fragmentos 254(1), 254(2), 254(4). Em tais casos, a aplicação de pré-armazenamento em cache 142 pode então analisar os padrões associados aos fragmentos 254(1) - 254(4) a fim de determinar os padrões de acesso com o item de mídia 250 como um todo. A aplicação de pré-armazenamento em cache 142 pode, então, identificar o item de mídia 250 como um candidato para o pré-armazenamento em cache 114 para a semana subsequente.
[051] Uma vez que o conjunto de itens de mídia candidatos é identificado, a aplicação de pré-armazenamento em cache 142 determina a(s) seção(ões) dentro de cada conjunto de itens de mídia candidatos ao pré-armazenamento em cache. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode determinar que os primeiros N minutos de cada um dos itens de mídia candidatos devem ser pré-armazenados em cache. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode determinar que, para um determinado item de mídia, uma ou mais seções não contíguas devem ser pré-armazenadas em cache. Por exemplo, se o item de mídia 240 for um filme musical, então a aplicação de pré-armazenamento em cache 142 pode selecionar para pré-armazenamento em cache uma ou mais seções do item de mídia 240 que incluem cenas musicais populares (por exemplo, as sequências 00:24-04:25, 12:30-15:42 e 57:10-1:01:35 de um filme de 1:45:20).
[052] Para cada seção de um determinado item de mídia identificado para pré-armazenamento em cache, a aplicação de pré-armazenamento em cache 142 identifica fragmentos correspondentes a partir de múltiplos fluxos de mídia que devem ser armazenados no cache 114. Para facilitar a discussão, a discussão a seguir assume que os primeiros trinta segundos de item de mídia 230 é uma seção do item de mídia 230 que a aplicação de pré-armazenamento em cache 142 identificou para pré-armazenamento em cache. A aplicação de pré-armazenamento em cache 142 seleciona um ou mais dos fluxos de mídia 230A, 230B e 230C, para pré-armazenamento em cache. A partir desses fluxos de mídia, a aplicação de pré-armazenamento em cache 142 determina fragmentos, correspondentes aos primeiros trinta segundos do item de mídia 230, para armazenar no cache 114.
[053] Em particular, em algumas modalidades, para selecionar um ou mais dos fluxos de mídia 230A, 230B e 230C, a aplicação de pré-armazenamento em cache 142 pode analisar possíveis cenários de reprodução associados à transmissão de fragmentos de fluxos de mídia para dispositivos clientes 120. Um cenário de reprodução especifica parâmetros operacionais relacionados a uma transmissão hipotética de um fluxo de mídia para um dispositivo cliente 120. Tais parâmetros operacionais incluem, mas não estão limitados a, região geográfica (por exemplo, país, área regional definida, cidade, bairro, etc.), resolução máxima de vídeo (por exemplo, SD, HD, UHD, etc.), tipo de dispositivo do dispositivo cliente 120 (por exemplo, desktop, dispositivo móvel, decodificador, etc.), largura de banda de comunicação, tempo de armazenamento em buffer preferido do usuário, provedor de comunicações para dispositivo cliente 120, e assim por diante.
[054] Em algumas modalidades, um cenário de reprodução pode ser criado por um usuário, como um administrador de sistema, do servidor de controle 140. Em modalidades alternativas, a aplicação de pré-armazenamento em cache 142 pode analisar dados históricos, como registros de sessões de reprodução anteriores, para identificar os parâmetros de operação que são frequentemente encontrados pelo sistema de distribuição de conteúdo 100. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar dados históricos a fim de gerar parâmetros operacionais associados a condições que são frequentemente encontradas por dispositivos móveis na região do Sul da Ásia tentando transmitir item de mídia 240 com uma largura de banda de comunicação de 1.000 Kbps. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode gerar um cenário de reprodução que inclui a região do Sul da Ásia e largura de banda de comunicação de 1.000 Kbps como parâmetros operacionais.
[055] Para um determinado cenário de reprodução, a aplicação de pré-armazenamento em cache 142 analisa os parâmetros operacionais especificados pelo cenário de reprodução para o item de mídia identificado para pré-armazenamento em cache. A aplicação de pré-armazenamento em cache 142 analisa o cenário de reprodução dado a fim de identificar um fluxo de mídia particular correspondente ao item de mídia identificado para pré-armazenamento em cache que, para o cenário de reprodução, fornece a melhor experiência de visualização. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode determinar a taxa de bits de transmissão contínua ("streaming") mais alta possível suportada pelos parâmetros operacionais especificados por um determinado cenário de reprodução. Ao determinar a taxa de bits de transmissão contínua ("streaming") mais alta possível que poderia ser entregue sob tais condições operacionais, a aplicação de pré-armazenamento em cache 142 poderia então identificar um fluxo de mídia que pode ser transmitido em ou abaixo da taxa de bits de transmissão contínua ("streaming") mais alta determinada e selecionar o fluxo de mídia identificado para pré-armazenamento em cache.
[056] Como outro exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar um cenário de reprodução que inclui parâmetros operacionais associados a um cenário de transmissão contínua ("streaming") virtual. Em várias modalidades, o cenário de reprodução pode ser gerado a partir de dados agregados para criar um cenário de transmissão contínua ("streaming") virtual, onde os parâmetros operacionais do cenário de reprodução estão associados a uma pluralidade de sessões de transmissão contínua ("streaming") anteriores conduzidas por uma pluralidade de usuários. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar um cenário de transmissão contínua ("streaming") virtual que inclui um dispositivo de transmissão contínua ("streaming") capaz de UHD solicitando a versão do item de mídia 230 com a resolução de vídeo mais alta, onde a largura de banda de comunicação do dispositivo de transmissão contínua ("streaming") capaz de UHD recebendo dados é 2.000 Kbps. Os parâmetros operacionais também podem incluir valores, como uma preferência para minimizar o tempo de armazenamento em buffer antes da reprodução. A aplicação de pré-armazenamento em cache 142 pode analisar a combinação de parâmetros operacionais e determinar que a taxa de bits de transmissão contínua ("streaming") máxima sob tais condições é 1.800 Kbps. Com base na taxa de bits de transmissão contínua ("streaming") máxima determinada, a aplicação de pré-armazenamento em cache 142 poderia então determinar que o fluxo de mídia 230B, codificado a uma taxa de bits de transmissão contínua ("streaming") de 1.300 Kbps, forneceria a melhor qualidade de vídeo para tal cenário de reprodução. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 também pode identificar o fluxo de mídia 230C, codificado em 500 Kbps e tendo uma fidelidade visual inferior, como vídeo que permite o início mais rápido da reprodução para o cenário de reprodução. Neste caso, o dispositivo de transmissão contínua ("streaming") capaz de UHD pode inicialmente recuperar fragmentos do fluxo de mídia 230C para iniciar a reprodução antes de fazer a transição para receber fragmentos do fluxo de mídia 230C para porções subsequentes do item de mídia.
[057] Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar vários cenários de reprodução a fim de identificar qual(is) de fluxo(s) de mídia 230A, 230B e 230C melhor satisfaz um ou mais cenários de reprodução. Apenas para fins de discussão, a seguinte descrição assume que a aplicação de pré-armazenamento em cache 142 identifica o fluxo de mídia 230C para pré-armazenamento em cache dos primeiros trinta segundos do item de mídia correspondente 230. Conforme discutido acima, cada seção do item de mídia corresponde a um ou mais fragmentos incluídos em um determinado fluxo de mídia associado ao item de mídia. Neste exemplo, os primeiros trinta segundos do item de mídia 230 correspondem aos fragmentos 232, 234 e 236. Consequentemente, a aplicação de pré-armazenamento em cache 142 armazena em cache 114 cópias dos fragmentos 232(3) , 234(3) e 236(3), que correspondem aos primeiros trinta segundos do item de mídia 230.
[058] Em várias modalidades, depois de usar um cenário de reprodução para selecionar um primeiro fluxo de mídia correspondente a um item de mídia identificado para pré-armazenamento em cache, a aplicação de pré-armazenamento em cache 142 pode selecionar para pré-armazenamento em cache fluxos de mídia adicionais que também correspondem ao item de mídia identificado para pré-armazenamento em cache. Continuando o exemplo acima, a aplicação de pré-armazenamento em cache 142 pode identificar inicialmente os fragmentos de pré-armazenamento em cache 232(3), 234(3) e 236(3), que estão incluídos no fluxo de mídia 230C e correspondem aos primeiros trinta segundos de item de mídia 230. A aplicação de pré-armazenamento em cache 142 poderia então identificar para pré-armazenamento em cache fragmentos adicionais que estão incluídos em um ou mais dos fluxos de mídia 230A e 230B e correspondem à mesma seção do item de mídia identificado para pré-armazenamento em cache. Mais especificamente, além do fragmento 232(3), a aplicação de pré-armazenamento em cache 142 pode selecionar um ou mais dos fragmentos correspondentes 232(1) e 232(2) para pré-armazenamento em cache. Da mesma forma, além do fragmento 234(3), a aplicação de pré-armazenamento em cache 142 poderia selecionar um ou mais dos fragmentos correspondentes 234(1) e 234(2) para pré-armazenamento em cache.
[059] Em algumas modalidades, os fragmentos que são armazenados no cache 114 que correspondem aos fragmentos de diferentes fluxos de mídia do item de mídia, ou renderização de um item de mídia, podem ser ligados logicamente como um conjunto de fragmentos. Em tais casos, a aplicação de reprodução 126 pode receber pelo menos um fragmento incluído no conjunto de fragmentos durante a reprodução.
[060] Por exemplo, a aplicação de pré-armazenamento em cache 142 pode selecionar o fluxo de mídia 230A e o fluxo de mídia 230C para pré-armazenamento em cache dos primeiros trinta segundos do item de mídia 230. O cache 114 pode armazenar a seção pré-armazenada em cache 260 para fragmentos que se combinam para corresponder aos primeiros trinta segundos do item de mídia 230. Em algumas modalidades, a seção pré-armazenada em cache 260 pode incluir conjuntos de fragmentos separados 262, 264 que correspondem a seções distintas. Por exemplo, o fragmento 232(1) e o fragmento 232(3) podem ser armazenados em cache 114 e ligados logicamente como o conjunto de fragmentos 262, e o fragmento 234(1) e o fragmento 234(3) podem ser armazenados em cache 114 e ligados logicamente como conjunto de fragmentos 264. Como outro exemplo, a aplicação de pré-armazenamento em cache 142 seleciona o fluxo de mídia 250B, o fluxo de mídia 250C e o fluxo de mídia 250D para pré-armazenamento em cache da primeira trigésima segunda seção do item de mídia 250. Em tal exemplo, o fragmento 252(2), o fragmento 252(3) e o fragmento 254(4) são armazenados em cache 114 e ligados logicamente como o conjunto de fragmentos 272, e o fragmento 254(2), o fragmento 254(3) e o fragmento 254(4) são armazenados em cache 114 e logicamente ligados como o conjunto de fragmentos 274. Os conjuntos de fragmentos 272 e 274, entre outros, constituem a seção pré-armazenada em cache 270 que corresponde à primeira trigésima segunda seção do item de mídia 250 que foi identificada para pré-armazenamento em cache.
[061] Em algumas modalidades, o servidor de controle 140 pode incluir uma graduação de taxa de bits. A graduação de taxa de bits pode ser uma tabela que lista, para cada fluxo de mídia correspondente a cada item de mídia, a resolução de vídeo para o fluxo de mídia, e a taxa de bits de transmissão contínua ("streaming") do fluxo de mídia quando renderizado pela aplicação de reprodução 126. Em tais casos, após usar um cenário de reprodução para selecionar um primeiro bloco para pré-armazenamento em cache, a aplicação de pré-armazenamento em cache 142 refere-se à graduação de taxa de bits a fim de selecionar um ou mais fragmentos adicionais para pré-armazenamento em cache. Por exemplo, uma graduação de taxa de bits listando fluxos de mídia 230A-230C para o item de mídia 230 poderia listar as respectivas resoluções de vídeo para fluxos de mídia 230A-230C, bem como as respectivas taxas de bits de fluxo em que os fluxos de mídia 230A-230C são renderizados. A Tabela 2 mostra um exemplo de graduação de taxa de bits para fluxos de mídia 230A-230C.
Tabela 2: Graduação de taxa de bits de fluxos de mídia para o item de mídia 230
Figure img0002
[062] A graduação de taxa de bits da Tabela 2 especifica que o fluxo de mídia 230C, que inclui os fragmentos 232(1), 234(1), etc., tem uma resolução de vídeo de 1080p e é codificado em uma taxa de bits de transmissão contínua ("streaming") de 3.000 Kbps. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode referir-se à graduação de taxa de bits da Tabela 2, a fim de identificar um ou mais fragmentos adicionais, se houver, a partir dos fluxos de mídia 230A e 230B, para armazenamento no cache 114. Em alguns exemplos, a aplicação de pré-armazenamento em cache 142 pode determinar que os fragmentos adicionais 232(3) e 234(3) devem ser pré-armazenados em cache, onde a seleção dos fragmentos 232(1), 232(3), 234(1), 234(3) pré-armazena em cache uma combinação apropriada de taxas de bits de alta qualidade e média qualidade.
[063] Em algumas modalidades, uma vez que um conjunto de fragmentos é armazenado no cache 114, a aplicação de pré-armazenamento em cache 142 pode definir ou modificar as propriedades de cada fragmento armazenado no conjunto de fragmentos a fim de evitar que esses fragmentos sejam excluídos no cache prematuramente. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode analisar dinamicamente ambos o banco de dados de conteúdo 112 e o cache 114 a fim de gerenciar o conteúdo do cache 114, garantindo que o cache 114 seja preenchido com dados que provavelmente serão solicitados por dispositivos clientes 120 .
[064] Por exemplo, a aplicação de pré-armazenamento em cache 142 pode definir ou ajustar dinamicamente o valor de Max-Age que está incluído em um cabeçalho de cache associado a um bloco armazenado no cache 114. Em alguns casos, a aplicação de pré-armazenamento em cache 142 pode inicialmente modificar o valor de Max-Age associado a um determinado fragmento de um valor padrão de 600 segundos (10 minutos) para um valor modificado de 604.800 segundos (1 semana) , a fim de evitar que o fragmento seja sujeito a expiração ou exclusão de curto prazo. A aplicação de pré-armazenamento em cache 142 poderia subsequentemente modificar um valor de Max-Age para o bloco do valor modificado de 604.800 segundos para um novo valor de 60 segundos, a fim de tornar o bloco sujeito à análise de recurso menos usado e ser sobrescrito. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode periodicamente (por exemplo, em intervalos de hora em hora, diários ou semanais) analisar os fragmentos armazenados no cache 114 e ajustar os valores de Max-Age de fragmentos menos populares, a fim de tornar os fragmentos sujeitos à expiração.
[065] A Figura 3 é uma ilustração mais detalhada do cache 114 da Figura 2, de acordo com várias modalidades. Como mostrado, o cache 114 inclui conjuntos de fragmentos 262, 264, 272 e 274. Além disso, cada fragmento em um determinado conjunto de fragmentos está associado a uma taxa de bits de transmissão contínua ("streaming") diferente. Por exemplo, o conjunto de fragmentos 262 inclui os fragmentos 232 (1) e 232(2). Como discutido acima, cada fragmento 232(1) e fragmento 232(2) corresponde ao mesmo intervalo de três segundos do item de mídia 230 e são copiados para o cache 114 do fluxo de mídia 230A e fluxo de mídia 230B, respectivamente.
[066] A aplicação de reprodução 126 transmite solicitações de conteúdo relacionado a itens de mídia do sistema de distribuição de conteúdo 100 e, em resposta, o sistema de distribuição de conteúdo 100 transmite para a aplicação de reprodução 126 fragmentos de fluxos de mídia correspondentes a itens de mídia. Por exemplo, em resposta à recepção de uma solicitação para os primeiros trinta segundos do item de mídia 230, o sistema de distribuição de conteúdo 100 pode determinar uma versão do item de mídia 230 que a aplicação de reprodução 126 deve receber, e se fragmentos a partir do fluxo de mídia selecionado correspondente à versão determinada estão no cache 114. Quando fragmentos a partir do fluxo de mídia selecionado (por exemplo, fragmentos 232(1), 232(2) do fluxo de mídia 230A) são armazenados no cache 114, a aplicação de reprodução 126 recebe os fragmentos a partir do cache 114 em vez do banco de dados de conteúdo 112. Caso contrário, quando os fragmentos a partir do fluxo de mídia selecionado não são armazenados em cache 114 (por exemplo, fragmentos subsequentes de fluxo de mídia 230A ou fluxo de mídia 240B), a aplicação de reprodução 126 pode receber fragmentos a partir do banco de dados de conteúdo 112.
[067] Em várias modalidades, a aplicação de reprodução 126 pode receber fragmentos correspondentes a intervalos contíguos que são codificados em diferentes taxas de bits. Por exemplo, a aplicação de reprodução 126 pode receber inicialmente o fragmento 232(3) a partir do conjunto de fragmentos 262 para renderizar os primeiros 10 segundos do item de mídia 230. O fragmento 232(3) é codificado a uma taxa de bits de 500 KB/s. Assim, por causa do pequeno tamanho de arquivo do fragmento 232(3) em relação ao(s) outro(s) fragmento(s) incluído(s) no conjunto de fragmentos 262, a aplicação de reprodução 126 poderia receber todo o fragmento 232(3) rapidamente, permitindo assim que a aplicação de reprodução 126 decretasse uma inicialização mais rápida da reprodução do item de mídia 230. A aplicação de reprodução 126 poderia então receber um fragmento subsequente na sequência. A fim de fazer a transição para um fluxo de mídia de qualidade superior, a aplicação de reprodução 126 recebe o fragmento 234(1) em vez do fragmento 234(3), pois o fragmento 234(1) é codificado a uma taxa de bits de 3000 Kb/s. A aplicação de reprodução 126 pode receber fragmentos subsequentes (por exemplo, fragmento 236, etc.) correspondentes a intervalos de item de mídia 230 que são codificados na mesma taxa de bits de transmissão contínua ("streaming"), uma taxa de bits de transmissão contínua ("streaming") mais alta ou uma taxa de bits de transmissão contínua ("streaming") mais baixa. Por exemplo, ao fazer a transmissão contínua ("streaming") de um determinado item de mídia, o dispositivo cliente 120 pode receber uma primeira sequência de três fragmentos codificados a uma taxa de bits de transmissão contínua ("streaming") de 3.000 Kbps, receber uma segunda sequência de três fragmentos codificados a uma taxa de bits de transmissão contínua ("streaming") de 5.000 Kbps, e receber a sequência restante de fragmentos codificados a uma taxa de bits de transmissão contínua ("streaming") de 16.000 Kbps.
[068] Em várias modalidades, a qualquer momento, a aplicação de pré-armazenamento em cache 142 pode analisar o cache 114 a fim de determinar a capacidade de armazenamento restante disponível no cache 114. Em tais casos, a aplicação de pré-armazenamento em cache 142 pode determinar se deve armazenar conjuntos de fragmentos adicionais no cache 114, a fim de ocupar o espaço disponível, ou se fazer pelo menos alguns dos conjuntos de fragmentos armazenados no cache 114 serem removidos a partir do cache 114.
[069] Conforme mostrado, cada conjunto de fragmentos 262, 264, 272 e 274 tem um valor de Max-Age. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode controlar dinamicamente o conteúdo do cache 114 por modificar os valores de Max-Age que estão nos cabeçalhos de cache correspondentes a fragmentos específicos. Por exemplo, os fragmentos incluídos no conjunto de fragmentos 274 têm Max-Age de 600 segundos, indicando que os fragmentos no conjunto de fragmentos 274 estão sujeitos a serem removidos do cache 114 de forma relativamente rápida. Por outro lado, os fragmentos incluídos nos conjuntos de fragmentos 262 e 264 têm valores de Max-Age de 31.536.000 segundos (1 ano), indicando que os fragmentos nos conjuntos de fragmentos 262 e 264 têm tempos de vida semipermanentes (TTLs) no cache 114. Fragmentos incluídos nos conjuntos de fragmentos 262 e 264 podem permanecer no cache 114 até que a aplicação de pré-armazenamento em cache 142 modifique os valores de Max-Age para valores que fariam os fragmentos estarem sujeitos à remoção do cache 114.
[070] A Figura 4A é um fluxograma dos passos de método para pré-seletivamente armazenar em cache múltiplas versões de um programa audiovisual, de acordo com várias modalidades. Embora os passos de método sejam descritos em conjunto com os sistemas das Figuras 1-3 e 5, os versados na técnica entenderão que qualquer sistema configurado para realizar os passos de método em qualquer ordem está dentro do escopo das presentes modalidades.
[071] Como mostrado, o método 400 começa no passo 401, onde a aplicação de pré-armazenamento em cache 142 identifica um item de mídia para pré-armazenamento em cache. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar atributos armazenados no banco de dados de atributos 144 a fim de identificar um grupo de itens de mídia como candidatos para pré-armazenamento em cache. Os atributos armazenados no banco de dados de atributos 144 estão associados à biblioteca de itens de mídia para os quais fluxos de mídia são armazenados no banco de dados de conteúdo 112. A aplicação de pré-armazenamento em cache 142 pode analisar os atributos a fim de gerar o grupo de itens de mídia candidatos e identificar, a partir do grupo de itens de mídia candidatos, um item de mídia particular para pré-armazenamento em cache.
[072] Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar atributos gerados a partir de operações (por exemplo, operações de inspeção de cache, operações de dados de registro histórico, incluindo URLs solicitados associados a uma versão particular de um item de mídia) associadas a solicitações recebidas anteriormente para itens de mídia. A aplicação de pré-armazenamento em cache 142 pode analisar tais atributos a fim de determinar quais itens de mídia satisfazem uma probabilidade de limiar de serem solicitados para reprodução subsequente, e colocar itens de mídia que satisfazem a probabilidade de limiar no grupo de itens de mídia candidatos. A aplicação de pré-armazenamento em cache 142 pode, então, aplicar outras estatísticas, como preferências regionais, estatísticas de borda, métricas específicas de dispositivo e assim por diante, para selecionar um item de mídia particular a partir do grupo de itens de mídia candidatos.
[073] Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode mapear os atributos de um item de mídia candidato existente para um novo item de mídia para que o novo item de mídia seja incluído no grupo de itens de mídia candidatos. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode selecionar uma renderização particular de um item de mídia para pré-armazenamento em cache. Por exemplo, a aplicação de pré-armazenamento em cache 142 poderia analisar preferências regionais geográficas para selecionar uma renderização em espanhol de um episódio de televisão para pré-armazenamento em cache. Da mesma forma, a aplicação de pré-armazenamento em cache 142 pode analisar o uso do dispositivo que se conecta a um cache incluído em um servidor de distribuição de conteúdo de borda específico e, com base nos dispositivos que se conectam ao servidor de distribuição de conteúdo de borda, selecionar uma renderização de um filme que é otimizado para reprodução por um tipo de dispositivo específico.
[074] Em outro exemplo, para uma série episódica popular, um episódio que está para ser lançado não tem histórico de acesso anterior próprio. No entanto, a popularidade de outros episódios da série faz com que a aplicação de pré-armazenamento em cache 142 preveja que um novo episódio deve estar entre os itens de mídia solicitados com mais frequência após o lançamento. Em tais casos, a aplicação de pré-armazenamento em cache 142 poderia identificar um valor de prioridade de armazenamento em cache associado à série e poderia ser aplicado o valor de prioridade de armazenamento em cache ao novo episódio. O novo episódio, portanto, recebe um valor de prioridade que reflete uma popularidade antecipada precisa do item de mídia.
[075] No passo 403, a aplicação de pré-armazenamento em cache 142 analisa o(s) cenário(s) de reprodução associado(s) à transmissão contínua ("streaming") hipotética do item de mídia identificado. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar um ou mais cenários de reprodução gerados a partir de dados de atributos anteriores e dados de tráfego associados a múltiplos dispositivos de reprodução que solicitam a reprodução de múltiplos itens de mídia. Um determinado cenário de reprodução agrega tais dados para gerar uma solicitação de reprodução hipotética por um dispositivo de reprodução hipotético com vários parâmetros operacionais associados ao sistema de distribuição de conteúdo 100 transmitindo o dispositivo de mídia identificado para o dispositivo cliente hipotético para reprodução de transmissão contínua ("streaming").
[076] Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar um cenário de reprodução específico que inclui um determinado conjunto de parâmetros operacionais (região do sul da Ásia, largura de banda de comunicação de 800 Kbps, etc.) relacionados ao dispositivo cliente hipotético tentando realizar reprodução de transmissão contínua ("streaming") do item de mídia identificado. Em tais casos, a aplicação de pré- armazenamento em cache 142 pode identificar uma ou mais versões do item de mídia identificado que poderia ser transmitido continuamente com sucesso para o dispositivo de reprodução hipotético em uma maneira que permite uma experiência de visualização agradável (por exemplo, armazenamento em buffer mínimo, perda de pacote mínima, resolução de vídeo aceitável, reprodução sincronizada de áudio e visual, etc.). No exemplo acima, a aplicação de pré-armazenamento em cache 142 pode determinar que as versões do item de mídia identificado que podem ser transmitidas continuamente a uma taxa de bits de transmissão contínua de 700 Kbps ou superior satisfariam o cenário de reprodução específico.
[077] No passo 405, a aplicação de pré-armazenamento em cache 142 seleciona, com base nos cenários de reprodução, fluxos de mídia correspondentes às versões identificadas do item de mídia identificado. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode usar determinações relacionadas aos cenários de reprodução, a fim de selecionar versões do item de mídia identificado para pré-armazenar em cache. A aplicação de pré-armazenamento em cache 142 pode então selecionar, para cada versão selecionada do item de mídia identificado, um fluxo de mídia correspondente, a partir do qual um ou mais fragmentos incluídos no fluxo de mídia devem ser pré-armazenados em cache. Usando o exemplo anterior, a aplicação de pré-armazenamento em cache 142 poderia então usar a taxa de bits de transmissão contínua ("streaming") determinada de 700 Kbps como uma taxa de bits máxima para identificar a(s) versão(ões) de um item de mídia (por exemplo, versão SD, versão otimizada para celular, etc.) que satisfaz o cenário de reprodução específico e selecionar fluxos de mídia, correspondentes à(s) versão(ões) identificada(s) do item de mídia, que são codificados em taxas de bits de transmissão contínua ("streaming") abaixo da taxa de bits de transmissão contínua ("streaming") máxima determinada.
[078] No passo 407, a aplicação de pré-armazenamento em cache 142 gera conjuntos de fragmentos com base nos fluxos de mídia selecionados. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode identificar, além de uma única versão do item de mídia que satisfaça um cenário de reprodução, versões adicionais selecionadas do item de mídia. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode selecionar versões adicionais do item de mídia com diferentes resoluções de vídeo, a fim de permitir uma transição na qualidade de vídeo após o início da reprodução. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode referir-se a uma graduação de taxa de bits a fim de identificar as versões adicionais do item de mídia que são aplicáveis para pré-armazenamento em cache com a versão inicialmente identificada.
[079] Uma vez que múltiplas versões de um item de mídia são selecionadas, a aplicação de pré-armazenamento em cache 142 pode selecionar, para pré-armazenamento em cache, fragmentos em cada um dos fluxos de mídia selecionados que correspondem à mesma seção do item de mídia. A aplicação de pré-armazenamento em cache 142 pode gerar um conjunto de fragmentos que inclui um agrupamento logicamente ligado de fragmentos que são codificados em diferentes taxas de bits de transmissão contínua ("streaming"). Por exemplo, a aplicação de pré-armazenamento em cache 142 poderia, para cada fluxo de mídia selecionado 250B, 250C, 250D, selecionar fragmentos 252(2), 252(3), 252(4) que correspondem a uma porção do item de mídia identificado 250. A aplicação de pré-armazenamento em cache 142 poderia, então, gerar o conjunto de fragmentos 272 para pré-armazenamento em cache no cache 114.
[080] No passo 409, a aplicação de pré-armazenamento em cache 142 armazena os conjuntos de fragmentos no cache 114. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode armazenar um ou mais conjuntos de fragmentos como seções pré-armazenadas em cache no cache 114, onde a seção pré-armazenada em cache corresponde a uma seção do item de mídia identificado. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode gerar conjuntos de fragmentos 272 e 274 a serem incluídos como porções da seção pré-armazenada em cache 270, onde a seção pré-armazenada em cache 270 corresponde a uma seção do item de mídia identificado. Em várias modalidades, uma vez que a seção pré-armazenada em cache 270 é armazenada no cache 114, a aplicação de pré-armazenamento em cache 142 pode definir ou modificar um valor de Max-Age associado aos fragmentos incluídos na seção pré-armazenada em cache 270 a fim de prevenir ou atrasar a expiração ou exclusão dos fragmentos a partir do cache 114. Por exemplo, a aplicação de pré-armazenamento em cache 142 poderia modificar os valores de Max-Age associados aos fragmentos 252(1), 252(2) e 252(3) a serem alongados a partir de um valor padrão de 6000 segundos (100 minutos) para um valor de 605.000 segundos (1 semana).
[081] A Figura 4B é um fluxograma dos passos de método para pré-seletivamente armazenar em cache múltiplas versões de um segmento particular de um programa audiovisual, de acordo com várias modalidades. Embora os passos de método sejam descritos em conjunto com os sistemas das Figuras 1-3 e 5, os versados na técnica entenderão que qualquer sistema configurado para realizar os passos de método em qualquer ordem está dentro do escopo das presentes modalidades.
[082] O método 450 começa no passo 451, a aplicação de pré-armazenamento em cache 142 identifica uma determinada seção do item de mídia identificado para pré-armazenamento em cache. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode identificar seções particulares de itens de mídia para pré-armazenamento em cache seletivamente no cache 114, antes de dispositivos clientes 120 solicitarem esses itens de mídia ou essas seções particulares. Em algumas modalidades, ao analisar os atributos incluídos no banco de dados de atributos 144, a aplicação de pré-armazenamento em cache 142 pode determinar que, para um determinado item de mídia, uma ou mais seções contíguas ou não contíguas do item de mídia identificado devem ser pré-armazenadas em cache no cache 114. Por exemplo, se um determinado item de mídia for um filme musical, então a aplicação de pré-armazenamento em cache 142 poderia analisar dados de tráfego a fim de determinar períodos de tempo específicos, correspondentes a cenas musicais, que foram solicitados com mais frequência do que outras partes do filme. Em tais casos, a aplicação de pré-armazenamento em cache 142 poderia identificar uma ou mais das cenas musicais para pré-armazenamento em cache.
[083] Em algumas modalidades, a aplicação de pré- armazenamento em cache pode primeiro identificar um item de mídia para pré-armazenamento em cache antes de analisar os dados associados a seções particulares do item de mídia. Alternativamente, a aplicação de pré-armazenamento em cache 142 pode analisar independentemente atributos e dados de tráfego a partir do banco de dados de atributos 144 para identificar uma seção particular de um item de mídia para pré-armazenamento em cache em vez de determinar se todo o item de mídia é um candidato para pré-armazenamento em cache. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode selecionar uma renderização particular (por exemplo, uma renderização de "cantar junto" de uma cena musical) da cena identificada para pré-armazenamento em cache.
[084] No passo 453, a aplicação de pré-armazenamento em cache 142 seleciona uma versão da seção de item de mídia identificada para pré-armazenamento em cache. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar atributos e outros dados no banco de dados de atributos 144 para selecionar uma versão particular para pré-armazenamento em cache. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode identificar uma versão particular da seção de item de mídia identificada que foi solicitada com mais frequência em relação a outras versões. Por exemplo, a aplicação de pré-armazenamento em cache 142 pode analisar os dados de registro do mês anterior para determinar se uma versão UHD de uma cena de filme foi solicitada com mais frequência em relação às versões de resolução mais baixa da mesma cena. Nesses casos, a aplicação de pré-armazenamento em cache pode identificar a versão UHD para pré-armazenamento em cache.
[085] Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode analisar um ou mais cenários de reprodução associados à transmissão contínua ("streaming") da seção identificada para um dispositivo de reprodução hipotético sob um conjunto especificado de parâmetros operacionais. Em tais casos, a aplicação de pré-armazenamento em cache pode determinar uma taxa de bits de transmissão contínua ("streaming") ideal para visualizar a seção identificada sob tais parâmetros operacionais, e a aplicação de pré-armazenamento em cache 142 pode identificar uma versão particular da seção identificada que está em ou abaixo da taxa de bits de transmissão contínua ("streaming") ideal.
[086] No passo 455, a aplicação de pré-armazenamento em cache 142 determina versões adicionais da seção selecionada do item de mídia para pré-armazenar em cache. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode identificar, além da versão da seção de item de mídia que foi previamente selecionada para pré-armazenamento em cache, versões adicionais selecionadas da seção de item de mídia. Por exemplo, depois de selecionar a versão UHD da seção de item de mídia, a aplicação de pré-armazenamento em cache 142 pode selecionar versões adicionais do item de mídia com diferentes resoluções de vídeo mais baixas (por exemplo, resoluções de vídeo HD e SD) para habilitar um dispositivo de reprodução para fazer a transição perfeita para fluxos de mídia de alta resolução de vídeo (por exemplo, de SD para HD para UHD) após o início da reprodução. Em algumas modalidades, a aplicação de pré-armazenamento em cache 142 pode referir-se a uma graduação de taxa de bits a fim de identificar as versões adicionais da seção de item de mídia que são aplicáveis para pré-armazenamento em cache com a versão inicialmente identificada.
[087] No passo 457, a aplicação de pré-armazenamento em cache 142 gera conjuntos de fragmentos com base nos fluxos de mídia selecionados. Em várias modalidades, uma vez que múltiplas versões de uma seção de item de mídia são selecionadas, a aplicação de pré-armazenamento em cache 142 pode selecionar, para pré-armazenamento em cache, fragmentos em cada um dos fluxos de mídia selecionados que correspondem à seção identificada do item de mídia. A aplicação de pré-armazenamento em cache 142 pode gerar um conjunto de fragmentos que inclui um agrupamento logicamente ligado de fragmentos que são codificados em diferentes taxas de bits de transmissão contínua ("streaming"). Por exemplo, a aplicação de pré-armazenamento em cache 142 poderia, para cada fluxo de mídia selecionado 250B, 250C, 250D, selecionar fragmentos 252(2), 252(3), 252(4) que correspondem a pelo menos uma porção da seção identificada de item de mídia 250. A aplicação de pré-armazenamento em cache 142 poderia, então, gerar o conjunto de fragmentos 272 para pré-armazenamento em cache no cache 114.
[088] No passo 459, a aplicação de pré-armazenamento em cache 142 armazena os conjuntos de fragmentos no cache 114. Em várias modalidades, a aplicação de pré-armazenamento em cache 142 pode armazenar um ou mais conjuntos de fragmentos como seções pré-armazenadas em cache no cache 114, onde a seção pré-armazenada em cache corresponde a uma seção do item de mídia identificado. Por exemplo, a aplicação de pré- armazenamento em cache 142 pode gerar conjuntos de fragmentos 272 e 274 a serem incluídos como porções da seção pré-armazenada em cache 270, onde a seção pré-armazenada em cache 270 corresponde a uma seção do item de mídia identificado. Em várias modalidades, uma vez que a seção pré-armazenada em cache 270 é armazenada no cache 114, a aplicação de pré-armazenamento em cache 142 pode definir ou modificar um valor de Max-Age associado aos fragmentos incluídos na seção pré-armazenada em cache 270 a fim de evitar a expiração ou exclusão dos fragmentos a partir do cache 114.
Visão geral dos componentes de rede
[089] A Figura 5 ilustra os componentes de um servidor 510 e dispositivo cliente 120 incluídos no sistema de distribuição de conteúdo 100 da Figura 1, de acordo com várias modalidades. Como mostrado, o sistema de distribuição de conteúdo 100 inclui o servidor 510 e o dispositivo cliente 120, acoplados entre si através de uma rede 150. O dispositivo cliente 120 e o servidor 510 podem ser qualquer tipo tecnicamente viável de sistema de computador, incluindo um computador desktop, um laptop, um dispositivo móvel, uma instância virtualizada de um dispositivo de computação, um sistema de computador distribuído ou baseado em nuvem e assim por diante.
[090] O servidor 510 inclui processador 512, dispositivos de entrada/saída (E/S) 514 e subsistema de memória 516, acoplados juntos. O processador 512 inclui qualquer conjunto tecnicamente viável de unidades de hardware configuradas para processar dados e executar aplicações de software. Por exemplo, o processador 512 pode incluir uma ou mais unidades de processamento central (CPUs). Dispositivos de E/S 514 incluem qualquer conjunto tecnicamente viável de dispositivos configurados para realizar operações de entrada e saída, incluindo, por exemplo, um dispositivo de exibição, um teclado ou uma tela de toque, entre outros.
[091] O subsistema de memória 516 inclui qualquer meio de armazenamento tecnicamente viável configurado para armazenar dados e aplicações de software. O subsistema de memória 516 pode incluir memória volátil, como, por exemplo, cache 114 ou memória de acesso aleatório (RAM). O subsistema de memória 516 também pode incluir um disco rígido que armazena armazenamento em massa, um módulo ou memória somente de leitura (ROM). Em várias modalidades, o subsistema de memória 516 inclui banco de dados de conteúdo 112 e aplicação de pré-armazenamento em cache 142. A aplicação de pré-armazenamento em cache 142 é aplicações de software que, quando executadas pelo processador 512, interoperam com outros componentes do sistema de distribuição de conteúdo 500, incluindo cache 114 e banco de dados de conteúdo 112.
[092] Em várias modalidades, o subsistema de memória 516 inclui um ou mais banco de dados de conteúdo 112, cache 114 ou aplicação de pré-armazenamento em cache 142. Em várias modalidades, o servidor 510 pode operar como um ou mais servidores de distribuição de conteúdo 110 ou servidor de controle 140. Por exemplo, o servidor 510 poderia atuar como servidor de distribuição de conteúdo 110 e servidor de controle 140. Em tais casos, o servidor 510 poderia executar a aplicação de pré-armazenamento em cache 142 a fim de controlar o conteúdo do cache 114. Em outro exemplo, o servidor 510 poderia atuar como servidor de distribuição de conteúdo 110. Em tais casos, o servidor 510 poderia receber sinais de comando a partir do servidor de controle 140 executando a aplicação de pré-armazenamento em cache 142 a fim de copiar conjuntos de fragmentos de um determinado item de mídia a partir do banco de dados de conteúdo 112 para o cache 114.
[093] O dispositivo cliente 120 inclui processador 522, dispositivos de entrada/saída (E/S) 524 e subsistema de memória 526, acoplados juntos. Em várias modalidades, o subsistema de memória 526 inclui o buffer de conteúdo 124 e a aplicação de reprodução 126. A aplicação de reprodução 126 é um programa de software que, quando executado pelo processador 522, interopera com outros componentes do sistema de distribuição de conteúdo 500, incluindo o buffer de conteúdo 124 ou servidor 510 para receber arquivos associados a um item de mídia particular e renderizar o vídeo em um ou mais quadros para reprodução de transmissão contínua ("streaming") via dispositivo cliente 120.
[094] Em suma, as técnicas são divulgadas para seletivamente pré-armazenar em cache seções de itens de mídia. Antes de receber uma solicitação de um item de mídia particular, fragmentos de fluxos de mídia, que correspondem a seções do item de mídia, são copiados para um cache que está incluído em um servidor de borda de uma infraestrutura de transmissão contínua ("streaming"). Vários itens de mídia na infraestrutura de transmissão contínua ("streaming") são compostos de seções contíguas que, quando reproduzidas em sequência, renderizam uma versão completa do item de mídia. A infraestrutura de transmissão contínua ("streaming") armazena um ou mais fluxos de mídia associados a um determinado item de mídia, onde cada fluxo de mídia diferente inclui dados para transmissão contínua ("streaming") do item de mídia que é codificado em uma taxa de bits de transmissão contínua ("streaming") diferente. Cada fluxo de mídia armazena uma sequência de fragmentos, onde cada fragmento corresponde a uma seção do item de mídia.
[095] Uma aplicação de pré-armazenamento em cache incluída na infraestrutura de transmissão contínua ("streaming") analisa os atributos associados a um ou mais itens de mídia e seções de um determinado item de mídia. A aplicação de pré-armazenamento em cache analisa os atributos para identificar um item de mídia para pré-armazenamento em cache. A aplicação de pré-armazenamento em cache também analisa os atributos a fim de identificar um ou mais fluxos correspondentes ao item de mídia e pode identificar uma ou mais seções do item de mídia identificado para pré-armazenamento em cache. Para uma determinada seção identificada, a aplicação de pré-armazenamento em cache analisa um cenário de reprodução que inclui parâmetros operacionais associados à reprodução de transmissão contínua ("streaming") da seção identificada. A aplicação de pré-armazenamento em cache analisa os parâmetros operacionais e determina os parâmetros ideais de fluxos de mídia, como uma taxa de bits de transmissão contínua ("streaming") ideal, que pode aderir aos parâmetros operacionais.
[096] A aplicação de pré-armazenamento em cache usa os parâmetros ideais de fluxos de mídia para selecionar um ou mais fluxos de mídia que possuem parâmetros que aderem aos parâmetros operacionais. A aplicação de pré-armazenamento em cache pode, então, selecionar fragmentos dos fluxos de mídia selecionados que correspondem à seção identificada do item de mídia. A aplicação de pré-armazenamento em cache agrupa fragmentos correspondentes de múltiplos fluxos de mídia para gerar conjuntos de fragmentos, onde cada fragmento do conjunto de fragmentos é codificado em uma taxa de bits de transmissão contínua ("streaming") diferente. A aplicação de pré-armazenamento em cache copia um ou mais conjuntos de fragmentos para o cache. Em várias modalidades, a aplicação de pré-armazenamento em cache pode definir a idade máxima dos fragmentos armazenados no cache, a fim de gerenciar os fragmentos armazenados no cache de modo que os fragmentos não sejam prematuramente sujeitos à expiração ou exclusão.
[097] Pelo menos uma vantagem tecnológica das técnicas divulgadas é que a capacidade de armazenamento limitada de um cache incluído em um servidor de borda é preenchida com fragmentos correspondentes a seções de itens de mídia que são suscetíveis de serem acessados por clientes da infraestrutura de rede. Além disso, o armazenamento de seções particulares de um item de mídia em vez de todo o item de mídia reduz a quantidade de espaço que um item de mídia particular ocupa no cache, permitindo que o cache armazene um número maior de itens de mídia. Além disso, o armazenamento de vários fragmentos correspondentes a uma seção particular de um item de mídia no cache permite que a rede de distribuição de conteúdo continue a fornecer reprodução adaptativa de forma eficiente, aprimorando os recursos de reprodução para uma variedade de cenários de reprodução e, assim, melhorando o desempenho para vários clientes visualizando um determinado item de mídia.
  • 1. Em várias modalidades, um método implementado por computador para seletivamente armazenar em cache conteúdo digital para transmissão contínua ("streaming"), o método compreendendo analisar um conjunto de dados de tráfego associados com transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo, selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo, e armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo, pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia, onde cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
  • 2. O método implementado por computador da cláusula 1, onde o conjunto de dados de tráfego compreende um registro de solicitações de URL, onde cada solicitação de URL inclui um identificador de ativo associado a um item de mídia candidato.
  • 3 . O método implementado por computador da cláusula 1 ou 2, onde selecionar o primeiro item de mídia para armazenamento compreende determinar, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, onde o valor de prioridade de armazenamento em cache é baseado em uma quantidade em que cada item de mídia no conjunto de itens de mídia candidatos foi solicitado durante o primeiro período de tempo, e selecionar o primeiro item de mídia com base em um primeiro valor de prioridade de armazenamento em cache para o primeiro item de mídia.
  • 4. O método implementado por computador de qualquer uma das cláusulas 1-3, onde identificar o primeiro item de mídia para armazenamento compreende determinar, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, onde o valor de prioridade de armazenamento em cache é baseado em uma quantidade que cada item de mídia candidato foi solicitado, em que o primeiro item de mídia não está incluído no conjunto de itens de mídia candidatos, determinar que o primeiro item de mídia está relacionado a um determinado item de mídia no conjunto de itens de mídia candidatos, atribuir um primeiro valor de prioridade de armazenamento em cache ao primeiro item de mídia com base no valor de prioridade de armazenamento em cache de um determinado item de mídia, e selecionar o primeiro item de mídia com base no primeiro valor de prioridade de armazenamento em cache.
  • 5. O método implementado por computador de qualquer uma das cláusulas 1-4, compreendendo ainda analisar, para o primeiro item de mídia, um segundo conjunto de dados de tráfego associado à transmissão contínua ("streaming") da pluralidade de fluxos de mídia associados ao primeiro item de mídia no primeiro período de tempo, e selecionar, com base no segundo conjunto de dados de tráfego, o primeiro fluxo de mídia e o segundo fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
  • 6. O método implementado por computador de qualquer uma das cláusulas 1-5, compreendendo ainda identificar, com base no segundo conjunto de dados de tráfego, um primeiro conjunto de fluxos de mídia incluídos na pluralidade de fluxos de mídia associados ao primeiro item de mídia, onde o primeiro conjunto de fluxos de mídia compreende um conjunto de um ou mais fluxos de mídia que foram mais frequentemente acessados por um tipo de dispositivo específico durante o primeiro período de tempo, e em que o primeiro fluxo de mídia ou o segundo fluxo de mídia é selecionado a partir do primeiro conjunto de fluxos de mídia.
  • 7. O método implementado por computador de qualquer uma das cláusulas 1 a 6, compreendendo ainda identificar, com base no segundo conjunto de dados de tráfego, um primeiro conjunto de fluxos de mídia incluídos na pluralidade de fluxos de mídia associados ao primeiro item de mídia, onde o primeiro conjunto de fluxos de mídia compreende um conjunto de um ou mais fluxos de mídia que foram mais frequentemente acessados em uma região geográfica específica durante o primeiro período de tempo, e onde o primeiro fluxo de mídia ou o segundo fluxo de mídia é selecionado a partir do primeiro conjunto de fluxos de mídia.
  • 8. O método implementado por computador de qualquer uma das cláusulas 1-7, compreendendo ainda especificar um valor de idade máximo associado com a porção do primeiro fluxo de mídia para um primeiro valor de pelo menos uma hora, onde o valor de idade máximo especifica um período de tempo que a porção do primeiro fluxo de mídia deve permanecer no cache.
  • 9. O método implementado por computador de qualquer uma das cláusulas 1-8, compreendendo ainda analisar um conjunto de parâmetros operacionais associados à transmissão contínua ("streaming") do primeiro item de mídia no segundo período de tempo, determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros, e selecionar o primeiro fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
  • 10. O método implementado por computador de qualquer uma das cláusulas 1-9, onde o conjunto de parâmetros operacionais compreende pelo menos um de uma região geográfica, um tipo de dispositivo de reprodução, uma largura de banda de transmissão contínua ("streaming"), ou um provedor de comunicações.
  • 11. O método implementado por computador de qualquer uma das cláusulas 1-10, compreendendo ainda gerar uma taxa de bits de transmissão contínua ("streaming") máxima suportada pelo conjunto de parâmetros operacionais, onde determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais compreende determinar que o primeiro fluxo de mídia é codificado em uma taxa de bits de transmissão contínua ("streaming") menor ou igual à taxa de bits de transmissão contínua ("streaming") máxima.
  • 12 . O método implementado por computador de qualquer uma das cláusulas 1-11, onde um dispositivo de reprodução recebe pelo menos a porção do primeiro fluxo de mídia a partir do cache para iniciar a reprodução, e o dispositivo de reprodução recebe uma porção diferente do segundo fluxo de mídia para continuar a reprodução.
  • 13 . O método implementado por computador de qualquer uma das cláusulas 1-12, compreendendo ainda selecionar, com base no conjunto de dados de tráfego, uma primeira seção do primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo, onde a primeira seção do primeiro item de mídia é determinada ser mais provável de ser solicitada para reprodução em relação a pelo menos uma outra seção do primeiro item de mídia, e em que armazenar no cache compreende armazenar uma primeira porção do primeiro fluxo de mídia associado com a primeira seção do primeiro item de mídia.
  • 14. Em várias modalidades, um ou mais meios de armazenamento legíveis por computador não transitórios incluem instruções que, quando executadas por um ou mais processadores, fazem com que um ou mais processadores realizem os passos de analisar um conjunto de dados de tráfego associados com transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo, selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo, e armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo, pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia, onde cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
  • 15. O um ou mais meios de armazenamento legíveis por computador não transitórios da cláusula 14, incluindo ainda instruções que, quando executadas pelo um ou mais processadores, fazem com que um ou mais processadores realizem ainda os passos de determinar, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, onde o valor de prioridade de armazenamento em cache é baseado em uma quantidade em que cada item de mídia no conjunto de itens de mídia candidatos foi solicitado durante o primeiro período de tempo, e selecionar o primeiro item de mídia com base em um primeiro valor de prioridade de armazenamento em cache para o primeiro item de mídia.
  • 16. O um ou mais meios de armazenamento legíveis por computador não transitórios da cláusula 14 ou 15, incluindo ainda instruções que, quando executadas pelo um ou mais processadores, fazem com que um ou mais processadores realizem ainda os passos de analisar um conjunto de parâmetros operacionais associados à transmissão contínua ("streaming") do primeiro item de mídia no segundo período de tempo, determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais, e selecionar o primeiro fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
  • 17. O um ou mais meios de armazenamento legíveis por computador não transitórios de qualquer uma das cláusulas 14-16, incluindo ainda instruções que, quando executadas pelo um ou mais processadores, fazem com que um ou mais processadores executem ainda o passo de gerar uma taxa de bits de transmissão contínua ("streaming") máxima suportada pelo conjunto de parâmetros operacionais, onde determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais compreende determinar que o primeiro fluxo de mídia é codificado em uma taxa de bits de transmissão contínua ("streaming") que é menor ou igual à taxa de bits de transmissão contínua ("streaming") máxima.
  • 18. Em várias modalidades, um sistema de computação que seletivamente armazena em cache conteúdo digital para transmissão contínua ("streaming") compreende uma memória que armazena uma aplicação de pré-armazenamento em cache; e um processador que é acoplado à memória e executa a aplicação de pré-armazenamento em cache para analisar um conjunto de dados de tráfego associado à transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo, selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo; e armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo, pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia, onde cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
  • 19. A cláusula do sistema de computação 18, onde o processador executa a aplicação de pré-armazenamento em cache para determinar ainda, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, onde o armazenamento em cache de valor de prioridade é baseado em uma quantidade em que cada item de mídia no conjunto de itens de mídia candidatos foi solicitado durante o primeiro período de tempo, e selecionar o primeiro item de mídia com base em um primeiro valor de prioridade de armazenamento em cache para o primeiro item de mídia.
  • 20. O sistema de computação da cláusula 18 ou 19, onde o processador executa a aplicação de pré-armazenamento em cache para analisar ainda um conjunto de parâmetros operacionais associados à transmissão contínua ("streaming") do primeiro item de mídia no segundo período de tempo, determina que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais, e seleciona o primeiro fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
[098] Toda e qualquer combinação de qualquer um dos elementos da reivindicação recitados em qualquer uma das reivindicações ou quaisquer elementos descritos neste pedido, de qualquer forma, caem dentro do escopo contemplado da presente divulgação e proteção.
[099] As descrições das várias modalidades foram apresentadas para fins de ilustração, mas não se destinam a ser exaustivas ou limitadas às modalidades divulgadas. Muitas modificações e variações serão evidentes para aqueles versados na técnica sem se afastar do escopo e do espírito das modalidades descritas.
[0100] Aspectos das presentes modalidades podem ser incorporados como um sistema, método ou produto de programa de computador. Por conseguinte, os aspectos da presente divulgação podem assumir a forma de uma modalidade inteiramente de hardware, uma modalidade inteiramente de software (incluindo firmware, software residente, microcódigo, etc.) ou uma modalidade combinando aspectos de software e hardware que podem ser geralmente referidos aqui como um "módulo", um "sistema" ou um "computador". Além disso, qualquer técnica de hardware ou software, processo, função, componente, motor, módulo ou sistema descrito na presente divulgação pode ser implementado como um circuito ou conjunto de circuitos. Alem disso, os aspectos da presente divulgação podem assumir a forma de um produto de programa de computador incorporado em um ou mais meios legíveis por computador tendo código de programa legível por computador incorporado no mesmo.
[0101] Qualquer combinação de um ou mais meio(s) legível por computador pode ser utilizada. O meio legível por computador pode ser um meio de sinal legível por computador ou um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a, um sistema, aparelho ou dispositivo eletrônico, magnético, ótico, eletromagnético, infravermelho ou semicondutor ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluiria o seguinte: uma conexão elétrica tendo um ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória somente de leitura programável apagável (EPROM ou memória Flash), uma fibra ótica, uma memória somente de leitura de disco compacto portátil (CD-ROM), um dispositivo de armazenamento ótico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para uso por ou em conexão com um sistema, aparelho ou dispositivo de execução de instruções.
[0102] Aspectos da presente divulgação são descritos acima com referência às ilustrações de fluxograma ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador de acordo com modalidades da divulgação. Será entendido que cada bloco das ilustrações do fluxograma ou diagramas de blocos e combinações de blocos nas ilustrações do fluxograma ou diagramas de blocos podem ser implementados por instruções de programa de computador. Estas instruções de programa de computador podem ser fornecidas a um processador de um computador de propósito geral, computador de propósito especial ou outro aparelho de processamento de dados programável para produzir uma máquina. As instruções, quando executadas através do processador do computador ou outro aparelho de processamento de dados programável, permitem a implementação das funções/atos especificados no fluxograma ou bloco ou blocos do diagrama de blocos. Esses processadores podem ser, sem limitação, processadores de propósito geral, processadores de propósito especial, processadores de aplicação específica ou arranjos de portas programáveis em campo.
[0103] O fluxograma e os diagramas de blocos nas figuras ilustram a arquitetura, a funcionalidade e a operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias modalidades da presente divulgação. A este respeito, cada bloco no fluxograma ou diagramas de blocos pode representar um módulo, segmento ou parte do código, que compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) especificada(s). Também deve ser observado que, em algumas implementações alternativas, as funções observadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente simultaneamente, ou os blocos podem às vezes ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também será notado que cada bloco da ilustração de diagramas de blocos ou fluxograma, e combinações de blocos na ilustração de diagramas de blocos ou fluxograma podem ser implementados por sistemas baseados em hardware de propósito especial que executam as funções ou atos especificados, ou combinações de hardware e instruções de computador.
[0104] Embora o anterior seja direcionado a modalidades da presente divulgação, outras e modalidades adicionais da divulgação podem ser concebidas sem se afastar do escopo básico da mesma, e o escopo da mesma é determinado pelas reivindicações que seguem.

Claims (15)

  1. Método implementado por computador para seletivamente armazenar em cache conteúdo digital para transmissão contínua ("streaming"), o método caracterizado pelo fato de que compreende:
    analisar um conjunto de dados de tráfego associados à transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo,
    selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo; e
    armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo:
    pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e
    pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia,
    em que cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
  2. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de dados de tráfego compreende um registro de solicitações de URL, em que cada solicitação de URL inclui um identificador de ativo associado a um item de mídia candidato.
  3. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que selecionar o primeiro item de mídia para armazenamento compreende:
    determinar, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, em que o valor de prioridade de armazenamento em cache é baseado em uma quantidade em que cada item de mídia no conjunto de itens de mídia candidatos foi solicitado durante o primeiro período de tempo; e
    selecionar o primeiro item de mídia com base em um primeiro valor de prioridade de armazenamento em cache para o primeiro item de mídia.
  4. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que identificar o primeiro item de mídia para armazenamento compreende:
    determinar, a partir do conjunto de dados de tráfego, um valor de prioridade de armazenamento em cache para cada item de mídia em um conjunto de itens de mídia candidatos, em que o valor de prioridade de armazenamento em cache é baseado em uma quantidade que cada item de mídia candidato foi solicitado, em que o primeiro item de mídia não é incluído no conjunto de itens de mídia candidatos;
    determinar que o primeiro item de mídia está relacionado a um determinado item de mídia no conjunto de itens de mídia candidatos;
    atribuir um primeiro valor de prioridade de armazenamento em cache ao primeiro item de mídia com base no valor de prioridade de armazenamento em cache do determinado item de mídia; e
    selecionar o primeiro item de mídia com base no primeiro valor de prioridade de armazenamento em cache.
  5. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda:
    analisar, para o primeiro item de mídia, um segundo conjunto de dados de tráfego associado à transmissão contínua ("streaming") da pluralidade de fluxos de mídia associados ao primeiro item de mídia no primeiro período de tempo; e
    selecionar, com base no segundo conjunto de dados de tráfego, o primeiro fluxo de mídia e o segundo fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
  6. Método implementado por computador, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende ainda:
    identificar, com base no segundo conjunto de dados de tráfego, um primeiro conjunto de fluxos de mídia incluídos na pluralidade de fluxos de mídia associados ao primeiro item de mídia,
    em que o primeiro conjunto de fluxos de mídia compreende um conjunto de um ou mais fluxos de mídia que foram mais frequentemente acessados por um tipo de dispositivo específico durante o primeiro período de tempo, e
    em que o primeiro fluxo de mídia ou o segundo fluxo de mídia é selecionado a partir do primeiro conjunto de fluxos de mídia.
  7. Método implementado por computador, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende ainda:
    identificar, com base no segundo conjunto de dados de tráfego, um primeiro conjunto de fluxos de mídia incluídos na pluralidade de fluxos de mídia associados ao primeiro item de mídia,
    em que o primeiro conjunto de fluxos de mídia compreende um conjunto de um ou mais fluxos de mídia que foram mais frequentemente acessados em uma região geográfica específica durante o primeiro período de tempo, e
    em que o primeiro fluxo de mídia ou o segundo fluxo de mídia é selecionado a partir do primeiro conjunto de fluxos de mídia.
  8. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda especificar um valor de idade máximo associado à porção do primeiro fluxo de mídia para um primeiro valor de pelo menos uma hora, em que o valor de idade máximo especifica um período de tempo que a porção do primeiro fluxo de mídia deve permanecer no cache.
  9. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda:
    analisar um conjunto de parâmetros operacionais associados à transmissão contínua ("streaming") do primeiro item de mídia no segundo período de tempo;
    determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais; e
    selecionar o primeiro fluxo de mídia para armazenamento no cache durante o segundo período de tempo.
  10. Método implementado por computador, de acordo com a reivindicação 9, caracterizado pelo fato de que o conjunto de parâmetros operacionais compreende pelo menos um de uma região geográfica, um tipo de dispositivo de reprodução, uma largura de banda de transmissão contínua ("streaming") ou um provedor de comunicações.
  11. Método implementado por computador, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende ainda:
    gerar uma taxa de bits de transmissão contínua ("streaming") máxima suportada pelo conjunto de parâmetros operacionais,
    em que determinar que o primeiro fluxo de mídia satisfaz o conjunto de parâmetros operacionais compreende determinar que o primeiro fluxo de mídia é codificado em uma taxa de bits de transmissão contínua ("streaming") que é menor ou igual à taxa de bits de transmissão contínua ("streaming") máxima.
  12. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que:
    um dispositivo de reprodução recebe pelo menos a porção do primeiro fluxo de mídia a partir do cache para iniciar a reprodução; e
    o dispositivo de reprodução recebe uma porção diferente do segundo fluxo de mídia para continuar a reprodução.
  13. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda selecionar, com base no conjunto de dados de tráfego, uma primeira seção do primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo, em que a primeira seção do primeiro item de mídia é determinada ser mais provável de ser solicitada para reprodução em relação a pelo menos uma outra seção do primeiro item de mídia, e em que o armazenamento no cache compreende armazenar uma primeira porção do primeiro fluxo de mídia associado à primeira seção do primeiro item de mídia.
  14. Um ou mais meios de armazenamento legíveis por computador não transitórios caracterizados pelo fato de que incluem instruções que, quando executadas por um ou mais processadores, fazem com que um ou mais processadores realizem os passos de:
    analisar um conjunto de dados de tráfego associados à transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo,
    selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo; e
    armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo:
    pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e
    pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia,
    em que cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
  15. Sistema de computação que seletivamente armazena em cache conteúdo digital para transmissão contínua ("streaming"), o sistema de computação caracterizado pelo fato de que compreende:
    uma memória que armazena uma aplicação de pré-armazenamento em cache; e
    um processador que é acoplado à memória e executa a aplicação de pré-armazenamento em cache para:
    analisar um conjunto de dados de tráfego associado à transmissão contínua ("streaming") de uma pluralidade de itens de mídia em um primeiro período de tempo,
    selecionar, com base no conjunto de dados de tráfego, um primeiro item de mídia para armazenamento em um cache durante um segundo período de tempo; e
    armazenar no cache, antes de receber uma solicitação para o primeiro item de mídia no segundo período de tempo:
    pelo menos uma porção de um primeiro fluxo de mídia de uma pluralidade de fluxos de mídia associados ao primeiro item de mídia, e
    pelo menos uma porção de um segundo fluxo de mídia da pluralidade de fluxos de mídia,
    em que cada fluxo de mídia na pluralidade de fluxos de mídia é codificado com características diferentes.
BR102021003482-3A 2020-02-25 2021-02-24 Pré-armazenamento em cache seletivo de fluxos de mídia BR102021003482A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/800,617 US11451603B2 (en) 2020-02-25 2020-02-25 Selective pre-caching of media streams
US16/800,617 2020-02-25

Publications (1)

Publication Number Publication Date
BR102021003482A2 true BR102021003482A2 (pt) 2021-09-08

Family

ID=74758508

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102021003482-3A BR102021003482A2 (pt) 2020-02-25 2021-02-24 Pré-armazenamento em cache seletivo de fluxos de mídia

Country Status (4)

Country Link
US (1) US11451603B2 (pt)
EP (1) EP3873101A1 (pt)
BR (1) BR102021003482A2 (pt)
MX (1) MX2021002120A (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11386183B2 (en) * 2020-08-06 2022-07-12 Microstrategy Incorporated Systems and methods for predictive caching
US11438442B1 (en) * 2021-03-18 2022-09-06 Verizon Patent And Licensing Inc. Systems and methods for optimizing provision of high latency content by a network
US11695696B2 (en) * 2021-11-23 2023-07-04 Capital One Services, Llc Prepopulation of caches
US11916787B2 (en) 2021-11-23 2024-02-27 Capital One Services, Llc Stream listening cache updater
US11765252B2 (en) 2021-11-23 2023-09-19 Capital One Services, Llc Prepopulation of call center cache

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2513018A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited Method for training a proxy server for content delivery based on communication of state information from a mobile device browser
US8370520B2 (en) * 2008-11-24 2013-02-05 Juniper Networks, Inc. Adaptive network content delivery system
WO2011139305A1 (en) * 2010-05-04 2011-11-10 Azuki Systems, Inc. Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction
US9594846B2 (en) * 2011-08-11 2017-03-14 Helwett-Packard Development Company, L.P. Client side caching
US9294582B2 (en) * 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching
US20140045475A1 (en) * 2012-08-08 2014-02-13 International Business Machines Corporation Techniques for Improving Cache Effectiveness of Caches with Low User Population
US9967300B2 (en) * 2012-12-10 2018-05-08 Alcatel Lucent Method and apparatus for scheduling adaptive bit rate streams
US8886769B2 (en) * 2013-01-18 2014-11-11 Limelight Networks, Inc. Selective content pre-warming in content delivery networks based on user actions and content categorizations
US9756100B2 (en) * 2013-03-15 2017-09-05 Echostar Technologies L.L.C. Placeshifting of adaptive media streams
US20140379840A1 (en) * 2013-06-24 2014-12-25 Akamai Technologies, Inc. Predictive prefetching of web content
US9253231B2 (en) * 2013-12-19 2016-02-02 Verizon Patent And Licensing Inc. Retrieving and caching adaptive bitrate stream segments based on network congestion
US9906590B2 (en) 2015-08-20 2018-02-27 Verizon Digital Media Services Inc. Intelligent predictive stream caching
US10178196B2 (en) * 2015-08-21 2019-01-08 Comcast Cable Communications, Llc Local cache maintenance for media content
US10686702B2 (en) * 2015-11-06 2020-06-16 Cable Television Laboratories, Inc. Preemptive caching of content in a content-centric network
US10117058B2 (en) * 2016-03-23 2018-10-30 At&T Intellectual Property, I, L.P. Generating a pre-caching schedule based on forecasted content requests
US10277669B1 (en) 2016-06-06 2019-04-30 Amazon Technologies, Inc. Communication channel between device and CDN during playback
US10034033B2 (en) * 2016-07-28 2018-07-24 Cisco Technology, Inc. Predictive media distribution system
US10595069B2 (en) * 2016-12-05 2020-03-17 Adobe Inc. Prioritizing tile-based virtual reality video streaming using adaptive rate allocation
US11477305B2 (en) * 2017-05-03 2022-10-18 Comcast Cable Communications, Llc Local cache bandwidth matching
US20200401522A1 (en) * 2018-03-30 2020-12-24 Facebook, Inc. Systems and methods for providing content
US10897493B2 (en) * 2019-02-11 2021-01-19 Verizon Patent And Licensing Inc. Systems and methods for predictive user location and content replication
US11496809B2 (en) * 2019-07-19 2022-11-08 Hulu, LLC Video file storage prediction process for caches in video servers
US11269612B2 (en) * 2019-12-10 2022-03-08 Paypal, Inc. Low latency dynamic content management

Also Published As

Publication number Publication date
US20210266353A1 (en) 2021-08-26
MX2021002120A (es) 2021-08-26
EP3873101A1 (en) 2021-09-01
US11451603B2 (en) 2022-09-20

Similar Documents

Publication Publication Date Title
BR102021003482A2 (pt) Pré-armazenamento em cache seletivo de fluxos de mídia
US9510043B2 (en) Pre-buffering audio streams
US9769505B2 (en) Adaptive streaming for digital content distribution
US8612668B2 (en) Storage optimization system based on object size
US9781183B2 (en) Accelerated playback of streaming media
US9646141B2 (en) Fast start of streaming digital media playback with deferred license retrieval
US8689267B2 (en) Variable bit video streams for adaptive streaming
US20050066063A1 (en) Sparse caching for streaming media
EP2897367A1 (en) Methods and systems of storage level video fragment management
WO2021159770A1 (zh) 视频播放方法、装置、设备和存储介质
WO2012106272A1 (en) System and method for custom segmentation for streaming
US20120281965A1 (en) L-cut stream startup
US8401370B2 (en) Application tracks in audio/video containers
CN113424553B (zh) 用于重放媒体项目的方法和系统
US20230007322A1 (en) Techniques for composite media storage and retrieval
US20220337921A1 (en) Methods and systems for providing dynamically composed personalized media assets
US11895350B2 (en) Techniques for providing a content stream based on a delivered stream of content
AU2020226900B2 (en) Adaptive retrieval of objects from remote storage
US20230089154A1 (en) Virtual and index assembly for cloud-based video processing
US20150088943A1 (en) Media-Aware File System and Method
WO2023049629A1 (en) Virtual and index assembly for cloud-based video processing

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]