US20240048782A1 - Systems and methods for distributed media streaming - Google Patents
Systems and methods for distributed media streaming Download PDFInfo
- Publication number
- US20240048782A1 US20240048782A1 US17/879,211 US202217879211A US2024048782A1 US 20240048782 A1 US20240048782 A1 US 20240048782A1 US 202217879211 A US202217879211 A US 202217879211A US 2024048782 A1 US2024048782 A1 US 2024048782A1
- Authority
- US
- United States
- Prior art keywords
- network
- user equipment
- media asset
- equipment device
- edge server
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000001413 cellular effect Effects 0.000 claims description 19
- 238000004891 communication Methods 0.000 description 44
- 238000012545 processing Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 21
- 101100242901 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB2 gene Proteins 0.000 description 14
- 101150082826 Segment-2 gene Proteins 0.000 description 14
- 101100194052 Thogoto virus (isolate SiAr 126) Segment 2 gene Proteins 0.000 description 14
- 101100242890 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PA gene Proteins 0.000 description 13
- 101150027881 Segment-3 gene Proteins 0.000 description 13
- 101100242891 Thogoto virus (isolate SiAr 126) Segment 3 gene Proteins 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 230000006855 networking Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 101100247669 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB1 gene Proteins 0.000 description 2
- 101150025928 Segment-1 gene Proteins 0.000 description 2
- 101100242902 Thogoto virus (isolate SiAr 126) Segment 1 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 229910021417 amorphous silicon Inorganic materials 0.000 description 1
- 239000002041 carbon nanotube Substances 0.000 description 1
- 229910021393 carbon nanotube Inorganic materials 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000009736 wetting Methods 0.000 description 1
Images
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/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- 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/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- 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/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- 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
- 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/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- 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/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
- H04N21/2225—Local VOD 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/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
-
- 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/61—Network physical structure; Signal processing
- H04N21/6106—Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
- H04N21/6131—Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via a mobile phone network
-
- 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/631—Multimode Transmission, e.g. transmitting basic layers and enhancement layers of the content over different transmission paths or transmitting with different error corrections, different keys or with different transmission protocols
-
- 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
- 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/101—Server selection for load balancing based on network conditions
Definitions
- This disclosure is directed to systems and methods for selecting which device and/or network should be used to obtain a portion of a media asset.
- a determination may be made whether an edge server should obtain the portion of the media asset via a first network, or whether a user equipment device should obtain the portion of the media asset via a second network.
- Such media is commonly delivered to users in temporally segmented form, for instance using adaptive streaming techniques such as Dynamic Adaptive Streaming over HTTP (DASH) or HTTP Live Streaming.
- DASH Dynamic Adaptive Streaming over HTTP
- the order and quality of the segments may be defined in a manifest file, and the segments may be individually requested by a client device.
- the media content may be made available in short media segments at different qualities (bitrates), to enable a client to optimize a user's viewing experience by matching the quality of requested video segments against fluctuating network conditions.
- the media content is commonly delivered using content delivery networks (CDNs), which cache media segments from the content server (origin) to edge servers.
- CDNs content delivery networks
- the edge server can be located close to the base station in multi-access edge computing (MEC) to improve service latency and quality as well as to ensure efficient networking.
- MEC multi-access edge computing
- the client device requests a video segment from the edge server, which distributes it to the client. If the segment is not available in the edge server, the edge server requests the segment from the origin and forwards it to the client.
- the edge server may store the requested data for a certain time according to caching rules.
- the client device may have multiple network interfaces, allowing simultaneous connections over, e.g., a mobile (cellular) network and another network (public/private Wi-Fi or private cellular).
- private networks may have low throughput to the Internet due to a weak backhaul connection.
- backhaul connection to the Internet may be established using a mobile network, limited local area network (LAN), or satellite connection, where the connectivity may be limited, or vary (e.g., in a vehicle or free-Wi-Fi scenario in a public place such as a hotel or restaurant).
- LAN local area network
- satellite connection where the connectivity may be limited, or vary (e.g., in a vehicle or free-Wi-Fi scenario in a public place such as a hotel or restaurant).
- mobile network capacity may vary particularly in sparsely populated areas or in rural areas, which can degrade the service and video quality.
- MNOs mobile network operators
- LAN networks may be used to provide backhaul connection, for example, from free Wi-Fi in restaurants, coffee shops, vehicles, etc. Traffic peaks may occur when large groups of people access popular streaming content simultaneously. Consumers are using more and more live media services on mobile devices, and they are expecting to receive high-quality video regardless of their location. More and more of such consumption is done when the user is on the go, e.g., travelling while connected to an available network in restaurant, airport or in a vehicle like a bus, train, or boat.
- backhaul network capacity may be insufficient, which can cause a variety of problems.
- users may be forced to utilize the mobile or cellular network on their mobile devices, or may experience a low quality of experience (QoE) due to stalls and substantial quality fluctuation in a video session.
- QoE quality of experience
- unnecessary bandwidth and energy consumption may occur if the same segments are streamed several times by the same user or multiple users, which is burdensome for service providers, MNOs, and client devices. This may result in user frustration directed towards network operators as well as service providers.
- the systems and methods may receive, from the user equipment device, a request to access at least a portion of a media asset, and determine whether the at least a portion of the media asset is stored in the cache. In response to determining that the at least a portion of the media asset is not stored in the cache, the systems and methods may perform a determination.
- such determination may be whether the edge server should be selected to obtain the at least a portion of the media asset via the first network from a content server or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server.
- the systems and methods may cause the at least a portion of the media asset to be obtained using the selected edge server via the first network or using the selected user equipment device via the second network, and cause the obtained at least a portion of the media asset to be stored at the cache.
- the systems and methods may cause the obtained at least a portion of the media asset to be generated for display at the user equipment device.
- Such aspects may provide a dynamic, flexible system in which streaming of media content to a client device can be optimized to exploit multiple alternative network connections of different devices.
- a first network associated with a particular environment e.g., a train Wi-Fi network having an edge server
- users e.g., commuters on the train.
- the systems and methods provided herein may determine, based on network characteristics, that such edge server is currently unable to provide high-quality media segments.
- the systems and methods may instead cause a user equipment device (e.g., of a user commuting on the train) to download or otherwise obtain one or more segments of the media asset via a second network (e.g., a cellular network of his or her mobile device), and provide such segment(s) to the edge server for storage at the cache.
- a user equipment device e.g., of a user commuting on the train
- a second network e.g., a cellular network of his or her mobile device
- computing and/or network resources required to obtain certain segments of the media asset may be distributed between user equipment device(s) and edge server(s), which may result in the devices, network and/or service providers consuming less computing and/or network resources.
- users may be provided with higher-quality media assets in an efficient manner, to preserve a high-quality user media streaming experience.
- the user equipment device is a first user equipment device
- the systems and methods described herein may be further configured to receive, from a second user equipment device, a request to access the at least a portion of the media asset.
- Determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network may comprise a further determination.
- Such further determination may correspond to determining whether the second user equipment device should be selected to obtain the at least a portion of the media asset via the second network.
- causing the at least a portion of the media asset to be obtained may be performed using the selected edge server via the first network or using the selected first user equipment device via the second network or using the selected second user equipment device via the second network.
- the first network is a localized private network
- the second network is a cellular network
- each of the first user equipment device and the second user equipment device may be located in a physical environment associated with the localized private network.
- the obtained at least a portion of the media asset may be provided to the cache by the selected edge server and may be provided from the cache to at least one of the first user equipment device or the second user equipment device via the localized private network.
- the obtained at least a portion of the media asset may be provided to the edge server by the selected first user equipment device or by the selected second user equipment device via the localized private network.
- causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the at least a portion of the media asset is likely to be requested by another user equipment device in the physical environment associated with the localized private network.
- causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the media asset is being provided to a plurality of user equipment devices in the physical environment associated with the localized private network.
- the media asset is a live broadcast
- causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the user equipment device is likely to request that a trick-play operation be performed on the at least a portion of the media asset.
- the at least a portion of a media asset is a first portion of the media asset
- the systems and methods may further comprise receiving, from the user equipment device, a request to access a second portion of a media asset.
- such systems and methods may determine whether the edge server should be selected to obtain the second portion of the media asset via the first network or whether the user equipment device should be selected to obtain the second portion of the media asset via the second network.
- the systems and methods may cause the second portion of the media asset to be obtained using the selected edge server via the first network or using the selected user equipment device via the second network.
- the selected one of the edge server or user equipment device used to obtain the first portion of the media asset is different from the selected one of the edge server or user equipment device used to obtain the second portion of the media asset.
- the user equipment device is a first user equipment device
- the method further comprises selecting the first user equipment device to obtain the at least a portion of the media asset via the second network, and causing the first user equipment device to provide the at least a portion of the media asset to the edge server via the first network.
- determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network comprises determining network characteristics.
- the system may be further configured to determine network characteristics associated with the first network, and determine network characteristics associated with the second network.
- selecting either the edge server to obtain the at least a portion of the media asset via the first network, or the user equipment device to obtain the at least a portion of the media asset via the second network is based at least in part on the determined network characteristics.
- the selection may be based at least in part on the determined network characteristics associated with the first network and the determined network characteristics associated with the second network.
- identifying the second network available to the user equipment device comprises receiving, at the edge server, an indication from the user equipment device specifying the second network and indicating a portion of the second network allocated for use in association with the edge server.
- FIG. 1 shows an illustrative system for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- FIG. 2 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- FIG. 3 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- FIG. 4 is an illustrative block diagram indicating how portions of a media asset may be obtained via multiple networks, in accordance with some embodiments of this disclosure.
- FIG. 5 shows illustrative devices, in accordance with some embodiments of this disclosure.
- FIG. 6 shows illustrative systems, in accordance with some embodiments of this disclosure.
- FIG. 7 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- FIG. 1 shows an illustrative system 100 for determining which device should be used to obtain at least a portion of a media asset via a particular network, in accordance with some embodiments of this disclosure.
- System 100 may correspond to a streaming assistance system in which a cache may be updated based on utilizing network connections in multiple devices connected to the different networks, to optimize video streaming when network connectivity to a content server or content delivery network (CDN) is limited, or otherwise varies.
- System 100 may include a first network, e.g., private network (PRN) 102 , which may comprise or otherwise be associated with one or more edge servers 104 .
- PRN private network
- Edge server 104 may provide edge services for users, and may comprise cache 106 , for storing media assets and/or portions of media assets, and streaming assistance network element (SANE) 108 , which may correspond to or otherwise be configured to implement a streaming assistance application.
- the streaming assistance application may be configured to execute at least in part on one or more of edge server 104 and/or one or more remote servers (e.g., content server 124 and/or server 604 of FIG. 6 ) and/or one or more of user equipment devices 110 and/or 112 , or any other suitable device, or any combination thereof.
- the streaming assistance application may be configured to perform the functionalities described herein.
- the voice processing system may be offered as an add-on application, e.g., installed on any networking equipment, computing device, mobile device, edge server and/or any other suitable device that may be present or included in physical environment 114 .
- certain functionalities provided by the streaming assistance application may be provided via an Application Programming Interface (API). While a single edge server 104 and a single content server 124 are shown in FIG. 1 , it should be appreciated that any suitable number of edge servers and content servers may be utilized, and computing tasks may be distributed across such respective groups of servers.
- cache 106 may be populated based on requests from users either using one or more backhaul connections of network 102 or by way of, e.g., a mobile network connection of user equipment device 110 and/or 112 to network 116 .
- System 100 may be configured to select one or more of an access network(s) from a plurality of access networks available to the user equipment included in system 100 and access networks from system 100 to route particular media data flows (e.g., media assets, segments or partial segments) to the edge server and clients.
- the term “media asset” should be understood to refer to an electronically consumable user asset, e.g., television programming, as well as pay-per-view programs, on-demand programs (as in video-on-demand (VOD) systems), Internet content (e.g., streaming content, downloadable content, webcasts, etc.), augmented reality content, virtual reality content, video clips, audio, playlists, websites, articles, electronic books, blogs, social media, applications, games, and/or any other media or multimedia, and/or combination of the above.
- VOD video-on-demand
- augmented reality content e.g., virtual reality content, video clips, audio, playlists, websites, articles, electronic books, blogs, social media, applications, games, and/or any other media or multimedia, and/or combination of the above.
- System 100 may include user equipment device 110 and user equipment device 112 and/or any suitable number or types of user equipment devices, which may also be configured to implement the streaming assistance application, and may be capable of communicating with edge server 104 by way of first network 102 .
- User equipment device 110 and user equipment device 112 may correspond to any suitable device(s), such as, for example, a mobile device (e.g., smartphone, tablet, smart watch, and/or any other suitable mobile device), Internet of Things (IoT) devices, a biometric device; a desktop computer, laptop computer, virtual reality (VR) device; augmented reality (AR) device, and/or any other suitable device(s).
- a mobile device e.g., smartphone, tablet, smart watch, and/or any other suitable mobile device
- IoT Internet of Things
- biometric device e.g., a biometric device
- desktop computer e.g., laptop computer, virtual reality (VR) device
- AR augmented reality
- first network 102 including edge server 104 , as well as user equipment devices 110 and 112 may be located at a same physical environment 114 .
- Physical environment 114 may be a particular physical location, such as, for example, a household, a place of business (e.g., a restaurant, a café, a coffee shop, an airport, or any other suitable place of business or any suitable combination thereof, which may offer free Wi-Fi or charge a user to access Wi-Fi or another network); a vehicle (e.g., an automobile or any other suitable vehicle, which may be on the move or stationary) and/or a common carrier (e.g., a train, an airplane, a bus, a boat, or any other suitable common carrier, or any combination thereof); a library; an office; a school; other organization or any other suitable location, or any combination thereof.
- a place of business e.g., a restaurant, a café, a coffee shop, an airport, or any other suitable place of business or any suitable combination thereof, which may offer
- first network 102 may be a localized network, e.g., a home network, a business network, an in-vehicle network, a network provided in public transportation or a common carrier, or any other suitable network, or any combination thereof.
- first network 102 may be facilitated at least in part by networking equipment on the premises of physical environment 114 .
- user equipment device 110 and user equipment device 112 may be equipped with antennas for transmitting and receiving electromagnetic signals at frequencies within the electromagnetic spectrum, e.g., radio frequencies, to communicate over first network 102 with edge server 104 .
- First network 102 may correspond to, e.g., a Wi-Fi network, such as, for example, 802.11n, 802.11ac, 802.11ax, or Wi-Gig/802.11ad, and the devices of environment 114 may communicate wirelessly over a wireless Local Area Network (WLAN) and with the Internet, and may be present within an effective coverage area of the localized network.
- WLAN wireless Local Area Network
- the Internet may include a global system of interconnected computer networks and devices employing common communication protocols, e.g., the transmission control protocol (TCP), user datagram protocol (UDP) and the internet protocol (IP) in the TCP/IP internet protocol suite.
- the devices of environment 114 may additionally or alternatively be configured to communicate via a short-range wired or wireless communication technique (e.g., Bluetooth, RFID, NFC, or any other suitable technique, or any combination thereof).
- a backhaul connection from first network 102 to the Internet (and content server 124 ) may be based at least in part on a mobile or cellular network.
- first network 102 and/or physical environment 114 may comprise one or more routers configured to forward data packets from the Internet connection, received by way of a modem, to devices within first network 102 and receive data packets from such devices.
- the router may include a built-in modem to provide access to the Internet, built-in switches or hubs to deliver data packets to the appropriate devices within first network 102 , built-in access points to enable devices to wirelessly connect to first network 102 .
- system 100 may include one or more stand-alone modems, switches, routers and access points.
- first network 102 may comprise additional routers or network equipment positioned at various locations of physical environment 114 and in communication with the router to extend a range of the network, e.g., to more remote region of physical environment 114 .
- media assets may be provided to user equipment devices 110 and/or 112 by way of wired and/or wireless signals transmitted through first network 102 , and the streaming assistance application may monitor wired and/or wireless signal or network characteristics of first network 102 and/or second network 116 .
- System 100 may include second network 116 , which may correspond to one or more of public networks 118 , 120 and 122 .
- System 100 may comprise one or more content servers 124 , which may be configured to provide, e.g., over first network 102 and/or second network 116 , a media asset and/or portions thereof to user equipment devices 110 and/or 112 and/or edge server 104 .
- second network 116 may comprise a public mobile network provided by a mobile network operator (MNO) or MVNOs (mobile virtual network operators), where the MNO may own the network and delivers services to subscribers, and may also sell access to network services to the MVNOs who can deliver the services for their own subscribers.
- MNO mobile network operator
- MVNOs mobile virtual network operators
- Such MVNOs may not own the network and may pay a fee to the MNO based on tonnage/usage by their subscribers, and a subscriber may connect his or her device to second network 116 using an e-sim or sim provided by MNO or MVNO.
- user equipment devices 110 and 112 can be configured to concurrently connect to first network 102 and second network 116 .
- multiple client devices may be connected to a Wi-Fi network (e.g., 802.11n, 802.11ac, 802.11ax) which may correspond to first network 102 , and may also be connected to a cellular network (e.g., LTE, 5G) or a satellite network or any other suitable network which may correspond to second network 116 .
- system 100 may utilize Multipath TCP (MPTCP) techniques for utilizing multiple access network connections simultaneously. While first network 102 and second network 116 are described in the example of FIG. 1 , it should be appreciated that any suitable number of networks may be employed in system 100 .
- MPTCP Multipath TCP
- physical environment 114 may correspond to a train, on which devices of each of multiple users, such as, for example, users of receptive user equipment devices 110 and 112 , are connected to first network 102 and second network 116 .
- users may be passengers on the train at the same time, e.g., commuting to work.
- First network 102 may be a private network (e.g., Wi-Fi or private 5G or any other suitable network or any combination thereof) offering an edge service for media delivery, e.g., by way of the streaming assistance application which may provide caching capability at cache 106 .
- the users of user equipment devices 110 and 112 may request to view the same media asset, e.g., a live sports broadcast or a live news broadcast or VOD content, provided via the Internet, from content server 124 .
- the streaming assistance application may monitor connection quality (e.g., throughput, latency, jitter, or any other network characteristic, or any combination thereof) from physical environment 114 to the Internet via network 102 , which may vary.
- connection quality e.g., throughput, latency, jitter, or any other network characteristic, or any combination thereof
- Such varying network characteristic(s) may result in, for at least some segments of the media asset, edge server 104 being unable to populate high-quality media segments to cache 106 and guarantee a high QoE for the users.
- the streaming assistance application may cause user equipment device 110 or 112 to download or otherwise obtain one or more segments of the media asset via second network 116 (e.g., a cellular network), and provide such segment(s) to edge server 104 for storage at cache 106 .
- second network 116 e.g., a cellular network
- computing and/or network resources required to obtain certain segments of the media asset may be distributed between user equipment devices 110 and/or 112 , and edge server 104 , which may result in the devices, network providers and/or service providers consuming less computing and/or network resources.
- the streaming assistance application may dynamically select, based on current network conditions or device conditions, which of first network 102 (e.g., via edge server 104 ) or second network 116 (e.g., via equipment devices 110 and/or 112 ), or other suitable networks or devices, should be used to obtain a particular segment.
- cache 106 may be populated using a backhaul connection (e.g., satellite, 4G, 5G or LAN or any other suitable network, or any combination thereof) of first network 102 .
- the streaming assistance application may perform any suitable technique.
- the streaming assistance application may monitor the quality of the available public or private networks and/or Wi-Fi uplink and downlink capacity using passive and/or active network estimation techniques, e.g., to function similarly as a radio network information service (RNIS) or utilize such a service from another network node.
- RIS radio network information service
- signal quality indicators e.g., RSSI
- packet information e.g., response times
- wireless signal characteristics such as, for example, channel state information (CSI) and/or received channel power indicator (RCPI) of devices and/or networking equipment may be monitored.
- the streaming assistance application may use information of available mobile network operator's networks, information of the connected users, and share the network usage by number of users in each MNO's network.
- the streaming assistance application with caching capability may determine, based on any suitable combination of such network characteristics, which network to utilize in populating the media segment to cache.
- an operating system of user equipment devices 110 and/or 112 may provide to the streaming assistance application information concerning device characteristics of user equipment devices 110 and/or 112 and/or network characteristics of first network 102 and second network 116 .
- the streaming assistance application information may receive one or more indications of a battery level of the user equipment device, a cellular network and/or a strength of cellular network signals being received by the user equipment device, an indication of a Wi-Fi network and/or Wi-Fi signal strength of signals received by the user equipment device, and/or any other suitable data. Such data may be requested by or otherwise transmitted to edge server 104 at any suitable interval.
- the streaming assistance application may monitor signal strength of received and transmitted signals, resolution of video or other display characteristics of a media asset being generated for display at user equipment device 110 and/or 112 .
- the streaming assistance application may monitor one or more quality-of-service characteristics (e.g., available bandwidth, error rate, bit rate, throughput lag, transmission delay, availability, or jitter, or any other suitable network characteristic, or any combination thereof) experienced by user equipment device 110 and/or 112 , and/or any other suitable parameters.
- any suitable characteristic may be associated with a particular threshold, and the value of the network or device characteristic may be compared to such threshold, which may be taken into account in selecting a device and/or network that is to obtain a particular segment of the media asset.
- the streaming assistance application may take into account any of such characteristics in selecting a device and/or network that is to obtain a particular segment of the media asset.
- FIG. 2 is a flowchart of a detailed illustrative process 200 for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- Process 200 may enable implementing a distributed cache update, with respect to the media asset, and/or portions or segments thereof, being consumed and/or requested in a particular physical environment 114 .
- the streaming assistance application may be installed at or otherwise provided to edge server 104 , user equipment device 110 having a video player 1 (VP1), and user equipment device 112 having a video player 2 (VP2).
- edge server 104 in first network 102 may be instrumented with the streaming assistance application server software
- user equipment device 110 and user equipment device 112 may be instrumented with the streaming assistance application client software.
- user equipment device 110 may connect to first network 102 and initiate playing of a media asset by requesting a manifest file.
- request may be an HTTP request, and may include in a header an indication that user equipment device 110 supports the streaming assistance application.
- the term “manifest” should be understood to refer to a file and/or a data structure containing information about sequential segments (comprising sequential frames) of a media asset available to a client device, such as, for example, user equipment device 110 .
- Such information may include, e.g., a number of segments in a playlist, bit rates of each segment, codecs associated with each segment, resolution of each segment, timing of each segment, location on the network where a segment may be retrieved, bandwidth of each segment, video tracks of each segment, audio tracks of each segment, subtitle tracks of each segment, captions of each segment, languages of each segment, other metadata associated with each segment, and/or any other suitable information.
- the manifest may be employed in any of a variety of streaming protocols, e.g., media presentation description (MPD) files for Dynamic Adaptive Streaming over HTTP (MPEG-DASH), m3u8 files for HTTP Live Streaming (HLS), f4m files for HTTP Dynamic Streaming (HDS), ingest files for CMAF (Common Media Application Format), and/or manifest files for Microsoft Smooth Streaming (MSS), etc.
- the manifest may be a standard manifest (e.g., an MPD file from MPEG-DASH) or may be a modified version of a standard manifest.
- a segment may comprise information (e.g., encoded video, audio, subtitle information, error correction bits, error detection bits, etc.) for a particular interval of a media asset, and each segment may correspond to a file specified in the manifest indicating an associated URL for retrieving the file.
- the segment may comprise a collection or sequence of frames (e.g., still images that together make up moving pictures of scenes of a portion of a media asset), and each segment may have a specific length (e.g., from one second to a few seconds).
- the manifest may be an XML file.
- the manifest may include an indication, for a particular segment, of a particular device (e.g., edge server 104 , user equipment device 110 , and/or user equipment device 112 ) and/or network (e.g., network 102 and/or network 116 ) by which at least a particular segment of a media asset should be obtained.
- a particular device e.g., edge server 104 , user equipment device 110 , and/or user equipment device 112
- network e.g., network 102 and/or network 116
- edge server 104 may request the manifest file from content server 124 .
- edge server 104 may receive the requested manifest file from content server 124 and forward such manifest file to user equipment device 110 (at 208 ).
- the streaming assistance application of edge server 104 may add identifying information in a header, e.g., an IP address of edge server 104 indicating where to send messages associated with the streaming assistance application, when forwarding the manifest to user equipment device 110 .
- edge server 104 may add a universal resource identifier (URI) of edge server 104 to the manifest file.
- URI universal resource identifier
- user equipment device 110 may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks 116 ) to edge server 104 .
- Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application.
- edge server 104 may acknowledge receipt of such ClientHello message received at 210 .
- edge server 104 may store the network information received at 210 and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more available second networks 116 for the purposes of the streaming assistance application.
- user equipment device 112 may connect to first network 102 and initiate playing of a media asset by requesting a manifest file.
- request may be an HTTP request, and may include in a header an indication that user equipment device 112 supports the streaming assistance application.
- the media asset requested by user equipment device 112 may be the same media asset that was requested by user equipment device 110 .
- each of user equipment device 110 and 112 may be located in the same physical environment 114 (e.g., a train).
- the media asset may be, e.g., live broadcast content or VOD content.
- edge server 104 may forward the manifest file (obtained at 206 from content server 124 ) to user equipment device 112 .
- the streaming assistance application of edge server 104 may add identifying information in a header, e.g., an IP address of edge server 104 indicating where to send messages associated with the streaming assistance application, when forwarding the manifest to user equipment device 112 .
- edge server 104 may add a universal resource identifier (URI) of edge server 104 to the manifest file.
- URI universal resource identifier
- user equipment device 112 may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks 116 ) to edge server 104 .
- Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application.
- edge server 104 may acknowledge receipt of such ClientHello message received at 218 .
- edge server 104 may store the network information received at 218 and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more available second networks 116 for the purposes of the streaming assistance application.
- user equipment device 110 may, based on the received manifest file, request a particular segment (e.g., segment-1) of the media asset from edge server 104 in first network 102 .
- a particular segment e.g., segment-1
- any suitable adaptive streaming technique may be employed for requesting and providing the media segments.
- the adaptive streaming technique may be DASH
- SANE 108 may be a DANE (DASH-aware Network Element).
- the streaming assistance application running at least in part at edge server 104 , may decide how the requested segment or portion of the media asset is to be retrieved. For example, at 224 , the streaming assistance application may perform process 300 shown in FIG. 3 .
- FIG. 3 is a flowchart of a detailed illustrative process 300 for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- the streaming assistance application may determine that a request, from a user equipment device (e.g., user equipment device 110 ), to access at least a portion of a media asset has been received.
- the streaming assistance application may determine how the requested segment or portion of the media asset is to be retrieved. For example, at 306 , the streaming assistance application may determine whether the requested segment is already stored at cache 106 .
- processing may proceed to 308 , and edge server 104 may provide the segment stored at cache 106 to the requesting user equipment device over first network 102 .
- processing may proceed to 310 .
- the streaming assistance application may perform processing to select an optimal network for obtaining the requested portion of the media asset, to facilitate efficient usage of computing resources and high-quality media streaming.
- the streaming assistance application may determine network availability (at 312 ), quality of service (QoS) metrics at 314 , bandwidth estimate techniques may be employed, or any other suitable network characteristic or network status information or other tools may be employed, or any combination thereof.
- QoS quality of service
- bandwidth estimate techniques may be employed, or any other suitable network characteristic or network status information or other tools may be employed, or any combination thereof.
- such information may be stored at network information database 316 and/or at edge server 104 and/or at content server 124 .
- network information database 316 may be located at physical environment 114 , within edge server 104 or remote from edge server 104 and in communication with edge server 104 over a network.
- the streaming assistance application may determine such information by the monitoring network traffic and/or receiving information indicating current or projected network characteristics. In some embodiments, the streaming assistance application may estimate a transmission quality in each of networks 102 and 116 (and/or public networks 118 , 120 , and 122 ), based on a video segment received through the respective network. In some embodiments, the streaming assistance application may collect external network status information provided by connected user equipment devices or an RNIS.
- the streaming assistance application may, at 318 , determine to fetch the segment from content server 124 via PN2 120 (e.g., by way of edge server 104 of first network 116 ).
- the streaming assistance application may request user equipment device 110 to fetch the segment from content server via PN1 118 , and may request that user equipment device 110 upload such retrieved segment to cache 106 by way of first network 102 .
- the streaming assistance application may request user equipment device 112 to fetch the segment from content server via PN3 122 , and may request that user equipment device 112 upload such retrieved segment to cache 106 by way of first network 102 .
- the streaming assistance application may determine to split the segment request among multiple user equipment devices. For example, the streaming assistance application may request segment header information from content server 124 , and upon determining that content server 124 supports range requests, the streaming assistance application can request that different byte ranges of the segment be retrieved by the multiple user equipment devices. In some embodiments, the streaming assistance application may request a particular bitrate and/or resolution for a particular segment, which may be specified in the manifest file, based on the monitored network characteristics.
- a particular network may be selected to obtain the segment if network availability indicates the network is available and QoS metrics and/or connection quality of one or more of PN1 118 , PN2 120 , PN3 122 and/or one or more of second network(s) 116 , indicate delivery of such segment would be enabled.
- SANE may estimate a transmission quality in each network based on a video segment received through one or more of second network(s) 116 .
- the streaming assistance application may leverage the capacity of each of the networks described in system 100 of FIG. 1 , and/or any other suitable networks available to system 100 , to obtain the best possible quality segments in an efficient manner.
- the streaming assistance application may measure network throughput, or any other suitable network characteristic, and feedback such information to update network information database 316 with current network information.
- the streaming assistance application may determine, based on the determination made at 224 , to obtain the requested segment from content server 124 (at 226 ) using edge server 104 by way of PN2 120 , e.g., a backhaul connection of first network 102 .
- Edge server 104 may store such segment (obtained at 228 from content server 124 ) in cache 106 and provide the obtained segment to user equipment device 110 (at 230 ), to enable and cause user equipment device 110 to generate for display such portion of the media asset.
- edge server 104 may receive a request, e.g., via first network 102 , from user equipment device 112 for the same segment of the media asset requested by user equipment device 110 at 222 . Since such segment was previously stored in cache 106 , the streaming assistance application may provide the segment from cache 106 to user equipment device 112 (at 234 , to enable and cause user equipment device 112 to generate for display such portion of the media asset.
- edge server 104 may receive a request, e.g., via first network 102 , from user equipment device 110 , for another segment, e.g., the next sequential segment (segment-2) of the media asset, after segment-1 having been requested at 222 .
- Edge server 104 may additionally receive, at 238 , a request for such segment-2 from user equipment device 112 .
- the streaming assistance application may perform a determination at 240 , similar to the determination described at 224 and in FIG. 3 , and as a result of such determination may decide to obtain the requested segment-2 using second network 116 and user equipment device 110 .
- the streaming assistance application may identify the combination of using user equipment device 110 and second network 116 as the optimal manner for obtaining segment-2, as compared to utilizing edge server 104 , user equipment device 112 or any other suitable user equipment device, and a particular accompanying network.
- the streaming assistance application may determine to utilize user equipment device 110 's PN1 118 connection (e.g., a cellular network), and may instruct user equipment device 110 to obtain such segment by way of an HTTP response (at 242 ).
- PN1 118 connection e.g., a cellular network
- Such HTTP response may comprise a header in which the streaming assistance application instructs user equipment device 110 to obtain segment-2 via PN1 118 and POST the obtained segment-2 to edge server 104 , e.g., transmit the obtained segment-2 by way of first network 102 for storage at cache 106 .
- the streaming assistance application instructs user equipment device 110 to obtain segment-2 via PN1 118 and POST the obtained segment-2 to edge server 104 , e.g., transmit the obtained segment-2 by way of first network 102 for storage at cache 106 .
- only user equipment devices present in physical environment 114 and requesting portions of the particular media asset associated with segment-2 may be considered as candidates for retrieving the segment.
- any user equipment device present in physical environment 114 and requesting any content may be considered as a candidate for retrieving the segment.
- any user equipment device present in physical environment 114 and having the streaming assistance application installed or otherwise executing thereon may be considered as a candidate for retrieving the segment.
- users of such user equipment devices may be incentivized to lend their mobile device's bandwidth and resources for the purposes of obtaining segments by being offered access to bonus content, or accumulating points or currency for a profile with the streaming assistance application.
- user equipment device 110 may request segment-2 by way of second network 116 , specifically PN1 118 , and, at 246 , user equipment device 110 may obtain such segment-2 by way of second network 116 , specifically PN1 118 , to enable and cause user equipment device 110 to generate for display such portion of the media asset.
- user equipment device 110 may store such segment to buffer memory of user equipment device 110 , and transmit such segment-2 to cache 106 of edge server 104 (at 248 ).
- user equipment device 110 may transmit such segment-2 to cache 106 of edge server 104 by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof.
- edge server 104 may deliver segment-2 from cache 106 to user equipment device 112 , to enable and cause user equipment device 112 to generate for display such portion of the media asset.
- the streaming assistance application may receive from user equipment device 110 , at edge server 104 , a request for another segment of the media asset, e.g., a next sequential segment-3, after the prior segment-2 within a duration of the media asset.
- Edge server 104 may additionally receive, at 254 , a request for such segment-3 from user equipment device 112 .
- the streaming assistance application may perform a determination, similar to the determinations described at 240 and 224 and in FIG. 3 , and as a result of such determination may decide to obtain the requested segment-3 using second network 116 and user equipment device 112 .
- the streaming assistance application may identify the combination of using user equipment device 112 and second network 116 as the optimal manner for obtaining segment-3, as compared to utilizing edge server 104 , user equipment device 110 or any other suitable user equipment device, and a particular accompanying network.
- the streaming assistance application may determine to utilize user equipment device 112 's PN3 122 connection (e.g., a cellular network), and may instruct user equipment device 112 to obtain such segment-3 by way of an HTTP response (at 256 ).
- PN3 122 connection e.g., a cellular network
- Such HTTP response may comprise a header in which the streaming assistance application instructs user equipment device 110 to obtain segment-3 via PN1 118 and POST the obtained segment-3 to edge server 104 , e.g., transmit the obtained segment-3 by way of first network 102 for storage at cache 106 .
- user equipment device 112 may request segment-3 by way of second network 116 , specifically PN3 122 , and, at 260 , user equipment device 112 may obtain such segment-3 by way of second network 116 , specifically PN3 122 , to enable and cause user equipment device 112 to generate for display such portion of the media asset.
- user equipment device 112 may store such segment to buffer memory of user equipment device 112 , and transmit such segment-3 to cache 106 of edge server 104 (at 262 ).
- user equipment device 112 may transmit such segment-3 to cache 106 of edge server 104 by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof.
- edge server 104 may deliver segment-3 from cache 106 to user equipment device 110 , to enable and cause user equipment device 110 to generate for display such portion of the media asset.
- segment(s) can be downloaded or otherwise obtained in parallel if such segment(s) are available in content server 124 .
- segments can be downloaded or otherwise obtained from cache 106 of edge server 104 .
- the downloading or otherwise obtaining of a particular segment may be distributed among multiple networks (e.g., 118 , 120 , 122 , via one or more user equipment devices), e.g., using range requests.
- FIG. 4 is an illustrative block diagram 400 indicating how portions of a media asset may be obtained via multiple networks, in accordance with some embodiments of this disclosure.
- Content server 124 may be capable of communicating with edge server 104 , user equipment device 110 , user equipment device 112 , and user equipment device 402 by way of second network 116 .
- Second network 116 may comprise public network 1 (PN1) 118 , PN2 120 , PN3 122 and/or PN 404 , and/or any other suitable network.
- Second network 116 may be, for example, a cellular network, a satellite network or any other suitable network or any combination thereof, and/or a backhaul network for first network 102 .
- First network 102 may be a private network comprising edge server 104 , user equipment devices 110 , 112 and 402 , and may correspond to a particular physical environment 114 .
- segments may be streamed by way of three network links, although it should be appreciated that any other suitable number of network links may be employed.
- PN4 404 may not be used due to the streaming assistance application determining, based on monitored network characteristics, that performance of PN4 404 is insufficient to deliver a quality media session to users, or that PN4 404 does not support the streaming assistance application.
- Edge server 104 may determine to retrieve segment 1 and segment 4 by way of PN2 120 of second network 116 , and user equipment devices 110 , 112 and 402 may stream or otherwise obtain such segments from edge server 104 via first network 102 .
- the streaming assistance application may instruct user equipment device 110 to obtain segment 2 via PN1 118 of second network 116 , and upload or transmit such segment 2 to edge server 104 via first network 102 .
- the streaming assistance application may cause user equipment devices 112 and 402 to stream or otherwise obtain segment 2, having been provided to edge server 104 by user equipment device 110 via PN1 118 of second network 116 , from cache 106 of edge server 104 .
- the streaming assistance application may cause user equipment device 112 to stream or otherwise obtain segment 3 via PN3 122 of second network 116 , and may cause user equipment device 112 to upload or transmit the obtained segment 3 to edge server 104 via first network 102 , for storage at cache 106 .
- the streaming assistance application may cause user equipment devices 110 and 402 to obtain segment 3 by way of first network 102 from edge server 104 , to enable such devices to generate for display segment 3.
- the above-described determinations, with respect to selecting which devices and networks should be used to obtain particular segments of the media asset, may be performed in the manner as described above and below, e.g., based on monitored network characteristics and any other suitable network information.
- the streaming assistance application may employ predictive caching techniques. For example, the streaming assistance application may cause an obtained media asset (or portions thereof) to be stored to cache 106 based at least in part on determining such media asset (or portions thereof) is being requested by and/or provided to multiple user equipment devices in physical environment 114 . In some embodiments, the media asset or portions thereof may be cached upon the streaming assistance application determining that such media asset or portions thereof are likely to be requested, e.g., are popular or trending in a location corresponding to physical environment 114 .
- such determination to store the media asset or portions thereof in cache 106 may include determining the media asset or portions thereof are likely to be requested within a threshold period of time (e.g., five hours, one day or any other suitable time period).
- the streaming assistance application may cause an obtained media asset (or portions thereof) to be stored to cache 106 based at least in part on determining such media asset (or portions thereof) is likely to be subject to a trick-play request while being provided in physical environment 114 .
- the streaming assistance application may determine that certain types of content, such as, for example, live broadcasts of media assets, e.g., sports or news, are likely to be rewound, paused, skipped or fast-forwarded, and thus may instruct edge server 104 to cache one or more portions of such media asset.
- certain portions of content such as, for example, live broadcasts of media assets, e.g., sports or news
- edge server 104 may instruct edge server 104 to cache one or more portions of such media asset.
- a particular portion of a media asset e.g., a goal in a soccer game, may be determined by the streaming assistance application as likely to be re-watched by users, and thus should be cached to enable later retrieval in the event of a trick-play operation.
- certain content may be preemptively cached by edge server 104 , e.g., trending videos from any suitable source, in anticipation of multiple requests to view such content, or certain content may be cached based on having recently received multiple requests for such content.
- content may be purged from cache 106 after a certain period of time after being stored at the cache, or after a certain period of time since a last request for such media asset or portion thereof was received, and/or any suitable caching strategy may be employed.
- server and network assisted DASH (SAND) techniques may be employed, which may provide messaging functionalities for improving the streaming performance and caching between the DASH clients as well as bringing more intelligence to the edge caches. For example, edge server 104 can prefetch segments that are most likely to be served later to clients.
- FIGS. 5 - 6 describe illustrative devices, systems, servers, and related hardware for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- FIG. 5 shows generalized embodiments of illustrative user equipment devices 500 and 501 , which may correspond to, e.g., user equipment devices 110 , 112 and/or 404 of FIGS. 1 , 2 and 4 , and/or other suitable device.
- user equipment device 500 may be a smartphone device, a tablet or any other suitable device capable of requesting and obtaining portions of a media asset over a network, communicating with content server 124 and edge server 104 , or otherwise interfacing with the streaming assistance application described herein.
- user equipment device 501 may be a user television equipment system or device.
- User equipment device 501 may include set-top box 515 .
- Set-top box 515 may be communicatively connected to microphone 516 , audio output equipment (e.g., speaker or headphones 514 ), and display 512 .
- microphone 516 may receive audio corresponding to a voice of a user, e.g., a voice input or a voice command.
- display 512 may be a television display or a computer display.
- set-top box 515 may be communicatively connected to user input interface 510 .
- user input interface 510 may be a remote control device.
- Set-top box 515 may include one or more circuit boards.
- the circuit boards may include control circuitry, processing circuitry, and storage (e.g., RAM, ROM, hard disk, removable disk, etc.). In some embodiments, the circuit boards may include an input/output path. More specific implementations of devices are discussed below in connection with FIG. 6 .
- device 500 may comprise any suitable number of sensors (e.g., gyroscope or gyrometer, or accelerometer, etc.), as well as a GPS module (e.g., in communication with one or more servers and/or cell towers and/or satellites) or any other suitable localization technique, to ascertain a location of user equipment device 500 .
- user equipment device 500 comprises a rechargeable battery that is configured to provide power to the components of the device.
- Each one of user equipment device 500 and user equipment device 501 may receive content and data via input/output (I/O) path 502 .
- I/O path 502 may provide content (e.g., broadcast programming, on-demand programming, Internet content, content available over a local area network (LAN) or wide area network (WAN), and/or other content) and data to control circuitry 504 , which may comprise processing circuitry 506 and storage 508 .
- Control circuitry 504 may be used to send and receive commands, requests, and other suitable data using I/O path 502 , which may comprise I/O circuitry.
- I/O path 502 may connect control circuitry 504 (and specifically processing circuitry 506 ) to one or more communications paths (described below).
- set-top box 515 is shown in FIG. 5 for illustration, any suitable computing device having processing circuitry, control circuitry, and storage may be used in accordance with the present disclosure.
- set-top box 515 may be replaced by, or complemented by, a personal computer (e.g., a notebook, a laptop, a desktop), a smartphone (e.g., user equipment device 500 ), a tablet, a network-based server hosting a user-accessible client device, a non-user-owned device, any other suitable device, or any combination thereof.
- Control circuitry 504 may be based on any suitable control circuitry such as processing circuitry 506 .
- control circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputer.
- control circuitry may be distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor).
- control circuitry 504 executes instructions for the streaming assistance application stored in memory (e.g., storage 508 ). Specifically, control circuitry 504 may be instructed by the streaming assistance application to perform the functions discussed above and below. In some implementations, processing or actions performed by control circuitry 504 may be based on instructions received from the streaming assistance application.
- control circuitry 504 may include communications circuitry suitable for communicating with a server or other networks or servers.
- the streaming assistance application may be a stand-alone application implemented on a device or a server.
- the streaming assistance application may be implemented as software or a set of executable instructions.
- the instructions for performing any of the embodiments discussed herein of the streaming assistance application may be encoded on non-transitory computer-readable media (e.g., a hard drive, random-access memory on a DRAM integrated circuit, read-only memory on a BLU-RAY disk, etc.).
- the instructions may be stored in storage 508 , and executed by control circuitry 504 of a user equipment device 500 .
- the streaming assistance application may be a client/server application where only the client application resides on user equipment device 500 , and a server application resides on an external server (e.g., server 604 of FIG. 6 and/or media content source 602 of FIG. 6 and/or edge server 616 of FIG. 6 ).
- edge server 616 may correspond to edge server 104 of FIG. 1
- content server 124 of FIG. 1 may correspond to media content source 602 and/or server 604 .
- database 605 may be a network database storing status information and network characteristic information for various networks (e.g., first network 102 and second network 116 ).
- the streaming assistance application may be implemented partially as a client application on control circuitry 504 of user equipment device 500 and partially an external server (e.g., server 604 of FIG. 6 and/or media content source 602 of FIG. 6 and/or edge server 616 of FIG. 6 ) as a server application running on control circuitry 611 .
- an external server e.g., server 604 of FIG. 6 and/or media content source 602 of FIG. 6 and/or edge server 616 of FIG. 6
- Such external server may be a part of a local area network with one or more of user equipment devices 500 , 501 or may be part of a cloud computing environment accessed via the internet.
- various types of computing services for performing searches on the internet or informational databases, providing storage (e.g., for a database) or parsing data are provided by a collection of network-accessible computing and storage resources (e.g., server 604 of FIG. 6 and/or media content source 602 of FIG. 6 and/or edge server 616 of FIG. 6 ), referred to as “the cloud.”
- User equipment device 500 may be a cloud client that relies on the cloud computing capabilities from the cloud to determine whether processing should be offloaded and facilitate such offloading.
- the streaming assistance application may instruct control circuitry 504 or 611 circuitry to perform processing tasks for selecting a particular device and/or network to obtain a particular media asset or segment thereof.
- the client application may instruct control circuitry 504 to perform processing tasks for selecting a particular device and/or network to obtain a particular media asset or segment thereof.
- Control circuitry 504 may include communications circuitry suitable for communicating with a server, social network service, a table or database server, or other networks or servers The instructions for carrying out the above mentioned functionality may be stored on a server (which is described in more detail in connection with FIG. 6 ).
- Communications circuitry may include a cable modem, an integrated services digital network (ISDN) modem, a digital subscriber line (DSL) modem, a telephone modem, Ethernet card, or a wireless modem for communications with other equipment, or any other suitable communications circuitry. Such communications may involve the Internet or any other suitable communication networks or paths (which is described in more detail in connection with FIG. 6 ).
- communications circuitry may include circuitry that enables peer-to-peer communication of devices, or communication of devices in locations remote from each other (described in more detail below).
- Memory may be an electronic storage device provided as storage 508 that is part of control circuitry 504 .
- the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random-access memory, read-only memory, hard drives, optical drives, digital video disc (DVD) recorders, compact disc (CD) recorders, BLU-RAY disc (BD) recorders, BLU-RAY 3D disc recorders, digital video recorders (DVR, sometimes called a personal video recorder, or PVR), solid state devices, quantum storage devices, gaming consoles, gaming media, or any other suitable fixed or removable storage devices, and/or any combination of the same.
- Storage 508 may be used to store various types of content described herein as well as streaming assistance application data described above.
- Nonvolatile memory may also be used (e.g., to launch a boot-up routine and other instructions).
- Cloud-based storage may be used to supplement storage 508 or instead of storage 508 .
- Control circuitry 504 may include video generating circuitry and tuning circuitry, such as one or more analog tuners, one or more MPEG-2 decoders or other digital decoding circuitry, high-definition tuners, or any other suitable tuning or video circuits or combinations of such circuits. Encoding circuitry (e.g., for converting over-the-air, analog, or digital signals to MPEG signals for storage) may also be provided. Control circuitry 504 may also include scaler circuitry for upconverting and downconverting content into the preferred output format of user equipment device 500 . Control circuitry 504 may also include digital-to-analog converter circuitry and analog-to-digital converter circuitry for converting between digital and analog signals.
- the tuning and encoding circuitry may be used by user equipment device 500 , 501 to receive and to display, to play, or to record content.
- the tuning and encoding circuitry may also be used to receive media consumption data.
- the circuitry described herein, including for example, the tuning, video generating, encoding, decoding, encrypting, decrypting, scaler, and analog/digital circuitry may be implemented using software running on one or more general purpose or specialized processors. Multiple tuners may be provided to handle simultaneous tuning functions (e.g., watch and record functions, picture-in-picture (PIP) functions, multiple-tuner recording, etc.). If storage 508 is provided as a separate device from user equipment device 500 , the tuning and encoding circuitry (including multiple tuners) may be associated with storage 508 .
- PIP picture-in-picture
- Control circuitry 504 may receive instruction from a user by way of user input interface 510 .
- User input interface 510 may be any suitable user interface, such as a remote control, mouse, trackball, keypad, keyboard, touch screen, touchpad, stylus input, joystick, voice recognition interface, or other user input interfaces.
- Display 512 may be provided as a stand-alone device or integrated with other elements of each one of user equipment device 500 and user equipment device 501 .
- display 512 may be a touchscreen or touch-sensitive display.
- user input interface 510 may be integrated with or combined with display 512 .
- user input interface 510 includes a remote-control device having one or more microphones, buttons, keypads, any other components configured to receive user input or combinations thereof.
- user input interface 510 may include a handheld remote-control device having an alphanumeric keypad and option buttons.
- user input interface 510 may include a handheld remote-control device having a microphone and control circuitry configured to receive and identify voice commands and transmit information to set-top box 515 .
- Audio output equipment 514 may be integrated with or combined with display 512 .
- Display 512 may be one or more of a monitor, a television, a liquid crystal display (LCD) for a mobile device, amorphous silicon display, low-temperature polysilicon display, electronic ink display, electrophoretic display, active matrix display, electro-wetting display, electro-fluidic display, cathode ray tube display, light-emitting diode display, electroluminescent display, plasma display panel, high-performance addressing display, thin-film transistor display, organic light-emitting diode display, surface-conduction electron-emitter display (SED), laser television, carbon nanotubes, quantum dot display, interferometric modulator display, or any other suitable equipment for displaying visual images.
- LCD liquid crystal display
- SED surface-conduction electron-emitter display
- a video card or graphics card may generate the output to the display 512 .
- Audio output equipment 514 may be provided as integrated with other elements of each one of user equipment device 500 and user equipment device 501 or may be stand-alone units. An audio component of videos and other content displayed on display 512 may be played through speakers (or headphones) of audio output equipment 514 . In some embodiments, audio may be distributed to a receiver (not shown), which processes and outputs the audio via speakers of audio output equipment 514 . In some embodiments, for example, control circuitry 504 is configured to provide audio cues to a user, or other audio feedback to a user, using speakers of audio output equipment 514 .
- microphone 516 or audio output equipment 514 may include a microphone configured to receive audio input such as voice commands or speech.
- a user may speak letters, terms, phrases, alphanumeric characters, words, etc. that are received by the microphone and converted to text by control circuitry 504 .
- a user may voice commands that are received by a microphone and recognized by control circuitry 504 .
- Camera 518 may be any suitable camera integrated with the equipment or externally connected and capable of capturing still and moving images.
- camera 518 may be a digital camera comprising a charge-coupled device (CCD) and/or a complementary metal-oxide semiconductor (CMOS) image sensor.
- CMOS complementary metal-oxide semiconductor
- camera 518 may be an analog camera that converts to digital images via a video card.
- the streaming assistance application may be implemented using any suitable architecture. For example, it may be a stand-alone application wholly-implemented on each one of device 500 and device 501 .
- instructions of the application may be stored locally (e.g., in storage 508 ), and data for use by the application is downloaded on a periodic basis (e.g., from an out-of-band feed, from an Internet resource, or using another suitable approach).
- Control circuitry 504 may retrieve instructions of the application from storage 508 and process the instructions to provide the functionality of the streaming assistance application discussed herein. Based on the processed instructions, control circuitry 504 may determine what action to perform when input is received from user input interface 510 .
- Computer-readable media includes any media capable of storing data.
- the computer-readable media may be non-transitory including, but not limited to, volatile and non-volatile computer memory or storage devices such as a hard disk, floppy disk, USB drive, DVD, CD, media card, register memory, processor cache, Random Access Memory (RAM), etc.
- Control circuitry 504 may allow a user to provide user profile information or may automatically compile user profile information. For example, control circuitry 504 may access and monitor network data, video data, audio data, processing data, participation data from a streaming assistance application and social network profile. Control circuitry 504 may obtain all or part of other user profiles that are related to a particular user (e.g., via social media networks), and/or obtain information about the user from other sources that control circuitry 504 may access. As a result, a user can be provided with a unified experience across the user's different devices.
- the streaming assistance application is a client/server-based application.
- Data for use by a thick or thin client implemented on each one of user equipment device 500 and user equipment device 501 may be retrieved on-demand by issuing requests to a server remote to each one of user equipment device 500 and user equipment device 501 .
- the remote server may store the instructions for the application in a storage device.
- the remote server may process the stored instructions using circuitry (e.g., control circuitry 504 ) and generate the displays discussed above and below.
- the client device may receive the displays generated by the remote server and may display the content of the displays locally on user equipment device 500 .
- User equipment device 500 may receive inputs from the user via input interface 510 and transmit those inputs to the remote server for processing and generating the corresponding displays. For example, user equipment device 500 may transmit a communication to the remote server indicating that an up/down button was selected via input interface 510 .
- the remote server may process instructions in accordance with that input and generate a display of the application corresponding to the input (e.g., a display that moves a cursor up/down). The generated display may then be transmitted to user equipment device 500 for presentation to the user.
- the streaming assistance application may be downloaded and interpreted or otherwise run by an interpreter or virtual machine (run by control circuitry 504 ).
- the streaming assistance application may be encoded in the ETV Binary Interchange Format (EBIF), received by control circuitry 504 as part of a suitable feed, and interpreted by a user agent running on control circuitry 504 .
- EBIF ETV Binary Interchange Format
- the streaming assistance application may be an EBIF application.
- the streaming assistance application may be defined by a series of JAVA-based files that are received and run by a local virtual machine or other suitable middleware executed by control circuitry 504 .
- the streaming assistance application may be, for example, encoded and transmitted in an MPEG-2 object carousel with the MPEG audio and video packets of a program.
- FIG. 6 is a diagram of an illustrative system 600 , in accordance with some embodiments of this disclosure.
- System 600 may comprise one or more of user equipment devices 607 , 608 , 610 (and/or any other suitable number of user equipment devices), media content source 602 , server 604 , database 605 , edge server 616 , and/or any other suitable computing devices, or any combination thereof, which may be coupled to one or more networks, e.g., communication network 609 .
- communication network may comprise first network 102 of FIG. 1 and second network 116 of FIG. 2 . At least a portion of such devices of FIG. 6 may be present in a particular environment, such as, for example, physical environment 114 of FIG. 1 .
- Communication network 606 may be one or more networks including the Internet, a mobile phone network, mobile voice or data network (e.g., a 5G, 4G, or LTE network, or any other suitable network or any combination thereof), cable network, public switched telephone network, or other types of communication network or combinations of communication networks.
- a mobile phone network e.g., a 5G, 4G, or LTE network, or any other suitable network or any combination thereof
- cable network e.g., public switched telephone network, or other types of communication network or combinations of communication networks.
- Paths may separately or together include one or more communications paths, such as a satellite path, a fiber-optic path, a cable path, a path that supports Internet communications (e.g., IPTV), free-space connections (e.g., for broadcast or other wireless signals), or any other suitable wired or wireless communications path or combination of such paths.
- Communications with the client devices may be provided by one or more of these communications paths but are shown as a single path in FIG. 6 to avoid overcomplicating the drawing.
- communications paths are not drawn between devices, these devices may communicate directly with each other via communications paths as well as other short-range, point-to-point communications paths, such as USB cables, IEEE 1394 cables, wireless paths (e.g., Bluetooth, infrared, IEEE 702-11x, etc.), or other short-range communication via wired or wireless paths.
- the devices may also communicate with each other directly through an indirect path via communication network 606 .
- System 600 may comprise one or more media content sources 602 and one or more servers 604 .
- content server 124 may correspond to one or more of media content source 602 or server 604 .
- Communications with media content source 602 and server 604 may be exchanged over one or more communications paths but are shown as a single path in FIG. 6 to avoid overcomplicating the drawing.
- there may be more than one of each of media content source 602 and server 604 but only one of each is shown in FIG. 6 to avoid overcomplicating the drawing.
- media content source 602 and server 604 may be integrated as one source device.
- the streaming assistance application may be executed at one or more of control circuitry 611 of server 604 (and/or control circuitry of user equipment devices 607 , 608 , 610 , or control circuitry 618 of edge server 616 , or any other suitable devices, or any combination thereof).
- any suitable data structure or any combination thereof may be stored at database 605 maintained at or otherwise associated with server 604 , and/or at storage of one or more of user equipment devices 607 , 608 , 610 and/or edge server 616 , at least one of which may be configured to host or be in communication with database 605 .
- User equipment device 610 may be a smart television, user equipment device 607 may be user computer equipment, and user equipment device 608 may be a wireless user communication device, each of which may be configured to include some or all of the features of the streaming assistance application described herein.
- the streaming assistance application may be tailored to the capabilities of the particular device.
- the streaming assistance application may facilitate the retrieval and presentation of media assets, and/or may operate in conjunction with a media application (e.g., associated with content server 124 ) which may present media assets to a user.
- a media application e.g., associated with content server 124
- server 604 may include control circuitry 611 and storage 614 (e.g., RAM, ROM, Hard Disk, Removable Disk, etc.). Storage 614 may store one or more databases. Server 604 may also include an input/output path 612 . I/O path 612 may provide media consumption data, social networking data, device information, or other data, over a local area network (LAN) or wide area network (WAN), and/or other content and data to control circuitry 611 , which may include processing circuitry, and storage 614 . Control circuitry 611 may be used to send and receive commands, requests, and other suitable data using I/O path 612 , which may comprise I/O circuitry. I/O path 612 may connect control circuitry 611 (and specifically control circuitry) to one or more communications paths. I/O path 612 may comprise I/O circuitry.
- I/O path 612 may connect control circuitry 611 (and specifically control circuitry) to one or more communications paths. I/O path 612 may comprise I/O circuitry.
- Control circuitry 611 may be based on any suitable control circuitry such as one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputer. In some embodiments, control circuitry 611 may be distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). In some embodiments, control circuitry 611 executes instructions for a streaming assistance application stored in memory (e.g., the storage 614 ). Memory may be an electronic storage device provided as storage 614 that is part of control circuitry 611 .
- User equipment device 610 may be a smart television, user equipment device 607 may be user computer equipment, and user equipment device 608 may be a wireless user communication device, each of which may be configured to include some or all of the features of the streaming assistance application described herein.
- the streaming assistance application may be tailored to the capabilities of the particular device.
- Edge server 616 may comprise control circuitry 618 , I/O path 620 and storage 622 , which may be implemented in a similar manner as control circuitry 611 , I/O path 612 and storage 624 , respectively of server 604 .
- Edge server 616 may correspond to edge server 104 of FIG. 1 .
- Edge server 616 may be configured to be in communication with one or more of user equipment devices 607 , 608 , 610 and server 604 and media content source 602 over communication network 609 , and may be configured to perform processing tasks in connection with the streaming assistance application
- a plurality of edge servers 616 may be strategically located at various geographic locations.
- one or more of the edge servers may be mobile edge servers configured to provide processing support for mobile devices at various geographical regions.
- FIG. 7 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.
- the individual steps of process 700 may be implemented by one or more components of the devices and systems of FIGS. 1 - 6 .
- the present disclosure may describe certain steps of process 700 (and of other processes described herein) as being implemented by certain components of the devices and systems of FIGS. 1 - 6 , this is for purposes of illustration only, and it should be understood that other components of the devices and systems of FIGS. 1 - 6 may implement those steps instead.
- control circuitry may identify a first network (e.g., first network 102 of FIG. 1 ) and a second network (e.g., second network 116 of FIG. 1 ) available to one or more user equipment devices (e.g., user equipment device 110 of FIG. 1 ).
- the control circuitry may determine that such user equipment device is present within physical environment 114 , which edge server 104 may also be located in, based on any suitable technique, e.g., based on determining that the user equipment device is connected to the first network, location-based techniques, and/or any other suitable technique.
- first network 102 may be a localized network, e.g., a home network, a business network, an in-vehicle network, a network provided in public transportation or a common carrier, or any other suitable network, or any combination thereof.
- first network 102 may be facilitated at least in part by networking equipment on the premises of physical environment 114 .
- the control circuitry may determine or receive information from, e.g., networking equipment, a remote server, and/or devices within physical environment 114 , indicating a list of multiple user equipment devices connected to the first network and that support the streaming assistance application.
- the control circuitry may determine content currently requested, or likely to be requested, by the user equipment devices included on such list of user equipment devices that are connected to the first network and that support the streaming assistance application.
- the first network (e.g., first network 102 of FIG. 1 ) may correspond to, e.g., a Wi-Fi network, and the devices of environment 114 may communicate wirelessly over a WLAN, and/or the first network 102 may correspond to a private cellular network, or any other suitable network, or any combination thereof.
- a second network (e.g., second network 116 of FIG. 1 ) may correspond to a cellular network, a satellite network or any other suitable network or any combination thereof, and may include a network (e.g., provided by an MNO) usable by a user equipment device to connect to content server 124 .
- certain portions of the second network may function as a backhaul connection to content server 124 for edge server 104 within the first network.
- control circuitry may receive, from a user equipment device or devices (e.g., user equipment device 110 of FIG. 1 ), a request to access at least a portion of a media asset.
- the media asset may be, for example, a live broadcast, VOD content or any other suitable content or any combination thereof.
- the request may be received by the control circuitry in response to providing a manifest file, usable to play the media asset, to the user equipment device.
- 704 may include determining that user equipment devices within the same particular physical environment may be requesting the same media asset and/or the same portions thereof.
- control circuitry may determine whether the cache (e.g., cache 106 of FIG. 1 ) currently stores a media asset, or portion thereof, that matches the at least a portion of a media asset requested at 704 . For example, the control circuitry may compare titles and/or metadata of the media asset associated with the received request and/or timestamps of the media asset associated with the received request to data stored in the cache. If the control circuitry determines that the cache stores such content, processing may proceed to 708 ; otherwise processing may proceed to 710 .
- the cache e.g., cache 106 of FIG. 1
- control circuitry may retrieve from the cache (e.g., cache 106 of edge server 104 of FIG. 1 ), and provide to the user equipment device (e.g., user equipment device 110 ), the at least a portion of the media asset determined to be stored in the cache.
- the control circuitry may transmit the portion of the media asset retrieved from the cache to user equipment device 110 (e.g., by way of the first network), to cause and enable user equipment device 110 to generate for display the at least a portion of the media asset.
- control circuitry may determine network and/or device characteristics associated with devices included in the particular physical environment (e.g., environment 114 of FIG. 1 ). For example, the control circuitry may monitor network characteristics of first network 102 and/or second network 116 (which may include monitoring network characteristics of networks 118 , 120 and/or 122 and/or any other suitable networks).
- control circuitry may monitor one or more quality-of-service characteristics (e.g., available bandwidth, error rate, bit rate, throughput lag, transmission delay, availability, or jitter, or any other suitable network characteristic, or any combination thereof) experienced by user equipment devices 110 and/or 112 , and/or any other suitable parameters.
- quality-of-service characteristics e.g., available bandwidth, error rate, bit rate, throughput lag, transmission delay, availability, or jitter, or any other suitable network characteristic, or any combination thereof
- the control circuitry may monitor network availability, perform bandwidth estimate techniques, and/or any other suitable network characteristic or network status information or other tools may be employed, or any combination thereof.
- control circuitry may monitor the quality of the available public or private networks and/or Wi-Fi uplink and downlink capacity using passive and/or active network estimation techniques, e.g., to function similarly as an RNIS or utilize such a service from another network node.
- signal quality indicators e.g., RSSI
- packet information e.g., response times
- wireless signal characteristics such as, for example, CSI and/or RCPI of devices and/or networking equipment may be monitored.
- the streaming assistance application may use information of available mobile network operator's networks, information of the connected users, and share the network usage by number of users in each MNO's network.
- the control circuitry may determine whether the edge server (e.g., edge server 104 of FIG. 1 , which may correspond to edge server 616 of FIG. 6 ) should be selected to obtain the at least a portion of the media asset (having been requested at 704 ) via the first network.
- the control circuitry may also determine whether the user equipment device (e.g., user equipment device 110 of FIG. 1 ) should instead be selected to obtain the at least a portion of the media asset via the second network.
- the control circuitry may additionally or alternatively determine whether other devices (e.g., user equipment device 112 of FIG. 1 , user equipment device 402 of FIG.
- control circuitry may only consider as candidate devices to obtain the portion of the media asset those devices having support for the streaming assistance application, and/or those devices currently requesting the same segment requested at 704 or other segments of the same media asset associated with the request of 704 .
- the determination at 712 may be based at least in part on the network characteristics and/or device characteristics determined at 710 . For example, if a certain network is unavailable, the control circuitry may determine that such network should not be utilized. As another example, any of the network or device characteristics determined at 710 may be compared to a threshold value, to determine the suitability of the network, and/or network or device characteristics determined at 710 may be compared to each other to identify an optimal device and network combination.
- the control circuitry may cause the at least a portion of the media asset to be obtained.
- such portion of the media asset may be obtained using edge server 104 by way of first network 102 (and via a backhaul communications network to content server 124 , where such backhaul communications network may include at least a portion of second network 116 ).
- such portion of the media asset may be obtained using user equipment device 110 by way of second network 116 (e.g., a cellular network).
- second network 116 e.g., a cellular network.
- a different user equipment device e.g., user equipment device 112 of FIG.
- the portion of the media asset may be used to obtain the portion of the media asset, such as by way of the second network, such as if that device and network pair is determined to be optimal as compared to other candidate device and network pairs.
- a heuristic-based approach, and/or machine learning techniques may be used to identify the optimal device and network pairs from among the candidate device and network pairs.
- retrieval of a particular segment of a media asset may be divided as between user equipment devices and/or as between user equipment devices and edge server(s).
- the control circuitry may cause the obtained at least a portion of the media asset to be stored at the cache. For example, if the control circuitry of the edge server was selected at 714 to retrieve the portion or segment of the media asset, then such control circuitry may cause the obtained portion of the media asset to be stored at a cache (e.g., cache 106 of edge server 104 of FIG. 1 ). On the other hand, if a particular user equipment device was used to obtain the particular segment, the control circuitry may cause to be received, or may otherwise receive, such obtained segment from the particular user equipment device, and may cause such segment to be stored at the cache.
- a cache e.g., cache 106 of edge server 104 of FIG. 1
- predictive caching techniques may be used to determine whether to store an obtained media asset or portion(s) thereof, and/or how long such media asset or portion(s) thereof should be stored.
- the control circuitry may determine that certain types of content, such as, for example, live broadcasts of media assets, e.g., sports or news, are likely to be rewound, paused, skipped or fast-forwarded, and thus may instruct the edge server to cache one or more portions of such media asset.
- a particular portion of a media asset may be determined by the streaming assistance application as likely to be re-watched by users, and thus should be cached to enable later retrieval in the event of a trick-play operation.
- certain content may be preemptively cached by the edge server, e.g., trending YouTube videos, in anticipation of multiple requests to view such content, or certain content may be cached based on having recently received multiple requests for such content.
- content may be purged from cache 106 after a certain period of time after being stored at the cache, or after a certain period of time since a last request for such media asset or portion thereof was received, and/or any suitable caching strategy may be employed.
- server and network-assisted DASH (SAND) techniques may be employed, which may provide messaging functionalities for improving the streaming performance and caching between the DASH clients as well as bringing more intelligence to the edge caches.
- the edge server can prefetch segments that are most likely to be served later to clients.
- the control circuitry may cause the obtained at least a portion of the media asset to be generated for display at the user equipment device (e.g., user equipment device 110 having requested access to the portion of the media asset).
- the control circuitry may receive various operations, e.g., trick-play commands, recording commands, or any other suitable operation, or any combination thereof, in connection with the playing of the media asset.
- the process of FIG. 7 may be repeated for each subsequent portion of the media asset.
- the control circuitry upon determining that subsequent portions of the media asset are being requested or are likely to be requested by the client user equipment device, may perform the process of FIG. 7 for such subsequent portions of the media asset.
- the control circuitry may, from segment to segment, cause different portions of the media asset to be obtained from different device and network combinations, to optimize the delivery of quality media assets to the client device in an efficient manner.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Systems and methods are described for identifying a first network (associated with an edge server comprising a cache) and a second network available to a user equipment device. A request to access at least a portion of a media asset may be received from the user equipment device. In response to determining that the at least a portion of the media asset is not stored in the cache, a determination may be made whether the edge server, via the first network, or whether the user equipment device, via the second network, should obtain such at least a portion of the media asset. Such at least a portion of the media asset may be obtained using the selected server via the first network or using the selected user equipment device via the second network, caused to be stored at the cache, and generated for display at the user equipment device.
Description
- This disclosure is directed to systems and methods for selecting which device and/or network should be used to obtain a portion of a media asset. In particular, a determination may be made whether an edge server should obtain the portion of the media asset via a first network, or whether a user equipment device should obtain the portion of the media asset via a second network.
- Many users have become accustomed to accessing high-quality media from a variety of devices. Such media is commonly delivered to users in temporally segmented form, for instance using adaptive streaming techniques such as Dynamic Adaptive Streaming over HTTP (DASH) or HTTP Live Streaming. The order and quality of the segments may be defined in a manifest file, and the segments may be individually requested by a client device. The media content may be made available in short media segments at different qualities (bitrates), to enable a client to optimize a user's viewing experience by matching the quality of requested video segments against fluctuating network conditions. The media content is commonly delivered using content delivery networks (CDNs), which cache media segments from the content server (origin) to edge servers. In mobile networks, the edge server can be located close to the base station in multi-access edge computing (MEC) to improve service latency and quality as well as to ensure efficient networking. The client device requests a video segment from the edge server, which distributes it to the client. If the segment is not available in the edge server, the edge server requests the segment from the origin and forwards it to the client. The edge server may store the requested data for a certain time according to caching rules.
- The client device may have multiple network interfaces, allowing simultaneous connections over, e.g., a mobile (cellular) network and another network (public/private Wi-Fi or private cellular). In some circumstances, private networks may have low throughput to the Internet due to a weak backhaul connection. For instance, backhaul connection to the Internet may be established using a mobile network, limited local area network (LAN), or satellite connection, where the connectivity may be limited, or vary (e.g., in a vehicle or free-Wi-Fi scenario in a public place such as a hotel or restaurant). For example, mobile network capacity may vary particularly in sparsely populated areas or in rural areas, which can degrade the service and video quality. In addition, mobile network operators (MNOs) often provide unlimited data plans, which may increase the load of a cellular network (e.g., LTE, 5G) such as in urban areas. LAN networks may be used to provide backhaul connection, for example, from free Wi-Fi in restaurants, coffee shops, vehicles, etc. Traffic peaks may occur when large groups of people access popular streaming content simultaneously. Consumers are using more and more live media services on mobile devices, and they are expecting to receive high-quality video regardless of their location. More and more of such consumption is done when the user is on the go, e.g., travelling while connected to an available network in restaurant, airport or in a vehicle like a bus, train, or boat. However, when multiple users are streaming the same content at the same time, backhaul network capacity may be insufficient, which can cause a variety of problems. For example, users may be forced to utilize the mobile or cellular network on their mobile devices, or may experience a low quality of experience (QoE) due to stalls and substantial quality fluctuation in a video session. In addition, unnecessary bandwidth and energy consumption may occur if the same segments are streamed several times by the same user or multiple users, which is burdensome for service providers, MNOs, and client devices. This may result in user frustration directed towards network operators as well as service providers.
- To overcome these problems, systems and methods are provided herein for identifying a first network and a second network available to a user equipment device, wherein the first network is associated with an edge server comprising a cache. The systems and methods may receive, from the user equipment device, a request to access at least a portion of a media asset, and determine whether the at least a portion of the media asset is stored in the cache. In response to determining that the at least a portion of the media asset is not stored in the cache, the systems and methods may perform a determination. For example, such determination may be whether the edge server should be selected to obtain the at least a portion of the media asset via the first network from a content server or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server. The systems and methods may cause the at least a portion of the media asset to be obtained using the selected edge server via the first network or using the selected user equipment device via the second network, and cause the obtained at least a portion of the media asset to be stored at the cache. The systems and methods may cause the obtained at least a portion of the media asset to be generated for display at the user equipment device.
- Such aspects may provide a dynamic, flexible system in which streaming of media content to a client device can be optimized to exploit multiple alternative network connections of different devices. For example, a first network associated with a particular environment (e.g., a train Wi-Fi network having an edge server) may be used to provide media to users (e.g., commuters on the train). However, the systems and methods provided herein may determine, based on network characteristics, that such edge server is currently unable to provide high-quality media segments. The systems and methods may instead cause a user equipment device (e.g., of a user commuting on the train) to download or otherwise obtain one or more segments of the media asset via a second network (e.g., a cellular network of his or her mobile device), and provide such segment(s) to the edge server for storage at the cache. In this way, computing and/or network resources required to obtain certain segments of the media asset may be distributed between user equipment device(s) and edge server(s), which may result in the devices, network and/or service providers consuming less computing and/or network resources. Moreover, users may be provided with higher-quality media assets in an efficient manner, to preserve a high-quality user media streaming experience.
- In some aspects of this disclosure, the user equipment device is a first user equipment device, and the systems and methods described herein may be further configured to receive, from a second user equipment device, a request to access the at least a portion of the media asset. Determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network may comprise a further determination. Such further determination may correspond to determining whether the second user equipment device should be selected to obtain the at least a portion of the media asset via the second network. In such example, causing the at least a portion of the media asset to be obtained may be performed using the selected edge server via the first network or using the selected first user equipment device via the second network or using the selected second user equipment device via the second network.
- In some embodiments, the first network is a localized private network, and the second network is a cellular network, and each of the first user equipment device and the second user equipment device may be located in a physical environment associated with the localized private network. The obtained at least a portion of the media asset may be provided to the cache by the selected edge server and may be provided from the cache to at least one of the first user equipment device or the second user equipment device via the localized private network. Alternatively, the obtained at least a portion of the media asset may be provided to the edge server by the selected first user equipment device or by the selected second user equipment device via the localized private network.
- In some aspects of this disclosure, causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the at least a portion of the media asset is likely to be requested by another user equipment device in the physical environment associated with the localized private network.
- In some embodiments, causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the media asset is being provided to a plurality of user equipment devices in the physical environment associated with the localized private network.
- In some aspects of this disclosure, the media asset is a live broadcast, and causing the obtained at least a portion of the media asset to be stored to the cache is performed based at least in part on determining that the user equipment device is likely to request that a trick-play operation be performed on the at least a portion of the media asset.
- In some embodiments, the at least a portion of a media asset is a first portion of the media asset, and the systems and methods may further comprise receiving, from the user equipment device, a request to access a second portion of a media asset. In response to determining that the second portion of the media asset is not stored in the cache, such systems and methods may determine whether the edge server should be selected to obtain the second portion of the media asset via the first network or whether the user equipment device should be selected to obtain the second portion of the media asset via the second network. The systems and methods may cause the second portion of the media asset to be obtained using the selected edge server via the first network or using the selected user equipment device via the second network. In some embodiments, the selected one of the edge server or user equipment device used to obtain the first portion of the media asset is different from the selected one of the edge server or user equipment device used to obtain the second portion of the media asset.
- In some aspects of this disclosure, the user equipment device is a first user equipment device, and the method further comprises selecting the first user equipment device to obtain the at least a portion of the media asset via the second network, and causing the first user equipment device to provide the at least a portion of the media asset to the edge server via the first network.
- In some embodiments, determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network comprises determining network characteristics. For example, the system may be further configured to determine network characteristics associated with the first network, and determine network characteristics associated with the second network. In some embodiments, selecting either the edge server to obtain the at least a portion of the media asset via the first network, or the user equipment device to obtain the at least a portion of the media asset via the second network, is based at least in part on the determined network characteristics. For example, the selection may be based at least in part on the determined network characteristics associated with the first network and the determined network characteristics associated with the second network.
- In some aspects of this disclosure, identifying the second network available to the user equipment device comprises receiving, at the edge server, an indication from the user equipment device specifying the second network and indicating a portion of the second network allocated for use in association with the edge server.
- The present disclosure, in accordance with one or more various embodiments, is described in detail with reference to the following figures. The drawings are provided for purposes of illustration only and merely depict typical or example embodiments. These drawings are provided to facilitate an understanding of the concepts disclosed herein and should not be considered limiting of the breadth, scope, or applicability of these concepts. It should be noted that for clarity and ease of illustration, these drawings are not necessarily made to scale.
-
FIG. 1 shows an illustrative system for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. -
FIG. 2 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. -
FIG. 3 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. -
FIG. 4 is an illustrative block diagram indicating how portions of a media asset may be obtained via multiple networks, in accordance with some embodiments of this disclosure. -
FIG. 5 shows illustrative devices, in accordance with some embodiments of this disclosure. -
FIG. 6 shows illustrative systems, in accordance with some embodiments of this disclosure. -
FIG. 7 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. -
FIG. 1 shows anillustrative system 100 for determining which device should be used to obtain at least a portion of a media asset via a particular network, in accordance with some embodiments of this disclosure.System 100 may correspond to a streaming assistance system in which a cache may be updated based on utilizing network connections in multiple devices connected to the different networks, to optimize video streaming when network connectivity to a content server or content delivery network (CDN) is limited, or otherwise varies.System 100 may include a first network, e.g., private network (PRN) 102, which may comprise or otherwise be associated with one ormore edge servers 104.Edge server 104 may provide edge services for users, and may comprisecache 106, for storing media assets and/or portions of media assets, and streaming assistance network element (SANE) 108, which may correspond to or otherwise be configured to implement a streaming assistance application. In some embodiments, the streaming assistance application may be configured to execute at least in part on one or more ofedge server 104 and/or one or more remote servers (e.g.,content server 124 and/orserver 604 ofFIG. 6 ) and/or one or more ofuser equipment devices 110 and/or 112, or any other suitable device, or any combination thereof. The streaming assistance application may be configured to perform the functionalities described herein. In some embodiments, the voice processing system may be offered as an add-on application, e.g., installed on any networking equipment, computing device, mobile device, edge server and/or any other suitable device that may be present or included inphysical environment 114. Additionally or alternatively, certain functionalities provided by the streaming assistance application may be provided via an Application Programming Interface (API). While asingle edge server 104 and asingle content server 124 are shown inFIG. 1 , it should be appreciated that any suitable number of edge servers and content servers may be utilized, and computing tasks may be distributed across such respective groups of servers. - In some embodiments,
cache 106 may be populated based on requests from users either using one or more backhaul connections ofnetwork 102 or by way of, e.g., a mobile network connection ofuser equipment device 110 and/or 112 tonetwork 116.System 100 may be configured to select one or more of an access network(s) from a plurality of access networks available to the user equipment included insystem 100 and access networks fromsystem 100 to route particular media data flows (e.g., media assets, segments or partial segments) to the edge server and clients. As referred to herein, the term “media asset” should be understood to refer to an electronically consumable user asset, e.g., television programming, as well as pay-per-view programs, on-demand programs (as in video-on-demand (VOD) systems), Internet content (e.g., streaming content, downloadable content, webcasts, etc.), augmented reality content, virtual reality content, video clips, audio, playlists, websites, articles, electronic books, blogs, social media, applications, games, and/or any other media or multimedia, and/or combination of the above. -
System 100 may includeuser equipment device 110 anduser equipment device 112 and/or any suitable number or types of user equipment devices, which may also be configured to implement the streaming assistance application, and may be capable of communicating withedge server 104 by way offirst network 102.User equipment device 110 anduser equipment device 112 may correspond to any suitable device(s), such as, for example, a mobile device (e.g., smartphone, tablet, smart watch, and/or any other suitable mobile device), Internet of Things (IoT) devices, a biometric device; a desktop computer, laptop computer, virtual reality (VR) device; augmented reality (AR) device, and/or any other suitable device(s). - In some embodiments,
first network 102, includingedge server 104, as well asuser equipment devices physical environment 114.Physical environment 114 may be a particular physical location, such as, for example, a household, a place of business (e.g., a restaurant, a café, a coffee shop, an airport, or any other suitable place of business or any suitable combination thereof, which may offer free Wi-Fi or charge a user to access Wi-Fi or another network); a vehicle (e.g., an automobile or any other suitable vehicle, which may be on the move or stationary) and/or a common carrier (e.g., a train, an airplane, a bus, a boat, or any other suitable common carrier, or any combination thereof); a library; an office; a school; other organization or any other suitable location, or any combination thereof. In some embodiments,first network 102 may be a localized network, e.g., a home network, a business network, an in-vehicle network, a network provided in public transportation or a common carrier, or any other suitable network, or any combination thereof. In some embodiments,first network 102 may be facilitated at least in part by networking equipment on the premises ofphysical environment 114. - In some embodiments,
user equipment device 110 anduser equipment device 112 may be equipped with antennas for transmitting and receiving electromagnetic signals at frequencies within the electromagnetic spectrum, e.g., radio frequencies, to communicate overfirst network 102 withedge server 104.First network 102 may correspond to, e.g., a Wi-Fi network, such as, for example, 802.11n, 802.11ac, 802.11ax, or Wi-Gig/802.11ad, and the devices ofenvironment 114 may communicate wirelessly over a wireless Local Area Network (WLAN) and with the Internet, and may be present within an effective coverage area of the localized network. The Internet may include a global system of interconnected computer networks and devices employing common communication protocols, e.g., the transmission control protocol (TCP), user datagram protocol (UDP) and the internet protocol (IP) in the TCP/IP internet protocol suite. In some embodiments, the devices ofenvironment 114 may additionally or alternatively be configured to communicate via a short-range wired or wireless communication technique (e.g., Bluetooth, RFID, NFC, or any other suitable technique, or any combination thereof). In some embodiments, a backhaul connection fromfirst network 102 to the Internet (and content server 124) may be based at least in part on a mobile or cellular network. - In some embodiments,
first network 102 and/orphysical environment 114 may comprise one or more routers configured to forward data packets from the Internet connection, received by way of a modem, to devices withinfirst network 102 and receive data packets from such devices. In some embodiments, the router may include a built-in modem to provide access to the Internet, built-in switches or hubs to deliver data packets to the appropriate devices withinfirst network 102, built-in access points to enable devices to wirelessly connect tofirst network 102. In some embodiments,system 100 may include one or more stand-alone modems, switches, routers and access points. In some embodiments,first network 102 may comprise additional routers or network equipment positioned at various locations ofphysical environment 114 and in communication with the router to extend a range of the network, e.g., to more remote region ofphysical environment 114. In some embodiments, media assets may be provided touser equipment devices 110 and/or 112 by way of wired and/or wireless signals transmitted throughfirst network 102, and the streaming assistance application may monitor wired and/or wireless signal or network characteristics offirst network 102 and/orsecond network 116. -
System 100 may includesecond network 116, which may correspond to one or more ofpublic networks System 100 may comprise one ormore content servers 124, which may be configured to provide, e.g., overfirst network 102 and/orsecond network 116, a media asset and/or portions thereof touser equipment devices 110 and/or 112 and/oredge server 104. In some embodiments,second network 116 may comprise a public mobile network provided by a mobile network operator (MNO) or MVNOs (mobile virtual network operators), where the MNO may own the network and delivers services to subscribers, and may also sell access to network services to the MVNOs who can deliver the services for their own subscribers. Such MVNOs may not own the network and may pay a fee to the MNO based on tonnage/usage by their subscribers, and a subscriber may connect his or her device tosecond network 116 using an e-sim or sim provided by MNO or MVNO. In some embodiments,user equipment devices first network 102 andsecond network 116. For example, multiple client devices may be connected to a Wi-Fi network (e.g., 802.11n, 802.11ac, 802.11ax) which may correspond tofirst network 102, and may also be connected to a cellular network (e.g., LTE, 5G) or a satellite network or any other suitable network which may correspond tosecond network 116. In some embodiments,system 100 may utilize Multipath TCP (MPTCP) techniques for utilizing multiple access network connections simultaneously. Whilefirst network 102 andsecond network 116 are described in the example ofFIG. 1 , it should be appreciated that any suitable number of networks may be employed insystem 100. - In an illustrative scenario,
physical environment 114 may correspond to a train, on which devices of each of multiple users, such as, for example, users of receptiveuser equipment devices first network 102 andsecond network 116. For example, such users may be passengers on the train at the same time, e.g., commuting to work.First network 102 may be a private network (e.g., Wi-Fi or private 5G or any other suitable network or any combination thereof) offering an edge service for media delivery, e.g., by way of the streaming assistance application which may provide caching capability atcache 106. The users ofuser equipment devices content server 124. The streaming assistance application may monitor connection quality (e.g., throughput, latency, jitter, or any other network characteristic, or any combination thereof) fromphysical environment 114 to the Internet vianetwork 102, which may vary. Such varying network characteristic(s) may result in, for at least some segments of the media asset,edge server 104 being unable to populate high-quality media segments tocache 106 and guarantee a high QoE for the users. In such instance, the streaming assistance application may causeuser equipment device edge server 104 for storage atcache 106. In this way, computing and/or network resources required to obtain certain segments of the media asset may be distributed betweenuser equipment devices 110 and/or 112, andedge server 104, which may result in the devices, network providers and/or service providers consuming less computing and/or network resources. For example, the streaming assistance application may dynamically select, based on current network conditions or device conditions, which of first network 102 (e.g., via edge server 104) or second network 116 (e.g., viaequipment devices 110 and/or 112), or other suitable networks or devices, should be used to obtain a particular segment. In some embodiments, whenfirst network 102 is selected,cache 106 may be populated using a backhaul connection (e.g., satellite, 4G, 5G or LAN or any other suitable network, or any combination thereof) offirst network 102. - In some embodiments, in monitoring network characteristics of
first network 102 and/orsecond network 116, the streaming assistance application may perform any suitable technique. As an example, the streaming assistance application may monitor the quality of the available public or private networks and/or Wi-Fi uplink and downlink capacity using passive and/or active network estimation techniques, e.g., to function similarly as a radio network information service (RNIS) or utilize such a service from another network node. In some embodiments, signal quality indicators (e.g., RSSI) and packet information (e.g., response times) can be monitored and used as part of the selection process with respect to selecting the device and/or network that is to obtain a particular segment of a media asset. Additionally or alternatively, wireless signal characteristics, such as, for example, channel state information (CSI) and/or received channel power indicator (RCPI) of devices and/or networking equipment may be monitored. In some embodiments, the streaming assistance application may use information of available mobile network operator's networks, information of the connected users, and share the network usage by number of users in each MNO's network. The streaming assistance application with caching capability may determine, based on any suitable combination of such network characteristics, which network to utilize in populating the media segment to cache. - In some embodiments, an operating system of
user equipment devices 110 and/or 112 may provide to the streaming assistance application information concerning device characteristics ofuser equipment devices 110 and/or 112 and/or network characteristics offirst network 102 andsecond network 116. For example, the streaming assistance application information may receive one or more indications of a battery level of the user equipment device, a cellular network and/or a strength of cellular network signals being received by the user equipment device, an indication of a Wi-Fi network and/or Wi-Fi signal strength of signals received by the user equipment device, and/or any other suitable data. Such data may be requested by or otherwise transmitted to edgeserver 104 at any suitable interval. In some embodiments, the streaming assistance application may monitor signal strength of received and transmitted signals, resolution of video or other display characteristics of a media asset being generated for display atuser equipment device 110 and/or 112. In some embodiments, the streaming assistance application may monitor one or more quality-of-service characteristics (e.g., available bandwidth, error rate, bit rate, throughput lag, transmission delay, availability, or jitter, or any other suitable network characteristic, or any combination thereof) experienced byuser equipment device 110 and/or 112, and/or any other suitable parameters. For example, any suitable characteristic may be associated with a particular threshold, and the value of the network or device characteristic may be compared to such threshold, which may be taken into account in selecting a device and/or network that is to obtain a particular segment of the media asset. In some embodiments, the streaming assistance application may take into account any of such characteristics in selecting a device and/or network that is to obtain a particular segment of the media asset. -
FIG. 2 is a flowchart of a detailedillustrative process 200 for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.Process 200 may enable implementing a distributed cache update, with respect to the media asset, and/or portions or segments thereof, being consumed and/or requested in a particularphysical environment 114. The streaming assistance application may be installed at or otherwise provided to edgeserver 104,user equipment device 110 having a video player 1 (VP1), anduser equipment device 112 having a video player 2 (VP2). For example,edge server 104 infirst network 102 may be instrumented with the streaming assistance application server software, anduser equipment device 110 anduser equipment device 112 may be instrumented with the streaming assistance application client software. - At 202,
user equipment device 110 may connect tofirst network 102 and initiate playing of a media asset by requesting a manifest file. In some embodiments, such request may be an HTTP request, and may include in a header an indication thatuser equipment device 110 supports the streaming assistance application. - As referred to herein, the term “manifest” should be understood to refer to a file and/or a data structure containing information about sequential segments (comprising sequential frames) of a media asset available to a client device, such as, for example,
user equipment device 110. Such information may include, e.g., a number of segments in a playlist, bit rates of each segment, codecs associated with each segment, resolution of each segment, timing of each segment, location on the network where a segment may be retrieved, bandwidth of each segment, video tracks of each segment, audio tracks of each segment, subtitle tracks of each segment, captions of each segment, languages of each segment, other metadata associated with each segment, and/or any other suitable information. The manifest may be employed in any of a variety of streaming protocols, e.g., media presentation description (MPD) files for Dynamic Adaptive Streaming over HTTP (MPEG-DASH), m3u8 files for HTTP Live Streaming (HLS), f4m files for HTTP Dynamic Streaming (HDS), ingest files for CMAF (Common Media Application Format), and/or manifest files for Microsoft Smooth Streaming (MSS), etc. The manifest may be a standard manifest (e.g., an MPD file from MPEG-DASH) or may be a modified version of a standard manifest. A segment may comprise information (e.g., encoded video, audio, subtitle information, error correction bits, error detection bits, etc.) for a particular interval of a media asset, and each segment may correspond to a file specified in the manifest indicating an associated URL for retrieving the file. The segment may comprise a collection or sequence of frames (e.g., still images that together make up moving pictures of scenes of a portion of a media asset), and each segment may have a specific length (e.g., from one second to a few seconds). In some embodiments, the manifest may be an XML file. In some embodiments, the manifest may include an indication, for a particular segment, of a particular device (e.g.,edge server 104,user equipment device 110, and/or user equipment device 112) and/or network (e.g.,network 102 and/or network 116) by which at least a particular segment of a media asset should be obtained. - At 204,
edge server 104 may request the manifest file fromcontent server 124. At 206,edge server 104 may receive the requested manifest file fromcontent server 124 and forward such manifest file to user equipment device 110 (at 208). In some embodiments, the streaming assistance application ofedge server 104 may add identifying information in a header, e.g., an IP address ofedge server 104 indicating where to send messages associated with the streaming assistance application, when forwarding the manifest touser equipment device 110. In some embodiments,edge server 104 may add a universal resource identifier (URI) ofedge server 104 to the manifest file. - At 210,
user equipment device 110 may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks 116) toedge server 104. Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application. At 212,edge server 104 may acknowledge receipt of such ClientHello message received at 210. In some embodiments, at 212,edge server 104 may store the network information received at 210 and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more availablesecond networks 116 for the purposes of the streaming assistance application. - At 214,
user equipment device 112 may connect tofirst network 102 and initiate playing of a media asset by requesting a manifest file. In some embodiments, such request may be an HTTP request, and may include in a header an indication thatuser equipment device 112 supports the streaming assistance application. In some embodiments, the media asset requested byuser equipment device 112 may be the same media asset that was requested byuser equipment device 110. In some embodiments, each ofuser equipment device - At 216,
edge server 104 may forward the manifest file (obtained at 206 from content server 124) touser equipment device 112. In some embodiments, the streaming assistance application ofedge server 104 may add identifying information in a header, e.g., an IP address ofedge server 104 indicating where to send messages associated with the streaming assistance application, when forwarding the manifest touser equipment device 112. In some embodiments,edge server 104 may add a universal resource identifier (URI) ofedge server 104 to the manifest file. - At 218,
user equipment device 112 may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks 116) toedge server 104. Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application. At 220,edge server 104 may acknowledge receipt of such ClientHello message received at 218. In some embodiments, at 220,edge server 104 may store the network information received at 218 and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more availablesecond networks 116 for the purposes of the streaming assistance application. - At 222,
user equipment device 110 may, based on the received manifest file, request a particular segment (e.g., segment-1) of the media asset fromedge server 104 infirst network 102. In some embodiments, any suitable adaptive streaming technique may be employed for requesting and providing the media segments. For example, the adaptive streaming technique may be DASH, and SANE 108 may be a DANE (DASH-aware Network Element). - At 224, the streaming assistance application, running at least in part at
edge server 104, may decide how the requested segment or portion of the media asset is to be retrieved. For example, at 224, the streaming assistance application may perform process 300 shown inFIG. 3 . -
FIG. 3 is a flowchart of a detailed illustrative process 300 for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. At 302, the streaming assistance application may determine that a request, from a user equipment device (e.g., user equipment device 110), to access at least a portion of a media asset has been received. At 304, which may correspond to the determination at 224, the streaming assistance application may determine how the requested segment or portion of the media asset is to be retrieved. For example, at 306, the streaming assistance application may determine whether the requested segment is already stored atcache 106. If such requested segment is already stored atcache 106, processing may proceed to 308, andedge server 104 may provide the segment stored atcache 106 to the requesting user equipment device overfirst network 102. On the other hand, if the streaming assistance application determines at 306 that the requested segment is not stored incache 106, processing may proceed to 310. - At 310, the streaming assistance application may perform processing to select an optimal network for obtaining the requested portion of the media asset, to facilitate efficient usage of computing resources and high-quality media streaming. The streaming assistance application may determine network availability (at 312), quality of service (QoS) metrics at 314, bandwidth estimate techniques may be employed, or any other suitable network characteristic or network status information or other tools may be employed, or any combination thereof. In some embodiments, such information may be stored at
network information database 316 and/or atedge server 104 and/or atcontent server 124. In some embodiments,network information database 316 may be located atphysical environment 114, withinedge server 104 or remote fromedge server 104 and in communication withedge server 104 over a network. In some embodiments, the streaming assistance application may determine such information by the monitoring network traffic and/or receiving information indicating current or projected network characteristics. In some embodiments, the streaming assistance application may estimate a transmission quality in each ofnetworks 102 and 116 (and/orpublic networks - Based on the aforementioned information, the streaming assistance application may, at 318, determine to fetch the segment from
content server 124 via PN2 120 (e.g., by way ofedge server 104 of first network 116). Alternatively, the streaming assistance application may requestuser equipment device 110 to fetch the segment from content server viaPN1 118, and may request thatuser equipment device 110 upload such retrieved segment tocache 106 by way offirst network 102. Alternatively, the streaming assistance application may requestuser equipment device 112 to fetch the segment from content server viaPN3 122, and may request thatuser equipment device 112 upload such retrieved segment tocache 106 by way offirst network 102. In some embodiments, the streaming assistance application (e.g., at least a portion of which may be executing at SANE 108 at edge server 104) may determine to split the segment request among multiple user equipment devices. For example, the streaming assistance application may request segment header information fromcontent server 124, and upon determining thatcontent server 124 supports range requests, the streaming assistance application can request that different byte ranges of the segment be retrieved by the multiple user equipment devices. In some embodiments, the streaming assistance application may request a particular bitrate and/or resolution for a particular segment, which may be specified in the manifest file, based on the monitored network characteristics. - In some embodiments, a particular network may be selected to obtain the segment if network availability indicates the network is available and QoS metrics and/or connection quality of one or more of
PN1 118,PN2 120,PN3 122 and/or one or more of second network(s) 116, indicate delivery of such segment would be enabled. For example, SANE may estimate a transmission quality in each network based on a video segment received through one or more of second network(s) 116. The streaming assistance application may leverage the capacity of each of the networks described insystem 100 ofFIG. 1 , and/or any other suitable networks available tosystem 100, to obtain the best possible quality segments in an efficient manner. In some embodiments, the streaming assistance application may measure network throughput, or any other suitable network characteristic, and feedback such information to updatenetwork information database 316 with current network information. - In the example of
FIG. 2 , the streaming assistance application may determine, based on the determination made at 224, to obtain the requested segment from content server 124 (at 226) usingedge server 104 by way ofPN2 120, e.g., a backhaul connection offirst network 102.Edge server 104 may store such segment (obtained at 228 from content server 124) incache 106 and provide the obtained segment to user equipment device 110 (at 230), to enable and causeuser equipment device 110 to generate for display such portion of the media asset. - At 232,
edge server 104 may receive a request, e.g., viafirst network 102, fromuser equipment device 112 for the same segment of the media asset requested byuser equipment device 110 at 222. Since such segment was previously stored incache 106, the streaming assistance application may provide the segment fromcache 106 to user equipment device 112 (at 234, to enable and causeuser equipment device 112 to generate for display such portion of the media asset. - At 236,
edge server 104 may receive a request, e.g., viafirst network 102, fromuser equipment device 110, for another segment, e.g., the next sequential segment (segment-2) of the media asset, after segment-1 having been requested at 222.Edge server 104 may additionally receive, at 238, a request for such segment-2 fromuser equipment device 112. - The streaming assistance application may perform a determination at 240, similar to the determination described at 224 and in
FIG. 3 , and as a result of such determination may decide to obtain the requested segment-2 usingsecond network 116 anduser equipment device 110. For example, the streaming assistance application may identify the combination of usinguser equipment device 110 andsecond network 116 as the optimal manner for obtaining segment-2, as compared to utilizingedge server 104,user equipment device 112 or any other suitable user equipment device, and a particular accompanying network. Specifically, the streaming assistance application may determine to utilizeuser equipment device 110'sPN1 118 connection (e.g., a cellular network), and may instructuser equipment device 110 to obtain such segment by way of an HTTP response (at 242). Such HTTP response may comprise a header in which the streaming assistance application instructsuser equipment device 110 to obtain segment-2 viaPN1 118 and POST the obtained segment-2 to edgeserver 104, e.g., transmit the obtained segment-2 by way offirst network 102 for storage atcache 106. In some embodiments, as part of the determination at 240, only user equipment devices present inphysical environment 114 and requesting portions of the particular media asset associated with segment-2 may be considered as candidates for retrieving the segment. In some embodiments, any user equipment device present inphysical environment 114 and requesting any content may be considered as a candidate for retrieving the segment. In some embodiments, any user equipment device present inphysical environment 114 and having the streaming assistance application installed or otherwise executing thereon may be considered as a candidate for retrieving the segment. In some embodiments, users of such user equipment devices may be incentivized to lend their mobile device's bandwidth and resources for the purposes of obtaining segments by being offered access to bonus content, or accumulating points or currency for a profile with the streaming assistance application. - At 244,
user equipment device 110 may request segment-2 by way ofsecond network 116, specificallyPN1 118, and, at 246,user equipment device 110 may obtain such segment-2 by way ofsecond network 116, specificallyPN1 118, to enable and causeuser equipment device 110 to generate for display such portion of the media asset. In some embodiments,user equipment device 110 may store such segment to buffer memory ofuser equipment device 110, and transmit such segment-2 tocache 106 of edge server 104 (at 248). In some embodiments,user equipment device 110 may transmit such segment-2 tocache 106 ofedge server 104 by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof. At 250,edge server 104 may deliver segment-2 fromcache 106 touser equipment device 112, to enable and causeuser equipment device 112 to generate for display such portion of the media asset. - At 252, the streaming assistance application may receive from
user equipment device 110, atedge server 104, a request for another segment of the media asset, e.g., a next sequential segment-3, after the prior segment-2 within a duration of the media asset.Edge server 104 may additionally receive, at 254, a request for such segment-3 fromuser equipment device 112. - At 256, the streaming assistance application may perform a determination, similar to the determinations described at 240 and 224 and in
FIG. 3 , and as a result of such determination may decide to obtain the requested segment-3 usingsecond network 116 anduser equipment device 112. For example, the streaming assistance application may identify the combination of usinguser equipment device 112 andsecond network 116 as the optimal manner for obtaining segment-3, as compared to utilizingedge server 104,user equipment device 110 or any other suitable user equipment device, and a particular accompanying network. Specifically, the streaming assistance application may determine to utilizeuser equipment device 112'sPN3 122 connection (e.g., a cellular network), and may instructuser equipment device 112 to obtain such segment-3 by way of an HTTP response (at 256). Such HTTP response may comprise a header in which the streaming assistance application instructsuser equipment device 110 to obtain segment-3 viaPN1 118 and POST the obtained segment-3 to edgeserver 104, e.g., transmit the obtained segment-3 by way offirst network 102 for storage atcache 106. - At 258,
user equipment device 112 may request segment-3 by way ofsecond network 116, specificallyPN3 122, and, at 260,user equipment device 112 may obtain such segment-3 by way ofsecond network 116, specificallyPN3 122, to enable and causeuser equipment device 112 to generate for display such portion of the media asset. In some embodiments,user equipment device 112 may store such segment to buffer memory ofuser equipment device 112, and transmit such segment-3 tocache 106 of edge server 104 (at 262). In some embodiments,user equipment device 112 may transmit such segment-3 tocache 106 ofedge server 104 by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof. At 264,edge server 104 may deliver segment-3 fromcache 106 touser equipment device 110, to enable and causeuser equipment device 110 to generate for display such portion of the media asset. - In some embodiments, segment(s) can be downloaded or otherwise obtained in parallel if such segment(s) are available in
content server 124. In some embodiments, if a user equipment device is determined not to have support for the streaming assistance application at a current point in time, orsecond network 116 is unavailable, segments can be downloaded or otherwise obtained fromcache 106 ofedge server 104. In some embodiments, the downloading or otherwise obtaining of a particular segment may be distributed among multiple networks (e.g., 118, 120, 122, via one or more user equipment devices), e.g., using range requests. -
FIG. 4 is an illustrative block diagram 400 indicating how portions of a media asset may be obtained via multiple networks, in accordance with some embodiments of this disclosure.Content server 124 may be capable of communicating withedge server 104,user equipment device 110,user equipment device 112, anduser equipment device 402 by way ofsecond network 116.Second network 116 may comprise public network 1 (PN1) 118,PN2 120,PN3 122 and/orPN 404, and/or any other suitable network.Second network 116 may be, for example, a cellular network, a satellite network or any other suitable network or any combination thereof, and/or a backhaul network forfirst network 102.First network 102 may be a private network comprisingedge server 104,user equipment devices physical environment 114. - In the example shown in
FIG. 4 , segments may be streamed by way of three network links, although it should be appreciated that any other suitable number of network links may be employed. In the example ofFIG. 4 ,PN4 404 may not be used due to the streaming assistance application determining, based on monitored network characteristics, that performance ofPN4 404 is insufficient to deliver a quality media session to users, or thatPN4 404 does not support the streaming assistance application.Edge server 104 may determine to retrievesegment 1 andsegment 4 by way ofPN2 120 ofsecond network 116, anduser equipment devices edge server 104 viafirst network 102. The streaming assistance application may instructuser equipment device 110 to obtainsegment 2 viaPN1 118 ofsecond network 116, and upload or transmitsuch segment 2 to edgeserver 104 viafirst network 102. The streaming assistance application may causeuser equipment devices segment 2, having been provided toedge server 104 byuser equipment device 110 viaPN1 118 ofsecond network 116, fromcache 106 ofedge server 104. The streaming assistance application may causeuser equipment device 112 to stream or otherwise obtainsegment 3 viaPN3 122 ofsecond network 116, and may causeuser equipment device 112 to upload or transmit the obtainedsegment 3 to edgeserver 104 viafirst network 102, for storage atcache 106. The streaming assistance application may causeuser equipment devices segment 3 by way offirst network 102 fromedge server 104, to enable such devices to generate fordisplay segment 3. The above-described determinations, with respect to selecting which devices and networks should be used to obtain particular segments of the media asset, may be performed in the manner as described above and below, e.g., based on monitored network characteristics and any other suitable network information. - In some embodiments, the streaming assistance application may employ predictive caching techniques. For example, the streaming assistance application may cause an obtained media asset (or portions thereof) to be stored to
cache 106 based at least in part on determining such media asset (or portions thereof) is being requested by and/or provided to multiple user equipment devices inphysical environment 114. In some embodiments, the media asset or portions thereof may be cached upon the streaming assistance application determining that such media asset or portions thereof are likely to be requested, e.g., are popular or trending in a location corresponding tophysical environment 114. In some embodiments, such determination to store the media asset or portions thereof incache 106 may include determining the media asset or portions thereof are likely to be requested within a threshold period of time (e.g., five hours, one day or any other suitable time period). As another example, the streaming assistance application may cause an obtained media asset (or portions thereof) to be stored tocache 106 based at least in part on determining such media asset (or portions thereof) is likely to be subject to a trick-play request while being provided inphysical environment 114. For example, the streaming assistance application may determine that certain types of content, such as, for example, live broadcasts of media assets, e.g., sports or news, are likely to be rewound, paused, skipped or fast-forwarded, and thus may instructedge server 104 to cache one or more portions of such media asset. As another example, a particular portion of a media asset, e.g., a goal in a soccer game, may be determined by the streaming assistance application as likely to be re-watched by users, and thus should be cached to enable later retrieval in the event of a trick-play operation. In some embodiments, certain content may be preemptively cached byedge server 104, e.g., trending videos from any suitable source, in anticipation of multiple requests to view such content, or certain content may be cached based on having recently received multiple requests for such content. In some embodiments, content may be purged fromcache 106 after a certain period of time after being stored at the cache, or after a certain period of time since a last request for such media asset or portion thereof was received, and/or any suitable caching strategy may be employed. In some embodiments, server and network assisted DASH (SAND) techniques may be employed, which may provide messaging functionalities for improving the streaming performance and caching between the DASH clients as well as bringing more intelligence to the edge caches. For example,edge server 104 can prefetch segments that are most likely to be served later to clients. -
FIGS. 5-6 describe illustrative devices, systems, servers, and related hardware for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure.FIG. 5 shows generalized embodiments of illustrativeuser equipment devices user equipment devices FIGS. 1, 2 and 4 , and/or other suitable device. For example,user equipment device 500 may be a smartphone device, a tablet or any other suitable device capable of requesting and obtaining portions of a media asset over a network, communicating withcontent server 124 andedge server 104, or otherwise interfacing with the streaming assistance application described herein. In another example,user equipment device 501 may be a user television equipment system or device.User equipment device 501 may include set-top box 515. Set-top box 515 may be communicatively connected tomicrophone 516, audio output equipment (e.g., speaker or headphones 514), anddisplay 512. In some embodiments,microphone 516 may receive audio corresponding to a voice of a user, e.g., a voice input or a voice command. In some embodiments,display 512 may be a television display or a computer display. In some embodiments, set-top box 515 may be communicatively connected touser input interface 510. In some embodiments,user input interface 510 may be a remote control device. Set-top box 515 may include one or more circuit boards. In some embodiments, the circuit boards may include control circuitry, processing circuitry, and storage (e.g., RAM, ROM, hard disk, removable disk, etc.). In some embodiments, the circuit boards may include an input/output path. More specific implementations of devices are discussed below in connection withFIG. 6 . In some embodiments,device 500 may comprise any suitable number of sensors (e.g., gyroscope or gyrometer, or accelerometer, etc.), as well as a GPS module (e.g., in communication with one or more servers and/or cell towers and/or satellites) or any other suitable localization technique, to ascertain a location ofuser equipment device 500. In some embodiments,user equipment device 500 comprises a rechargeable battery that is configured to provide power to the components of the device. - Each one of
user equipment device 500 anduser equipment device 501 may receive content and data via input/output (I/O)path 502. I/O path 502 may provide content (e.g., broadcast programming, on-demand programming, Internet content, content available over a local area network (LAN) or wide area network (WAN), and/or other content) and data to controlcircuitry 504, which may comprise processingcircuitry 506 andstorage 508.Control circuitry 504 may be used to send and receive commands, requests, and other suitable data using I/O path 502, which may comprise I/O circuitry. I/O path 502 may connect control circuitry 504 (and specifically processing circuitry 506) to one or more communications paths (described below). I/O functions may be provided by one or more of these communications paths, but are shown as a single path inFIG. 5 to avoid overcomplicating the drawing. While set-top box 515 is shown inFIG. 5 for illustration, any suitable computing device having processing circuitry, control circuitry, and storage may be used in accordance with the present disclosure. For example, set-top box 515 may be replaced by, or complemented by, a personal computer (e.g., a notebook, a laptop, a desktop), a smartphone (e.g., user equipment device 500), a tablet, a network-based server hosting a user-accessible client device, a non-user-owned device, any other suitable device, or any combination thereof. -
Control circuitry 504 may be based on any suitable control circuitry such asprocessing circuitry 506. As referred to herein, control circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputer. In some embodiments, control circuitry may be distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). In some embodiments,control circuitry 504 executes instructions for the streaming assistance application stored in memory (e.g., storage 508). Specifically,control circuitry 504 may be instructed by the streaming assistance application to perform the functions discussed above and below. In some implementations, processing or actions performed bycontrol circuitry 504 may be based on instructions received from the streaming assistance application. - In client/server-based embodiments,
control circuitry 504 may include communications circuitry suitable for communicating with a server or other networks or servers. The streaming assistance application may be a stand-alone application implemented on a device or a server. The streaming assistance application may be implemented as software or a set of executable instructions. The instructions for performing any of the embodiments discussed herein of the streaming assistance application may be encoded on non-transitory computer-readable media (e.g., a hard drive, random-access memory on a DRAM integrated circuit, read-only memory on a BLU-RAY disk, etc.). For example, inFIG. 5 , the instructions may be stored instorage 508, and executed bycontrol circuitry 504 of auser equipment device 500. - In some embodiments, the streaming assistance application may be a client/server application where only the client application resides on
user equipment device 500, and a server application resides on an external server (e.g.,server 604 ofFIG. 6 and/ormedia content source 602 ofFIG. 6 and/oredge server 616 ofFIG. 6 ). In some embodiments,edge server 616 may correspond to edgeserver 104 ofFIG. 1 , andcontent server 124 ofFIG. 1 may correspond tomedia content source 602 and/orserver 604. In some embodiments,database 605 may be a network database storing status information and network characteristic information for various networks (e.g.,first network 102 and second network 116). For example, the streaming assistance application may be implemented partially as a client application oncontrol circuitry 504 ofuser equipment device 500 and partially an external server (e.g.,server 604 ofFIG. 6 and/ormedia content source 602 ofFIG. 6 and/oredge server 616 ofFIG. 6 ) as a server application running oncontrol circuitry 611. Such external server may be a part of a local area network with one or more ofuser equipment devices server 604 ofFIG. 6 and/ormedia content source 602 ofFIG. 6 and/oredge server 616 ofFIG. 6 ), referred to as “the cloud.”User equipment device 500 may be a cloud client that relies on the cloud computing capabilities from the cloud to determine whether processing should be offloaded and facilitate such offloading. When executed bycontrol circuitry control circuitry control circuitry 504 to perform processing tasks for selecting a particular device and/or network to obtain a particular media asset or segment thereof. -
Control circuitry 504 may include communications circuitry suitable for communicating with a server, social network service, a table or database server, or other networks or servers The instructions for carrying out the above mentioned functionality may be stored on a server (which is described in more detail in connection withFIG. 6 ). Communications circuitry may include a cable modem, an integrated services digital network (ISDN) modem, a digital subscriber line (DSL) modem, a telephone modem, Ethernet card, or a wireless modem for communications with other equipment, or any other suitable communications circuitry. Such communications may involve the Internet or any other suitable communication networks or paths (which is described in more detail in connection withFIG. 6 ). In addition, communications circuitry may include circuitry that enables peer-to-peer communication of devices, or communication of devices in locations remote from each other (described in more detail below). - Memory may be an electronic storage device provided as
storage 508 that is part ofcontrol circuitry 504. As referred to herein, the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random-access memory, read-only memory, hard drives, optical drives, digital video disc (DVD) recorders, compact disc (CD) recorders, BLU-RAY disc (BD) recorders, BLU-RAY 3D disc recorders, digital video recorders (DVR, sometimes called a personal video recorder, or PVR), solid state devices, quantum storage devices, gaming consoles, gaming media, or any other suitable fixed or removable storage devices, and/or any combination of the same.Storage 508 may be used to store various types of content described herein as well as streaming assistance application data described above. Nonvolatile memory may also be used (e.g., to launch a boot-up routine and other instructions). Cloud-based storage may be used to supplementstorage 508 or instead ofstorage 508. -
Control circuitry 504 may include video generating circuitry and tuning circuitry, such as one or more analog tuners, one or more MPEG-2 decoders or other digital decoding circuitry, high-definition tuners, or any other suitable tuning or video circuits or combinations of such circuits. Encoding circuitry (e.g., for converting over-the-air, analog, or digital signals to MPEG signals for storage) may also be provided.Control circuitry 504 may also include scaler circuitry for upconverting and downconverting content into the preferred output format ofuser equipment device 500.Control circuitry 504 may also include digital-to-analog converter circuitry and analog-to-digital converter circuitry for converting between digital and analog signals. The tuning and encoding circuitry may be used byuser equipment device storage 508 is provided as a separate device fromuser equipment device 500, the tuning and encoding circuitry (including multiple tuners) may be associated withstorage 508. -
Control circuitry 504 may receive instruction from a user by way ofuser input interface 510.User input interface 510 may be any suitable user interface, such as a remote control, mouse, trackball, keypad, keyboard, touch screen, touchpad, stylus input, joystick, voice recognition interface, or other user input interfaces.Display 512 may be provided as a stand-alone device or integrated with other elements of each one ofuser equipment device 500 anduser equipment device 501. For example,display 512 may be a touchscreen or touch-sensitive display. In such circumstances,user input interface 510 may be integrated with or combined withdisplay 512. In some embodiments,user input interface 510 includes a remote-control device having one or more microphones, buttons, keypads, any other components configured to receive user input or combinations thereof. For example,user input interface 510 may include a handheld remote-control device having an alphanumeric keypad and option buttons. In a further example,user input interface 510 may include a handheld remote-control device having a microphone and control circuitry configured to receive and identify voice commands and transmit information to set-top box 515. -
Audio output equipment 514 may be integrated with or combined withdisplay 512.Display 512 may be one or more of a monitor, a television, a liquid crystal display (LCD) for a mobile device, amorphous silicon display, low-temperature polysilicon display, electronic ink display, electrophoretic display, active matrix display, electro-wetting display, electro-fluidic display, cathode ray tube display, light-emitting diode display, electroluminescent display, plasma display panel, high-performance addressing display, thin-film transistor display, organic light-emitting diode display, surface-conduction electron-emitter display (SED), laser television, carbon nanotubes, quantum dot display, interferometric modulator display, or any other suitable equipment for displaying visual images. A video card or graphics card may generate the output to thedisplay 512.Audio output equipment 514 may be provided as integrated with other elements of each one ofuser equipment device 500 anduser equipment device 501 or may be stand-alone units. An audio component of videos and other content displayed ondisplay 512 may be played through speakers (or headphones) ofaudio output equipment 514. In some embodiments, audio may be distributed to a receiver (not shown), which processes and outputs the audio via speakers ofaudio output equipment 514. In some embodiments, for example,control circuitry 504 is configured to provide audio cues to a user, or other audio feedback to a user, using speakers ofaudio output equipment 514. There may be aseparate microphone 516 oraudio output equipment 514 may include a microphone configured to receive audio input such as voice commands or speech. For example, a user may speak letters, terms, phrases, alphanumeric characters, words, etc. that are received by the microphone and converted to text bycontrol circuitry 504. In a further example, a user may voice commands that are received by a microphone and recognized bycontrol circuitry 504. Camera 518 may be any suitable camera integrated with the equipment or externally connected and capable of capturing still and moving images. In some embodiments, camera 518 may be a digital camera comprising a charge-coupled device (CCD) and/or a complementary metal-oxide semiconductor (CMOS) image sensor. In some embodiments, camera 518 may be an analog camera that converts to digital images via a video card. - The streaming assistance application may be implemented using any suitable architecture. For example, it may be a stand-alone application wholly-implemented on each one of
device 500 anddevice 501. In such an approach, instructions of the application may be stored locally (e.g., in storage 508), and data for use by the application is downloaded on a periodic basis (e.g., from an out-of-band feed, from an Internet resource, or using another suitable approach).Control circuitry 504 may retrieve instructions of the application fromstorage 508 and process the instructions to provide the functionality of the streaming assistance application discussed herein. Based on the processed instructions,control circuitry 504 may determine what action to perform when input is received fromuser input interface 510. For example, movement of a cursor on a display up/down may be indicated by the processed instructions whenuser input interface 510 indicates that an up/down button was selected. An application and/or any instructions for performing any of the embodiments discussed herein may be encoded on computer-readable media. Computer-readable media includes any media capable of storing data. The computer-readable media may be non-transitory including, but not limited to, volatile and non-volatile computer memory or storage devices such as a hard disk, floppy disk, USB drive, DVD, CD, media card, register memory, processor cache, Random Access Memory (RAM), etc. -
Control circuitry 504 may allow a user to provide user profile information or may automatically compile user profile information. For example,control circuitry 504 may access and monitor network data, video data, audio data, processing data, participation data from a streaming assistance application and social network profile.Control circuitry 504 may obtain all or part of other user profiles that are related to a particular user (e.g., via social media networks), and/or obtain information about the user from other sources that controlcircuitry 504 may access. As a result, a user can be provided with a unified experience across the user's different devices. - In some embodiments, the streaming assistance application is a client/server-based application. Data for use by a thick or thin client implemented on each one of
user equipment device 500 anduser equipment device 501 may be retrieved on-demand by issuing requests to a server remote to each one ofuser equipment device 500 anduser equipment device 501. For example, the remote server may store the instructions for the application in a storage device. The remote server may process the stored instructions using circuitry (e.g., control circuitry 504) and generate the displays discussed above and below. The client device may receive the displays generated by the remote server and may display the content of the displays locally onuser equipment device 500. This way, the processing of the instructions is performed remotely by the server while the resulting displays (e.g., that may include text, a keyboard, or other visuals) are provided locally onuser equipment device 500.User equipment device 500 may receive inputs from the user viainput interface 510 and transmit those inputs to the remote server for processing and generating the corresponding displays. For example,user equipment device 500 may transmit a communication to the remote server indicating that an up/down button was selected viainput interface 510. The remote server may process instructions in accordance with that input and generate a display of the application corresponding to the input (e.g., a display that moves a cursor up/down). The generated display may then be transmitted touser equipment device 500 for presentation to the user. - In some embodiments, the streaming assistance application may be downloaded and interpreted or otherwise run by an interpreter or virtual machine (run by control circuitry 504). In some embodiments, the streaming assistance application may be encoded in the ETV Binary Interchange Format (EBIF), received by
control circuitry 504 as part of a suitable feed, and interpreted by a user agent running oncontrol circuitry 504. For example, the streaming assistance application may be an EBIF application. In some embodiments, the streaming assistance application may be defined by a series of JAVA-based files that are received and run by a local virtual machine or other suitable middleware executed bycontrol circuitry 504. In some of such embodiments (e.g., those employing MPEG-2 or other digital media encoding schemes), the streaming assistance application may be, for example, encoded and transmitted in an MPEG-2 object carousel with the MPEG audio and video packets of a program. -
FIG. 6 is a diagram of anillustrative system 600, in accordance with some embodiments of this disclosure.System 600 may comprise one or more ofuser equipment devices media content source 602,server 604,database 605,edge server 616, and/or any other suitable computing devices, or any combination thereof, which may be coupled to one or more networks, e.g.,communication network 609. In some embodiments, communication network may comprisefirst network 102 ofFIG. 1 andsecond network 116 ofFIG. 2 . At least a portion of such devices ofFIG. 6 may be present in a particular environment, such as, for example,physical environment 114 ofFIG. 1 . In some embodiments, at least a portion of such devices may correspond touser equipment device 500 oruser equipment device 501 ofFIG. 5 , or may include any suitable portion of the same or similar components as described in connection withFIG. 5 . Communication network 606 may be one or more networks including the Internet, a mobile phone network, mobile voice or data network (e.g., a 5G, 4G, or LTE network, or any other suitable network or any combination thereof), cable network, public switched telephone network, or other types of communication network or combinations of communication networks. Paths (e.g., depicted as arrows connecting the respective devices to the communication network 606) may separately or together include one or more communications paths, such as a satellite path, a fiber-optic path, a cable path, a path that supports Internet communications (e.g., IPTV), free-space connections (e.g., for broadcast or other wireless signals), or any other suitable wired or wireless communications path or combination of such paths. Communications with the client devices may be provided by one or more of these communications paths but are shown as a single path inFIG. 6 to avoid overcomplicating the drawing. - Although communications paths are not drawn between devices, these devices may communicate directly with each other via communications paths as well as other short-range, point-to-point communications paths, such as USB cables, IEEE 1394 cables, wireless paths (e.g., Bluetooth, infrared, IEEE 702-11x, etc.), or other short-range communication via wired or wireless paths. The devices may also communicate with each other directly through an indirect path via communication network 606.
-
System 600 may comprise one or moremedia content sources 602 and one ormore servers 604. In some embodiments,content server 124 may correspond to one or more ofmedia content source 602 orserver 604. Communications withmedia content source 602 andserver 604 may be exchanged over one or more communications paths but are shown as a single path inFIG. 6 to avoid overcomplicating the drawing. In addition, there may be more than one of each ofmedia content source 602 andserver 604, but only one of each is shown inFIG. 6 to avoid overcomplicating the drawing. If desired,media content source 602 andserver 604 may be integrated as one source device. In some embodiments, the streaming assistance application may be executed at one or more ofcontrol circuitry 611 of server 604 (and/or control circuitry ofuser equipment devices control circuitry 618 ofedge server 616, or any other suitable devices, or any combination thereof). In some embodiments, any suitable data structure or any combination thereof, may be stored atdatabase 605 maintained at or otherwise associated withserver 604, and/or at storage of one or more ofuser equipment devices edge server 616, at least one of which may be configured to host or be in communication withdatabase 605.User equipment device 610 may be a smart television,user equipment device 607 may be user computer equipment, anduser equipment device 608 may be a wireless user communication device, each of which may be configured to include some or all of the features of the streaming assistance application described herein. In some embodiments, the streaming assistance application may be tailored to the capabilities of the particular device. In some embodiments, the streaming assistance application may facilitate the retrieval and presentation of media assets, and/or may operate in conjunction with a media application (e.g., associated with content server 124) which may present media assets to a user. - In some embodiments,
server 604 may includecontrol circuitry 611 and storage 614 (e.g., RAM, ROM, Hard Disk, Removable Disk, etc.).Storage 614 may store one or more databases.Server 604 may also include an input/output path 612. I/O path 612 may provide media consumption data, social networking data, device information, or other data, over a local area network (LAN) or wide area network (WAN), and/or other content and data to controlcircuitry 611, which may include processing circuitry, andstorage 614.Control circuitry 611 may be used to send and receive commands, requests, and other suitable data using I/O path 612, which may comprise I/O circuitry. I/O path 612 may connect control circuitry 611 (and specifically control circuitry) to one or more communications paths. I/O path 612 may comprise I/O circuitry. -
Control circuitry 611 may be based on any suitable control circuitry such as one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multi-core processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or supercomputer. In some embodiments,control circuitry 611 may be distributed across multiple separate processors or processing units, for example, multiple of the same type of processing units (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). In some embodiments,control circuitry 611 executes instructions for a streaming assistance application stored in memory (e.g., the storage 614). Memory may be an electronic storage device provided asstorage 614 that is part ofcontrol circuitry 611. -
User equipment device 610 may be a smart television,user equipment device 607 may be user computer equipment, anduser equipment device 608 may be a wireless user communication device, each of which may be configured to include some or all of the features of the streaming assistance application described herein. The streaming assistance application may be tailored to the capabilities of the particular device. -
Edge server 616 may comprisecontrol circuitry 618, I/O path 620 andstorage 622, which may be implemented in a similar manner ascontrol circuitry 611, I/O path 612 and storage 624, respectively ofserver 604.Edge server 616 may correspond to edgeserver 104 ofFIG. 1 .Edge server 616 may be configured to be in communication with one or more ofuser equipment devices server 604 andmedia content source 602 overcommunication network 609, and may be configured to perform processing tasks in connection with the streaming assistance application In some embodiments, a plurality ofedge servers 616 may be strategically located at various geographic locations. In some embodiments, one or more of the edge servers may be mobile edge servers configured to provide processing support for mobile devices at various geographical regions. -
FIG. 7 is a flowchart of a detailed illustrative process for selecting a device and/or network by which to obtain at least a portion of a media asset, in accordance with some embodiments of this disclosure. In various embodiments, the individual steps ofprocess 700 may be implemented by one or more components of the devices and systems ofFIGS. 1-6 . Although the present disclosure may describe certain steps of process 700 (and of other processes described herein) as being implemented by certain components of the devices and systems ofFIGS. 1-6 , this is for purposes of illustration only, and it should be understood that other components of the devices and systems ofFIGS. 1-6 may implement those steps instead. - At 702, control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may identify a first network (e.g.,first network 102 ofFIG. 1 ) and a second network (e.g.,second network 116 ofFIG. 1 ) available to one or more user equipment devices (e.g.,user equipment device 110 ofFIG. 1 ). In some embodiments, the control circuitry may determine that such user equipment device is present withinphysical environment 114, whichedge server 104 may also be located in, based on any suitable technique, e.g., based on determining that the user equipment device is connected to the first network, location-based techniques, and/or any other suitable technique. In some embodiments,first network 102 may be a localized network, e.g., a home network, a business network, an in-vehicle network, a network provided in public transportation or a common carrier, or any other suitable network, or any combination thereof. In some embodiments,first network 102 may be facilitated at least in part by networking equipment on the premises ofphysical environment 114. In some embodiments, the control circuitry may determine or receive information from, e.g., networking equipment, a remote server, and/or devices withinphysical environment 114, indicating a list of multiple user equipment devices connected to the first network and that support the streaming assistance application. In some embodiments, the control circuitry may determine content currently requested, or likely to be requested, by the user equipment devices included on such list of user equipment devices that are connected to the first network and that support the streaming assistance application. - In some embodiments, the first network (e.g.,
first network 102 ofFIG. 1 ) may correspond to, e.g., a Wi-Fi network, and the devices ofenvironment 114 may communicate wirelessly over a WLAN, and/or thefirst network 102 may correspond to a private cellular network, or any other suitable network, or any combination thereof. In some embodiments, a second network (e.g.,second network 116 ofFIG. 1 ) may correspond to a cellular network, a satellite network or any other suitable network or any combination thereof, and may include a network (e.g., provided by an MNO) usable by a user equipment device to connect tocontent server 124. In some embodiments, certain portions of the second network may function as a backhaul connection tocontent server 124 foredge server 104 within the first network. - At 704, control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may receive, from a user equipment device or devices (e.g.,user equipment device 110 ofFIG. 1 ), a request to access at least a portion of a media asset. The media asset may be, for example, a live broadcast, VOD content or any other suitable content or any combination thereof. In some embodiments, the request may be received by the control circuitry in response to providing a manifest file, usable to play the media asset, to the user equipment device. In some embodiments, 704 may include determining that user equipment devices within the same particular physical environment may be requesting the same media asset and/or the same portions thereof. - At 706, control circuitry may determine whether the cache (e.g.,
cache 106 ofFIG. 1 ) currently stores a media asset, or portion thereof, that matches the at least a portion of a media asset requested at 704. For example, the control circuitry may compare titles and/or metadata of the media asset associated with the received request and/or timestamps of the media asset associated with the received request to data stored in the cache. If the control circuitry determines that the cache stores such content, processing may proceed to 708; otherwise processing may proceed to 710. - At 708, the control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may retrieve from the cache (e.g.,cache 106 ofedge server 104 ofFIG. 1 ), and provide to the user equipment device (e.g., user equipment device 110), the at least a portion of the media asset determined to be stored in the cache. For example, the control circuitry may transmit the portion of the media asset retrieved from the cache to user equipment device 110 (e.g., by way of the first network), to cause and enableuser equipment device 110 to generate for display the at least a portion of the media asset. - At 710, the control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may determine network and/or device characteristics associated with devices included in the particular physical environment (e.g.,environment 114 ofFIG. 1 ). For example, the control circuitry may monitor network characteristics offirst network 102 and/or second network 116 (which may include monitoring network characteristics ofnetworks user equipment devices 110 and/or 112, and/or any other suitable parameters. In some embodiments, the control circuitry may monitor network availability, perform bandwidth estimate techniques, and/or any other suitable network characteristic or network status information or other tools may be employed, or any combination thereof. - As another example, the control circuitry may monitor the quality of the available public or private networks and/or Wi-Fi uplink and downlink capacity using passive and/or active network estimation techniques, e.g., to function similarly as an RNIS or utilize such a service from another network node. In some embodiments, signal quality indicators (e.g., RSSI) and packet information (e.g., response times) can be monitored and used as part of the selection process with respect to selecting the device and/or network that is to obtain a particular segment of a media asset. Additionally or alternatively, wireless signal characteristics, such as, for example, CSI and/or RCPI of devices and/or networking equipment may be monitored. In some embodiments, the streaming assistance application may use information of available mobile network operator's networks, information of the connected users, and share the network usage by number of users in each MNO's network.
- At 712, the control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may determine whether the edge server (e.g.,edge server 104 ofFIG. 1 , which may correspond to edgeserver 616 ofFIG. 6 ) should be selected to obtain the at least a portion of the media asset (having been requested at 704) via the first network. The control circuitry may also determine whether the user equipment device (e.g.,user equipment device 110 ofFIG. 1 ) should instead be selected to obtain the at least a portion of the media asset via the second network. In some embodiments, the control circuitry may additionally or alternatively determine whether other devices (e.g.,user equipment device 112 ofFIG. 1 ,user equipment device 402 ofFIG. 4 , or any other suitable device, or any combination thereof) should instead obtain the requested at least a portion of the media asset. In some embodiments, the control circuitry may only consider as candidate devices to obtain the portion of the media asset those devices having support for the streaming assistance application, and/or those devices currently requesting the same segment requested at 704 or other segments of the same media asset associated with the request of 704. - The determination at 712 may be based at least in part on the network characteristics and/or device characteristics determined at 710. For example, if a certain network is unavailable, the control circuitry may determine that such network should not be utilized. As another example, any of the network or device characteristics determined at 710 may be compared to a threshold value, to determine the suitability of the network, and/or network or device characteristics determined at 710 may be compared to each other to identify an optimal device and network combination.
- At 714, based on the optimal device and network combination determined at 712, the control circuitry may cause the at least a portion of the media asset to be obtained. For example, such portion of the media asset may be obtained using
edge server 104 by way of first network 102 (and via a backhaul communications network tocontent server 124, where such backhaul communications network may include at least a portion of second network 116). Alternatively, such portion of the media asset may be obtained usinguser equipment device 110 by way of second network 116 (e.g., a cellular network). In some embodiments, a different user equipment device, e.g.,user equipment device 112 ofFIG. 1 , may be used to obtain the portion of the media asset, such as by way of the second network, such as if that device and network pair is determined to be optimal as compared to other candidate device and network pairs. In some embodiments, a heuristic-based approach, and/or machine learning techniques, may be used to identify the optimal device and network pairs from among the candidate device and network pairs. In some embodiments, retrieval of a particular segment of a media asset may be divided as between user equipment devices and/or as between user equipment devices and edge server(s). - At 716, the control circuitry (e.g.,
control circuitry 618 ofedge server 616 ofFIG. 6 ) may cause the obtained at least a portion of the media asset to be stored at the cache. For example, if the control circuitry of the edge server was selected at 714 to retrieve the portion or segment of the media asset, then such control circuitry may cause the obtained portion of the media asset to be stored at a cache (e.g.,cache 106 ofedge server 104 ofFIG. 1 ). On the other hand, if a particular user equipment device was used to obtain the particular segment, the control circuitry may cause to be received, or may otherwise receive, such obtained segment from the particular user equipment device, and may cause such segment to be stored at the cache. - In some embodiments, predictive caching techniques may be used to determine whether to store an obtained media asset or portion(s) thereof, and/or how long such media asset or portion(s) thereof should be stored. For example, the control circuitry may determine that certain types of content, such as, for example, live broadcasts of media assets, e.g., sports or news, are likely to be rewound, paused, skipped or fast-forwarded, and thus may instruct the edge server to cache one or more portions of such media asset. As another example, a particular portion of a media asset, e.g., a goal in a soccer game, may be determined by the streaming assistance application as likely to be re-watched by users, and thus should be cached to enable later retrieval in the event of a trick-play operation. In some embodiments, certain content may be preemptively cached by the edge server, e.g., trending YouTube videos, in anticipation of multiple requests to view such content, or certain content may be cached based on having recently received multiple requests for such content. In some embodiments, content may be purged from
cache 106 after a certain period of time after being stored at the cache, or after a certain period of time since a last request for such media asset or portion thereof was received, and/or any suitable caching strategy may be employed. In some embodiments, server and network-assisted DASH (SAND) techniques may be employed, which may provide messaging functionalities for improving the streaming performance and caching between the DASH clients as well as bringing more intelligence to the edge caches. For example, the edge server can prefetch segments that are most likely to be served later to clients. - At 718, the control circuitry may cause the obtained at least a portion of the media asset to be generated for display at the user equipment device (e.g.,
user equipment device 110 having requested access to the portion of the media asset). In some embodiments, the control circuitry may receive various operations, e.g., trick-play commands, recording commands, or any other suitable operation, or any combination thereof, in connection with the playing of the media asset. The process ofFIG. 7 may be repeated for each subsequent portion of the media asset. For example, the control circuitry, upon determining that subsequent portions of the media asset are being requested or are likely to be requested by the client user equipment device, may perform the process ofFIG. 7 for such subsequent portions of the media asset. For example, the control circuitry may, from segment to segment, cause different portions of the media asset to be obtained from different device and network combinations, to optimize the delivery of quality media assets to the client device in an efficient manner. - The processes discussed above are intended to be illustrative and not limiting. One skilled in the art would appreciate that the steps of the processes discussed herein may be omitted, modified, combined and/or rearranged, and any additional steps may be performed without departing from the scope of the invention. More generally, the above disclosure is meant to be illustrative and not limiting. Only the claims that follow are meant to set bounds as to what the present invention includes. Furthermore, it should be noted that the features described in any one embodiment may be applied to any other embodiment herein, and flowcharts or examples relating to one embodiment may be combined with any other embodiment in a suitable manner, done in different orders, or done in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted that the systems and/or methods described above may be applied to, or used in accordance with, other systems and/or methods.
Claims (20)
1. A computer-implemented method comprising:
identifying a first network and a second network available to a user equipment device, wherein the user equipment device is configured to communicate with a content server via at least one of the first network or via the second network, and wherein the first network is associated with an edge server comprising a cache;
receiving, from the user equipment device, a request to access at least a portion of a media asset;
determining whether the at least a portion of the media asset is stored in the cache;
in response to determining that the at least a portion of the media asset is not stored in the cache:
determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network from the content server or the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server;
in response to determining that the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server, causing the at least a portion of the media asset to be obtained using the selected user equipment device via the second network;
causing the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored at the cache; and
causing the at least a portion of the media asset obtained using the selected user equipment device via the second network to be generated for display at the user equipment device.
2. The method of claim 1 , wherein the user equipment device is a first user equipment device, the method further comprising:
receiving, from a second user equipment device, a request to access the at least a portion of the media asset;
wherein determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network further comprises determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network or the second user equipment device should be selected to obtain the at least a portion of the media asset via the second network.
3. The method of claim 2 , wherein:
the first network is a localized private network,
the second network is a cellular network;
each of the first user equipment device and the second user equipment device is located in a physical environment associated with the localized private network; and
the at least a portion of the media asset obtained using the selected user equipment device via the second network is provided to the edge server by the selected first user equipment device via the localized private network.
4. The method of claim 3 , wherein:
causing the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored to the cache is performed based at least in part on determining that the at least a portion of the media asset is likely to be requested by another user equipment device in the physical environment associated with the localized private network.
5. The method of claim 3 , wherein:
causing the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored to the cache is performed based at least in part on determining that one or more portions of the media asset are being provided to a plurality of user equipment devices in the physical environment associated with the localized private network.
6. The method of claim 1 , wherein:
the media asset is a live broadcast; and
causing the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored to the cache is performed based at least in part on determining that the user equipment device is likely to request that a trick-play operation be performed on the at least a portion of the media asset.
7. The method of claim 1 , wherein the at least a portion of a media asset is a first portion of the media asset, the method further comprising:
receiving, from the user equipment device, a request to access a second portion of a media asset;
in response to determining that the second portion of the media asset is not stored in the cache:
determining whether the edge server should be selected to obtain the second portion of the media asset via the first network or the user equipment device should be selected to obtain the second portion of the media asset via the second network; and
in response to determining that the edge server should be selected to obtain the second portion of the media asset via the first network from a content server, causing the second portion of the media asset to be obtained using the selected edge server via the first network.
8. The method of claim 1 , further comprising:
causing the user equipment device to provide the at least a portion of the media asset to the edge server via the first network.
9. The method of claim 1 , wherein:
determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network comprises:
determining network characteristics associated with the first network;
determining network characteristics associated with the second network; and
selecting either the edge server to obtain the at least a portion of the media asset via the first network, or the user equipment device to obtain the at least a portion of the media asset via the second networker based at least in part on the determined network characteristics associated with the first network and the determined network characteristics associated with the second network.
10. The method of claim 1 , wherein:
identifying the second network available to the user equipment device comprises receiving, at the edge server, an indication from the user equipment device specifying the second network and indicating a portion of the second network allocated for use in association with the edge server.
11. A computer-implemented system comprising:
an edge server comprising a cache; and
control circuitry configured to:
identify a first network and a second network available to a user equipment device, wherein the user equipment device is configured to communicate with a content server via at least one of the first network or via the second network, and wherein the first network is associated with the edge server comprising the cache;
receive, from the user equipment device, a request to access at least a portion of a media asset;
determine whether the at least a portion of the media asset is stored in the cache;
in response to determining that the at least a portion of the media asset is not stored in the cache:
determine whether the edge server should be selected to obtain the at least a portion of the media asset via the first network from the content server or the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server;
in response to determining that the user equipment device should be selected to obtain the at least a portion of the media asset via the second network from the content server, cause the at least a portion of the media asset to be obtained using the selected user equipment device via the second network;
cause the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored at the cache; and
cause the obtained at least a portion of the media asset to be generated for display at the user equipment device.
12. The system of claim 11 , wherein the user equipment device is a first user equipment device, and the control circuitry is further configured to:
receive, from a second user equipment device, a request to access the at least a portion of the media asset;
determine whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network by further determining whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or the first user equipment device should be selected to obtain the at least a portion of the media asset via the second network or the second user equipment device should be selected to obtain the at least a portion of the media asset via the second network.
13. The system of claim 12 , wherein:
the first network is a localized private network,
the second network is a cellular network;
each of the first user equipment device and the second user equipment device is located in a physical environment associated with the localized private network; and
the control circuitry is further configured to:
cause the at least a portion of the media asset obtained using the selected user equipment device via the second network to be provided to the edge server by the selected first user equipment device or by the selected second user equipment device via the localized private network.
14. The system of claim 13 , wherein:
the control circuitry is configured to cause the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored at the cache by determining that the at least a portion of the media asset is likely to be requested by another user equipment device in the physical environment associated with the localized private network.
15. The system of claim 13 , wherein:
the control circuitry is configured to cause the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored at the cache by determining that one or more portions of the media asset are being provided to a plurality of user equipment devices in the physical environment associated with the localized private network.
16. The system of claim 11 , wherein:
the media asset is a live broadcast; and
the control circuitry is configured to cause the at least a portion of the media asset obtained using the selected user equipment device via the second network to be stored at the cache by determining that the user equipment device is likely to request that a trick-play operation be performed on the at least a portion of the media asset.
17. The system of claim 11 , wherein the at least a portion of a media asset is a first portion of the media asset, and the control circuitry is further configured to:
receive, from the user equipment device, a request to access a second portion of a media asset;
in response to determining that the second portion of the media asset is not stored in the cache:
determine whether the edge server should be selected to obtain the second portion of the media asset via the first network or the user equipment device should be selected to obtain the second portion of the media asset via the second network; and
in response to determining that the edge server should be selected to obtain the second portion of the media asset via the first network from a content server, cause the second portion of the media asset to be obtained using the selected edge server via the first network.
18. The system of claim 11 , wherein the control circuitry is further configured to:
cause the user equipment device to provide the obtained at least a portion of the media asset to the edge server via the first network.
19. The system of claim 11 , wherein the control circuitry is further configured to:
determine whether the edge server should be selected to obtain the at least a portion of the media asset via the first network or whether the user equipment device should be selected to obtain the at least a portion of the media asset via the second network by:
determining network characteristics associated with the first network;
determining network characteristics associated with the second network; and
selecting user equipment device to obtain the at least a portion of the media asset via the second network, based at least in part on the determined network characteristics associated with the first network and the determined network characteristics associated with the second network.
20. The system of claim 11 , wherein the control circuitry is further configured to:
identify the second network available to the user equipment device by receiving, at the edge server, an indication from the user equipment device specifying the second network and indicating a portion of the second network allocated for use in association with the edge server.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/879,211 US11910032B1 (en) | 2022-08-02 | 2022-08-02 | Systems and methods for distributed media streaming |
PCT/US2023/028827 WO2024030318A1 (en) | 2022-08-02 | 2023-07-27 | Systems and methods for distributed media streaming |
US18/400,540 US20240214615A1 (en) | 2022-08-02 | 2023-12-29 | Systems and methods for distributed media streaming |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/879,211 US11910032B1 (en) | 2022-08-02 | 2022-08-02 | Systems and methods for distributed media streaming |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/400,540 Continuation US20240214615A1 (en) | 2022-08-02 | 2023-12-29 | Systems and methods for distributed media streaming |
Publications (2)
Publication Number | Publication Date |
---|---|
US20240048782A1 true US20240048782A1 (en) | 2024-02-08 |
US11910032B1 US11910032B1 (en) | 2024-02-20 |
Family
ID=87747837
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/879,211 Active US11910032B1 (en) | 2022-08-02 | 2022-08-02 | Systems and methods for distributed media streaming |
US18/400,540 Pending US20240214615A1 (en) | 2022-08-02 | 2023-12-29 | Systems and methods for distributed media streaming |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/400,540 Pending US20240214615A1 (en) | 2022-08-02 | 2023-12-29 | Systems and methods for distributed media streaming |
Country Status (2)
Country | Link |
---|---|
US (2) | US11910032B1 (en) |
WO (1) | WO2024030318A1 (en) |
Citations (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9398498B2 (en) * | 2012-09-28 | 2016-07-19 | Intel Corporation | IMS based P2P streaming and download services |
US10743042B2 (en) * | 2017-03-15 | 2020-08-11 | Burst, Inc. | Techniques for integration of media content from mobile device to broadcast |
US20200285788A1 (en) * | 2017-06-05 | 2020-09-10 | Umajin Inc. | Systems and methods for providing digital twin-enabled applications |
US20210021988A1 (en) * | 2019-07-19 | 2021-01-21 | Mo-Dv, Inc. | Special local area network with secure data transfer |
US20210021907A1 (en) * | 2019-07-19 | 2021-01-21 | Mo-Dv, Inc. | Network arrangement using snds and slans |
US10924825B2 (en) * | 2018-04-16 | 2021-02-16 | Charter Communications Operating, Llc | Apparatus and methods for enhancing quality of experience for over-the-top data services over high-capacity wireless networks |
US20210112292A1 (en) * | 2019-10-11 | 2021-04-15 | International Business Machines Corporation | Partial loading of media based on context |
US10986387B1 (en) * | 2018-09-26 | 2021-04-20 | Amazon Technologies, Inc. | Content management for a distributed cache of a wireless mesh network |
US20210127147A1 (en) * | 2019-10-25 | 2021-04-29 | Samsung Electronics Co., Ltd. | Method and apparatus for providing content using edge computing service |
US20210185368A1 (en) * | 2019-12-13 | 2021-06-17 | At&T Intellectual Property I, L.P. | Adaptive bitrate video cache |
US11089346B2 (en) * | 2018-07-24 | 2021-08-10 | At&T Intellectual Property I, L.P. | Adaptive bitrate streaming techniques |
US11223863B2 (en) * | 2020-06-03 | 2022-01-11 | At&T Intellectual Property I, L.P. | Method and an apparatus for controlling content delivery via machine-learning based routing |
US11240339B2 (en) * | 2020-05-12 | 2022-02-01 | T-Mobile Usa, Inc. | Managing multimedia content at edge servers |
US11290755B2 (en) * | 2017-01-10 | 2022-03-29 | Qualcomm Incorporated | Signaling data for prefetching support for streaming media data |
US11356909B1 (en) * | 2021-09-10 | 2022-06-07 | Samsara Inc. | Systems and methods for handovers between cellular networks on an asset gateway device |
US11356516B1 (en) * | 2021-07-23 | 2022-06-07 | Amazon Technologies, Inc. | Client-side caching of media content |
US20220191592A1 (en) * | 2019-02-25 | 2022-06-16 | Samsung Electronics Co., Ltd. | Method and system for user-oriented streaming of content |
US11412033B2 (en) * | 2019-02-25 | 2022-08-09 | Intel Corporation | 5G network edge and core service dimensioning |
US20220256213A1 (en) * | 2021-02-09 | 2022-08-11 | Comcast Cable Communications, Llc | Systems, methods, and devices for network control |
US20220272136A1 (en) * | 2021-02-19 | 2022-08-25 | International Business Machines Corporatlion | Context based content positioning in content delivery networks |
US11432018B2 (en) * | 2020-05-11 | 2022-08-30 | Tencent America LLC | Semi-decoupled partitioning for video coding |
US11438663B1 (en) * | 2021-02-17 | 2022-09-06 | Sling Media Pvt. Ltd. | Smart player stream switching for live content playback and navigation based on user action |
US20220303331A1 (en) * | 2019-08-08 | 2022-09-22 | Intel Corporation | Link performance prediction and media streaming technologies |
US20220300503A1 (en) * | 2021-03-19 | 2022-09-22 | International Business Machines Corporation | Querying distributed databases |
US11496809B2 (en) * | 2019-07-19 | 2022-11-08 | Hulu, LLC | Video file storage prediction process for caches in video servers |
US20220368929A1 (en) * | 2020-03-25 | 2022-11-17 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
US20220400295A1 (en) * | 2021-05-31 | 2022-12-15 | Siden, Inc. | Method And System For Pre-Positioning And Post Positioning Content In A Content Distribution System |
US11570227B2 (en) * | 2020-12-04 | 2023-01-31 | Tencent America LLC | Set up and distribution of immersive media to heterogenous client end-points |
US11568242B2 (en) * | 2019-12-05 | 2023-01-31 | International Business Machines Corporation | Optimization framework for real-time rendering of media using machine learning techniques |
US11570042B2 (en) * | 2021-06-15 | 2023-01-31 | Kyndryl, Inc. | Software-defined network controller communication flow |
US20230041829A1 (en) * | 2021-08-09 | 2023-02-09 | Charter Communications Operating, Llc | Adaptive Bitrate Streaming Time Shift Buffer |
US20230055511A1 (en) * | 2021-08-20 | 2023-02-23 | International Business Machines Corporation | Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment |
US20230069938A1 (en) * | 2021-09-08 | 2023-03-09 | International Business Machines Corporation | Security and task performance validation for a cooperative device network |
US11632411B2 (en) * | 2021-03-31 | 2023-04-18 | Tencent America LLC | Method and apparatus for cascaded multi-input content preparation templates for 5G networks |
US11641511B2 (en) * | 2021-09-21 | 2023-05-02 | International Business Machines Corporation | Selective content transfer for streaming content |
US20230138668A1 (en) * | 2021-11-03 | 2023-05-04 | International Business Machines Corporation | Dynamic identification of cloud storage destination for multi-user files |
US20230149819A1 (en) * | 2021-11-17 | 2023-05-18 | Nvidia Corporation | Dynamically selecting from multiple streams for presentation by predicting events using artificial intelligence |
US11659015B2 (en) * | 2019-10-11 | 2023-05-23 | Theta Labs, Inc. | Tracker server in decentralized data streaming and delivery network |
US20230171313A1 (en) * | 2021-11-29 | 2023-06-01 | International Business Machines Corporation | Context aware edge computing |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080141317A1 (en) * | 2006-12-06 | 2008-06-12 | Guideworks, Llc | Systems and methods for media source selection and toggling |
US20130007186A1 (en) | 2011-06-30 | 2013-01-03 | Interdigital Patent Holdings, Inc. | Controlling content caching and retrieval |
US10397292B2 (en) * | 2013-03-15 | 2019-08-27 | Divx, Llc | Systems, methods, and media for delivery of content |
US8819187B1 (en) | 2013-10-29 | 2014-08-26 | Limelight Networks, Inc. | End-to-end acceleration of dynamic content |
US10264091B2 (en) * | 2014-02-19 | 2019-04-16 | Level 3 Communications, Llc | Proxy server failover and load clustering |
US10848582B2 (en) * | 2015-09-11 | 2020-11-24 | Amazon Technologies, Inc. | Customizable event-triggered computation at edge locations |
CN106817721B (en) | 2015-11-30 | 2019-11-19 | 中国移动通信集团公司 | A kind of method, apparatus, terminal and the server of streaming media service bandwidth estimation |
CN108132838B (en) * | 2016-11-30 | 2021-12-14 | 华为技术有限公司 | Method, device and system for processing graph data |
CN114727134B (en) * | 2016-12-30 | 2024-02-06 | 谷歌有限责任公司 | System and method for interrupting streaming content provided via non-infringeable manifest agreement |
US11922564B2 (en) * | 2017-06-05 | 2024-03-05 | Umajin Inc. | Generative content system that supports location-based services and methods therefor |
FR3067544A1 (en) | 2017-06-27 | 2018-12-14 | Orange | METHOD AND DEVICE FOR DOWNLOADING AUDIOVISUAL CONTENT |
US10939142B2 (en) * | 2018-02-27 | 2021-03-02 | Charter Communications Operating, Llc | Apparatus and methods for content storage, distribution and security within a content distribution network |
US20220030308A1 (en) | 2018-09-14 | 2022-01-27 | National University Of Singapore | Method and device for streaming content |
US11470176B2 (en) * | 2019-01-29 | 2022-10-11 | Cisco Technology, Inc. | Efficient and flexible load-balancing for clusters of caches under latency constraint |
CN110177310A (en) * | 2019-06-28 | 2019-08-27 | 三星电子(中国)研发中心 | A kind of content distribution system and method |
EP3761647A1 (en) * | 2019-07-05 | 2021-01-06 | Tiledmedia B.V. | Methods and devices for rendering a video on a display |
WO2021032706A1 (en) | 2019-08-19 | 2021-02-25 | Koninklijke Kpn N.V. | Streaming assistance system and computer-implemented method |
US11565177B2 (en) * | 2019-11-06 | 2023-01-31 | Sony Interactive Entertainment Inc. | Edge compute proxy for cloud gaming and 5G |
US11995469B2 (en) * | 2019-12-26 | 2024-05-28 | EMC IP Holding Company LLC | Method and system for preemptive caching across content delivery networks |
CN111107386A (en) * | 2019-12-27 | 2020-05-05 | 北京达佳互联信息技术有限公司 | Live video playback method and device, electronic equipment, system and storage medium |
US11451603B2 (en) * | 2020-02-25 | 2022-09-20 | Disney Enterprises, Inc. | Selective pre-caching of media streams |
US11218561B1 (en) * | 2021-03-09 | 2022-01-04 | Wipro Limited | Method and system for managing cache data in a network through edge nodes |
US11652908B2 (en) * | 2021-03-12 | 2023-05-16 | Edgio, Inc. | Split testing with custom cache keys for content delivery networks |
US11916729B2 (en) * | 2021-03-12 | 2024-02-27 | Edgio, Inc. | Automated configuration of a content delivery network |
US11936717B2 (en) | 2021-11-16 | 2024-03-19 | Netflix, Inc. | Scalable media file transfer |
US11689601B1 (en) * | 2022-06-17 | 2023-06-27 | International Business Machines Corporation | Stream quality enhancement |
-
2022
- 2022-08-02 US US17/879,211 patent/US11910032B1/en active Active
-
2023
- 2023-07-27 WO PCT/US2023/028827 patent/WO2024030318A1/en unknown
- 2023-12-29 US US18/400,540 patent/US20240214615A1/en active Pending
Patent Citations (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9398498B2 (en) * | 2012-09-28 | 2016-07-19 | Intel Corporation | IMS based P2P streaming and download services |
US11290755B2 (en) * | 2017-01-10 | 2022-03-29 | Qualcomm Incorporated | Signaling data for prefetching support for streaming media data |
US10743042B2 (en) * | 2017-03-15 | 2020-08-11 | Burst, Inc. | Techniques for integration of media content from mobile device to broadcast |
US20200285788A1 (en) * | 2017-06-05 | 2020-09-10 | Umajin Inc. | Systems and methods for providing digital twin-enabled applications |
US10924825B2 (en) * | 2018-04-16 | 2021-02-16 | Charter Communications Operating, Llc | Apparatus and methods for enhancing quality of experience for over-the-top data services over high-capacity wireless networks |
US11089346B2 (en) * | 2018-07-24 | 2021-08-10 | At&T Intellectual Property I, L.P. | Adaptive bitrate streaming techniques |
US10986387B1 (en) * | 2018-09-26 | 2021-04-20 | Amazon Technologies, Inc. | Content management for a distributed cache of a wireless mesh network |
US11412033B2 (en) * | 2019-02-25 | 2022-08-09 | Intel Corporation | 5G network edge and core service dimensioning |
US20220191592A1 (en) * | 2019-02-25 | 2022-06-16 | Samsung Electronics Co., Ltd. | Method and system for user-oriented streaming of content |
US20210021907A1 (en) * | 2019-07-19 | 2021-01-21 | Mo-Dv, Inc. | Network arrangement using snds and slans |
US11496809B2 (en) * | 2019-07-19 | 2022-11-08 | Hulu, LLC | Video file storage prediction process for caches in video servers |
US20210021988A1 (en) * | 2019-07-19 | 2021-01-21 | Mo-Dv, Inc. | Special local area network with secure data transfer |
US20220303331A1 (en) * | 2019-08-08 | 2022-09-22 | Intel Corporation | Link performance prediction and media streaming technologies |
US11659015B2 (en) * | 2019-10-11 | 2023-05-23 | Theta Labs, Inc. | Tracker server in decentralized data streaming and delivery network |
US20210112292A1 (en) * | 2019-10-11 | 2021-04-15 | International Business Machines Corporation | Partial loading of media based on context |
US20210127147A1 (en) * | 2019-10-25 | 2021-04-29 | Samsung Electronics Co., Ltd. | Method and apparatus for providing content using edge computing service |
US11568242B2 (en) * | 2019-12-05 | 2023-01-31 | International Business Machines Corporation | Optimization framework for real-time rendering of media using machine learning techniques |
US20210185368A1 (en) * | 2019-12-13 | 2021-06-17 | At&T Intellectual Property I, L.P. | Adaptive bitrate video cache |
US20220368929A1 (en) * | 2020-03-25 | 2022-11-17 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
US11432018B2 (en) * | 2020-05-11 | 2022-08-30 | Tencent America LLC | Semi-decoupled partitioning for video coding |
US11240339B2 (en) * | 2020-05-12 | 2022-02-01 | T-Mobile Usa, Inc. | Managing multimedia content at edge servers |
US11223863B2 (en) * | 2020-06-03 | 2022-01-11 | At&T Intellectual Property I, L.P. | Method and an apparatus for controlling content delivery via machine-learning based routing |
US11570227B2 (en) * | 2020-12-04 | 2023-01-31 | Tencent America LLC | Set up and distribution of immersive media to heterogenous client end-points |
US20220256213A1 (en) * | 2021-02-09 | 2022-08-11 | Comcast Cable Communications, Llc | Systems, methods, and devices for network control |
US11438663B1 (en) * | 2021-02-17 | 2022-09-06 | Sling Media Pvt. Ltd. | Smart player stream switching for live content playback and navigation based on user action |
US20220272136A1 (en) * | 2021-02-19 | 2022-08-25 | International Business Machines Corporatlion | Context based content positioning in content delivery networks |
US20220300503A1 (en) * | 2021-03-19 | 2022-09-22 | International Business Machines Corporation | Querying distributed databases |
US11632411B2 (en) * | 2021-03-31 | 2023-04-18 | Tencent America LLC | Method and apparatus for cascaded multi-input content preparation templates for 5G networks |
US20220400295A1 (en) * | 2021-05-31 | 2022-12-15 | Siden, Inc. | Method And System For Pre-Positioning And Post Positioning Content In A Content Distribution System |
US11570042B2 (en) * | 2021-06-15 | 2023-01-31 | Kyndryl, Inc. | Software-defined network controller communication flow |
US11356516B1 (en) * | 2021-07-23 | 2022-06-07 | Amazon Technologies, Inc. | Client-side caching of media content |
US20230041829A1 (en) * | 2021-08-09 | 2023-02-09 | Charter Communications Operating, Llc | Adaptive Bitrate Streaming Time Shift Buffer |
US20230055511A1 (en) * | 2021-08-20 | 2023-02-23 | International Business Machines Corporation | Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment |
US20230069938A1 (en) * | 2021-09-08 | 2023-03-09 | International Business Machines Corporation | Security and task performance validation for a cooperative device network |
US11356909B1 (en) * | 2021-09-10 | 2022-06-07 | Samsara Inc. | Systems and methods for handovers between cellular networks on an asset gateway device |
US11641511B2 (en) * | 2021-09-21 | 2023-05-02 | International Business Machines Corporation | Selective content transfer for streaming content |
US20230138668A1 (en) * | 2021-11-03 | 2023-05-04 | International Business Machines Corporation | Dynamic identification of cloud storage destination for multi-user files |
US20230149819A1 (en) * | 2021-11-17 | 2023-05-18 | Nvidia Corporation | Dynamically selecting from multiple streams for presentation by predicting events using artificial intelligence |
US20230171313A1 (en) * | 2021-11-29 | 2023-06-01 | International Business Machines Corporation | Context aware edge computing |
Also Published As
Publication number | Publication date |
---|---|
US11910032B1 (en) | 2024-02-20 |
US20240214615A1 (en) | 2024-06-27 |
WO2024030318A1 (en) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10516757B2 (en) | Server-side scheduling for media transmissions | |
US11412440B2 (en) | Client-side location aware network selection | |
US10827032B2 (en) | Server-side scheduling for media transmissions according to client device states | |
KR101900168B1 (en) | Adaptive media streaming | |
US9860294B2 (en) | Media content streaming | |
US20230412578A1 (en) | Systems and methods for connecting private devices to public devices according to connection parameters | |
Zhu et al. | IMPROVING VIDEO PERFORMANCE WITH EDGE SERVERS IN THE FOG COMPUTING ARCHITECTURE. | |
US12133023B2 (en) | Systems and methods for offloading processing-intensive video conferencing task to edge computing device | |
US11128674B2 (en) | System for providing efficient delivery of media content to the masses | |
US11910032B1 (en) | Systems and methods for distributed media streaming | |
US20160142745A1 (en) | Management system to predict signal strength and bit rate | |
US9930399B2 (en) | Digital video recorder as a content delivery server | |
KR101451957B1 (en) | System for streaming service based on cloud computing, method for streaming service using cloud server and apparatus for the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |