Streaming media content, including TV shows and movies, is a common form of entertainment. For example, streaming platforms can transmit media data to client-side media players. The media players can playback the media data while providing additional functionality such as a seek bar. Using the seek bar, a viewer can scrub backwards and forwards through the media playback to watch specific portions of the movie or TV show.
While most media played by a media player is pre-recorded (e.g., a TV show or movie that has already been produced), some streaming platforms can enable streaming of live media. To illustrate, some streaming platforms can stream media data associated with a live event (e.g., a sports game, a comedy special, a music concert) in real-time. In response to receiving this real-time media data, the client-side media players can play real-time media data while making the same media data available for backward scrubbing.
Despite this, streaming live media can be problematic in various scenarios. For example, some live-streamed events may include pre-show content and/or post-show content. Despite this, content creators may not want to make this additional content to be available for backward and forward scrubbing via a client-side media player as part of the live media broadcast. There may also be other content that occurs during the live broadcast that content creators may not want to include as part of the “seekable” media data on the client-side. For example, technical difficulties may occur during the live broadcast. Content creators may not want the portion of the live broadcast including technical difficulties to be seekable (e.g., by scrubbing the seek bar backwards on the media player) while later portions of the live broadcast are being displayed. Furthermore, a live broadcast may include paid content that should be viewed in its entirety without being skipped or scrubbed over. Conventional streaming platforms offer no solutions for these types of issues that are unique to streaming live media broadcasts.
As will be described in greater detail below, the present disclosure describes implementations that communicate live events during live media broadcasts to client media players using existing communication channels to cause the client media players to perform actions based on the live events. For example, some implementations include receiving, at a content delivery server during a live media broadcast, a media content request from a client media player. Additionally, some implementations include, in response to determining that a live event has occurred during the live media broadcast, generating one or more client media player instructions tailored to the live event, and generating a media content response including the requested media content and the one or more client media player instructions. Moreover, some implementations also include transmitting the media content response to the client media player to trigger the client media player to perform actions based on the one or more client media player instructions.
In some examples, the content delivery server receives media content requests every predetermined number of seconds during the live media broadcast. Moreover, in some examples, determining that the live event has occurred during the live media broadcast includes at least one of determining that the live media broadcast has begun following pre-show media content, determining that the live media broadcast has ended prior to post-show media content, determining that a broadcast error has occurred associated with the live media broadcast, determining that a media highlight has occurred during the live media broadcast, or determining that paid content has been inserted into the live media broadcast.
Additionally, in some examples, determining that the media highlight has occurred during the live media broadcast includes determining that a sports highlight has occurred during the live media broadcast, determining that a celebrity event has occurred during the live media broadcast, determining that an availability of an interactive feature has changed during the live media broadcast, determining that a camera view has changed during the live media broadcast, or determining that a scene change has occurred during the live media broadcast. In some examples, generating the one or more client media player instructions tailored to the live event includes generating client media player instructions to modify characteristics of a user interface presented by the client media player in association with the live media broadcast. In at least one example, the characteristics of the user interface include a seek bar, a control associated with playback of one or more streams of the live media broadcast, a title bar, or a subtitle area.
Additionally, in some examples, generating the one or more client media player instructions to modify one or more characteristics of a seek bar presented by the client media player in association with the live media broadcast includes generating client media player instructions to modify characteristics of the seek bar to make the pre-show media content unseekable, generating client media player instructions to modify characteristics of the seek bar to make the post-show media content unseekable, generating client media player instructions to modify characteristics of the seek bar to make a portion of the live media broadcast associated with the broadcast error unseekable, or generating client media player instructions to modify characteristics of the seek bar to indicate where the media highlight has occurred within a portion of the live media broadcast that has already been transmitted. Furthermore, in some examples, determining that the live event has occurred during the live media broadcast includes determining that the live media broadcast has concluded, and generating the client media player instructions tailored to the live event includes generating client media player instructions that cause the client media player to close and return a user of the client media player to a digital content system main menu.
Some examples described herein include a system with at least one physical processor and physical memory including computer-executable instructions that, when executed by the at least one physical processor, cause the at least one physical processor to perform various acts. In at least one example, the computer-executable instructions, when executed by the at least one physical processor, cause the at least one physical processor to perform acts including receiving, during a live media broadcast, a media content request from a client media player, in response to determining that a live event has occurred during the live media broadcast, generating client media player instructions tailored to the live event, and generating a media content response including the requested media content and the client media player instructions, and transmitting the media content response to the client media player to trigger the client media player to perform actions based on the client media player instructions.
In some examples, the above-described method is encoded as computer-readable instructions on a computer-readable medium. In one example, the computer-readable instructions, when executed by at least one processor of a computing device, cause the computing device to receive, during a live media broadcast, a media content request from a client media player, in response to determining that a live event has occurred during the live media broadcast, generate client media player instructions tailored to the live event, and generate a media content response including the requested media content and the client media player instructions, and transmit the media content response to the client media player to trigger the client media player to perform actions based on the client media player instructions.
In one or more examples, features from any of the embodiments described herein are used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.
Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
As mentioned above, some digital media streaming platforms treat live media broadcasts simply as recordable events. To illustrate, a streaming platform may stream a live media broadcast to a client media player for playback. The client media player may play the live media broadcast while making previously received portions of the live media broadcast accessible via a seek bar (e.g., where the viewer can scrub backwards to view prior portions of the live media broadcast). As such, the client media player is akin to a digital video recorder that enables indiscriminate access to all previously received portions of the live media broadcast—at least for the duration of the live media broadcast. Thus, previous digital media streaming platforms may not be able to control how portions of live media broadcasts are accessed after those portions are transmitted to client media players. As further mentioned above, this may be problematic when the live media broadcast includes portions (e.g., a pre-show, a post-show, technical difficulties, show highlights) that a streaming platform may want to make “unseekable” (e.g., non-accessible from the media player seek bar) or—conversely—easily found via the media player seek bar.
To address these problems, the present disclosure describes a system that triggers different types of media player modifications depending on a detected live event during a live broadcast. In one example, the disclosed system triggers the media player to modify its user interface based on a detected live event. To illustrate, the system triggers the media player to modify its seek bar to either highlight previously received portions of a live broadcast or to make those previously received portions inaccessible for additional re-play. In other examples, the disclosed system triggers the media player to modify its user interface to include various controls that enable a viewer to switch the video and/or audio feeds amongst a number of feeds during the live event that are not available as part of a pre-show or post-show.
In addition to media player user interface modification, the disclosed system also triggers the media player to modify behaviors based on a live event detected during a live broadcast. To illustrate, the disclosed system triggers the media player to modify its pause/resume behavior based on a detected live event. In another example, the disclosed system triggers the media player to close and return the viewer to a main menu or previous screen based on detecting the end of the live broadcast. In many examples, the disclosed system triggers these media player modifications with customized instructions sent in tandem with live broadcast media data during the live broadcast. In some examples, the disclosed system triggers these media player modifications by providing up front instructions on how to handle detected live events prior to live broadcast and then communicating live events to the media player during the live broadcast as they occur.
Features from any of the implementations described herein may be used in combination with one another in accordance with the general principles described herein. These and other implementations, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
The following will provide, with reference to
As just mentioned,
In one or more implementations, as shown in
As further shown in
In one or more implementations, the live streaming system 102 operates as a component of the digital content system 104 to facilitate live media broadcasts. For example, the live streaming system 102 receives live media content requests from the client computing devices 114a-114n, generates media content responses including live media broadcast data, determines that live events associated with a live media broadcast have occurred, generates client media player instructions tailored to the live events that trigger the client media players 114a-114n to perform various actions and/or modifications, and transmits those instructions via an existing communication channel that carries media content responses along with indications of the one or more determined live events.
As further shown in
As mentioned above, the client computing devices 114a-114n are communicatively coupled with the content delivery server(s) 112 through the network 118. In one or more implementations, the network 118 represents any type or form of communication network, such as the Internet, and may include one or more physical connections, such as a LAN, and/or wireless connections, such as a WAN. In some implementations, the network 118 may represent a telecommunications carrier network. In at least one implementation, the network 118 represents combinations of networks such that the client computing device 114a may communicate with the digital content system 104 via a wireless network while the client computing device 114n may communicate with the digital content system 104 via a cellular network.
Although
In one or more implementations, and as will be explained in greater detail below, the methods and steps performed by the live streaming system 102 reference multiple terms. For example, a “live media broadcast” can refer to media content that is transmitted as soon as it is captured (e.g., in real time). In one or more implementations, a live media broadcast can be combined with pre-recorded content (e.g., a pre-show and/or a post-show). In most implementations, the live streaming system 102 transmits live broadcast media segments to a client media player in response to receiving a content request from that client media player. In additional implementations, the live streaming system 102 transmits a live media broadcast by providing a network address (e.g., a universal resource locator) to a web server that can serve a most-recent portion (e.g., two seconds, three seconds, five seconds) of the live media broadcast.
As used herein, a “media content request” can refer to a request from a client media player on a client computing device for a most-recent portion (e.g., two seconds) of a live media broadcast. For example, a media content request can include one or more identifiers for the client media player, for the client computing device, and/or the user of the client computing device. In one or more implementations, the live streaming system 102 receives media content requests via a dedicated communication channel. In at least one implementation, the digital content system 104 and the client media player establish the dedicated communication channel as part of an initial handshake procedure upon initialization of the client media player on the client computing device. The dedicated communication channel remains established while the client media player is actively playing content (e.g., pre-recorded content or live content) or while the client media player is active or initialized on the client computing device. In some implementations, the dedicated communication channel re-establishes itself during live broadcast playback in the event of technical difficulties with either the network 118 or the content delivery server(s) 112.
As used herein, a “media content response” can refer to a response from the live streaming system 102 that is associated with requested media content. For example, the live streaming system 102 generates a media content response including a network endpoint that can serve the requested media content (e.g., the most-recent two seconds of the live media broadcast). In one or more implementations, the live streaming system 102 transmits a media content response including the media content—and optionally including client media player instructions—via the same dedicated communication channel where the corresponding media content request was transmitted.
As used herein, a “live event” can refer to any portion of a live media broadcast. For example, a live event can include a transition point between pre-recorded content and the live media broadcast, a portion of the live media broadcast where a broadcast error occurs (e.g., a transmission loss, a transmission degradation, a transmission violation, etc.), a portion of the live media broadcast where a broadcast highlight occurs (e.g., a sporting highlight, an interactive feature, a musical highlight, a scene change, a camera angle change, etc.), a conclusion of the live media broadcast, etc.
As used herein, “client media player instructions” can refer to a communication sent to a client media player that causes the client media player to perform one or more actions. For example, the live streaming system 102 generates client media player instructions that cause the client media player to perform one or more actions that are tailored to or in response to a detected live event. The live streaming system 102 generates client media player instructions that cause the client media player to display specific content, modify various characteristics, and/or exit out to a menu of the digital content system 104. In one or more implementations, the live streaming system 102 generates client media player instructions that cause the client media player to display a specific graphic, user interface, control, animation, or other content. Similarly, the live streaming system 102 generates client media player instructions that cause the client media player to modify a seek bar such that portions of the live media broadcast are unseekable or highlighted. As used herein, “unseekable” can refer to portions of a live media broadcast that cannot be found via a client media player seek bar. For example, a portion of a live media broadcast is unseekable if that portion cannot be found or played back in response to a user scrubbing a current playback indicator backwards through the seek bar.
As mentioned above,
As illustrated in
As further illustrated in
As further illustrated in
In additional implementations, the live streaming system 102 includes live event information in each media content response that is transmitted to the client media player. In those implementations, for example, the live streaming system 102 sends information in each media content response about all active live events in the live broadcast. In some examples, the live streaming system 102 triggers the client media player in different ways depending on a level of live events that are currently active. To illustrate, one level of live events may trigger the client media player to modify its seek bar, while another level of live events may trigger the client media player to modify one or more behaviors (e.g., the ability to scrub past paid content).
As further illustrated in
As discussed above, the live streaming system 102 determines whether a live event has occurred during a live media broadcast and then triggers a client media player to perform one or more actions based on the live event.
In one or more implementations, to facilitate streaming of the live media broadcast 302, the live streaming system 102 and the client media player 116a engage in a handshake procedure that establishes a dedicated communication channel between the live streaming system 102 and the client media player 116a. In some examples, the handshake occurs prior to the beginning of the live media broadcast 302 (e.g., as with a “waiting room” where client media players sign in to watch the live media broadcast 302 ten minutes before the live media broadcast 302 starting). In additional examples, the handshake occurs when the live media broadcast 302 begins. In yet further examples, the handshake occurs after the live media broadcast 302 has started (e.g., as with a viewer to “tunes in” part way through the live media broadcast 302). With that connection established, the client media player 116a generates and transmits a media content request 304 to the live streaming system 102.
In response to receiving the media content request 304, the live streaming system 102 generates a media content response 306. In one or more implementations, the live streaming system 102 generates the media content response 306 including the requested media content (e.g., the most recent two seconds of the live media broadcast 302). In additional implementations, the live streaming system 102 generates the media content response 306 including a network endpoint (e.g., a universal resource locator) of a web server that can provide the requested media content. In response to receiving the media content response 306 from the live streaming system 102, the client media player 116a plays the live media content 308 for viewing by a user of the client computing device 114a. Moreover, in some implementations, the client media player 116a can check each received media content response for the presence of live event instructions. If no instructions are present in the media content response 306, the client media player 116a plays the live media content 308, and generates a new media content request for the next portion of the live media broadcast 302.
In at least one implementation, the client media player 116a generates and transmits media content requests at predetermined intervals (e.g., every two seconds) via the dedicated communication channel. For example, as further shown in
As mentioned above, the live streaming system 102 determines that a live event 316 has occurred during the live media broadcast 302. For example, the live streaming system 102 determines that the live media broadcast 302 has begun following pre-show media content. To illustrate, the live streaming system 102 determines that the live media broadcast 302 has begun following pre-recorded media content that is included as a pre-show. Similarly, the live streaming system 102 determines that the live media broadcast 302 has ended prior to post-show media content. As with the pre-show media content, the live streaming system 102 determines that the live media broadcast 302 (e.g., the two second portions of media content delivered in real time) has ended and that a pre-recorded post-show is about to begin playback.
In additional implementations, the live streaming system 102 further determines that a live event has occurred in response to determining that a broadcast error has occurred that is associated with the live media broadcast 302. To illustrate, the live streaming system 102 determines that the source of the live media broadcast has lost connectivity.
Moreover, in some examples, the live streaming system 102 determines a live event has occurred in response to detecting a highlight during the live media broadcast 302. For example, the live streaming system 102 includes one or more machine learning models that detect highlights such as sports goals, scene changes, camera view changes, celebrity or character appearances, an interactive feature (e.g., a voting feature) has been made available, and so forth. In at least one implementation, the live streaming system 102 includes one or more features that enable an authorized user (e.g., a director of the live media broadcast 302) to manually mark that an event has occurred in the live media broadcast 302.
In response to determining that the live event 316 has occurred in association with the live media broadcast 302, the live streaming system 102 generates a media content response 320 that includes client media player instructions tailored to the live event 316. Then, in response to receiving a new media content request 318, the live streaming system 102 generates the media content response 320 including the requested media content and the generated instructions. The client media player 116a then checks the media content response 320 for instructions based on the live event 316 and performs actions according to the instructions tailored to the live event 316. The client media player 116a also plays the received live media content 322.
In one implementation, the live streaming system 102 generates one or more client media player instructions tailored to the live event 316 by generating instructions that cause the client media player (e.g., the client media player 116a) to modify one or more characteristics of a seek bar that is presented within the client media player. To illustrate, the client media player 116a—and any other client media player associated with the digital content system 104—includes displayed components such as a video display where digital media content is played and a seek bar that shows a total elapsed playback time of the digital media content as well as the current playback position of the digital media content. Often the client media player 116a includes a seek bar that is interactive such that a viewer can scrub the current playback position indicator backwards and forwards to view different portions of the digital media content.
In one or more implementations, the live streaming system 102 generates instructions to modify characteristics of the seek bar that either cause already transmitted portions of the live media broadcast 302 to become “unseekable” or that change portions of the seek bar in a way that draws the viewer's attention to highlights that have occurred during the live media broadcast 302. To illustrate, it may be undesirable for pre-show or post-show content to be available once the live media broadcast 302 has begun or ended. As such, the live streaming system 102 generates instructions that modify the seek bar of the client media player 116a (or that cause the client media player 116a to modify the seek bar) to effectively remove the pre-show and/or post-show content from the seekable content within the client media player 116a.
The instructions modify the seek bar by changing the time of the current playback position to reflect the pre-show begin removed from the seek bar. For example, the live streaming system 102 generates and sends instructions to the client media player 116a including the position of the live media broadcast 302. The instructions then cause the client media player 116a to modify the seek bar by adjusting the seekable portion of the live media broadcast 302. In another implementation, the live streaming system 102 generates instructions that cause the portion of the seek bar associated with the pre-show to change color and/or become locked such that the viewer cannot scrub the playback position indicator into the portion of the seek bar associated with the pre-show content.
Similarly, the live streaming system 102 makes portions of the live media broadcast 302 where a broadcast error has occurred unseekable. For example, the live streaming system 102 generates instructions that cause the client media player 116a to modify the seek bar to effectively remove access to those portions of the live media broadcast 302. To illustrate, the instructions cause the client media player 116a to update elapsed playback time and/or the current playback position indicator within the seek bar to reflect a removal of the portion of the live media broadcast 302 where the broadcast error occurred. For example, a broadcast error may be fifteen seconds long following five minutes of normal transmission of the live media broadcast 302. The live streaming system 102 generates and transmits instructions that cause the client media player 116a to modify characteristics of the seek bar. For example, the live streaming system 102 generates and sends instructions including the beginning and ending timestamps for the broadcast error. The client media player 116a then modifies the seek bar such that, when a viewer scrubs the current playback position indicator backwards within the seek bar, the broadcast error is not shown as the viewer scrubs backwards. Moreover, the live streaming system 102 further modifies the seek bar such that the current playback time following the broadcast error is fifteen seconds shorter than it otherwise would be.
Additionally, in at least one implementation, the live streaming system 102 can generate instructions that alter additional aspects of the client media player. For example, the instructions can cause the client media player to enable the switching between camera views and/or audio tracks only during the live event rather than during the pre or post show. The instructions can cause the client media player to then disable certain camera views or audio tracks if those feeds become unavailable during the live event.
In response to determining that the live event 316 is a broadcast highlight, the live streaming system 102 generates instructions that modify the seek bar of the client media player 116a to draw a viewer's attention to the portion of the live media broadcast 302 that include the broadcast highlight. To illustrate, the live streaming system 102 modifies the seek bar such that a portion of the seek bar associated with the broadcast highlight is a different color, a different pattern, includes an animation (e.g., a flashing animation), and/or includes a thumbnail call-out associated with the broadcast highlight.
While the transmissions between the client media player 116a and the live streaming system 102 are described above as taking place through a single dedicated communication channel, other arrangements are possible. For example, in one implementation, the live streaming system 102 transmits live event information and instructions via one communication channel while live media content is transmitted via a separate communication channel. In additional implementations, the live streaming system 102 can receive data from and transmit data to the client media player 116a via any number of communication channels.
In one or more implementations, the live streaming system 102 generates instructions to perform other actions beyond modifying characteristics of the seek bar. For example, in response to determining that the live event 316 is the conclusion or termination of the live media broadcast 302, the live streaming system 102 generates instructions that cause the client media player 116a to close and return the viewer to a main menu of the digital content system 104. As such, the live streaming system 102 generates instructions that effectively move the viewer from one experience within the digital content system 104 (e.g., viewing the live media broadcast 302) to another experience (e.g., browsing available digital media content).
To illustrate, as shown in
In an additional example, the client media player 116a plays the live media broadcast 302 behind the live edge of the live media broadcast 302 by some amount of time (e.g., due to lag, etc.) When the live streaming system 102 determines that a highlight event or broadcast error has occurred, the client media player 116a immediately implements received instructions that cause the client media player to modify the display of the seek bar for that portion of the seek bar that is no newer than the current playback time. Similarly, the client media player 116a may wait to trigger modifications associated with an “end of live broadcast” event until the client media player 116a has caught up to the end of the live media broadcast 302.
When generating instructions including a time delay, the live streaming system 102 implements one or more heuristics or decision techniques to decide which events can be associated with the time delay. Similarly, the live streaming system 102 can generate instructions for actions that should be implemented by the client media player 116a only in response to various conditions occurring (e.g., in response to playback proceeding or due to a scrubbing action).
As shown in
As mentioned above, and as shown in
In certain implementations, the live streaming system 102 may represent one or more software applications, modules, or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, and as will be described in greater detail below, one or more of the media content manager 402, the live event manager 404, and/or the instruction manager 406 represent software stored and configured to run on one or more computing devices, such as the content delivery server(s) 112. One or more of the media content manager 402, the live event manager 404, and the instruction manager 406 of the live streaming system 102 shown in
As mentioned above, and as shown in
As further mentioned above, and as shown in
As such, the live event manager 404 detects various signals associated with the live media broadcast for use in determining that a live event has occurred. For example, the live event manager 404 detects signals including transmission changes (e.g., such as a change from pre-recorded content to live content) and transmission problems (e.g., such as a transmission drop or static). The live event manager 404 also detects signals during the live media broadcast such as audience signals (e.g., a number of viewers who are currently watching the live media broadcast), interactive features of the live media broadcast (e.g., voting options during the live media broadcast), and so forth.
In most examples, the live event manager 404 utilizes detected signals to determine that media highlights (e.g., sports highlights, celebrity events, interactive features, camera view and scene changes) have occurred in a live media broadcast. In at least one example, the live event manager 404 utilizes the detected signals to determine that paid content (e.g., advertisements) has been inserted in the live media broadcast. For example, the live event manager 404 utilizes computing models, machine learning, pre-programmed rules and heuristics, and other decision mechanisms in determining that a live event has occurred based on the detected signals. In at least one implementation, the live event manager 404 includes one or more mechanisms (e.g., a button or command) that enable a user (e.g., a content creator or owner) to indicate that a live event has occurred in real-time.
As further mentioned above, and as shown in
As shown in
Additionally, the client computing devices 114a-114n and the content delivery server(s) 112 include the memories 106a-106n and 120, respectively. In one or more implementations, the memories 106a-106n and 120 generally represent any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, the memories 106a-106n and 120 may store, load, and/or maintain one or more of the components of the live streaming system 102. Examples of the memories 106a-106n and 120 include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, and/or any other suitable storage memory.
Moreover, as shown in
In summary, the live streaming system 102 provides added efficiency and flexibility in connection with live media broadcasts over conventional streaming platforms. For example, the live streaming system 102 enables modifications and other controls in connection with media content that has already been transmitted during a live media broadcast. While other streaming platforms treat live media broadcasts as recordable media from the client-side, the live streaming system 102 enables additional controls that can make already transmitted media data “unseekable” in connection with a live media broadcast. Similarly, the live streaming system 102 enables highlight indication in connection with already-broadcasted media content during a live media broadcast. As such, the live streaming system 102 allows content creators and owners to have fine-tuned control over how the content of a live media broadcast is experienced and re-experienced by viewers.
The following will provide, with reference to
Distribution infrastructure 510 generally represents any services, hardware, software, or other infrastructure components configured to deliver content to end users. For example, distribution infrastructure 510 includes content aggregation systems, media transcoding and packaging services, network components, and/or a variety of other types of hardware and software. In some cases, distribution infrastructure 510 is implemented as a highly complex distribution system, a single media server or device, or anything in between. In some examples, regardless of size or complexity, distribution infrastructure 510 includes at least one physical processor 512 and memory 514. One or more modules 516 are stored or loaded into memory 514 to enable adaptive streaming, as discussed herein.
Content player 520 generally represents any type or form of device or system capable of playing audio and/or video content that has been provided over distribution infrastructure 510. Examples of content player 520 include, without limitation, mobile phones, tablets, laptop computers, desktop computers, televisions, set-top boxes, digital media players, virtual reality headsets, augmented reality glasses, and/or any other type or form of device capable of rendering digital content. As with distribution infrastructure 510, content player 520 includes a physical processor 522, memory 524, and one or more modules 526. Some or all of the adaptive streaming processes described herein is performed or enabled by modules 526, and in some examples, modules 516 of distribution infrastructure 510 coordinate with modules 526 of content player 520 to provide adaptive streaming of digital content.
In certain embodiments, one or more of modules 516 and/or 526 in
In addition, one or more of the modules, processes, algorithms, or steps described herein transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein receive audio data to be encoded, transform the audio data by encoding it, output a result of the encoding for use in an adaptive audio bit-rate system, transmit the result of the transformation to a content player, and render the transformed data to an end user for consumption. Additionally or alternatively, one or more of the modules recited herein transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.
Physical processors 512 and 522 generally represent any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, physical processors 512 and 522 access and/or modify one or more of modules 516 and 526, respectively. Additionally or alternatively, physical processors 512 and 522 execute one or more of modules 516 and 526 to facilitate adaptive streaming of digital content. Examples of physical processors 512 and 522 include, without limitation, microprocessors, microcontrollers, central processing units (CPUs), field-programmable gate arrays (FPGAs) that implement softcore processors, application-specific integrated circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, and/or any other suitable physical processor.
Memory 514 and 524 generally represent any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, memory 514 and/or 524 stores, loads, and/or maintains one or more of modules 516 and 526. Examples of memory 514 and/or 524 include, without limitation, random access memory (RAM), read only memory (ROM), flash memory, hard disk drives (HDDs), solid-state drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, and/or any other suitable memory device or system.
As shown, storage 610 may store a variety of different items including content 612, user data 614, and/or log data 616. Content 612 includes television shows, movies, video games, user-generated content, and/or any other suitable type or form of content. User data 614 includes personally identifiable information (PII), payment information, preference settings, language and accessibility settings, and/or any other information associated with a particular user or content player. Log data 616 includes viewing history information, network throughput information, and/or any other metrics associated with a user's connection to or interactions with distribution infrastructure 510.
Services 620 includes personalization services 622, transcoding services 624, and/or packaging services 626. Personalization services 622 personalize recommendations, content streams, and/or other aspects of a user's experience with distribution infrastructure 510. Transcoding services 624 compress media at different bitrates which, as described in greater detail below, enable real-time switching between different encodings. Packaging services 626 package encoded video before deploying it to a delivery network, such as network 630, for streaming.
Network 630 generally represents any medium or architecture capable of facilitating communication or data transfer. Network 630 facilitates communication or data transfer using wireless and/or wired connections. Examples of network 630 include, without limitation, an intranet, a wide area network (WAN), a local area network (LAN), a personal area network (PAN), the Internet, power line communications (PLC), a cellular network (e.g., a global system for mobile communications (GSM) network), portions of one or more of the same, variations or combinations of one or more of the same, and/or any other suitable network. For example, as shown in
As shown in
Communication infrastructure 702 generally represents any type or form of infrastructure capable of facilitating communication between one or more components of a computing device. Examples of communication infrastructure 702 include, without limitation, any type or form of communication bus (e.g., a peripheral component interconnect (PCI) bus, PCI Express (PCIe) bus, a memory bus, a frontside bus, an integrated drive electronics (IDE) bus, a control or register bus, a host bus, etc.).
As noted, memory 524 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and/or other computer-readable instructions. In some examples, memory 524 stores and/or loads an operating system 708 for execution by processor 522. In one example, operating system 708 includes and/or represents software that manages computer hardware and software resources and/or provides common services to computer programs and/or applications on content player 520.
Operating system 708 performs various system management functions, such as managing hardware components (e.g., graphics interface 726, audio interface 730, input interface 734, and/or storage interface 738). Operating system 708 also provides process and memory management models for playback application 710. The modules of playback application 710 includes, for example, a content buffer 712, an audio decoder 718, and a video decoder 720.
Playback application 710 is configured to retrieve digital content via communication interface 722 and play the digital content through graphics interface 726 and audio interface 730. Graphics interface 726 is configured to transmit a rendered video signal to graphics device 728. Audio interface 730 is configured to transmit a rendered audio signal to audio device 732. In normal operation, playback application 710 receives a request from a user to play a specific title or specific content. Playback application 710 then identifies one or more encoded video and audio streams associated with the requested title.
In one embodiment, playback application 710 begins downloading the content associated with the requested title by downloading sequence data encoded to the lowest audio and/or video playback bitrates to minimize startup time for playback. The requested digital content file is then downloaded into content buffer 712, which is configured to serve as a first-in, first-out queue. In one embodiment, each unit of downloaded data includes a unit of video data or a unit of audio data. As units of video data associated with the requested digital content file are downloaded to the content player 520, the units of video data are pushed into the content buffer 712. Similarly, as units of audio data associated with the requested digital content file are downloaded to the content player 520, the units of audio data are pushed into the content buffer 712. In one embodiment, the units of video data are stored in video buffer 716 within content buffer 712 and the units of audio data are stored in audio buffer 714 of content buffer 712.
A video decoder 720 reads units of video data from video buffer 716 and outputs the units of video data in a sequence of video frames corresponding in duration to the fixed span of playback time. Reading a unit of video data from video buffer 716 effectively de-queues the unit of video data from video buffer 716. The sequence of video frames is then rendered by graphics interface 726 and transmitted to graphics device 728 to be displayed to a user.
An audio decoder 718 reads units of audio data from audio buffer 714 and outputs the units of audio data as a sequence of audio samples, generally synchronized in time with a sequence of decoded video frames. In one embodiment, the sequence of audio samples is transmitted to audio interface 730, which converts the sequence of audio samples into an electrical audio signal. The electrical audio signal is then transmitted to a speaker of audio device 732, which, in response, generates an acoustic output.
In situations where the bandwidth of distribution infrastructure 510 is limited and/or variable, playback application 710 downloads and buffers consecutive portions of video data and/or audio data from video encodings with different bit rates based on a variety of factors (e.g., scene complexity, audio complexity, network bandwidth, device capabilities, etc.). In some embodiments, video playback quality is prioritized over audio playback quality. Audio playback and video playback quality are also balanced with each other, and in some embodiments audio playback quality is prioritized over video playback quality.
Graphics interface 726 is configured to generate frames of video data and transmit the frames of video data to graphics device 728. In one embodiment, graphics interface 726 is included as part of an integrated circuit, along with processor 522. Alternatively, graphics interface 726 is configured as a hardware accelerator that is distinct from (i.e., is not integrated within) a chipset that includes processor 522.
Graphics interface 726 generally represents any type or form of device configured to forward images for display on graphics device 728. For example, graphics device 728 is fabricated using liquid crystal display (LCD) technology, cathode-ray technology, and light-emitting diode (LED) display technology (either organic or inorganic). In some embodiments, graphics device 728 also includes a virtual reality display and/or an augmented reality display. Graphics device 728 includes any technically feasible means for generating an image for display. In other words, graphics device 728 generally represents any type or form of device capable of visually displaying information forwarded by graphics interface 726.
As illustrated in
Content player 520 also includes a storage device 740 coupled to communication infrastructure 702 via a storage interface 738. Storage device 740 generally represents any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. For example, storage device 740 is a magnetic disk drive, a solid-state drive, an optical disk drive, a flash drive, or the like. Storage interface 738 generally represents any type or form of interface or device for transferring data between storage device 740 and other components of content player 520.
Example 1: A computer-implemented method for triggering actions by a client media player based on live events that occur during live media broadcasts. For example, the method may include receiving, at a content delivery server during a live media broadcast, a media content request from a client media player, in response to determining that a live event has occurred during the live media broadcast, generating one or more client media player instructions tailored to the live event, and generating a media content response including the requested media content and the one or more client media player instructions, and transmitting the media content response to the client media player to trigger the client media player to perform one or more actions based on the one or more client media player instructions.
Example 2: The computer-implemented method of Example 1, wherein the content delivery server receives media content requests every predetermined number of seconds during the live media broadcast.
Example 3: The computer-implemented method of any of Examples 1 and 2, wherein determining that the live event associated with the live media broadcast has occurred includes at least one of determining that the live media broadcast has begun following pre-show media content, determining that the live media broadcast has ended prior to post-show media content, determining that a broadcast error has occurred associated with the live media broadcast, determining that a media highlight has occurred during the live media broadcast, or determining that paid content has been inserted into the live media broadcast.
Example 4: The computer-implemented method of any of Examples 1-3, wherein determining that the media highlight has occurred during the live media broadcast includes at least one of determining that a sports highlight has occurred during the live media broadcast, determining that a celebrity event has occurred during the live media broadcast, determining that an availability of an interactive feature has changed during the live media broadcast, determining that a camera view has changed during the live media broadcast, or determining that a scene change has occurred during the live media broadcast.
Example 5: The computer-implemented method of any of Examples 1-4, wherein generating the one or more client media player instructions tailored to the live event includes generating one or more client media player instructions to modify one or more characteristics of a user interface presented by the client media player in association with the live media broadcast.
Example 6: The computer-implemented method of any of Examples 1-5, wherein the one or more characteristics of the user interface presented by the client media player include one or more of a seek bar, a control associated with playback of one or more streams of the live media broadcast, a title bar, or a subtitle area.
Example 7: The computer-implemented method of any of Examples 1-6, wherein generating the one or more client media player instructions to modify one or more characteristics of a seek bar presented by the client media player in association with the live media broadcast includes at least one of generating client media player instructions to modify one or more characteristics of the seek bar to make the pre-show media content unseekable, generating client media player instructions to modify one or more characteristics of the seek bar to make the post-show media content unseekable, generating client media player instructions to modify one or more characteristics of the seek bar to make a portion of the live media broadcast associated with the broadcast error unseekable, or generating client media player instructions to modify one or more characteristics of the seek bar to indicate where the media highlight has occurred within a portion of the live media broadcast that has already been transmitted.
Example 8: The computer-implemented method of any of Examples 1-7, wherein determining that the live event associated with the live media broadcast has occurred includes determining that the live media broadcast has concluded and generating the one or more client media player instructions tailored to the live event includes generating client media player instructions that cause the client media player to close and return a user of the client media player to a digital content system main menu.
In some examples, a system may include at least one processor and a physical memory including computer-executable instructions that, when executed by the at least one processor, cause the at least one processor to perform various acts. For example, the computer-executable instructions may cause the at least one processor to perform acts including receiving, during a live media broadcast, a media content request from a client media player, in response to determining that a live event associated with the live media broadcast has occurred, generating one or more client media player instructions tailored to the live event, and generating a media content response including the requested media content and the one or more client media player instructions, and transmitting the media content response to the client media player to trigger the client media player to perform one or more actions based on the one or more client media player instructions.
Additionally in some examples, a non-transitory computer-readable medium can include one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to perform various acts. For example, the one or more computer-executable instructions may cause the computing device to receive, during a live media broadcast, a media content request from a client media player, in response to determining that a live event associated with the live media broadcast has occurred, generate one or more client media player instructions tailored to the live event, and generate a media content response including the requested media content and the one or more client media player instructions, and transmit the media content response to the client media player to trigger the client media player to perform one or more actions based on the one or more client media player instructions.
Unless otherwise noted, the terms “connected to” and “coupled to” (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of,” Finally, for ease of use, the terms “including” and “having” (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.”