Certain embodiments of the disclosure relate to a television content packaging and distribution system. More specifically, certain embodiments of the disclosure relate to a method and system for establishing a shared media session for one or more client devices.
Recent advancements in the field of television content packaging and distribution systems have led to a massive development of numerous technologies and broadcasting platforms that are revolutionizing the way client devices access and playout media content. Usually, broadcasting platforms refer to the types of networks that are used to deliver the media content to the consumers. Currently, the broadcasting platforms, such as analog terrestrial broadcast, digital terrestrial broadcast, direct-to-home satellite broadcast, cable, Internet Protocol (IP), and over-the-top television (OTT), compete and strive to increase their appeal by gaining and retaining the audience viewing the media content.
Modern streaming protocols, such as HTTP Live Streaming (HLS) and Dynamic Adaptive Streaming over HTTP (DASH), are implemented to support streaming of various live content services, such as through DIRECTV NOW℠, SLING TV℠ and PLAYSTATION™ VUE, to the client devices. Due to dissemination of such modern streaming protocols in the television, radio, and broadcasting sector, it is evident that the success of broadcasting will be dependent on the ability of the network provider to gain access to the content that consumers demand, and to differentiate their offering from that of incumbent broadcasters or find breakthrough modes of media content delivery.
Existing systems that publish live output streams in a content delivery system may require a scheduler or a network operator to create a channel. Accordingly, the amount of control a user may excerpt to influence what programming and non-programming content is shown may be very limited.
Given the trend toward media content distribution, there is required a television content packaging and distribution system that may leverage a system, which provides to the capability for a user, for example, a viewer, to have a more direct impact on the what programming and non-programming content that is shown. This may provide the network provider with the ability to not only provide new channel offerings in a cost-effective manner but also provide enhanced, intelligent, and personalized viewer experience to increase their appeal in order to gain a wider audience and retain the audience viewing the media content.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present disclosure as set forth in the remainder of the present application with reference to the drawings.
Systems and/or methods are provided for establishing a shared media session for one or more client devices, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
These and other advantages, aspects and novel features of the present disclosure, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
Certain embodiments of the disclosure may be found in a method and system for establishing a shared media session for one or more client devices. Various embodiments of the disclosure provide a method and system that not only provide live channel offerings in a cost-effective manner but also provide enhanced, intelligent, and personalized viewer experience to increase their appeal by retaining the audience viewing the media content.
In accordance with various embodiments of the disclosure, a system is provided for establishing a shared media session for one or more client devices. One or more processors in the system may be configured to establish a shared media session. The shared media session may include a disparate live media output stream scheduled by a first client device to start at a defined timestamp. The disparate live media output stream may be played back on one of the first client device or a plurality of client devices that comprises the first client device and one or more second client devices. The plurality of client devices may join the shared media session through the distributed communication network. During the shared media session, event data and media among the plurality of client devices in the shared media session may be synchronized through the distributed communication network based on one or more criteria. The one or more processors in the shared media session system may be further configured to receive the event data and media corresponding to the shared media session and previous shared media sessions from the recording client device communicably coupled to the distributed communication network. The one or more processors in the shared media session system may be further configured to generate a persistent record of received event data and media corresponding to the shared media session and previous shared media sessions until the shared media session is terminated by at least one of the first client device or by abandonment of the distributed communication network by the first client device and by the one or more second client devices.
The media packaging and distribution system 102 may comprise suitable logic, circuitry, and interfaces that may be configured to execute code that handles media content comprising audio, video, images, metadata, manifests, and/or other data (embedded and/or externally referenced). The media content may include a video, an audio, a combination of audio and video presentations, and/or embedded or externally referenced metadata, a combination of multiple-audio, multiple-video, and/or embedded or externally referenced metadata. Accordingly, the media packaging and distribution system 102 establishes a shared media session for the plurality of client devices 110.
In this regard, the media packaging and distribution system 102 may provide video programming services to viewers, usually for a subscription fee (such as pay television). The media packaging and distribution system 102 also handles distribution, for example, multicasting, unicasting, broadcasting, streaming, for one or more channels to be viewed on one or more of the plurality of client devices 110.
The media packaging and distribution system 102 may be operated by an entity related to handling or distribution of media content, for example, a broadcast provider or operator, or a network provider or network operator. The entity related to handling or distribution of media content may also be referred to as a content owner, a distributor, a syndicator, a re-distributor, a content aggregator, a search, discovery, or cataloging service provider, or any other entity actively or passively involved with the distribution, cataloging, or referencing of complete or partial presentations of media content. Throughout this document, the terms broadcast provider or broadcast operator, and network provider or network operator may be utilized to refer to the entity related to handling or distribution of media content, interchangeably. The broadcast provider may handle a single channel or a plurality of channels, or one or more networks. The broadcast provider may be configured to distribute content via one or more platforms, for example, traditional over-the-air broadcast channels, radio, cable television networks, satellite communication networks, the Internet, and/or other content delivery networks (CDNs). In this regard, the broadcast provider may be configured to execute code that communicates linear video feeds (also referred to as a network television feed or broadcast feed) to the media packaging and distribution system 102. In a broadcast chain, the broadcast provider may receive actual content, for example, from a production studio, in one or more source formats. Examples of the one or more source formats may include, but are not limited to a tape file, or a live feed that may be further converted to a serial digital interface (SDI) video interface and/or on a high-definition SDI (HD-SDI) video interface for processing and playout. The broadcast provider may further process the content, such as insertion of graphics, closed captions, preparation of programming schedule, insertion of triggers, and the like, and final delivery by a broadcasting apparatus. The communicated linear video feed and the playout schedule may correspond to a channel, such as CNN channel that is broadcast to the media packaging and distribution system 102, via a communication network. The linear video feed may be broadcasted as a multi-program transport stream (MPTS) (also referred to as a live video feed) to the media packaging and distribution system 102, via the network 108. The broadcast provider may be owned by (or associated to) a broadcast provider or operator, a network provider or operator, or a content provider or operator.
The media packaging and distribution system 102 may receive the MPTS, which includes the signaling content and metadata, from the broadcast provider based on, for example, current society of cable telecommunication engineers (SCTE) standards (SCTE-35 and SCTE-224) to control web and regional blackouts, network end of day switching, and advertisement insertion. For example, the media packaging and distribution system 102 may be signaled for various blackout types with in-band SCTE-35 message. Further, the media packaging and distribution system 102 may receive program metadata that specifies certain events or operations, such as, for example, when to blackout shows. Examples of legacy distribution system that may be benefitted from the media packaging and distribution system 102 may include direct-broadcast satellite (DBS) providers, cable television (CATV) systems, and other wireline video providers and competitive local exchange carriers (CLECs) using, for example, IPTV.
The DACIS 103 may be an optional system in the media packaging and distribution system 102, and may comprise suitable logic, circuitry, and interfaces that may be configured to construct and deliver targeted and/or personalized media streams. The DACIS 103 may leverage one-to-one scale of traditional server-side ad insertion systems to support custom programming content choices and not just targeted non-programming content. For example when the user selects to join a live stream, a content decisioning system could determine that, instead of joining the live stream for the last few minutes of a program, the user should instead be shown content more relevant to the next program e.g. show a personalized set of basketball highlights and ads to a user who likely joined the stream to watch the basketball game that is coming on next—do not join the live stream until the previous program ends and the game starts.
The DACIS 103 may be further configured to, via a programming schedule or tag indicator in a disparate live media output stream manifest, be notified of one or more content graphical treatment opportunities within the media content. The DACIS 103 may be further configured to make required non-programing content calls on behalf of the plurality of client devices 110. Accordingly, the DACIS 103 may provide the plurality of client devices 110 with information needed to execute the graphical treatment graphical content via a secure out-of-band channel between the DACIS 103 and the plurality of client devices 110. In accordance with an embodiment, the DACIS 103 may be configured to include not showing non-programming content that a user of a client device may elected to skip or rated poorly in an earlier non-programming content break. Further, the DACIS 103 may enable the user to skip non-programming content as the user interacted with a previous non-programming content or made a purchase and the advertiser elected to sponsor the remainder of the programming content.
In accordance with an embodiment, the DACIS 103 may be configured to provide seamless failover between redundant disparate live media output streams for large events, thus improving reliability. In certain instances, some of the plurality of client devices 110 may support a primary and backup disparate live media output streams and are able to fail between them. In other instances, others of the plurality of client devices 110 may not support the primary and backup disparate live media output streams. In such instances, the client devices have to crash and then try to join an alternative disparate live media output stream. For such client devices, the DACIS 103 may be configured to monitor both the primary and backup disparate live media output streams, and if there is a failure, write the alternative disparate live media output stream into the disparate live media output stream manifest. In accordance with an embodiment, the DACIS 103 may be configured to receive required media content from the CPDS 107.
Each of the plurality of published data sources 104a, . . . , 104n may be coupled to one or more television networks and may comprise suitable logic, circuitry, and interfaces that may be configured to execute code that provides actual audiences for programs that were distributed. As illustrated in
The shared media session system 105 may comprise suitable logic, circuitry, and interfaces that may be configured to execute a code to manage and establish shared media sessions with the plurality of client devices 110. The shared media session may correspond to duration of media playback with the plurality of client devices 110 acting as participants, whom may be exchanging data and other media as a form of interaction. The shared media session system 105 may be further configured to facilitate participants of a shared media session with constructing a peer-to-peer network, such as the distributed communication network 112, between the participants. The shared media session system 105 may be further configured to facilitate one or more participants to select a disparate live media output stream from a list of available disparate live media output streams. The participant may correspond to a user taking part in the shared media session, and consuming the media of the shared media session. The participant may also act as a client on the peer-to-peer network associated with the shared media session.
In accordance with an embodiment, the shared media session system 105 may be configured to receive list of available media content from the DACIS 103. In accordance with another embodiment, the shared media session system 105 may be configured to receive list of available media content from the CPDS 107. In accordance with yet another embodiment, the shared media session system 105 may be configured to receive a list of available media content from one of the plurality of client devices 110. For example, the first client device 110a may be configured to request the shared media session system 105 for a specific Youtube® video for further sharing.
The Ad decisioning servers 106a, . . . , 106n may comprise suitable logic, circuitry, and interfaces that may be configured to implement at least an advertisement decisioning component that may be used during a real-time content or advertisement placement activity, for example during dynamic ad insertion. For example, commercial or non-commercial advertisements may be dynamically inserted within program segments of the live input streams by the Ad decisioning servers 106a, . . . , 106n based on the upcoming indicator detected by the media player or the non-programming content proxy server (not shown). The detected indicator may be, such as an inbound trigger, a signaling point, and/or a signal in a pre-encoded media asset and/or a live input stream. The Ad decisioning servers 106a, . . . , 106n may receive a request for retrieval of non-programming content, for example, ads, from a non-programming content proxy server (not shown). Specifically, the Ad decisioning servers 106a, . . . , 106n may receive the request from one or more of the plurality of client devices 110, via the non-programming content proxy server (not shown). The request may be received when one or more indicators and/or pre-encoded place holder content segment for a scheduled duration of one or more non-programming content breaks. The scheduled durations of one or more non-programming content breaks may be defined by a received programming schedule, and are encountered in the disparate live media output stream manifest during media content playout by media players at the one or more of the plurality of client devices 110.
For requests that are received from the plurality of client devices 110, based on corresponding disparate live media output stream manifests, the Ad decisioning servers 106a, . . . , 106n may identity the opportunities for the real-time content or advertisement placement activity. In this regard, as the advertisement decisioning component of the Ad decisioning servers 106a, . . . , 106n is implemented in a client device, such as one or more of the plurality of client devices 110, the Ad decisioning servers 106a, . . . , 106n may identify real-time content or advertisement placement opportunity for dynamic ad insertion. For example, commercial or non-commercial advertisements may be dynamically inserted within program segments of a media feed based on the detected indicator, such as upcoming inbound trigger, signaling point, and/or signal, in the disparate live media output stream manifest by the Ad decisioning servers 106a, . . . , 106n when the ad decisioning component is implemented in the client device. In various embodiments, the advertisement decisioning component of the Ad decisioning servers 106a, . . . , 106n may be configured to determine which advertisements, graphical treatment graphics and presentation information to serve to the plurality of client devices 110 based on stream ID, a program ID, a geographical location, time, and any preferences associated with an individual consumer or an advertisement ID specified by the disparate live media output stream manifest.
The CPDS 107 may comprise suitable logic, circuitry, and interfaces that may be configured to index programming content, which is prepared for usage. The CPDS 107 may further define metadata detailing various facets of the programming and/or non-programing content including duration, known locations and opportunities for programing and/or non-programing content insertion/replacement.
The network 108 may be any kind of network, or a combination of various networks, and it is shown illustrating the communication that may occur between the Ad decisioning servers 106a, . . . , 106n and the media packaging and distribution system 102. For example, the network 108 may comprise one or more of a cable television network, the Internet, a satellite communication network, a wide area network (WAN), a medium area network (MAN), and a local area network (LAN). Although a network 108 is shown, the disclosure is not limited in this regard; accordingly, other exemplary modes may comprise uni-directional or bi-directional distribution, such as packet-radio, satellite. Furthermore, the network 108 is an exemplary embodiment of a distribution system.
The external storage system 109 may comprise suitable logic, circuitry, and interfaces that may be configured to execute a code to implement a persistent storage of past shared media sessions, containing shared media session event data, audio, and video.
The plurality of client devices 110 may include client devices 110a, . . . , 110n that may refer to end-user devices or consumption devices where the content is played to be consumed by a user. Each client device may correspond to a node on the distributed communication network 112 established for a given shared media session, where a client device may participate. The number of impressions of a media item, such as an advertisement and/or promotional media, on such plurality of client devices 110 determines the advertising impact or promotion impact and number of actual audiences achieved during campaigns. Examples of the plurality of client devices 110 may include, but are not limited to, connected TVs, connected TV with paired and/or connected devices (e.g., HDMI sticks, tablets), personal computer, smartphone, tablet, OTT set-top, or hybrid set-top, and second screen devices such as smartphones, tablets, game consoles, personal computers, set-top boxes, and embedded devices. The plurality of client devices 110 may further include process/system that may process the output for any means, regardless of the capability or intent to decode for media presentation, and on which the consumer may launch a web page, a web application, or a web service to view media content.
The distributed communication network 112 may comprise suitable logic, circuitry, and interfaces that may be configured to replicate a peer-to-peer network constructed by the participants, such as the plurality of client devices 110, in a given shared media session. The distributed communication network 112 may be used to exchange event data, video, and audio between peers to enable interaction between the participants themselves, and the participants and the media.
The recording client device 114 may comprise suitable logic, circuitry, and interfaces that may be configured to act as a client that connects to the distributed communication network 112 of the shared media session. The recording client device 114 may further observe or record event data, video, and audio exchanged by the remaining peers on the distributed communication network 112 such that all the recorded events may be maintained in the external storage system 109. Such recorded events may be packaged in one or more formats to be provided from the CPDS 107 as another media content to be viewed or searched. After the shared media session has ended, the recording client device 114 may upload the recording of the shared media session to the external storage system 109.
The source devices 118 may comprise suitable logic, circuitry, and interfaces that may be configured to communicate a live media feed or live input streams of a channel, such as an existing channel, to the media packaging and distribution system 102. In accordance with an embodiment, the live input streams of the channel may correspond to a broadcast feed. The source device 118 may be communicatively coupled to the network 108.
The external data source 120 may comprise suitable logic, circuitry, and interfaces that may be configured to execute code that handles retrieval and storage of audience data that corresponds to subscribers of the plurality of client devices 110. The audience data may include demographics data, audience targeting data, trending data, device type data, device platform data, and content recognition-based data, such as automatic content recognition (ACR)-based data. The trending data comprises information on what's trending in the social networks (or platforms), such as Twitter®, Facebook®, and the like. The trending data also comprises information on what's trending based on social engagement, such as number of likes or votes to a particular media item, or number of people watching a particular media item. The trending data may indicate an aggregate interest level of a number of users in the social networks for a particular media item. For example, a thousand or more shares, or likes by a number of users may indicate a highly popular media item.
The content delivery system 122, as described in
The graphics engine 124 may comprise suitable logic, circuitry, and interfaces that may be configured to perform the graphics data processing required to illustrate a 2D or 3D image, text, video, or other media onto a client device corresponding to a received disparate live media output stream manifest. Such image may include one or more objects having visually apparent dimensions in relation to two or three defined axes based on hardware and software configuration of the client device. Typically, the graphics engine 124 comprises of a geometry processing unit, a rasterization unit, and a special function register (SFR).
The media player 126 may comprise suitable logic, circuitry, and interfaces that may be configured to process disparate live media output stream manifests comprising media segments of live input streams and/or pre-encoded media assets. Accordingly, the media player 126 may be configured to generate corresponding disparate live media output streams. Such disparate live media output streams may comprise audio, video, images, or a combination thereof that may correspond to live media input streams and/or pre-encoded media assets. The audio may include an external media, an audio recorded from a microphone, or an application-specific audio resource. Video may include an external media, a video recorded from peer camera, or application-specific video resources (for example, interactive animations). The media player 126 may be further configured to communicate the disparate live media output stream to the graphics engine 124 for rendering media content.
The first peer-to-peer module 128 may comprise suitable logic, circuitry, and interfaces that may be configured to establish a peer-to-peer connection between the client devices from the plurality of client devices 110. The second peer-to-peer module 130 may comprise suitable logic, circuitry, and interfaces that may be configured to join a peer-to-peer connection between the recording client device 114 and client devices from the plurality of client devices 110.
The event metadata indexer 132 may comprise suitable logic, circuitry, and interfaces that may be configured to index metadata associated with an event, such as a user interaction with media, a user interaction with another user, broadcast notifications of a network state of the user, and/or broadcast notifications of an application state of the user. Examples of the user interaction with media may include, but are not limited to, pausing video for all users and rewinding/fast-forwarding/seeking media for all users. Examples of the broadcast notifications of the network state of the user may include, but are not limited to, a connected state, a disconnected state, or a sending data state. Examples of the broadcast notifications of the application state of the user may include, but are not limited to, a muted audio, an invoked interactive element, an interactive element invocation completion, and/or a change in user application configuration.
The media recorder 134 may comprise suitable logic, circuitry, and interfaces that may be configured to record event data, and media, such as video and audio, exchanged by the remaining peers, such as the plurality of client devices 110, during the shared media session.
The file uploader 136 may comprise suitable logic, circuitry, and interfaces that may be configured to upload the recording of the shared media session to the external storage system 109, such as the recorded client sessions database.
In operation, the shared media session system 105 in the media packaging and distribution system 102 may be configured to generate a shared media session for a disparate live media output stream requested (or selected) by a user associated with a client device, for example, the first client device 110a. In accordance with an embodiment, the shared media session system 105 may be configured to provide a list of available media content comprising live input streams and/or pre-encoded media assets for selection to the user.
The shared media session system 105 may further define a content identifier for the shared media session. Based on the content identifier, one or more of the plurality of client devices 110 may be configured to request data associated with the recorded shared media session. The shared media session may be defined to have at least a number of participants, a selection of media content based on which a disparate live media output stream manifest is generated, a first flag that indicates the shared media session is discoverable by the one or more second client devices 110b, . . . , 110n via, and a second flag that indicates the shared media session is to be recorded. Each participant, such as one of the plurality of client devices 110 may interact with the playback of the disparate live media output stream. As described above, the media content may be selected by the user associated with the first client device 110a from a list of existing and referenced media content provided by the one or more processors, or submitted by the user from an external source.
In accordance with various embodiments, the user associated with the first client device 110a may initiate an establishment of a single-participant or a multi-participant shared media session with the shared media session system 105. The user may schedule the disparate live media output stream and initiate the playback of the disparate live media output stream. In case of single-participant shared media session, the shared media session may not have more than one participant, for example the first client device 110a. Further, in case of single-participant shared media session, the disparate live media output stream may comprise media segments of a live input stream or a pre-encoded media asset. However, in case of multi-participant shared media session, the shared media session may have more than one participant, for example the plurality of client devices 110. Further, in case of multi-participant shared media session, the disparate live media output stream may comprise media segments of one or more live input streams and/or one or more pre-encoded media assets.
In accordance with an embodiment when the shared media session is a single-participant shared media session, the user associated with the first client device 110a may be configured to initiate a playback of disparate live media output stream selection, via the media player 126, based on scheduling of the disparate live media output stream to be created. In accordance with an embodiment, the shared media session may be flagged for recording, as indicated by the second flag, either during shared media session creation or after shared media session initiation. The first client device 110a may be configured to establish the distributed communication network 112, such as a peer-to-peer connection. The first client device 110a may communicate a client identifier and an IP address to the shared media session system 105. The recording client device 114 may be configured to join the distributed communication network 112 established by the first client device 110a, via the second peer-to-peer module 130. The recording client device 114 may be configured to record event data and media exchanges that originate from the first client device 110a during playback. Such recordings may not include the disparate live media output stream selected for playback during the shared media session. Each event data and media exchange may have a playhead time of playback of the disparate live media output stream, and a real-time of the event. The event data and the media exchanges may then be synchronized with the playback of the disparate live media output stream.
In accordance with various embodiments, the user may choose to pause, seek, rewind, or fast-forward as the window of the disparate live media output stream allows. Thereafter, the user may choose to terminate the shared media session. When the first client device 110a abandons the distributed communication network 112, the recording client device 114 may cease the recording of the event data and the media exchanges. In accordance with an embodiment, the recording client device 114 may generate an alert for the shared media session system 105 to close the shared media session.
In accordance with an embodiment when shared media session is a multi-participant shared media session, the participants, such as the second client devices 110b, . . . , 110n, may be configured to discover and join the shared media session, via the corresponding peer-to-peer modules, similar to the first peer-to-peer module 128. In such case, the shared media session may be advertised explicitly and selected by the first client device 110a via an invitation or a shared universal resource locator, via an external advertisement service via a universal resource locator or an identifier, or within context of a group of shared media sessions discovered within the shared media session system 105.
When multiple participants join the shared media session, a first participant, for example the first client device 110a, may establish the distributed communication network 112 and communicates the client identifier and IP address to the shared media session system 105 where it is stored. Thereafter, other participants, for example the second client devices 110b, . . . , 110n in the shared media session may discover the new client identifier from the shared media session system 105. The distributed communication network 112 may be established directly between the participants where client identifier of each participant may be used to identify and share data between various participants, such as the plurality of client devices 110. Media exchanged between the participants, corresponding to the shared media session and previous shared media sessions from the recording client device 114, may include, but are limited to audio and video. Audio may include, for example, external media, audio recorded from a microphone, or application-specific audio resources. Video may include, for example, external media, video recorded from peer camera, or application-specific video resources (for example, interactive animations). Further, event data corresponding to the shared media session and previous shared media sessions may include, but are not be limited to a user interaction with the disparate live media output stream to pause video for all users or rewind/fast-forward/seek disparate live media output stream for all users, a user interaction with another user, a broadcast notifications of network state of the user, or a broadcast notifications of application state of the user. The shared media session system 105 may observe the event data and the media exchanges on the shared media session by use of the distributed communication network 112. Based on the received event data and the media exchanges, the shared media session system 105 may generate the persistent records. The persistent records may include a persistent audio exchanged between participants on the distributed communication network 112, persistent video exchanged between participants on the distributed communication network 112, persistent event data exchanged between participants on the distributed communication network 112, time of event data, audio, and video in accordance with real time, and time of event data, audio, and video data in accordance with time of the disparate live media output stream. In accordance with an embodiment, the recording of the shared media session may be coordinated with the start of shared media session and according to number of participants in the distributed communication network 112.
In accordance with an embodiment, the file uploader 136 in the recording client device 114 may upload the persistent record to the external storage system 109. In such cases, the event data, audio, and video may be used to recreate the shared media session in the future. Further, the persistent record may be referenced from the external storage system 109 and further distributed through a distribution system, such as the CPDS 107.
In accordance with an embodiment, the shared media session may be scheduled within the shared media session system 105 to start at a given date and time. The date and time may correspond to a live event. Further, an ability of a participant to join or not join the shared media session may coordinate disparate live media output stream with the scheduled date and time.
In accordance with an embodiment, a participant in the distributed communication network 112 may initiate the playback of the disparate live media output stream. For example, a client device of the plurality of client devices 110 may be configured to initiate the playback of the disparate live media output stream. The playback of the disparate live media output stream may be synchronized across the participants. The synchronization may be performed using streaming media and control flow protocols (for example Real Time Streaming Protocol (RTSP)/Real-time Transport Protocol (RTP)), using a hybrid of two or more streaming media and control flow protocols (for example RTSP/RTP with TS segments from HLS), using the synchronizing client device to send playhead time relative to the calculated offset of a given time of a participant, constraining a live window of playback of the disparate live media output stream and the size of the media segments such that the variability of different playback positions is limited to an accepted value, or a combination thereof.
In accordance with an embodiment, the event data may be synchronized to all participants across the distributed communication network 112. The event data may contain a combination of real-time and media playhead time to maintain event sequence. Further, the events may have application-specific actions that may be executed, such as, but not limited to interactivity between participants, updating playback state of the disparate live media output stream, changing playback state of the disparate live media output stream, changing application state, and/or addition or removal of participants to or from the distributed communication network 112.
The persistent records may be further distributed and/or promoted from the external storage system 109. In accordance with an embodiment, the persistent records, having been synchronized with the playback of the disparate live media output stream, may then be transcoded and distributed as a new media asset.
In accordance with an embodiment, when the plurality of client devices 110 abandon the distributed communication network 112, the recording client device 114 may be configured to cease the recording of the event data and media exchanges. Thereafter, the recording client device 114 may generate an alert for the shared media session system 105 to close the shared media session.
In accordance with another embodiment, the shared media session system 105 in the media packaging and distribution system 102a may be configured to generate a new disparate live media output stream by augmenting existing disparate live media output stream. The augmentation of the existing disparate live media output stream may be based on additional data and/or media (such as audio or video), having resulted from the persisted record of the shared media session. The new disparate live media output stream may have multiple distinct audio channels, resulting from a participant audio interaction, such as voice, and a participant-invoked application audio. The new disparate live media output stream may further have multiplexed audio, that may comprise a participant audio interaction, such as voice, a participant-invoked application audio, or an original media audio.
For example, while watching a basketball game as a disparate live media output stream during a shared media session, one or more users provide comments on one or more actions of players at one or more timestamps. Thus, the resulting persistent record of the shared media session may comprise an audio of the one or more users commenting in relation to the disparate live media output stream, such as the basketball game, at the one or more timestamps. The CPDS 107 may be configured to retrieve the persistent record comprising the audio that was recorded and consequently augment to the existing disparate live media output stream and operate as a new disparate live media output stream.
The recording client device 114 may be configured to record the event data and media exchanges between client devices from the plurality of client devices 110 during playback of the existing disparate live media output stream. The persistent record may exclude the existing disparate live media output stream selected for the shared media session playback. Each event data and media exchange may include playhead time of the playback of the existing disparate live media output stream, and real-time of event. Further, the event data and media exchange may be synchronized with the playback of the existing disparate live media output stream in the shared media session. Such persistent record of the event data and media exchanges may be synchronized with the playback of the existing disparate live media output stream of the shared media session and transcoded and distributed as the new disparate live media output stream. As described above, the recording client device 114 may be configured to communicate the generated persistent record to the external storage system 109 for further distribution and promotion. In accordance with an embodiment, a shared media session may be recreated at a future time based on the event data and media in the persistent record. In accordance with an embodiment, the CPDS 107 may be configured to distribute the persistent record, retrieved from the external storage system 109, to the plurality of client devices 110 in the distributed communication network 112 via the content delivery system 122. In accordance with an embodiment, the CPDS 107 may be configured to transcode from the existing, persistent and stored version to a new format. Consequently, persistent records, comprising recorded event data and media exchanges, having been synchronized with playback of the existing disparate live media output stream in the shared media session, may be transcoded and distributed as a new disparate live media output stream. Upon the plurality of client devices 110 abandoning the distributed communication network 112, the recording client device 114 may be configured to cease the recording. Further, the recording client device 114 may alert the shared media session system 105 to close (or terminate) the shared media session.
It is to be understood by those skilled in the art that various changes may be made and segments of different file sizes (or length) may be used without departure from the scope of the present disclosure. Further, it should be recognized by one skilled in the art that other streaming protocols may require a different processing of media content. Thus, the scope of the disclosure should not be limited to the processing or preparation of media content to allow delivery using different delivery methods, streaming protocols, or distribution system, known in the art. Further, instead of the live input streams and pre-encoded media asset arranged, as shown, different arrangements per the programming schedule may be possible with respect to interstitial content items, such as the targeted first non-programming content 208 and the customized first programming content 210.
The insertion of the live input stream manifests, pre-encoded media asset manifests, the targeted first non-programming content 208 and the customized first programming content 210 may be done on-the-fly based on dynamic scheduling by the shared media session system 105 that generates the programming schedule. The insertion may be driven by real time or near-real time content context analysis, user-selection on the plurality of client devices 110, or driven by external data received from the external data source 120. The shared media session system 105 may include a personalized manager (not shown) in association with the stream selection service (not shown) may be configured to insert live input streams, such as the first live input stream 202 and the second live input stream 206, or pre-stored media assets, such as the first pre-encoded media asset 204, the targeted first non-programming content 208 and the customized first programming content 210, in an existing disparate live media output stream based on manipulation of a manifest the existing disparate live media output stream, such as an existing channel.
In accordance with an embodiment, each segment of the first set of video segments 202a, 202b, 202c, . . . , 202n, the second set of video segments 204a, 204b, 204c, . . . , 204n, and third set of video segments 206a, 206b, 206c, . . . , 206n, may be further processed to be stored at various quality levels, and content encryption modes for the purposes of adaptive bitrate streaming and digital rights management, for example, the video segment 202a may be stored in a plurality of quality levels, for example, high definition (HD), high dynamic range (HDR) video, or different quality levels in accordance with specified pixel resolutions, bitrates, frame rates, and/or sample frequencies. As each of the media content, such as 202 to 206, are encoded, segmented, and stored with the plurality of quality levels in a media content master storage system. The media content may be re-used to create new channels, such as a new disparate live media output stream, without having to re-encode a selected live input stream or a pre-encoded media asset when a new disparate live media output stream is created using the live input streams or a pre-encoded media asset.
For the sake of brevity, and with reference to
At 302, the shared media session may be defined based on one or more characteristics. In accordance with an embodiment, the shared media session system 105 may be configured to define the shared media session based on one or more characteristics.
In accordance with an embodiment, the shared media session system 105 may be configured to define the shared media session when the user initiates creation of a new single-participant shared media session with the shared media session system 105. In accordance with another embodiment, the shared media session system 105 may be configured to define the shared media session when the user initiates creation of a new multi-participant shared media session with the shared media session system 105. In such embodiments, the user may be associated with the first client device 110a. Various examples of the one or more characteristics may include, but are not limited to, a count of client devices that participate in the shared media session and interact with a disparate live media output stream, a selection of media content based on which a disparate live media output stream manifest is generated, a first flag that indicates the shared media session is discoverable by the one or more second client devices, and a second flag that indicates the shared media session is to be recorded. In accordance with an embodiment, the selection of the media content may be performed by the user associated with the first client device 110a from a list of existing and referenced media content provided by the one or more processors, or submitted by the user from an external storage.
At 304, the shared media session to be recorded may be determined based on the second flag during the establishment of the shared media session or after the establishment of the shared media session. In accordance with an embodiment, the shared media session system 105 may be configured to determine that the shared media session is to be recorded based on the second flag during the establishment of the shared media session or after the establishment of the shared media session. Accordingly, in accordance with an embodiment, the shared media session system 105 may be configured to record the shared media session in a recorded client session database, such as the external storage system 109. In accordance with another embodiment, the recording client device 114 may be configured to record the shared media session in the recorded client session database, such as the external storage system 109.
At 306, the shared media session may be established that includes a disparate live media output stream scheduled by the first client device 110a to start at a defined timestamp. In accordance with an embodiment, the shared media session system 105 may be configured to establish the shared media session that includes the disparate live media output stream scheduled by the first client device 110a to start at a defined timestamp.
In accordance with an embodiment, the shared media session system 105 may be configured to establish the shared media session as a single-participant shared media session that comprises the first client device 110a and is initiated by the first client device 110a. In accordance with an embodiment, the shared media session system 105 may be configured to establish the shared media session as a multi-participant shared media session that comprises the plurality of client devices 110, and is initiated by the first client device 110a. The shared media session may be established as the single-participant shared media session or the multi-participant shared media session based on the type of request initiated by the user, as described at exemplary operation 302. In accordance with an embodiment, when the shared media session system 105 establishes the shared media session as the single-participant shared media session, the shared media session may not have more than one participant, such as the first client device 110a.
In accordance with another embodiment, when the shared media session system 105 establishes the shared media session as the multi-participant shared media session, the shared media session may have the plurality of participants, such as the plurality of client devices 110. In such embodiment, the plurality of client devices 110 may be configured to discover and join the distributed communication network 112, via the corresponding peer-to-peer module similar to the first peer-to-peer module 128. The shared media session may be advertised explicitly and selected by the first client device 110a via an invitation or a shared universal resource locator. The shared media session may be further advertised via an external advertisement service via a universal resource locator or an identifier. The shared media session may be further advertised within context of a group of shared media sessions discovered within the shared media session system 105.
When the plurality of client devices 110 joins the shared media session as participants, the first participant, for example, the first client device 110a, may be configured to establish the distributed communication network 112, via the first peer-to-peer module 128. In such a case, an identifier may be established for each participant and communicated to the shared media session system 105. The shared media session system 105 may be configured to receive and store the identifier from the first client device 110a, and the identifier may be discovered by the one or more second client devices 110b, . . . , 110n−5 in the shared media session. In accordance with an embodiment, shared media session system 105 may be configured to receive and store the identifiers from the remaining client devices 110n−5, . . . , 110n, and the identifiers may be discovered by the one or more second client devices 110b, . . . , 110n in the shared media session
In accordance with an embodiment, a peer-to-peer network, for example the distributed communication network 112, may be established directly between client devices from the plurality of client devices 110. Each client device within the distributed communication network 112 may be identified based on corresponding identifier. Once the distributed communication network 112 is established, event data and media may be shared between client devices from the plurality of client devices 110 through the distributed communication network 112 based on corresponding identifiers. The media may comprise audio data and video data. The audio data may include, for example, at least an external audio media, an audio recorded from a microphone, or an application-specific audio resource. The video data may include, for example, at least an external video media, a video recorded from a participant camera, or an application-specific video resource. The event data may include, for example, a first user interaction with the disparate live media output stream that pauses video for the plurality of client devices 110, plays rewinds, fast-forward or seek media for the plurality of client devices 110, or a second user interaction with another user. The event data may further include, for example, a first broadcast notification of network state of the plurality of client devices 110 that is one of connected, disconnected or sending data. The event data may further include, for example, a second broadcast notification of application state of the plurality of client devices 110 that is one of a muted audio, an invoked interactive element, a completion of the invoked interactive element, a change in user application configuration, an update in playback state of the disparate live media output stream, a change in the playback state of the disparate live media output stream, addition of new client devices or removal of existing one or more client devices from the plurality of client devices 110.
In accordance with an embodiment, wherein a schedule of the shared media session within the shared media session system 105 may indicate a start of the disparate live media output stream at a defined timestamp and date. The defined timestamp and date may correspond with at least one of a live event streamed in the disparate live media output stream or pre-encoded media assets streamed in the disparate live media output stream. In accordance with an embodiment, the one or more second client devices 110b, . . . , 110n−5 join or do not join the shared media session based on coordination with the defined timestamp and date in the schedule.
At 308, event data and media may be synchronized among the plurality of client devices 110 in the shared media session through the distributed communication network 112 based on one or more criteria. In accordance with an embodiment, the shared media session system 105 may be configured to synchronize the event data and the media among the plurality of client devices 110 in the shared media session through the distributed communication network 112 based on one or more criteria.
In accordance with an embodiment, when a user or a participant, for example the first client device 110a, in the distributed communication network 112, such as the peer-to-peer network, initiates the playback of the disparate live media output stream, via the media player 126, the event data may be synchronized among the plurality of client devices 110 in the shared media session through the distributed communication network 112. Event data may include a combination of real time and media playhead time to maintain event sequence. Event data may have application-specific actions that may be executed, such as, interactivity between peers, updating media playback state, changing media playback state, changing application state, and/or addition or removal of peers.
In accordance with an embodiment, when a user or a participant, for example the first client device 110a of the plurality of client devices 110, in the distributed communication network 112, such as the peer-to-peer network, initiates the playback of the disparate live media output stream, via the media player 126, the media may be synchronized among the plurality of client devices 110 in the shared media session through the distributed communication network 112 based on the one or more criteria. Examples of the one or more criteria may be defined based on a level of synchronization accuracy corresponding to type of media content in the disparate live media output stream, and view of same position in the disparate live media output stream by each client device concurrently. The one or more criteria may be further defined based on a combination of one or more streaming protocols for example RTSP/RTP, and one or more control flow protocols utilized for synchronization, for example RTSP/RTP with TS segments from HLS. The one or more criteria may be further defined based on usage of a synchronizing client device of the plurality of client devices 110 to send playhead time relative to a calculated offset of time of another client device, application of constraints on a live window during playback of the disparate live media output stream and size of media segments in the disparate live media output stream such that a variability of different playback positions is limited to an accepted value, or a combination thereof.
At 310, the event data and media corresponding to the shared media session and previous shared media sessions may be transmitted to the external storage system 109 from the recording client device 114 communicably coupled to the distributed communication network 112. In accordance with an embodiment, the external storage system 109 may be configured to receive the event data and media corresponding to the shared media session and previous shared media sessions from the recording client device 114 communicably coupled to the distributed communication network 112.
At 312, a persistent record of received event data and media corresponding to the shared media session and previous shared media sessions may be generated until the shared media session is terminated by at least one of the first client device 110a or by abandonment of the distributed communication network 112 by the first client device 110a and by the one or more second client devices 110b, . . . , 110n−5. The persistent records of the shared media session may be generated when the shared media session is flagged for recording, either during the shared media session creation or after the shared media session initiation.
The distributed communication network 112 is established by the first client device 110a in case of a single-participant shared media session, or the first client device 110a from the plurality of client devices 110, in case of a multi-participant shared media session. A client identifier and a device address may be communicated to the shared media session system 105 by the first client device 110a. Thereafter, the recording client device 114 joins the distributed communication network 112 via the second peer-to-peer module 130, upon establishment, and then the event data and media exchanges originated from one or more of the plurality of client devices 110 during the playback of the disparate live media output stream is recorded by the recording client device 114. In such case, the persistent record excludes the disparate live media output stream selected for the playback in the shared media session. Each event data and media exchange may include a playhead time of media playback, and real-time of event. Event data and media exchanges may then be synchronized with the playback of the disparate live media output stream in the shared media session.
In case of multi-participant shared media session, the generated persistent record may comprise a persistent audio data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, a persistent video data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, a persistent event data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, and/or time of the event data, audio data, and/or video data in accordance with real time or time of the disparate live media output stream. The persistent records of the shared media session may be coordinated with a start of shared media session, and/or according to number of participants in the peer-to-peer network.
In accordance with an embodiment, the shared media session system 105 may be configured to persist the shared media session until the shared media session is terminated by the first client device 110a, in case of single-participant shared media session. In accordance with another embodiment, the shared media session system 105 may be configured to persist the shared media session until the shared media session is terminated by the creating device, such as the first client device 110a, or all participants have abandoned the shared media session, in case of multi-participant shared media session.
At 320, the generated persistent record may be communicated to the external storage system 109. In accordance with an embodiment, the file uploader 136 in the recording client device 114 may be configured to communicate the generated persistent record to the external storage system 109. The recorded event data and media exchanges may be uploaded to the external storage system 109, such as the recorded client session database, where it may be further distributed and/or promoted. Recorded event data and media exchanges, having been synchronized with playback of the disparate live media output stream in the shared media session, may then be transcoded and distributed as a new media asset.
At 322, the persistent record may be retrieved from the external storage system 109. In accordance with an embodiment, the CPDS 107 may be configured to retrieve the persistent record from the external storage system 109.
At 324, the shared media session may be recreated at a future time based on the event data and media in the retrieved persistent record. In accordance with an embodiment, the shared media session system 105, in conjunction with the CPDS 107, may be configured to recreate the shared media session at a future time based on the event data and media in the retrieved persistent record.
At 326, the retrieved persistent record may be distributed through the CPDS 107 and/or the DACIS 103. In accordance with an embodiment, the CPDS 107 and/or DACIS 103 may be configured to distribute the retrieved persistent record to the plurality of client devices 110 in the distributed communication network 112 via the content delivery system 122.
At 330, an existing disparate live media output stream may be augmented. In accordance with an embodiment, a stream publishing engine (not shown) may be configured to augment the existing disparate live media output stream. The augmentation may be based on the event data and media corresponding to the persistent record of the shared media session. In accordance with another embodiment, the DACIS 103 may be configured to augment the existing disparate live media output stream. In such case, the augmentation may be based on dynamic ad/content insertion system designed to construct and deliver targeted and/or personalized disparate live media output streams.
At 332, a new disparate live media output stream may be generated. In accordance with an embodiment, a stream publishing engine in the shared media session system 105 may be configured to generate the new disparate live media output stream. The new disparate live media output stream may comprise a plurality of distinct audio channels based on an audio interaction of one of the plurality of client devices, and/or an application state of one of the plurality of client devices. The new disparate live media output stream may further comprise a multiplexed audio that may include an audio interaction of one of the plurality of client devices 110, an application state of one of the plurality of client devices 110, and/or an audio of the existing disparate live media output stream. Further, the recording client device 114 may be configured to record the event data and media exchanges between client devices from the plurality of client devices 110 during playback of the existing disparate live media output stream. The persistent record may exclude the existing disparate live media output stream selected for the shared media session playback. Each event data and media exchange may include playhead time of the playback of the existing disparate live media output stream, and real-time of event. Further, the event data and media exchange may be synchronized with the playback of the existing disparate live media output stream in the shared media session. Such persistent record of the event data and media exchanges may be synchronized with the playback of the existing disparate live media output stream of the shared media session and transcoded and distributed as the new disparate live media output stream. As described above, the recording client device 114 may be configured to communicate the generated persistent record to the external storage system 109 for further distribution and promotion. In accordance with an embodiment, a shared media session may be recreated at a future time based on the event data and media in the persistent record. In accordance with an embodiment, the CPDS 107 may be configured to distribute the persistent record, retrieved from the external storage system 109, to the plurality of client devices 110 in the distributed communication network 112 via the content delivery system 122. In accordance with an embodiment, the CPDS 107 may be configured to transcode from the existing, persistent and stored version to a new format. Consequently, persistent records, comprising recorded event data and media exchanges, having been synchronized with playback of the existing disparate live media output stream in the shared media session, may be transcoded and distributed as a new disparate live media output stream. Upon the plurality of client devices 110 abandoning the distributed communication network 112, the recording client device 114 may be configured to cease the recording. Further, the recording client device 114 may alert the shared media session system 105 to close (or terminate) the shared media session.
At 340, the distributed communication network 112 associated with shared media session established by shared media session system 105 may be joined. In accordance with an embodiment, the recording client device 114 may be configured to join the distributed communication network 112 associated with shared media session established by shared media session system 105, via the second peer-to-peer module 130.
At 342, the event data and media exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112 during playback of disparate live media output stream in shared media session may be recorded. In accordance with an embodiment, the recording client device 114 may be configured to record the event data and media exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112 during playback of disparate live media output stream in shared media session.
At 344, the recorded event data and media may be transmitted to the external storage system 109. In accordance with an embodiment, the recording client device 114 may be configured to transmit the recorded event data and media to the external storage system 109.
At 346, the recording of event data and media may be ceased based on abandonment of the distributed communication network 112 by the plurality of client devices 110. In accordance with an embodiment, the recording client device 114 may be configured to cease the recording of event data and media based on abandonment of the distributed communication network 112 by the plurality of client devices 110.
At 348, an alert may be generated for the shared media session system 105 that establishes the shared media session to terminate shared media session. In accordance with an embodiment, the recording client device 114 may be configured to generate an alert for the shared media session system 105 that establishes the shared media session to terminate shared media session.
In some examples, the processing system 402 may comprise one or more hardware processors 404, a non-transitory computer-readable medium 406, a bus 408, a bus interface 410, and a transceiver 412.
The hardware processor 404 may be configured to manage the bus 408 and general processing, including the execution of a set of instructions stored on the non-transitory computer-readable medium 406. The set of instructions, when executed by the processor 404, causes the media packaging and distribution system 102 to execute the various functions described herein for any particular apparatus. The hardware processor 404 may be implemented, based on a number of processor technologies known in the art. Examples of the hardware processor 404 may be a Reduced Instruction Set Computing (RISC) processor, an Application-Specific Integrated Circuit (ASIC) processor, a Complex Instruction Set Computing (CISC) processor, and/or other processors or control circuits.
The non-transitory computer-readable medium 406 may be used for storing data that is manipulated by the processor 404 when executing the set of instructions. The data is stored for short periods or in the presence of power. The non-transitory computer-readable medium 406 may also be configured to store data for one or more of the DACIS 103, the shared media session system 105, the CPDS 107, and the external storage system 109.
The bus 408 is configured to link together various circuits. In this example, the media packaging and distribution system 102 employing the processing system 402 and the non-transitory computer-readable medium 406 may be implemented with bus architecture, represented generally by bus 408. The bus 408 may include any number of interconnecting buses and bridges depending on the specific implementation of the media packaging and distribution system 102 and the overall design constraints. The bus interface 410 may be configured to provide an interface between the bus 408 and other circuits, such as, the transceiver 412, and external devices, such as the recording client device 114, the distributed communication network 112, the source device 118, the external data source 120, and the plurality of client devices 110.
The transceiver 412 may be configured to provide a communication of the media packaging and distribution system 102 with various other apparatus, such as the Ad decisioning servers 106a, . . . , 106n, the plurality of client devices 110, the external data source 120, and the source device 118, via the network 108. The transceiver 412 may communicate via wireless communication with networks, such as the Internet, the Intranet and/or a wireless network, such as a cellular telephone network, a wireless local area network (WLAN) and/or a metropolitan area network (MAN). The wireless communication may use any of a plurality of communication standards, protocols and technologies, such as Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), Long Term Evolution (LTE), wideband code division multiple access (W-CDMA), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth, Wireless Fidelity (Wi-Fi) (such as IEEE 802.11a, IEEE 802.11b, IEEE 802.11g and/or IEEE 802.11n), voice over Internet Protocol (VoIP), and/or Wi-MAX.
It should be recognized that, in some embodiments of the disclosure, one or more components of
In an aspect of the disclosure, the processor 404, the non-transitory computer-readable medium 406, or a combination of both may be configured or otherwise specially programmed to execute the operations or functionality of the DACIS 103, the shared media session system 105, the CPDS 107, and the external storage system 109, or various other components described herein, as described with respect to
Various embodiments of the disclosure comprise the media packaging and distribution system 102 that may be configured to establish a shared media session for one or more client devices, such as the plurality of client devices 110. The media packaging and distribution system 102 may comprise, for example, the DACIS 103, the shared media session system 105, the CPDS 107, and the external storage system 109. In accordance with an embodiment, one or more processors in the shared media session system 105 may be configured to establish a shared media session. The shared media session may include a disparate live media output stream scheduled by the first client device 110a to start at a defined timestamp. The disparate live media output stream may be played back on one of the first client device 110a or the plurality of client devices 110 that comprises the first client device 110a and one or more second client devices 110b, . . . , 110n. The plurality of client devices 110 may join the shared media session through the distributed communication network 112. During the shared media session, event data and media among the plurality of client devices 110 in the shared media session may be synchronized through the distributed communication network 112 based on one or more criteria. The one or more processors in the shared media session system 105 may be further configured to receive the event data and media corresponding to the shared media session and previous shared media sessions from the recording client device 114 communicably coupled to the distributed communication network 112. The one or more processors in the shared media session system 105 may be further configured to generate a persistent record of received event data and media corresponding to the shared media session and previous shared media sessions until the shared media session is terminated by at least one of the first client device 110a or by abandonment of the distributed communication network 112 by the first client device 110a and by the one or more second client devices 110b, . . . , 110n.
In accordance with an embodiment, the shared media session system 105 may be configured to define the shared media session based on one or more characteristics. The one or more characteristics may comprise a count of client devices 110 that participate in the shared media session and interact with the disparate live media output stream, a selection of media content based on which a disparate live media output stream manifest is generated, a first flag that indicates the shared media session is discoverable by the one or more second client devices 110b, . . . , 110n via the system, and a second flag that indicates the shared media session is to be recorded. In accordance with an embodiment, the media content may be selected by the user associated with the first client device 110a from a list of existing and referenced media content provided by the one or more processors, or submitted by the user from an external source. The one or more processors in the shared media session system 105 may be further configured to determine that the shared media session is to be recorded based on the second flag during the establishment of the shared media session or after the establishment of the shared media session.
In accordance with an embodiment, the distributed communication network 112 may be established by the first client device 110a. A client identifier and device address may be communicated to the one or more processors in the shared media session system 105 by the first client device 110a. In accordance with another embodiment, the established distributed communication network 112 may be joined by the recording client device 114, via the second peer-to-peer module 130. The event data and the media exchanges between client devices from the plurality of client devices 110 during the playback of the disparate live media output stream may be recorded by the recording client device 114.
In accordance with an embodiment, the persistent record may exclude the disparate live media output stream selected for the playback in the shared media session. Each event data and media exchange may include playhead time of the playback of the disparate live media output stream, and real-time of an event. The event data and media exchange may be synchronized with the playback of the disparate live media output stream in the shared media session. The one or more processors in the shared media session system 105 may be configured to persist the shared media session until the shared media session is terminated by the first client device 110a.
In accordance with an embodiment, the shared media session is a single-participant shared media session that comprises the first client device 110a and is initiated by the first client device 110a. In accordance with another embodiment, the shared media session is a multi-participant shared media session that comprises the plurality of client devices 110, and is initiated by the first client device 110a. The distributed communication network 112 that comprises the plurality of client devices 110 may correspond to a peer-to-peer network. The plurality of client devices 110 may be configured to discover and join the distributed communication network 112 by the shared media session, via the corresponding first peer-to-peer module 128. The shared media session may be advertised explicitly and selected by the first client device 110a via an invitation or a shared universal resource locator, via an external advertisement service via a universal resource locator or an identifier, or within context of a group of shared media sessions discovered within the system.
In accordance with an embodiment, the distributed communication network 112 may be established by the first client device 110a in an instance in which the first client device 110a is a first participant. An identifier may be established for each participant. The one or more processors in the shared media session system 105 may be configured to receive and store an identifier from the first client device 110a. The identifier may be discovered by the one or more second client devices 110b, . . . , 110n in the shared media session. The one or more processors in the shared media session system 105 may be further configured to receive and store identifiers for remaining client devices of the shared media session. The identifier may be discovered by the one or more second client devices 110b, . . . , 110c in the shared media session. The distributed communication network 112 may be established directly between client devices from the plurality of client devices 110. Each client device within the distributed communication network 112 may be identified based on corresponding identifier. The event data and media may be shared between client devices from the plurality of client devices 110 through the distributed communication network 112. In accordance with an embodiment, the media may comprise audio data and video data. The audio data may include at least an external audio media, an audio recorded from a microphone, or an application-specific audio resource. The video data may include at least an external video media, a video recorded from a participant camera, or an application-specific video resource. The event data may include a first user interaction with disparate live media output stream that pauses video for the plurality of client devices 110, plays rewinds, fast-forward or seek media for the plurality of client devices 110, or a second user interaction with another user. The event data may further include a first broadcast notification of network state of the plurality of client devices 110 that is one of connected, disconnected or sending data, or a second broadcast notification of application state of the plurality of client devices 110 that is one of a muted audio, an invoked interactive element, a completion of the invoked interactive element, a change in user application configuration, an update in playback state of the disparate live media output stream, a change in the playback state of the disparate live media output stream, addition of new client devices or removal of existing client devices. The event data may further include a combination of real time and media playhead time to maintain event sequence.
In accordance with an embodiment, a schedule of the shared media session within the system indicates a start of the disparate live media output stream at the defined timestamp and date. The defined timestamp and date may correspond with at least one of a live event streamed in the disparate live media output stream or pre-encoded media assets streamed in the disparate live media output stream. The one or more second client devices 110b, . . . , 110n may join or do not join the shared media session based on coordination with the defined timestamp and date in the schedule. In accordance with an embodiment, the one or more processors in the shared media session system 105 may be configured to store the persistent record corresponding to the shared media session. The one or more criteria may be defined based on a level of synchronization accuracy corresponding to type of media content in the disparate live media output stream, view of same position in the disparate live media output stream by each client device concurrently, a combination of one or more streaming protocols and one or more control flow protocols utilized for synchronization, usage of a synchronizing client device of the plurality of client devices 110 to send playhead time relative to a calculated offset of time of another client device, application of constraints on a live window during playback of the disparate live media output stream and size of media segments in the disparate live media output stream such that a variability of different playback positions is limited to an accepted value, or a combination thereof. In accordance with an embodiment, the generated persistent record may comprise a persistent audio data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, a persistent video data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, a persistent event data exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112, and/or time of the event data, audio data, and/or video data in accordance with real time or time of the disparate live media output stream.
In accordance with an embodiment, the one or more processors may be further configured to communicate the generated persistent record to the external storage system 109, retrieve the persistent record from the external storage system 109, recreate the shared media session at a future time based on the event data and media in the retrieved persistent record, and distribute the retrieved persistent record through the CPDS 107. The CPDS 107 may be configured to transcode from an existing, persistent and stored record from a first encoding format to a second encoding format. The one or more processors may be further configured to coordinate the recording of the shared media session with start of shared media session or according to number of the plurality of client devices 110 in the distributed communication network 112. The one or more processors may be further configured to define a content identifier for the shared media session, and receive a request from a third client device for the persistent record of the received event data and media corresponding to the shared media session and previous shared media sessions. The third client device may be one of the distributed communication network 112 or external to the distributed communication network 112.
In accordance with an embodiment, the one or more processors may be further configured to augment an existing disparate live media output stream to generate a new disparate live media output stream. The augmentation may be based on the event data and media corresponding to the persistent record of the shared media session. The new disparate live media output stream may comprises a plurality of distinct audio channels based on an audio interaction of one of the plurality of client devices 110, and/or an application state of one of the plurality of client devices 110. The new disparate live media output stream may comprise a multiplexed audio that includes an audio interaction of one of the plurality of client devices 110, or an application state of one of the plurality of client devices 110, and/or an audio of the existing disparate live media output stream. The recording client device 114 may record the event data and media exchanges between client devices of the plurality of client devices 110 during playback of the existing disparate live media output stream.
The persistent record may exclude the existing disparate live media output stream selected for the shared media session playback. Each event data and media exchange may include playhead time of the playback of the disparate live media output stream, and real-time of event. The event data and media exchange may be synchronized with the playback of the disparate live media output stream in the shared media session. The persistent record of the event data and media exchanges may be synchronized with the playback of the existing disparate live media output stream of the shared media session and transcoded and distributed as the new disparate live media output stream.
In accordance with an embodiment, the one or more processors in the recording client device 114 may be configured to join the distributed communication network 112 associated with the shared media session established by the shared media session system 105, via the second peer-to-peer module 130. A disparate live media output stream may be played back on one of the first client device 110a or the plurality of client devices 110 that comprises the first client device 110a and one or more second client devices 110b, . . . , 110n. The event data and media among the plurality of client devices 110 may be synchronized in the shared media session through the distributed communication network 112 based on one or more criteria. The one or more processors in the recording client device 114 may be further configured to record the event data and media exchanged between client devices from the plurality of client devices 110 on the distributed communication network 112 during the playback of the disparate live media output stream in the shared media session. The one or more processors in the recording client device 114 may be further configured to transmit the recorded event data and media to the external storage system 109. The one or more processors in the recording client device 114 may be further configured to cease the recording of the event data and media based on abandonment of the distributed communication network 112 by the plurality of client devices 110. The one or more processors in the recording client device 114 may be further configured to generate an alert for the shared media session system 105 that establishes the shared media session to terminate the shared media session. The user associated with the first client device 110a may initiate an establishment of a single-participant or a multi-participant shared media session. The user may further schedule the disparate live media output stream and initiates the playback of the disparate live media output stream.
Various embodiments of the disclosure may provide a computer-readable medium, such as the non-transitory computer-readable medium 406, having stored thereon, computer implemented instruction that when executed by the processor 404 causes the media packaging and distribution system 102 to execute operations for establishing a shared media session for one or more client devices. In accordance with an embodiment, the processor 404 causes the media packaging and distribution system 102 to execute operations to establish a shared media session. The shared media session may include a disparate live media output stream scheduled by the first client device 110a to start at a defined timestamp. The disparate live media output stream may be played back on one of the first client device 110a or the plurality of client devices 110 that comprises the first client device 110a and one or more second client devices 110b, . . . , 110n. The plurality of client devices 110 may join the shared media session through the distributed communication network 112, via the corresponding first peer-to-peer module 128. The processor 404 further causes the media packaging and distribution system 102 to execute operations to synchronize event data and media among the plurality of client devices 110 in the shared media session through the distributed communication network 112 based on one or more criteria. The processor 404 further causes the media packaging and distribution system 102 to execute operations to receive the event data and media corresponding to the shared media session and previous shared media sessions from the recording client device 114 communicably coupled to the distributed communication network 112. The processor 404 further causes the media packaging and distribution system 102 to execute operations to generate a persistent record of received event data and media corresponding to the shared media session and previous shared media sessions until the shared media session is terminated by at least one of the first client device 110a or by abandonment of the distributed communication network 112 by the first client device 110a and by the one or more second client devices 110b, . . . , 110n.
Modern streaming protocols may also support delivery of disparate live media output stream to multiple client devices. Accordingly, short content media segments, facilitated by such modern streaming protocols, are made available as soon as they are created. In some streaming protocols, each new segment is added to the manifest of the disparate live media output stream while in others the media player at the client devices are provided necessary information to calculate the next live segment. In the latter case, a signal in the disparate live media output stream itself is used to inform the media player when the media player should reinspect the manifest for a change in content (media or other) in the disparate live media output stream. The manifest and/or the media segment may further include additional information to facilitate the media player to transition smoothly between media content from different sources. This may be used for creating a playlist of multiple disparate live media output streams, or for interrupting a disparate live media output stream with advertising and then resuming the disparate live media output stream.
Because the disparate live media output stream itself does not need to be processed beyond the initial creation of the live input streams and pre-encoded media assets prepared for web distribution, it is extremely inexpensive to provide such branches. It may be based solely on the cost to manipulate the manifests that provide execution instructions for the media players in the client devices. Further, targeted ad insertion on a per client basis may also be supported through the insertion of ad tags in the generated disparate live media output stream manifest and may further leverage the processing power of the individual client devices to insert targeted channel graphics and overlay advertisements and promotions.
The shared media session system 105 in the media packaging and distribution system 102 may be configured to construct shared media sessions and facilitate participants of a given shared media session with constructing a peer-to-peer network between participants. As an extension to the CPDS 107, the media packaging and distribution system 102 may be configured to provide additional capabilities that may allow an explicit channel creation by a user for a single view, an explicit channel creation by a user for group viewing and interactions, and an explicit channel creation by a user for group viewing with accurate synchronization and extended interactivity.
For example, in accordance with the explicit channel creation by the user for the single view, the user may want to play all the vacation series of a thanksgiving movie back-to-back. In such case, the user may schedule the vacation series, play the vacation series, and view the vacation series on a channel. The channel may be scheduled in such a manner that manifests, queues, graphical treatment (for example overlays), promotional content in the beginning, ad breaks or no ad breaks in the middle may be maintained by the media packaging and distribution system 102.
In another example, in accordance with the explicit channel creation by the user for group viewing, the user may be schedule the channel and joined by other viewers at the same location to watch the disparate live media output stream being played on the client device associated with the user. However, other viewers are disconnected viewers and do not actively participate in the session corresponding to the channel creation.
In another example, in accordance with the explicit channel creation by the user for group viewing, for example a sporting event, with accurate synchronization and extended interactivity, the user may schedule the channel and also invite the other viewers to watch the same frame simultaneously. However, in certain cases, for example the Oscars event, the synchronization may not be tightly coupled but extended interactivity is provided between the user and the other viewers. In both the embodiments, the same disparate live media output stream may be displayed on the devices associated with the other viewers. Further, during watching the same disparate live media output stream, the user may have an option to interact with the other viewers.
As utilized herein the terms “circuits” and “circuitry” refer to physical electronic components (for example, hardware) and any software and/or firmware (“code”) which may configure the hardware, be executed by the hardware, and/or otherwise be associated with the hardware. As used herein, for example, a particular processor and memory may comprise a first “circuit” when executing first one or more lines of code and may comprise a second “circuit” when executing second one or more lines of code. As utilized herein, “and/or” means any one or more of the items in the list joined by “and/or”. As an example, “x and/or y” means any element of the three-element set {(x), (y), (x, y)}. As another example, “x, y, and/or z” means any element of the seven-element set {(x), (y), (z), (x, y), (x, z), (y, z), (x, y, z)}. As utilized herein, the term “exemplary” means serving as a non-limiting example, instance, or illustration. As utilized herein, the terms “e.g.,” and “for example” set off lists of one or more non-limiting examples, instances, or illustrations. As utilized herein, circuitry is “operable” to perform a function whenever the circuitry comprises the necessary hardware and/or code (if any is necessary) to perform the function, regardless of whether performance of the function is disabled, or not enabled, by some user-configurable setting.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of embodiments of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising”, “includes” and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Further, many embodiments are described in terms of sequences of actions to be performed by, for example, elements of a computing device. It will be recognized that various actions described herein can be performed by specific circuits (e.g., application specific integrated circuits (ASICs)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequences of actions described herein can be considered to be embodied entirely within any non-transitory form of computer readable storage medium having stored therein a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects of the disclosure may be embodied in a number of different forms, which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the embodiments described herein, the corresponding form of any such embodiments may be described herein as, for example, “logic configured to” perform the described action.
Another embodiment of the disclosure may provide a non-transitory machine and/or computer readable storage and/or media, having stored thereon, a machine code and/or a computer program having at least one code section executable by a machine and/or a computer, thereby causing the machine and/or computer to perform the steps as described herein for establishing a shared media session for one or more client devices.
The present disclosure may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, either statically or dynamically defined, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, algorithms, and/or steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, firmware, or combinations thereof. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The methods, sequences and/or algorithms described in connection with the embodiments disclosed herein may be embodied directly in firmware, hardware, in a software module executed by a processor, or in a combination thereof. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, physical and/or virtual disk, a removable disk, a CD-ROM, virtualized system or device such as a virtual servers or container, or any other form of storage medium known in the art. An exemplary storage medium is communicatively coupled to the processor (including logic/code executing in the processor) such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
While the present disclosure has been described with reference to certain embodiments, it will be noted understood by, for example, those skilled in the art that various changes and modifications could be made and equivalents may be substituted without departing from the scope of the present disclosure as defined, for example, in the appended claims. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present disclosure without departing from its scope. The functions, steps and/or actions of the method claims in accordance with the embodiments of the disclosure described herein need not be performed in any particular order. Furthermore, although elements of the disclosure may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated. Therefore, it is intended that the present disclosure not be limited to the particular embodiment disclosed, but that the present disclosure will include all embodiments falling within the scope of the appended claims.
This Patent Application is a Continuation of U.S. patent application Ser. No. 17/206,473, filed Mar. 19, 2021, which is a Continuation of U.S. Pat. No. 11,083,932, issued Jun. 15, 2021, which claims priority to, and the benefit from U.S. Provisional Application Ser. No. 62/699,131. Each of the above referenced patent applications is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62699131 | Jul 2018 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17206473 | Mar 2021 | US |
Child | 18231074 | US | |
Parent | 16236713 | Dec 2018 | US |
Child | 17206473 | US |