Determining Session-Based Adaptive Playback Profiles for Video Streaming

Through the adaptive profile ladder system, the video streaming configuration is dynamically adjusted according to the network conditions, which solves the problem that the fixed profile ladder cannot adapt to the network conditions of different clients, and improves playback stability and quality.

JP7626399B2Active Publication Date: 2025-02-07HULU LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2021177591
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-11-02
Filing Date
2021-10-29
Publication Date
2025-02-07
Estimated Expiration
2041-10-29

AI Technical Summary

Technical Problem

In the existing video streaming system, the fixed profile ladder cannot be optimized according to the network conditions of different clients, resulting in poor playback experience and may cause buffering or download failures.

Method used

Adaptive profile ladder system is adopted to dynamically adjust the profile ladder by predicting network conditions, and select the video playback configuration that is most suitable for the current network situation, including adding or removing different bitrates and quality levels.

Benefits of technology

Improves the stability and quality of video playback, reduces buffering time, and optimizes the playback experience under different network conditions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007626399000002
    Figure 0007626399000002
  • Figure 0007626399000003
    Figure 0007626399000003
  • Figure 0007626399000004
    Figure 0007626399000004
Patent Text Reader

Abstract

To provide a method and storage medium that provide a profile ladder for optimizing the playback experience to a client.SOLUTION: A method receives session features for a session associated with a request for a video from a client and predicts network conditions for the session using the session features. A subset of available profiles is selected based on the network conditions. The available profiles are associated with a different playback characteristic. The method provides a profile ladder that includes the subset of available profiles for the playback of the video to the client. The profile ladder restricts the client to using the subset of available profiles to request segments of the video during the session.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Background technology]

[0002] In video streaming, a profile ladder lists various profiles that are available for a client to use when streaming a segment of a video. Each profile may be associated with a different level, such as a different level of bitrate. Thus, when network conditions are good, the client may request a profile with a higher bitrate. Conversely, when network conditions are poor, the client may request a profile with a lower bitrate. When good network conditions are experienced, the video delivery system may want to provide the client with a video profile with a higher bitrate, which improves the quality of the video being streamed. When poor network conditions are experienced, the video delivery system may want to provide the client with a profile with a lower bitrate, which allows the client to play the video without any playback issues, such as rebuffering or failed downloads.

[0003]

[0002] The profile ladder may be the same for all sessions for a client on a platform. For example, all mobile clients on a mobile device platform may receive the same profile ladder. Using the same profile ladder may not provide optimal playback conditions because different mobile clients may experience different network conditions. For example, if the available network bandwidth exceeds the bitrate of the highest profile in the profile ladder, the client is not receiving the highest possible quality video that can be played over the available bandwidth. Also, if the available network bandwidth is lower than the minimum bitrate of the lowest profile in the profile ladder, the client may experience rebuffering because there is not enough available network bandwidth to stream the video at the lowest bitrate provided by the lowest profile in the profile ladder. Thus, the profiles in the profile ladder do not optimize the playback experience for the client. Summary of the Invention

[0004]

[0003] In the following discussion, particularly with reference to the drawings, it is emphasized that the details shown represent examples for the purpose of illustrative discussion and are presented to provide a description of the principles and conceptual aspects of the present disclosure. In this regard, no attempt has been made to show implementation details beyond those necessary for a basic understanding of the present disclosure. The following discussion, together with the drawings, will make clear to those skilled in the art how embodiments according to the present disclosure can be implemented. Similar or identical reference numbers may be used to identify or otherwise refer to similar or identical elements in the various drawings and supporting descriptions. In the accompanying drawings, the following is as follows: [Brief description of the drawings]

[0005] [Figure 1]

[0004] FIG. 1 illustrates a simplified system for generating an adaptive profile ladder, according to some embodiments. [Diagram 2] 1 is a simplified flowchart of a method for predicting a profile subset, according to some embodiments. [Diagram 3]

[0006] FIG. 2 illustrates a more detailed example of a profile prediction system, according to some embodiments. [Figure 4]

[0007] 4A-4D illustrate examples of different profile subsets that may be selected for a profile ladder, according to some embodiments. [Diagram 5]

[0008] FIG. 1 illustrates an example of training a profile prediction system, according to some embodiments. [Figure 6]

[0009] 4 illustrates a more detailed example of network metric prediction, according to some embodiments. [Figure 7]

[0010] FIG. 13 illustrates an example of using a predictive model to generate profile subset decisions, according to some embodiments. [Figure 8]

[0011] 1 is a simplified flowchart of a method for selecting a profile subset, according to some embodiments. [Figure 9]

[0012] 1 is a simplified flowchart of a method for adapting a profile ladder during a playback session, according to some embodiments. [Figure 10]

[0013] 4A-4C show examples of adding lower bit rates for profiles to a profile ladder according to some embodiments. [Figure 11]

[0014] FIG. 1 illustrates a video streaming system in communication with multiple client devices over one or more communication networks, according to one embodiment. [Figure 12]

[0015] A diagram of a device for viewing video content and advertisements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0006]

[0016] Described herein are techniques for video streaming systems. In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of some embodiments. Some embodiments, as defined by the claims, may include some or all of the features in these examples alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.

[0007]

[0017] A video delivery system may use an adaptive profile ladder that can be dynamically adapted, such as on a per-session basis. A profile prediction system may predict network conditions for a session before the session begins. The profile prediction system then uses the predicted network conditions to select a profile ladder for the session. And, during playback, if the network conditions change from the predicted network conditions, an in-session profile adapter may adjust the profile ladder accordingly, such as by adding a lower profile with a lower bitrate or a higher profile with a higher bitrate.

[0008]

[0018] Using an adaptive profile ladder may improve video playback. For example, predicting network conditions and adapting the profile ladder to those predicted network conditions may provide the client with a profile that is more suitable for network conditions that may be experienced during a current session. Thus, the video delivery system adaptively computes a profile ladder for each session for different clients instead of using a fixed profile ladder for the client, such as for each platform (e.g., mobile device platform, living room device platform, etc.). In this case, the video delivery system may adapt the profile ladder for clients on the same platform and also for clients on different platforms. Because different sessions may experience different network conditions, the adaptive profile ladder may include a profile that is more suitable for the network conditions that may be experienced in each session. Also, if network conditions change, the in-session profile adapter can adapt to these changing network conditions to add different profiles that may be more appropriate or remove profiles that may no longer be appropriate. Thus, video playback may be resilient to changes in network conditions.

[0009]

[0019] System Overview

[0020] FIG. 1 illustrates a simplified system 100 for generating an adaptive profile ladder, according to some embodiments. The system 100 includes a video delivery system 102, a client 104, and a content delivery network 106. The video delivery system 102, the content delivery network 106, and the client 104 may be implemented using one or more computing devices. Also, while a single example of the video delivery system 102, the content delivery network 106, and the client 104 is shown, it will be understood that the system 100 may include multiple video delivery systems 102, the content delivery network 106, and / or the client 104. For example, the video delivery system 102 may communicate with multiple clients 104, the content delivery network 106 may send video to the client 104 via multiple servers, and so on. Also, while the video delivery system 102, the content delivery network 106, and the client 104 are shown as separate entities, the functions performed by them may be distributed among them or to other entities.

[0010]

[0021] The video delivery system 102 may provide a video delivery service that allows a client 104 to request video, such as video on demand or live video from live television. The video delivery system 102 may provide an application that is displayed in an interface 112 at the client 104. A user account may log on to the application to access the video delivery service. The video delivery system 102 may then receive the video request from the client 104 and process the video request to allow the client 104 to stream the video.

[0011]

[0022] The client 104 may include a computing device capable of playing a video in the interface 112, such as via a media player (not shown). The client 104 may include a mobile phone, a smartphone, a set-top box, a television, a living room device, a tablet device, etc. The client 104 may operate on a platform, which may be categorized by the type of device that operates on the platform. For example, the platform includes a mobile device platform, a living room device platform, etc. A user account used by a user may use the client 104 to access a video delivery service. For example, the user account may log into the video delivery service to identify information about the user account. When the client 104 receives a request for a video from the user account, the client 104 may send a video request to the video delivery system 102 for the video.

[0012]

[0023] The content delivery network 106 includes servers that can deliver video to the client 104. For example, the content delivery server system 116 may include one or more servers that can deliver video to the client 104. In some embodiments, the content delivery server system 116 delivers segments of video to the client 104. The segments may be portions of the video, such as six seconds of the video. As is known, a video may be encoded with multiple profiles that correspond to different levels, which may be different levels of bitrate and / or quality. The client 104 may request a segment of video from one of the profile levels based on the current playback situation. For example, the client 104 may use an adaptive bitrate algorithm to select a profile for the video based on the current available bandwidth and other network conditions.

[0013]

[0024] In the process to initiate playback of a video, the video delivery system 102 may receive a request for the video from the client 104. The video delivery system 102 may select a content delivery network 106 and provide information to the content delivery network 106 and / or the client 104 to enable the video to be streamed between the content delivery network 106 and the client 104. The video delivery system 102 may also provide various information, such as a playback configuration and a media presentation description. The playback configuration may include available protocols for streaming, etc. The media presentation description may include information about available profiles, segment durations, and other characteristics of the video.

[0014]

[0025] The video delivery system 102 adaptively determines a profile ladder to be used in a session to stream video between the content delivery network 106 and the client 104. The profile ladder includes profiles that are available to the client 104 for requesting in a session. The profiles can be categorized at various levels, and each level can be associated with a different characteristic. For example, each level can be associated with a different bitrate, such as 400 kilobytes per second (kbps), 650 kbps, 1000 kbps, 1500 kbps, ... 12000 kbps. However, the levels can be associated with characteristics other than bitrate, such as quality characteristics (e.g., resolution). In some embodiments, the level can be determined based on how the video is encoded for that level, such as the video is encoded at the 400 kbps level for a profile associated with 400 kbps.

[0015]

[0026] In some embodiments, there may be X profiles available, such as 12 profiles, but only a subset of those profiles, such as 7, may be used during a session. While these numbers of profiles are discussed, it will be understood that a variety of numbers of profiles may be available and / or the subsets may include a variety of numbers of profiles. Thus, since only a subset of the profiles is used, it is important to provide the client 104 with a selection of profiles in the profile ladder that may be useful under the network conditions experienced by the client 104. The profile prediction system 108 generates a profile subset that is adapted for a session. Although generating an adaptive profile ladder is described for a session, an adaptive profile ladder may be applied to multiple sessions, such as to multiple requests for video from the same client, or to sessions with other clients. An adaptive profile ladder differs from a fixed ladder because an adaptive profile ladder is generated based on characteristics associated with the client 104. As discussed in more detail below, the profile prediction system 108 may predict network conditions for a session and then use the network conditions to generate a profile subset decision. The profile subset determination may identify a subset of the available profiles for inclusion in a profile ladder for the session. The video delivery system 102 may then provide the profile subset determination to the content delivery network 106 and / or the client 104.

[0016]

[0027] The content delivery network 106 may receive the video request and a profile ladder reflecting the profile subset decision. The manifest generator 114 may generate a manifest for the client 104. The manifest may list information about segments of the video that can be requested by the client 104 and any other information needed to play the segments of the video. The information may include links that the client 104 may use to request the segments for playback. In some embodiments, the manifest lists all available profiles for each segment, such as including a link for each profile for each segment. The client 104 may select one of the links to request playback of the segment.

[0017]

[0028] As discussed above, the profile ladder may limit the client 104 to a subset of profiles. Various methods may be used to enforce that restriction. For example, the manifest generator 114 may insert information into the manifest that identifies the profile subset in the profile ladder that can be used by the client 104. In other embodiments, the content delivery network 106 may send the profile ladder in other ways, such as in metadata or in a control channel. Also, the video delivery system 102 may send information about a subset of profiles in the profile ladder to the client 104, and the client 104 may then select only from the profiles in that subset. Thus, the profile ladder limits the profiles that the client 104 can request from the manifest, even if the manifest contains links to all profiles.

[0018]

[0029] In some embodiments, the logic of the content delivery network 106 may remain unchanged during the delivery of a segment as it receives a request for the segment for the respective profile. The client 104 determines which profiles in the profile ladder may be used and sends a request for those profiles. Restrictions may be applied at the client 104, not at the content delivery network 106. The content delivery network 106 may provide a manifest with all profiles and respond to a request for links without having to add or remove profiles from the manifest based on the adaptive profile ladder. However, the content delivery network 106 may provide a manifest with only a subset of the profiles provided in the profile ladder.

[0019]

[0030] When the client 104 receives the manifest, the client 104 can send a request for a segment associated with the profile. For example, the client 104 can select a link for a segment associated with a desired bitrate. The content delivery server system 116 can then send the segment of video for the requested profile to the client 104, which can then display the segment in a media player on the interface 112. As discussed above, the client 104 can change the profile requested for a segment based on current network conditions.

[0020]

[0031] Network conditions may change during a session. To adapt to the changing network conditions, the in-session profile adapter 110 may analyze the current network conditions experienced at the client 104 and determine whether the profile ladder should be adjusted. For example, the in-session profile adapter 110 may add a profile or remove a profile from the profile ladder. This adding or removing may force the client 104 to request a profile that may be better suited to the network conditions being experienced, or to not request a profile that is not best suited to the current conditions being experienced. If an inappropriate profile is included in the profile ladder, the client 104 may select an undesirable profile.

[0021]

[0032] Profile ladder prediction

[0033] When a video request is received, the profile prediction system 108 predicts a profile subset for use in the current session. Figure 2 shows a simplified flowchart 200 of a method for predicting a profile subset, according to some embodiments. At 202, the video delivery system 102 receives a request for video for a session. The request for video may include an identification of a user account and other information, such as device type, location, etc.

[0022]

[0034] At 204, the profile prediction system 108 may predict network metrics for the session. In some embodiments, the network metrics may include various metrics that describe aspects of the video delivery or playback, such as network bandwidth, rebuffer rate, and failure rate. The network bandwidth may be the available network bandwidth measured for the session, the rebuffer rate may be based on a measurement of the occurrence of rebuffering compared to successful playback of the segment being played, and the failure rate may be based on a measurement of the number of times a segment fails to download compared to successful download. Other network metrics may also be used.

[0023]

[0035] At 206, the profile prediction system 108 uses the network metrics to predict a subset of profiles for the profile ladder. The prediction may predict a subset of profiles from a list of available profiles. As discussed above, the client 104 may not be able to select all profiles from the entire list of available profiles; rather, a subset of the available profiles is selected for the profile ladder.

[0024]

[0036] At 208, the video delivery system 102 provides the profile ladder to the content delivery network 106 and / or the client 104. The profile ladder identifies a subset of the available profiles that can be used by the client 104 in a session.

[0025]

[0037] 3 shows a more detailed example of a profile prediction system 108 according to some embodiments. The profile prediction system 108 receives available profiles 306, which lists all profiles that may be used in the profile ladder. The profile levels are categorized as bitrates in this example, but may be categorized using various characteristics. As shown, the available profiles start with 200 kbps as the lowest bitrate and include profiles up to 12000 kbps as the highest bitrate. In this example, the available profiles 306 include 12 profiles, but various numbers of profiles may be available.

[0026]

[0038] In some embodiments, the profile prediction system 108 is subject to a limitation on the number of profiles that can be included in a profile ladder. For example, a profile ladder may be limited to seven profiles, but the limitation may limit the profile ladder to a different number of profiles. However, the limitation may be less than the number of available profiles.

[0027]

[0039] FIG. 4 illustrates examples of various profile subsets that may be selected for a profile ladder, according to some embodiments. Four profile subsets are illustrated as profile subset A 402-1, profile subset B 402-2, profile subset C 402-3, and profile subset D 402-4, although other profile subsets may be understood. Each profile subset 402 may differ in that, in some embodiments, a subset includes at least one different profile. The goal for the subsets may be to capture profiles that may be more suitable for the network conditions experienced at the client 104. For example, profile subset A 402-1 may include profiles that are biased toward lower bit rates, such as the lowest bit rate of 200 kbps included in profile subset A 402-1. Also, profile subset A 402-1 includes the highest bit rate profile of 4000 kbps. Profile subset A 402-1 may perform better when network conditions are predicted to have an available bandwidth lower than 4000 kbps.

[0028]

[0040] Profile subset B 402-2 may include some profiles that are more optimal for a slightly higher bitrate distribution than profile subset A 402-1. For example, the lowest bitrate in profile subset B 402-2 is 400 kbps. In this case, if the client 104 is experiencing a low bitrate at 200 kbps, the client 104 may not be able to switch to the 200 kbps profile and may experience rebuffering because the network bandwidth is less than the video bitrate. However, if the client 104 is experiencing an available bandwidth of more than 4000 kbps, the client 104 may choose between the 4500 kbps profile and the 8000 kbps profile.

[0029]

[0041] Profile subset C 402-3 includes profiles that may be optimal for a client 104 experiencing a higher available bandwidth than profile subset B 402-2. For example, profile subset C 402-3 includes the lowest profile with a bit rate of 650 kbps and the highest profile of 8000 kbps. Profile subset C 402-3 also includes a 6000 kbps profile to include more options at higher bit rates. Finally, profile subset D 402-4 may be for a client 104 experiencing the highest predicted available bandwidth distribution. In this case, profile subset D 402-4 includes the lowest profile with 1000 kbps and the highest profile of 12000 kbps.

[0030]

[0042] Referring again to FIG. 3, the network metric predictor 302 may predict network conditions prior to the playout of each session. In some embodiments, the network metric predictor 302 may output a predicted network bandwidth and also one or more quality of service (QoS) metrics. The predicted network bandwidth may be a predicted available bandwidth during the session. The QoS metrics may be various metrics that measure a predicted quality of service during the session. For example, the QoS metrics may include a rebuffer rate and a failure rate.

[0031]

[0043] Once the network metrics are predicted, the profile determination generator 304 generates a profile subset determination. In some embodiments, the profile determination generator 304 may analyze the network conditions and select an appropriate profile ladder based on the network conditions. For example, if the network conditions are associated with low available bandwidth, a higher rebuffer rate, and / or a higher failure rate, the profile determination generator 304 may select a profile subset that includes a lower bitrate. To minimize the occurrence of rebuffering or failure during playback, the profile subset with the lower bitrate is selected. However, if the network conditions are better, such as a high network bandwidth is predicted, a low rebuffer rate is predicted, and / or a lower failure rate is predicted, the profile determination generator 304 selects a profile subset associated with a higher bitrate. To allow the client 104 to request a higher bitrate to improve the quality of playback, the profile subset with a higher bitrate distribution is selected.

[0032]

[0044] The profile determination generator 304 may use various methods to generate the profile subset. In some embodiments, the profile determination generator 304 may select the profile subset from among pre-generated profile subsets, as shown in FIG. 4. In other embodiments, the profile determination generator 304 may dynamically generate the profile subset based on network conditions. These processes are described in more detail below. From now on, the training of the profile prediction system 108 will be discussed, and then prediction will be discussed in more detail.

[0033]

[0045] training

[0046] 5 illustrates an example of training the profile prediction system 108, according to some embodiments. In some embodiments, either the network metric predictor 302 or the profile determination generator 304 may use a predictive model that includes parameters that may be used to predict network conditions or profile subset decisions as discussed above. In other embodiments, the network metric predictor 302 and the profile determination generator 304 may use a rule-based system. Although it is described below first that both the network metric predictor 302 and the profile determination generator 304 use predictive models to generate profile subset decisions, a rule-based process may be used for either the network metric predictor 302 or the profile determination generator 304, as discussed below.

[0034]

[0047] Training information 502 may include past session features, such as session #1 features 504-1, session #2 features 504-2, ..., and session #N features 504-N. Session features may be extracted from past sessions from a particular user account. Also, session features 504 may be extracted from other user accounts. The following may be some of the features that may be used to characterize a session:

[0035] [Table 1]

[0036]

[0048] Table I

[0049] The features listed in Table I may or may not be used, and other features may be used. In some embodiments, features may be associated with the following categories: user, network, and context. User features may be associated with characteristics of a user account or client. Network features may be associated with network metrics during a playback session. Context may be information related to the playback session.

[0037]

[0050] In some embodiments, the user account characteristics include a device platform, a user country, a user region, a user city, and an Internet Service Provider (ISP). The device platform may be a platform associated with the client 104, such as a mobile device, a living room device, etc. The user country may be where the client 104 or user account is located, such as the United States. The user region may be the state where the client 104 or user account is located, such as Washington. The user city may be the city where the client 104 or user account is located, such as Seattle. The ISP may be the Internet provider used by the client 104.

[0038]

[0051] In the network category, the network type may be the network used by the client 104 during the session, such as WiFi, 4G, etc. The content delivery network may be the CDN used in the associated playback session.

[0039]

[0052] In the context category, the features may include within peak hour, day of week, time period, previous bandwidth, and previous quality of service (QoS). The within peak hour feature may be whether the associated session is occurring during a peak hour, and the peak hour may be from 7:00 PM to 11:00 PM local time. The day of week may be the day of the week associated with the session, and the time period is the time period associated with the session. The previous bandwidth may be the bandwidth status experienced during the last session associated with the user account. The previous QoS may be the previous QoS metrics from the last session associated with the user account, which may include the rebuffer rate and the failure rate experienced during the session.

[0040]

[0053] The profile prediction system 108 can receive the session features 504 and train a predictive model for the network metric predictor 302 and / or the profile determination generator 304. In some embodiments, the network conditions are predicted instead of directly predicting the profile subset because statistics that can be collected from the session include the experienced bandwidth and QoS metrics. This allows the parameters to be trained accurately because the ground truth of the bandwidth and QoS metrics is known for a particular feature set. That is, the actual bandwidth experienced during the session is known and can be correlated to the session features. The training process can input the session features 504 into the model and train the parameters of the model based on the output of the model and the ground truth of the bandwidth and QoS metrics.

[0041]

[0054] The predicted network conditions can be used to train a profile subset determination prediction model by using an evaluation of the session and ground truth information from past sessions (e.g., network bandwidth, rebuffer rate, failure rate, and profile ladder used in the session). The session features 504 can be evaluated with an evaluation such as being a good session (e.g., no rebuffering occurred) or a bad session (e.g., rebuffering occurred). The ground truth features are input to the profile determination generator 304 to train the parameters of the model based on whether the session was classified as a good or bad session. The features of the current session can be input to the profile determination generator 304, which predicts whether the available profile ladder will result in a good or bad session. The profile ladder with the highest bandwidth distribution predicted to be a good session can be selected.

[0042]

[0055] It should be noted that various methods may be understood for training the network metric predictor 302 and the profile determination generator 304. After training, a network condition prediction model and a profile subset determination prediction model are generated and can be used during real-time execution.

[0043]

[0056] Network Metrics Forecast

[0057] 6 shows a more detailed example of network metric prediction, according to some embodiments. The network metric predictor 302 receives session characteristics 602. The current session characteristics 602 may include information about the characteristics described in Table I. For example, the video delivery system 102 may receive the user account that requested the video and retrieve the characteristics for that user account.

[0044]

[0058] The network metric predictor 302 inputs the session features 602 into the trained network condition prediction model to output a network metric prediction 604. For example, the network metric prediction 604 includes a network bandwidth 606-1, a rebuffer rate 606-2, and a failure rate 606-3. In a simplified example, if the session features 602 are similar to past features that resulted in high network bandwidth, the network bandwidth 606-1 may be high. Also, the rebuffer rate 606-2 and the failure rate 606-3 may be similar to the rebuffer rate and the failure rate for features that were similar to the current session features 602. The network metric predictor 302 then outputs the network metric prediction 604 to the profile determination generator 304.

[0045]

[0059] The network metric predictor 302 may also use a rule-based process to predict the network metric prediction 604. The network metric predictor 302 applies rules to the features of the current session to generate values ​​representing the network bandwidth 606-1, the rebuffer rate 606-2, and the failure rate 606-3. For example, some features may map to a higher network bandwidth, some features may map to a lower rebuffer rate, and so on.

[0046]

[0060] Profile subset determination

[0061] The profile subset decision generator 304 may use a predictive model or a rule-based method to determine the profile subset decisions. A predictive model approach is described in FIG. 7 and a rule-based approach is described in FIG. 8.

[0047]

[0062] FIG. 7 illustrates an example of generating a profile subset decision using a predictive model, according to some embodiments. The profile decision generator 304 may use a trained profile subset decision predictive model. In this case, network metric predictions 604 (e.g., network bandwidth 606-1, rebuffer rate 606-2, and failure rate 606-3) are input to the profile decision generator 304. The profile decision generator 304 then outputs a profile subset decision. The profile subset decision may be one of the selected profile subsets A, B, C, or D. In other examples, the profile subset decision may output a particular profile to be included in the profile ladder. For example, the profile decision generator 304 may analyze network metrics and dynamically determine the profiles to include in the profile ladder. Thus, the profile decision generator 304 may not be limited to a pre-determined subset. Dynamically selecting profiles may provide more flexibility in determining the distribution of profiles for the adaptive profile ladder.

[0048]

[0063] In other examples, the profile determination generator 304 may use a rule-based process. FIG. 8 shows a simplified flowchart 800 of a method for selecting a profile subset, according to some embodiments. At 802, the profile determination generator 304 receives a network metric prediction 604. The profile determination generator 304 may then apply rules to the network metric prediction 604. The thresholds used for the rules are examples and may be changed. In some examples, the profile determination generator 304 determines at 804 whether the predicted bandwidth of the network bandwidth 606-1 is less than a threshold, such as 1000 kbps. A value of 1000 kbps may be used because it is a lower bit rate, and if the bandwidth is less than 1000 kbps, the profile determination generator 304 selects the profile subset A at 806. The profile determination generator 304 selects the profile subset A because it is associated with the lowest bit rate distribution of the profiles.

[0049]

[0064] If the bandwidth is 1000 kbps or more, the profile decision generator 304 determines whether the rebuffer rate 606-2 meets a threshold, such as a value of the rebuffer rate being greater than 3%. If the rebuffer rate 606-2 is greater than 3%, then at 810, the profile decision generator 304 selects profile subset B. The profile decision generator 304 selects profile subset B because a lower bitrate distribution in profile subset B may reduce the number of rebuffers that occur due to the video bitrate being higher than the available bandwidth. For example, if profile subset C or profile subset D were selected, a higher bitrate profile would be more likely to be selected by the client 104, which may result in a higher than desired rebuffer rate. Profile subset A may not be selected because the expected bandwidth is 1000 kbps or more and the profile with the lowest bitrate distribution may not be needed.

[0050]

[0065] At 812, if the rebuffer rate 606-2 is less than or equal to 3%, the profile decision generator 304 determines whether the failure rate 606-3 meets a threshold, such as whether it is greater than 8%. If the failure rate 606-3 is greater than 8%, the profile decision generator 304 at 814 selects profile subset C. The profile decision generator 304 may select profile subset C instead of profile subset D to reduce the number of failures in downloading segments. Profile subset C may result in fewer failures because the bitrate distribution is lower than profile subset D.

[0051]

[0066] If the failure rate 606-3 is greater than 8%, then the profile decision generator 304 selects the profile subset D at 816. In this case, the network metric prediction 204 passes all the rules and the highest bitrate distribution in the profile subset is selected. Although the above logic is described, other logic may be used, such as testing multiple thresholds for each metric.

[0052]

[0067] In-session adaptive profile determination

[0068] The video delivery system 102 determines the initial profile ladder before the session begins. However, once playback begins, network conditions may change. That is, the video delivery system 102 uses predicted network conditions to generate the profile ladder, but not the actual network conditions that may be experienced during the session. Thus, as network conditions change, a subset of profiles for the profile ladder may no longer be appropriate. FIG. 9 shows a simplified flowchart 900 of a method for adapting a profile ladder during a playback session, according to some embodiments. Although this process for adapting the profile ladder is described, other processes may be used.

[0053]

[0069] At 902, the client 104 downloads a segment of video and detects current network conditions. The current network conditions may include available bandwidth, rebuffer rate, and failure rate for the current session. At 904, the in-session profile adapter 110 determines whether the network conditions meet a first threshold. For example, the threshold may be based on minimum network conditions that should be experienced, such as that the bitrate should be above a threshold, that the rebuffer rate should be below a threshold, and that the failure rate should be below a threshold. The test may require that one or more of the metrics meet the respective threshold. With respect to bitrate, the test may require that the current network bandwidth is above the lowest bitrate threshold in the profile.

[0054]

[0070] If the network conditions meet the first threshold, then at 906, in-session profile adapter 110 adds a profile having a lower bit rate to the profile ladder, such as a profile having a bit rate lower than the lowest bit rate currently present in the profile ladder or a profile having the next lowest bit rate below the lowest bit rate currently in the profile ladder. In some embodiments, in-session profile adapter 110 can add profiles to the profile ladder without restriction. In other examples, the profile ladder can limit the number of profiles, and in-session profile adapter 110 can remove profiles with higher bit rates when adding lower bit rate profiles.

[0055]

[0071] If the network conditions do not meet the first threshold, then at 908, the in-session profile adapter 110 determines whether stable network conditions are occurring. Stable network conditions may occur if the current bandwidth, rebuffer rate, and failure rate are within the thresholds or ranges of the thresholds. The test may require that one or more of the metrics meet the respective thresholds. For example, stable network conditions may be determined if the current bitrate is between the lowest and highest bitrates in the profile ladder. If stable network conditions are occurring at 910, the in-session profile adapter 110 retains the current profile ladder.

[0056]

[0072] If stable network conditions are not occurring, then in-session profile adapter 110 determines whether the network conditions meet a second threshold at 912. For example, the available bandwidth may be greater than the highest bit rate of a profile in the profile ladder.

[0057]

[0073] At 914, if the network conditions meet the second threshold, the in-session profile adapter 110 adds a profile having a higher bit rate to the profile ladder. For example, if the current available bandwidth is 12000 kbps, the in-session profile adapter 110 may add a profile having 12000 kbps to the profile ladder, or a profile having the next highest bit rate above the highest bit rate in the profile ladder. If the network conditions do not meet the second threshold, the process repeats to 902 to continue downloading segments and detect the current network conditions.

[0058]

[0074] 10 shows an example of adding a lower bit rate for a profile to a profile ladder according to some embodiments. At 1002, the client 104 downloads a segment. At 1004, the in-session profile adapter 110 determines whether playback rebuffering occurs. If so, at 1006, the in-session profile adapter 110 performs a rebuffer count. The rebuffer count may count the number of occurrences of rebuffering for a session. At 1008, the in-session profile adapter 110 determines whether the rebuffer count is greater than a threshold, rebuffer_thres. If the rebuffer count is less than or equal to the rebuffer threshold, the process repeats to 1002 to download another segment.

[0059]

[0075] If playback rebuffering did not occur, then at 1012, the in-session profile adapter 110 determines whether the bandwidth is greater than a bandwidth threshold BW_thres and / or whether the buffer length is greater than a buffer threshold BL_thres. The in-session profile adapter 110 compares the available bandwidth to the bandwidth threshold to determine if a higher bandwidth is being experienced. The in-session profile adapter 110 also compares the buffer length to a buffer length threshold to determine if there is enough video in the buffer to handle a lower bandwidth for a certain amount of time. The buffer is used to store segments of video as they are received, and the media player reads the segments from the buffer. If the available bandwidth drops, there may still be enough video stored in the buffer so that rebuffering may not occur for a period of time until the available bandwidth increases again.

[0060]

[0076] If the available bandwidth is greater than the bandwidth threshold and the buffer length is greater than the buffer length threshold, then at 1014 the in-session profile adapter 110 determines whether a profile has been added to the profile ladder, such as if the in-session profile adapter 110 has added another profile having a lower bitrate. If not, the process repeats to 1002 to analyze another downloaded segment. If an added profile exists, then at 1016 the in-session profile adapter 110 may remove the added profile. For example, the in-session profile adapter 110 may remove the added profile having the lowest bitrate. This profile may not be needed if the available bandwidth is above the threshold or if there is enough video data in the buffer to handle the lower bandwidth. Then, at 1018, the in-session profile adapter 110 updates the ladder by removing that profile from the profile ladder. Removal of the added profile may not allow the client 104 to select a profile having a lower bitrate, making the ladder more efficient. 4 because it contains a profile with a bit rate that better matches the current network conditions.

[0061]

[0077] The in-session profile adapter 110 may add or remove a higher profile with a higher bandwidth distribution. For example, if the available bandwidth is higher than the bit rate of the highest profile in the profile ladder, the in-session profile adapter 110 may add a higher profile with a higher bit rate distribution to the profile ladder. However, if the network condition becomes worse, the added higher profile may not actually affect the playback experience because the adaptive bit rate algorithm may not select that profile in the case experiencing low bandwidth. However, considering the limit of the number of profile ladders, if the in-session profile adapter 110 adds a lower profile, the in-session profile adapter 110 may remove the added higher profile.

[0062]

[0078] conclusion

[0079] Thus, the video delivery system 102 uses an adaptive profile ladder for each session. The adaptive profile selects a subset of profiles that can be optimized for the predicted network conditions of the session. If the network conditions change, the in-session profile adapter 110 can be used to adjust the profile ladder. Thus, the quality experienced in the session can be improved because the profiles are not fixed and can adapt to the network conditions. For example, if a profile with a higher bitrate is provided to the client 104, a higher bitrate can be requested in the session. Also, if a profile with a lower bitrate is provided to the client 104 when the client 104 is experiencing a lower bitrate environment, rebuffering can be reduced.

[0063]

[0080] Exemplary embodiments

[0081] In some embodiments, a method comprises receiving, by a computing device, session features for a session associated with a request for a video from a client; predicting, by the computing device, network conditions for the session using the session features; selecting, by the computing device, a subset of available profiles based on the network conditions; and providing, by the computing device, a profile ladder to the client including the subset of available profiles for playback of the video, where the available profiles are associated with different playback characteristics; and where the profile ladder limits the client to using the subset of available profiles for requesting segments of the video during the session.

[0064]

[0082] In some embodiments, predicting the network conditions comprises inputting the session characteristics into a prediction network to predict the network conditions.

[0065]

[0083] In some embodiments, the network conditions comprise at least one of a predicted available bandwidth and a quality of service metric.

[0066]

[0084] In some embodiments, the method further comprises training a prediction network using past session features for the client to generate a predictive model for predicting network conditions from the session features.

[0067]

[0085] In some embodiments, selecting the subset of the available profiles comprises selecting a profile subset from a plurality of profile subsets, where each profile subset includes a separate subset of the available profiles.

[0068]

[0086] In some embodiments, selecting the subset of available profiles comprises predicting profiles in the subset of available profiles, where the subset of available profiles is dynamically predicted without selecting from a fixed profile subset.

[0069]

[0087] In some embodiments, selecting the subset of the available profiles comprises applying a set of rules to the network metrics to select the subset of the available profiles.

[0070]

[0088] In some embodiments, selecting the subset of available profiles comprises applying a set of rules to the network metrics to select one of a plurality of profile subsets, where each profile subset includes a separate subset of the available profiles.

[0071]

[0089] In some embodiments, providing the profile ladder comprises sending the profile ladder to a client, where the client applies restrictions to using a subset of the available profiles to request segments of video during the session.

[0072]

[0090] In some embodiments, providing the profile ladder comprises sending the profile ladder to a content delivery network, where the content delivery network communicates the profile ladder to the client.

[0073]

[0091] In some embodiments, the manifest sent to the client contains information about all available profiles for a segment of a video, and the client applies the restriction to using a subset of the available profiles to request profiles for the segment video.

[0074]

[0092] In some embodiments, a client is allowed to add a profile to the subset of available profiles upon initiation of video playback.

[0075]

[0093] In some embodiments, the client is enabled to remove profiles upon initiation of video playback for a subset of the available profiles.

[0076]

[0094] In some embodiments, a non-transitory computer-readable storage medium including instructions that, when executed, control a computer system to be operable to receive session features for a session associated with a request for a video from a client, predict network conditions for the session using the session features, select a subset of available profiles based on the network conditions, and provide the client with a profile ladder including the subset of available profiles for playback of the video, where the available profiles are associated with different playback characteristics, and where the profile ladder limits the client to using the subset of available profiles for requesting segments of the video during the session.

[0077]

[0095] In some embodiments, a method comprises receiving, by a computing device, a profile ladder including a subset of available profiles, where the subset of available profiles is determined for a session for playing a video, sending, by the computing device, a request for a segment of the video using a profile in the profile ladder, analyzing, by the computing device, a playback situation for the playback of the video, determining whether to adjust the profile ladder for the session based on the analysis of the playback situation, and if it is determined to adjust the profile ladder, adding a profile from among the available profiles to the profile ladder or removing a profile from the subset of available profiles.

[0078]

[0096] In some embodiments, determining whether to adjust the profile ladder comprises maintaining information regarding occurrences of rebuffering during playback of the video and adding profiles having a lower bandwidth than the profile having the lowest bandwidth in the subset of available profiles.

[0079]

[0097] In some embodiments, determining whether to adjust the profile ladder comprises determining whether the available bandwidth is greater than a threshold and removing a profile that was previously added to the subset of available profiles.

[0080]

[0098] In some embodiments, determining whether to adjust the profile ladder comprises determining whether the available bandwidth is greater than a threshold and / or whether the buffer length is greater than a threshold, and removing a profile that was previously added to the subset of available profiles.

[0081]

[0099] In some embodiments, determining whether to adjust the profile ladder comprises adding a profile having a higher bitrate than a profile having a highest bitrate in the subset of available profiles.

[0082]

[0100] In some embodiments, the subset of available profiles is predicted based on predicted network conditions for the session.

[0083]

[0101] system

[0102] Features and aspects disclosed herein may be implemented in conjunction with a video streaming system 1100 in communication with multiple client devices over one or more communication networks, as shown in Figure 11. Aspects of the video streaming system 1100 are described solely to provide examples of applications for enabling distribution and delivery of content prepared in accordance with the present disclosure. It should be understood that the technology is not limited to streaming video applications and may be adapted for other applications and delivery mechanisms.

[0084]

[0103] In one embodiment, a media programming provider may include a library of media programming. For example, the media programming may be aggregated and provided through a site (e.g., a website), an application, or a browser. A user may access a media programming provider's site or application to request a media program. A user may be limited to requesting only media programming provided by the media programming provider.

[0085]

[0104] In the system 1100, video data may be obtained from one or more sources, such as from a video source 1110, for use as input to the video content server 1102. The input video data may comprise raw or edited frame-based video data in any suitable digital format, such as Moving Pictures Experts Group (MPEG)-1, MPEG-2, MPEG-4, VC-1, H.264 / Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC), or other formats. Alternatively, the video may be provided in a non-digital format and converted to a digital format using a scanner and / or transcoder. The input video data may comprise various types of video clips or programs, such as television episodes, movies, and other content produced as the primary content of interest to the consumer. The video data may also include audio, or only audio may be used.

[0086]

[0105] The video streaming system 1100 may include one or more computer servers or modules 1102, 1104, and / or 1107 distributed across one or more computers. Each server 1102, 1104, 1107 may include or be operatively coupled to one or more data stores 1109, e.g., databases, indexes, files, or other data structures. The video content server 1102 may access a data store (not shown) of various video segments. The video content server 1102 may serve video segments as directed by a user interface controller that communicates with a client device. As used herein, a video segment refers to a particular portion of frame-based video data, such as may be used in a streaming video session for viewing a television episode, a movie, a recorded live performance, or other video content.

[0087]

[0106] In some embodiments, the video ad server 1104 may access a data store of relatively short videos (e.g., 10-, 30-, or 60-second video ads) that are configured as advertisements for particular advertisers or messages. The advertisements may be provided to advertisers in exchange for some type of payment, or may comprise promotional messages, public service messages, or some other information regarding the system 1100. The video ad server 1104 may serve video ad segments as directed by a user interface controller (not shown).

[0088]

[0107] The video streaming system 1100 may also include a video delivery system 102.

[0089]

[0108] The video streaming system 1100 may further include an integration / streaming component 1107 that integrates video content and video advertisements into streaming video segments. For example, the streaming component 1107 may be a content server or a streaming media server. A controller (not shown) may determine the selection or configuration of advertisements in the streaming video based on any suitable algorithm or process. The video streaming system 1100 may include other modules or units not shown in FIG. 11, such as a management server, a commerce server, a network infrastructure, an advertisement selection engine, etc.

[0090]

[0109] The video streaming system 1100 may be connected to a data communications network 1112. The data communications network 1112 may comprise a local area network (LAN), a wide area network (WAN), such as the Internet, a telephone network, a wireless cellular telecommunications network (WCS) 1114, or any combination of these or similar networks.

[0091]

[0110] One or more client devices 1120 may be in communication with the video streaming system 1100 via the data communications network 1112, the wireless cellular telecommunications network 1114, and / or another network. Such client devices may include, for example, one or more laptop computers 1120-1, desktop computers 1120-2, "smart" mobile phones 1120-3, tablet devices 1120-4, network-enabled televisions 1120-5, or combinations thereof, via a router 1118 for a LAN, a base station 1117 for the wireless cellular telecommunications network 1114, or some other connection. In operation, such client devices 1120 are capable of sending and receiving data or instructions to the system 1100 in response to user input received from a user input device, or other input. In response, the system 1100 may provide the client device 1120 with video segments and metadata from the data store 1109 in response to a selection of a media program. The client device 1120 may output video content from streaming video segments in a media player using a display screen, projector, or other video output device, and may receive user input for interacting with the video content.

[0092]

[0111] Distribution of the audio-video data may be performed in various ways, for example, using streaming, from the streaming component 1107 to remote client devices via computer networks, telecommunications networks, and combinations of such networks. In streaming, a content server continuously streams audio-video data to a media player component operating at least partially on the client device, and the media player component may play the audio-video data simultaneously upon receiving the streaming data from the server. Although streaming is discussed, other methods of distribution may be used. The media player component may begin playing the video data immediately after receiving the first portion of the data from the content provider. Traditional streaming techniques use a single provider to deliver a stream of data to a group of end users. Delivering a single stream to a large audience may require high bandwidth and processing power, and as the number of end users increases, the provider's required bandwidth may increase.

[0093]

[0112] Streaming media can be delivered on demand or live. Streaming allows instant playback at any point in the file. End users can skip within a media file to start playback or change playback to any point in the media file. Thus, end users do not have to wait for the file to progressively download. Typically, streaming media is delivered from a small number of dedicated servers with high bandwidth capabilities through specialized devices that accept requests for video files along with information about the format, bandwidth, and structure of those files, and deliver only the amount of data necessary to play the video at the speed needed to play it. The streaming media server may also take into account the transmission bandwidth and capabilities of the media player on the destination client. The streaming component 1107 may communicate with the client device 1120 using control and data messages to adapt to changing network conditions as the video is played. These control messages may include commands to enable control functions at the client, such as fast forward, fast rewind, pause, or seek to a particular part of the file.

[0094]

[0113] Because the streaming component 1107 transmits video data only when needed and at the rate needed, precise control over the number of streams provided can be maintained. It would be impossible for a viewer to watch high data rate video on a lower data rate transmission medium. However, a streaming media server (1) provides users with random access to video files, (2) allows monitoring of who is watching which video programs and how long they are being watched, (3) uses transmission bandwidth more efficiently (because only the amount of data needed to support the viewing experience is transmitted), and (4) video files are not stored on the viewer's computer but are discarded by the media player, thus allowing more control over the content.

[0095]

[0114] The streaming component 1107 may use TCP-based protocols, such as HTTP and Real-Time Messaging Protocol (RTMP). The streaming component 1107 may also deliver live webcasts and may multicast, which allows multiple clients to tune into a single stream, thus conserving bandwidth. A streaming media player may not rely on buffering the entire video to provide random access to any point in the media program. Instead, this is accomplished through the use of control messages sent from the media player to the streaming media server. Other protocols used for streaming are Hypertext Transfer Protocol (HTTP) Live Streaming (HLS) or Dynamic Adaptive Streaming over HTTP (DASH). The HLS and DASH protocols deliver video over HTTP via a playlist of small segments that are typically made available at various bitrates from one or more content delivery networks (CDNs). This allows the media player to switch both bitrate and content source for each segment. This switching helps to compensate for fluctuations in network bandwidth and also infrastructure failures that may occur during the playback of the video.

[0096]

[0115] Delivery of streaming video content can be accomplished under a variety of models. In one model, a user pays to view a video program, for example, paying a fee for access to a library of media programs or a limited portion of a media program, or using a pay-per-view service. In another model, widely adopted by broadcast television soon after its inception, sponsors pay for the presentation of a media program in exchange for the right to present advertisements during or adjacent to the presentation of the program. In some models, advertisements are inserted at predetermined times in the video program, which may be referred to as "ad slots" or "ad breaks." For streaming video, a media player may be configured to prevent a client device from playing a video without playing a predetermined advertisement during a designated ad slot.

[0097]

[0116] Referring to Figure 12, a diagram of an apparatus 1200 for viewing video content and advertisements is shown. In selected embodiments, the apparatus 1200 may include a processor (CPU) 1202 operatively coupled to a processor memory 1204 that holds binary coded functional modules for execution by the processor 1202. Such functional modules may include an operating system 1206 for handling system functions such as input / output and memory access, a browser 1208 for displaying web pages, and a media player 1210 for playing videos. The modules may further include an in-session profile adaptor 110. The memory 1204 may hold additional modules not shown in Figure 12, such as modules for performing other operations described elsewhere herein.

[0098]

[0117] A bus 1214 or other communication components may support communication of information within the apparatus 1200. The processor 1202 may be a specialized or dedicated microprocessor configured or operable to perform particular tasks in accordance with the features and aspects disclosed herein by executing machine-readable software code that defines the particular tasks. The processor memory 1204 (e.g., a random access memory (RAM) or other dynamic storage device) may be coupled to the bus 1214 or directly to the processor 1202 to store information and instructions to be executed by the processor 1202. The memory 1204 may also store temporary variables or other intermediate information during the execution of such instructions.

[0099]

[0118] A computer-readable medium in storage device 1224 may be coupled to bus 1214 to store static information and instructions for processor 1202; for example, storage device (CRM) 1224 may store modules 1206, 1208, 1210, and 1212 when apparatus 1200 is powered off, from which they may be loaded into processor memory 1204 when apparatus 1200 is powered on. Storage device 1224 may include a non-transitory computer-readable storage medium that holds information, instructions, or some combination thereof, for example, instructions that, when executed by processor 1202, cause apparatus 1200 to be configured or operable to perform one or more operations of the methods described herein.

[0100]

[0119] The communication interface 1216 may also be connected to the bus 1214. The communication interface 1216 may provide or support bidirectional data communication between the apparatus 1200 and one or more external devices, such as the streaming system 1100, optionally via a router / modem 1226 and a wired or wireless connection. Alternatively or additionally, the apparatus 1200 may include a transceiver 1218 connected to an antenna 1229, through which the apparatus 1200 may wirelessly communicate with a base station for a wireless communication system or with the router / modem 1226. Alternatively, the apparatus 1200 may communicate with the video streaming system 1100 via a local area network, a virtual private network, or other network. As a further alternative, the apparatus 1200 may be incorporated as a module or component of the system 1100 and communicate with other components via the bus 1214 or by some other modality.

[0101]

[0120] Apparatus 1200 may be connected (e.g., via bus 1214 and graphics processing unit 1220) to a display unit 1228. Display 1228 may include any suitable configuration for displaying information to an operator of apparatus 1200. For example, display 1228 may include or utilize a liquid crystal display (LCD), a touchscreen LCD (e.g., a capacitive display), a light emitting diode (LED) display, a projector, or other display device to present information to a user of apparatus 1200 in a visual display.

[0102]

[0121] One or more input devices 1230 (e.g., an alphanumeric keyboard, a microphone, a keypad, a remote controller, a game controller, a camera, or a camera array) may be connected to the bus 1214 via a user input port 1222 for communicating information and commands to the apparatus 1200. In selected embodiments, the input device 1230 may provide or support control over cursor positioning. Such cursor control devices (also called pointing devices) may be configured as a mouse, a trackball, a trackpad, a touch screen, cursor direction keys, or other devices for receiving or tracking physical movements and converting the movements into electrical signals indicative of cursor movement. The cursor control device may be integrated into the display unit 1228, for example using a touch-sensitive screen. The cursor control device may communicate directional information and command selections to the processor 1202 and control cursor movement on the display 1228. The cursor control device may have two or more degrees of freedom, for example allowing the device to specify a cursor position in a plane or three-dimensional space.

[0103]

[0122] Some embodiments may be implemented in a non-transitory computer-readable storage medium for use by or in connection with an instruction execution system, apparatus, system, or machine. The computer-readable storage medium includes instructions for controlling a computer system to perform the methods described by some embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be configured or operable to perform those described in some embodiments.

[0104]

[0123] As used herein and throughout the claims which follow, "a," "an," and "the" include plural references unless the context clearly dictates otherwise. Also, as used herein and throughout the claims which follow, the meaning of "in" includes "in" and "on," unless the context clearly dictates otherwise.

[0105]

[0124] The above description illustrates various embodiments with examples of how aspects of some embodiments can be implemented. The above examples and embodiments should not be considered as the only embodiments, but are presented to illustrate the flexibility and advantages of some embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations, and equivalents may be adopted without departing from the scope of the present specification as defined by the claims. [C1] receiving, by the computing device, session characteristics for a session associated with a request for video from a client; predicting, by the computing device, network conditions for the session using the characteristics of the session; and selecting, by the computing device, a subset of available profiles based on the network conditions, wherein the available profiles are associated with different playback characteristics. providing, by the computing device, the client with a profile ladder including the subset of available profiles for playback of the video, wherein the profile ladder limits the client to using the subset of available profiles to request segments of the video during the session. A method for providing the above. [C2] predicting the network conditions, The method of C1, comprising inputting the session characteristics into a prediction network to predict the network conditions. [C3] The method of C1, wherein the network conditions comprise at least one of a predicted available bandwidth and a quality of service metric. [C4] training a prediction network using past session characteristics for the client to generate a predictive model for predicting the network condition from the session characteristics; The method of claim C1, further comprising: [C5] Selecting said subset of available profiles The method of C1, comprising selecting a profile subset from a plurality of profile subsets, where each profile subset includes a distinct subset of available profiles. [C6] Selecting said subset of available profiles The method of C1, comprising predicting the profile in the subset of available profiles, wherein the subset of available profiles is dynamically predicted without selecting from a fixed profile subset. [C7] Selecting said subset of available profiles The method of C1, comprising applying a set of rules to the network metrics to select the subset of available profiles. [C8] Selecting said subset of available profiles The method of C1, comprising applying a set of rules to the network metrics to select one of a plurality of profile subsets, wherein each profile subset includes a distinct subset of available profiles. [C9] Providing the profile ladder comprises: The method of claim 1, comprising sending the profile ladder to the client, wherein the client applies restrictions to using the subset of available profiles to request segments of the video during the session. [C10] Providing the profile ladder comprises: The method of C1, comprising sending the profile ladder to a content delivery network, wherein the content delivery network communicates the profile ladder to the client. [C11] a manifest sent to the client containing information about all available profiles for a segment of a video; applying a restriction to the client to use the subset of available profiles to request profiles for the segment videos; The method according to C10. [C12] The method of C1, wherein the client is enabled to add a profile to the subset of available profiles upon initiation of playback of the video. [C13] The method of C1, wherein the client is enabled to remove a profile for the subset of available profiles upon initiation of playback of the video. [C14] A non-transitory computer-readable storage medium containing instructions that, when executed, receiving session characteristics for a session associated with a request for video from a client; predicting network conditions for the session using the characteristics of the session; and selecting a subset of available profiles based on the network conditions, wherein the available profiles are associated with different playback characteristics. A non-transitory computer-readable storage medium that controls a computer system to be operable to provide the client with a profile ladder including the subset of available profiles for playback of the video, wherein the profile ladder limits the client to using the subset of available profiles to request segments of the video during the session. [C15] receiving, by a computing device, a profile ladder including a subset of available profiles, wherein the subset of available profiles is determined for a session for playing a video; sending, by the computing device, a request for a segment of video using a profile in the profile ladder; analyzing, by the computing device, a playback status relating to the playing of the video; determining whether to adjust the profile ladder for the session based on the analysis of the playback situation; and adding profiles from among the available profiles to the profile ladder or removing profiles from the subset of available profiles when it is determined to adjust the profile ladder; A method for providing the above. [C16] determining whether to adjust the profile ladder; maintaining information regarding occurrences of rebuffering during said playing of said video; and adding a profile having a lower bandwidth than a profile having a lowest bandwidth in the subset of available profiles. [C17] determining whether to adjust the profile ladder; determining whether the available bandwidth is greater than a threshold; and removing any profiles previously added to the subset of available profiles. [C18] determining whether to adjust the profile ladder; determining whether the available bandwidth is greater than a threshold or whether the buffer length is greater than a threshold; and removing any profiles previously added to the subset of available profiles. [C19] determining whether to adjust the profile ladder; The method of C15, comprising adding a profile having a higher bitrate than a profile in the subset of available profiles having a highest bitrate. [C20] The method of C15, wherein the subset of available profiles is predicted based on predicted network conditions for the session.

Claims

1. receiving, by the computing device, session characteristics for a session associated with a request for video from a client; predicting, by the computing device, network conditions for the session using the characteristics of the session; and selecting, by the computing device, a subset of available profiles based on the network conditions, wherein the available profiles are associated with different playback characteristics. providing, by the computing device, a profile ladder to the client including the subset of available profiles for playback of the video, wherein the profile ladder limits the client to using the subset of available profiles to request segments of the video during the session, wherein the client is enabled to add another available profile to the subset of available profiles during playback of the video. A method for providing the above.

2. predicting the network conditions, The method of claim 1 , comprising inputting the session characteristics into a prediction network to predict the network conditions.

3. The method of claim 1 , wherein the network conditions comprise at least one of a predicted available bandwidth and a quality of service metric.

4. training a prediction network using past session characteristics for the client to generate a predictive model for predicting the network condition from the session characteristics; The method of claim 1 further comprising:

5. Selecting said subset of available profiles The method of claim 1 , comprising selecting a profile subset from a plurality of profile subsets, wherein each profile subset includes a distinct subset of available profiles.

6. Selecting said subset of available profiles 2. The method of claim 1, comprising predicting the profile in the subset of available profiles, wherein the subset of available profiles is predicted dynamically without selecting from a fixed profile subset.

7. Selecting said subset of available profiles The method of claim 1 , comprising applying a set of rules to network metrics to select the subset of available profiles.

8. Selecting said subset of available profiles 2. The method of claim 1, comprising applying a set of rules to network metrics to select one of a plurality of profile subsets, wherein each profile subset includes a distinct subset of available profiles.

9. Providing the profile ladder comprises:

2. The method of claim 1, comprising sending the profile ladder to the client, wherein the client applies restrictions to using the subset of available profiles to request segments of the video during the session.

10. Providing the profile ladder comprises: The method of claim 1 , comprising sending the profile ladder to a content delivery network, wherein the content delivery network communicates the profile ladder to the client.

11. a manifest sent to the client containing information about all available profiles for a segment of a video; applying a restriction to the client to use the subset of available profiles to request profiles for segments of the video; The method of claim 10.

12. The method of claim 1 , wherein the client is enabled to remove available profiles from the subset of available profiles during playback of the video.

13. A non-transitory computer-readable storage medium containing instructions that, when executed, receiving session characteristics for a session associated with a request for video from a client; predicting network conditions for the session using the characteristics of the session; and selecting a subset of available profiles based on the network conditions, wherein the available profiles are associated with different playback characteristics. providing the client with a profile ladder including the subset of available profiles for playback of the video, wherein the profile ladder limits the client to using the subset of available profiles to request segments of the video during the session, wherein the client is enabled to add another available profile to the subset of available profiles during playback of the video. A non-transitory computer-readable storage medium that controls a computer system such that the computer system is operable to perform the steps of:

14. receiving, by a computing device, a profile ladder including a subset of available profiles, wherein the subset of available profiles is determined for a session for playing a video; sending, by the computing device, a request for a segment of video using a profile in the profile ladder; receiving, by the computing device, the segment for playback; analyzing, by the computing device, a playback status relating to the playing of the video; determining whether to adjust the profile ladder for the session based on the analysis of the playback situation; and adding a profile from among the available profiles to the subset of available profiles in the profile ladder or removing an available profile from the subset of available profiles in the profile ladder if it is determined to adjust the profile ladder; A method for providing the above.

15. determining whether to adjust the profile ladder; 15. The method of claim 14, comprising: maintaining information regarding occurrences of rebuffering during the playing of the video; and adding a profile having a lower bandwidth than a profile having a lowest bandwidth in the subset of available profiles.

16. determining whether to adjust the profile ladder; determining whether the available bandwidth is greater than a threshold; and removing any profile previously added to the subset of available profiles.

17. determining whether to adjust the profile ladder; determining whether the available bandwidth is greater than a threshold or whether the buffer length is greater than a threshold; and removing any profile previously added to the subset of available profiles.

18. determining whether to adjust the profile ladder; 15. The method of claim 14, comprising adding a profile having a higher bit rate than a profile having a highest bit rate in the subset of available profiles.

19. The method of claim 14 , wherein the subset of available profiles is predicted based on predicted network conditions for the session.