Method, system and medium for streaming video content using adaptive buffer
By using adaptive buffer technology when streaming video content, dynamically adjusting the buffer size according to the prediction abandonment distribution, the problem of resource waste in the existing technology is solved and more efficient streaming is achieved.
Patent Information
- Application Number
- CN202080071492.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-10-14
- Filing Date
- 2020-01-24
- Publication Date
- 2025-03-28
- Estimated Expiration
- 2040-01-24
AI Technical Summary
Prior art When streaming media content, the use of a fixed buffer results in wasting resources, especially when the user stops presenting media content, the server sends unreleased portions of media content.
Adaptive buffer technology is adopted to dynamically adjust the buffer size by receiving prediction abandonment distribution from user equipment to reduce the buffer size at the point in time when the user may stop presenting video content, thereby optimizing resource usage.
It effectively reduces resource waste, improves the efficiency of streaming video content, and adapts to user viewing behavior by dynamically adjusting the buffer size.
Smart Images

Figure CN114586371B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 914,978, filed on October 14, 2019, which is incorporated herein by reference in its entirety. Technical Field
[0003] The disclosed subject matter relates to methods, systems, and media for streaming video content using an adaptive buffer. Background Art
[0004] The user often streams media content (for example, video, television program, movie, music, etc.) to user equipment (for example, mobile phone, tablet computer, smart TV, media player, etc.) from media content sharing service. The user equipment of streaming media content items can buffer the media content items so that when the network connection quality for streaming media content items decreases or lags behind, a part of media content can be used for presenting. In many cases, user equipment uses a fixed buffer size. In some such cases, when the user of user equipment stops presenting media content items before presenting the stored part, the server can send the part of the media content items not presented in the buffer that is stored. For server and user equipment, sending the part of the media content items that are not presented but buffered may be a waste of resources.
[0005] Therefore, it is desirable to provide new methods, systems, and media for streaming video content. Summary of the invention
[0006] Methods, systems, and media for streaming video content using an adaptive buffer are provided. (An "adaptive" buffer provides memory storage having a size (e.g., storage capacity) that can be changed as needed, while a fixed buffer provides memory storage of a fixed size)
[0007] According to some embodiments of the disclosed subject matter, a method for streaming video content using a buffer is provided, the method comprising: sending a request for streaming a video content item from a user device to a server; receiving a predicted abandonment distribution from the server at the user device, the predicted abandonment distribution indicating multiple likelihoods that a user of the user device will stop presentation of the video content item at corresponding multiple presentation time points of the video content item; receiving a first portion of the video content item from the server at the user device; storing the first portion of the video content item in a buffer having a first size of the user device; causing the user device to present the video content item; determining a second size of the buffer based on the predicted abandonment distribution; modifying the size of the buffer to the second size; requesting a second portion of the video content item from the server based on the second size of the buffer; receiving the second portion of the video content item from the server; and storing the second portion of the video content item in the buffer having the second size while continuing to present the video content item. Typically, the prediction abandonment distribution indicates that the user of the user device stops presenting the corresponding likelihood of the video content item. The presentation time point at which the user of the user device stops presenting the video content item includes at least one time point between the start time point of the content item and the end time point of the content item, and may include multiple different time points between the start time point and the end time point of the content item. In addition, the prediction abandonment distribution indicates that the user of the user device stops presenting the corresponding likelihood of the video content item. The presentation time point may include the end point of the video content item. As another example, the prediction abandonment distribution indicates that the user of the user device stops presenting the corresponding likelihood of the video content item. The presentation time point may be at point D / n, 2D / n...(n-1)D / n, where n is a positive integer, D is the duration of the video content item, and may optionally include a presentation time point when the video content item ends.
[0008] In some embodiments, determining the second size of the buffer based on the predicted abandonment distribution includes: determining that a likelihood among the multiple likelihoods that a user of the user device stops presenting the video content item is below a predetermined threshold; and in response to determining that the likelihood among the multiple likelihoods is below the predetermined threshold, determining that the second size of the buffer will be greater than the first size.
[0009] In some embodiments, determining the second size of the buffer based on the predicted abandonment distribution includes: determining that a likelihood among the multiple likelihoods that a user of the user device stops presenting the video content item exceeds a predetermined threshold; and in response to determining that the likelihood among the multiple likelihoods exceeds the predetermined threshold, determining that the second size of the buffer will be smaller than the first size.
[0010] In some embodiments, the method further comprises: determining a third size of the buffer based on the predicted drop distribution; and, while continuing to present the video content item, modifying the size of the buffer to the third size.
[0011] In some embodiments, the predicted abandonment distribution is normalized to the duration of the video content item.
[0012] In some embodiments, the predicted abandonment distribution is calculated based on a duration of the video content item.
[0013] In some embodiments, the predicted abandonment distribution is calculated based on characteristics of the video content item.
[0014] According to some embodiments of the disclosed subject matter, a system for streaming video content using a buffer is provided, the system comprising a hardware processor configured to: send a request for a streaming video content item from a user device to a server; receive a predicted abandonment distribution from the server at the user device, the predicted abandonment distribution indicating multiple likelihoods that a user of the user device will stop presentation of the video content item at corresponding multiple presentation time points of the video content item; receive a first portion of the video content item from the server at the user device; store the first portion of the video content item in a buffer of a first size on the user device; cause the user device to present the video content item; determine a second size of the buffer based on the predicted abandonment distribution; modify the size of the buffer to the second size; request a second portion of the video content item from the server based on the second size of the buffer; receive the second portion of the video content item from the server; and store the second portion of the video content item in the buffer of the second size while continuing to present the video content item.
[0015] According to some embodiments of the disclosed subject matter, a computer-readable medium is provided, which may be a non-transitory computer-readable medium, but the embodiments are not limited to non-transitory computer-readable medium. In some embodiments, a computer-readable medium includes computer-executable instructions that, when executed by a processor, cause the processor to perform a method for streaming video content using a buffer, the method comprising: sending a request for streaming a video content item from a user device to a server; receiving a predicted abandonment distribution from the server at the user device, the predicted abandonment distribution indicating multiple likelihoods that a user of the user device will stop presentation of the video content item at corresponding multiple presentation time points of the video content item; receiving a first portion of the video content item from the server at the user device; storing the first portion of the video content item in a buffer having a first size of the user device; causing the user device to present the video content item; determining a second size of the buffer based on the predicted abandonment distribution; modifying the size of the buffer to the second size; requesting a second portion of the video content item from the server based on the second size of the buffer; receiving the second portion of the video content item from the server; and storing the second portion of the video content item in the buffer having the second size while continuing to present the video content item. According to other embodiments of the disclosed subject matter, a computer-readable medium is provided, which may be a non-transitory computer-readable medium, but these embodiments are not limited to non-transitory computer-readable media containing computer-executable instructions, which when executed by a processor cause the processor to perform a method according to any embodiment or implementation described herein.
[0016] According to some embodiments of the disclosed subject matter, a system for streaming video content using a buffer is provided, the system comprising: a device for sending a request for streaming a video content item from a user device to a server; a device for receiving a predicted abandonment distribution from the server at the user device, the predicted abandonment distribution indicating multiple likelihoods that a user of the user device will stop presentation of the video content item at corresponding multiple presentation time points of the video content item; a device for receiving a first portion of the video content item from the server at the user device; a device for storing the first portion of the video content item in a buffer having a first size of the user device; causing the user device to present the video content item; a device for determining a second size of the buffer based on the predicted abandonment distribution; a device for modifying the size of the buffer to the second size; a device for requesting a second portion of the video content item from the server based on the second size of the buffer; a device for receiving the second portion of the video content item from the server; and a device for storing the second portion of the video content item in the buffer having the second size while continuing to present the video content item. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Various objects, features, and advantages of the disclosed subject matter may be more fully understood with reference to the following detailed description of the disclosed subject matter when considered in conjunction with the following drawings, in which like reference numerals represent like elements.
[0018] Figure 1 An illustrative example of a process for streaming video content using an adaptive buffer in accordance with some embodiments of the disclosed subject matter is shown.
[0019] Figure 2 An illustrative example of a process for generating a predicted abandonment distribution in accordance with some embodiments of the disclosed subject matter is shown.
[0020] Figure 3 A schematic diagram of an illustrative system suitable for implementing the mechanisms described herein for streaming video content using an adaptive buffer, in accordance with some embodiments of the disclosed subject matter is shown.
[0021] Figure 4 It is shown that according to some embodiments of the disclosed subject matter, Figure 3 Detailed examples of the hardware used in the server and / or user devices. DETAILED DESCRIPTION
[0022] According to various embodiments, mechanisms (which may include methods, systems, and media) are provided for streaming video content using an adaptive buffer.
[0023] In some embodiments, the mechanisms described herein may modify the size of a buffer used to store media content being streamed based on the likelihood that a user viewing the media content will stop presentation of the media content before the end of the media content (sometimes referred to as a video playback abandonment).
[0024] In some embodiments, the server that media content items are streamed to user equipment can send prediction abandonment distribution to user equipment, and this prediction abandonment distribution indicates that the user of user equipment will stop presenting the likelihood of media content items at different playback time points in media content items.In some embodiments, user equipment can receive prediction abandonment distribution, and can modify the size of the buffer zone that user equipment is used to store the part of this media content items received from server before user equipment presents the part of video content items.In some embodiments, user equipment can modify the size of buffer zone in any suitable manner.For example, in some embodiments, user equipment can initially store the part of media content items of streamed transmission in the buffer zone of first size, and in response to receiving the prediction abandonment distribution that the user of indication user equipment may relatively stop the presentation of media content items, can reduce the size of buffer zone, make to request from server and store less media content items by user equipment.On the contrary, in response to receiving the prediction abandonment distribution that the user of indication user equipment is unlikely to stop the presentation of media content items, user equipment can increase the size of buffer zone, make to request from server and store more media content items by user equipment.
[0025] In some embodiments, the mechanism described herein can be determined in any suitable manner and based on any suitable information to predict and abandon distribution.For example, in some embodiments, the server that media content streaming is transmitted to user equipment can determine the prediction abandon distribution for specific media content items, and this prediction abandons the likelihood that the user who indicates to watch media content items will stop presenting media content items at different presentation time points of media content items.In some embodiments, the prediction abandon distribution of specific media content items can be determined based on any suitable information associated with media content items, and any suitable information such as the duration of media content items, whether media content items include music, whether media content items are inserted into websites (for example, in the media content items list) or social network posts, whether media content items are configured to play automatically, whether the audio content associated with media content items is silent by default and / or any other suitable information.In some embodiments, the prediction abandon distribution for specific media content items can be determined based on the previous viewing of other users to media content items, and wherein the previous viewing of other users to media content items is such as the percentage of users who watch the media content items completely, the average duration of users watching media content items before stopping the presentation of media content items and / or any other suitable previous viewing information.
[0026] Note that while the mechanisms described herein are generally described in connection with video content, in some embodiments, the mechanisms described herein may be used in connection with streaming any suitable type of media content, such as audio content (e.g., music, podcasts, live audio content, and / or any other suitable type of audio content), video content (e.g., videos, television programs, movies, live video content, games, and / or any other suitable type of video content), and / or any other suitable type of media content).
[0027] Steering Figure 1 , an illustrative example 100 of a process for streaming video content using an adaptive buffer according to some embodiments of the disclosed subject matter is shown. In some embodiments, blocks of process 100 can be performed on any suitable user device, such as a mobile phone, tablet computer, laptop computer, desktop computer, smart TV, media player, streaming device connected to a display device, game console, and / or any other suitable type of user device.
[0028] Process 100 can start at 102 by sending a request for a streaming video content item from a user device to a server. In some embodiments, the video content item can correspond to any suitable type of video content, such as a user-generated video, a music video, a television program, a movie, a live video, and / or any other suitable type of video content. In some embodiments, process 100 can send a request for a streaming video content item in response to any suitable information. For example, in some embodiments, in response to receiving a user input indicating a selection of a video content item at a user device, process 100 can send a request for a streaming video content item. As another example, in some embodiments, process 100 can send a request for a streaming video content item in response to determining that a page (e.g., a browser window, a feed of a social networking service, and / or any other suitable page) has been scrolled to a portion including an embedded video content item therein. Note that in some embodiments, a request for a streaming video content item can be sent from a user device by any suitable application executed on the user device. In some such embodiments, the application may be associated with any suitable entity or service, such as a media content sharing service, a social networking service, and / or any other suitable entity or service that hosts and / or streams the requested video content item.
[0029] In some embodiments, a request for a streaming video content item may include any suitable information, such as an identifier of the video content item, information related to a user device performing process 100 (e.g., a model of the user device, an identifier of the user device, a screen size or resolution of a display of the user device, a current orientation of the user device and / or a display associated with the user device, buffer capacity information, and / or any other suitable device information), information related to a network connection of the user device (e.g., a current bandwidth of the network connection, a current latency of the network connection, a current signal strength associated with the network connection, and / or any other suitable network information), and / or any other suitable information.
[0030] At 104, process 100 may receive a predicted abandonment distribution corresponding to the video content item from the server. In some embodiments, the predicted abandonment distribution may indicate any suitable information. For example, in some embodiments, the predicted abandonment distribution may indicate the probability or likelihood that a user watching the video content item will stop presenting the video content item at different time points of the video content item. In some embodiments, the predicted abandonment distribution may be normalized to the length of the video content item so that the predicted abandonment distribution indicates a predicted abandonment probability starting from [0, 1], where 0 indicates the initial time point of the video content item and 1 indicates the full duration of the video content item. An example of a predicted abandonment distribution may be: {(0.25, 40); (0.5, 80); (1, 90)}, indicating that the likelihood that the user will stop presenting the video content item at 0.25 of the duration of the video content item is 40%, the likelihood that the user will stop presenting the video content item at 0.5 of the duration of the video content item is 80%, and the likelihood that the user will stop presenting the video content item at the full length of the duration of the video content item is 90%. In some embodiments, the predicted abandonment distribution may indicate the probability of any suitable number of time points of the video content item. For example, in some embodiments, the predicted abandonment distribution may indicate the probability of being distributed along a continuous time. As another example, in some embodiments, the predicted abandonment distribution may indicate the probability of any suitable predetermined intervals of the complete duration of the video content item (e.g., at intervals of 0.1 of the duration of the video content item, at intervals of 0.01 of the duration of the video content item, and / or at any other suitable intervals). As yet another example, in some embodiments, the predicted abandonment distribution may indicate the probability of any suitable predetermined time point of the video content item (e.g., every second, every ten seconds, every minute, and / or at any other suitable time point).
[0031] In some embodiments, the predicted abandonment distribution may allow the user device to calculate the probability that the user of the user device will stop the presentation of the video content item between the current time t0 and the future time t, for example:
[0032] P(T≤t0+t|T>t0)
[0033] In some embodiments, the probability may be expressed as:
[0034]
[0035] Where F represents the abandonment distribution calculated by the server, and S represents the probability that the user will watch the video content item at least before time t0. Note that in some embodiments, S(t0)=1-F(t0). Figure 2 202 describes a more detailed technique for calculating the abandonment distribution F.
[0036] Note that in some embodiments, the predicted abandonment distribution may be determined by the server in any suitable manner and based on any suitable information (e.g., Figure 2 As shown in and combined with the following Figure 2 description information) to determine.
[0037] At 106, the user device may receive a first portion of the video content item from the server. In some embodiments, the first portion of the video content item may correspond to any suitable portion of the video content item and may have any suitable size (e.g., a particular number of kilobytes of data and / or any other suitable size) and / or duration (e.g., one second, two seconds, five seconds, and / or any other suitable duration).
[0038] At 108, process 100 can store the first portion of the video content item in a buffer of a user device having a first size. In some embodiments, the first size of the buffer can be set based on any suitable information. For example, in some embodiments, the first size of the buffer can be a default value (e.g., a default value set by the user device, a default value set by an application program executed on the user device for streaming media content, and / or any other suitable default value). In some embodiments, the first size of the buffer can correspond to any suitable size (e.g., a predetermined number of frames of media content, a predetermined size of the first portion of the video content item, and / or any other suitable size) and / or any suitable video content duration (e.g., two seconds, five seconds, ten seconds, and / or any other suitable duration).
[0039] At 110, process 100 can begin to present the first part of the video content item. In some embodiments, process 100 can begin to present the first part of the video content item in any suitable manner. For example, in some embodiments, process 100 can make the first part of the video content item be retrieved from a buffer before presenting the first part of the video content item. As another example, in some embodiments, process 100 can make the first part of the video content item be presented in a video player window presented on the user equipment performing process 100. In some such embodiments, the video player window can be presented in any suitable user interface, such as a user interface presented in an application for streaming media content from a specific media content sharing service, a user interface presented in a browser window, and / or any other suitable user interface.
[0040] At 112, process 100 may determine an updated buffer size based on the predicted abandonment distribution. In some embodiments, process 100 may determine the updated buffer size in any suitable manner. For example, in some embodiments, process 100 may determine the updated buffer size in response to determining that the predicted abandonment likelihood exceeds a predetermined threshold (e.g., greater than 50% likelihood that the user will stop presenting the video content item, greater than 70% likelihood that the user will stop presenting the video content item, and / or any other suitable likelihood), such that the updated buffer size is less than the first size of the buffer. As another example, in some embodiments, process 100 may determine the updated buffer size in response to determining that the predicted abandonment likelihood is less than a predetermined threshold (e.g., less than 10% likelihood that the user will stop presenting the video content item, less than 20% likelihood that the user will stop presenting the video content item, and / or any other suitable likelihood), such that the updated buffer size is greater than the first size of the buffer. Note that in some embodiments, any suitable predetermined threshold may be used to determine whether to increase or decrease the buffer size.
[0041] Note that in some embodiments, process 100 may determine the updated buffer size based on the predicted abandonment likelihood within a particular time range. For example, in some embodiments, process 100 may determine the updated buffer size based on the predicted abandonment likelihood within a predetermined duration (e.g., within the next minute, within the next five minutes, and / or any other suitable duration) starting from the current presentation time point of the video content item. As a more specific example, using the abandonment probability distribution of P(T≤t0+t|T>t0) given above, where t0 indicates the current time, process 100 may determine the probability that the user of the user device will stop presenting the video content item between the current time t0 and the future time t, where t is any suitable predetermined duration in the future (e.g., five seconds, ten seconds, one minute, three minutes, five minutes, and / or any other suitable duration). Note that in some embodiments, the future time t may be determined based on the current buffer size (e.g., the first buffer size, as described above in conjunction with 108). For example, where the current buffer size corresponds to a particular duration of the video content item (e.g., five seconds, ten seconds, and / or any other suitable duration), the future time t may correspond to the duration of the video content item associated with the current buffer size. Additionally or alternatively, note that in some embodiments, the future time t may be determined based on the total duration of the video content item.
[0042] In some embodiments, process 100 may determine the updated buffer size based on the predicted abandonment distribution using any suitable technique or combination of techniques. For example, in some embodiments, process 100 may modify the size of the buffer from the first size by increasing or decreasing the buffer size by a fixed amount. As another example, in some embodiments, process 100 may determine the change in buffer size based on the likelihood that the user of the user device will stop presenting the video content item (as calculated using the predicted abandonment distribution). As a more particular example, in the case where process 100 determines to increase the buffer size based on determining that the likelihood that the user will stop presenting the video content item is lower than a predetermined threshold, process 100 may determine the size of the increase in buffer size based on the amount by which the likelihood is lower than the predetermined threshold. As a specific example, in the case where process 100 calculates the likelihood that the user will stop presenting the video content item as 40% and the predetermined threshold is 60%, process 100 may determine that the buffer size will increase by a first amount (e.g., keep another three seconds of video content item, keep another five seconds of video content item, and / or any other suitable amount). Continuing with this specific example, where process 100 calculates the likelihood that the user will stop presenting the video content item as 10% and where the predetermined threshold is 60%, process 100 may determine that the buffer size is to be increased by a second amount that is greater than the first amount. Note that in some embodiments, process 100 may use similar techniques to determine an updated buffer size that is less than the first buffer size, for example, in response to determining that the likelihood that the user will stop presenting the video content item exceeds the predetermined threshold.
[0043] At 114, process 100 may modify the buffer size from the first size to the updated buffer size. In some embodiments, process 100 may modify the buffer size in any suitable manner. For example, in some embodiments, process 100 may send a function call to any suitable function that allocates a buffer for media content. In some such embodiments, process 100 may send the updated buffer size as a parameter, for example, to a buffer controller.
[0044] At 116, process 100 may request a second portion of the video content item from the server. In some embodiments, process 100 may request the second portion of the video content item based on any suitable information. For example, in some embodiments, in response to determining that the amount of video content stored in the buffer has dropped below a predetermined threshold (e.g., less than a predetermined duration of the video content item remaining in the buffer and / or any other suitable amount of video content items), process 100 may request the second portion of the video content item. As another example, in some embodiments, process 100 may request the second portion of the video content item in response to determining that more than a predetermined amount of the first portion of the video content item has been presented. Note that in some embodiments, process 100 may send an indication of the updated buffer size to the server.
[0045] Note that in some embodiments, process 100 may request a second portion of the video content item from the server based on a determination of whether a time delay has elapsed between requests for a portion of the video content item since a previous request for a portion (e.g., since a request sent at 102 for streaming the video content item and / or any other suitable previously sent request). In some embodiments, the time delay may be determined based on a predicted abandonment distribution. For example, given an example predicted probability that a user will stop presenting the video content item between t and t0 by the formula cited above:
[0046]
[0047] The probability can be expressed as:
[0048]
[0049] In some embodiments, x may represent the media position that the user device performing process 100 will reach before the abandonment probability drops to a threshold value P. In some embodiments, the abandonment distribution may be represented as:
[0050]
[0051] In some embodiments:
[0052]
[0053] In some embodiments, the time may be calculated as:
[0054]
[0055] The time delay can be calculated as:
[0056]
[0057] At 118, process 100 may receive the second portion of the video content item from the server in response to the request. In some embodiments, the second portion of the video content item may have any suitable size or duration. Note that in some embodiments, the second portion of the video content item may have a size or duration different from the size or duration of the first portion of the video content item described in conjunction with 106 above. For example, in some embodiments, the second portion of the video content item may have a size or duration corresponding to the updated buffer size. As a more particular example, in some embodiments, in the case where process 100 modifies the buffer size (e.g., as described above in conjunction with 114) to have a relatively smaller buffer size than the first size of the buffer, the second portion of the video content item may have a smaller size or a shorter duration than the first portion of the video content item. As another more particular example, in some embodiments, in the case where process 100 modifies the buffer size (e.g., as described above in conjunction with 114) to have a relatively larger buffer size than the first size of the buffer, the second portion of the video content item may have a larger size or a longer duration than the first portion of the video content item.
[0058] At 120, while continuing to present the video content item, process 100 may store the second portion of the video content item in the buffer. In some embodiments, process 100 may continue to present the video content item in any suitable manner. For example, in some embodiments, process 100 may continue to retrieve portions of the video content item from the buffer and present the retrieved portions of the video content item in the video player window, such as described above in conjunction with 106.
[0059] In some embodiments, process 100 can loop back to 112 and can determine an updated buffer size based on the predicted abandonment distribution (i.e., can determine the third size of the buffer of the user device), and can modify the buffer size to the updated (third) buffer size at 114 when continuing to present the content item. Note that in some embodiments, process 100 can change the size of the buffer in sequence multiple times during the presentation of the video content item based on the predicted abandonment distribution. In some such embodiments, process 100 can change the size of the buffer any suitable number of times (e.g., once, twice, three times, ten times and / or any other suitable number of times) during the presentation of the video content item. As a specific example, in the case where the predicted abandonment distribution indicates that the user is relatively likely to stop the presentation of the video content item at the beginning of the video content item, process 100 can make the buffer have a correspondingly small size during the presentation of the beginning portion of the video content item. Continuing this example, in the case where the user does not stop the presentation of the video content item during the beginning portion of the video content item and where the predicted abandonment distribution indicates that the user is unlikely to stop the presentation of the video content item during the middle portion of the video content item, process 100 can increase the buffer size during the presentation of the middle portion of the video content item. Continuing with the example further, in a scenario where the user does not stop presentation of the video content item during the middle portion of the video content item and where the predicted abandonment distribution indicates that the user is likely to stop presentation of the video content item during the ending portion of the video content item before the full duration of the video content item, process 100 may cause the buffer size to be reduced during presentation of the ending portion of the video content item.
[0060] Steering Figure 2 , an illustrative example 200 of a process for determining a predicted abandonment distribution according to some embodiments of the disclosed subject matter is shown. In some embodiments, blocks of process 200 can be performed by a server (e.g., a server that hosts and / or streams media content to a user device). Note that in some embodiments, the server can be associated with a particular media content sharing service that hosts any suitable media content (e.g., user-generated media content, videos, television programs, movies, music, and / or any other suitable type of media content) and streams the media content to the user device.
[0061] Process 200 may begin by calculating a predicted abandonment distribution for a video content item at 202. Figure 1As described in 104, in some embodiments, the predicted abandonment distribution can indicate any suitable information. For example, in some embodiments, the predicted abandonment distribution can indicate the probability or likelihood that a user watching the video content item will stop presenting the video content item at different time points in the video content item. In some embodiments, the predicted abandonment distribution can be normalized to the length of the video content item, so that the predicted abandonment distribution indicates a predicted abandonment probability starting from [0, 1], where 0 represents the initial time point of the video content item, and where 1 indicates the complete duration of the video content item. As described above in conjunction with Figure 1 As described in 104, examples of predicted abandonment distributions may include the following values: {(0.25, 40); (0.5, 80); (1, 100)}, indicating a 40% likelihood that the user will stop presenting the video content item at 0.25 of the duration of the video content item, an 80% likelihood that the user will stop presenting the video content item at 0.5 of the duration of the video content item, and a 100% likelihood that the user will stop presenting the video content item at the full length of the duration of the video content item. Note that in some embodiments, the predicted abandonment distribution may be a completely continuous distribution, such that the predicted abandonment probability may be calculated at any point in time. Alternatively, in some embodiments, the predicted abandonment distribution may indicate probabilities at any suitable number of points in time for the video content item. For example, in some embodiments, the predicted abandonment distribution may indicate probabilities at any suitable predetermined intervals of the full duration of the video content item (e.g., at intervals of 0.1 of the duration of the video content item, at intervals of 0.01 of the duration of the video content item, and / or at any other suitable intervals). As another example, in some embodiments, the predicted abandonment distribution may indicate a probability at any suitable predetermined time point of the video content item (eg, every second, every ten seconds, every minute, and / or at any other suitable time point).
[0062] In some embodiments, process 200 can calculate the prediction abandonment distribution in any suitable manner and using any suitable technology. For example, in some embodiments, process 200 can model any suitable distribution of the likelihood or probability of indicating that the user will stop the presentation of the video content item at different points along the distribution. In some embodiments, process 200 can generate a model using data related to the video content item previously viewed by any suitable user group. Note that in some embodiments, process 200 can generate a model using a data set of any suitable size (e.g., thousands of previously viewed video content items, millions of previously viewed video content items and / or any other suitable size). In addition, note that in some embodiments, process 200 can pre-process the data for generating the model in any suitable manner before generating the model. For example, in some embodiments, process 200 can discard any suitable outlier, such as a video content item (indicating that the video content item is accidentally selected) and / or any other suitable outlier that has been viewed for a duration of zero time. In some embodiments, the duration of the video content item can be normalized so that the distribution of the range spans [0,1]. In some embodiments, any suitable distribution may be used, such as a Kumaraswamy distribution, a Beta distribution, a logit transformed distribution, and / or any other suitable distribution.
[0063] In some embodiments, process 200 can use any suitable technology or technology combination to model distribution.For example, in some embodiments, distribution can be modeled as a single expansion mixture of regression.As a more specific example, in some embodiments, distribution can be modeled as a mixture or combination of two or more regressions, such as a first regression modeling the likelihood of a user watching the entire video content item and a second regression modeling the likelihood of a user stopping the presentation of the video content item at different time points.In some embodiments, each regression included in the regression mixture can be a different type of regression (e.g., Kumaraswamy regression, Beta regression, logistic regression and / or any other suitable type of regression).For example, in some embodiments, the first regression modeling the likelihood of a user watching the entire video content item can be a logistic regression, and the second regression modeling the likelihood of a user stopping the presentation of the video content item at different time points can be a Kumaraswamy regression.Note that in some embodiments, the first regression modeling the likelihood of a user watching the entire video content item can be a classifier of any suitable type, such as a gradient boosted tree classifier and / or any other suitable type of classifier. Additionally, note that in some embodiments, each regression in a regression mixture can have any suitable number of terms corresponding to any suitable components or predictors, and can have any suitable number of cross terms. For example, in some embodiments, a first regression and a second regression in a regression mixture can both include the same predictors and the same cross terms. As another example, in some embodiments, the second regression can be a Kumaraswamy regression including any suitable quadratic terms.
[0064] Note that in some embodiments, where process 200 generates a regression mix in which a first regression models the likelihood that a user viewed a video content item in its entirety, process 200 may determine during generation of the training data set whether video content items included in the training set were viewed in their entirety in any suitable manner. For example, in some embodiments, process 200 may determine (e.g., using log data associated with playback of each video content item) whether a state of a video player used to present the video content item changed in any suitable manner to indicate that the video content item was presented in its entirety by the video player.
[0065] Additionally, note that in some embodiments, in addition to generating a mixture of regressions as described above, in some embodiments, process 200 can process the data used to generate the model to shrink the data points to any suitable intermediate value, such as 0.5, so that no zero or one values are included in the data. In some embodiments, process 200 can transform the data points to shrink the data points using any suitable shrinkage function.
[0066] In some embodiments, each regression can be based on a different set of predictors used to generate the regression. In some embodiments, the predictor set can include any suitable factors or variables. For example, in some embodiments, the predictor set can include characteristics of the video content item, such as the duration of the video content item, the logarithm of the duration of the video content item, whether the video content item includes background music, whether the video content item is an advertisement, whether the video content item is a skippable advertisement, and / or any other suitable characteristics of the video content item. As another example, in some embodiments, the predictor set can include characteristics related to the manner in which the video content item is linked or embedded in other content (e.g., in a web page, in a social network post, in a message, and / or in any other suitable type of content), such as the type of interface in which the video content item is linked or embedded (e.g., whether the video content item is embedded in a website or social network post, whether the video content item has been set to autoplay by default, whether the video content item has been set to mute by default, whether the video content item has been set to have mute audio content when embedded inline, and / or any suitable characteristics). As yet another example, in some embodiments, the predictor set may include information indicating buffering of the video content item, such as the likelihood that a user will stop presentation of the video content item if the video content item is paused for rebuffering, the expected duration required to rebuffer the video content item, the expected number of times the video content item will be rebuffered, and / or any other suitable buffering information. As yet another example, in some embodiments, the predictor set may include information related to the manner in which other users previously viewed the video content item, such as the average duration for which previous users viewed the video content item, the proportion of users who viewed the video content item in its entirety, the proportion of users who stopped presentation of the video content item before a particular presentation time point (e.g., before a midpoint of the video content item, before a particular presentation timestamp, and / or any other suitable time point), and / or any other suitable previous viewing information. As a further example, in some embodiments, the predictor set may include seek information related to the manner in which the video content item is currently being viewed or was previously viewed, wherein seek instructions during video playback may be considered play abandonments.
[0067] In some embodiments, process 200 may use any suitable technique or combination of techniques to fit the regressions in the regression mixture. For example, in some embodiments, process 200 may use expectation maximization to generate coefficients for each predictor associated with each regression. As a more particular example, in some embodiments, the Kumaraswamy regression used in the regression mixture may have distribution parameters that depend on any suitable predictor variables (as described above) through the following relationship: log(a)=P*X and log(b)=Q*X, where P and Q are coefficient matrices and X is a covariate vector. In some embodiments, process 200 may use maximum likelihood estimation to estimate model parameters (e.g., coefficient matrices P and Q) using any suitable technique or combination of techniques (e.g., Newton-Raphson method and / or any other suitable technique). As another example, in some embodiments, where logistic regression is used to model a first regression indicating the likelihood that a user will watch a complete video content item, any suitable technique or combination of techniques may be used to calculate coefficients associated with any suitable predictor of the logistic regression.
[0068] At 204, process 200 may receive a request for a portion of a video content item from a user device. In some embodiments, process 200 may receive a request for a portion of a video content item in any suitable manner. For example, in some embodiments, process 200 may receive an indication that a user of a user device has selected a specific video content item to be presented on the user device. As another example, in some embodiments, process 200 may receive such an indication that a page in which a video content item is embedded has been navigated so that the video content item is visible.
[0069] Note that in some embodiments, process 200 may receive from a user device any suitable information related to the user device (e.g., a model of the user device, an identifier of the user device, a screen size or resolution of a display associated with the user device, a current orientation of the user device and / or a display associated with the user device, and / or any other suitable information) and / or any suitable information related to a connection between the user device and a communication network for receiving streamed media content (e.g., a current bandwidth of the connection, a current latency of the connection, a current signal strength of the connection, an identifier of the connection type, and / or any other suitable information).
[0070] At 206, process 200 can send the predicted abandonment distribution corresponding to the requested video content item to the user equipment. In some embodiments, process 200 can send the predicted abandonment distribution in any suitable manner. For example, in the case where the predicted abandonment distribution is a continuous distribution, process 200 can send the parameters of the continuous distribution to the user equipment. As another example, in some embodiments, process 200 can format the predicted abandonment distribution as an array, wherein the first element set of the array indicates the different time points of the video content items normalized from 0 to 1, and wherein the second element set of the array indicates the likelihood that the user who watches the video content items will stop presenting the video content items at each corresponding time point. In some such embodiments, process 200 can send the array to the user equipment.
[0071] At 208, process 200 can send a portion of the video content item to the user device. Note that in some embodiments, process 200 can identify a file corresponding to a portion of the video content item before sending the portion of the video content item to the user device. For example, in some embodiments, process 200 can identify a file corresponding to a version of a portion of the video content item, and the version of the portion of the video content item is identified based on information associated with the user device and / or information associated with the connection of the user device and the communication network. As a more specific example, in some embodiments, process 200 can identify a version of a video content item associated with a specific resolution based on the screen size of a display associated with the user device. As another more specific example, in some embodiments, process 200 can identify a version of a video content item associated with a specific resolution based on the current bandwidth of a network connection.
[0072] At 210, process 200 may optionally receive a request for a second portion of the video content item from the user device. In some embodiments, the request for the second portion of the video content item may include any suitable information. For example, in some embodiments, the request for the second portion of the video content item may include an updated buffer size used by the user device, such as described above in conjunction with Figure 1As described in 112-116 of . As another example, in some embodiments, the request for the second portion of the video content item may include any suitable network information related to the network connection used by the user device (e.g., the current bandwidth associated with the connection, the current latency associated with the connection, the current signal strength associated with the connection, and / or any other suitable network information). As yet another example, in some embodiments, the request for the second portion of the video content item may include device information related to the user device (e.g., the current buffer capacity of the user device, the current buffer size of the buffer used by the user device, the current display orientation of the display associated with the user device, and / or any other suitable information).
[0073] At 212, process 200 can send the second part of the video content item to the user device in response to receiving the request. In some embodiments, process 200 can identify the file before sending the video data included in the file associated with the second part of the video content item. For example, in some embodiments, process 200 can identify the file corresponding to the specific resolution of the video content based on any suitable information, such as based on the current network information associated with the network connection of the user device, based on the resolution or size of the display associated with the user device and / or based on any other suitable information. Note that in some embodiments, the second part of the video content item can have any suitable size or duration. For example, in some embodiments, the second part of the video content item can have a size and / or duration corresponding to the update buffer size used by the user device. As a more specific example, in some embodiments, in the case where the request for the second part of the video content item indicates that the user device has modified the size of the buffer to be less than the size of the buffer for storing (for example, as sent at 208) the first part of the video content item, process 200 can send the second part of the video content item that is smaller than the first part of the video content item and / or has a shorter duration than the first part of the video content item. Conversely, where the request for the second portion of the video content item indicates that the user device has modified the size of the buffer to be larger than the size of the buffer used to store the first portion of the video content item, process 200 may send the second portion of the video content item that is larger than and / or lasts longer than the first portion of the video content item.
[0074] Note that in some embodiments, in the event that the video content item is an advertisement, process 200 may send more than the portion of the video content item requested by the user device. For example, in some embodiments, in the event that the request for the second portion of the video content item indicates that the second portion is relatively small in size and / or short in duration (e.g., in response to determining that the user of the user device may stop presentation of the video content item), in response to determining that the video content item is an advertisement, process 200 may send more than the requested amount or duration of the video content item.
[0075] In some embodiments, process 200 may loop back to 210 and may receive another request for another portion of the video content item. In some such embodiments, process 200 may loop through 210 and 212 until the entire video content item has been streamed to the user device or process 200 receives an indication that the user of the user device has stopped presenting the video content item.
[0076] Note that although processes 100 and 200 are generally described as a user device receiving a predicted abandonment distribution, determining a buffer size based on the predicted abandonment distribution, and modifying the buffer size based on the determined buffer size, in some embodiments, the server may determine an updated buffer size based on the predicted abandonment distribution. For example, similar to the above in conjunction with Figure 1 As described in block 112 of , in some embodiments, the server may determine whether to increase or decrease the buffer size based on the predicted abandonment distribution. In some embodiments, the server may then send an indication of the change in buffer size to the user device. In addition, in some embodiments, the server may change the size of a portion of the video content item sent to the user device. For example, in the case where the first portion of the video content item sent to the user device has a first size or a first duration and the server determines that the buffer size will become smaller (e.g., in response to determining that the likelihood that the user will stop the presentation of the video content item is relatively high), the server may send a second portion of the video content item with a relatively small size or a relatively short duration. On the contrary, in the case where the server determines that the buffer size will become larger (e.g., in response to determining that the likelihood that the user will stop the presentation of the video content item is relatively low), the server may send a second portion of the video content item with a relatively large size or a relatively long duration. Additionally or alternatively, in some embodiments, the server may calculate a time delay between the times when a portion of the video content item will be sent, wherein the time delay corresponds to the duration of the video content item that the user device is buffering. In some such embodiments, the server may pause sending subsequent portions of the video content item to the user device until the server determines that the time delay has passed. Note that in some such embodiments, the time delay used by the server may be modified during streaming of the video content item based on the predicted drop distribution.
[0077] Steering Figure 3 , shows an illustrative example 300 of hardware for streaming video content using an adaptive buffer that can be used according to some embodiments of the disclosed subject matter. As shown, hardware 300 can include a server 302, a communication network 304, and / or one or more user devices 306, such as user devices 308 and 310.
[0078] Server 302 can be any suitable server for storing information, data, programs, media content, and / or any other suitable content. In some embodiments, server 302 can perform any suitable function. For example, in some embodiments, server 302 can send media content (e.g., video content, audio content, and / or any other suitable audio content) to a user device, such as one of user devices 306. As a more specific example, in some embodiments, server 302 can stream media content to a user device in response to a request for media content. As another example, in some embodiments, server 302 can determine a predicted abandonment distribution indicating the likelihood that a user of a user device that streams media content items from server 302 will stop presentation of the media content item at different presentation time points of the media content item, such as in combination with Figure 2 shown and described above.
[0079] In some embodiments, the communication network 304 can be any suitable combination of one or more wired and / or wireless networks. For example, the communication network 304 can include any one or more of the Internet, an intranet, a wide area network (WAN), a local area network (LAN), a wireless network, a digital subscriber line (DSL) network, a frame relay network, an asynchronous transmission mode (ATM) network, a virtual private network (VPN), and / or any other suitable communication network. The user device 306 can be linked to the communication network 304 through one or more communication links (e.g., communication link 312), and the communication network 304 can be linked to the server 302 through one or more communication links (e.g., communication link 314). The communication link can be any communication link suitable for transmitting data between the user device 306 and the server 302, such as a network link, a dial-up link, a wireless link, a hard-wired link, any other suitable communication link, or any suitable combination of these links.
[0080] User device 306 may include any one or more user devices suitable for streaming media content from server 302. In some embodiments, user device 306 may include any suitable type of user device, such as a mobile phone, a tablet computer, a wearable computer, a laptop computer, a desktop computer, a smart television, a media player, a game console, a vehicle information and / or entertainment system, and / or any other suitable type of user device. In some embodiments, user device 306 may adaptively modify the size of a buffer for storing media content received from server 302 during streaming of the media content. For example, in some embodiments, user device 306 may modify the size of the buffer based on a predicted abandonment distribution received from server 302, the predicted abandonment distribution indicating the likelihood that user device 306 will continue to present the media content item, such as in combination with Figure 1 shown and described above.
[0081] Although server 302 is illustrated as one device, in some embodiments, any suitable number of devices may be used to perform the functions performed by server 302. For example, in some embodiments, the functions performed by server 302 may be implemented using multiple devices.
[0082] although Figure 3 Two user devices 308 and 310 are shown in the figure to avoid overly complicating the figure, and any suitable number of user devices and / or any suitable type of user devices may be used in some embodiments.
[0083] In some embodiments, server 302 and user device 306 may be implemented using any suitable hardware. For example, in some embodiments, devices 302 and 306 may be implemented using any suitable general-purpose computer or special-purpose computer. For example, a special-purpose computer may be used to implement a mobile phone. Any such general-purpose computer or special-purpose computer may include any suitable hardware. For example, Figure 4 As shown in example hardware 400 , such hardware may include a hardware processor 402 , a memory and / or storage device 404 , an input device controller 406 , an input device 408 , a display / audio driver 410 , a display and audio output circuit 412 , a communication interface 414 , an antenna 416 , and a bus 418 .
[0084] In some embodiments, the hardware processor 402 may include any suitable hardware processor, such as a microprocessor, a microcontroller, a digital signal processor, dedicated logic, and / or any other suitable circuit for controlling the functions of a general-purpose computer or a special-purpose computer. In some embodiments, the hardware processor 402 may be controlled by a server program stored in a memory and / or storage device of a server (server 302). In some embodiments, the hardware processor 402 may be controlled by a computer program stored in a memory and / or storage device 404 of a user device 306.
[0085] In some embodiments, the memory and / or storage device 404 may be any suitable memory and / or storage device for storing programs, data, and / or any other suitable information. For example, the memory and / or storage device 404 may include a random access memory, a read-only memory, a flash memory, a hard disk storage device, an optical medium, and / or any other suitable memory. An adaptive buffer may be defined in the memory and / or storage device 404, for example, by the hardware processor 402.
[0086] In some embodiments, the input device controller 406 may be any suitable circuit for controlling and receiving input from one or more input devices 408. For example, the input device controller 406 may be a circuit for receiving input from a touch screen, from a keyboard, from one or more buttons, from a voice recognition circuit, from a microphone, from a camera, from an optical sensor, from an accelerometer, from a temperature sensor, from a near-field sensor, from a pressure sensor, from an encoder, and / or from any other type of input device.
[0087] In some embodiments, display / audio driver 410 may be any suitable circuit for controlling and driving output to one or more display / audio output devices 412. For example, display / audio driver 410 may be circuitry for driving a touch screen, a flat panel display, a cathode ray tube display, a projector, one or more speakers, and / or any other suitable display and / or presentation device.
[0088] Communication interface 414 may be any suitable circuitry for interfacing with one or more communication networks (eg, computer network 304). For example, interface 414 may include network interface card circuitry, wireless communication circuitry, and / or any other suitable type of communication network circuitry.
[0089] In some embodiments, antenna 416 may be any suitable antenna or antennas for wirelessly communicating with a communication network, such as communication network 304. In some embodiments, antenna 416 may be omitted.
[0090] In some embodiments, bus 418 may be any suitable mechanism for communicating between two or more components 402 , 404 , 406 , 410 , and 414 .
[0091] According to some embodiments, any other suitable components may be included in hardware 400 .
[0092] In some embodiments, at least some of the above Figure 1 and Figure 2 The blocks of the process may be executed or implemented in any order or sequence (not limited to the order and sequence shown and described in conjunction with the figures). Figure 1 and Figure 2 Some of the above blocks may be executed or implemented substantially simultaneously or in parallel where appropriate to reduce latency and processing time. Additionally or alternatively, Figure 1 and Figure 2 Some of the above boxes of the process.
[0093] In some embodiments, any suitable computer-readable medium can be used to store instructions for performing the functions and / or processes of the present invention. For example, in some embodiments, the computer-readable medium can be temporary or non-temporary. For example, non-temporary computer-readable media can include media, such as non-temporary forms of magnetic media (e.g., hard disks, floppy disks, and / or any other suitable magnetic media), non-temporary forms of optical media (e.g., optical disks, digital video disks, Blu-ray disks, and / or any other suitable optical media), non-temporary forms of semiconductor media (e.g., flash memory, electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and / or any other suitable semiconductor media), any suitable medium that is not fleeting or does not have any persistence during transmission, and / or any suitable tangible medium. As another example, a temporary computer-readable medium can include a signal on a network, a wire, a conductor, an optical fiber, a circuit, any suitable medium that is fleeting and does not have any persistence during transmission, and / or any suitable intangible medium.
[0094] Thus, methods, systems, and media for streaming video content using an adaptive buffer are provided.
[0095] Although the present invention has been described and illustrated in the foregoing illustrative embodiments, it should be understood that the present disclosure is made by way of example only and that various changes may be made to the implementation details of the present invention without departing from the spirit and scope of the present invention (which is limited only by the appended claims). The features of the disclosed embodiments may be combined and rearranged in various ways.
Claims
1. A method for streaming video content using a buffer, the method comprising: sending a request from a user device to a server for streaming a video content item; receiving, at the user device from the server, a predicted abandonment distribution indicating a plurality of likelihoods that a user of the user device will cease presentation of the video content item at a corresponding plurality of presentation time points of the video content item; receiving, at the user device, a first portion of the video content item from the server; storing a first portion of the video content item in a buffer of the user device having a first size; causing the video content item to be presented by the user device; determining a second size of the buffer based on the predicted discard distribution; Modifying the size of the buffer to the second size; requesting a second portion of the video content item from the server based on a second size of the buffer; receiving a second portion of the video content item from the server; as well as A second portion of the video content item is stored in the buffer having the second size while continuing to present the video content item.
2. The method according to claim 1, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presentation of the video content item is below a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods is below the predetermined threshold, it is determined that a second size of the buffer is to be greater than the first size.
3. The method according to claim 1, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presenting the video content item exceeds a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods exceeds the predetermined threshold, it is determined that a second size of the buffer is to be less than the first size.
4. The method according to claim 1, further comprising: determining a third size of the buffer based on the predicted abandonment distribution; as well as The size of the buffer is modified to the third size while continuing to present the video content item.
5. The method according to any one of claims 1 to 4, wherein: The predicted abandonment distribution is normalized to the duration of the video content item.
6. The method according to any one of claims 1 to 4, wherein: The predicted abandonment distribution is calculated based on a duration of the video content item.
7. The method according to any one of claims 1 to 4, wherein: The predicted abandonment distribution is calculated based on characteristics of the video content item.
8. A system for streaming video content using a buffer, the system comprising: A hardware processor configured to: sending a request from a user device to a server for streaming a video content item; receiving, at the user device from the server, a predicted abandonment distribution indicating a plurality of likelihoods that a user of the user device will cease presentation of the video content item at a corresponding plurality of presentation time points of the video content item; receiving, at the user device, a first portion of the video content item from the server; storing a first portion of the video content item in a buffer of the user device having a first size; causing the video content item to be presented by the user device; determining a second size of the buffer based on the predicted discard distribution; Modifying the size of the buffer to the second size; requesting a second portion of the video content item from the server based on a second size of the buffer; receiving a second portion of the video content item from the server; as well as A second portion of the video content item is stored in the buffer of the second size while continuing to present the video content item.
9. The system according to claim 8, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presentation of the video content item is below a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods is below the predetermined threshold, it is determined that a second size of the buffer is to be greater than the first size.
10. The system according to claim 8, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presenting the video content item exceeds a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods exceeds the predetermined threshold, it is determined that a second size of the buffer is to be less than the first size.
11. The system according to claim 8, wherein: The hardware processor is also configured to: determining a third size of the buffer based on the predicted discard distribution; and The size of the buffer is modified to the third size while continuing to present the video content item.
12. A system according to any one of claims 8 to 11, wherein: The predicted abandonment distribution is normalized to the duration of the video content item.
13. A system according to any one of claims 8 to 11, wherein: The predicted abandonment distribution is calculated based on a duration of the video content item.
14. A system according to any one of claims 8 to 11, wherein: The predicted abandonment distribution is calculated based on characteristics of the video content item.
15. A computer readable medium comprising computer executable instructions which, when executed by a processor, cause the processor to perform a method for streaming video content using a buffer, the method comprising: sending a request from a user device to a server for streaming a video content item; receiving, at the user device from the server, a predicted abandonment distribution indicating a plurality of likelihoods that a user of the user device will cease presentation of the video content item at a corresponding plurality of presentation time points of the video content item; receiving, at the user device, a first portion of the video content item from the server; storing a first portion of the video content item in a buffer of the user device having a first size; causing the video content item to be presented by the user device; determining a second size of the buffer based on the predicted discard distribution; Modifying the size of the buffer to the second size; requesting a second portion of the video content item from the server based on a second size of the buffer; receiving a second portion of the video content item from the server; as well as A second portion of the video content item is stored in the buffer having the second size while continuing to present the video content item.
16. The computer-readable medium of claim 15, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presentation of the video content item is below a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods is below the predetermined threshold, it is determined that a second size of the buffer is to be greater than the first size.
17. The computer-readable medium of claim 15, wherein: Determining a second size of the buffer based on the predicted discard distribution includes: determining that a likelihood among the plurality of likelihoods that a user of the user device has ceased presenting the video content item exceeds a predetermined threshold; and In response to determining that the likelihood of the plurality of likelihoods exceeds the predetermined threshold, it is determined that a second size of the buffer is to be less than the first size.
18. The computer-readable medium of claim 15, wherein: The method further comprises: determining a third size of the buffer based on the predicted discard distribution; and The size of the buffer is modified to the third size while continuing to present the video content item.
19. The computer-readable medium of any one of claims 15 to 18, wherein: The predicted abandonment distribution is normalized to the duration of the video content item.
20. The computer readable medium of any one of claims 15 to 18, wherein: The predicted abandonment distribution is calculated based on a duration of the video content item.
21. The computer readable medium of any one of claims 15 to 18, wherein: The predicted abandonment distribution is calculated based on characteristics of the video content item.
Citation Information
Patent Citations
Predictive cached buffer for communication devices
US20160248704A1