Selecting avatars to include in on-demand generated videos
By rendering video content on demand and using a content controller and rendering server system to personalize user avatars, the latency and efficiency issues of avatar content generation in social networking systems are resolved, thus improving the user experience.
Patent Information
- Application Number
- CN202411811608.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-01-30
- Filing Date
- 2021-01-28
- Publication Date
- 2025-12-30
- Estimated Expiration
- 2041-01-28
AI Technical Summary
Existing social networking systems face challenges in generating personalized avatar content, particularly in terms of latency and efficiency in generating customized avatar content for millions of users. Furthermore, users' sudden whims in creating customized avatars increase the difficulty of pre-generating content.
By rendering video content on demand, and utilizing a content controller system and a rendering server system, media content items, including user avatars and contact avatars, are personalized and delivered according to user requests, reducing generation latency and simplifying the animation process.
It enables the instant generation and delivery of personalized video content upon user request, improving content generation efficiency and user experience, and meeting users' needs for personalized avatars.
Smart Images

Figure CN119815072B_ABST
Abstract
Description
[0001] This application is a divisional application of Chinese patent application No. 202180011914.6, filed on July 29, 2022, entitled "Selecting an Avatar to be Included in On-Demand Generated Video". The international filing date of the parent application is January 28, 2021, and the international application number is PCT / US2021 / 015497.
[0002] Cross-reference to related applications
[0003] This application claims priority to U.S. Patent Application Serial No. 16 / 777,798, filed January 30, 2020, the contents of which are incorporated herein by reference in their entirety.
[0004] This application relates to U.S. Patent Application Serial No. 16 / 777,817, filed January 30, 2020; U.S. Patent Application Serial No. 16 / 777,793, filed January 30, 2020; U.S. Patent Application Serial No. 62 / 968,111, filed January 30, 2020; and U.S. Patent Application Serial No. 16 / 777,799, filed January 30, 2020, the contents of each of which are incorporated herein by reference in their entirety. Technical Field
[0005] This application generally relates to message processing. Background Technology
[0006] The continued growth in the popularity of social networking systems, and the increasing use of customized avatars in electronic messaging such as text messages, emails, and chat, reflect a global demand for more intuitive communication.
[0007] These custom avatars can be personalized by users to represent them in various applications, video games, messaging services, and more. Because custom avatars can be generated in arrays of different scenarios, displaying a variety of emotions, or even being animated, users can use them to more accurately convey their feelings in messaging. Users can use custom avatars as virtual extensions of themselves online.
[0008] Furthermore, as the number of users on social networking systems increases, each user also has a growing network of individuals she follows. To maintain user engagement on social networking systems, it is crucial that the system has the ability to present each user with media content that is most interesting or relevant to them. In addition to curating media content, social networking systems also face the challenge of providing a graphical user interface that captures the user's attention and allows them to view curated media content and further interact with the network of individuals they follow. Summary of the Invention
[0009] One aspect of this application discloses a method comprising: detecting, by a processor, the selection of options associated with an animation series by a first user of a first client device; identifying a second user to be included in the animation series with the first user, wherein identifying the second user includes identifying a user who recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animation series, the request including a primary user identifier associated with the first user and a secondary user identifier associated with the second user, wherein the request causes the first episode to be generated on demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist includes a plurality of media content item fragments, the plurality of media content item fragments including the first avatar and the second avatar.
[0010] One aspect of this application discloses a system comprising: a processor; and a memory component having instructions stored thereon, the instructions, when executed by the processor, causing the system to perform operations including: detecting a selection of options associated with an animation series by a first user of a first client device; identifying a second user to be included in the animation series with the first user, wherein identifying the second user includes identifying a user who recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animation series, the request including a primary user identifier associated with the first user and a secondary user identifier associated with the second user, wherein the request causes the first episode to be generated on demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist includes a plurality of media content item fragments, the plurality of media content item fragments including the first avatar and the second avatar.
[0011] One aspect of this application discloses a non-transitory computer-readable storage medium having instructions stored thereon, which, when executed by a processor, cause the processor to perform operations including the following steps: detecting a selection of options associated with an animation series by a first user of a first client device; identifying a second user to be included in the animation series with the first user, wherein identifying the second user includes identifying a user who recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animation series, the request including a primary user identifier associated with the first user and a secondary user identifier associated with the second user, wherein the request causes the first episode to be generated on demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist includes a plurality of media content item fragments, the plurality of media content item fragments including the first avatar and the second avatar. Attached Figure Description
[0012] To facilitate identification of any discussion of a particular element or action, one or more of the highest-order digits in the figure references indicate the figure number in which the element was first introduced.
[0013] Figure 1 It is a graphical representation of a networked environment in which the present disclosure can be deployed, based on some example implementations.
[0014] Figure 2 It is a graphical representation of a messaging client application based on some example implementations.
[0015] Figure 3 It is a graphical representation of a data structure maintained in a database, based on some example implementations.
[0016] Figure 4 It is a graphical representation of a message based on some example implementations.
[0017] Figure 5 It is a graphical representation of the details of a networked environment in which the present disclosure can be deployed, based on some example implementations.
[0018] Figure 6 A flowchart illustrating a process for rendering video on demand, according to one embodiment, is shown.
[0019] Figure 7 A flowchart illustrating a process for rendering a second set of media content item fragments according to one embodiment is shown.
[0020] Figure 8A flowchart illustrating a process for rendering video on demand using multiple GPUs, according to one embodiment, is shown.
[0021] Figure 9 A flowchart is shown according to one embodiment of a process for rendering video on demand using multiple servers.
[0022] Figure 10 A flowchart is shown according to one embodiment of the process for selecting avatars to be included in on-demand generated videos.
[0023] Figure 11 An example of a user interface 1100 displayed by a client device according to one embodiment is shown.
[0024] Figure 12 An example of frame 1200 of a media content item displayed by a client device according to one embodiment is shown.
[0025] Figure 13 An example of frame 1300 of a media content item displayed by a client device according to one embodiment is shown.
[0026] Figure 14 This is a block diagram illustrating a software architecture in which the present disclosure can be implemented according to some example embodiments.
[0027] Figure 15 It is a graphical representation of a machine in the form of a computer system according to some example embodiments, in which a set of instructions can be executed to cause the machine to perform any or more of the methods discussed herein.
[0028] Figure 16 It is a graphical representation of the processing environment based on some example implementations. Detailed Implementation
[0029] The following description includes systems, methods, techniques, instruction sequences, and computer program products for implementing illustrative embodiments of the present disclosure. In the following description, numerous specific details are set forth for illustrative purposes to provide an understanding of various embodiments of the subject matter of the invention. However, it will be apparent to those skilled in the art that embodiments of the subject matter of the invention can be practiced without these specific details. Typically, well-known examples of instructions, protocols, structures, and techniques are not necessarily shown in detail.
[0030] As customized avatars are increasingly used as virtual extensions for users online, messaging system 100 can also attract users by creating content (such as video content) that can feature the user's avatar and the avatars of the user's contacts. The content can be in the form of multiple episodes within a series, similar to a periodically released (e.g., daily, weekly, monthly) television series.
[0031] As used herein, a user's "avatar" is any visual representation of the user. A user's avatar can be based on information derived from the user's image (e.g., characteristics) along with avatar characteristics identified from the user's relationships with other users. Alternatively or additionally, a user can select and customize the characteristics of their avatar via their computing device. Such avatar characteristics may include, for example, the user's physical features (e.g., strong, thin, etc.), facial features, clothing and accessories, text displayed in conjunction with the avatar, and images displayed in conjunction with the avatar.
[0032] On digital content platforms, content is pre-generated, uploaded to servers, and delivered to users' devices upon request. However, considering that content needs to be personalized to represent the user's avatar and / or the avatars of their friends, generating content individually for each of the millions of users on messaging system 100 and waiting for user requests for that content will be challenging. Furthermore, users on messaging system 100 may spontaneously customize their avatars and interact with different users on messaging system 100, making pre-generating content that includes the latest avatar also challenging.
[0033] Embodiments of the present invention improve the functionality of electronic messaging and imaging software and systems by rendering video content, including user avatars, on demand. Therefore, the video content is personalized for the requesting user precisely at the time it is transmitted to the user's client device 102. Thus, embodiments of the present invention can receive, for example, animations (e.g., media content items) with placeholder avatars from content creators, and when a user requests a media content item, the placeholder avatar is replaced by the user's avatar, and the media content item requested by the user is sent to the user's device.
[0034] By minimizing the delay between requesting a media content item and sending the media content item to the user's device, by selecting relevant avatars to be incorporated into the media content, and by simplifying the animation process for content creators, embodiments of the present invention further improve the functionality of electronic messaging and imaging software and systems.
[0035] Figure 1This is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. Messaging system 100 includes multiple instances of client devices 102, each instance hosting multiple applications including messaging client applications 104. Each messaging client application 104 is communicatively coupled to other instances of the messaging client application 104 and a messaging server system 108 via a network 106 (e.g., the Internet).
[0036] Messaging client application 104 can communicate and exchange data with another messaging client application 104 and messaging server system 108 via network 106. The data exchanged between messaging client applications 104 and between messaging client application 104 and messaging server system 108 includes functions (such as commands to invoke functions) and payload data (such as text, audio, video or other multimedia data).
[0037] Messaging server system 108 provides server-side functionality to a specific messaging client application 104 via network 106. While some functions of messaging system 100 are described herein as being performed by messaging client application 104 or by messaging server system 108, the location of certain functions within messaging client application 104 or messaging server system 108 is a design choice. For example, it is technically preferred that certain technologies and functions be initially deployed within messaging server system 108, but later migrated to messaging client application 104 on client device 102 with sufficient processing power.
[0038] The messaging server system 108 supports various services and operations provided to the messaging client application 104. Such operations include sending data to and receiving data from the messaging client application 104, and processing data generated by the messaging client application 104. As an example, this data may include message content, client device information, geolocation information, media comments and overlays, message content persistence conditions, social network information, and live event information. Data exchange within the messaging system 100 is invoked and controlled through functions available via the user interface (UI) of the messaging client application 104.
[0039] Now, specifically to the messaging server system 108, the application programming interface (API) server 110 is coupled to the application server 112 and provides a programming interface to the application server 112. The application server 112 is communicatively coupled to the database server 116, and the database server 118 provides easy access to the database 124, in which data associated with the messages processed by the application server 112 is stored.
[0040] Application Programming Interface (API) server 110 receives and sends message data (e.g., commands and message payloads) between client device 102 and application server 112. Specifically, API server 110 provides a set of interfaces (e.g., routines and protocols) that messaging client application 104 can call or query to invoke functions of application server 112. API server 110 exposes various functions supported by application server 112, including account registration, login functionality, sending messages from one messaging client application 104 to another messaging client application 104 via application server 112, sending media files (e.g., images or videos) from messaging client application 104 to messaging server application 114 and making them accessible to another messaging client application 104, setting up media data (e.g., stories) collections, retrieving the friend list of a user on client device 102, retrieving such collections, retrieving messages and content, adding and deleting friends from a social graph, locating friends within a social graph, and opening application events (e.g., related to messaging client application 104).
[0041] Application server 112 hosts multiple applications and subsystems, including messaging server application 114, image processing system 116, social networking system 122, and content controller system 124. Messaging server application 114 implements multiple messaging techniques and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of messaging client application 104. As will be described in further detail, text and media content from multiple sources can be aggregated into content collections (e.g., referred to as stories or galleries). These collections are then made available to messaging client application 104 by messaging server application 114. Given the hardware requirements for such processing, messaging server application 114 can also perform additional processor- and memory-intensive data processing on the server side.
[0042] Application server 112 also includes an image processing system 116, which is dedicated to performing various image processing operations, typically performing various image processing operations with respect to images or videos received in the payload of messages at message server application 114.
[0043] Social networking system 122 supports various social networking functions and services and makes these functions and services available to messaging server application 114. To this end, social networking system 122 maintains and accesses entity graph 304 (such as...) within database 120. Figure 3 (As shown). Examples of features and services supported by the social networking system 122 include identifiers of other users of the messaging system 100 with whom a particular user has a relationship or who “follows” them, as well as other entities and interests that identify a particular user.
[0044] Application server 112 is communicatively coupled to database server 118, which provides easy access to database 120, where data associated with messages processed by message server application 114 is stored.
[0045] Content controller system 124 is dedicated to managing media content items that are rendered on demand into the user's avatar, including the client device 102. Content controller system 124 may include delivery server system 502 and rendering server system 504, such as... Figure 5 As shown.
[0046] Figure 2 This is a block diagram illustrating further details of a messaging system 100 according to an example implementation. Specifically, the messaging system 100 is shown as including a messaging client application 104 and an application server 112, which in turn include several subsystems, namely a short timer system 202, a collection management system 204, and an annotation system 206.
[0047] The short timer system 202 is responsible for implementing temporary access to content permitted by the messaging client application 104 and the messaging server application 114. To this end, the short timer system 202 combines multiple timers that selectively display messages and associated content based on durations and display parameters associated with messages or sets of messages (e.g., stories), enabling access to messages and associated content via the messaging client application 104. Further details regarding the operation of the short timer system 202 are provided below.
[0048] The collection management system 204 is responsible for managing collections of media (such as collections of text, images, video, and audio data). In some examples, collections of content (such as messages including images, videos, text, and audio) can be organized into "event galleries" or "event stories." Such collections can be made available for a specified time period, such as the duration of an event related to the content. For example, content related to a concert can be made available as a "story" for the duration of a concert. The collection management system 204 can also be responsible for publishing icons that notify the user interface of the messaging client application 104 of the existence of a specific collection.
[0049] Furthermore, the collection management system 204 also includes a curation interface 208 that allows collection managers to manage and curate specific collections of content. For example, the curation interface 208 enables event organizers to curate collections of content related to a specific event (e.g., removing inappropriate content or redundant messages). Additionally, the collection management system 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some implementations, users may be paid compensation to include user-generated content in the collection. In such cases, the curation interface 208 operates to automatically pay such users for using their content.
[0050] Annotation system 206 provides various functions that enable users to annotate or otherwise modify or edit media content associated with messages. For example, annotation system 206 provides functions related to generating and publishing media overlays for messages processed by messaging system 100. Annotation system 206 is operable to supply media overlays or supplements (e.g., image filters) to messaging client application 104 based on the geolocation of client device 102. In another example, annotation system 206 is operable to supply media overlays to messaging client application 104 based on other information (e.g., the social network information of the user of client device 102). Media overlays may include audio and visual content as well as visual effects. Examples of audio and visual content include pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects may be applied to media content items (e.g., photos) at client device 102. For example, media overlays may include text that can be overlaid on a photo taken by client device 102. In another example, media overlays include location identifiers (e.g., Venice Beach) overlays, names of live events, or business names (e.g., beach cafes) overlays. In another example, annotation system 206 uses the geographic location of client device 102 to identify media overlays that include the merchant's name at the geographic location of client device 102. The media overlays may include other tags associated with the merchant. The media overlays may be stored in database 120 and accessed through database server 118.
[0051] In one example implementation, annotation system 206 provides a user-based publishing platform that allows users to select geographic locations on a map and upload content associated with those locations. Users can also specify the environments in which particular media overlays should be provided to other users. Annotation system 206 generates media overlays that include the uploaded content and associates the uploaded content with the selected geographic locations.
[0052] In another example implementation, annotation system 206 provides a merchant-based publishing platform that enables merchants to select specific media coverage associated with geographic locations through a bidding process. For example, annotation system 206 associates the media coverage of the highest bidder with the corresponding geographic location within a predefined time period.
[0053] Figure 3 This is a schematic diagram illustrating a data structure 300 that can be stored in a database 120 of a messaging server system 108 according to some example implementations. Although the contents of the database 120 are shown to include multiple tables, it should be understood that the data can be stored in other types of data structures (e.g., as an object-oriented database).
[0054] Database 120 includes message data stored in message table 314. Entity table 302 stores entity data, including entity diagram 304. Entities whose records are maintained in entity table 302 can include individuals, company entities, organizations, objects, locations, events, etc. Regardless of type, any entity whose data is stored in messaging server system 108 can be an identifiable entity. Each entity is assigned a unique identifier and an entity type identifier (not shown).
[0055] Entity Graph 304 also stores information about the relationships and associations between entities. As an example only, such relationships could be social or professional relationships based on interests or activities (e.g., working in a common company or organization).
[0056] Database 120 also stores annotation data in annotation table 312 in the form of filters. Filters stored in annotation table 312 are associated with and applied to videos (stored in video table 310) and / or images (stored in image table 308). In one example, a filter is an overlay displayed as an overlay on an image or video during presentation to the recipient user. Filters can be of various types, including filters selected by the user from a filter gallery presented to the sender user by messaging client application 104 when the sender user is composing a message. Other types of filters include geolocation filters (also known as geographic filters), which can be presented to the sender user based on geographic location. For example, based on geographic location information determined by the GPS unit of client device 102, messaging client application 104 can present geolocation filters specific to nearby or particular locations within the user interface. Another type of filter is a data filter, which can be selectively presented to the sender user by messaging client application 104 based on other input or information collected by client device 102 during the message creation process. Examples of data filters include the current temperature at a specific location, the current speed of the user's movement, the battery life of the client device 102, or the current time.
[0057] Other annotation data that can be stored in image table 308 is so-called "lens" data. "Lens" can be real-time special effects and sounds that can be added to images or videos.
[0058] As mentioned above, video table 310 stores video data, which, in one embodiment, is associated with messages whose records are maintained within message table 314. Similarly, image table 308 stores image data associated with messages whose message data is stored in entity table 302. Entity table 302 can associate various annotations from annotation table 312 with various images and videos stored in image table 308 and video table 310.
[0059] Story table 306 stores data about messages and collections of associated image, video, or audio data, compiled into collections (e.g., stories or galleries). The creation of a specific collection can be initiated by a specific user (e.g., each user whose records are maintained in entity table 302). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcast by that user. For this purpose, the user interface of messaging client application 104 may include user-selectable icons that allow the sending user to add specific content to his or her personal story.
[0060] Collections can also constitute "life stories," which are collections of content from multiple users, created manually, automatically, or using a combination of manual and automatic technologies. For example, "live stories" can constitute a curated stream of user-submitted content from various locations and events. Users whose location services are enabled and who are at public locations at specific times can be presented with the option to contribute content to specific live stories, for example, via the user interface of messaging client application 104. Live stories can be identified to a user by messaging client application 104 based on their location. The end result is a "live story" told from a community perspective.
[0061] Another type of content collection is called a "location story," which allows users whose client devices 102 are located in a specific geographic location (e.g., at a university or on a university campus) to contribute to a specific collection. In some implementations, contributing to a location story may require a second level of authentication to verify that the end user belongs to a specific organization or other entity (e.g., is a student on a university campus).
[0062] Database 120 also stores metadata table 316, fragment table 318, and fragment status table 320. Metadata table 316 includes metadata associated with media content items. Metadata can be associated with animations and media content identifiers created by the content creator. A media content item can include multiple media content fragments, including a user avatar. As media content fragments including user avatars are generated, fragment table 318 can store the media content fragments. Fragment status table 320 can store the fragment status associated with each of the media content fragments. For example, fragment status can indicate that the associated media content fragment is ready and can be used for transmission.
[0063] Figure 4 This is a schematic diagram illustrating the structure of a message 400 according to some embodiments, generated by a messaging client application 104 for transmission to another messaging client application 104 or messaging server application 114. The content of a particular message 400 is used to populate a message table 314 stored in a database 120 accessible to the messaging server application 114. Similarly, the content of message 400 is stored in memory as “in transit” or “in flight” data of the client device 102 or application server 112. Message 400 is shown as including the following components:
[0064] • Message Identifier 402: A unique identifier that identifies message 400.
[0065] • Message text payload 404: The text to be generated by the user via the user interface of the client device 102 and included in message 400.
[0066] • Message image payload 406: Image data captured by the camera component of the client device 102 or retrieved from the memory component of the client device 102 and included in message 400.
[0067] • Message video payload 408: Video data captured by the camera component or retrieved from the memory component of the client device 102 and included in message 400.
[0068] • Message audio payload 410: Audio data captured by the microphone or retrieved from the memory component of the client device 102 and included in message 400.
[0069] • Message annotation 412: Annotation data (e.g., filters, stickers, or other enhancements) representing annotations to be applied to message image payload 406, message video payload 408, or message audio payload 410 of message 400.
[0070] • Message duration parameter 414: A parameter value, in seconds, indicating the amount of time that the content of the message (e.g., message image payload 406, message video payload 408, message audio payload 410) will be presented or made accessible to the user via the messaging client application 104.
[0071] • Message geolocation parameter 416: Geographic location data (e.g., latitude and longitude coordinates) associated with the message's content payload. Multiple message geolocation parameter values 416 may be included in the payload, each of which is associated with a content item included in the content (e.g., a specific image within the message image payload 406 or a specific video within the message video payload 408).
[0072] • Message Story Identifier 418: An identifier value that identifies one or more sets of content (e.g., "story") associated with a specific content item in the message image payload 406 of message 400. For example, multiple images within the message image payload 406 may each be associated with multiple sets of content using their own identifier values.
[0073] • Message Tag 420: Each message 400 can be labeled with multiple tags, each tag indicating the subject of the content included in the message payload. For example, in the case where a specific image depicts an animal (e.g., a lion) is included in the message image payload 406, the tag value can be included within the message tag 420 indicating the relevant animal. The tag value can be manually generated based on user input, or it can be automatically generated using, for example, image recognition.
[0074] • Message sender identifier 422: An identifier (e.g., a messaging system identifier, email address, or device identifier) indicating the user of the client device 102 on which message 400 is generated and from which message 400 is sent.
[0075] • Message recipient identifier 424: An identifier (e.g., a messaging system identifier, email address, or device identifier) indicating the user of the client device 102 to which message 400 is addressed.
[0076] The content (e.g., values) of each component of message 400 can be pointers to locations in tables storing content data values. For example, image values in message image payload 406 can be pointers to locations (or addresses) within image table 308. Similarly, values in message video payload 408 can point to data stored in video table 310, values in message annotation 412 can point to data stored in annotation table 312, values in message story identifier 418 can point to data stored in story table 306, and values in message sender identifier 422 and message receiver identifier 424 can point to user records stored in entity table 302.
[0077] Figure 5 This is a graphical representation of details 500 of a networked environment in which the present disclosure can be deployed, based on some example implementations.
[0078] like Figure 5 As shown, the content controller system 124, including the delivery server system 502 and the rendering server system 504, is communicatively coupled to the client device 102 and the fragment table 318, fragment status table 320 and metadata table 316 of the database 120.
[0079] Content creators (such as animators) can periodically upload new content to [the platform / platform]. Figure 1 The messaging server system 108 is used in this context. Content creators can upload new content via electronic devices (such as client device 102), or new content can be uploaded by the messaging server system 108. Content can be in the form of multiple episodes in a series, such as a periodically (e.g., daily, weekly, monthly, etc.) television series. Media content items can be in the form of videos including animations.
[0080] In one implementation, content controller system 124 receives a request for new content (e.g., media content items) from client device 102. Content controller system 124 delivers media content items to client device 102 on demand using a streaming playlist, wherein delivery server system 502 coordinates with rendering server system 504 to progressively append newly rendered media content item segments (e.g., 2- to 3-second video clips) to the end of the playlist.
[0081] In one implementation, the delivery server system 502 receives a request from the client device 102. The request can be sent to the delivery server system 502 when a user of the client device 102 selects an selectable icon or link associated with a media content item that is being displayed on the client device 102. Figure 11 An example user interface 1100 displayed on client device 102 is shown. For example... Figure 11 As shown, user interface 1100 may be an electronic program guide that includes video programs (e.g., similar to a television series) or single videos (e.g., similar to a feature film) and multiple episodes. A portion of the electronic program guide in user interface 1100 may be selectable to allow requests for media content items to be sent to delivery server system 502. For example, when a user selects the link "Night Court" in user interface 1100, a request for the "Night Court" media content item is sent to delivery server system 502.
[0082] The request from client device 102 may include request parameters such as a media content identifier and a main user identifier. The media content identifier identifies the media content item being requested to be viewed. The media content identifier may be an episode identifier (e.g., Night Court episode 1). The main user identifier may be an identifier of the user of client device 102 requesting the media content item. The main user identifier may also be an identifier of an avatar associated with the user of client device 102 making the request (e.g., a main user avatar identifier). In one embodiment, the request from client device 102 may also include a second user identifier associated with users of different client devices 102. In another embodiment, the request from client device 102 may also include multiple user identifiers associated with multiple users of different client devices 102.
[0083] The delivery server system 502 of the content controller system 124 can retrieve (or obtain) the status of segments of media content items from the segment status table 320. The delivery server system 502 can retrieve the segment status using a media content identifier and a primary user identifier (and / or a secondary user identifier). The delivery server system 502 compiles a playlist using the latest available video segments (e.g., media content item segments). In one embodiment, when each media content item segment becomes available, the rendering server system 504 updates the segment status in the segment status table 320 to indicate that the segment is available.
[0084] Content controller system 124 can send a playlist including a first set of media content segments to client device 102. In one embodiment, delivery server system 502 sends the playlist including the first set of media content segments to client device 102. The first set of media content segments may include an introductory video portion of a media content item. The introductory video portion may be the first few video segments (e.g., 3 video segments) of the media content item. The introductory video portion may be, for example, a static introductory video of 6 to 10 seconds. The set of media content item segments may also be multiple frames included in the media content item.
[0085] While displaying the first set of media content item segments, the delivery server system 502 can also signal the rendering server system 504 to begin rendering a subsequent set of media content item segments (e.g., a second set of media content item segments), causing the rendering server system 504 to begin rendering. The second set of media content items could be, for example, the next three segments following the introductory video section. In one embodiment, when displaying the first set of media content item segments, the rendering server system 504 uses the media content identifier and the master user identifier to render the second set of media content item segments.
[0086] In one implementation, rendering server system 504 retrieves (or obtains) metadata from metadata table 316 and processes it into a second set of media content item fragments. The metadata may be, for example, metadata associated with media content item identifiers (e.g., episode metadata) required for the video segment being rendered. The metadata may be packaged into a single large file per episode, allowing rendering server system 504 to render the corresponding segments by splitting the file into multiple frame windows. Once rendered, rendering server system 504 stores the second set of media content item fragments in fragment table 318. The media content item fragments stored in fragment table 318 may be in MPEG-TS (.ts) file format. In one implementation, rendering server system 504 may render the second set of media content item fragments by rendering a primary user avatar based on a primary user identifier and incorporating the primary user avatar into the second set of media content item fragments.
[0087] Figure 12and Figure 13 Examples of different frames of media content items displayed on the user interface of client device 102 according to some embodiments of the present invention are shown. As shown in frames 1200 and 1300, an avatar associated with the user of client device 102 can be incorporated into the media content item. For example, frames 1200 and 1300 may be frames of animated episodes of a television series. Frames 1200 and 1300 may include recurring characters in the series (e.g., avatar character members), and also include avatars associated with the user of client device 102 and / or avatars associated with the user's friends or contacts on social networking system 122. Thus, episodes in the series may be characterized by the user of the avatar of client device 102 and the avatars of the user's friends. By using the identifier of the primary user and the identifier of the secondary user (e.g., users of different client devices 102 as contacts), the rendering server system 504 can retrieve the latest version of the avatar to be incorporated into the media content item segment.
[0088] The rendering server system 504 can also update the segment status table 320 by updating the status associated with the second set of media content item segments to indicate that the second set of media content item segments is available for processing by the delivery server system 502. The next time the client device 102 attempts to refresh the playlist, the delivery server system 502 can pick up the status change of the next available set of media content item segments (e.g., the second set of media content item segments) and compile a new playlist. In one implementation, the rendering server system 504 can update the playlist to include the second set of media content item segments. The delivery server system 502 can then send the updated playlist to the client device 102.
[0089] The delivery server system 502 and rendering server system 504 repeat this process until it is determined that the media content item has been fully rendered. For example, once the delivery server system 502 and / or rendering server system 504 determine that all segments of each group of media content items in the media content item have been rendered, the playlist is no longer updated and the client device 102 will have already displayed the entire media content item.
[0090] Although the flowchart below describes the operations as a sequential process, many operations can be executed in parallel or simultaneously. Furthermore, the order of operations can be rearranged. Processing terminates when an operation completes. A process can correspond to a method, a program, etc. The steps of a method can be executed in whole or in part, can be combined with some or all of the steps from other methods, and can be performed through any number of different systems, such as... Figure 1 , Figure 5 , Figure 14 , Figure 15 and / or Figure 16The system described herein, or any part thereof, such as any processor included in the system, executes.
[0091] Figure 6 A flowchart of a process 600 for on-demand video rendering according to one embodiment is shown. In operation 602, the delivery server system 502 of the content controller system 124 receives a request for a media content item from the client device 102. The request may include a media content identifier and a master user identifier. In one embodiment, the media content item is a video associated with the media content identifier, and the master user identifier is associated with a user of the client device 102.
[0092] In operation 604, the delivery server system 502 sends a playlist including a first set of media content item segments to the client device 102. The first set of media content item segments may be an introductory video portion of a media content item. In one embodiment, the content controller system 124 causes the first set of media content item segments to be displayed on the client device 102.
[0093] When the first set of media content item fragments is displayed on the monitor of client device 102, at operation 606, the rendering server system 504 of the content controller system 124 uses the media content identifier and the master user identifier to render the second set of media content item fragments. The rendering server system 504 may upload the second set of media content item fragments to a storage device. For example, the rendering server system 504 may upload and store the second set of media content item fragments in fragment table 318. The rendering server system 504 may also set fragment states to indicate that the storage device (e.g., fragment table 318) includes the second set of media content item fragments for consumption by client device 102. The rendering server system 504 may set fragment states stored in fragment state table 320 and associated with the second set of media content item fragments.
[0094] At operation 608, rendering server system 504 updates the playlist to include the second group of media content item segments. In one embodiment, delivery server system 502 retrieves segment status from segment status table 320 and updates the playlist based on the segment status.
[0095] At operation 610, the delivery server system 502 sends the updated playlist to the client device 102. In one embodiment, the delivery server system 502 sends the updated playlist to the client device 102 when the first group of media content item segments is displayed on the client device 102.
[0096] Figure 7 A rendering method according to one embodiment is shown. Figure 6The flowchart of process 700 for the second group of media content item fragments (operation 606) is as follows. To render the second group of media content item fragments, the rendering server system 504 can render the primary user avatar based on the primary user identifier in operation 702. In operation 704, the rendering server system 504 can incorporate the primary user avatar into the second group of media content item fragments.
[0097] In one implementation, the rendering server system 504 may also use a secondary user identifier associated with a user (e.g., a second user) associated with a different client device 102 to render a second set of media content item fragments. The second user may be a contact of a user (e.g., a primary user) on the client device 102 of the social networking system 122. The second user may be, for example, a friend, family member, or contact of the primary user on the social networking system 122. The rendering server system 504 may render the secondary user avatar based on the secondary user identifier and incorporate the secondary user avatar into the second set of media content item fragments.
[0098] In this embodiment, the rendering server system 504 generates a media content item fragment that includes an avatar of the second user and is to be displayed on the main user's client device 102. Therefore, the media content item displayed to the main user of the client device 102 that requested the media content item may include at least one of the main user's avatar or an avatar of his friend, family member, or contact (e.g., the second user) as the lead actor in the episode.
[0099] Figure 8 A flowchart of a process 800 for on-demand rendering of video using multiple graphics processing units (GPUs) according to one embodiment is shown. Generating media content items for each requesting user on the messaging system 100 involves significant rendering and video encoding, making it possible to greatly accelerate the process of serving media content items to multiple client devices 102 using GPU-enabled instances.
[0100] The delivery server system 502 can receive requests for media content items from the client device 102, the requests including a media content identifier and a master user identifier. In one embodiment, the media content item is a video associated with the media content identifier, and the master user identifier is associated with a user (e.g., a master user) of the client device 102.
[0101] In this embodiment, the rendering server system 504 includes multiple GPUs to render a set of media content item fragments using media content identifiers and a master user identifier. This set of media content item fragments may be multiple frames included in a media content item. The multiple GPUs included in the rendering server system 504 may be a group of GPUs that render the media content item fragments separately.
[0102] To render the set of media content fragments, the rendering server system 504 may perform operations 802 through 808. At operation 802, the rendering server system 504 retrieves metadata from a metadata database (e.g., metadata table 316). The retrieved metadata is associated with a media content identifier.
[0103] At operation 804, rendering server system 504 renders the group of media content item fragments using metadata. At operation 806, rendering server system 504 generates a master user avatar based on the master user identifier. At operation 808, rendering server system 504 incorporates the master user avatar into the group of media content item fragments. At operation 810, rendering server system 504 then uploads the group of media content item fragments to the fragment database (e.g., fragment table 318). The fragment status in fragment status table 320 indicates the availability associated with the media content item fragments. Rendering server system 504 then updates the fragment status in the fragment status database (e.g., fragment status table 320) to indicate that the group of media content item fragments is available.
[0104] The delivery server system 502 can retrieve segment status from a segment status database (e.g., segment status table 320), compile a playlist including the segment of that group of media content items, and send it to the client device 102.
[0105] In one implementation, when the delivery server system 502 receives a request for media content items from the client device 102, the delivery server system 502 retrieves segment states from a segment state database (e.g., segment state table 320), compiles a first set of media content item segments based on the segment states, and sends it to the client device 102. For example, the first set of media content item segments could be an introductory video portion of the media content item. The delivery server system 502 then initializes the rendering of a second set of media content item segments.
[0106] In this embodiment, a rendering server system 504, including multiple GPUs, renders a second set of media content item fragments using media content identifiers and a master user identifier. The first and second sets of media content item fragments are each multiple frames included in a media content item. The first set of media content item fragments can be consecutive to the second set of media content item fragments.
[0107] For example, rendering server system 504 can render the second set of media content item fragments by retrieving metadata from a metadata database (e.g., metadata table 316) associated with media content identifiers, rendering the second set of media content item fragments using the metadata, generating a master user avatar based on the master user identifier, and incorporating the master user avatar into the second set of media content item fragments. Rendering server system 504 can then upload the second set of media content item fragments to a fragment database (e.g., fragment table 318) and update the fragment status in a fragment status database (e.g., fragment status table 320) to indicate that the second set of media content item fragments is available.
[0108] In this embodiment, the delivery server system 502 can update the playlist to include the second set of media content item fragments. The delivery server system 502 can update the playlist by compiling the updated playlist to include the second set of media content item fragments and send the updated playlist to the client device 102. In one embodiment, the client device 102 receives the second set of media content item fragments from a fragment database.
[0109] Figure 9 A flowchart of a process 900 for on-demand video rendering using multiple servers, according to one embodiment, is shown. Generating a media content item for each requesting user on the messaging system 100 involves significant rendering and video encoding, allowing a group of servers that separately generate segments within the media content item to greatly accelerate the process of serving the media content item to multiple client devices 102. Each of the multiple servers can perform operations simultaneously or sequentially.
[0110] In one implementation, process 900 begins with operation 902, which includes a rendering server system 504 of multiple servers receiving multiple segment rendering requests. Each segment rendering request may correspond to a segment included in a set of media content item segments. This set of media content item segments consists of multiple frames included in a media content item. A media content item may be video associated with a media content identifier.
[0111] Rendering server system 504 uses the media content identifier and the primary user identifier to render the fragment corresponding to the fragment rendering request. The primary user identifier is associated with the user of client device 102.
[0112] In one implementation, rendering server system 504 can render a fragment by performing operations 904 to 910. At operation 904, rendering server system 504 retrieves metadata from a metadata database (e.g., metadata table 316) associated with media content identifiers. At operation 906, rendering server system 504 renders the fragment using the metadata. At operation 908, rendering server system 504 generates a primary user avatar based on the primary user identifier. At operation 910, rendering server system 504 incorporates the primary user avatar into the fragment.
[0113] At operation 912, rendering server system 504 uploads the fragment to the fragment database (e.g., fragment table 318). At operation 914, rendering server system 504 updates the fragment status in the fragment status database (e.g., fragment status table 320) to indicate that the fragment is available.
[0114] In one embodiment, the content controller system 124 may include a delivery server system 502 and a rendering server system 504 comprising multiple servers. In one embodiment, the delivery server system 502 receives a request for media content items from the client device 102. The request includes a media content identifier and a master user identifier. The delivery server system 502 retrieves segment status from a segment status database (e.g., segment status table 320) indicating availability associated with media content item segments. The delivery server system 502 compiles a playlist including a first set of media content item segments and sends it to the client device 102. The first set of media content item segments is based on segment status. The delivery server system 502 initializes the rendering of a second set of media content item segments by generating multiple segment rendering requests. In one embodiment, the segment rendering requests correspond to segments included in the second set of media content item segments. The first set of media content item segments may be consecutive to the second set of media content item segments.
[0115] In one implementation, multiple servers in the rendering server system 504 receive fragment rendering requests respectively, and render the fragments corresponding to the fragment rendering requests using media content identifiers and master user identifiers respectively.
[0116] like Figure 9As shown, each of the multiple servers can render a fragment by retrieving metadata from a metadata database associated with the media content identifier (operation 904), render the fragment using the metadata (operation 906), generate a master user avatar based on the master user identifier (operation 908), and incorporate the master user avatar into the fragment (operation 910). The multiple servers in the rendering server system 504 can then upload the fragment to the fragment database (operation 912) and update the fragment status in the fragment status database to indicate that the fragment is available (operation 914). In one embodiment, the delivery server system 502 also retrieves the fragment status from a fragment status database (e.g., fragment status table 320).
[0117] In one implementation, the delivery server system 502 collects segments and generates a second set of media content item segments. In another implementation, the delivery server system 502 updates the playlist to include the second set of media content item segments. The delivery server system 502 can update the playlist by compiling the updated playlist to include the second set of media content item segments and by sending the updated playlist to the client device 102.
[0118] Given that media content items are personalized to represent the avatar of the master user (e.g., the user who requested the media content item) on messaging system 100 and / or the avatar of another user connected to the master user, it is necessary to determine which avatars should be incorporated into the media content item. Figure 10 A flowchart of a process 1000 for selecting avatars to be included in on-demand generated video is shown according to one embodiment.
[0119] The following process 1000 can be performed by any number of different systems, such as content controller system 124 and / or client device 102, or any part thereof, such as a processor included in any system or device.
[0120] At operation 1002 of process 1000, the processor may cause the electronic program guide to be displayed on the display of the first client device 102. The first client device 102 is associated with a first user (e.g., a primary user) and a first avatar. Figure 11 An example of a user interface 1100 displayed by a client device 102 according to one embodiment is shown. The user interface 1100 may be an example of an electronic program guide that includes options (e.g., text, images, links, or icons) associated with multiple media content items.
[0121] In another embodiment, the user interface including the electronic program guide is in the form of multiple optional tiles. Users can scroll the electronic program guide vertically or horizontally on the display screen. Each of the optional tiles can be associated with a different media content item (e.g., an episode of an animated series). In another embodiment, the optional tiles can also be associated with multiple media content items (e.g., an animated series comprising multiple episodes). In this embodiment, by selecting one of the optional tiles, a summary page of the animated series associated with the selected optional tile is displayed. Through the summary page of the animated series, the user can access the available episodes.
[0122] At operation 1004, the processor detects the first user's selection of an option associated with the media content item. For example, the processor may detect that the user selected an option associated with the "Golden Girl" media content item by selecting the area around the text "Golden Girl" via the touchscreen or display device of client device 102.
[0123] At operation 1006, the processor identifies a second user associated with a second client device 102 connected to the first user on a communication platform (e.g., messaging system 100). The second user can be a friend, family member, contact, or associate on the communication platform. In one embodiment, the second user can be another user on the communication platform that is random or unknown to the first user. In one embodiment, the second user can be identified based on the timing of their last communication with the first user on messaging system 100. In this embodiment, the processor can identify the second user by identifying a user who recently sent an electronic message to the first client device 102. The processor can also identify the second user by identifying a user who sent an electronic message to the first client device 102 within a predetermined time period. In another embodiment, the first user can also select the second user from a user list. Alternatively, the second user can select the first user, causing the second user to identify themselves to the processor.
[0124] In some cases, the processor needs to select a second user based on whether the user has created a personalized avatar for the messaging system 100. To ensure the second user has an avatar that can be used for rendering media content items, the processor can identify the second user by recognizing a user associated with an avatar who is also associated with the first user on the communication platform (e.g., messaging system 100). The processor can also select the second user based on both the timing of the last communication between the user and the first user and whether the user is associated with an avatar. In this embodiment, the processor identifies the second user by determining whether a user who sends an electronic message to the first client device 102 within a predetermined time period is associated with an avatar.
[0125] In one implementation, if the processor determines that no user associated with the first user on the communication platform (e.g., messaging system 100) is associated with an avatar, the processor selects a generic second user and instructs that the generic avatar should be used as the second avatar. In another implementation, the processor may select a contact of the first user on messaging system 100, but assign a generic avatar to the second user of that contact.
[0126] At operation 1008, the processor can retrieve the primary user identifier associated with the first user and the secondary user identifier associated with the second user. The second user is associated with the second avatar.
[0127] At operation 1010, the processor generates a request for a media content item. The request may include a media content identifier, a primary user identifier, and a secondary user identifier associated with the media content item.
[0128] At operation 1012, the processor receives a playlist associated with media content items. The playlist includes multiple media content item segments, including a first incarnation and a second incarnation. Figure 12 and Figure 13 An example is shown of a media content item displayed by a client device 102 according to one embodiment, which may include frames (e.g., frames 1200 and 1300) of a first avatar and a second avatar.
[0129] In one implementation, a request for a media content item may be received by a processor of a content controller system 124 (e.g., a delivery server system 502), and the processor of the content controller system 124 (e.g., a rendering server system 504) renders a media content item fragment using a media content identifier, a primary user identifier, and a secondary user identifier. The processor of the content controller system 124 may render the media content item fragment by rendering a first avatar based on the primary user identifier, rendering a second avatar based on the secondary user identifier, and incorporating the first and second avatars into the media content item fragment.
[0130] To further optimize on-demand rendering of media content items, the content controller system 124 may also include a puppet animation system and an avatar matching system. In one embodiment, the puppet animation system and the avatar matching system may be included in the rendering server system 504.
[0131] The puppet animation system receives animation input from the content creator's client device 102. The content creator is the author of the media content item (e.g., an animator). The animation input may include software, code, or artwork used to generate animation files for creating the media content item. The puppet animation system generates animation files including metadata based on the animation input. The animation files are associated with media content identifiers. Therefore, the animation files may include placeholder puppets animated based on the animation input. These placeholder puppets may be replaced with the avatar of the primary user (first avatar) and / or the avatar of the secondary user (second avatar).
[0132] The avatar matching system can receive animation files and use avatars instead of placeholder puppets.
[0133] Rendering server system 504 renders a set of media content item fragments using media content identifiers and a primary user identifier. In one embodiment, rendering server system 504 renders the set of media content item fragments by retrieving metadata from a metadata database associated with the media content identifier, rendering the set of media content item fragments using the metadata, generating a primary user avatar based on the primary user identifier, and incorporating the primary user avatar into the set of media content item fragments. Rendering server system 504 may also upload the set of media content item fragments to a fragment database and update the fragment status in the fragment status database to indicate that the set of media content item fragments is available.
[0134] Figure 14 This is a block diagram 1400 illustrating a software architecture 1404 that can be installed on any one or more of the devices described herein. The software architecture 1404 is supported by hardware such as a machine 1402 including a processor 1420, memory 1426, and I / O components 1438. In this example, the software architecture 1404 can be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 1404 includes layers such as an operating system 1412, libraries 1410, frameworks 1408, and applications 1406. Operationally, application 1406 invokes API call 1450 through the software stack and receives message 1452 in response to API call 1450.
[0135] Operating system 1412 manages hardware resources and provides public services. Operating system 1412 includes, for example, kernel 1414, services 1416, and drivers 1422. Kernel 1414 acts as an abstraction layer between the hardware layer and other software layers. For example, kernel 1414 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. Services 1416 can provide other public services to other software layers. Driver 1422 is responsible for controlling or interfacing with the underlying hardware. For example, driver 1422 may include a display driver, camera driver, etc. or Low-power drivers, flash drives, serial communication drivers (such as Universal Serial Bus (USB) drivers), Drivers, audio drivers, power management drivers, etc.
[0136] Library 1410 provides low-level public infrastructure used by application 1406. Library 1410 may include system library 1418 (e.g., the C standard library), which provides functions such as memory allocation, string manipulation, and mathematical functions. Additionally, library 1410 may include API libraries 1424, such as media libraries (e.g., libraries for supporting the rendering and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Scalable Vector Graphics (SVG), Joint Picture Experts Group (JPEG or JPG), or Portable Web Graphics (PNG)), graphics libraries (e.g., an OpenGL framework for rendering graphic content on a display in two-dimensional (2D) and three-dimensional (3D) formats), database libraries (e.g., SQLite providing various relational database functions), web libraries (e.g., WebKit providing web browsing capabilities), and Unified Computing Device Architecture (CUDA). TM Library 1410 may also include a wide variety of other libraries 1428 to provide many other APIs to application 1406.
[0137] Framework 1408 provides advanced public infrastructure for use by application 1406. For example, framework 1408 provides various graphical user interface (GUI) functions, advanced resource management, and advanced location services. Framework 1408 can provide a wide range of other APIs that can be used by application 1406, some of which may be specific to a particular operating system or platform.
[0138] In an example implementation, application 1406 may include a homepage application 1436, a contacts application 1430, a browser application 1432, a book reader application 1434, a location application 1442, a media application 1444, a messaging application 1446, a game application 1448, and various other applications such as third-party application 1440. Application 1406 is a program that performs the functions defined in the program. One or more applications 1406 can be created using various programming languages, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a particular example, third-party application 1440 (e.g., Android used by an entity other than a vendor of a particular platform)TM or iOS TM Applications developed using a Software Development Kit (SDK) can be used on platforms such as iOS. TM ANDROID TM , Mobile software running on the phone's mobile operating system or another mobile operating system. In this example, a third-party application 1440 may call API call 1450 provided by the operating system 1412 to facilitate the functions described herein.
[0139] Figure 15 This is a graphical representation of machine 1500, within which instructions 1508 (e.g., software, programs, applications, applets, or other executable code) can be executed to cause machine 1500 to perform any or more of the methods discussed herein. For example, instructions 1508 can cause machine 1500 to perform any or more of the methods described herein. Instructions 1508 transform the general, unprogrammed machine 1500 into a specific machine 1500 programmed to perform the described and illustrated functions in the described manner. Machine 1500 can operate as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, machine 1500 can operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Machine 1500 may include, but is not limited to: server computers, client computers, personal computers (PCs), tablet computers, laptop computers, netbooks, set-top boxes (STBs), PDAs, entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, web devices, network routers, network switches, network bridges, or any machine capable of sequentially or otherwise executing instructions 1508, which specify actions to be taken by machine 1500. Furthermore, although only a single machine 1500 is shown, the term "machine" should also be considered as a collection of machines that individually or jointly execute instructions 1508 to perform any one or more of the methods discussed herein.
[0140] Machine 1500 may include processor 1502, memory 1504, and I / O unit 1542, which may be configured to communicate with each other via bus 1544. In an example implementation, processor 1502 (e.g., a central processing unit (CPU), a simplified instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor 1506 and processor 1510 that execute instruction 1508. The term "processor" is intended to include multi-core processors that may include two or more independent processors (sometimes referred to as "cores") capable of executing instructions simultaneously. Although Figure 15 Multiple processors 1502 are shown, but machine 1500 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
[0141] Memory 1504 includes main memory 1512, static memory 1514, and storage cells 1516, all of which are accessible by processor 1502 via bus 1544. Main memory 1504, static memory 1514, and storage cells 1516 store instructions 1508 that implement any one or more of the methods or functions described herein. Instructions 1508 may also reside wholly or partially in main memory 1512, in static memory 1514, in machine-readable medium 1518 within storage cell 1516, in at least one of the processors 1502 (e.g., in the processor's cache memory), or in any suitable combination thereof during execution by machine 1500.
[0142] I / O component 1542 may include a wide variety of components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurement results, etc. The specific I / O component 1542 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It will be appreciated that I / O component 1542 may include... Figure 15Many other components are not shown. In various example embodiments, I / O component 1542 may include output component 1528 and input component 1530. Output component 1528 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tube (CRT) displays), auditory components (e.g., speakers), tactile components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. Input component 1530 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, photoelectric keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touchscreens providing position and / or force for touch or touch gestures, or other tactile input components), audio input components (e.g., microphones), etc.
[0143] In other example implementations, I / O component 1542 may include biometric component 1532, motion component 1534, environmental component 1536 or positioning component 1538, and various other components. For example, biometric component 1532 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body posture, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), and identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition). Motion component 1534 includes accelerometer components (e.g., accelerometers), gravity sensor components, rotation sensor components (e.g., gyroscopes), etc. Environmental component 1536 includes, for example, a lighting sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects the concentration of hazardous gases for safety purposes or measures pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment. Positioning component 1538 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which altitude can be obtained), an orientation sensor component (e.g., a magnetometer), etc.
[0144] Various technologies can be used to implement communication. I / O component 1542 also includes communication component 1540, which is operable to couple machine 1500 to network 1520 or device 1522 via coupling 1524 and coupling 1526, respectively. For example, communication component 1540 may include a network interface component or other suitable device that interfaces with network 1520. In other examples, communication component 1540 may include wired communication component, wireless communication component, cellular communication component, near field communication (NFC) component, etc. Components (e.g.) (Low energy consumption) Components, and other communication components for providing communication via other means. Device 1522 can be any peripheral device (e.g., a peripheral device coupled via USB) from other machines or a wide variety of peripheral devices.
[0145] Furthermore, the communication component 1540 can detect identifiers or include components operable to detect identifiers. For example, the communication component 1540 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., for detecting optical sensors such as one-dimensional barcodes, such as Universal Product Code (UPC) barcodes; multi-dimensional barcodes, such as Quick Response (QR) codes, Aztec codes, data matrices, dataglyphs, MaxiCodes, PDF417, supercodes, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying audio signals of the tag). Additionally, various information can be obtained via the communication component 1540, such as location via Internet Protocol (IP) geolocation, etc. The location of signal triangulation, the location of NFC beacon signals that can be detected to indicate a specific location, etc.
[0146] Various memories (e.g., memory 1504, main memory 1512, static memory 1514, and / or the memory of processor 1502) and / or storage units 1516 may store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. These instructions (e.g., instruction 1508), when executed by processor 1502, cause various operations to implement the disclosed embodiments.
[0147] Instructions 1508 can be sent or received over network 1520 via a network interface device (e.g., a network interface component included in communication component 1540), using a transmission medium and any of a number of well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions 1508 can be sent or received to device 1522 via a transmission medium through coupling 1526 (e.g., peer-to-peer coupling).
[0148] Now turn to Figure 16 The diagram shows a schematic representation of a processing environment 1600, which includes processor 1606 and processor 1602 (e.g., GPU, CPU, or a combination thereof).
[0149] Processor 1602 is shown coupled to power supply 1604 and includes (permanently configured or temporarily instantiated) modules, namely delivery unit 1608 and rendering unit 1610. Delivery unit 1608 operably performs the operations of delivery server system 502, such as processing requests and delivery of media content items, and rendering unit 1610 operably performs the operations of rendering server system 504, such as generating segments of media content items included in a playlist.
[0150] When phrases such as “at least one of A, B or C”, “at least one of A, B and C”, “one or more of A, B or C” or “one or more of A, B and C” are used, it is intended that the phrase be interpreted as meaning that A may exist alone in an embodiment, B may exist alone in an embodiment, C may exist alone in an embodiment, or any combination of elements A, B and C may exist in a single embodiment; for example, A and B, A and C, B and C, or A and B and C.
[0151] Regarding the implementation methods including the above embodiments, the following technical solutions are also disclosed:
[0152] Option 1. A method comprising:
[0153] The electronic program guide is displayed on the display of a first client device, which is associated with a first user, and the first user is associated with a first avatar.
[0154] The first user's selection of an option associated with a media content item is detected, and the electronic program guide includes the option.
[0155] Identify a second user associated with a second client device connected to the first user on the communication platform;
[0156] Retrieve the primary user identifier associated with the first user and the secondary user identifier associated with the second user, the second user being associated with the second avatar;
[0157] Generate a request for the media content item, the request including a media content identifier associated with the media content item, the primary user identifier, and the secondary user identifier; and
[0158] Receive a playlist associated with the media content item, wherein the playlist includes multiple media content item fragments, the multiple media content item fragments including the first avatar and the second avatar.
[0159] Solution 2. The method according to Solution 1, wherein identifying the second user further includes:
[0160] Identify the user who recently sent an electronic message to the first client device.
[0161] Solution 3. The method according to Solution 1, wherein identifying the second user further includes:
[0162] Identify users who send electronic messages to the first client device within a predetermined time period.
[0163] Solution 4. The method according to Solution 3, wherein identifying the second user further includes:
[0164] Determine whether the user who sends the electronic message to the first client device within the predetermined time period is associated with the avatar.
[0165] Option 5. The method according to Option 4, wherein the second user is the user who sent the electronic message to the first client device during the predetermined time period and is associated with the avatar.
[0166] Solution 6. The method according to Solution 1, wherein identifying the second user further includes:
[0167] Identify users associated with the first user and with the avatar on the communication platform.
[0168] Solution 7. The method according to Solution 1, wherein identifying the second user further includes:
[0169] It is determined that a user not associated with the first user on the communication platform is associated with an avatar, wherein the second avatar is a generic avatar.
[0170] Option 8. The method according to Option 1 further includes:
[0171] Rendering the media content item fragment using the media content identifier, the primary user identifier, and the secondary user identifier, wherein rendering the media content item fragment includes...
[0172] The first avatar is rendered based on the primary user identifier.
[0173] The second avatar is rendered based on the secondary user identifier, and
[0174] The first avatar and the second avatar are incorporated into the media content item fragment.
[0175] Option 9. A system comprising:
[0176] Processor; and
[0177] A memory component having instructions stored thereon, which, when executed by the processor, cause the processor to perform operations including the following steps:
[0178] The electronic program guide is displayed on the display of a first client device, which is associated with a first user, and the first user is associated with a first avatar.
[0179] The first user's selection of an option associated with a media content item is detected, and the electronic program guide includes the option.
[0180] Identify a second user associated with a second client device connected to the first user on the communication platform;
[0181] Retrieve the primary user identifier associated with the first user and the secondary user identifier associated with the second user, the second user being associated with the second avatar;
[0182] Generate a request for the media content item, the request including a media content identifier associated with the media content item, the primary user identifier, and the secondary user identifier; and
[0183] Receive a playlist associated with the media content item, wherein the playlist includes multiple media content item fragments, the multiple media content item fragments including the first avatar and the second avatar.
[0184] Solution 10. The system according to Solution 9, wherein identifying the second user further includes:
[0185] Identify the user who recently sent an electronic message to the first client device.
[0186] Solution 11. The system according to Solution 9, wherein identifying the second user further includes:
[0187] Identify users who send electronic messages to the first client device within a predetermined time period.
[0188] Solution 12. The system according to Solution 11, wherein identifying the second user further includes:
[0189] Determine whether the user who sends the electronic message to the first client device within the predetermined time period is associated with the avatar.
[0190] Option 13. The system according to Option 12, wherein the second user is the user who sends the electronic message to the first client device and is associated with the avatar during the predetermined time period.
[0191] Solution 14. The system according to Solution 9, wherein identifying the second user further includes:
[0192] Identify users associated with the first user and with the avatar on the communication platform.
[0193] Solution 15. The system according to Solution 9, wherein identifying the second user further includes:
[0194] It is determined that a user not associated with the first user on the communication platform is associated with an avatar, wherein the second avatar is a generic avatar.
[0195] Option 16. The system according to Option 9, wherein the operation further includes:
[0196] Rendering the media content item fragment using the media content identifier, the primary user identifier, and the secondary user identifier, wherein rendering the media content item fragment includes...
[0197] The first avatar is rendered based on the primary user identifier.
[0198] The second avatar is rendered based on the secondary user identifier, and
[0199] The first avatar and the second avatar are incorporated into the media content item fragment.
[0200] Option 17. A non-transitory computer-readable storage medium having instructions stored thereon, the instructions, when executed by a processor, causing the processor to perform operations including the following steps:
[0201] The electronic program guide is displayed on the display of a first client device, which is associated with a first user, and the first user is associated with a first avatar.
[0202] The first user's selection of an option associated with a media content item is detected, and the electronic program guide includes the option.
[0203] Identify a second user associated with a second client device connected to the first user on the communication platform;
[0204] Retrieve the primary user identifier associated with the first user and the secondary user identifier associated with the second user, the second user being associated with the second avatar;
[0205] Generate a request for the media content item, the request including a media content identifier associated with the media content item, the primary user identifier, and the secondary user identifier; and
[0206] Receive a playlist associated with the media content item, wherein the playlist includes multiple media content item fragments, the multiple media content item fragments including the first avatar and the second avatar.
[0207] Solution 18. The non-transitory computer-readable storage medium according to Solution 17, wherein identifying the second user further includes:
[0208] Identify users who send electronic messages to the first client device within a predetermined time period.
[0209] Solution 19. The non-transitory computer-readable storage medium according to Solution 18, wherein identifying the second user further includes:
[0210] Determine whether the user who sends the electronic message to the first client device within the predetermined time period is associated with the avatar.
[0211] Option 20. The non-transitory computer-readable storage medium according to Option 19, wherein the second user is the user who sends the electronic message to the first client device and is associated with the avatar during the predetermined time period.
[0212] Solution 21. The non-transitory computer-readable storage medium according to Solution 17, wherein identifying the second user further includes:
[0213] Identify users associated with the first user and with the avatar on the communication platform.
[0214] Changes and modifications may be made to the disclosed embodiments without departing from the scope of this disclosure. Such and other changes or modifications are intended to be included within the scope of this disclosure, as expressed in the appended claims.
Claims
1. A method comprising: detecting, by a processor, a selection of an option associated with an animated series by a first user of a first client device; identifying a second user to be included with the first user in the animated series, wherein identifying the second user comprises identifying a user that has recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animated series, the request comprising a primary user identification associated with the first user and a secondary user identification associated with the second user, wherein the request causes the first episode to be generated on-demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist comprises a plurality of media content item segments, the plurality of media content item segments comprising the first avatar and the second avatar.
2. The method of claim 1, wherein, the request comprises a media content identification associated with the media content item.
3. The method of claim 1, wherein, identifying the second user further comprises: identifying a user that has sent an electronic message to the first client device within a predetermined time period.
4. The method of claim 3, wherein, identifying the second user further comprises: determining whether a user that has sent the electronic message to the first client device within the predetermined time period is associated with an avatar.
5. The method of claim 4, wherein, the second user is a user that has sent the electronic message to the first client device within the predetermined time period and is associated with the avatar.
6. The method of claim 1, wherein, identifying the second user further comprises: identifying a user associated with an avatar that is associated with the first user on the communication platform.
7. The method of claim 1, wherein, identifying the second user further comprises: determining that no user associated with the first user on the communication platform is associated with an avatar, wherein the second avatar is a generic avatar.
8. The method of claim 2, further comprising: rendering the media content item segments using the media content identification, the primary user identification, and the secondary user identification, wherein rendering the media content item segments comprises: rendering the first avatar based on the primary user identification, rendering the second avatar based on the secondary user identification, and incorporating the first avatar and the second avatar into the media content item segments.
9. A system comprising: a processor; and a memory component having instructions stored thereon that, when executed by the processor, cause the system to perform operations comprising: detecting a selection of an option associated with an animated series by a first user of a first client device; identifying a second user to be included with the first user in the animated series, wherein identifying the second user comprises identifying a user that has recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animated series, the request comprising a primary user identification associated with the first user and a secondary user identification associated with the second user, wherein the request causes the first episode to be generated on-demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist includes a plurality of media content item segments including the first avatar and the second avatar.
10. The system of claim 9, wherein, the request includes a media content identification associated with the media content item.
11. The system of claim 9, wherein, identifying the second user further includes: identifying users that sent electronic messages to the first client device within a predetermined time period.
12. The system of claim 11, wherein, identifying the second user further includes: determining whether a user that sent the electronic messages to the first client device within the predetermined time period is associated with an avatar.
13. The system of claim 12, wherein, the second user is a user that sent the electronic messages to the first client device within the predetermined time period and is associated with the avatar.
14. The system of claim 9, wherein, identifying the second user further includes: identifying users that are associated with avatars that are associated with the first user on the communication platform.
15. The system of claim 9, wherein, identifying the second user further includes: determining that no user that is associated with the first user on the communication platform is associated with an avatar, wherein the second avatar is a generic avatar.
16. The system of claim 10, wherein, the operations further include: rendering the media content item segments using the media content identification, the primary user identification, and the secondary user identification, wherein rendering the media content item segments includes: rendering the first avatar based on the primary user identification, rendering the second avatar based on the secondary user identification, and incorporating the first avatar and the second avatar into the media content item segments.
17. A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by a processor, cause the processor to perform operations comprising: detecting a selection of a selectable item associated with an animated series by a first user of a first client device; identifying a second user to be included in the series of animations with the first user, wherein, identifying the second user includes identifying a user that recently sent an electronic message to the first client device via a communication platform; generating a request for a media content item associated with a first episode of a plurality of episodes of the animated series, the request including a primary user identification associated with the first user and a secondary user identification associated with the second user, wherein the request causes the first episode to be generated on-demand to include a first avatar associated with the first user and a second avatar associated with the second user as character members in the first episode; and receiving a playlist associated with the media content item, wherein the playlist includes a plurality of media content item segments including the first avatar and the second avatar.
18. The non-transitory computer-readable storage medium of claim 17, wherein, identifying the second user further includes: identifying users that sent electronic messages to the first client device within a predetermined time period.
19. The non-transitory computer-readable storage medium of claim 18, wherein, identifying the second user further includes: determining whether a user that sent the electronic messages to the first client device within the predetermined time period is associated with an avatar.
20. The non-transitory computer-readable storage medium of claim 19, wherein, The second user is a user that sent the electronic message to the first client device within the predetermined time period and is associated with the avatar.
21. The non-transitory computer-readable storage medium of claim 17, wherein, Identifying the second user further comprises: Identifying a user associated with an avatar that is associated with the first user on the communication platform.
Citation Information
Patent Citations
Video generation system to render frames on demand using a fleet of servers
US11036781B1
Video generation system to render frames on demand
US20210243482A1
Video generation system to render frames on demand using a fleet of gpus
US20210243487A1
Method and device for controlling addition of personal hobby information into media demo
CN1980332A
System and method for personalizing digital content
US20150143209A1