An Application Data Sheet is filed concurrently with this specification as part of the present application. Each application that the present application claims benefit of or priority to as identified in the concurrently filed Application Data Sheet is incorporated by reference herein in its entirety and for all purposes.
Consumers have an ever-increasing array of options for consuming media content, in terms of the types of media content (e.g., video, audio, text, etc.), providers of the media content, and devices for consuming the media content. Media content providers are becoming increasingly sophisticated and effective at providing media content quickly and reliably to consumers.
Some media content can be “live streamed” in which media content covering an event (e.g., sales pitch, infomercial, sports game, news, etc.) is delivered live over the Internet. Often, viewers of the live streamed media content can interact with each other using a live chat. Unfortunately, the playback of the media content and the presentation of the chat compete for the same bandwidth and hardware resources of a viewer's device, resulting in degradation of the playback of the media content.
This disclosure describes techniques for implementing resource management for video playback and chat. For example, media content (e.g., video) can be “live streamed” in which the media content covering an event is delivered live over a network such as the Internet. Viewers watching the media content on a video player at the same time can also concurrently engage with each other through a live chat available during the live streaming of the media content. However, both the video playback and live chat compete for the same bandwidth and hardware resources of a viewer device. If the live chat uses a significant amount of the viewer device's CPU capacity or bandwidth, then the playback of the media content can degrade. For example, frames of the media content can be dropped, resulting in an erratic viewing experience, or the quality level of the playback of the media content can be reduced, resulting in a lower quality viewing experience.
As described herein, a resource controller can monitor the resource usage of the video player and live chat and then adjust the resource usage of one of the components to improve performance of the other component. As an example, if the bandwidth available to the video player reduces such that it lowers the quality level of the playback, the resource controller can reduce the amount of bandwidth allocated to the live chat by reducing the polling interval in which the live chat receives new chat entries or reduce the number of messages received to be displayed within the live chat. As a result, more bandwidth is available to the video player and the quality level of the playback can increase.
In more detail,
In a live streaming scenario, video player 105 receives manifest data from media server 120 to enable playback of the media content. The manifest data can be provided in one or more files (such as markup files or other types of data structures) providing playback options for the live streaming of the media content. For example, the manifest file includes metadata indicating fragments, or segments, of a short duration of the playback of the media content being live streamed available at different quality levels based on bitrates and/or resolutions. The metadata allows the viewer device to generate properly formatted requests for specific fragments of the media content. Audio portions of the media content can also be provided in fragments. Additional information, such as available subtitles, content delivery networks (CDNs) to use, etc. can also be provided in the manifest file.
As video player 105 receives manifest files and requests fragments for playback, new fragments can also be generated at media server 120 and corresponding new manifest files can be provided to video player 105 to provide playback options for the new fragments. New manifest files providing playback options for new fragments of the media content can be provided during the entire live streaming of the event.
For example, in
At the same or similar time, chat 110 receives chat entries 125 from media server 120. Chat entries 125 include textual or graphical responses from viewers using other viewer devices live streaming the same media content. That is, chat 110 provides interactive content from other viewers watching the same content. The content can be a live stream of an event or a premiere of pre-recorded content that is live streamed. Media server 120 receives chat entries from viewer devices and periodically “pushes” new chat entries to chat 110 in accordance with a polling interval indicating an amount of time that should elapse between providing new chat entries.
A shorter polling interval provides a more responsive conversation among the viewers. However, shortening the polling interval (i.e., reducing the time duration) can result in an increase in the amount of the communications bandwidth (e.g., the bandwidth of the Internet connection used by the viewer device contacting media server 120) used by chat 110. Additionally, if a large number of viewers are providing chat entries, then a large amount of data (i.e., the chat entries) may need to be downloaded from media server 120 which also results in an increase in the bandwidth used by chat 110. If chat 110 uses too much bandwidth, then the performance of the playback of video player 105 might degrade. For example, video player 105 might downgrade its playback by switching from requesting fragments at 720p at 7.5 Mbps to 576i (i.e., a lower quality level). Audio quality might also degrade in a similar manner.
Moreover, chat entries 110 might include content that can be computationally intense, and therefore, require more of the central processing unit (CPU) or other hardware resources (e.g., memory) of the viewer device. For example, rendering the text or images of chat entries can require an increase in the hardware resources of the viewer device to accomplish the task. If video player 105 does not have enough access to the capabilities of the hardware resources of the viewer device, playback of the live stream may experience interruptions or anomalies such as, for example, dropped frames that can result in a jerky and unpleasant playback.
In
It should be noted that, despite references to particular computing paradigms and software tools herein, the computer program instructions on which various implementations described herein are based may correspond to any of a wide variety of programming languages, software tools and data formats, may be stored in any type of non-transitory computer-readable storage media or memory device(s), and may be executed according to a variety of computing models including, for example, a client/server model, a peer-to-peer model, on a stand-alone computing device, or according to a distributed computing model in which various functionalities may be effected or employed at different locations. In addition, reference to particular types of media content herein is merely by way of example. Suitable alternatives known to those of skill in the art may be employed.
Media server 120 can be part of a content delivery system that conforms to any of a wide variety of architectures. The functionality and components of media server 120 can use one or more servers and be deployed at one or more geographic locations (e.g., across different countries, states, cities, etc.) using any subset or combination of a wide variety of network environments including, for example, TCP/IP-based networks, telecommunications networks, wireless networks, cable networks, public networks, private networks, wide area networks, local area networks, the Internet, the World Wide Web, intranets, extranets, etc. Multiple entities may be involved in the delivery of media content and data related to the media content, including content providers, internet service providers (ISPs), providers of content delivery networks (CDNs), etc. The functionality described herein also may be implemented by one or more of different entities. For example, the functionality to provide playback of media content can be integrated into a video player or software client under control of one entity (e.g., on viewer devices 105a-d), integrated into a separate app from another entity, implemented in an edge server or content server of a CDN, a server of an ISP, etc.
Media server 120 can include processor(s) 215, memory, and various types of logic used to provide live streaming media content for playback at viewer devices 105a-d and live chat entry content for display at viewer devices 105a-d. In
Viewer devices can include processor(s) 250, memory, and various types of logic used to provide playback of a live stream of media content and provide a chat for the live stream. In
In
A specific implementation will now be described with reference to
For example, a viewer device can use a heuristic algorithm to implement adaptive bitrate streaming for the live streaming of the media content. Adaptive bitrate streaming includes determining the viewer device's available bandwidth and hardware capabilities in real time and adjusting the quality of the media content that is requested from media server 120 and played back on the viewer's device to account for changes in the available bandwidth and hardware resources. As previously discussed, fragments at different quality levels (at various bitrates and/or resolutions) of the media content detailed in a manifest file are requested individually and stored in a buffer for playback. As a result, the video player can switch from requesting higher quality fragments to lower quality fragments of the media content as the available bandwidth to the viewer device decreases to avoid rebuffering (i.e., when the buffer storing the fragments for playback is drained faster than fragments can be received from the media server).
As another example, if the available CPU capacity decreases such that the playback of higher quality fragments results in (or would result in) frames being dropped (i.e., frames of the media content playback are being skipped), then lower quality fragments can also be requested to take into account the decrease in the available CPU capacity for the video player to use.
The video player can provide the resource controller with data indicating that the playback has been affected due to a reduction in available resources resulting in a change in the quality level of fragments being requested for playback or that the video player has experienced dropped frames (310). In response, the resource controller can adjust the allocation of resources for the live chat to account for playback being affected (315). For example, the amount of the available bandwidth can be shifted from 80% to the video player and 20% to the chat, to 90% to the video player and 10% to the chat. As a result, the resource controller can inform that the chat component should reduce its bandwidth usage (320). This can allow for the video player to request for higher quality fragments using the extra available bandwidth. In another example, media server 120 can be contacted to adjust the providing of the chat entries to the chat component, either by the chat component itself or by the resource controller.
As illustrated in the flowchart of
In
In
The amount by which the bandwidth available to live chat is reduced may depend on the drop in quality of the content playback. For example, if the video player is providing playback of the live stream of the media content at a 720p at 5 Mbps quality level and decreases to 576i, the resource controller might reduce the bandwidth allocated to the chat less than if the media content reduced from a 720p at 7.5 Mbps quality level to the 576i quality level. In some implementations, the polling interval and number of chat entries can be similarly adjusted.
Referring back to
Various chat performances or capabilities can be adjusted to reduce the load on the CPU. For example, the chat can do a simpler rendering of the content of the chat entries (e.g., simpler rendering of text, images, etc.). In some implementations, if chat entries include images, then the images can be scaled down in size, or even not displayed at all. For example, a link or button (or other graphical user interface (GUI) element) might be provided for an image such that it is not rendered unless selected. In some implementations, the chat entries can be received, but they may not be displayed to reduce the amount of rendering. Rather, a summary chat entry (e.g., as described above) can be generated locally and displayed.
The previous examples describe reducing the allocation of hardware and bandwidth resources used by a live chat to improve the performance of media content playback by a video player (by making more of the resources available to the video player). However, the playback of the media content can also be adjusted to reduce the allocation of hardware and bandwidth resources for the video player to improve the performance of the live chat.
Referring back to
The resources allocated to the video player and chat can also be based on the content of the chat entries.
In
For example, in
In
The previous examples describe adjusting resource usage of chat and video components that are provided concurrently. However, in other implementations, other components can have their resource usage adjusted if provided concurrently with one or both of the chat and video components. For example, an advertisement may be displayed along with a video player and a live chat. The resource usage of the advertisement can be adjusted based on the performances of the video player or live chat. For example, if lower quality fragments are requested by the video player, then the advertisement can be adjusted, for example, by displaying a static image rather than a video for the advertisement, displaying another type of advertisement, etc.
Additionally, the techniques described herein can be applied to music, electronic books, or other types of players. For example, streaming music or an internet radio program can be provided with a live chat. The resource usage of the live chat can be adjusted based on the performance of the streaming music. For example, the polling interval or number of chat entries can be changed if the quality of the streaming music is reduced. As a result, the quality of the streaming music can be increased or restored.
While the subject matter of this application has been particularly shown and described with reference to specific implementations thereof, it will be understood by those skilled in the art that changes in the form and details of the disclosed implementations may be made without departing from the spirit or scope of the invention. Examples of some of these implementations are illustrated in the accompanying drawings, and specific details are set forth in order to provide a thorough understanding thereof. It should be noted that implementations may be practiced without some or all of these specific details. In addition, well known features may not have been described in detail to promote clarity. Finally, although various advantages have been discussed herein with reference to various implementations, it will be understood that the scope of the invention should not be limited by reference to such advantages. Rather, the scope of the invention should be determined with reference to the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
8832193 | Lindberg et al. | Sep 2014 | B1 |
9098333 | Obrecht | Aug 2015 | B1 |
10105596 | Mann | Oct 2018 | B1 |
10187666 | Chang | Jan 2019 | B2 |
20070260724 | Rowley | Nov 2007 | A1 |
20080209330 | Cruver | Aug 2008 | A1 |
20090073879 | Guillouard et al. | Mar 2009 | A1 |
20090172150 | Alkov | Jul 2009 | A1 |
20090175235 | Spinar et al. | Jul 2009 | A1 |
20100158109 | Dahlby et al. | Jun 2010 | A1 |
20100205541 | Rapaport et al. | Aug 2010 | A1 |
20100332667 | Menchaca | Dec 2010 | A1 |
20110105226 | Perlman | May 2011 | A1 |
20110191681 | Stark | Aug 2011 | A1 |
20110288912 | McCrea | Nov 2011 | A1 |
20120002614 | Ekici et al. | Jan 2012 | A1 |
20120140018 | Pikin | Jun 2012 | A1 |
20120185534 | Zimmet | Jul 2012 | A1 |
20120265897 | Das | Oct 2012 | A1 |
20120268553 | Talukder | Oct 2012 | A1 |
20120278464 | Lehane et al. | Nov 2012 | A1 |
20130100955 | Dunlap et al. | Apr 2013 | A1 |
20130130642 | Joul et al. | May 2013 | A1 |
20130159449 | Taylor et al. | Jun 2013 | A1 |
20130166623 | Stanwood et al. | Jun 2013 | A1 |
20140003450 | Bentley | Jan 2014 | A1 |
20140013200 | White | Jan 2014 | A1 |
20140123014 | Keen | May 2014 | A1 |
20140280952 | Shear et al. | Sep 2014 | A1 |
20140333633 | Zhang | Nov 2014 | A1 |
20140358936 | Chan | Dec 2014 | A1 |
20150082366 | French | Mar 2015 | A1 |
20150092544 | De Pasquale et al. | Apr 2015 | A1 |
20150215365 | Shaffer et al. | Jul 2015 | A1 |
20150319505 | Patadia et al. | Nov 2015 | A1 |
20160080502 | Yadav et al. | Mar 2016 | A1 |
20160119572 | Slupik | Apr 2016 | A1 |
20160173825 | Polyakov et al. | Jun 2016 | A1 |
20160277802 | Bernstein | Sep 2016 | A1 |
20160286244 | Chang | Sep 2016 | A1 |
20170024680 | Allison et al. | Jan 2017 | A1 |
20170078451 | Wills et al. | Mar 2017 | A1 |
20170139921 | Ball | May 2017 | A1 |
20170171271 | Kelly et al. | Jun 2017 | A1 |
Entry |
---|
U.S. Appl. No. 14/973,069, filed Dec. 17, 2015, Qureshi et al. |
US Office Action dated Aug. 1, 2017 issued in U.S. Appl. No. 14/973,069. |
US Final Office Action dated Jan. 2, 2018 issued in U.S. Appl. No. 14/973,069. |
US Office Action dated May 21, 2018 issued in U.S. Appl. No. 14/973,069. |
US Final Office Action dated Dec. 18, 2018 issued in U.S. Appl. No. 14/973,069. |
US Notice of Allowance dated Apr. 3, 2019 issued in U.S. Appl. No. 14/973,069. |
Number | Date | Country | |
---|---|---|---|
Parent | 14973069 | Dec 2015 | US |
Child | 16442834 | US |