ES3066752T3 - Systems and methods for streaming media content during unavailability of content server - Google Patents

Systems and methods for streaming media content during unavailability of content server

Info

Publication number
ES3066752T3
ES3066752T3 ES22801255T ES22801255T ES3066752T3 ES 3066752 T3 ES3066752 T3 ES 3066752T3 ES 22801255 T ES22801255 T ES 22801255T ES 22801255 T ES22801255 T ES 22801255T ES 3066752 T3 ES3066752 T3 ES 3066752T3
Authority
ES
Spain
Prior art keywords
devices
group
server
media resource
network
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES22801255T
Other languages
English (en)
Inventor
Srikanth Channapragada
Ishan Bhadula
Vivek Sehgal
Greeshma Jagadha Phani Lakshmi Alapati
Vikram Makam Gupta
Reda Harb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adeia Guides Inc
Original Assignee
Rovi Guides 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 Rovi Guides Inc filed Critical Rovi Guides Inc
Application granted granted Critical
Publication of ES3066752T3 publication Critical patent/ES3066752T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80—Responding to QoS
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08—Configuration management of networks or network elements
    • H04L41/0893—Assignment of logical groups to network elements
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004—Server selection for load balancing
    • H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004—Server selection for load balancing
    • H04L67/1017—Server selection for load balancing based on a round robin mechanism
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/104—Peer-to-peer [P2P] networks
    • H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091—Interfacing with client-server systems or between P2P systems
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/56—Provisioning of proxy services
    • H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/56—Provisioning of proxy services
    • H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23103—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2353—Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2401—Monitoring of the client buffer
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2404—Monitoring of server processing errors or hardware failure
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2405—Monitoring of the internal components or processes of the server, e.g. server load
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25—Management 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/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808—Management of client data
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25—Management 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/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808—Management of client data
    • H04N21/25833—Management of client data involving client hardware characteristics, e.g. manufacturer, processing or storage capabilities
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43—Processing 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/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462—Content or additional data management e.g. creating a master electronic programme guide from data received from the Internet and a Head-end or controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4622—Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47—End-user applications
    • H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647—Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723—Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738—Monitoring network characteristics, e.g. bandwidth, congestion level
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65—Transmission of management data between client and server
    • H04N21/654—Transmission by server directed to the client
    • H04N21/6543—Transmission by server directed to the client for forcing some client operations, e.g. recording
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845—Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00—Arrangements for monitoring or testing data switching networks
    • H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00—Arrangements for monitoring or testing data switching networks
    • H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00—Arrangements for monitoring or testing data switching networks
    • H04L43/16—Threshold monitoring
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47—End-user applications
    • H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/632—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

En este documento se describen sistemas y métodos para la transmisión de contenido en tiempo real cuando un servidor de contenido no está disponible. Al detectar problemas de almacenamiento en búfer durante la entrega de un recurso multimedia (102), un servidor (100) determina un primer grupo de dispositivos (106) adecuados para recibir dicho recurso y compartirlo en una red punto a punto. A continuación, el servidor (100) determina un segundo grupo de dispositivos (108) adecuados para recibir el recurso multimedia (102) en una red punto a punto desde un dispositivo del primer grupo. Finalmente, el servidor (100) define las agrupaciones (110, 112, 114, 116, 118, 120) dentro de las cuales se compartirá y recibirá el recurso multimedia (102). A continuación, el servidor (100) transmite instrucciones a los dispositivos del primer grupo (106) para que mantengan en búfer y compartan ciertas partes del archivo multimedia (102) con los dispositivos del segundo grupo (110, 112, 114, 116, 118, 120). Finalmente, el servidor (100) actualiza la información que detalla las partes del archivo multimedia que los dispositivos mantienen en búfer y comparten. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0002] Sistemas y métodos para reproducir contenido multimedia durante la no disponibilidad del servidor de contenido Antecedentes
[0003] La presente divulgación está dirigida a métodos para reproducir durante la no disponibilidad de un servidor de contenido. Específicamente, cuando hay condiciones en un servidor de contenido que indican problemas de almacenamiento en búfer durante la entrega de recursos multimedia, el servidor transmite instrucciones a ciertos dispositivos para mantener porciones de recursos multimedia en un búfer y se comparten esas porciones de recursos multimedia con otros dispositivos en una red.
[0004] El documento US9549043B1 divulga un entorno de distribución de contenido donde múltiples clientes solicitan acceso para transmitir contenido en directo y bajo demanda con el objetivo de proporcionar una distribución óptima del contenido cuando aumenta el número de clientes y solicitudes de clientes.
[0005] El documento US10305721B1 divulga un entorno de distribución de contenido donde grupos de clientes solicitan contenido de una plataforma remota y comparten información sobre las condiciones de la red.
[0006] Compendio
[0007] La invención se presenta en las reivindicaciones adjuntas.
[0008] Dentro de los servidores de contenido multimedia, específicamente los servidores de contenido bajo demanda (por ejemplo, servidores de distribución de video (OTT)), a menudo hay contenido de tendencia que es solicitado por múltiples usuarios simultáneamente. Cuando diversos usuarios localizados en diferentes partes del mundo solicitan el mismo recurso multimedia, los servidores a menudo se sobrecargan con solicitudes y los usuarios comienzan a experimentar problemas de almacenamiento en búfer. Los problemas de almacenamiento en búfer también pueden manifestarse como un resultado de problemas de red entre los dispositivos de usuario y el servidor. Los problemas de almacenamiento en búfer pueden conducir a insatisfacción en los usuarios y aumentar las posibilidades de que paren de reproducir contenido multimedia. Esto puede resultar en una pérdida de suscriptores a los servicios que proporcionan el contenido.
[0009] En un enfoque convencional, se podrían diseñar, adquirir e integrar en un sistema de servidores ya existente más servidores con capacidad para gestionar un mayor volumen de solicitudes, con el fin de evitar la sobrecarga de los servidores. Este enfoque es deficiente porque consume recursos financieros, lleva tiempo implementarlo y puede terminar siendo ineficiente en términos de costes a largo plazo. Además, los problemas de red que experimentan algunos usuarios pueden ser resultado de condiciones locales que afectan la comunicación entre esos usuarios y el servidor y no pueden resolverse simplemente al agregar más servidores. Además, a medida que más usuarios comienzan a solicitar contenido, incluso con un mayor número de servidores, aún puede producirse una sobrecarga, lo que nuevamente conduce a problemas de almacenamiento en búfer mientras los servidores intentan servir contenido multimedia a todos los usuarios solicitantes.
[0010] En otro ejemplo convencional, se pueden construir barreras de entrada para solicitar contenido multimedia para evitar la sobrecarga del servidor. Por ejemplo, un proveedor de contenidos puede cobrar tarifas adicionales por contenido popular cuando se lanza por primera vez, lanzar primero el contenido popular a los miembros premium, o escalonar el lanzamiento de contenido multimedia a diferentes localizaciones geográficas en diferentes momentos. Establecer barreras de entrada es una solución inadecuada porque es excluyente y no atiende a todos los posibles clientes que de otro modo podrían solicitar el contenido multimedia. Disuadir a los usuarios puede hacer que se pierda dinero a largo plazo, ya que pueden perder el interés en consumir contenido que de otro modo habrían comprado si el precio no hubiera aumentado, o usuarios pueden elegir un proveedor de contenido diferente desde el cual transmitir el contenido.
[0011] Para superar estos problemas, en este documento se proporcionan sistemas y métodos para determinar cuándo hay condiciones en un servidor de contenido que indican problemas de almacenamiento en búfer durante la entrega de un recurso multimedia, analizar los dispositivos que solicitan el recurso multimedia para identificar un grupo de dispositivos más adecuados para compartir porciones en búfer del recurso multimedia y un grupo de dispositivos más adecuados para recibir porciones en búfer del recurso multimedia en una red, aplicar algoritmos de equilibrio de carga para determinar la distribución, y transmitir instrucciones a los dispositivos para distribuir y recibir las porciones del contenido multimedia.
[0012] En una implementación, se determinan las condiciones de la red que indican problemas de almacenamiento en búfer. En algunas realizaciones, esta determinación se realiza durante la entrega de al menos una porción de un recurso multimedia. Por ejemplo, un servidor determina que hay condiciones que indican problemas de almacenamiento en búfer durante la entrega de un recurso multimedia al detectar una sobrecarga del servidor de borde, o problemas de red entre los dispositivos cliente y los servidores perimetrales en una red de entrega de contenido. Los problemas de red pueden incluir un rendimiento lento de Internet, un alto uso de ancho de banda, errores en la ruta de red, problemas de latencia de red, o cualquier otro problema que afecte la capacidad de los dispositivos cliente para comunicarse con los servidores de la red. Los problemas de almacenamiento en búfer se pueden detectar en tiempo real, por ejemplo, cuando un servidor que detecta una sobrecarga actual del servidor, o cuando un servidor que recibe indicaciones de los dispositivos de los usuarios de que los usuarios tienen problemas con la reproducción. El servidor puede, alternativa o adicionalmente, determinar condiciones que indiquen la posibilidad de que se produzcan problemas de almacenamiento en búfer al detectar que el número de solicitudes de los dispositivos de los usuarios ha superado un valor umbral o al recibir una indicación de que un recurso multimedia que se lanzará próximamente es un recurso multimedia popular que probablemente generará un gran número de solicitudes de visualización desde el servidor en un período de tiempo relativamente corto. En algunas realizaciones, los dispositivos cliente pueden informar periódicamente sus condiciones de red al servidor. El servidor puede comparar las condiciones de red informadas más recientemente con las condiciones de red informadas anteriormente para investigar tendencias que indiquen problemas de red.
[0014] Dichos aspectos permiten que un servidor no solo detecte problemas de almacenamiento en búfer en tiempo real, sino que también se prepare para problemas de almacenamiento en búfer que probablemente ocurran. Por ejemplo, si las condiciones indican que hay problemas de almacenamiento en búfer actuales involucrados en la entrega de un recurso multimedia, o una alta probabilidad de que haya problemas de almacenamiento en búfer en el futuro, el servidor puede prevenir o remediar adecuadamente los problemas de almacenamiento en búfer.
[0016] En una realización, el servidor comienza el proceso de remediar problemas de almacenamiento en búfer al identificar un primer grupo de dispositivos fuera de los dispositivos que solicitan un recurso multimedia que son adecuados tanto para recibir el recurso multimedia como para compartir el recurso multimedia en una red. Un enfoque para esto implica determinar el tipo de entrega de contenido asociado con el recurso multimedia solicitado y comparar el tipo de entrega de contenido con los metadatos intrínsecos asociados con los dispositivos que solicitan el recurso multimedia. En algunas realizaciones, un recurso multimedia está destinado a ser entregado a dispositivos a través de una transmisión en vivo (entrega en vivo). En otras realizaciones, un recurso multimedia está destinado a ser entregado bajo demanda (entrega VOD). En algunas realizaciones, los metadatos intrínsecos incluyen uno o más de la localización del dispositivo, estado de energía del dispositivo, tipo de dispositivo, utilización de la CPU, métricas de rendimiento de reproducción del dispositivo, velocidad de bits, tipo de red o movilidad.
[0018] En una implementación, el servidor puede determinar que, para que un dispositivo esté en el primer grupo de dispositivos, el tipo de entrega del recurso multimedia necesite que el dispositivo tenga ciertos aspectos de metadatos intrínsecos. Por ejemplo, para un recurso multimedia de entrega en vivo, un dispositivo puede necesitar estar dentro de una cierta distancia geográfica del servidor,por ejemplo,dentro de 160,93 kilómetros (100 millas). Para ser un dispositivo del primer grupo, un dispositivo puede necesitar estar enchufado a una fuente de energía o tener un cierto nivel de batería,por ejemplo,superior al 80 % del nivel de batería. En algunas realizaciones, un dispositivo que se coloca inicialmente en el primer grupo puede informar periódicamente su estado de energía y, si su estado de energía ya no cumple con los requisitos (por ejemplo,el dispositivo ya no está enchufado a una fuente de energía o el nivel de batería del dispositivo ha caído por debajo de un nivel umbral), el dispositivo se elimina del primer grupo. El dispositivo también pude necesitar ser de un cierto tipo de dispositivo y tener energía de procesamiento disponible,por ejemplo,un ordenador que tenga una utilización de CPU inferior al 50 %. También puede requerirse un cierto nivel de rendimiento de reproducción,por ejemplo,cero marcos perdidos en reproductores recientes o una tasa de bits superior a ocho megabits por segundo. También puede ser necesaria una conexión de red confiable,por ejemplouna conexión de red Wi-Fi, o una cierta movilidad,por ejemplouna movilidad fija. El servidor puede tener cualquiera o una combinación de estos metadatos intrínsecos como requisitos para ser un dispositivo dentro del primer grupo de dispositivos para un cierto tipo de entrega de un recurso multimedia. En otro enfoque, el servidor puede utilizar cualquier requisito, incluidos aquellos no enumerados anteriormente, para determinar los dispositivos dentro del primer grupo de dispositivos.
[0020] Dichos aspectos permiten a un servidor determinar los dispositivos más adecuados para recibir un recurso multimedia del servidor y compartir el recurso multimedia en una red entre pares. Esto garantiza que todos los dispositivos dentro del primer grupo tengan la capacidad de entregar contenido a otros dispositivos sin problemas de almacenamiento en búfer que de lo contrario ocurrirían.
[0022] En una implementación, el servidor identifica un segundo grupo de dispositivos, fuera de los dispositivos que solicitan un recurso multimedia, que son adecuados para recibir el recurso multimedia en una red entre pares desde un dispositivo fuera del primer grupo. En algunas realizaciones, el segundo grupo de dispositivos puede ser todos los dispositivos que solicitan el recurso multimedia que no están dentro del primer grupo. En otra realización, no todos los dispositivos excluidos del primer grupo son adecuados para recibir un recurso multimedia en una red desde un dispositivo fuera del primer grupo. En este enfoque, el servidor puede determinar el tipo de entrega de contenido asociado con el recurso multimedia solicitado y comparar el tipo de entrega de contenido con los metadatos intrínsecos asociados con los dispositivos que solicitan el recurso multimedia que están excluidos del primer grupo para determinar qué dispositivos son elegibles para estar dentro del segundo grupo de dispositivos.
[0024] En la implementación anterior, el servidor puede determinar que, para que un dispositivo esté en el segundo grupo de dispositivos, el tipo de entrega del recurso multimedia necesite que el dispositivo tenga ciertos aspectos de metadatos intrínsecos. Por ejemplo, para un recurso multimedia de entrega VOD, un dispositivo puede necesitar estar dentro de una cierta distancia geográfica de al menos un dispositivo dentro del primer grupo, por ejemplo, 160,93 kilómetros (100 millas). Para ser un dispositivo del segundo grupo, un dispositivo puede necesitar estar enchufado a una fuente de energía, o tener un cierto nivel de batería, por ejemplo, superior al 50 % del nivel de batería. El dispositivo también puede necesitar ser de un cierto tipo de dispositivo y tener energía de procesamiento disponible,por ejemplo,un teléfono inteligente que tenga una utilización de CPU inferior al 80 %. Puede ser necesario un cierto nivel de rendimiento de reproducción,por ejemplo,menos de diez marcos perdidos en reproductores recientes, o una tasa de bits superior a cinco megabits por segundo. El dispositivo también puede requerir una conexión estable de datos móviles o de red Wi-Fi, o una movilidad fija. El servidor puede tener cualquiera o una combinación de estos metadatos intrínsecos como requisitos para ser un dispositivo dentro del segundo grupo de dispositivos para un cierto tipo de entrega de un recurso multimedia. En otro enfoque, el servidor puede utilizar cualquier requisito, incluidos aquellos no enumerados anteriormente, para determinar los dispositivos dentro del segundo grupo de dispositivos.
[0026] En una realización, todos los dispositivos que soliciten el recurso multimedia pertenecerán al primer grupo o al segundo grupo de dispositivos. En el caso de que al menos uno de los dispositivos que solicitan el recurso multimedia no esté en ninguno de los grupos de dispositivos, el servidor puede entregar el recurso multimedia para su visualización al uno o más dispositivos que no estén en el primer o segundo grupo sin instrucciones adicionales.
[0028] Dichos aspectos permiten a un servidor determinar los dispositivos más adecuados para recibir un recurso multimedia de otro dispositivo en una red. Esto garantiza que todos los dispositivos dentro del segundo grupo reciban contenido de otros dispositivos sin problemas de almacenamiento en búfer que de lo contrario ocurrirían. El establecimiento de un segundo grupo de dispositivos que reciben contenido de otros dispositivos puede reducir drásticamente la carga en el servidor, ya que todas las solicitudes de los recursos multimedia de los dispositivos dentro del segundo grupo que de otro modo irían al servidor ahora son atendidas por los dispositivos del primer grupo. Hoy en día, navegadores como Chrome, Safari y muchos otros sistemas operativos y aplicaciones móviles admiten la comunicación web en tiempo real de código abierto (WebRTC) para admitir la comunicación entre pares. Se puede confiar en dicho protocolo para permitir que los dispositivos cliente se comuniquen entre sí,es decir,se puede transmitir y recibir contenido de video utilizando el canal de datos de WebRTC.
[0030] En una realización, el servidor determina agrupaciones de dispositivos que contienen dispositivos del primer grupo y del segundo grupo, para determinar el uno o más dispositivos particulares del segundo grupo con los que cada uno de los dispositivos del primer grupo compartirá. En un enfoque para lograr esto, el servidor primero determina grupos de dispositivos que contienen dispositivos del primer y del segundo grupo. El servidor puede determinar grupos basándose en uno o más factores asociados con los dispositivos, incluido el progreso dentro de un recurso multimedia, el tipo de dispositivo, la localización del dispositivo o la capacidad del dispositivo para gestionar el tráfico entrante y saliente. Por ejemplo, el servidor puede determinar que un grupo contiene todos los dispositivos dentro de un cierto período de tiempo del recurso multimedia,por ejemplo,dentro de los primeros diez minutos de reproducción. Un grupo también puede contener todos los dispositivos de un cierto tipo,por ejemplo,teléfonos inteligentes. El requisito del grupo también puede ser que todos los dispositivos deben estar dentro de una cierta localización,por ejemplo,80,46 kilómetros (50 millas) entre sí. Como alternativa, todos los dispositivos dentro de un grupo pueden necesitar tener un cierto nivel de umbral de capacidad para gestionar tráfico entrante y saliente,por ejemplo,todos los dispositivos del primer grupo son capaces de gestionar una solicitud entrante y todos los dispositivos del segundo grupo son capaces de gestionar una solicitud saliente. El servidor puede tener una cualquiera o cualquier combinación de estos factores como requisitos para que los dispositivos estén en el mismo grupo. En otro enfoque, el servidor puede utilizar cualquier requisito, incluidos aquellos no enumerados anteriormente, para determinar los grupos de los dispositivos.
[0032] Dichos aspectos permiten al servidor determinar grupos de dispositivos similares como un paso intermedio para decidir las agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido. En lugar de tener que considerar toda la pluralidad de dispositivos que solicitan el recurso multimedia al momento de decidir la distribución de la carga, el servidor ahora tiene múltiples grupos de dispositivos para tratar independientemente unos de otros. Esto reducirá el tiempo y la carga de recursos en el servidor y permitirá que las agrupaciones se determinen de manera más rápida y eficiente, ya que el servidor considera menos dispositivos a la vez cuando distribuir la carga de recursos multimedia entre los dispositivos.
[0033] En algunas realizaciones, el servidor puede determinar que los grupos determinados de dispositivos son las agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido. En algunas realizaciones, el servidor puede aplicar uno o más algoritmos de equilibrio de carga a los grupos de dispositivos, para determinar las agrupaciones. El servidor puede determinar qué algoritmo de equilibrio de carga aplicar basándose en uno o más factores asociados con los dispositivos, incluido el tipo de dispositivo, las métricas de rendimiento de reproducción del dispositivo actual, la calidad de transmisión que el dispositivo puede servir o el número de solicitudes que el dispositivo puede servir. Por ejemplo, si uno o más de los factores para todos los dispositivos dentro de un grupo son relativamente similares,por ejemplo,los dispositivos son todos teléfonos inteligentes, el número de marcos descartados recientemente es cercana a cero, los dispositivos pueden servir transmisión de alta definición, o todos los dispositivos del primer grupo dentro del grupo pueden servir una solicitud cada uno, el servidor puede aplicar un algoritmo round robin al grupo. La aplicación de un algoritmo round robin puede dar como resultado que el servidor recorra los dispositivos en cada grupo y determine agrupaciones que contengan un número igual de dispositivos, con una distribución uniforme de los dispositivos del primer y del segundo grupo, dentro de cada agrupación. Por ejemplo, una agrupación puede contener un teléfono inteligente del primer grupo y un teléfono inteligente del segundo grupo.
[0035] En otro ejemplo, si uno o más de los factores para todos los dispositivos dentro de un grupo son relativamente similares,por ejemplo,los dispositivos son una mezcla de teléfonos inteligentes, ordenadores, y televisiones; el número de marcos descartados recientemente varía entre los dispositivos; algunos de los dispositivos pueden ofrecer reproducción en alta definición y otros solo en baja definición; o bien, dado que los dispositivos del primer grupo del grupo pueden servir un número variable de solicitudes, el servidor puede aplicar un algoritmo de rotación ponderada al grupo.
[0037] En algunas realizaciones, durante el proceso de aplicar un algoritmo round robin ponderado, el servidor puede asignar ponderaciones a los dispositivos dentro de cada grupo basándose en uno o más del tipo de dispositivo, los parámetros de rendimiento de reproducción actuales del dispositivo, la calidad de la transmisión que el dispositivo puede servir o el número de solicitudes que cada dispositivo del primer grupo puede servir. Por ejemplo, si la ponderación se basa en el tipo de dispositivo, todos los dispositivos del mismo tipo se les asigna la misma ponderación;por ejemplo,todos los teléfonos inteligentes reciben una ponderación de uno, todos los ordenadores reciben una ponderación de dos, y todos las televisiones reciben una ponderación de tres. Si la ponderación se basa en las métricas de rendimiento de reproducción del dispositivo actual, por ejemplo, todos los dispositivos con un gran número de marcos descartados en el historial de reproducción reciente recibirán la misma ponderación y todos los dispositivos con un menor número de marcos descartados en el historial de reproducción reciente recibirán la misma ponderación,por ejemplo,una ponderación de dos para un gran número de marcos descartados, y una ponderación de uno para un menor número de marcos descartados. Si la ponderación se basa en la calidad de la reproducción que el dispositivo puede servir, por ejemplo, todos los dispositivos que pueden reproducir en alta definición (HD) recibirán la misma ponderación, por ejemplo, dos, y todos los dispositivos que solo pueden reproducir en definición estándar (SD) recibirán la misma ponderación,por ejemplo,uno. Si la ponderación se basa en el número de solicitudes que cada dispositivo del primer grupo puede servir, por ejemplo, cada dispositivo del primer grupo puede recibir una ponderación igual al número de solicitudes que puede servir,por ejemplo,si un dispositivo puede servir cuatro solicitudes, recibirá una ponderación de cuatro, y los dispositivos del segundo grupo dentro del grupo recibirán cada uno una ponderación de uno, ya que cada dispositivo cuenta como una solicitud. La ponderación puede basarse en más de uno de los factores anteriores. En este caso, se puede utilizar el método anterior para determinar ponderaciones, y se pueden agregar ponderaciones basándose en cada factor,por ejemplo,un teléfono inteligente que puede reproducir en alta definición puede recibir una ponderación de tres, mientras que un teléfono inteligente que puede reproducir en baja definición puede recibir una ponderación de dos. En algunas realizaciones, la ponderación asignada a un dispositivo del primer grupo también puede depender de su estado de energía. Si un dispositivo del primer grupo se conecta a una fuente de alimentación, se le puede asignar su ponderación como se discutió anteriormente. Sin embargo, si el dispositivo está funcionando actualmente con energía de la batería, el nivel de la batería se puede utilizar como coeficiente de ponderación para determinar la ponderación asignado al dispositivo. Por ejemplo, si al dispositivo normalmente se le asignaría una ponderación de cuatro pero funciona con energía de batería con un nivel de batería del 80 %, la ponderación normalmente asignada de cuatro se puede multiplicar por 0,8 para obtener una ponderación reducida de 3,2. Se puede utilizar una función piso para redondear esta ponderación modificada a tres. En otro enfoque, se puede utilizar cualquier método para determinar ponderaciones basándose en los factores anteriores. Se puede utilizar cualquier número de factores, incluidos los no enumerados anteriormente, para determinar las ponderaciones.
[0039] En algunas realizaciones, una vez que el servidor asigna ponderaciones a los dispositivos dentro de cada grupo, el servidor puede aplicar un algoritmo round robin ponderado para determinar agrupaciones de dispositivos del primer grupo y del segundo grupo dentro de cada grupo. La aplicación de un algoritmo round robin ponderado puede dar como resultado que un número desigual de dispositivos, con una distribución uniforme de los dispositivos del primer y del segundo grupo, dentro de cada agrupación. Por ejemplo, un dispositivo del primer grupo con una ponderación de cuatro puede agruparse con cuatro dispositivos del segundo grupo, cada uno con una ponderación de uno. En algunas realizaciones, la suma de las ponderaciones de los dispositivos del primer grupo dentro de una agrupación será equivalente a la suma de las ponderaciones de los dispositivos del segundo grupo dentro de la agrupación.
[0041] Dichos aspectos permiten al servidor decidir agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido de una manera que permita compartir porciones de contenido multimedia de la manera más eficiente y efectiva, sin ir más allá de las capacidades de ningún dispositivo. Las agrupaciones están equilibradas, no necesariamente en número de dispositivos, sino en capacidad de los dispositivos para compartir y recibir. Si bien todos los dispositivos de un grupo que comparten contenido con otros dispositivos (dispositivos del primer grupo) ya se han considerado aptos tanto para recibir contenido del servidor como para compartirlo con otros dispositivos, y todos los dispositivos de un grupo que reciben contenido de otros dispositivos (dispositivos del segundo grupo) ya se han considerado aptos para recibir contenido de otros dispositivos, la eliminación del desequilibrio de recursos garantiza aún más que el intercambio entre los dispositivos aptos se realice sin interrupciones y, por lo tanto, asegura que todas las transmisiones se realicen sin problemas de almacenamiento en búfer.
[0043] En algunas realizaciones, el servidor transmite instrucciones a los dispositivos del primer grupo para mantener en un búfer ciertas porciones del recurso multimedia y compartir ciertas porciones del recurso multimedia con los dispositivos del segundo grupo dentro de su agrupación en la red. En una implementación, se aplica un algoritmo de tamaño de caché dinámico a los dispositivos del primer grupo para determinar qué parte del tamaño del búfer deben mantener los dispositivos y qué porciones del recurso multimedia debe mantener en el búfer y se comparten cada dispositivo del primer grupo. En algunas realizaciones, el algoritmo de determinación del tamaño de caché dinámico se basa en el tipo de entrega de contenido y los metadatos intrínsecos asociados con cada uno de los dispositivos del primer grupo. Por ejemplo, el servidor puede determinar que, debido a que el recurso multimedia se entrega de una cierta manera,por ejemplo,a través de VOD, el tamaño del búfer compartido debe ser de un cierto tamaño,por ejemplo,100 megabits, porque el dispositivo del primer grupo está dentro, por ejemplo, de 804,67 kilómetros (500 millas) del uno o más dispositivos del segundo grupo dentro de su agrupación. El tamaño del búfer compartido también puede depender del estado de energía del dispositivo del primer grupo. Si el dispositivo está enchufado a una fuente de alimentación o tiene un cierto nivel de batería,por ejemplo,más del 80 % de batería, el búfer compartido puede tener un tamaño mayor que el que tendría para un dispositivo que no está enchufado a una fuente de alimentación o que actualmente tiene,por ejemplo,menos del 80 % de batería. En otro ejemplo, el servidor puede determinar el tamaño del búfer compartido basándose en el tipo de dispositivo y la potencia de procesamiento disponible del dispositivo del primer grupo dentro de una agrupación,por ejemplo,el búfer compartido debe ser de 50 megabits porque el dispositivo del primer grupo es un teléfono inteligente con menos del 80 % de utilización de la CPU. Otro criterio para determinar el tamaño del búfer compartido puede ser un cierto nivel de rendimiento de reproducción,por ejemplo,debido a que el dispositivo del primer grupo dentro de una agrupación tiene menos de diez marcos descartados en visualizaciones recientes y una tasa de bits superior a cinco megabits por segundo, el búfer compartido debe ser de 200 megabits. El tamaño del búfer compartido también puede basarse en el tipo de red a la que está conectado al dispositivo del primer grupo o en la movilidad de la conexión,por ejemplo,una conexión de red de datos móviles o Wi-Fi estable o una movilidad fija. Una vez que se determina el tamaño de caché del búfer compartido, el servidor puede elegir un punto final para el búfer compartido basándose en el progreso del dispositivo del primer grupo dentro del recurso multimedia, así como del progreso dentro del recurso multimedia del uno o más dispositivos del segundo grupo con los que el dispositivo del primer grupo compartirá porciones del recurso multimedia. En algunas realizaciones, el punto final del búfer compartido puede ser el punto de tiempo en el que se encuentra actualmente el dispositivo del primer grupo. En algunas realizaciones, el punto final del búfer compartido puede ser cualquier punto de tiempo antes del punto final del búfer de progreso del primer dispositivo. El servidor puede entonces determinar el punto de inicio para el búfer compartido, basándose en el tamaño de caché del búfer compartido. En este ejemplo, las localizaciones del punto de inicio y el punto final del búfer compartido determinan las ciertas porciones del recurso multimedia que se deben mantener en el búfer y se comparten, ya que todas las porciones dentro del búfer compartido se pueden mantener en el búfer y se comparten. El servidor puede tener una cualquiera o cualquier combinación de estos metadatos intrínsecos como criterios para determinar el tamaño del búfer compartido, las localizaciones del punto de inicio del búfer compartido y el punto final del búfer compartido dentro de un recurso multimedia. En otro enfoque, el servidor puede utilizar cualquier criterio, incluidos aquellos no enumerados anteriormente, para determinar el tamaño del búfer compartido, así como las localizaciones del punto de inicio del búfer compartido y el punto final del búfer compartido.
[0045] Dichos aspectos permiten al servidor garantizar que se mantenga un tamaño de búfer ideal, basándose en las capacidades del dispositivo, en cada dispositivo del primer grupo. A partir de ahí, las porciones ideales de un recurso multimedia, para las capacidades y la posición de reproducción actual del dispositivo, también se mantienen en el búfer y se comparten. Esto evita más problemas de almacenamiento en búfer, ya que no se le indica a ningún dispositivo que funcione más allá de su capacidad.
[0047] En algunas implementaciones, el servidor puede almacenar un recurso multimedia de tal manera que el recurso multimedia esté disponible para que los dispositivos de usuario lo soliciten para su visualización. En respuesta a determinar que hay condiciones que indican problemas de almacenamiento en búfer durante la entrega del recurso multimedia, el servidor puede determinar un primer grupo de dispositivos, fuera de los dispositivos que solicitan el recurso multimedia, que son adecuados para recibir el recurso multimedia del servidor y compartir el recurso multimedia en una red. El servidor puede entonces determinar un segundo grupo de dispositivos, fuera de los dispositivos que solicitan el recurso multimedia, que son adecuados para recibir el recurso multimedia en una red desde un dispositivo fuera del primer grupo. Después de que el servidor establece el primer y el segundo grupo de dispositivos, el servidor puede determinar agrupaciones de dispositivos del primer grupo y del segundo grupo dentro de los cuales compartir y recibir el recurso multimedia. Una vez las agrupaciones están estables, el servidor puede transmitir instrucciones a los dispositivos del primer grupo para mantener en un búfer ciertas porciones del recurso multimedia y compartir ciertas porciones del recurso multimedia con los dispositivos del segundo grupo dentro de su agrupación en la red. Finalmente, el servidor puede actualizar la información detallando las porciones del recurso multimedia que los dispositivos mantienen en búfer y que se comparten. Cuando hay condiciones que indican problemas de almacenamiento en búfer durante la reproducción, es razonable que un servidor reserve un grupo de dispositivos para comenzar a compartir contenido ya almacenado en búfer con otros dispositivos. La necesidad de que el servidor entregue contenido de forma redundante se reduciría significativamente si algunos dispositivos que ya han recibido el contenido comenzaran a compartirlo con otros que aún no han recibido el contenido. También es lógico asegurarse de que los dispositivos que compartirán el contenido sean adecuados para esta tarea, para eliminar posibles problemas de reproducción o almacenamiento que de lo contrario podrían ocurrir. El siguiente paso lógico es determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir el recurso multimedia. Sería ineficiente y potencialmente ineficaz que todos los dispositivos del primer grupo compartieran contenido con todos los dispositivos del segundo grupo. Es mucho más factible determinar las mejores agrupaciones de dispositivos dentro de los cuales se compartirá y recibirá información. Por último, es razonable determinar qué porciones específicas de los recursos multimedia comparten los dispositivos del primer grupo con los dispositivos del segundo grupo dentro de su agrupación. Sería ineficaz para todos los dispositivos del primer grupo tener que almacenar y compartir cada porción del contenido que ya tienen almacenado en búfer, ya que es posible que ni siquiera tengan la capacidad de almacenar y compartir esa cantidad de contenido, y los dispositivos del segundo grupo en su agrupación pueden no necesitar todo el contenido.
[0048] Breve descripción de los dibujos
[0049] La presente divulgación, según una o más diversas realizaciones, se describe con referencia a las siguientes figuras. Los dibujos se proporcionan solo con fines ilustrativos y simplemente representan modos de realización típicos o ejemplares. Estos dibujos se incluyen para facilitar una comprensión de los conceptos divulgados en este documento y no limitan el alcance, el ámbito de aplicación ni la aplicabilidad de estos conceptos. Debe tenerse en cuenta que, para una mayor claridad y facilidad de ilustración, estos dibujos no están necesariamente hechos a escala.
[0050] La FIG. 1 es un ejemplo ilustrativo de un sistema para reproducir un recurso multimedia a una pluralidad de dispositivos que solicitan el recurso multimedia durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la presente divulgación;
[0051] la FIG.2 es un ejemplo ilustrativo de un sistema para determinar un primer y un segundo grupo de dispositivos, según algunas realizaciones de la presente divulgación;
[0052] la FIG. 3 es un ejemplo ilustrativo de un sistema para determinar grupos de dispositivos, según algunas realizaciones de la presente divulgación;
[0053] la FIG. 4 es un ejemplo ilustrativo de un sistema para aplicar un algoritmo round robin para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación;
[0054] la FIG. 5 es un ejemplo ilustrativo de un sistema para aplicar un algoritmo round robin ponderado para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación;
[0055] la FIG. 6 es un ejemplo ilustrativo de un sistema para mantener en búfer ciertas porciones de recursos multimedia dentro de uno o más dispositivos del primer grupo, y compartir esas porciones con un dispositivo del segundo grupo, según algunas realizaciones de la presente divulgación;
[0056] la FIG.7 es un ejemplo ilustrativo de un sistema para almacenar contenido multimedia en un servidor de índice y una pluralidad de servidores de red de distribución de contenido, según algunas realizaciones de la presente divulgación;
[0057] la FIG. 8 muestra un diagrama de círculos concéntricos basándose en la topología de red para indicar la distancia topológica o de salto de red entre un servidor y una pluralidad de dispositivos, según algunas realizaciones de la presente divulgación;
[0058] la FIG.9 muestra un diagrama de bloques de un sistema de medios ilustrativo, según algunas realizaciones de esta divulgación;
[0059] la FIG. 10 es un ejemplo de bloques que muestra componentes y flujo de datos entre ambos de un sistema ejemplar para reproducir un recurso multimedia a una pluralidad de dispositivos que solicitan el recurso multimedia durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la divulgación;
[0060] la FIG.11 muestra un diagrama de flujo de un proceso ilustrativo para reproducir un recurso multimedia a una pluralidad de dispositivos que solicitan el recurso multimedia durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la presente divulgación;
[0061] la FIG. 12 muestra un diagrama de flujo de un proceso ilustrativo para determinar condiciones que indican problemas de almacenamiento en búfer, según algunas realizaciones de la presente divulgación; y la FIG.13 muestra un diagrama de flujo de un proceso ilustrativo para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación.
[0062] Descripción detallada
[0063] La FIG.1 muestra un ejemplo ilustrativo de un sistema para reproducir durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la presente divulgación. En la FIG.1 se proporcionan sistemas y métodos para determinar cuándo hay condiciones en un servidor de contenido que indican problemas de almacenamiento en búfer durante la entrega de un recurso multimedia, analizar los dispositivos que solicitan el recurso multimedia para identificar un grupo de dispositivos más adecuado para compartir las porciones almacenadas en búfer del recurso multimedia y un grupo de dispositivos más adecuado para recibir las porciones almacenadas en búfer del recurso multimedia en una red entre pares, aplicar algoritmos de equilibrio de carga para determinar la distribución, y transmitir instrucciones a los dispositivos para distribuir y recibir las porciones del contenido multimedia. En algunas realizaciones, la FIG. 1 incluye el servidor 100 en el cual se aloja el recurso multimedia 102 para su entrega en reproducción a un número arbitrario ("N") de dispositivos de usuario 104, que pueden comprender diferentes tipos de dispositivos como teléfonos inteligentes, tabletas, ordenadores, televisiones y cualquier otro dispositivo multimedia configurado para recibir datos multimedia en reproducción. La FIG. 1 puede incluir servidores, dispositivos y/o redes adicionales. Por ejemplo, la funcionalidad del servidor 100 puede ser compartida entre diversos servidores (por ejemplo, como se describe a continuación, con referencia a la FIG.7). Para simplificar, en la FIG.1 se representa un único servidor 100. En algunas realizaciones, el servidor 100 recibe N solicitudes para ver el recurso multimedia 102 (por ejemplo, "Batman Returns") desde N dispositivos de usuario 104. En una implementación, el servidor 100 es un servidor de servicio de entrega de video OTT que recibe solicitudes a través de una red desde los dispositivos informáticos del usuario para ver el recurso multimedia. La red puede ser Internet, una red de área local, una red de área amplia, una red celular o cualquier otra red adecuada. El servidor OTT puede luego proporcionar el recurso multimedia para reproducción, almacenamiento local, descarga o cualquier otra operación de consumo multimedia a los dispositivos de usuario solicitantes 104.
[0064] En respuesta a, o periódicamente mientras atiende, solicitudes de dispositivos de usuario 104, el servidor 100 determina si hay condiciones que indican problemas de almacenamiento en búfer durante la entrega del recurso multimedia 102 a al menos uno de los N dispositivos de usuario 104 que solicitan el recurso multimedia 102. Las condiciones que indican problemas de almacenamiento en búfer pueden incluir una sobrecarga del servidor de borde en el servidor 100, problemas de red entre el servidor 100 y uno cualquiera de los N dispositivos de usuario 104, o cualquier otra condición de red que indique un rendimiento por debajo del óptimo. En una implementación, las condiciones que indican problemas de almacenamiento en búfer se pueden detectar en tiempo real. Por ejemplo, una entrada de usuario desde uno o más de los N dispositivos de usuario 104 puede recibirse en el servidor 100 que indica que uno o más de los N dispositivos de usuario 104 están experimentando problemas de reproducción. En los casos donde un dispositivo de usuario emplea reproducción de tasa de bits adaptable, el servidor 100 puede determinar que el dispositivo de usuario está experimentando problemas de almacenamiento en búfer basándose en una solicitud de un segmento de datos multimedia con una tasa de bits más baja en comparación con la tasa de bits de un segmento de datos multimedia solicitado previamente. Alternativamente o adicionalmente, las condiciones que indican problemas de almacenamiento en búfer pueden ser condiciones que indican la posibilidad de que ocurran problemas de almacenamiento en búfer. Por ejemplo, el servidor 100 puede tener una capacidad determinada de dispositivos de usuario, tal como 500 dispositivos de usuario, a los que puede servir simultáneamente solicitudes del recurso multimedia 102. Si el servidor 100 detecta que hay más de 500 dispositivos solicitando el recurso multimedia 102, el servidor 100 puede determinar que hay condiciones que indican problemas de almacenamiento en búfer, ya que el servidor 100 no podrá servir a todos los dispositivos solicitantes. En otro ejemplo, el servidor 100 puede recibir una indicación (por ejemplo, de otro servidor a través de una red) de que un recurso multimedia que se lanzará próximamente es un recurso multimedia popular y es probable que genere un gran número de solicitudes de visualización del servidor 100 en un período de tiempo relativamente corto.
[0066] En respuesta a determinar que hay condiciones de red que indican problemas de almacenamiento en búfer, el servidor 100 identifica un primer grupo de dispositivos 106 adecuados tanto para recibir el recurso multimedia 102 del servidor 100 como para compartir al menos una porción del recurso multimedia 102 con otros dispositivos de usuario en la red. El primer grupo de dispositivos 106 puede ser un primer subconjunto de dispositivos de los N dispositivos de usuario 104 que solicitan el recurso multimedia 102 del servidor 100. El primer grupo de dispositivos 106 puede identificarse basándose en una variedad de factores. A continuación se describen métodos ejemplares para hacerlo en conexión con la FIG.2.
[0068] El servidor 100 también identifica un segundo grupo de dispositivos 108 para los cuales se están produciendo o se producirán pronto problemas de almacenamiento en búfer que también son adecuados para recibir el recurso multimedia 102 desde un dispositivo del primer grupo de dispositivos 106. El segundo grupo de dispositivos 108 puede ser un segundo subconjunto de dispositivos de entre los N dispositivos de usuario 104 que solicitan el recurso multimedia 102 al servidor 100. Al igual que con el primer grupo de dispositivos 106, el segundo grupo de dispositivos 108 puede identificarse basándose en una variedad de factores, y a continuación se describen métodos ejemplares para hacerlo en conexión con la FIG.2.
[0070] En algunas realizaciones, después de que se determina el segundo grupo de dispositivos 108, el servidor 100 puede reducir la calidad del contenido que se transmite a los dispositivos dentro del segundo grupo. Esto garantiza que, antes de que los dispositivos del segundo grupo comiencen a recibir contenido de los dispositivos del primer grupo en una red entre pares, el búfer de progreso de cada uno de los dispositivos del segundo grupo se llene de modo que no haya interrupciones en la reproducción. Los protocolos de reproducción adaptativos usualmente prefieren la confiabilidad a la latencia, especialmente para la reproducción de video en vivo, por lo que los usuarios de los dispositivos del segundo grupo pueden estar satisfechos con una disminución temporal en la calidad de la reproducción siempre que no haya interrupciones en la reproducción.
[0071] El servidor 100 determina las agrupaciones de los dispositivos 108, 110, 112, 114, 116, 118 y 120. Cada agrupación tiene al menos un dispositivo del primer grupo de dispositivos 106 y un dispositivo del segundo grupo de dispositivos 108. En una implementación, el servidor 100 determina las agrupaciones al determinar primero los grupos de dispositivos 122 y 124. Los grupos se determinan como un paso intermedio para decidir las agrupaciones de dispositivos dentro de las cuales compartir y recibir contenido. Cuando los servidores determinan cómo distribuir porciones de recursos multimedia para compartir entre dispositivos, tener grupos de dispositivos hace que un proceso sea más simple que tener que determinar la distribución de carga entre toda la pluralidad de dispositivos que solicitan el recurso multimedia. Los grupos de dispositivos 122 y 124 se pueden determinar utilizando los métodos descritos a continuación en conexión con la FIG.3. Las agrupaciones de dispositivos 108, 110, 112, 114, 116, 118 y 120 se pueden determinar de diferentes maneras utilizando los métodos descritos a continuación en conexión con las FIGS.4 y 5.
[0073] El servidor 100 transmite instrucciones a cada dispositivo en el primer grupo de dispositivos 106 para mantener en un búfer ciertas porciones del recurso multimedia 102 para compartir en una red con los dispositivos en el segundo grupo de dispositivos 108 dentro de su respectiva agrupación. En algunas realizaciones, la red es una red entre pares. Por ejemplo, el servidor 100 envía instrucciones al dispositivo 126 para que mantenga en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 128, el servidor 100 envía instrucciones al dispositivo 130 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 132, el servidor 100 transmite instrucciones al dispositivo 134 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 136, el servidor 100 transmite instrucciones al dispositivo 138 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 140, el servidor 100 transmite instrucciones al dispositivo 142 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 144, el servidor 100 transmite instrucciones al dispositivo 146 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 148, y el servidor 100 transmite instrucciones al dispositivo 150 para mantener en el búfer determinadas porciones del recurso multimedia 102 para compartirlas con el dispositivo 152, el dispositivo 154 y el dispositivo 156. Las instrucciones pueden transmitirse utilizando los métodos que se describen a continuación en conexión con la FIG.6.
[0075] En algunas realizaciones, los dispositivos inicialmente en el primer grupo de dispositivos pueden convertirse en dispositivos del segundo grupo y los dispositivos inicialmente en el segundo grupo de dispositivos pueden convertirse en dispositivos del primer grupo. Esto es especialmente adecuado si los problemas de almacenamiento en búfer fueron causados por la sobrecarga del servidor con solicitudes del recurso multimedia,es decir,los dispositivos del segundo grupo inicial no fueron responsables de los problemas de almacenamiento en búfer. En esta situación, algunos dispositivos del segundo grupo pueden restablecer la conexión con el servidor, mientras que algunos dispositivos del primer grupo pueden perder la conexión con el servidor. Los dispositivos del segundo grupo pueden luego comenzar a compartir contenido almacenado en búfer con los dispositivos del primer grupo. En esta realización, las agrupaciones de dispositivos dentro de los cuales se comparten y reciben contenido multimedia siguen siendo las mismas, pero se invierte la dirección del tráfico de intercambio de contenido. Adicionalmente, a los dispositivos del segundo grupo se les puede dar instrucciones para que mantengan porciones del recurso multimedia 102 también en un búfer, para facilitar este tipo de uso compartido bidireccional.
[0077] En algunas realizaciones, el servidor 100 almacena un registro que detalla qué porciones del recurso multimedia 102 mantiene cada dispositivo del primer grupo de dispositivos 106 en su respectivo búfer para compartir. El servidor 100 puede actualizar el registro a medida que porciones del recurso multimedia 102 se almacenan o se expulsan del búfer de cada dispositivo del primer grupo de dispositivos 106. El servidor 100 puede actualizar esta información utilizando los métodos que se describen a continuación en conexión con la FIG.10.
[0079] Los aspectos de mejora detallados en la FIG. 1 se pueden utilizar con cualquier otra realización de esta divulgación, y se pueden combinar en cualquier combinación adecuada, tomada en parte o como un todo. Además, las acciones y descripciones descritos en relación con la FIG. 1 se pueden hacer en órdenes alternativos o en paralelo para promover además los propósitos de esta divulgación. Por ejemplo, se pueden determinar agrupaciones de dispositivos antes de determinar el primer grupo de dispositivos y el segundo grupo de dispositivos. En otro ejemplo, se pueden determinar agrupaciones de dispositivos sin determinar grupos de dispositivos. En otro ejemplo, los grupos de dispositivos pueden ser agrupaciones de dispositivos, sin que se apliquen más algoritmos de equilibrio de carga para determinar las agrupaciones dentro de cada grupo.
[0080] La FIG. 2 muestra un ejemplo ilustrativo de un sistema para determinar un primer y un segundo grupo de dispositivos, según algunas realizaciones de la presente divulgación. En algunas realizaciones, el sistema incluye el servidor 200, el recurso multimedia 202 y un número arbitrario ("N") de dispositivos de usuario 204. El sistema puede incluir servidores, dispositivos y/o redes adicionales. Por ejemplo, la funcionalidad del servidor 200 puede ser compartida entre diversos servidores, que proporcionan una solución informática en a nube (por ejemplo, como se describe a continuación, con referencia a la FIG.7). De nuevo, al igual que en la FIG.1, se representa un único servidor 200 para simplificar.
[0082] El servidor 200 identifica un primer grupo de dispositivos 206. De manera similar a la FIG.1, arriba, el primer grupo de dispositivos 206 puede ser un primer subconjunto de los N dispositivos de usuario 204 que solicitan el recurso multimedia 202, adecuado tanto para (a) recibir el recurso multimedia 202 del servidor 200 como para (b) compartir el recurso multimedia 202 en una red. El servidor 200 también puede identificar un segundo grupo de dispositivos 208, un segundo subconjunto de los N dispositivos de usuario 204 que solicitan el recurso multimedia 202, adecuados para recibir el recurso multimedia 202 en la red desde un dispositivo del primer grupo de dispositivos 206. En algunas realizaciones, identificar el primer grupo de dispositivos 206 y el segundo grupo de dispositivos 208 se basa en el tipo de entrega de contenido del recurso multimedia 202, y en los metadatos intrínsecos asociados con cada dispositivo de los N dispositivos de usuario 204 que solicitan el recurso multimedia 202. El tipo de entrega de contenido del recurso multimedia 202 puede ser en vivo o video bajo demanda (VOD). Los metadatos intrínsecos pueden ser la localización del dispositivo, el estado de potencia del dispositivo, el tipo de dispositivo, la utilización de la CPU, los parámetros de rendimiento de reproducción del dispositivo, la velocidad de bits, la red o la movilidad. En el ejemplo representado en la FIG.
[0083] 2, el recurso multimedia 202 es contenido en vivo, el primer grupo de dispositivos 206 se elige basándose en la distancia 210 de los dispositivos desde el servidor 200. Por ejemplo, todos los dispositivos del primer grupo 206 están localizados dentro de 160,93 kilómetros (100 millas) del servidor 200, y el segundo grupo de dispositivos 208 está formado por los dispositivos restantes no elegidos para estar en el primer grupo de dispositivos 208, ya que no están dentro de 160,93 kilómetros (100 millas) del servidor 200. A medida que aumenta la distancia desde el servidor 200, las transmisiones desde el servidor 200 a un dispositivo dado de los dispositivos de usuario 204 pueden pasar a través de un número cada vez mayor de nodos de red, conmutadores, enrutadores y similares antes de llegar a sus dispositivos de destino. Esto puede agregar latencia a la conexión entre el servidor 200 y el dispositivo de usuario dado, causando así problemas de almacenamiento en búfer.
[0085] La FIG. 3 es un ejemplo ilustrativo de un sistema para determinar grupos de dispositivos, según algunas realizaciones de la presente divulgación. En algunas implementaciones, determinar los grupos de dispositivos se realiza mediante un servidor,por ejemplo,el servidor 100 de la FIG.1. Los grupos de dispositivos pueden determinarse basándose en una cualquiera de o una combinación del rendimiento del dispositivo en relación con un recurso multimedia, el tipo de dispositivo, la ubicación del dispositivo y la capacidad del dispositivo para gestionar el tráfico entrante y saliente. En el ejemplo representado en la FIG. 3, los grupos se determinan basándose en el progreso del dispositivo dentro de un recurso multimedia. Para un recurso multimedia de treinta minutos, representado por la línea de tiempo 300, un primer grupo de dispositivos 302 puede estar consumiendo una primera porción del recurso multimedia mientras que un segundo grupo de dispositivos 304 está consumiendo una segunda porción del recurso multimedia. En este ejemplo, el servidor determina un primer grupo de dispositivos 306 cuyas posiciones de reproducción actuales están entre el comienzo y el minuto 5:00 del recurso multimedia y un segundo grupo de dispositivos 308 cuyas posiciones de reproducción actuales están dentro del minuto 20:00 y el final del recurso multimedia. Cada grupo contiene dispositivos tanto del primer grupo de dispositivos 302 como del segundo grupo de dispositivos 304. A medida que cada dispositivo de usuario avanza a través del recurso multimedia, el servidor puede reasignar dinámicamente dispositivos de un grupo a otro o puede generar grupos adicionales según sea necesario. Por ejemplo, algunos dispositivos de usuario en el primer grupo pueden pausar la reproducción del recurso multimedia mientras otros continúan. Esto hará que los dispositivos de usuario pausados queden detrás de aquellos dispositivos de usuario que continuaron la reproducción sin interrupciones. Si el período de tiempo durante el cual los dispositivos están en pausa es demasiado largo, los dispositivos en pausa y los dispositivos sin interrupción ya no consumirán porciones similares del recurso multimedia y, por lo tanto, no pertenecerán al mismo grupo.
[0087] Al agrupar los dispositivos de usuario, el servidor separa toda la pluralidad de dispositivos que solicitan el recurso multimedia en grupos de dispositivos que son los más adecuados para compartir y recibir contenido multimedia entre sí, porque los grupos se determinan basándose en uno o una combinación de progreso del dispositivo dentro de un recurso multimedia, tipo de dispositivo, localización del dispositivo y capacidad del dispositivo para gestionar tráfico entrante y saliente. Ahora, el servidor cuenta con múltiples grupos de dispositivos que puede gestionar de forma independiente entre sí a la hora de decidir la distribución de la carga, en lugar de deber tener en cuenta el conjunto de dispositivos que solicitan el recurso multimedia. Esto reduce el tiempo y la carga de recursos en el servidor y permite que las agrupaciones se determinen de manera más rápida y eficiente, ya que el servidor considera menos dispositivos a la vez cuando distribuir la carga de recursos multimedia entre los dispositivos.
[0089] La FIG.4 muestra un ejemplo ilustrativo de un sistema para aplicar un algoritmo round robin para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación. Los dispositivos de un primer grupo de dispositivos 400 y un segundo grupo de dispositivos 402 están incluidos en un grupo 404. El primer grupo de dispositivos 400 contiene los teléfonos inteligentes 406, 408, 410 y 412, y el segundo grupo de dispositivos 402 contiene los teléfonos inteligentes 414, 416, 418 y 420. En algunas implementaciones, determinar las agrupaciones de dispositivos lo realiza un servidor, por ejemplo, el servidor 100 de la FIG.1. El servidor puede determinar primero un algoritmo de equilibrio de carga para aplicarlo al grupo de dispositivos 404 para determinar las agrupaciones de los dispositivos 422, 424, 426 y 428. El servidor puede determinar qué algoritmo de equilibrio de carga aplicar basándose en uno cualquiera o una combinación del tipo de dispositivo, los parámetros actuales de rendimiento de reproducción del dispositivo, la calidad de la transmisión que el dispositivo puede ofrecer o el número de solicitudes que el dispositivo puede servir. Las capacidades de procesamiento de los dispositivos se pueden recuperar de una tabla de búsqueda que les otorga una puntuación de similitud y dicha tabla se actualiza periódicamente para tener en cuenta los nuevos dispositivos que están disponibles en el mercado para los consumidores.
[0091] En una realización, la puntuación de similitud se modifica temporalmente basándose en el rendimiento de reproducción informado del dispositivo. Por ejemplo, un dispositivo en el pool puede tener la misma potencia de procesamiento y capacidades informáticas que los otros dispositivos, pero su capacidad para gestionar tráfico o solicitudes se ha visto disminuida debido a factores como una conexión de red irregular, movilidad, etc. En dicho escenario, el dispositivo se puede mover a un pool diferente, como un pool que recibe solicitudes bajo el algoritmo round robin ponderado.
[0093] En el ejemplo representado en la FIG. 4, el servidor determina que un algoritmo round robin es el algoritmo apropiado, ya que los teléfonos inteligentes del primer grupo de dispositivos 400 y del segundo grupo 410 son todos del mismo tipo de dispositivo. En algunas realizaciones, la aplicación de un algoritmo round robin da como resultado que el servidor distribuya de manera uniforme el tráfico de carga desde los dispositivos del primer grupo 400 a los dispositivos del segundo grupo 402 dentro del grupo de dispositivos 404. En el ejemplo representado en la FIG.4, la aplicación de un algoritmo round robin da como resultado una primera agrupación 422, que contiene el teléfono inteligente 406 y el teléfono inteligente 414, una segunda agrupación 424, que contiene el teléfono inteligente 408 y el teléfono inteligente 416, una tercera agrupación 426, que contiene el teléfono inteligente 410 y el teléfono inteligente 418, y una cuarta agrupación 428, que contiene el teléfono inteligente 412 y el teléfono inteligente 420. En este ejemplo, los dispositivos del primer grupo 400 comparten ciertas porciones del recurso multimedia con los dispositivos del segundo grupo 402 dentro de sus respectivas agrupaciones. Por lo tanto, dentro de la agrupación 422, el teléfono inteligente 406 comparte una porción del recurso multimedia 430 con el teléfono inteligente 414; dentro de la agrupación 424, el teléfono inteligente 408 comparte una porción del recurso multimedia 432 con el teléfono inteligente 416; dentro de la agrupación 426, el teléfono inteligente 410 comparte una porción del recurso multimedia 434 con el teléfono inteligente 418; y dentro de la agrupación 428, el teléfono inteligente 412 comparte una porción del recurso multimedia 436 con el teléfono inteligente 420.
[0094] La FIG.5 muestra un ejemplo ilustrativo de un sistema para aplicar un algoritmo round robin ponderado para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación. Los dispositivos de un primer grupo de dispositivos 500 y un segundo grupo de dispositivos 502 están incluidos en un grupo 504. El primer grupo de dispositivos 500 contiene el ordenador 506, la televisión 508 y el ordenador 510, y el segundo grupo de dispositivos 502 contiene el ordenador 512, la televisión 514, el teléfono inteligente 516, el ordenador 518 y el teléfono inteligente 520. En algunas realizaciones, determinar las agrupaciones de dispositivos lo realiza un servidor, por ejemplo, el servidor 100 de la FIG.1. El servidor puede determinar primero un algoritmo de equilibrio de carga para aplicarlo al grupo de dispositivos 504 para determinar las agrupaciones de los dispositivos 522, 524 y 526. El servidor puede determinar qué algoritmo de equilibrio de carga aplicar basándose en uno cualquiera o una combinación del tipo de dispositivo, los parámetros actuales de rendimiento de reproducción del dispositivo, la calidad de la transmisión que el dispositivo puede ofrecer o el número de solicitudes que el dispositivo puede servir.
[0096] En el ejemplo representado en la FIG.5, el servidor determina que un algoritmo round robin ponderado es el algoritmo apropiado, ya que hay una mezcla de tipos de dispositivos dentro del grupo 504, incluidos teléfonos inteligentes, ordenadores y televisiones. Tras determinar que el algoritmo de round robin ponderado es el apropiado, el servidor puede asignar ponderaciones a los dispositivos del primer grupo 500 y a los del segundo grupo 502 basándose en uno o una combinación del tipo de dispositivo, los parámetros actuales de rendimiento de reproducción del dispositivo, la calidad de la transmisión que el dispositivo puede ofrecer o el número de solicitudes que cada dispositivo del primer grupo puede servir. En el ejemplo representado en la FIG. 5, las ponderaciones se asignan basándose en el tipo de dispositivo,por ejemplo,cada ordenador tiene una ponderación de dos, cada televisión tiene una ponderación de cuatro y cada teléfono inteligente tiene una ponderación de uno. En este ejemplo, debido a las ponderaciones asignadas, la aplicación del algoritmo round robin ponderado da como resultado una primera agrupación 522, que contiene el ordenador 506 (que tiene una ponderación de dos) y el ordenador 512 (que tiene una ponderación de dos); una segunda agrupación 524, que contiene la televisión 508 (que tiene una ponderación de cuatro) y la televisión 514 (que tiene una ponderación de cuatro); y una tercera agrupación 526, que contiene la televisión 510 (que tiene una ponderación de cuatro), el teléfono inteligente 516 (que tiene una ponderación de uno), el ordenador 518 (que tiene una ponderación de dos) y el teléfono inteligente 520 (que tiene una ponderación de uno). En cada agrupación, la suma de las ponderaciones de los dispositivos en el primer grupo 500 es igual a la suma de las ponderaciones de los dispositivos en el segundo grupo 502. En este ejemplo, los dispositivos del primer grupo 500 comparten ciertas porciones del recurso multimedia con los dispositivos del segundo grupo 502 dentro de sus respectivas agrupaciones. Por lo tanto, dentro de la agrupación 522, el ordenador 506 comparte una porción del recurso multimedia 528 con el ordenador 512; dentro de la agrupación 524, la televisión 508 comparte una porción del recurso multimedia 530 con la televisión 514; y dentro de la agrupación 526, la televisión 510 comparte una porción del recurso multimedia 532a con el teléfono inteligente 516, una porción del recurso multimedia 532b con el ordenador 518, y una porción del recurso multimedia 516c con el teléfono inteligente 520.
[0098] En algunas realizaciones, la aplicación del algoritmo round robin ponderado también determina cómo se comparte el recurso multimedia desde los dispositivos del primer grupo. Por ejemplo, las ponderaciones asignados por el servidor pueden dictar qué calidad de reproducciones puede servir cada dispositivo, así como también cuántas solicitudes puede servir. Por ejemplo, un dispositivo podría servir dos segmentos consecutivos cada segundo, mientras que otro podría servir solo un segmento cada segundo. Dichos clientes mantienen distintos tamaños de caché, ya que gestionan distintos números de solicitudes.
[0100] La FIG.6 muestra un ejemplo ilustrativo de un sistema para mantener en búfer ciertas porciones de recursos multimedia dentro de uno o más dispositivos del primer grupo, y compartir esas porciones con un dispositivo del segundo grupo, según algunas realizaciones de la presente divulgación. Tanto el ordenador 600 como la televisión 602 pueden ser dispositivos del primer grupo que estén en la misma agrupación que el teléfono inteligente 604, un dispositivo del segundo grupo. El ordenador 600 está reproduciendo el recurso multimedia 606. La barra de progreso 608 representa el progreso de visualización a través del recurso multimedia 606 en el ordenador 600. El indicador de posición de reproducción 610 representa la posición de reproducción actual para el ordenador 600, como por ejemplo 0:55:00, o cincuenta y cinco minutos después del inicio del recurso multimedia 606. Como parte de sus operaciones normales al recibir contenido multimedia en tiempo real, el ordenador 600 puede mantener un búfer de progreso que contiene una cantidad de datos multimedia por delante de la posición de reproducción actual, representada por la barra sombreada 612. El ordenador 600 también recibe instrucciones, por ejemplo, del servidor 100 de la FIG.1, para mantener los datos multimedia anteriores a la posición de reproducción actual en un búfer compartido, representado por la barra sombreada 614. En algunas implementaciones, la barra de progreso 608 se muestra como una superposición sobre la reproducción del recurso multimedia 606 en el ordenador 600. La superposición se puede mostrar en respuesta a una entrada del usuario o se puede mostrar siempre.
[0102] La televisión 602 también está reproduciendo el recurso multimedia 606. La barra de progreso 616 representa el progreso de visualización a través del recurso multimedia 606 en la televisión 602. El indicador de posición de reproducción 618 representa la posición de reproducción actual para la televisión 602, como por ejemplo 1:10:00, o una hora y diez minutos después del inicio del recurso multimedia 606. La televisión 602, al igual que el ordenador 600, normalmente puede mantener un búfer de progreso, representado por la barra sombreada 620, y recibir instrucciones para mantener los datos multimedia antes de la posición de reproducción actual en un búfer compartido, representado por la barra sombreada 622. En algunas implementaciones, la barra de progreso 616 se muestra como una superposición sobre la reproducción del recurso multimedia 606 en la televisión 602. La superposición se puede mostrar en respuesta a una entrada del usuario o se puede mostrar siempre. El teléfono inteligente 604 también reproduce el recurso multimedia 606. La barra de progreso 624 representa el progreso de visualización a través del recurso multimedia 606 en el teléfono inteligente 604. El indicador de posición de reproducción actual 626 representa la posición de reproducción actual para el teléfono inteligente 604, como por ejemplo 0:50:00, o cincuenta minutos después del inicio del recurso multimedia 606, y un búfer de progreso 628. En algunas implementaciones, la barra de progreso 624 se muestra como una superposición sobre la reproducción del recurso multimedia 606 en el teléfono inteligente 604. La superposición se puede mostrar en respuesta a una entrada del usuario o se puede mostrar siempre.
[0104] En algunas realizaciones, un búfer de progreso es la porción de un recurso multimedia que un dispositivo mantiene en un búfer y almacena con el fin de que el propio dispositivo sea capaz de continuar reproduciendo el recurso multimedia. En algunas realizaciones, un búfer compartido es una porción de un recurso multimedia que un dispositivo mantiene en un búfer y almacena con el fin de compartir la porción con otro dispositivo para que el otro dispositivo la vea.
[0106] En algunas realizaciones, el tamaño y el contenido del búfer compartido se determinan para cada dispositivo del primer grupo a través de la aplicación de un algoritmo de tamaño de caché dinámico. El algoritmo de tamaño de caché dinámico puede basarse en uno o una combinación del progreso del dispositivo dentro del recurso multimedia, el tipo de entrega de contenido y cualquier tipo de metadatos intrínsecos asociados con el dispositivo, incluida la localización del dispositivo, el estado de energía del dispositivo, el tipo de dispositivo, la utilización de la CPU, las métricas de rendimiento de reproducción del dispositivo, la tasa de bits, la red o la movilidad. En el ejemplo representado en la FIG. 6, el tamaño de caché del búfer compartido 614 es menor que el tamaño de caché del búfer compartido 622. Esto puede deberse a que el ordenador 600 tiene menos capacidad de almacenamiento que la televisión 602, o a que la televisión 602 ha progresado más dentro del recurso multimedia 606 que el ordenador 600, o una cualquiera o una combinación de las razones enumeradas anteriormente.
[0108] En algunas realizaciones, una vez que se determina el tamaño de caché de un búfer compartido, a continuación se puede determinar un punto final para el búfer compartido. El punto final del búfer compartido puede estar en cualquier lugar dentro de un recurso multimedia antes del final del búfer de progreso de un recurso multimedia. El punto final del búfer compartido puede determinarse basándose en el avance del dispositivo del primer grupo dentro del recurso multimedia, así como del progreso dentro del recurso multimedia de uno o más dispositivos del segundo grupo con los que el dispositivo del primer grupo compartirá porciones del recurso multimedia.
[0109] En el ejemplo representado en la FIG. 6, se determina que el punto final del búfer compartido 614 para el dispositivo 600 está en el indicador de posición de reproducción actual 610, y se determina que el punto final del búfer compartido 622 para el dispositivo 602 está en el indicador de posición de reproducción actual 618. En algunas realizaciones, una vez que se determina el punto final de un búfer compartido, a continuación se puede determinar un punto de inicio para el búfer compartido, basándose en el tamaño de caché del búfer compartido. En este ejemplo, las localizaciones del punto de inicio del búfer compartido y el punto final del búfer compartido determinan las ciertas porciones del recurso multimedia que se mantienen en el búfer y se comparten, ya que todas las porciones dentro del búfer compartido se pueden mantener en el búfer y se comparten.
[0111] Una vez que se determinan el punto de inicio y el punto final del búfer compartido, las porciones dentro del búfer compartido pueden mantenerse en el búfer y se comparten. En el ejemplo representado en la FIG.6, el ordenador 600 mantiene el búfer compartido 614 en un búfer y comparte las ciertas porciones de recursos multimedia 630a que están dentro del búfer compartido 614 con el teléfono inteligente 604. También en el ejemplo representado en la FIG.6, la televisión 602 mantiene el búfer compartido 622 en un búfer y comparte las ciertas porciones de recursos multimedia 630b que están dentro del búfer compartido 622 con el teléfono inteligente 604. El teléfono inteligente 604 almacena las porciones de recursos multimedia recibidos 630a y 630b en su propio búfer de progreso 628.
[0113] La FIG.7 muestra un ejemplo ilustrativo de un sistema para almacenar contenido multimedia en un servidor de índice y una pluralidad de servidores de red de distribución de contenido, según algunas realizaciones de la presente divulgación. En algunas realizaciones, el sistema incluye un servidor de índice 700, el primer servidor de red de entrega de contenido (CDN 1) 702, el segundo servidor de red de entrega de contenido (CDN 2) 704, y el tercer servidor de red de entrega de contenido (CDN 3) 706. En algunas realizaciones, cada servidor CDN se encuentra en una localización geográfica diferente y está destinado a servir a los dispositivos de usuario en su respectiva localización geográfica. Por ejemplo, CDN 1702 puede estar localizado en Montgomery, Alabama y está destinado a entregar contenido de reproducción a dispositivos de usuario cercanos a esa localización, como la primera localización 708, la segunda localización 710 y la tercera localización 712. Si CDN 1702 está localizado en Montgomery, Alabama, la primera localización 708 puede ser todo el estado de Alabama, la segunda localización 710 puede ser todo el estado de Mississippi y la tercera localización 712 puede ser todo el estado de Georgia. CDN 2704 puede estar localizado en Pierre, Dakota del Sur, y su propósito es entregar contenido de reproducción a dispositivos de usuarios cercanos a esa localización, como la cuarta localización 714, la quinta localización 716 y la sexta localización 718. Si CDN 2704 está localizado en Pierre, Dakota del Sur, la cuarta localización 714 puede ser todo el estado de Dakota del Sur, la quinta localización 716 puede ser todo el estado de Dakota del Norte y la sexta localización 718 puede ser todo el estado de Nebraska. CDN 3 706 puede estar localizado en Nueva York, Nueva York, y está destinado a entregar contenido de reproducción a dispositivos de usuario cercanos a esa localización, como una séptima localización 720, una octava localización 722 y una novena localización 724. Si CDN 3706 está localizado en Nueva York, Nueva York, entonces la séptima localización 720 puede ser todo el estado de Nueva York, la octava localización 722 puede ser todo el estado de Nueva Jersey y la novena localización 724 puede ser todo el estado de Pensilvania.
[0114] En algunas realizaciones, la funcionalidad del servidor 100 de la FIG. 1 puede compartirse entre diversos servidores. Los dispositivos de usuarios, según su localización geográfica, pueden estar utilizando distintos servidores de redes de distribución de contenidos (CDN) para la transmisión de contenidos. La FIG. 7 representa un ejemplo de una topología en la que hay tres CDN diferentes que atienden a diferentes localizaciones, así como un servidor de índice independiente, que almacena los detalles de qué porciones de recursos multimedia los dispositivos mantienen en búfer y que se comparten. En algunas realizaciones, también se puede proporcionar más de un servidor de índice, y cada servidor de índice atiende un área geográfica diferente que cubre diversas localizaciones atendidas por diferentes CDN. En algunas realizaciones, las CDN 704, 706 y 708 son servidores de borde que reciben recursos multimedia desde un servidor de almacenamiento central para reproducirse a dispositivos cliente localizados cerca de cada CDN respectiva.
[0116] Como cada servidor CDN comparte porciones de recursos multimedia con dispositivos de usuario, cada uno transmite (726a, 726b, 726c) actualizaciones al servidor de índice 700 que almacena detalles de qué dispositivos de usuario han recibido qué porciones de recursos multimedia. Los servidores CDN también pueden rastrear qué dispositivos de usuario comparten porciones de recursos multimedia con otros dispositivos de usuario. Cuando se comparten porciones de recursos multimedia desde dispositivos de usuario en lugar de servidores CDN, los servidores CDN también pueden transmitir esta información al servidor de índice 700, que almacena los detalles de qué porciones de recursos multimedia mantiene cada dispositivo de usuario en su respectivo búfer y comparte con otros dispositivos de usuario.
[0118] En una realización, el número de dispositivos del segundo grupo,es decir,dispositivos que se desconectarán de la reproducción directamente desde los servidores de borde de las CDN, es equivalente al delta (número de dispositivos) en el cual un servidor de borde comenzó a experimentar una sobrecarga. Por ejemplo, un servidor de borde típico podría soportar diversas sesiones de reproducción simultáneamente, por ejemplo, 5000 sesiones de reproducción. Sin embargo, el servidor de borde podría sobrecargarse cuando un número sustancial de dispositivos adicionales se conectan a él si no tiene suficiente potencia informática para soportar sesiones adicionales. Para gestionar esto, el servidor de índice puede clasificar los servidores de borde para determinar de qué servidor de borde (por ejemplo, CDN 1702, CDN 2704 o CDN 3706) desconectar a los clientes. Dicha clasificación puede basarse en una o una combinación del número de sesiones de reproducción soportadas y el contenido servido.
[0120] En algunas realizaciones, el uno o más servidores de índice sondean constantemente las CDN en su área geográfica para verificar su estado y determinar si están sobrecargadas. El servidor de índice conoce las especificaciones de hardware de cada CDN, por ejemplo, CPU y memoria. En una realización, el servidor de índice estima el número de conexiones que el servidor puede soportar basándose en las especificaciones de hardware del servidor. En algunas realizaciones, el servidor de índice sabe qué dispositivos están conectados a qué servidores de borde de qué CDN. El servidor de índice, a través del encabezado del agente de usuario, también puede conocer los tipos de dispositivos que reproducen el recurso multimedia, por ejemplo, teléfonos inteligentes, televisiones u ordenadores. El servidor de índice también puede ser consciente del tipo de contenido que se está reproduciendo,por ejemplo,películas VOD o retransmisiones deportivas en directo, así como las porciones del contenido que se están reproduciendo, por ejemplo, el servidor de índice puede ser consciente de que una pluralidad de dispositivos cliente están a quince minutos de un recurso multimedia, mientras que otros están a treinta minutos del final de un recurso multimedia.
[0122] La FIG. 8 muestra un diagrama de círculos concéntricos basándose en la topología de red para indicar la distancia topológica o de salto de red entre un servidor y una pluralidad de dispositivos, según algunas realizaciones de la presente divulgación. En algunas realizaciones, el sistema incluye el servidor 800, que puede ser similar al servidor 100 de la FIG.1 o uno cualquiera de los CDN 1702, CDN 2704 o CDN 3706 de la FIG. 7. El servidor 800 está localizado en una primera área 802. Los dispositivos de usuario pueden estar localizados en una primera área 802, más lejos del servidor 800 en una segunda área 804, o incluso más lejos del servidor 800 en una tercera área 806. En el caso de que el servidor 800 sea similar a un servidor CDN, un servidor de índice, similar al servidor de índice 700 de la FIG.7, también está presente y puede estar llevando a cabo algunos o todos los procesos descritos a continuación. El servidor de índice no puede localizarse junto al servidor 800 y puede estar localizado en cualquiera de las áreas 802, 804 y 806 o en cualquier otra localización adecuada. A medida que aumenta la distancia desde el servidor 800, aumenta el número de saltos de red necesarios para una transmisión desde el servidor 800 a un dispositivo de usuario. El aumento resultante en la latencia es una condición que indica problemas de almacenamiento en búfer para los dispositivos de usuario dentro del tercer área 806 que están solicitando un recurso multimedia para ver desde el servidor 800. En este ejemplo, los dispositivos de usuario dentro del tercer área 806 son los más alejados del servidor 800, ya sea topológicamente o en términos de salto de red, los dispositivos de usuario dentro del segundo área 804 son los más cercanos al servidor 800, y los dispositivos de usuario dentro del primer área 802 son los más cercanos al servidor 800, ya que están esencialmente localizados con el servidor 800.
[0124] En algunas realizaciones, cuando el servidor 800 determina que hay condiciones que indican problemas de almacenamiento en búfer para los dispositivos de usuario dentro del tercer área 806, el servidor 800 determina que los dispositivos de usuario dentro del segundo área 804 están topológicamente o en términos de salto de red cerca de los dispositivos de usuario en el tercer área 806, y el servidor 800 instruye a los dispositivos de usuario dentro del segundo área 804 para que comiencen el proceso de mantener un búfer compartido de porciones de recursos multimedia para compartir con los dispositivos de usuario dentro del tercer área 806 (por ejemplo,como se describió anteriormente con referencia a la FIG.6). En algunas realizaciones, el servidor 800 puede determinar entonces que hay dispositivos de usuario dentro del primer área 802 están topológicamente o en términos de salto de red cerca de los dispositivos de usuario en el tercer área 806, y el servidor 800 instruye a los dispositivos de usuario dentro del primer área 802 para que comiencen el proceso de mantener un búfer compartido, de menor tamaño que el instruido a los dispositivos de usuario en el segundo área 804, con porciones de recursos multimedia que se compartirán con los dispositivos de usuario dentro del tercer área 806 (por ejemplo, como se describió anteriormente con referencia a la FIG.6).
[0126] En algunas realizaciones, pueden ocurrir condiciones que indiquen problemas de almacenamiento en búfer para dispositivos de usuario en diferentes localizaciones geográficas. La topología de red representada en la FIG. 8 se puede trazar en base a círculos concéntricos centrados en cualquiera de esas localizaciones geográficas y activar una serie similar de operaciones de distribución de carga entre dispositivos dentro de diferentes áreas en relación con esas localizaciones geográficas.
[0128] La FIG. 9 es un diagrama de un sistema de reproducción ilustrativo, según algunas realizaciones de la divulgación. Los dispositivos de usuario 900, 902, 904 (por ejemplo,uno cualquiera de los N dispositivos de usuario 104 de la FIG. 1) pueden estar acoplados a la red de comunicación 906. La red de comunicaciones 906 puede ser una o más redes que incluyen Internet, una red telefónica móvil, una red de voz o datos móvil (por ejemplo, una red 4G o LTE), una red por cable, una red telefónica pública conmutada, u otros tipos de red de comunicaciones o combinaciones de redes de comunicaciones. En algunas realizaciones, la red de comunicación 906 es la red de la FIG.1 a través de la cual el servidor de servicio de entrega de video OTT 100 recibe solicitudes. Los rutas de comunicación 908, 910 y 912 pueden incluir, por separado o en conjunto, una o más rutas de comunicaciones, como un ruta por satélite, un ruta de fibra óptica, un ruta por cable, un ruta que soporte comunicaciones por Internet (por ejemplo, IPTV), conexiones de espacio libre (por ejemplo, para radiodifusión u otras señales inalámbricas), o cualquier otra ruta de comunicaciones alámbricas o inalámbricas adecuada o una combinación de dichas rutas. Las rutas de comunicación 908, 910 y 912 pueden ser bidireccionales. Las comunicaciones con los dispositivos cliente pueden proporcionarse a través de una o más de estas rutas de comunicaciones, pero en la FIG. 9 se muestran como una única ruta para no complicar en exceso el dibujo.
[0130] Aunque no están dibujadas rutas de comunicaciones entre dispositivos de equipo de usuario, estos dispositivos pueden comunicarse directamente entre sí a través de rutas de comunicaciones, así como otras rutas de comunicaciones punto a punto de corto alcance, como cables USB, cables IEEE 1394, rutas inalámbricas que incluyen Bluetooth, infrarrojas, IEEE 802.11x (Wi-Fi), etc., u otra ruta de comunicación de corto alcance a través de rutas por cable o inalámbricas. Los dispositivos también pueden comunicarse entre sí directamente a través de una ruta indirecta a través de la red de comunicación 906.
[0132] Una fuente de contenido multimedia 914 está acoplada a la red de comunicación 906. La fuente de contenido multimedia 914 puede ser un servidor CDN como los descritos anteriormente en relación con la FIG. 7. Un servidor 916 también está acoplado a la red de comunicaciones 906 y puede comprender o estar asociado a la base de datos 918. Las comunicaciones con la fuente de contenido multimedia 914 pueden intercambiarse a través de una o más rutas de comunicación unidireccionales o bidireccionales 918 y las comunicaciones con el servidor 916 pueden intercambiarse de manera similar a través de una o más rutas de comunicación unidireccionales o bidireccionales 920 (ambas se muestran como rutas individuales para evitar complicar demasiado el dibujo). Además, puede haber más de una fuente de contenido multimedia 914 y más de un servidor 916, pero en la FIG.9 solo se muestra uno de cada uno para no complicar demasiado el dibujo. Si se desea, la fuente de contenido multimedia 914 y el servidor 916 pueden estar integrados como un dispositivo fuente.
[0133] En algunos ejemplos, los procesos detallados anteriormente se realizan por el servidor 100 de la FIG. 1. En algunas realizaciones, el servidor 916 puede incluir el circuito de control 922 y un almacenamiento 924(por ejemplo,RAM, ROM, disco duro, medio de almacenamiento extraíble, unidad de estado sólido, etc.). En algunas realizaciones, el almacenamiento 924 puede almacenar instrucciones que, cuando se ejecutan por el circuito de control 922, pueden provocar la ejecución de los procesos detallados anteriormente.
[0135] El servidor 916 también puede incluir una ruta de entrada/salida 926. La ruta de I/O 926 puede proporcionar información del dispositivo, u otros datos, a través de una red de área local (LAN) o una red de área amplia (WAN), y/u otro contenido y datos al circuito de control 922, y almacenamiento 924. Los circuitos de control 922 puede utilizarse para enviar y recibir comandos, solicitudes y otros datos adecuados utilizando la ruta de I/O 926, la cual puede comprender el circuito de I/O. La ruta de I/O 926 puede conectar el circuito de control 922 a una o más rutas de comunicaciones.
[0137] El circuito de control 922 puede basarse en cualquier circuito de procesamiento adecuado, como uno o más microprocesadores, microcontroladores, procesadores de señal digital, dispositivos lógicos programables, matrices de puertas programables in situ (FPGA), circuitos integrados de aplicación específica (ASIC), etc., y puede incluir un procesador multinúcleo (por ejemplo, de dos, cuatro o seis núcleos, o cualquier número adecuado de núcleos) o un superordenador. En algunas realizaciones, el circuito de control 922 puede distribuirse a lo largo de múltiples procesadores o unidades de procesamiento independientes, por ejemplo, múltiples unidades de procesamiento del mismo tipo (por ejemplo,dos procesadores Intel Core i7) o múltiples procesadores diferentes (por ejemplo,un procesador Intel Core i5 y un procesador Intel Core i7). En algunas realizaciones, el circuito de control 922 ejecuta instrucciones para una aplicación de sistema de emulación almacenada en la memoria (por ejemplo, el almacenamiento 924). La memoria puede ser un dispositivo de almacenamiento electrónico proporcionado como el almacenamiento 924 que forma parte del circuito de control 922.
[0139] Los dispositivos de usuario (por ejemplo,los dispositivos de usuario 900, 902 y 904) pueden funcionar en un entorno de computación en la nube para acceder a servicios en la nube. En un entorno informático en la nube, diversos tipos de servicios informáticos para compartir, almacenar o distribuir contenido (por ejemplo,sitios web para compartir vídeos o redes sociales) se proporcionan mediante una colección de recursos informáticos y almacenamiento accesibles en red, denominados "la nube". Por ejemplo, la nube puede incluir una colección de dispositivos informáticos servidores (como el servidor 916), que pueden estar localizados centralmente o en localizaciones distribuidas, que proporcionan servicios basados en la nube a diversos tipos de usuarios y dispositivos conectados a través de una red tal como Internet a través de la red de comunicación 906. En dichas realizaciones, los dispositivos pueden funcionar de una manera entre pares sin comunicarse con un servidor central.
[0141] La FIG.10 es un diagrama de bloques que muestra componentes y flujo de datos entre ambos de un sistema ejemplar para reproducir un recurso multimedia a una pluralidad de dispositivos que solicitan el recurso multimedia durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la divulgación. Los dispositivos cliente 1000, que pueden ser cualquier dispositivo capaz de solicitar contenido multimedia (por ejemplo,un teléfono inteligente, una televisión inteligente, una tableta o un ordenador), transmiten 1002 solicitudes para un recurso multimedia, información sobre condiciones que indican problemas de almacenamiento en búfer, información de conectividad de red, información sobre metadatos intrínsecos del dispositivo, e información sobre las propiedades del recurso multimedia que se solicita al circuito de control 1004. El circuito de control 1004 puede basarse en cualquier circuito de procesamiento adecuado y comprende circuitos de control y circuitos de memoria, que pueden estar dispuestos en un solo circuito integrado o pueden ser componentes discretos. Tal como se refiere en este documento, el circuito de procesamiento debe entenderse como circuitos basados en uno o más microprocesadores, microcontroladores, procesadores de señales digitales, dispositivos lógicos programables, matrices de puertas programables en campo (FPGA), circuitos integrados específicos de aplicación (ASIC), etc., y pueden incluir un procesador multinúcleo (por ejemplo, de doble núcleo, cuádruple núcleo, hexa-núcleo o cualquier número adecuado de núcleos). En algunas realizaciones, el circuito de procesamiento puede estar distribuido por múltiples procesadores o unidades de procesamiento separados, 10 por ejemplo, múltiples unidades de procesamiento del mismo tipo (por ejemplo,dos procesadores Intel Core i7) o múltiples procesadores diferentes (por ejemplo,un procesador Intel Core i5 y un procesador Intel Core i7).
[0143] El circuito de control 1004 recibe, a través del circuito transceptor 1006, las solicitudes transmitidas del recurso multimedia, la información sobre las condiciones que indican problemas de almacenamiento en búfer, la información sobre la conectividad de red, la información sobre los metadatos intrínsecos del dispositivo y la información sobre las propiedades del recurso multimedia solicitado. El circuito transceptor 1006 comprende una conexión de red a través de la cual se pueden transmitir y recibir datos desde dispositivos remotos, como una conexión Ethernet, una conexión Wi-Fi o una conexión que emplee cualquier protocolo de red adecuado. El circuito transceptor 1006 envía información de conectividad de red 1008 a la memoria 1010. La memoria 1010 puede ser un dispositivo de almacenamiento electrónico (por ejemplo,RAM, ROM, disco duro, disco extraíble, etc.). La información de conectividad de red se almacena en una porción de la memoria 1010, el almacenamiento de datos de red 1012. El circuito transceptor 1006 también envía 1014 solicitudes para el recurso multimedia, información sobre condiciones que indican problemas de almacenamiento en búfer, información sobre la conectividad de red, información sobre los metadatos intrínsecos del dispositivo e información sobre las propiedades del recurso multimedia solicitado para el circuito de procesamiento entre pares 1016.
[0145] El circuito de procesamiento entre pares 1016 determina si hay condiciones que indican problemas de almacenamiento en búfer y para qué dispositivos puede haber problemas basándose en la información sobre las condiciones que indican problemas de almacenamiento en búfer, y la información de conectividad de red enviada al circuito de control 1004. Basándose en qué dispositivos pueden estar experimentando problemas, así como de las solicitudes de un recurso multimedia, información sobre metadatos intrínsecos del dispositivo, e información sobre las propiedades del recurso multimedia, el circuito de procesamiento entre pares 1016 identifica un primer grupo de dispositivos adecuados para recibir el recurso multimedia y compartir el recurso multimedia en una red, así como un segundo grupo de dispositivos adecuados para recibir el recurso multimedia en una red desde un dispositivo fuera del primer grupo. Luego, el circuito de procesamiento entre pares 1016 determina agrupaciones de dispositivos del primer grupo y del segundo grupo, basándose en las solicitudes de un recurso multimedia, información sobre metadatos intrínsecos del dispositivo e información sobre las propiedades del recurso multimedia. Para determinar estas agrupaciones, el circuito de procesamiento entre pares 1016 puede determinar primero los grupos de dispositivos que solicitan el recurso multimedia, luego aplicar algoritmos de equilibrio de carga, como un algoritmo round robin o un algoritmo round robin ponderado, a los grupos.
[0147] El circuito de procesamiento entre pares 1016 luego construye instrucciones que describen qué dispositivos se mantienen en un búfer ciertas porciones del recurso multimedia para compartir con otros dispositivos en una red basándose en las agrupaciones determinadas. El circuito de procesamiento entre pares 1016 transmite 1018 estas instrucciones al circuito transceptor 1006. El circuito transceptor 1006 a su vez transmite 1020 estas instrucciones a los dispositivos cliente 1000. El circuito transceptor 1006 también envía 1022 a la memoria 1010 información que detalla qué dispositivos mantienen ciertas porciones del recurso multimedia en un búfer para compartir con otros dispositivos en una red. Esta información se almacena en una porción de la memoria 1010, el almacenamiento de datos del búfer 1024. A medida que se reciben solicitudes adicionales, datos de conectividad de red y datos del búfer procedentes de los dispositivos cliente 1000, la memoria 1010 envía 1026 al circuito de procesamiento entre pares 1016 información que detalla los datos de red y qué dispositivos mantienen ciertas porciones del recurso multimedia en un búfer para compartirlas con otros dispositivos de una red. Esta información permite al circuito de procesamiento entre pares 1016 construir instrucciones adicionales de qué dispositivos se mantienen en un búfer ciertas porciones del recurso multimedia para compartir con otros dispositivos en una red.
[0149] En algunas realizaciones, el dispositivo en el cual reside el circuito de control 1004 es responsable no solo de gestionar el procesamiento entre pares y las instrucciones de uso compartido multimedia, sino también del almacenamiento de recursos multimedia que se reproducirán a los dispositivos de usuario. En estas realizaciones, se pueden utilizar porciones adicionales de la memoria 1010 para el almacenamiento de datos multimedia que representan uno o más recursos multimedia.
[0151] En una realización, el circuito de procesamiento entre pares 1016 transmite a los dispositivos cliente, a través del circuito transceptor 1006, un manifiesto universal. El manifiesto universal instruye a todos los dispositivos del primer grupo en un grupo sobre qué segmentos almacenar en caché en un búfer en anticipación de que dichos segmentos deberán entregarse a dispositivos cliente que están detrás de otros dispositivos cliente en la reproducción del recurso multimedia,por ejemplo,un dispositivo cliente puede estar 30 segundos detrás de otro dispositivo cliente en la reproducción. Dicha determinación puede realizarse basándose en si el dispositivo es parte de una agrupación cuya carga se equilibra según un algoritmo round robin o un algoritmo round robin ponderado, como se describió anteriormente. En algunas implementaciones, el manifiesto universal puede instruir a todos los dispositivos del grupo que almacenen en caché ciertas porciones del recurso multimedia. El manifiesto también incluye información sobre qué segmentos han sido almacenados en caché por cada dispositivo en el grupo y durante cuánto tiempo. Por lo tanto, los clientes que reproducen directamente desde el servidor pueden confiar en otros clientes (por ejemplo,a través de entre pares) que almacenan contenido en caché para recuperar segmentos cuando realizan la función de reproducción trucada. En algunas realizaciones, se puede generar un manifiesto de reproducción de trucos dedicado en base a los segmentos actualmente almacenados en caché o los segmentos que se almacenarán en caché en base a un algoritmo de anticipación que utiliza el dispositivo en el que reside el circuito de control. El contenido de dicho manifiesto puede cambiar durante la reproducción de una película a medida que diferentes clientes sirven los segmentos que debían servir y ya no necesitan almacenarlos en caché (según el encabezado HTTP Cache-Control).
[0153] La FIG.11 muestra un diagrama de flujo de un proceso ilustrativo 1100 para reproducir un recurso multimedia a una pluralidad de dispositivos que solicitan el recurso multimedia durante la indisponibilidad de un servidor de contenido, según algunas realizaciones de la presente divulgación. El proceso 1100 puede implementarse en el circuito de control 1004. Además, una o más acciones del proceso 1100 pueden incorporarse o combinarse con una o más acciones de cualquier otro proceso o realización descritos en este documento.
[0154] En 1102, el circuito de control 1004 almacena un recurso multimedia (por ejemplo, el recurso multimedia 102 de la FIG.1) en un servidor (por ejemplo,el servidor 100 de la FIG.1) o en la memoria (por ejemplo,la memoria 1010). El recurso multimedia almacenado puede comprender un archivo multimedia completo o puede comprender una pluralidad de segmentos multimedia. En 1104, el circuito de control 1004 monitorea las solicitudes del recurso multimedia desde los dispositivos de usuario (por ejemplo,N dispositivos de usuario 104 de la FIG. 1). Por ejemplo, el circuito de control 1004 puede monitorear la frecuencia de solicitudes de cada dispositivo de usuario. Una disminución en la frecuencia de las solicitudes recibidas de un dispositivo de usuario en particular puede indicar que hay limitaciones de ancho de banda y/o latencia en la conexión de red del dispositivo de usuario en particular. El circuito de control 1004 también puede recibir, como parte de las solicitudes o como transmisiones separadas, datos de conectividad de red de cada dispositivo de usuario. El circuito de control 1004 monitorea los datos de conectividad de red para identificar una disminución en el rendimiento de cualquier dispositivo del usuario. En 1106, el circuito de control 1004 determina si hay condiciones que indiquen problemas de almacenamiento en búfer. A continuación se describen métodos para llevar esto a cabo en conexión con la FIG. 12. Si no hay condiciones que indiquen problemas de almacenamiento en búfer ("No" en 1106), entonces el procesamiento regresa a 1104, donde el circuito de control 1004 continúa para monitorear las solicitudes del recurso multimedia.
[0156] Si hay condiciones que indican problemas de almacenamiento en búfer ("Sí" en 1106), entonces, en 1108, el circuito de control identifica un primer grupo de dispositivos adecuados para recibir el recurso multimedia y compartir el recurso multimedia en una red. Por ejemplo, se puede determinar que todos los dispositivos dentro de 160,93 kilómetros (100 millas) del servidor están dentro del primer grupo de dispositivos. En 1110, el circuito de control identifica un segundo grupo de dispositivos adecuados para recibir el recurso multimedia en una red desde un dispositivo fuera del primer grupo. En 1112, el circuito de control 1004 determina agrupaciones de dispositivos del primer grupo y del segundo grupo. A continuación se describen métodos para llevar esto a cabo en conexión con la FIG.13. En 1114, el circuito de control 1004 transmite instrucciones a los dispositivos del primer grupo para mantener en un búfer ciertas porciones del recurso multimedia para compartirlas en una red con los dispositivos del segundo grupo dentro de su agrupación. Por ejemplo, un dispositivo del primer grupo puede recibir la instrucción de mantener un búfer de 100 megabits desde el inicio de la película hasta que finalice diez minutos después de iniciada la película. En 1116, el circuito de control 1004 actualiza la información en el servidor con detalles de las porciones del recurso multimedia que los dispositivos del primer grupo mantienen en un búfer y que se comparten. Por ejemplo, el servidor recibirá y almacenará información actualizada sobre un dispositivo del primer grupo que mantiene un búfer de 100 megabits desde el inicio de la película hasta los diez minutos de la reproducción en la película. Luego, el procesamiento regresa a 1104, donde el circuito de control 1004 continúa para monitorear las solicitudes del recurso multimedia desde los dispositivos.
[0158] Se pueden utilizar las acciones o descripciones de la FIG.11 con cualquier otra realización de esta divulgación. Además, las acciones y descripciones descritos en relación con la FIG. 11 se pueden hacer en órdenes alternativos adecuados o en paralelo para promover los propósitos de esta divulgación.
[0160] La FIG.12 muestra un diagrama de flujo de un proceso ilustrativo 1200 para determinar condiciones que indican problemas de almacenamiento en búfer, según algunas realizaciones de la presente divulgación. El proceso 1200 puede implementarse en el circuito de control 1004. Además, una o más acciones del proceso 1200 pueden incorporarse o combinarse con una o más acciones de cualquier otro proceso o realización descritos en este documento.
[0162] En 1202, el circuito de control 1004 monitorea las solicitudes de un recurso multimedia desde los dispositivos de usuario (por ejemplo, N dispositivos de usuario 104 de la FIG.1). A continuación se describen métodos para llevar esto a cabo en conexión con la FIG.11. En 1204, el circuito de control 1004 determina si el número de dispositivos que solicitan el recurso multimedia es mayor que la capacidad del servidor de borde (por ejemplo,el servidor 100 de la FIG.1, o uno cualquiera de los CDN 1702, CDN 2704 o CDN 3706 de la FIG. 7). Por ejemplo, un servidor de borde puede ser capaz de abrir un cierto número de conexiones de red simultáneas a la vez. Esto limita la capacidad del servidor de borde para servir simultáneamente solo el número de dispositivos correspondiente al número de conexiones de red simultáneas que el servidor de borde puede abrir. Si el número de dispositivos que solicitan el recurso multimedia no es mayor que la capacidad del servidor de borde ("No" en 1204), entonces, en 1206, el circuito de control 1004 determina donde hay problemas de red entre al menos un dispositivo y el servidor de borde. Por ejemplo, se puede detectar un rendimiento lento de Internet en múltiples dispositivos de los dispositivos que solicitan contenido multimedia del servidor de borde. Si no hay problemas de red entre ninguno de los dispositivos y el servidor ("No" en 1206), entonces el procesamiento vuelve a 1202. Si el número de dispositivos que solicitan el recurso multimedia es mayor que la capacidad del servidor de borde ("Sí" en 1204) o si hay problemas de red entre al menos un dispositivo y el servidor ("Sí" en 1206), entonces, en 1208, el circuito de control determina que hay condiciones que indican problemas de almacenamiento en búfer.
[0163] Se pueden utilizar las acciones o descripciones de la FIG.12 con cualquier otra realización de esta divulgación. Además, las acciones y descripciones descritas en relación con la FIG. 12 se pueden hacer en órdenes alternativas adecuadas o en paralelo para promover los propósitos de esta divulgación.
[0165] La FIG. 13 muestra un diagrama de flujo de un proceso ilustrativo 1300 para determinar agrupaciones de dispositivos dentro de los cuales compartir y recibir contenido multimedia, según algunas realizaciones de la presente divulgación. El proceso 1300 puede implementarse en el circuito de control 1004. Además, una o más acciones del proceso 1300 pueden incorporarse o combinarse con una o más acciones de cualquier otro proceso o realización descritos en este documento.
[0167] En 1302, el circuito de control 1004 determina una pluralidad de grupos de dispositivos, los grupos que contienen dispositivos del primer grupo de dispositivos (por ejemplo,el primer grupo de dispositivos 106 de la FIG. 1) y el segundo grupo de dispositivos (por ejemplo,el segundo grupo de dispositivos 108 de la FIG. 1). Por ejemplo, todos los dispositivos con una posición de reproducción actual dentro de los primeros cinco minutos de un recurso multimedia están en un grupo, y todos los dispositivos con una posición de reproducción actual dentro de los últimos diez minutos del recurso multimedia están en otro grupo. En 1304, el circuito de control 1004 determina si los dispositivos de cada grupo tienen la misma potencia informática. Por ejemplo, si todos los dispositivos de un grupo son del mismo tipo de dispositivo, por ejemplo, teléfonos inteligentes, pueden tener la misma potencia informática. Si los dispositivos dentro del grupo son una mezcla de tipos,por ejemplo,ordenadores portátiles, teléfonos inteligentes y televisiones, puede que no tengan la misma potencia informática. Si los dispositivos del grupo tienen la misma potencia informática ("Sí" en 1304), entonces, en 1306, el circuito de control aplica un algoritmo round robin para determinar las agrupaciones dentro del grupo. Por ejemplo, el algoritmo round robin puede comprender la distribución uniforme del tráfico de carga desde los dispositivos del primer grupo a los dispositivos del segundo grupo dentro de cada grupo. A cada dispositivo del primer grupo se le puede asignar la tarea de compartir porciones del recurso multimedia con un dispositivo del segundo grupo. Si los dispositivos del grupo no tienen la misma potencia informática ("No" en 1304), entonces, en 1308, el circuito de control asigna ponderaciones a los dispositivos del grupo uno y del grupo dos dentro del grupo. Por ejemplo, cada dispositivo recibirá una ponderación según su potencia de procesamiento,por ejemplo,los teléfonos inteligentes recibirán una ponderación de uno, los ordenadores recibirán una ponderación de dos y las televisiones recibirán una ponderación de cuatro. En 1310, el circuito de control aplica un algoritmo round robin ponderado para determinar agrupaciones dentro del grupo. El algoritmo round robin ponderado puede consistir en distribuir tráfico de subida de los dispositivos del primer grupo a los dispositivos del segundo grupo dentro de cada grupo basándose en las ponderaciones. Por ejemplo, un dispositivo del primer grupo con una ponderación de dos se colocará en una agrupación con uno o más dispositivos del segundo grupo que tengan una suma total de potencia de procesamiento de dos, o un dispositivo del primer grupo con una ponderación de cuatro se colocará en una agrupación con uno o más dispositivos del segundo grupo que tengan una suma total de potencia de procesamiento de cuatro.
[0169] Se pueden utilizar las acciones o descripciones de la FIG.13 con cualquier otra realización de esta divulgación. Además, las acciones y descripciones descritas en relación con la FIG. 13 se pueden hacer en órdenes alternativas adecuadas o en paralelo para promover los propósitos de esta divulgación.
[0171] El alcance de la protección de la invención queda definido por las reivindicaciones adjuntas.

Claims (15)

1. REIVINDICACIONES
1. Un método que comprende:
almacenar, mediante un servidor (100), un recurso multimedia (102), en donde el recurso multimedia está disponible para ser solicitado mediante una pluralidad de dispositivos;
en respuesta a determinar que hay condiciones que indican problemas de almacenamiento en búfer durante la entrega del recurso multimedia a al menos uno de la pluralidad de dispositivos que solicitan el recurso multimedia:
identificar un primer grupo de dispositivos (106) adecuados tanto para (a) recibir el recurso multimedia desde el servidor, como para (b) compartir el recurso multimedia en una red, en donde el primer grupo de dispositivos es un primer subconjunto de la pluralidad de dispositivos;
identificar un segundo grupo de dispositivos (108) adecuados para recibir el recurso multimedia en la red desde al menos un dispositivo del primer grupo, en donde el segundo grupo de dispositivos es un segundo subconjunto de la pluralidad de dispositivos;
determinar agrupaciones de dispositivos (110, 112, 114, 116, 118, 120), cada agrupación que comprende al menos un dispositivo del primer grupo de dispositivos y al menos un dispositivo del segundo grupo de dispositivos; y
transmitir instrucciones a cada dispositivo respectivo del primer grupo de dispositivos para mantener, en un búfer del dispositivo respectivo, ciertas porciones del recurso multimedia para compartir, en la red, con los dispositivos del segundo grupo de dispositivos dentro de su agrupación respectiva; y
actualizar, en el servidor, información que comprende detalles de qué porciones del recurso multimedia mantiene cada dispositivo del primer grupo de dispositivos en su respectivo búfer para compartir.
2. El método de la reivindicación 1, en donde las condiciones que indican problemas de almacenamiento en búfer comprenden uno o más de la sobrecarga del servidor de borde o problemas de red entre dispositivos y redes de distribución de contenido.
3. El método de cualquiera de las reivindicaciones 1-2, en donde la identificación del primer grupo de dispositivos y del segundo grupo de dispositivos se basa en el tipo de entrega de contenido y los metadatos intrínsecos asociados con los dispositivos.
4. El método de la reivindicación 3, en donde los metadatos intrínsecos comprenden la localización del dispositivo, el estado de potencia del dispositivo, el tipo de dispositivo, la utilización de la CPU, los parámetros de rendimiento de reproducción del dispositivo, la velocidad de bits, la red o la movilidad.
5. El método de cualquiera de las reivindicaciones 1-4, en donde las agrupaciones determinantes comprenden además:
determinar una pluralidad de grupos de dispositivos, los grupos que contienen dispositivos del primer grupo y del segundo grupo;
determinar uno o más algoritmos de equilibrio de carga apropiados para la aplicación a los grupos; y aplicar el uno o más algoritmos de equilibrio de carga para determinar agrupaciones dentro de los grupos, las agrupaciones que comprenden al menos un dispositivo del primer grupo y al menos un dispositivo del segundo grupo.
6. El método de la reivindicación 5, en donde la determinación de la pluralidad de grupos de dispositivos se basa en el progreso del dispositivo dentro del recurso multimedia, el tipo de dispositivo, la localización del dispositivo y la capacidad del dispositivo para gestionar el tráfico entrante y saliente.
7. El método de cualquiera de las reivindicaciones 5-6, en donde el uno o más algoritmos de equilibrio de carga comprenden un algoritmo round robin.
8. El método de la reivindicación 7, en donde el algoritmo round robin comprende distribuir de una manera uniforme el tráfico de subida desde los dispositivos del primer grupo a los dispositivos del segundo grupo dentro de cada grupo.
9. El método de cualquiera de las reivindicaciones 5-8, en donde el uno o más algoritmos de equilibrio de carga es un algoritmo round robin ponderado que comprende:
asignar ponderaciones a los dispositivos del primer grupo y del segundo grupo basándose en uno o más del tipo de dispositivo, los parámetros actuales de rendimiento de reproducción del dispositivo, la calidad de la reproducción que el dispositivo puede servir o el número de solicitudes que cada dispositivo del primer grupo puede servir; y
distribuir tráfico de subida de los dispositivos del primer grupo a los dispositivos del segundo grupo dentro de cada grupo basándose en las ponderaciones.
10. El método de cualquiera de las reivindicaciones 1-9, que comprende además:
determinar, para cada dispositivo respectivo del primer grupo de dispositivos, basándose en el (a) progreso del dispositivo dentro del recurso multimedia, (b) el tipo de entrega de contenido, y (c) los metadatos intrínsecos asociados con los dispositivos: (i) un tamaño del búfer que debe mantener el dispositivo respectivo, y (ii) las ciertas porciones del recurso multimedia que el dispositivo respectivo debe mantener en su búfer para compartir; y
en donde transmitir instrucciones comprende además transmitir, a cada dispositivo en el primer grupo de dispositivos, una instrucción para mantener el tamaño de búfer determinado para el dispositivo respectivo que comprende las ciertas porciones determinadas del recurso multimedia para el dispositivo respectivo.
11. Un sistema que comprende:
circuito de almacenamiento de un servidor (100) configurado para:
almacenar un recurso multimedia (102), en donde el recurso multimedia está disponible para ser solicitado mediante una pluralidad de dispositivos;
circuito de control configurado para:
determinar que hay condiciones que indican problemas de almacenamiento en búfer durante la entrega del recurso multimedia a al menos uno de la pluralidad de dispositivos que solicitan el recurso multimedia; y en respuesta a determinar que hay condiciones que indican problemas de almacenamiento en búfer durante la entrega del recurso multimedia a al menos uno de la pluralidad de dispositivos que solicitan el recurso multimedia:
identificar un primer grupo de dispositivos (106) adecuados para tanto (a) recibir el recurso multimedia desde el servidor, y (b) compartir el recurso multimedia en una red, en donde el primer grupo de dispositivos es un primer subconjunto de la pluralidad de dispositivos;
identificar un segundo grupo de dispositivos (108) adecuados para recibir el recurso multimedia en la red desde al menos un dispositivo del primer grupo, en donde el segundo grupo de dispositivos es un segundo subconjunto de la pluralidad de dispositivos;
determinar agrupaciones de dispositivos (110, 112, 114, 116, 118, 120), cada agrupación que comprende al menos un dispositivo del primer grupo de dispositivos y al menos un dispositivo del segundo grupo de dispositivos; y
transmitir instrucciones a cada dispositivo respectivo del primer grupo de dispositivos para mantener, en un búfer del dispositivo respectivo, ciertas porciones del recurso multimedia para compartir, en la red, con los dispositivos del segundo grupo de dispositivos dentro de su agrupación respectiva; y
actualizar, en el servidor, información que comprende detalles de qué porciones del recurso multimedia mantiene cada dispositivo del primer grupo de dispositivos en su respectivo búfer para compartir.
12. El sistema de la reivindicación 11, en donde el circuito de control configurado para determinar el primer grupo de dispositivos y el segundo grupo de dispositivos está configurado además para hacer basándose en el tipo de entrega de contenido y los metadatos intrínsicos asociados con los dispositivos.
13. El sistema de la reivindicación 11, en donde el circuito de control configurado para determinar agrupaciones de dispositivos está configurado además para:
determinar una pluralidad de grupos de dispositivos, los grupos que contienen dispositivos del primer grupo y del segundo grupo;
determinar uno o más algoritmos de equilibrio de carga apropiados para la aplicación a los grupos; y aplicar el uno o más algoritmos de equilibrio de carga para determinar agrupaciones dentro de los grupos, las agrupaciones que comprenden al menos un dispositivo del primer grupo y al menos un dispositivo del segundo grupo.
14. El sistema de la reivindicación 13, en donde el circuito de control configurado para determinar la pluralidad de grupos de dispositivos está configurado además para hacer basándose en el progreso del dispositivo dentro del recurso multimedia, el tipo de dispositivo, la localización del dispositivo, y la capacidad del dispositivo para gestionar el tráfico entrante y saliente.
15. El sistema de la reivindicación 11, en donde:
el circuito de control está configurado además para determinar, para cada dispositivo respectivo del primer grupo de dispositivos, basándose en el (a) progreso del dispositivo dentro del recurso multimedia, (b) el tipo de entrega de contenido, y (c) los metadatos intrínsecos asociados con los dispositivos: (i) un tamaño del búfer para mantenerlo por el dispositivo respectivo, y (ii) las ciertas porciones del recurso multimedia que el dispositivo respectivo debe mantener en su búfer para compartir; y
el circuito de control configurado para transmitir instrucciones para cada dispositivo respectivo del primer grupo de dispositivos está configurado además para transmitir, a cada dispositivo en el primer grupo de dispositivos, una instrucción para mantener el tamaño de búfer determinado para el dispositivo respectivo que comprende las ciertas porciones determinadas del recurso multimedia para el dispositivo respectivo.
ES22801255T 2021-09-30 2022-09-29 Systems and methods for streaming media content during unavailability of content server Active ES3066752T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/490,905 US11706469B2 (en) 2021-09-30 2021-09-30 Systems and methods for streaming media content during unavailability of content server
PCT/US2022/045165 WO2023055886A1 (en) 2021-09-30 2022-09-29 Systems and methods for streaming media content during unavailability of content server

Publications (1)

Publication Number Publication Date
ES3066752T3 true ES3066752T3 (en) 2026-05-14

Family

ID=84191944

Family Applications (1)

Application Number Title Priority Date Filing Date
ES22801255T Active ES3066752T3 (en) 2021-09-30 2022-09-29 Systems and methods for streaming media content during unavailability of content server

Country Status (6)

Country Link
US (3) US11706469B2 (es)
EP (2) EP4770060A3 (es)
AU (1) AU2022357313A1 (es)
CA (1) CA3233059A1 (es)
ES (1) ES3066752T3 (es)
WO (1) WO2023055886A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11706469B2 (en) 2021-09-30 2023-07-18 Rovi Guides, Inc. Systems and methods for streaming media content during unavailability of content server
US12619919B2 (en) * 2021-12-09 2026-05-05 Verizon Patent And Licensing Inc. Systems and methods for node weighting and aggregation for federated learning techniques

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0001810B1 (pt) * 2000-03-28 2015-06-23 Coppe Ufrj Coordenação Dos Programas De Pós Graduação De Engenharia Da Universidade Fed Do Rio De Ja Memória cooperativa distribuída para sistema de vod interativo e escalável
IL148080A0 (en) * 2001-02-13 2002-09-12 Hosen Eliav System for distributing video and content on demand
US7444413B2 (en) * 2002-06-26 2008-10-28 Microsoft Corporation Authorization access controlled content exchange
US7978723B1 (en) * 2003-07-15 2011-07-12 Juniper Networks, Inc. Using dedicated upstream channel(s) for cable modem initialization
US9549043B1 (en) 2004-07-20 2017-01-17 Conviva Inc. Allocating resources in a content delivery environment
US8739231B2 (en) * 2005-08-23 2014-05-27 Vudu, Inc. System and method for distributed video-on-demand
US8832290B2 (en) * 2007-02-23 2014-09-09 Microsoft Corporation Smart pre-fetching for peer assisted on-demand media
US8549150B1 (en) * 2007-03-30 2013-10-01 Amazon Technologies, Inc. Fractional redundant distribution of media content
CN101715650B (zh) * 2007-06-28 2012-03-21 纽约市哥伦比亚大学信托人 机顶盒对等端辅助的视频点播
US9401850B2 (en) 2013-05-08 2016-07-26 Vringo Infrastructure Inc. Cognitive radio system and cognitive radio carrier device
US20150348177A1 (en) * 2014-05-29 2015-12-03 International Business Machines Corporation Managing lease transactions in distributed systems
US10305721B1 (en) 2014-12-09 2019-05-28 Amazon Technologies, Inc. Content delivery using gossip protocols
CN114531478A (zh) * 2020-10-30 2022-05-24 伊姆西Ip控股有限责任公司 边缘资源聚合的方法、设备和计算机程序产品
US11706469B2 (en) 2021-09-30 2023-07-18 Rovi Guides, Inc. Systems and methods for streaming media content during unavailability of content server

Also Published As

Publication number Publication date
EP4770060A2 (en) 2026-07-01
EP4770060A3 (en) 2026-07-08
CA3233059A1 (en) 2023-04-06
US12677017B2 (en) 2026-07-07
AU2022357313A1 (en) 2024-03-28
US11706469B2 (en) 2023-07-18
EP4409866A1 (en) 2024-08-07
EP4409866B1 (en) 2026-02-25
WO2023055886A1 (en) 2023-04-06
US20230308696A1 (en) 2023-09-28
US20230102888A1 (en) 2023-03-30
US12132946B2 (en) 2024-10-29
US20250016389A1 (en) 2025-01-09