Patent ID: 12206913

DETAILED DESCRIPTION

FIG.1shows an illustrative system100for 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. System100may 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. System100may include a first network, e.g., private network (PRN)102, which may comprise or otherwise be associated with one or more edge servers104. Edge server104may provide edge services for users, and may comprise cache106, 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 of edge server104and/or one or more remote servers (e.g., content server124and/or server604ofFIG.6) and/or one or more of user equipment devices110and/or112, 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 in physical environment114. Additionally or alternatively, certain functionalities provided by the streaming assistance application may be provided via an Application Programming Interface (API). While a single edge server104and a single content server124are 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, cache106may be populated based on requests from users either using one or more backhaul connections of network102or by way of, e.g., a mobile network connection of user equipment device110and/or112to network116. System100may 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 system100and access networks from system100to 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.

System100may include user equipment device110and user equipment device112and/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 server104by way of first network102. User equipment device110and user equipment device112may 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 network102, including edge server104, as well as user equipment devices110and112may be located at a same physical environment114. Physical environment114may 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 network102may 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 network102may be facilitated at least in part by networking equipment on the premises of physical environment114.

In some embodiments, user equipment device110and user equipment device112may be equipped with antennas for transmitting and receiving electromagnetic signals at frequencies within the electromagnetic spectrum, e.g., radio frequencies, to communicate over first network102with edge server104. First network102may 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 environment114may 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 of environment114may 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 from first network102to the Internet (and content server124) may be based at least in part on a mobile or cellular network.

In some embodiments, first network102and/or physical environment114may comprise one or more routers configured to forward data packets from the Internet connection, received by way of a modem, to devices within first network102and 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 within first network102, built-in access points to enable devices to wirelessly connect to first network102. In some embodiments, system100may include one or more stand-alone modems, switches, routers and access points. In some embodiments, first network102may comprise additional routers or network equipment positioned at various locations of physical environment114and in communication with the router to extend a range of the network, e.g., to more remote region of physical environment114. In some embodiments, media assets may be provided to user equipment devices110and/or112by way of wired and/or wireless signals transmitted through first network102, and the streaming assistance application may monitor wired and/or wireless signal or network characteristics of first network102and/or second network116.

System100may include second network116, which may correspond to one or more of public networks118,120and122. System100may comprise one or more content servers124, which may be configured to provide, e.g., over first network102and/or second network116, a media asset and/or portions thereof to user equipment devices110and/or112and/or edge server104. In some embodiments, second network116may 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 to second network116using an e-sim or sim provided by MNO or MVNO. In some embodiments, user equipment devices110and112can be configured to concurrently connect to first network102and second network116. For example, multiple client devices may be connected to a Wi-Fi network (e.g., 802.11n, 802.11ac, 802.11ax) which may correspond to first network102, 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 network116. In some embodiments, system100may utilize Multipath TCP (MPTCP) techniques for utilizing multiple access network connections simultaneously. While first network102and second network116are described in the example ofFIG.1, it should be appreciated that any suitable number of networks may be employed in system100.

In an illustrative scenario, physical environment114may correspond to a train, on which devices of each of multiple users, such as, for example, users of receptive user equipment devices110and112, are connected to first network102and second network116. For example, such users may be passengers on the train at the same time, e.g., commuting to work. First network102may 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 cache106. The users of user equipment devices110and112may 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 server124. The streaming assistance application may monitor connection quality (e.g., throughput, latency, jitter, or any other network characteristic, or any combination thereof) from physical environment114to the Internet via network102, which may vary. Such varying network characteristic(s) may result in, for at least some segments of the media asset, edge server104being unable to populate high-quality media segments to cache106and guarantee a high QoE for the users. In such instance, the streaming assistance application may cause user equipment device110or112to download or otherwise obtain one or more segments of the media asset via second network116(e.g., a cellular network), and provide such segment(s) to edge server104for storage at cache106. In this way, computing and/or network resources required to obtain certain segments of the media asset may be distributed between user equipment devices110and/or112, and edge server104, 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 network102(e.g., via edge server104) or second network116(e.g., via equipment devices110and/or112), or other suitable networks or devices, should be used to obtain a particular segment. In some embodiments, when first network102is selected, cache106may be populated using a backhaul connection (e.g., satellite, 4G, 5G or LAN or any other suitable network, or any combination thereof) of first network102.

In some embodiments, in monitoring network characteristics of first network102and/or second network116, 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 devices110and/or112may provide to the streaming assistance application information concerning device characteristics of user equipment devices110and/or112and/or network characteristics of first network102and second network116. 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 edge server104at 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 at user equipment device110and/or112. 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 by user equipment device110and/or112, 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.2is a flowchart of a detailed illustrative process200for 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. Process200may 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 environment114. The streaming assistance application may be installed at or otherwise provided to edge server104, user equipment device110having a video player 1 (VP1), and user equipment device112having a video player 2 (VP2). For example, edge server104in first network102may be instrumented with the streaming assistance application server software, and user equipment device110and user equipment device112may be instrumented with the streaming assistance application client software.

At202, user equipment device110may connect to first network102and 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 that user equipment device110supports 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 device110. 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 server104, user equipment device110, and/or user equipment device112) and/or network (e.g., network102and/or network116) by which at least a particular segment of a media asset should be obtained.

At204, edge server104may request the manifest file from content server124. At206, edge server104may receive the requested manifest file from content server124and forward such manifest file to user equipment device110(at208). In some embodiments, the streaming assistance application of edge server104may add identifying information in a header, e.g., an IP address of edge server104indicating where to send messages associated with the streaming assistance application, when forwarding the manifest to user equipment device110. In some embodiments, edge server104may add a universal resource identifier (URI) of edge server104to the manifest file.

At210, user equipment device110may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks116) to edge server104. Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application. At212, edge server104may acknowledge receipt of such ClientHello message received at210. In some embodiments, at212, edge server104may store the network information received at210and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more available second networks116for the purposes of the streaming assistance application.

At214, user equipment device112may connect to first network102and 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 that user equipment device112supports the streaming assistance application. In some embodiments, the media asset requested by user equipment device112may be the same media asset that was requested by user equipment device110. In some embodiments, each of user equipment device110and112may be located in the same physical environment114(e.g., a train). The media asset may be, e.g., live broadcast content or VOD content.

At216, edge server104may forward the manifest file (obtained at206from content server124) to user equipment device112. In some embodiments, the streaming assistance application of edge server104may add identifying information in a header, e.g., an IP address of edge server104indicating where to send messages associated with the streaming assistance application, when forwarding the manifest to user equipment device112. In some embodiments, edge server104may add a universal resource identifier (URI) of edge server104to the manifest file.

At218, user equipment device112may send a ClientHello message comprising an indication of available public networks (e.g., identifying one or more available second networks116) to edge server104. Such indication may additionally include an indication of which share of such network(s) is allocated for use by the streaming assistance application. At220, edge server104may acknowledge receipt of such ClientHello message received at218. In some embodiments, at220, edge server104may store the network information received at218and transmit a confirmation regarding whether it has reserved the allocated portion of the one or more available second networks116for the purposes of the streaming assistance application.

At222, user equipment device110may, based on the received manifest file, request a particular segment (e.g., segment-1) of the media asset from edge server104in first network102. 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 SANE108may be a DANE (DASH-aware Network Element).

At224, the streaming assistance application, running at least in part at edge server104, may decide how the requested segment or portion of the media asset is to be retrieved. For example, at224, the streaming assistance application may perform process300shown inFIG.3.

FIG.3is a flowchart of a detailed illustrative process300for 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. At302, the streaming assistance application may determine that a request, from a user equipment device (e.g., user equipment device110), to access at least a portion of a media asset has been received. At304, which may correspond to the determination at224, the streaming assistance application may determine how the requested segment or portion of the media asset is to be retrieved. For example, at306, the streaming assistance application may determine whether the requested segment is already stored at cache106. If such requested segment is already stored at cache106, processing may proceed to308, and edge server104may provide the segment stored at cache106to the requesting user equipment device over first network102. On the other hand, if the streaming assistance application determines at306that the requested segment is not stored in cache106, processing may proceed to310.

At310, 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 (at312), quality of service (QoS) metrics at314, 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 database316and/or at edge server104and/or at content server124. In some embodiments, network information database316may be located at physical environment114, within edge server104or remote from edge server104and in communication with edge server104over 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 of networks102and116(and/or public networks118,120, and122), 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.

Based on the aforementioned information, the streaming assistance application may, at318, determine to fetch the segment from content server124via PN2120(e.g., by way of edge server104of first network116). Alternatively, the streaming assistance application may request user equipment device110to fetch the segment from content server via PN1118, and may request that user equipment device110upload such retrieved segment to cache106by way of first network102. Alternatively, the streaming assistance application may request user equipment device112to fetch the segment from content server via PN3122, and may request that user equipment device112upload such retrieved segment to cache106by way of first network102. In some embodiments, the streaming assistance application (e.g., at least a portion of which may be executing at SANE108at edge server104) 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 server124, and upon determining that content server124supports 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 PN1118, PN2120, PN3122and/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 in system100ofFIG.1, and/or any other suitable networks available to system100, 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 update network information database316with current network information.

In the example ofFIG.2, the streaming assistance application may determine, based on the determination made at224, to obtain the requested segment from content server124(at226) using edge server104by way of PN2120, e.g., a backhaul connection of first network102. Edge server104may store such segment (obtained at228from content server124) in cache106and provide the obtained segment to user equipment device110(at230), to enable and cause user equipment device110to generate for display such portion of the media asset.

At232, edge server104may receive a request, e.g., via first network102, from user equipment device112for the same segment of the media asset requested by user equipment device110at222. Since such segment was previously stored in cache106, the streaming assistance application may provide the segment from cache106to user equipment device112(at234, to enable and cause user equipment device112to generate for display such portion of the media asset.

At236, edge server104may receive a request, e.g., via first network102, from user equipment device110, for another segment, e.g., the next sequential segment (segment-2) of the media asset, after segment-1 having been requested at222. Edge server104may additionally receive, at238, a request for such segment-2 from user equipment device112.

The streaming assistance application may perform a determination at240, similar to the determination described at224and inFIG.3, and as a result of such determination may decide to obtain the requested segment-2 using second network116and user equipment device110. For example, the streaming assistance application may identify the combination of using user equipment device110and second network116as the optimal manner for obtaining segment-2, as compared to utilizing edge server104, user equipment device112or any other suitable user equipment device, and a particular accompanying network. Specifically, the streaming assistance application may determine to utilize user equipment device110's PN1118connection (e.g., a cellular network), and may instruct user equipment device110to obtain such segment by way of an HTTP response (at242). Such HTTP response may comprise a header in which the streaming assistance application instructs user equipment device110to obtain segment-2 via PN1118and POST the obtained segment-2 to edge server104, e.g., transmit the obtained segment-2 by way of first network102for storage at cache106. In some embodiments, as part of the determination at240, only user equipment devices present in physical environment114and 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 in physical environment114and requesting any content may be considered as a candidate for retrieving the segment. In some embodiments, any user equipment device present in physical environment114and 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.

At244, user equipment device110may request segment-2 by way of second network116, specifically PN1118, and, at246, user equipment device110may obtain such segment-2 by way of second network116, specifically PN1118, to enable and cause user equipment device110to generate for display such portion of the media asset. In some embodiments, user equipment device110may store such segment to buffer memory of user equipment device110, and transmit such segment-2 to cache106of edge server104(at248). In some embodiments, user equipment device110may transmit such segment-2 to cache106of edge server104by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof. At250, edge server104may deliver segment-2 from cache106to user equipment device112, to enable and cause user equipment device112to generate for display such portion of the media asset.

At252, the streaming assistance application may receive from user equipment device110, at edge server104, 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 server104may additionally receive, at254, a request for such segment-3 from user equipment device112.

At256, the streaming assistance application may perform a determination, similar to the determinations described at240and224and inFIG.3, and as a result of such determination may decide to obtain the requested segment-3 using second network116and user equipment device112. For example, the streaming assistance application may identify the combination of using user equipment device112and second network116as the optimal manner for obtaining segment-3, as compared to utilizing edge server104, user equipment device110or any other suitable user equipment device, and a particular accompanying network. Specifically, the streaming assistance application may determine to utilize user equipment device112's PN3122connection (e.g., a cellular network), and may instruct user equipment device112to obtain such segment-3 by way of an HTTP response (at256). Such HTTP response may comprise a header in which the streaming assistance application instructs user equipment device110to obtain segment-3 via PN1118and POST the obtained segment-3 to edge server104, e.g., transmit the obtained segment-3 by way of first network102for storage at cache106.

At258, user equipment device112may request segment-3 by way of second network116, specifically PN3122, and, at260, user equipment device112may obtain such segment-3 by way of second network116, specifically PN3122, to enable and cause user equipment device112to generate for display such portion of the media asset. In some embodiments, user equipment device112may store such segment to buffer memory of user equipment device112, and transmit such segment-3 to cache106of edge server104(at262). In some embodiments, user equipment device112may transmit such segment-3 to cache106of edge server104by way of an HTTP POST request method, or using any other suitable technique, or any combination thereof. At264, edge server104may deliver segment-3 from cache106to user equipment device110, to enable and cause user equipment device110to 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 server124. 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, or second network116is unavailable, segments can be downloaded or otherwise obtained from cache106of edge server104. 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.4is an illustrative block diagram400indicating how portions of a media asset may be obtained via multiple networks, in accordance with some embodiments of this disclosure. Content server124may be capable of communicating with edge server104, user equipment device110, user equipment device112, and user equipment device402by way of second network116. Second network116may comprise public network1(PN1)118, PN2120, PN3122and/or PN404, and/or any other suitable network. Second network116may 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 network102. First network102may be a private network comprising edge server104, user equipment devices110,112and402, and may correspond to a particular physical environment114.

In the example shown inFIG.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, PN4404may not be used due to the streaming assistance application determining, based on monitored network characteristics, that performance of PN4404is insufficient to deliver a quality media session to users, or that PN4404does not support the streaming assistance application. Edge server104may determine to retrieve segment 1 and segment 4 by way of PN2120of second network116, and user equipment devices110,112and402may stream or otherwise obtain such segments from edge server104via first network102. The streaming assistance application may instruct user equipment device110to obtain segment 2 via PN1118of second network116, and upload or transmit such segment 2 to edge server104via first network102. The streaming assistance application may cause user equipment devices112and402to stream or otherwise obtain segment 2, having been provided to edge server104by user equipment device110via PN1118of second network116, from cache106of edge server104. The streaming assistance application may cause user equipment device112to stream or otherwise obtain segment 3 via PN3122of second network116, and may cause user equipment device112to upload or transmit the obtained segment 3 to edge server104via first network102, for storage at cache106. The streaming assistance application may cause user equipment devices110and402to obtain segment 3 by way of first network102from edge server104, 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.

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 cache106based 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 environment114. 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 environment114. In some embodiments, such determination to store the media asset or portions thereof in cache106may 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 to cache106based 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 environment114. 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 instruct edge server104to 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 edge server104, 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 from cache106after 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 server104can prefetch segments that are most likely to be served later to clients.

FIGS.5-6describe 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.5shows generalized embodiments of illustrative user equipment devices500and501, which may correspond to, e.g., user equipment devices110,112and/or404ofFIGS.1,2and4, and/or other suitable device. For example, user equipment device500may 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 server124and edge server104, or otherwise interfacing with the streaming assistance application described herein. In another example, user equipment device501may be a user television equipment system or device. User equipment device501may include set-top box515. Set-top box515may be communicatively connected to microphone516, audio output equipment (e.g., speaker or headphones514), and display512. In some embodiments, microphone516may receive audio corresponding to a voice of a user, e.g., a voice input or a voice command. In some embodiments, display512may be a television display or a computer display. In some embodiments, set-top box515may be communicatively connected to user input interface510. In some embodiments, user input interface510may be a remote control device. Set-top box515may 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, device500may 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 device500. In some embodiments, user equipment device500comprises a rechargeable battery that is configured to provide power to the components of the device.

Each one of user equipment device500and user equipment device501may receive content and data via input/output (I/O) path502. I/O path502may 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 circuitry504, which may comprise processing circuitry506and storage508. Control circuitry504may be used to send and receive commands, requests, and other suitable data using I/O path502, which may comprise I/O circuitry. I/O path502may connect control circuitry504(and specifically processing circuitry506) 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.5to avoid overcomplicating the drawing. While set-top box515is shown inFIG.5for 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 box515may be replaced by, or complemented by, a personal computer (e.g., a notebook, a laptop, a desktop), a smartphone (e.g., user equipment device500), 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 circuitry504may be based on any suitable control circuitry such as processing circuitry506. 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 circuitry504executes instructions for the streaming assistance application stored in memory (e.g., storage508). Specifically, control circuitry504may be instructed by the streaming assistance application to perform the functions discussed above and below. In some implementations, processing or actions performed by control circuitry504may be based on instructions received from the streaming assistance application.

In client/server-based embodiments, control circuitry504may 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 in storage508, and executed by control circuitry504of a user equipment device500.

In some embodiments, the streaming assistance application may be a client/server application where only the client application resides on user equipment device500, and a server application resides on an external server (e.g., server604ofFIG.6and/or media content source602ofFIG.6and/or edge server616ofFIG.6). In some embodiments, edge server616may correspond to edge server104ofFIG.1, and content server124ofFIG.1may correspond to media content source602and/or server604. In some embodiments, database605may be a network database storing status information and network characteristic information for various networks (e.g., first network102and second network116). For example, the streaming assistance application may be implemented partially as a client application on control circuitry504of user equipment device500and partially an external server (e.g., server604ofFIG.6and/or media content source602ofFIG.6and/or edge server616ofFIG.6) as a server application running on control circuitry611. Such external server may be a part of a local area network with one or more of user equipment devices500,501or may be part of a cloud computing environment accessed via the internet. In a cloud computing environment, 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., server604ofFIG.6and/or media content source602ofFIG.6and/or edge server616ofFIG.6), referred to as “the cloud.” User equipment device500may 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 by control circuitry504or611, the streaming assistance application may instruct control circuitry504or611circuitry 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 circuitry504to perform processing tasks for selecting a particular device and/or network to obtain a particular media asset or segment thereof.

Control circuitry504may 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 storage508that is part of control circuitry504. 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. Storage508may 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 storage508or instead of storage508.

Control circuitry504may 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 circuitry504may also include scaler circuitry for upconverting and downconverting content into the preferred output format of user equipment device500. Control circuitry504may 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 device500,501to 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 storage508is provided as a separate device from user equipment device500, the tuning and encoding circuitry (including multiple tuners) may be associated with storage508.

Control circuitry504may receive instruction from a user by way of user input interface510. User input interface510may 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. Display512may be provided as a stand-alone device or integrated with other elements of each one of user equipment device500and user equipment device501. For example, display512may be a touchscreen or touch-sensitive display. In such circumstances, user input interface510may be integrated with or combined with display512. In some embodiments, user input interface510includes 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 interface510may include a handheld remote-control device having an alphanumeric keypad and option buttons. In a further example, user input interface510may 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 box515.

Audio output equipment514may be integrated with or combined with display512. Display512may 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 the display512. Audio output equipment514may be provided as integrated with other elements of each one of user equipment device500and user equipment device501or may be stand-alone units. An audio component of videos and other content displayed on display512may be played through speakers (or headphones) of audio output equipment514. In some embodiments, audio may be distributed to a receiver (not shown), which processes and outputs the audio via speakers of audio output equipment514. In some embodiments, for example, control circuitry504is configured to provide audio cues to a user, or other audio feedback to a user, using speakers of audio output equipment514. There may be a separate microphone516or audio output equipment514may 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 by control circuitry504. In a further example, a user may voice commands that are received by a microphone and recognized by control circuitry504. Camera518may be any suitable camera integrated with the equipment or externally connected and capable of capturing still and moving images. In some embodiments, camera518may be a digital camera comprising a charge-coupled device (CCD) and/or a complementary metal-oxide semiconductor (CMOS) image sensor. In some embodiments, camera518may 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 device500and device501. In such an approach, instructions of the application may be stored locally (e.g., in storage508), 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 circuitry504may retrieve instructions of the application from storage508and process the instructions to provide the functionality of the streaming assistance application discussed herein. Based on the processed instructions, control circuitry504may determine what action to perform when input is received from user input interface510. For example, movement of a cursor on a display up/down may be indicated by the processed instructions when user input interface510indicates 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 circuitry504may allow a user to provide user profile information or may automatically compile user profile information. For example, control circuitry504may access and monitor network data, video data, audio data, processing data, participation data from a streaming assistance application and social network profile. Control circuitry504may 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 circuitry504may 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 device500and user equipment device501may be retrieved on-demand by issuing requests to a server remote to each one of user equipment device500and user equipment device501. 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 circuitry504) 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 device500. 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 on user equipment device500. User equipment device500may receive inputs from the user via input interface510and transmit those inputs to the remote server for processing and generating the corresponding displays. For example, user equipment device500may transmit a communication to the remote server indicating that an up/down button was selected via input interface510. 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 device500for 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 circuitry504). In some embodiments, the streaming assistance application may be encoded in the ETV Binary Interchange Format (EBIF), received by control circuitry504as part of a suitable feed, and interpreted by a user agent running on control circuitry504. 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 by control circuitry504. 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.6is a diagram of an illustrative system600, in accordance with some embodiments of this disclosure. System600may comprise one or more of user equipment devices607,608,610(and/or any other suitable number of user equipment devices), media content source602, server604, database605, edge server616, and/or any other suitable computing devices, or any combination thereof, which may be coupled to one or more networks, e.g., communication network609. In some embodiments, communication network may comprise first network102ofFIG.1and second network116ofFIG.2. At least a portion of such devices ofFIG.6may be present in a particular environment, such as, for example, physical environment114ofFIG.1. In some embodiments, at least a portion of such devices may correspond to user equipment device500or user equipment device501ofFIG.5, or may include any suitable portion of the same or similar components as described in connection withFIG.5.

Communication network606may 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 network606) 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.6to 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 network606.

System600may comprise one or more media content sources602and one or more servers604. In some embodiments, content server124may correspond to one or more of media content source602or server604. Communications with media content source602and server604may be exchanged over one or more communications paths but are shown as a single path inFIG.6to avoid overcomplicating the drawing. In addition, there may be more than one of each of media content source602and server604, but only one of each is shown inFIG.6to avoid overcomplicating the drawing. If desired, media content source602and server604may be integrated as one source device. In some embodiments, the streaming assistance application may be executed at one or more of control circuitry611of server604(and/or control circuitry of user equipment devices607,608,610, or control circuitry618of edge server616, or any other suitable devices, or any combination thereof). In some embodiments, any suitable data structure or any combination thereof, may be stored at database605maintained at or otherwise associated with server604, and/or at storage of one or more of user equipment devices607,608,610and/or edge server616, at least one of which may be configured to host or be in communication with database605. User equipment device610may be a smart television, user equipment device607may be user computer equipment, and user equipment device608may 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 server124) which may present media assets to a user.

In some embodiments, server604may include control circuitry611and storage614(e.g., RAM, ROM, Hard Disk, Removable Disk, etc.). Storage614may store one or more databases. Server604may also include an input/output path612. I/O path612may 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 circuitry611, which may include processing circuitry, and storage614. Control circuitry611may be used to send and receive commands, requests, and other suitable data using I/O path612, which may comprise I/O circuitry. I/O path612may connect control circuitry611(and specifically control circuitry) to one or more communications paths. I/O path612may comprise I/O circuitry.

Control circuitry611may 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 circuitry611may 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 circuitry611executes instructions for a streaming assistance application stored in memory (e.g., the storage614). Memory may be an electronic storage device provided as storage614that is part of control circuitry611.

User equipment device610may be a smart television, user equipment device607may be user computer equipment, and user equipment device608may 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 server616may comprise control circuitry618, I/O path620and storage622, which may be implemented in a similar manner as control circuitry611, I/O path612and storage624, respectively of server604. Edge server616may correspond to edge server104ofFIG.1. Edge server616may be configured to be in communication with one or more of user equipment devices607,608,610and server604and media content source602over communication network609, and may be configured to perform processing tasks in connection with the streaming assistance application In some embodiments, a plurality of edge servers616may 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.7is 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 of process700may be implemented by one or more components of the devices and systems ofFIGS.1-6. Although the present disclosure may describe certain steps of process700(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-6may implement those steps instead.

At702, control circuitry (e.g., control circuitry618of edge server616ofFIG.6) may identify a first network (e.g., first network102ofFIG.1) and a second network (e.g., second network116ofFIG.1) available to one or more user equipment devices (e.g., user equipment device110ofFIG.1). In some embodiments, the control circuitry may determine that such user equipment device is present within physical environment114, which edge server104may 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 network102may 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 network102may be facilitated at least in part by networking equipment on the premises of physical environment114. In some embodiments, the control circuitry may determine or receive information from, e.g., networking equipment, a remote server, and/or devices within physical environment114, 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 network102ofFIG.1) may correspond to, e.g., a Wi-Fi network, and the devices of environment114may communicate wirelessly over a WLAN, and/or the first network102may correspond to a private cellular network, or any other suitable network, or any combination thereof. In some embodiments, a second network (e.g., second network116ofFIG.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 server124. In some embodiments, certain portions of the second network may function as a backhaul connection to content server124for edge server104within the first network.

At704, control circuitry (e.g., control circuitry618of edge server616ofFIG.6) may receive, from a user equipment device or devices (e.g., user equipment device110ofFIG.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,704may 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.

At706, control circuitry may determine whether the cache (e.g., cache106ofFIG.1) currently stores a media asset, or portion thereof, that matches the at least a portion of a media asset requested at704. 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 to708; otherwise processing may proceed to710.

At708, the control circuitry (e.g., control circuitry618of edge server616ofFIG.6) may retrieve from the cache (e.g., cache106of edge server104ofFIG.1), and provide to the user equipment device (e.g., user equipment device110), 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 device110(e.g., by way of the first network), to cause and enable user equipment device110to generate for display the at least a portion of the media asset.

At710, the control circuitry (e.g., control circuitry618of edge server616ofFIG.6) may determine network and/or device characteristics associated with devices included in the particular physical environment (e.g., environment114ofFIG.1). For example, the control circuitry may monitor network characteristics of first network102and/or second network116(which may include monitoring network characteristics of networks118,120and/or122and/or any other suitable networks). In some embodiments, the 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 devices110and/or112, 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.

At712, the control circuitry (e.g., control circuitry618of edge server616ofFIG.6) may determine whether the edge server (e.g., edge server104ofFIG.1, which may correspond to edge server616ofFIG.6) should be selected to obtain the at least a portion of the media asset (having been requested at704) via the first network. The control circuitry may also determine whether the user equipment device (e.g., user equipment device110ofFIG.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 device112ofFIG.1, user equipment device402ofFIG.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 at704or other segments of the same media asset associated with the request of704.

The determination at712may be based at least in part on the network characteristics and/or device characteristics determined at710. 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 at710may be compared to a threshold value, to determine the suitability of the network, and/or network or device characteristics determined at710may be compared to each other to identify an optimal device and network combination.

At714, based on the optimal device and network combination determined at712, 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 server104by way of first network102(and via a backhaul communications network to content server124, where such backhaul communications network may include at least a portion of second network116). Alternatively, such portion of the media asset may be obtained using user equipment device110by way of second network116(e.g., a cellular network). In some embodiments, a different user equipment device, e.g., user equipment device112ofFIG.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).

At716, the control circuitry (e.g., control circuitry618of edge server616ofFIG.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 at714to 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., cache106of edge server104ofFIG.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 cache106after 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.

At718, 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 device110having 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.7may 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.7for 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.