BACKGROUND

This disclosure is generally directed to dynamically synchronizing a presentation of a time-shifted frame of a content item to a live stream of the content item. In particular, methods and systems are provided for transitioning to the latest frame of the live stream of the content item by intelligently skipping a subset of time-shifted frames.

SUMMARY

With the advent of the internet and the increasing popularity of playing content items over the internet, live streaming of a content item (e.g., media asset) has become one of the most popular content delivery types. Sometimes, a presentation of the content item on a user device may lag behind the live streaming of the content item, causing a noticeable latency of the presentation between what should have been presented and what is currently presented. In one example, the lag may occur due to an unstable or slow network connection or low computer performance. In another example, the lag may occur due to a trick play (e.g., rewind or pause) requested by a user.

To address such lag in the content item's presentation, in one approach, the system will simply keep playing the content item behind the live streaming without ever catching up. This approach is deficient because the user may be exposed to a spoiler via a different content delivery method. For example, the user may receive a notification showing an up-to-date soccer game score on a mobile phone while watching a delayed soccer game on a laptop. This may prevent the user from thoroughly enjoying the soccer game because knowing the game's outcome can diminish the full experience of watching a live sports game.

In another approach, the system will allow the user to instantly catch up to live (e.g., by pressing a “live” button). This approach is also deficient because the instant catch-up will entail simply not showing a large number of frames (e.g., if the lag was 2 minutes, then 2 minutes of the content may be not shown), which will cause the user to miss important scenes that are critical to the content item and end up not having enough context to fully understand the content.

To overcome such deficiencies, methods and systems are described herein for gradually catching the presentation of the content item up to the live stream by skipping subsets of missed segments of the content item while still presenting important subsets of the content item. For example, upon determining that the playing of the content item lags behind the live streaming of the content item, a streaming application determines a skippable bit value for a missed segment of the content item. The streaming application may determine skippable bit value from a manifest of the content item, which includes segment information and skippable bit value information for each segment. The skippable bit value indicates whether a presentation of a respective segment or a frame can be skipped to catch up to live.

If a skippable bit value includes an enabled bit value, then the streaming application skips a presentation of a respective segment. If a skippable bit value includes a disabled bit value, then the streaming application does not skip a presentation of a respective segment and plays the respective segment because it is considered an important segment to understand the context of the content item. If a respective segment includes a disabled skippable bit value, then the data of the respective segment may be retrieved from a respective network address, and the respective segment may be played based on the data retrieved from the respective network address.

The present disclosure addresses the problems of both a) never catching up orb) instantly catching up. It may do so by, for example, identifying important portions of the missed segments (e.g., by disabling the skippable bit for those portions) and determining which segments to skip to eventually catch up to the live stream, thereby enabling the user to consume live video yet still presenting enough content of the missed segments needed to understand the context of the content item. The present disclosure further addresses the problems described above by, for example, saving the network bandwidth and reducing network traffic by not sending less important segments, for the purpose of catching up to live.

In one embodiment, when the playing of a content item lags behind the live streaming, a user is often provided with limited catching-up options to address the lagging problem. For example, in one approach, the streaming application may display an option for the user to skip all the missed segments to go live instantly. In another approach, the streaming application may not present any options. These approaches may be deficient because each user may have different preferences for how much time they would like to spend watching the missed segments or how much content to consume to catch up to live based on the content item. Yet, these approaches do not give each user different catching-up options that meet each user's preferences and viewing situations.

The present disclosure addresses the problems of both a) never catching up to live orb) catching up instantly, by generating for display a user-selectable option to choose a time period during which to view the missed portion of the content item or to specify a desired amount of content to be presented to the user. For example, when playing of the content item lags behind the live streaming of the content item, a streaming application may present user-selectable options. The example selectable options include an option for a user to select a particular time period, which specifies how long the user wants the missed segments to be presented before catching up to live. Selecting the particular time period (e.g., two minutes) allows the user to skip only a certain portion of the missed segments and play a user-designated amount of the missed segments, such that the playing of the content item catches up to live in the selected particular time period.

In some embodiments, when playing of the content item lags behind the live streaming, the system takes various approaches to address the lagging problem. In one approach, the system caches all the remaining segments of the content item from a server of a content item source to store the segments in a cache. This approach may be deficient, because it may take up too much memory to store all the cached segments, some of which may never even be played.

In another approach, the streaming application may request segments of the content item from the server of the content item source directly in real time for data transmission without caching any of the segments. This approach may also be deficient, because it may strain the network in real time. Requesting segments of the content item in real time may lead to a more severe lag due to the network bandwidth consumption for transmitting a large amount of data during the period of the lag.

The present disclosure addresses the problems described above by storing an appropriate number of time-shifted segments (e.g., missed segments due to a delay) in a way that does not overuse the network resources. For example, methods and systems are described herein for storing a portion of segments of a content item in the cache and playing the portion of the segments from the cache. When playing of the content item lags behind the live streaming of the content item, the streaming application identifies a duration of the lag (e.g., two minutes) from a manifest of the content. The manifest may include segment information of the content item and priority level value information for each segment (or a frame). A priority level value may establish a relative position of a respective segment or frame with other segments or frames in determining whether the respective segment or frame needs to be stored in the cache for later presentation.

From the identified duration of the lag, the streaming application determines a priority threshold (e.g., five). A priority threshold may be used to determine the number of segments to store in the cache to provide a seamless viewing experience with the content item and still to catch up to live. For example, based on the duration of the lag, the streaming application determines a set of segments of the content item that fits within the lag (e.g., three segments within the two-minute lag).

Among the three identified segments (or frames), a subset of the segments with a priority level above the priority threshold is determined (e.g., segment2with a priority level of seven is identified because its priority level is higher than the priority threshold of five). The streaming application stores a respective identified segment with a higher priority level than the priority threshold in the cache for later viewing. The present disclosure addresses the problems described above by, for example, caching only a portion of segments that are important enough to not miss the context of the missed segments that helps the users to understand the next segments of the content item, and also by minimizing use of network resources, bandwidth consumption, and amount of local storage dedicated to caching.

