Method for improving offline content playback

In a method and system for offline content playback, a first plurality of portions of content streamed from a content sharing service for presentation by a media player is received. A request from a user to make the content available for offline playback is received, and in response to the request, a second plurality of portions of the content streamed from the content sharing service for presentation by the media player is stored. The first plurality of portions is requested and received from the content sharing service. The received first plurality of portions is stored, such that the first plurality of portions and the second plurality of portions are available for offline playback.

TECHNICAL FIELD

Aspects of the present disclosure relate to the field of content presentation and, more particularly, to a method for offline content playback.

BACKGROUND

On the Internet, content hosting websites or other applications, e.g., content sharing servers, allow users to upload, view, and share digital content. Such digital content may include audio clips, movie clips, TV clips, and music videos, as well as amateur content such as video blogging, short original videos, pictures, photos, etc. A viewer can then view the content that is streamed from a content sharing server to a viewer device for playback, where the quality of the streaming content can vary depending on the network connection of the viewer device. For example, the viewer device can request lower quality content if the connection speed is slow to prevent buffering that disrupts the playback of the content.

However, viewers may desire to have the content available, e.g., temporarily available, for viewing offline, e.g., without a connection to the Internet or another network. For example, a user may determine during the playback of certain content that the user would like to play the content again later or share the content with someone else when the user does not have access to the content sharing server. Further, a user would likely desire to have the highest quality content available for offline playback, because network conditions are not an issue when the content is not being streamed.

SUMMARY

In some implementations, a method for off-line content playback is presented. The method includes receiving a first plurality of portions of content streamed from a content sharing service for presentation by a media player, and receiving a request from a user to make the content available for offline playback. In response to the request, a second plurality of portions of the content streamed from the content sharing service for presentation by the media player is stored. The first plurality of portions is requested and received from the content sharing service. The received first plurality of portions is stored, such that the first plurality of portions and the second plurality of portions are available for offline playback.

In some implementations, a lower-quality portion of the first plurality of portions of the content and the stored second plurality of portion the content is identified; and, in response to identifying that the lower-quality portion of the content, a replacement portion with a higher quality is requested from the content sharing service.

In some implementations, the replacement portion with the higher quality is received and stored, wherein the replacement portion replaces the portion having the lower quality. The content is then made available for offline playback with the replacement portion. The lower-quality portion can be identified via a manifest.

The requesting of the first plurality of portions can be in response to a completion of the presentation of the second plurality of portions. If a connection to the content sharing service is interrupted before receiving the replacement portion with the higher quality, the content remains available for offline playback with the lower-quality portion. The request to make the content available for offline playback can be received after the presentation of the first plurality of portions.

DETAILED DESCRIPTION

Aspects of the disclosure pertain to a method for offline content playback, such as the playback of video or audio, when a user device is not connected to a content sharing service via a network. In some implementations, a method is provided that allows users to make streaming content from a content sharing service, such as audio or video content, available for offline playback, e.g., temporarily available for offline playback, so the content can be played later without a network or Internet connection. In an embodiment, the user can request that the content be made available for offline playback while the content is being streamed to the device of the user from the content sharing service. Upon receiving the user's request, the device of the user can download and store portions of the content while the user is viewing the streaming content. Once streaming of the content is finished, the device can request portions of the content that were streamed before the request and resulting storage of the content began. For example, the device can request these portions when a connection to the content sharing service is available. Once the device receives these portions of the content that were previously not stored on the device, the content can be made available for offline playback.

In an embodiment, during streaming of the content, the content may be streamed with an adaptive bitrate protocol, such as HTTP Live Streaming (HLS) or Dynamic Adaptive Streaming over HTTP (DASH), where the quality of the streaming content can be changed (e.g., to a lower quality which requires a lower bitrate for uninterrupted play) mid-stream depending on the network connection of the user device, such as network speed. The adaptive bitrate protocol helps to prevent buffering, which causes disruptions during playback. For example, when playing an HLS video, a user device can first download an HLS manifest file that includes a list of URLs of audio and video portions of various quality for the video. The portions can include small parts of the video, e.g., 10 seconds each. The user device can then select which quality portions to use based on a current network bandwidth. For example, if network conditions become degraded (e.g., due to disconnecting from WiFi), the user device can select to switch to a lower quality stream to prevent buffering. Subsequently, if the network connection improves (e.g., due to reconnecting to WiFi), then the user device can select to switch to a stream of high quality portions.

When a user desires to have content available offline, the user would generally like for the highest quality version of that content to be made available. However, if the user is playing the content while the content is being fetched for offline availability, a variable quality version of the content is originally fetched with some content portions possibly being low quality.

One example solution for improving the quality of the content available for offline playback is for the user device to wait until the user is finished watching the content, and then begin fetching high quality content portions for offline playback. This solution may increase the time the user has to wait in order to be able to play the video offline, and it may result in fetching the same content twice.

According to some aspects of the present disclosure, to improve the quality of the content available for offline playback, the user device can identify content portions that are not of the highest quality and request replacement portions of higher quality for the identified content portions. The user device can request replacement portions when a connection to the content sharing service is available. In other words, aspects of the present disclosure dynamically store content as the content is streamed, and later fetch higher quality portions of the content to replace low-quality portions that were stored.

In some implementations, a proxy server is run on the user device. A media player presenting content on the user device can request content portions through the proxy server, rather than directly from the content sharing service, such that content portions pass through the proxy server prior to reaching the media player. The proxy server can store the content portions in a local data store as the portions are received from the content sharing service before forwarding the portions to the media player. As a result, the portions can be stored in the data store for offline playback later.

Once the user stops playing the content, an offline playback component on the user device can start fetching portions that were not fetched by the proxy server during playback. Once those portions of the content have been fetched and the content is available for offline playback from the local data store, then the offline playback component can identify portions that are low-quality and request higher-quality versions as necessary.

If the network connection is interrupted before the offline playback component has completed the requesting and receiving of higher-quality portions, then the low-quality portions are still available for offline playback.

In other implementations, the media player itself stores the content portions (without using the proxy server). In yet some other implementations, instead of storing the content portions as they are fetched for the media player, the user device may use a separate lower-priority connection to download the high-quality content version in the background. The downloading via the lower-priority connection results in the high-quality content version to be available for offline playback without interrupting the original viewing of the content. In still some other implementations, portions of content can be pre-stored for offline playback. For example, a user could be shown a list of content, and the user device could store portions of each item selected by the user from the list of content, such that content display start-up time is reduced and the time required to make the content available for offline playback is reduced.

Aspects of the present disclosure provide a seamless offline playback experience that enables the user to view top quality content offline, where portions of content are stored as they are played in real time and higher quality versions of low-quality portions are later fetched as network conditions allow. As a result, the process of unnecessarily fetching the same content twice is avoided, and the time a user has to wait to be able to play the content offline is reduced.

FIG. 1illustrates exemplary system architecture100, in accordance with one embodiment of the present disclosure. System100includes a user device105, with a data store130, in communication with (e.g., coupled to) a content sharing service110. The network102may be a private network (e.g., a local area network (LAN), a wide area network (WAN), intranet, etc.), a corporate network (e.g., a private network for an organization such as a corporation), a broadcast network, a public network (e.g., the Internet), a wired network (e.g., Ethernet network), a wireless network (e.g., an 802.11 network) and/or a cellular network (e.g., a Long Term Evolution (LTE) network).

The user device105and content sharing service110may be any type of computing device, for example, a device including a processor, a computer-readable medium, and a memory. The content sharing service110may include computing devices that have a wide range of processing capabilities such a personal computer (PC), a server computer, a personal digital assistant (PDA), a smart phone, a laptop computer, a netbook computer, a tablet device, and/or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Embodiments of the disclosure may operate within a single server device or on multiple server devices.

In some embodiments, the user device105may be executing a browser application or other application adapted to communicate over Internet related protocols (e.g., TCP/IP and HTTP) and/or display a user interface.

The user device105can include a media player140. In one implementation, the media player140may be an application that allows a user to view content, such as images, videos, web pages, documents, etc. For example, the media player140may be a web browser that can access, retrieve, present, and/or navigate content (e.g., web pages such as Hyper Text Markup Language (HTML) pages, digital media items, etc.) served by a web server. The media player140may render, display, and/or present the content to a user. The media player140may also be an embedded media player (e.g., a Flash® player or an HTML5 player) that is embedded in a web page (e.g., a web page that may provide information about a product sold by an online merchant). In another example, the media player140may be a standalone application that allows users to view digital media items (e.g., digital videos, digital images, electronic books, etc.). The media player140may be provided to the user devices105by the content sharing server110. For example, the media player140may be an embedded media player that is embedded in web pages provided by the content sharing service110. In another example, the media player140may be an application that is downloaded from another system.

In one embodiment, the content sharing service110provides content including media items (e.g., digital video, streaming video, images, digital music, streaming music, social media information, digital images, photographs, etc.) to the user device105. For example, the content sharing service110may provide a media item, such as a streaming video, requested by a user for playback on the user device105via the network102.

Data store130can include one or more writable persistent storage devices, such as memories, tapes or disks. Although the user device105and the data store130are depicted inFIG. 1as implemented together in a single device, these components may be single, disparate components, or be networked in various combinations of multiple different devices that operate together. Examples of devices may include, but are not limited to, servers, mainframe computers, networked computers, process-based devices, and similar type of systems and devices.

The user device105can include an offline playback system135to facilitate offline playback of content. A user of user device105can select to view streaming content, such as video content or audio content, from the content sharing service110on media player140. While the user is viewing the content in real time, the user can request that the content be available to the user offline. For example, the user would like for the content to be available on the user device105at a later time without having a connection to the content sharing service110. In an embodiment, the content is only available temporarily, e.g., for a predetermined time period such as 24 hours. Alternatively, the content can remain available to the user on the user device135long term but the user can remove the content from the user device at any time. The duration of storing the content for offline playback can be predefined or configurable and can be short term or long term.

In response to the request to make the content available for offline playback, the offline playback system135begins to cache or store portions of the content that are received subsequent to the request. The offline playback system135can store these portions in data store130, which can be a local data store of the user device105. The offline playback system135can continue to store the remainder of the portions of the content in the data store130as the portions are streamed to the user device105for playback by the media player140.

In an embodiment, once streaming of the portions of the content is complete, the offline playback system135requests, from the content sharing service110, portions of the content that were not stored in the data store130. For example, the offline playback system135may request portions of the content that were streamed prior to the user's request to make the content available for playback offline, because the offline playback system135was not yet storing the content prior to the user's request. The offline playback system135then receives these requested portions (i.e., the missing portions) from the content sharing service110and stores these requested portions in the data store130. Once the offline playback system135has stored the requested portions of the content along with the portions of the content that were stored during streaming of the content, the content is made available for the user to playback the content offline.

In an embodiment, the offline playback system135can also identify low-quality portions of the content stored during streaming. For example, some of the portions of the content may have been low-quality portions because the connection to the content sharing system110during the streaming of those portions was poor. Other portions of the content may have been high-quality portions because the connection to the content sharing system110during the streaming of those portions was good. For each of the low-quality portions (e.g., portions that are not of the highest quality available), the playback system135can then request, from the content sharing service110, higher-quality portions (e.g., the highest quality portions available).

Once the offline playback system135has received these requested portions, the offline playback system135can then replace the low-quality portions with the received high-quality portions. After the offline playback system135has replaced the low-quality portions with the high-quality portions, a high-quality version of the content is available for offline playback by the user. However, if a network connection is not available for the offline playback system to request the replacement portions or replacement of the low-quality portions has not yet occurred, the user is still able to play a low-quality version of the content, or a version of the content with lower-quality portions.

FIG. 2illustrates an offline playback system210, in accordance with one embodiment of the present disclosure. The offline playback system210may include a content receiving module201and a content quality module203. More or less components may be included in the offline playback system210without loss of generality. In an embodiment, offline playback system210is offline playback system135and data store250is data store130shown inFIG. 1.

In an embodiment, in response to a user request to make streaming content available for offline playback on a user device, the content receiving module201stores portions of the content that are subsequently streamed to a content list251in data store250. For example, streaming content from a content sharing service is being presented to the user on the user device when the user selects to make the content available for offline playback. The content receiving module201receives the request, and stores portions that are streamed after the request, while the streaming content continues to be presented to the user.

Upon completion of the streaming of the content, the content receiving module201requests that the content sharing service send portions that were streamed prior to the request, according to an embodiment. For example, the portions of the content that were streamed prior to the request were not stored in the content list251, because the user had not requested that the content be made available for offline playback. Once the content receiving module201receives the requested portions (i.e., the missing portions), the content receiving module201stores these requested portions in the content list251of the data store250. The content can now be made available for the user for offline playback. The data store250can be a database or any other repository. Alternatively, the content portions can be stored on the file system using the content name as the file name (or part of the file name), and can be looked up using the content name.

The content receiving module210can be a proxy server discussed above. Alternatively, the content receiving module210can be part of the media player.

In an embodiment, after the portions are stored in content list251(e.g., substantially all or all of the portions of the content), the content quality module203can identify low-quality portions of the stored content. For example, the content quality module203can identify low-quality portions of the stored content using a manifest file (e.g., an HLS manifest file) downloaded to the user device prior to the content. The manifest file can include a list of URLs of content portions of various quality. The content quality module203can determine that a portion is low-quality if the manifest file includes a URL of a higher quality version for the same content portion.

For each low-quality portion, the content quality module203requests a high-quality portion from the content sharing service (e.g., using a respective URL from the manifest file) to replace the low-quality portion. Once the replacement high-quality portions have been received, the content receiving module201stores these portions in the content list251, where the low-quality portions are replaced with the high-quality portions. However, if some or all of the high-quality portions are not available (e.g., due to a poor connection), then the content remains available for offline playback by the user, but with some of the portions being of low-quality.

FIG. 3is a flow diagram illustrating an embodiment of a method300for offline content playback. The method300may be performed by processing logic that may include hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof.

At block302, processing logic receives a first plurality of portions of content from a content sharing service for playback by the media player in real-time. At block304, processing logic receives a request from a user to make the content available for offline playback. For example, a user requests that content be made available for offline playback while the streaming content is being presented on a user device in real-time and after some portions of the content have already been presented or played back.

At block306, processing logic receives a second plurality of portions of the content for playback by the media player in real-time. At block308, processing logic stores the second plurality of portions locally. For example, in response to the user's request, portions of the content presented subsequent to the request are also stored locally on the user device.

At block310, processing logic requests the first plurality of portions from the content sharing service. At block312, processing logic receives the requested first plurality of portions. At block314, processing logic stores the received first plurality of portions such that the content, including the first plurality of portions and the second plurality of portions, is available for offline playback. For example, the portions of the content that were streamed and displayed prior to the user's request are requested and then stored when received, such that the content is available for offline playback by the user.

In an embodiment, the first plurality of portions of the content is stored as the first plurality of portions is streamed from the content sharing service. For example, the first plurality of portions can be stored in random access memory when the request to make the content available for offline playback is received, and then copied to a local store after the request to make the content available for offline playback is received. The first plurality of portions can be discarded from the random access memory when the presentation of the second plurality of portions is completed.

FIG. 4is a flow diagram illustrating an embodiment of a method400for offline content playback. The method400may be performed by processing logic that may include hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method300is performed by a user device (e.g., the user device105ofFIG. 1).

At block402, processing logic identifies lower-quality portions of the stored first plurality of portions and second plurality of portions of the content. At block404, in response to identifying a lower-quality portion of the content, processing logic requests a replacement portion having a higher quality. For example, because the portions of the content were being streamed, some of the portions may be of a lower quality due to a poor connection to the content sharing service. Therefore, higher-quality replacement portions are requested for any lower-quality portions. These replacement portions can be requested when the connection between the user device and the content sharing service is sufficiently good.

At block406, processing logic receives the replacement portion of a higher quality. At block408, processing logic stores the replacement portion, wherein the replacement portion replaces the portion having a lower quality. Once the higher-quality replacement portions are received, the lower-quality portions are replaced with the higher-quality replacement portions.

At block410, processing logic causes the content to be available for offline playback with the replacement portion. Once the higher-quality replacement portions have replaced the lower-quality portions, the user then can play the content offline, where the content is of a higher quality than the content that was streamed to the user device.

The data storage device518may include a machine-readable storage medium (or computer-readable storage medium)528on which is stored one or more sets of instructions522(e.g., software) embodying any one or more of the methodologies or functions described herein. The instructions522may also reside, completely or at least partially, within the main memory504and/or within the processor502during execution thereof by the computer system500, the main memory504and the processor502also constituting computer-readable storage media. The instructions522may further be transmitted or received over a network516via the network interface device508.

In one embodiment, the instructions522include instructions for an offline playback system550, which may correspond to offline playback system135ofFIG. 1, and/or a system for offline playback. While the machine-readable storage medium528is shown in an exemplary embodiment to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The terms “computer-readable storage medium” or “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.