Facilitating delivery of streaming content from multiple content servers
The distributed edge-compute-based architecture with a gateway module dynamically adjusts CDN allocations based on real-time performance parameters, addressing static mapping issues in content streaming systems to ensure uninterrupted and high-quality delivery.
Patent Information
- Application Number
- PCT/KR2025/010060
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2025-03-04
- Filing Date
- 2025-07-10
- Publication Date
- 2026-01-15
AI Technical Summary
Existing content streaming systems fail to dynamically adjust CDN allocations during playback sessions, leading to potential service degradation due to static mapping of user devices to CDNs that do not account for changing network conditions.
A distributed edge-compute-based architecture with a gateway module that monitors performance parameters of multiple content servers and dynamically switches user devices to optimal servers within a playback session, ensuring seamless content delivery by evaluating factors like geographic location, server load, and network latency.
This approach reduces the likelihood of performance degradation by adaptively reallocating content servers, providing highly responsive and reliable streaming experiences across varying network conditions.
Smart Images

Figure KR2025010060_15012026_PF_FP_ABST
Abstract
Description
Facilitating the delivery of streaming content from multiple content servers
[0001] The present disclosure relates to a system for delivering streaming content, and more particularly, to a method for facilitating delivery of streaming content from a plurality of content servers.
[0002] In a content streaming system, a Global Traffic Manager (GTM) coordinates the delivery of content from multiple content delivery networks (CDNs) to user devices. Operating at the domain name system (DNS) level, GTM coordinates the delivery of streaming content from one of multiple CDNs based on factors such as proximity and load.
[0003] The present disclosure relates to facilitating delivery of streaming content from multiple content servers.
[0004] According to one aspect of the subject matter described in the present application, a method for facilitating delivery of streaming content from a plurality of content servers may include: receiving a first request for a first set of data segments of streaming content, from a user device, at one or more computing devices remote from the content servers; identifying a first content server for delivering the first set of data segments, based on information about one or more performance parameters of the plurality of content servers; transmitting a first response to the first request to the user device, the first response including a list of uniform resource locators (URLs) for obtaining the first set of data segments from the first content server; receiving a second request for a second set of data segments of streaming content, from the user device, at one or more computing devices, wherein the first request and the second request are received within the same content playback session; identifying a second content server for delivering the second set of data segments, based on information about one or more performance parameters of the plurality of content servers; and transmitting a second response to the second request to the user device. and the second response includes a second list of URLs for obtaining a second set of data segments from a second content server.
[0005] Implementations according to this aspect may include one or more of the following features. For example, one or more computing devices may be configured to communicate with user devices located within a predefined geographic area.
[0006] In some implementations, the one or more performance parameters may include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the content servers. In some implementations, the one or more performance parameters may be updated based on latency information provided by the user device, wherein the latency information indicates the time it takes for data to travel from one of the plurality of content servers to the user device.
[0007] In some examples, the first content server may be different from the second content server. In some implementations, the method may further include, at the start of a playback session, receiving a master manifest request associated with the playback session, and, in response to the master manifest request, transmitting a list of uniform resource locators (URLs), each of which corresponds to a content rendition corresponding to a different bitrate.
[0008] According to another aspect of the subject matter described in the present application, a distributed system for facilitating delivery of streaming content from a plurality of content servers may include a gateway module implemented using one or more computing devices, the gateway module being remote from the content servers and configured to communicate with a set of user devices to facilitate delivery of streaming content to the set of user devices. The gateway module may be configured to perform operations, including: receiving a first request from a user device for a first set of data segments of streaming content; identifying a first content server for delivering the first set of data segments based on information about one or more performance parameters of a plurality of content servers; transmitting a first response to the first request to the user device, the first response comprising a list of uniform resource locators (URLs) for obtaining the first set of data segments from the first content server; receiving a second request from the user device for a second set of data segments of streaming content, wherein the first request and the second request are received within the same content playback session; identifying a second content server for delivering the second set of data segments based on information about one or more performance parameters of the plurality of content servers; and transmitting a second response to the second request to the user device, the second response comprising a second list of URLs for obtaining the second set of data segments from the second content server.
[0009] Implementations according to this aspect may include one or more of the following features. For example, the gateway module may be configured to communicate with user devices located within a predefined geographic area.
[0010] In some implementations, the one or more performance parameters may include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the content servers. In some implementations, the one or more performance parameters may be updated based on latency information provided by the user device, wherein the latency information indicates the time it takes for data to travel from one of the plurality of content servers to the user device.
[0011] In some examples, the first content server may be different from the second content server. In some implementations, these operations may further include, at the start of a playback session, receiving a master manifest request associated with the playback session, and, in response to the master manifest request, transmitting a list of uniform resource locators (URLs), each of which corresponds to a content rendition corresponding to a different bitrate.
[0012] According to another aspect of the subject matter described in the present application, there is provided a non-transitory recording medium storing a program, wherein the execution of the program causes one or more computing devices remote from a plurality of content servers to perform operations, the operations comprising: receiving a first request from a user device for a first set of data segments of streaming content, identifying a first content server for delivering the first set of data segments based on information about one or more performance parameters of the plurality of content servers, transmitting a first response to the first request to the user device, the first response including a list of uniform resource locators (URLs) for obtaining the first set of data segments from the first content server, receiving a second request from the user device for a second set of data segments of streaming content, at the one or more computing devices, wherein the first request and the second request are received within the same content playback session, identifying a second content server for delivering the second set of data segments based on information about one or more performance parameters of the plurality of content servers, and transmitting a second response to the second request to the user device. The second response comprises a second list of URLs for obtaining a second set of data segments from a second content server.
[0013] Implementations according to this aspect may include one or more of the following features. For example, one or more computing devices may be configured to communicate with user devices located within a predefined geographic area.
[0014] In some implementations, the one or more performance parameters may include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the content servers. In some implementations, the one or more performance parameters may be updated based on latency information provided by the user device, wherein the latency information indicates the time it takes for data to travel from one of the plurality of content servers to the user device.
[0015] In some examples, the first content server may be different from the second content server. In some implementations, these operations may further include, at the start of a playback session, receiving a master manifest request associated with the playback session, and, in response to the master manifest request, transmitting a list of uniform resource locators (URLs), each of which corresponds to a content rendition corresponding to a different bitrate.
[0016] According to the present disclosure, delivery of streaming content from multiple content servers can be facilitated.
[0017] FIG. 1 is a diagram illustrating an example of a system for delivering streaming content from multiple content servers.
[0018] FIG. 2 is a diagram illustrating an example of a distributed system for delivering streaming content from multiple content servers.
[0019] Figure 3 is a flowchart illustrating an exemplary process for delivering streaming content from multiple content servers.
[0020] FIG. 4 is a diagram illustrating a computing system that may be used in connection with the computer-implemented methods described herein.
[0021] A traffic management module, such as a Global Traffic Manager (GTM), is often used to manage the delivery of streaming content (e.g., live video) from multiple content servers (also referred to herein as content delivery networks (CDNs)). This module ensures that user requests are efficiently routed to the appropriate CDN, thereby optimizing performance and resource utilization.
[0022] Typically, configuration changes to GTM, such as adjusting the percentage of traffic split between different CDNs, are performed by human operators. These operators are responsible for various tasks to ensure that GTM is properly set up, optimized, and maintained. Furthermore, a user device's association with a CDN is determined when the device sends its first request for content. GTM evaluates various performance metrics and other factors to select the appropriate CDN to serve the initial request. All subsequent requests from the same user device are pinned to the same CDN, resulting in a static mapping of the user to the CDN for the duration of the playback session. Such a static mapping of the CDN to the user device does not account for changes in network conditions throughout the playback session and, in some cases, can potentially lead to service degradation.
[0023] The present disclosure addresses the aforementioned issues by monitoring various performance parameters associated with content delivery from CDNs, thereby dynamically adjusting CDN allocations across a playback session to account for changing network conditions. This, in turn, can reduce the likelihood of performance degradation by seamlessly switching a user device from, for example, a degraded CDN to a different CDN that continues to meet performance criteria.
[0024] The present disclosure also relates to a distributed edge-compute-based architecture in which multiple local gateway devices coordinate among themselves to assign CDNs to different user devices while processing streaming requests from a corresponding subset of user devices. The distributed nature of the proposed architecture allows for dedicating more computing resources to processing requests from individual user devices, thereby enabling the scaling of complex security protocols. Furthermore, using the distributed architecture in conjunction with dynamic CDN allocation can automate traffic management across multiple CDNs, thereby enabling highly responsive content streaming that leads to superior user experiences.
[0025] FIG. 1 is a diagram illustrating an example of a system (100) for delivering streaming content from a plurality of content servers (131a, 131b, and 131c) (typically 131) to a plurality of user devices (121a, 121b, and 121c) (typically 121). The system (100) may include a gateway module (101) that coordinates the delivery of streaming content from the content servers (131) to the user devices (121). For example, streaming content (e.g., generated / originating from an origin server (141)) may be hosted on a plurality of content servers (131), from which the content is made available to the user devices. Thus, instead of accessing streaming content from a single source (e.g., an origin server (141)), which may, for example, cause overloading and / or bandwidth issues, user devices (121) may access streaming content from one of multiple content servers (131). Such distribution of content across multiple content servers may enable user devices (121) to access streaming content from content servers (131) that are not overloaded, thereby enabling reliable content delivery across a large number of user devices (121). The origin server (141) updates each of the content servers (131) as new content segments are generated.
[0026] The gateway module (101) is a network component configured to coordinate the delivery of streaming content to a user device (121) by instructing the particular user device to access content from one of a plurality of content servers (131) that the gateway module (101) deems appropriate for delivering the content requested by the particular user device. The gateway module (101) may operate at the DNS level to intercept requests for content originating from a particular user device and identify one of a plurality of content servers (131) that the gateway module (101) deems most appropriate for servicing the request—based on evaluating a number of factors, such as geographic location, current server load, network latency, and real-time server performance. For example, the gateway module (101) may dynamically determine, based on a request from a user device (121a), the optimal content server (e.g., 131b) that will minimize latency, reduce load times, and enhance the overall user experience by ensuring that content is delivered quickly and efficiently. Accordingly, the gateway module (101) may provide a notification to the corresponding user device (121a) to obtain the requested content from the content server (131b). This may be accomplished, for example, by providing the user device (121a) with a Uniform Resource Locator (URL) associated with the requested content hosted on the content server (131b). The gateway module (101) may continuously monitor the health and performance of multiple content servers (131) to determine an appropriate server to allocate for a particular request.
[0027] In some systems, an entity referred to as a gateway module (GTM) assigns a content server (131) to a user device (121) at the start of a playback session. However, once the GTM assigns a particular content server (131) to a user device (121), that assignment may remain unchanged throughout the entire playback session. In some cases, if issues arise during a playback session—for example, if the link between a particular content server and a particular user device degrades, or if a particular content server goes down—the streaming of content to a particular user device may be affected. Using a gateway module (101) as described herein, the assignment of content servers to a user device can be evaluated and adjusted even during a playback session, thereby enabling uninterrupted streaming throughout the playback session even if an adverse event occurs during the session. For example, the gateway module (101) may receive a first request from a user device (121a) for a first set of data segments of streaming content. The first request may be a request for a media manifest file, wherein the media manifest file includes a list of uniform resource locators (URLs) for obtaining the first set of data segments from a first content server. In some implementations, the gateway module (101) may identify a particular content server (e.g., 131c) that is deemed suitable for delivering the first set of data segments based on information about one or more performance parameters of the plurality of content servers (131). The one or more performance parameters may include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the plurality of content servers (131).By analyzing these parameters, the gateway module (101) can determine that the content server (131c) is the optimal choice for delivering the first set of data segments. Accordingly, the gateway module (101) can provide the user device (121a) with one or more URLs that can be used to access the first set of data segments hosted on the identified content server (131c).
[0028] In some implementations, performance parameters associated with the delivery of content corresponding to a first set of data segments from an identified content server (131c) to a user device (121a) are tracked and updated. Based on updated information about one or more performance parameters, the gateway module (101) can identify a different content server (e.g., 131b) to deliver a second set of data segments requested by the user device (121a) within the same playback session. For example, when the gateway module (101) receives a second request from the user device (121a) for a second set of data segments of streaming content, the gateway module (101) can identify a second content server (131b) to deliver the second set of data segments, wherein the first request and the second request are received within the same content playback session. In some implementations - for example, when performance parameters do not identify any issues during delivery of content corresponding to the first set of data segments - the first content server (in this example, 131c) may also be identified to deliver the second set of data segments.
[0029] The gateway module (101) may transmit a second response to the second request to the user device (121a), wherein the second response includes a second list of URLs for obtaining a second set of data segments from the second content server (131c). Subsequently, the user device (121) may request content corresponding to the second set of data segments from the second content server (131c).
[0030] Thus, by monitoring performance parameters associated with content delivery from multiple content servers (131), the gateway module (101) can dynamically adjust content server assignments across a playback session to account for changing network conditions. This, in turn, can reduce the likelihood of performance degradation by seamlessly switching a user device (121) from, for example, a degraded content server to a different content server that continues to meet performance criteria.
[0031] User devices (121) may include smartphones, tablets, laptops, or smart TVs, which are endpoints equipped with a web browser or a dedicated streaming application and interact with the gateway module (101) to receive streaming content from multiple content servers (131). The interaction between the user device (121) and the content server (131) may occur over multiple steps. In some implementations, when a user initiates a request to access streaming content, the corresponding user device (121) may transmit a DNS query, which is intercepted by the gateway module (101). For example, the user device (121) may transmit a request for a master manifest file during a playback session of the streaming content. In response to the request for the master manifest file, the gateway module (101) may transmit a master manifest file to the user device (121) that provides one or more available stream variants during the playback session. In some implementations, each variant corresponds to a different bitrate or resolution.
[0032] In some implementations, the user device (121) parses the master manifest file to understand its structure and contents. This process may involve, for example, parsing metadata within the manifest, which includes detailed information about available streaming variants. Each variant may have a unique URL and properties such as format, resolution, bitrate, and codec information. The user device (121) can extract this information and compile a list of all available streaming variants. The user device (121) can evaluate variants based on several factors, including current network conditions, device capabilities, and user preferences. For example, if the user device (121) is on a high-speed Wi-Fi connection and supports high-definition playback, the user device (121) may prioritize selecting a higher resolution, higher bitrate variant for optimal video quality. Conversely, if network bandwidth is limited, for example on a mobile data connection, the user device (121) may select a lower bitrate variant to prevent buffering and ensure a smooth playback experience.
[0033] After evaluating the available options, the user device (121) may select the most suitable streaming variant and send a request for a media manifest file corresponding to the selected variant to the gateway module (101). Subsequently, as discussed above, the gateway module (101) may identify a content server (131) for delivering data segments of the selected variant and send a response including a list of URLs for retrieving a set of data segments from the identified content server (131).
[0034] In some implementations, the user device (121) may determine from which content server the user device (121) will receive the first set of data segments. For example, the user device (121) may determine, based on a list of URLs received from the gateway module (101), that the user device (121) will request the first set of data segments from a first content server (131c) among the plurality of content servers (131).
[0035] The multiple content servers (131) may be implemented as distributed network nodes designed to deliver digital content to users with high availability and performance. These servers may cache copies of content, such as web pages, images, videos, and other media, and serve them to users from locations geographically closer to the user than the origin server (141). By reducing the physical distance between the server and the user, the content servers can significantly reduce latency, decrease load times, and improve the overall user experience.
[0036] When a content server (131) receives a request for content from a user device (121), the content server (131) can parse the request (e.g., by parsing the URL) to determine which specific data segment is being requested. Subsequently, the content server (131) can check its local cache to see if the requested data segment is already stored. If the data segment is found in the local cache (a cache hit), the content server can serve the segment to the user device (121). If the data segment is not in the cache (a cache miss), the content server (131) can be configured to fetch it from the origin server (141). For example, if the data segment is not available in the local cache, the content server (131) can forward the request to the origin server (141) where the content is initially hosted. The origin server (141) can respond to the content server's request by transmitting the requested data segment. In some implementations, the origin server may be configured to provide the requested data segment directly to the requesting user device—potentially in addition to also providing the data segment to the corresponding content server for storage in its cache. The content server (131) may cache the received data segment for future requests, thereby reducing the load and latency on the origin server (141) for subsequent requests and delivering the requested data segment to the user device (121).
[0037] The user device (121) may transmit information regarding the performance of data transmission from the content server (131). For example, the user device (121) may provide latency information indicating the time for data to travel from the content server (131) to the user device (121). The content server (131) may update information regarding one or more performance parameters of the plurality of content servers (131, 132, and 133) based on the latency information received from the user device (121). In some implementations, the content server (131) may forward the latency information to the gateway module (101) to update information regarding one or more performance parameters of the plurality of content servers (131).
[0038] In some implementations, a distributed system of multiple gateway modules (101) may be used to further improve streaming content delivery. FIG. 2 is a diagram illustrating an example of such a distributed system (200) for delivering streaming content from multiple content servers (131). In some implementations, instead of all user devices (121) within a network communicating with a single gateway module (101), subsets of the user devices (121) may be configured to communicate with one or more of the multiple gateway modules (101). For example, the gateway modules (101a, 101b, 101c, and 101d) (generally 101) may be implemented as edge computing nodes of one or more computing devices, each of which is configured to communicate with a subset of the user devices (121) within the network. For example, the gateway module (101a) may communicate with a first set of user devices (121a and 121b) to facilitate delivery of streaming content, while the gateway module (101b) may communicate with a second set of user devices, including a user device (121c).
[0039] Assignment of a subset of user devices (121) to a gateway module (101) may be accomplished in various ways. In some implementations, assignment may be based on geographic locations. For example, gateway modules (101) may be configured to serve distinct geographic locations and communicate with user devices (121) located within those locations. In some implementations, assignment may be based on other logical groupings. For example, user devices associated with a particular organization may be assigned to a particular gateway module. In another example, high-priority users may be assigned to a gateway module that only serves a predetermined number of user devices.
[0040] The gateway modules (101a-101d) may perform operations substantially similar to those described with respect to the gateway module (101) in FIG. 1 . For example, each gateway module may receive a request from a user device for a set of data segments of streaming content, identify a content server to deliver the set of data segments based on information about one or more performance parameters, and transmit a response to the request to the user device, the response including a list of URLs for obtaining the set of data segments from one of the plurality of content servers. In some implementations, the gateway modules (101a-101d) may be configured to assign multiple content servers to a user device over the course of a single playback session. In some implementations, the gateway modules may be configured to maintain the content server assignments unchanged over the course of a playback session.
[0041] In some implementations, the gateway modules (101) may be configured to authenticate corresponding user devices (121) prior to streaming content to the devices. For example, the user device initially authenticates with an authorization server using credentials (e.g., a username and password). Upon successful authentication, the gateway module (101) may issue an authorization token containing encoded information such as the user's identity, expiration time, and permissions. The user device may securely store this bearer token in memory or secure storage to protect against unauthorized access. For subsequent requests from user devices to receive data segments of the streaming content, the user device may include the bearer token in the HTTP authorization header of each request. Upon receiving a request with a bearer token, the gateway module (101) may validate the token by checking its integrity and authenticity, which may involve verifying the token's signature and ensuring that it has not expired. In some implementations, the gateway module (101) may check the claims of the token to ensure that the user device has the necessary permissions to access the requested data. If the token is valid and the user device has the necessary permissions, the gateway module (101) may process the request and return an appropriate response. For example, the gateway module (101) may process a request from the user device for a set of data segments of streaming content, and, if the token is valid and the user device has the necessary permissions, return a response including a list of uniform resource locators (URLs) for retrieving the set of data segments from one of a plurality of content servers (131).If the token is invalid or expired, or if the user device lacks the required permissions, the gateway module (101) may be configured to deny access and send a response accordingly.
[0042] A distributed system of gateway modules (101)—as illustrated in FIG. 2—can offer several technical advantages. For example, in instances where security is provided by gateway modules, such a distributed system potentially allows for more computing resources to be dedicated to processing requests from individual user devices, thereby enabling the scaling of complex security protocols. By performing the authorization process within the gateway modules, requests from user devices can be terminated at the gateway module closest to the user device, rather than requiring a central module to perform authorization for all requests. Additionally, the distributed system of gateway modules itself can be scalable, allowing for the addition of new gateway modules as more user devices are added to the network. This, in turn, allows for the scaling of the overall streaming system, allowing an arbitrarily large number of user devices to access the streaming service with potentially negligible or no degradation in service. A distributed system of gateway modules (101) may also enable scalable and customizable allocation of computing resources - for example, as a function of the number of user devices assigned to corresponding gateway modules - thereby enabling a flexible, scalable, and high-performance streaming platform configured to service a large number of user devices.
[0043] In some implementations, the system (200) includes a centralized performance tracker (201) that tracks performance parameters affecting content delivery from the content servers (131). For example, the performance tracker (201) may receive, from a plurality of content servers (131), one or more performance parameters associated with content delivery from the plurality of content servers and update information accordingly. In some implementations, the performance tracker (201) may forward information about the one or more performance parameters to the gateway modules (101), such that the gateway modules (101) may identify a content server to deliver the requested set of data segments based on the information.
[0044] FIG. 3 is a flowchart illustrating an exemplary process (300) for delivering streaming content from multiple content servers (131). As discussed above with respect to FIGS. 1 and 2 , at least a portion of the process (300) may be performed by various elements of the system (100) or distributed system (200).
[0045] The operations of the process (300) may include receiving (310) a first request from a user device for a first set of data segments of streaming content. For example, the gateway module (101) may receive a request for a media manifest file comprising a list of uniform resource locators (URLs) for obtaining the first set of data segments from a content server. In some implementations, the gateway module (101) may receive a request for a master manifest file from the user device (121) during a playback session of the streaming content. In response to the request for the master manifest file, the gateway module (101) may transmit to the user device (121) a master manifest file providing one or more available stream variants during the playback session. For example, each variant may correspond to a different bitrate or resolution. The media manifest file may correspond to a variant selected by the user device (121).
[0046] The operations of the process (300) may include identifying (320) a first content server to deliver a first set of data segments based on information about one or more performance parameters of the plurality of content servers. For example, the gateway module (101) may receive information about one or more performance parameters from the plurality of content servers (131), including at least one of bandwidth availability, data transmission latency, server load, cache hit ratio, or error rate of each of the plurality of content servers (131). The gateway module (101) may receive information about one or more performance parameters from the performance tracker (201).
[0047] The operations of process (300) also include transmitting a first response to the first request to the user device, wherein the first response comprises a list of Uniform Resource Locators (URLs) for obtaining a first set of data segments from a first content server (330). In some implementations, the first response may be a response to a media manifest file. The operations of process (300) also include receiving a second request for a second set of data segments of streaming content from the user device, wherein the first request and the second request are received within the same content playback session (340), and identifying a second content server to deliver the second set of data segments based on information about one or more performance parameters of the plurality of content servers (350). In some implementations, the content server may update information about the one or more performance parameters based on information about the performance of the data delivery received from the user device. For example, the user device (121) may provide latency information indicating the time it takes for data to travel from the content server (131) to the user device (121). In some implementations, the content server (131) may forward the latency information to the gateway module (101) to update information about one or more performance parameters.
[0048] In some implementations, the gateway module (101) may receive information about one or more performance parameters of a plurality of content servers from the performance tracker (201). For example, the performance tracker (201) receiving one or more performance parameters from the plurality of content servers may update the information accordingly and forward the updated information to the gateway module (101). In some implementations, the performance tracker (201) may forward one or more performance parameters received from the plurality of content servers to the gateway module (101), so that the gateway module (101) may update information about the one or more performance parameters.
[0049] The operations of the process (300) include transmitting a second response to the second request to the user device, wherein the second response includes a second list of URLs for obtaining a second set of data segments from a second content server (360). In this way, the data segments are received from multiple content servers within the same playback session, thereby enabling service degradation associated with one or more of the multiple content servers within the same playback session to be accounted for.
[0050] FIG. 4 illustrates an example of a computing device (400) and a mobile computing device (450) (also referred to herein as a wireless device) employed to implement implementations of the present disclosure. The computing device (400) is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The mobile computing device (450) is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smartphones, AR devices, and other similar computing devices. The components, their connections and relationships, and their functions depicted herein are intended to be examples only and not limiting. The computing device (400) and / or the mobile computing device (450) may form at least a portion of the application installation environment described above.
[0051] A computing device (400) includes a processor (402), memory (404), storage device (406), a high-speed interface (408), and a low-speed interface (412). In some implementations, the high-speed interface (408) is coupled to the memory (404) and a plurality of high-speed expansion ports (410). In some implementations, the low-speed interface (412) is coupled to the low-speed expansion port (414) and the storage device (404). Each of the processor (402), memory (404), storage device (406), high-speed interface (408), high-speed expansion ports (410), and low-speed interface (412) may be interconnected using various buses and may be mounted on a common motherboard or in other manners as appropriate. The processor (402) may process instructions for execution within the computing device (400), including instructions stored in the memory (404) and / or on the storage device (406), to display graphical information for a graphical user interface (GUI) on an external input / output device, such as a display (416) coupled to a high-speed interface (408). In other implementations, multiple processors and / or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Additionally, multiple computing devices may be connected, each providing portions of the required operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
[0052] Memory (404) stores information within the computing device (400). In some implementations, memory (404) is a volatile memory unit or units. In some implementations, memory (404) is a non-volatile memory unit or units. Memory (404) may also be another form of computer-readable media, such as a magnetic or optical disk.
[0053] The storage device (406) may provide mass storage for the computing device (400). In some implementations, the storage device (406) may be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, a tape device, flash memory, or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configurations. The instructions may be stored on an information carrier. The instructions, when executed by one or more processing devices, such as the processor (402), perform one or more methods, such as those described above. The instructions may also be stored by one or more storage devices, such as computer-readable or machine-readable media, such as memory (404), the storage device (406), or memory on the processor (402).
[0054] The high-speed interface (408) manages bandwidth-intensive operations for the computing device (400), while the low-speed interface (412) manages less bandwidth-intensive operations. Such an allocation of functions is merely exemplary. In some implementations, the high-speed interface (408) is coupled to memory (404), a display (416) (e.g., via a graphics processor or accelerator), and high-speed expansion ports (410) that may accommodate various expansion cards. In an implementation, the low-speed interface (412) is coupled to the storage device (406) and the low-speed expansion ports (414). The low-speed expansion port (414), which may include various communication ports (e.g., Universal Serial Bus (USB), Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input / output devices. Such input / output devices may include a scanner, a printing device, or a keyboard or mouse. Input / output devices may also be coupled to a low-speed expansion port (414) via a network adapter. Such network input / output devices may include, for example, a switch or a router.
[0055] The computing device (400) may be implemented in a number of different forms, as illustrated in FIG. 4. For example, it may be implemented multiple times as a standard server (420) or as a group of such servers. Additionally, it may be implemented as a personal computer, such as a laptop computer (422). It may also be implemented as part of a rack server system (424). Alternatively, components from the computing device (400) may be combined with other components in a mobile device, such as a mobile computing device (450). Each of such devices may include one or more of the mobile computing device (450) and the computing devices (400), and the overall system may consist of multiple computing devices communicating with each other. The computing device (400) may be implemented with a plurality of content servers (131, 132, and 133), an origin server (141), gateway modules (111, 112, 113, and 114), and a performance tracker (201) described with respect to FIGS. 1 to 3.
[0056] The mobile computing device (450) includes, among other components, a processor (452); memory (464); an input / output device, such as a display (454); a communication interface (466); and a transceiver (468). The mobile computing device (450) may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of the processor (452), memory (464), display (454), communication interface (466), and transceiver (468) may be interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate. In some implementations, the mobile computing device (450) may also include camera device(s) (not shown).
[0057] The processor (452) may execute instructions within the mobile computing device (450), including instructions stored in the memory (464). The processor (452) may be implemented as a chipset of chips that include separate and multiple analog and digital processors. For example, the processor (452) may be a Complex Instruction Set Computers (CISC) processor, a Reduced Instruction Set Computer (RISC) processor, or a Minimal Instruction Set Computer (MISC) processor. The processor (452) may also provide for the coordination of other components of the mobile computing device (450), such as, for example, wireless communications by the mobile computing device (450), and / or control of applications, user interfaces (UIs) executed by the mobile computing device (450).
[0058] The processor (452) may communicate with a user via a display interface (456) and a control interface (458) coupled to a display (454). The display (454) may be, for example, a Thin-Film-Transistor Liquid Crystal Display (TFT) display, an Organic Light Emitting Diode (OLED) display, or other suitable display technology. The display interface (456) may include suitable circuitry for driving the display (454) to present graphics and other information to the user. The control interface (458) may receive commands from the user and convert them for submission to the processor (452). Additionally, an external interface (462) may provide communication with the processor (452) to enable short-range communication between the mobile computing device (450) and other devices. The external interface (462) may, for example, provide wired communication in some implementations, or wireless communication in other implementations, and multiple interfaces may also be used.
[0059] Memory (464) stores information within the mobile computing device (450). Memory (464) may be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory (474) may also be provided and connected to the mobile computing device (450) via an expansion interface (472), which may include, for example, a Single in Line Memory Module (SIMM) card interface. Expansion memory (474) may provide extra storage space for the mobile computing device (450), or may also store applications or other information for the mobile computing device (450). In particular, expansion memory (474) may include instructions for performing or supplementing the processes described above, and may also include security information. Thus, for example, the expansion memory (474) may be provided as a security module for the mobile computing device (450) and may be programmed with instructions that allow secure use of the mobile computing device (450). Additionally, security applications may be provided via the SIMM cards along with additional information, such as placing identification information on the SIMM card in an unhackable manner.
[0060] The memory may include, for example, flash memory and / or non-volatile random access memory (NVRAM), as discussed below. In some implementations, the instructions are stored on an information carrier. The instructions, when executed by one or more processing devices, such as the processor (452), perform one or more methods, such as those described above. The instructions may also be stored by one or more storage devices, such as one or more computer-readable or machine-readable media, such as memory (464), expansion memory (474), or memory on the processor (452). In some implementations, the instructions may be received as a propagated signal, such as via the transceiver (468) or the external interface (462).
[0061] The mobile computing device (450) may communicate wirelessly via a communication interface (466), which may include digital signal processing circuitry, if desired. The communication interface (466) may provide communications under various modes or protocols, such as Global System for Mobile communications (GSM) voice calling, Short Message Service (SMS), Enhanced Messaging Service (EMS), Multimedia Messaging Service (MMS) messaging, code division multiple access (CDMA), time division multiple access (TDMA), Personal Digital Cellular (PDC), Wideband Code Division Multiple Access (WCDMA), CDMA2000, and General Packet Radio Service (GPRS). Such communication may occur, for example, via a transceiver (468) using radio frequencies. Additionally, short-range communications, such as using Bluetooth or Wi-Fi, may occur. Additionally, a Global Positioning System (GPS) receiver module (470) may provide additional navigation and location-related wireless data to the mobile computing device (450), which may be utilized as appropriate by applications running on the mobile computing device (450).
[0062] The mobile computing device (450) may also communicate audibly using an audio codec (460), which may receive spoken information from a user and convert it into usable digital information. The audio codec (460) may likewise generate audible sounds to the user, such as through a speaker, for example, in the handset of the mobile computing device (450). Such sounds may include sounds from voice telephone calls, recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications running on the mobile computing device (450).
[0063] The mobile computing device (450) may be implemented in a number of different forms, as illustrated in FIG. 4. For example, it may be implemented as the user devices (121, 122, and 123) described with reference to FIGS. 1 through 3. Other implementations may include a phone device (482) and a tablet device (484). The mobile computing device (450) may also be implemented as a component of a smartphone, a personal digital assistant, an AR device, or other similar mobile device.
[0064] The computing device (400 and / or 450) may also include USB flash drives. The USB flash drives may store operating systems and other applications. The USB flash drives may include input / output components, such as a USB connector or a wireless transmitter, that may be inserted into a USB port of another computing device.
[0065] Although several implementations have been described in detail above, other modifications may be made without departing from the scope of the inventive concepts described herein, and thus, other implementations are within the scope of the following claims.
Claims
1. A method for facilitating the delivery of streaming content from multiple content servers, Receiving a first request for a first set of data segments of said streaming content from a user device at one or more computing devices remote from said content servers; identifying a first content server for delivering the first set of data segments based on information about one or more performance parameters of the plurality of content servers; A step of transmitting a first response to the first request to the user device, the first response comprising a list of uniform resource locators (URLs) for obtaining the first set of data segments from the first content server; Receiving a second request for a second set of data segments of said streaming content from a user device at said one or more computing devices, wherein said first request and said second request are received within the same content playback session; identifying a second content server for delivering a second set of data segments based on information about one or more performance parameters of the plurality of content servers; and A step of transmitting a second response to the second request to the user device Including, A method wherein the second response comprises a second list of URLs for obtaining a second set of data segments from the second content server.
2. In paragraph 1, A method wherein said one or more computing devices are configured to communicate with user devices located within a predefined geographic area.
3. In paragraph 1, A method wherein the one or more performance parameters include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the content servers.
4. In paragraph 1, A method wherein said one or more performance parameters are updated based on latency information provided by said user device, said latency information indicating a time for data to travel from one of said plurality of content servers to said user device.
5. In paragraph 1, The method wherein the first content server is different from the second content server.
6. In paragraph 1, At the start of the playback session, receiving a master manifest request associated with the playback session; and In response to the above master manifest request, a step of transmitting a list of uniform resource locators (URLs), each corresponding to a content rendition corresponding to a different bitrate. A method further comprising:
7. A distributed system for facilitating the delivery of streaming content from multiple content servers. The above distributed system: A gateway module implemented using one or more computing devices. Including, The gateway module is configured to communicate with a set of user devices remotely in relation to the content servers to facilitate delivery of streaming content to the set of user devices, The above gateway module is configured to perform operations, wherein the operations are: An operation of receiving a first request for a first set of data segments of said streaming content from a user device; An operation of identifying a first content server for delivering a first set of data segments based on information about one or more performance parameters of said plurality of content servers; An action of transmitting a first response to the first request to the user device, the first response comprising a list of uniform resource locators (URLs) for obtaining a first set of data segments from the first content server; An operation of receiving a second request from a user device for a second set of data segments of said streaming content, wherein said first request and said second request are received within the same content playback session; An operation of identifying a second content server for delivering a second set of data segments based on information about one or more performance parameters of the plurality of content servers; and An action of transmitting a second response to the second request to the user device. Including, A distributed system, wherein the second response comprises a second list of URLs for obtaining a second set of data segments from the second content server.
8. In paragraph 7, A distributed system wherein the gateway module is configured to communicate with user devices located within a predefined geographic area.
9. In paragraph 7, A distributed system, wherein the one or more performance parameters include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of the content servers.
10. In paragraph 7, A distributed system wherein said one or more performance parameters are updated based on latency information provided by said user device, said latency information indicating the time for data to travel from one of said plurality of content servers to said user device.
11. In paragraph 7, A distributed system wherein the first content server is different from the second content server.
12. In paragraph 7, The above actions are: At the start of said playback session, the action of receiving a master manifest request associated with said playback session; and In response to the above master manifest request, an action of transmitting a list of uniform resource locators (URLs), each corresponding to a content rendition corresponding to a different bitrate. A distributed system that includes more.
13. As a non-transitory storage medium that stores the program, Execution of the above program causes one or more remote computing devices to perform operations in relation to a plurality of content servers, said operations comprising: An act of receiving a first request from a user device for a first set of data segments of streaming content; An operation of identifying a first content server for delivering a first set of data segments based on information about one or more performance parameters of said plurality of content servers; An action of transmitting a first response to the first request to the user device, the first response comprising a list of uniform resource locators (URLs) for obtaining a first set of data segments from the first content server; An operation of receiving a second request from a user device to the one or more computing devices for a second set of data segments of the streaming content, wherein the first request and the second request are received within the same content playback session; An operation of identifying a second content server for delivering a second set of data segments based on information about one or more performance parameters of the plurality of content servers; and An action of transmitting a second response to the second request to the user device. Including, A non-transitory storage medium, wherein the second response comprises a second list of URLs for obtaining a second set of data segments from the second content server.
14. In paragraph 13, A non-transitory recording medium, wherein said one or more computing devices are configured to communicate with user devices located within a predefined geographic area.
15. In paragraph 13, A non-transitory recording medium, wherein said one or more performance parameters include at least one of bandwidth availability, data transfer latency, server load, cache hit ratio, or error rate of each of said content servers.
16. In paragraph 13, A non-transitory recording medium wherein said one or more performance parameters are updated based on latency information provided by said user device, said latency information indicating the time for data to travel from one of said plurality of content servers to said user device.
17. In paragraph 13, The first content server is a non-transitory recording medium different from the second content server.
18. In paragraph 13, The above actions are: At the start of said playback session, the action of receiving a master manifest request associated with said playback session; and In response to the above master manifest request, an action of transmitting a list of uniform resource locators (URLs), each corresponding to a content rendition corresponding to a different bitrate. A non-transitory recording medium further comprising:
Citation Information
Patent Citations
System and method for sequential multimedia streaming using redirected URL of distributed contents
KR1020100055296A
Method for switching adaptive streaming server
KR102019654B1
Walking stick
KR1020250120760A
DNS request obfuscation
US20240205194A1
Providing third-party dynamic content within adaptive streaming video
US20240223637A1