PRIORITY CLAIM AND RELATED APPLICATIONSThe present application claims priority to U.S. Provisional Patent Application No. 61/934,681, filed Jan. 31, 2014, which is hereby expressly incorporated herein by reference in its entirety.
This application is related to U.S. patent application Ser. No. ______, Attorney Docket No. 103337-5001-US, filed Jan. 28, 2015, entitled, “Methods and Devices for Synchronizing and Sharing Media Items,” U.S. patent application Ser. No. ______, Attorney Docket No. 103337-5002-US, filed Jan. 28, 2015, entitled, “Methods and Devices for Touch-Based Media Creation,” U.S. patent application Ser. No. ______, Attorney Docket No. 103337-5003-US, filed Jan. 28, 2015, entitled, “Methods and Devices for Presenting Interactive Media Items,” and U.S. patent application Ser. No. ______, Attorney Docket No. 103337-5005-US, filed Jan. 28, 2015, entitled, “Methods and Devices for Generating Media Items,” which are hereby incorporated by reference in their entirety.
TECHNICAL FIELDThe present invention relates to the field of Internet technologies, and more particularly to presenting and modifying media items.
BACKGROUND OF THE INVENTIONAs wireless networks and the processing power of mobile devices have improved, web-based applications increasingly allow everyday users to create original content in real-time without professional software. For example, Instagram and Vine allow a user to create original media content that is personalized to the user's tastes—anytime and anywhere. Despite the advances in the provision of web-based media creation applications, some solutions for creating media content are clumsy or ill-suited to future improvements in provisioning media content.
SUMMARYVarious implementations of systems, methods and devices within the scope of the appended claims each have several aspects, no single one of which is solely responsible for the attributes described herein. Without limiting the scope of the appended claims, after considering this disclosure, and particularly after considering the section entitled “Detailed Description” one will understand how the aspects of various implementations are used to present, modify, and manage media items.
In some embodiments, a client-side method of presenting a media item is performed at a client device (e.g.,client device104,FIGS. 1-2) with one or more processors and memory. The method includes detecting a user input to play the media item, where the media item is associated with at least a portion of an audio track and one or more media files. The method also includes: requesting the media item from a server in response to the user input; in response to the request, receiving, from the server, the one or more media files and information identifying at least the portion of the audio track; and obtaining at least the portion of the audio track based on the information identifying at least the portion of the audio track. The method further includes: displaying the one or more media files; and, while displaying the one or more media files, playing back at least the portion of the audio track in synchronization with the one or more media files.
In some embodiments, a client-side method of modifying a pre-existing media item is performed at a client device (e.g.,client device104,FIGS. 1-2) with one or more processors and memory. The method includes displaying a family tree associated with a root media item including a plurality of leaf nodes stemming from a genesis node, where: the genesis node corresponds to the root media item and a respective leaf node of the plurality of leaf nodes corresponds to a modified media item, where the modified media item is a modified version of the root media item; and the genesis node corresponding to the root media item and the respective leaf node corresponding to the first modified media item include metadata structures, where a respective metadata structure includes first information identifying one or more audio tracks, second information identifying one or more media files, and third information identifying zero or more audio and/or video effects. The method also includes: detecting a first user input selecting one of the nodes in the family tree; and, in response to detecting the first user input, displaying a user interface for editing a media item corresponding to the selected node. The method further includes: detecting one or more second user inputs modifying the media item corresponding to the selected node; and, in response to detecting the one or more second user inputs: modifying a metadata structure associated with the media item that corresponds to the selected node so as to generate modified metadata associated with a new media item; and transmitting, to a server, at least a portion of the modified metadata associated with the new media item.
In some embodiments, a server-side method of maintaining a database is performed at a server system (e.g.,server system108,FIGS. 1 and 3) with one or more processors and memory. The method includes: maintaining a database for a plurality of root media items, where: a respective root media item is associated with a family tree that includes a genesis node and a plurality of leaf nodes; the genesis node corresponds to the respective root media item and a respective leaf node of the plurality of leaf nodes corresponds to a first modified media item, the first modified media item is a modified version of the respective root media item; and the genesis node corresponding to the respective root media item and the respective leaf node corresponding to the first modified media item include metadata structures, where a respective metadata structure includes first information identifying one or more audio tracks, second information identifying one or more media files, and third information identifying zero or more audio and/or video effects. The method also includes receiving, from a client device, at least a portion of modified metadata corresponding to a second modified media item, where the second modified media item is a modified version of a media item corresponding to a respective node in the family tree. The method further includes appending, in response to receiving at least the portion of the modified metadata corresponding to the second modified media item, a new leaf node to the family tree that is linked to the respective node, where the new leaf node corresponds to the second modified media item.
In some embodiments, an electronic device or a computer system (e.g.,client device104,FIGS. 1-2 orserver system108,FIGS. 1 and 3) includes one or more processors and memory storing one or more programs for execution by the one or more processors, the one or more programs include instructions for performing the operations of the methods described herein. In some embodiments, a non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by an electronic device or a computer system (e.g.,client device104,FIGS. 1-2 orserver system108,FIGS. 1 and 3) with one or more processors, cause the electronic device or computer system to perform the operations of the methods described herein.
BRIEF DESCRIPTION OF THE DRAWINGSSo that the present disclosure can be understood in greater detail, a more particular description may be had by reference to the features of various implementations, some of which are illustrated in the appended drawings. The appended drawings, however, merely illustrate the more pertinent features of the present disclosure and are therefore not to be considered limiting, for the description may admit to other effective features.
FIG. 1 is a block diagram of a server-client environment in accordance with some embodiments.
FIG. 2 is a block diagram of a client device in accordance with some embodiments.
FIG. 3 is a block diagram of a server system in accordance with some embodiments.
FIGS. 4A-4I illustrate example user interfaces for presenting and modifying a pre-existing media item in accordance with some embodiments.
FIG. 5A is a diagram of a media item metadata database in accordance with some embodiments.
FIG. 5B is a diagram of a representative metadata structure for a respective media item in accordance with some embodiments.
FIGS. 6A-6C illustrate a flowchart representation of a client-side method of presenting a media item in accordance with some embodiments.
FIGS. 7A-7B illustrate a flowchart representation of a client-side method of modifying a pre-existing media item in accordance with some embodiments.
FIG. 8A-8B illustrate a flowchart representation of a server-side method of maintaining a database in accordance with some embodiments.
In accordance with common practice the various features illustrated in the drawings may not be drawn to scale. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may not depict all of the components of a given system, method or device. Finally, like reference numerals may be used to denote like features throughout the specification and figures.
DETAILED DESCRIPTIONNumerous details are described herein in order to provide a thorough understanding of the example implementations illustrated in the accompanying drawings. However, some embodiments may be practiced without many of the specific details, and the scope of the claims is only limited by those features and aspects specifically recited in the claims. Furthermore, well-known methods, components, and circuits have not been described in exhaustive detail so as not to unnecessarily obscure more pertinent aspects of the implementations described herein.
As shown inFIG. 1, an application for generating, exploring, and presenting media items is implemented in a server-client environment100 in accordance with some embodiments. In some embodiments, the application includes client-side processing102-1,102-2 (hereinafter “client-side module102”) executed on a client device104-1,104-2 and server-side processing106 (hereinafter “server-side module106”) executed on aserver system108. Client-side module102 communicates with server-side module106 through one ormore networks110. Client-side module102 provides client-side functionalities associated with the application (e.g., creation and presentation of media items) such as client-facing input and output processing and communications with server-side module106. Server-side module106 provides server-side functionalities associated with the application (e.g., generating metadata structures for, storing portions of, and causing/directing presentation of media items) for any number ofclient modules102 each residing on arespective client device104.
In some embodiments, server-side module106 includes one ormore processors112,media files database114, mediaitem metadata database116, an I/O interface to one ormore clients118, and an I/O interface to one or moreexternal services120. I/O interface to one ormore clients118 facilitates the client-facing input and output processing for server-side module106. One ormore processors112 receive requests from client-side module102 to create media items or obtain media items for presentation.Media files database114 stores media files, such as images and/or video clips, associated with media items, and mediaitem metadata database116 stores a metadata structure for each media item, where each metadata structure associates one or more media files and at least a portion of an audio track with a media item. In some embodiments,media files database114 and mediaitem metadata database116 are communicatively coupled with but located remotely fromserver system116. In some embodiments,media files database114 and mediaitem metadata database116 are located separately from one another. In some embodiments, server-side module106 communicates with one or more external services such asaudio sources124a. . .124n(e.g., streaming audio service providers such as Spotify, SoundCloud, Rdio, Pandora, and the like) andmedia file sources126a. . .126n(e.g., service provider of images and/or video such as YouTube, Vimeo, Vine, Flickr, Imgur, and the like) through one ormore networks110. I/O interface to one or moreexternal services120 facilitates such communications.
Examples ofclient device104 include, but are not limited to, a handheld computer, a wearable computing device (e.g., Google Glass or a smart watch), a biologically implanted computing device, a personal digital assistant (PDA), a tablet computer, a laptop computer, a desktop computer, a cellular telephone, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a media player, a navigation device, a game console, a television, a remote control, or a combination of any two or more of these data processing devices or other data processing devices.
Examples of one ormore networks110 include local area networks (“LAN”) and wide area networks (“WAN”) such as the Internet. One ormore networks110 are, optionally, implemented using any known network protocol, including various wired or wireless protocols, such as Ethernet, Universal Serial Bus (USB), FIREWIRE, Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth, Wi-Fi, voice over Internet Protocol (VoIP), Wi-MAX, or any other suitable communication protocol.
In some embodiments,server system108 is managed by the provider of the application for generating, exploring, and presenting media items.Server system108 is implemented on one or more standalone data processing apparatuses or a distributed network of computers. In some embodiments,server system108 also employs various virtual devices and/or services of third party service providers (e.g., third-party cloud service providers) to provide the underlying computing resources and/or infrastructure resources ofserver system108.
Although server-client environment100 shown inFIG. 1 includes both a client-side portion (e.g., client-side module102) and a server-side portion (e.g., server-side module106), in some embodiments, the application is implemented as a standalone application installed onclient device104. In addition, the division of functionalities between the client and server portions can vary in different embodiments. For example, in some embodiments, client-side module102 is a thin-client that provides only user-facing input and output processing functions, and delegates all other data processing functionalities to a backend server (e.g., server system108).
FIG. 2 is a block diagram illustrating arepresentative client device104 associated with a user in accordance with some embodiments.Client device104, typically, includes one or more processing units (CPUs)202, one ormore network interfaces204,memory206, and one ormore communication buses208 for interconnecting these components (sometimes called a chipset).Client device104 also includes a user interface210. User interface210 includes one ormore output devices212 that enable presentation of media content, including one or more speakers and/or one or more visual displays. User interface210 also includes one ormore input devices214, including user interface components that facilitate user input such as a keyboard, a mouse, a voice-command input unit or microphone, an accelerometer, a gyroscope, a touch-screen display, a touch-sensitive input pad, a gesture capturing camera, or other input buttons or controls. Furthermore, someclient devices104 use a microphone and voice recognition, a camera and gesture recognition, a brainwave sensor/display, or biologically implanted sensors/displays (e.g. digital contact lenses, fingertip/muscle implants, and so on) to supplement or replace the keyboard, display, or touch screen.Memory206 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices.Memory206, optionally, includes one or more storage devices remotely located from one ormore processing units202.Memory206, or alternatively the non-volatile memory device(s) withinmemory206, includes a non-transitory computer readable storage medium. In some implementations,memory206, or the non-transitory computer readable storage medium ofmemory206, stores the following programs, modules, and data structures, or a subset or superset thereof:
- operating system216 including procedures for handling various basic system services and for performing hardware dependent tasks;
- network communication module218 for connectinguser device104 to other computing devices (e.g.,server system108,audio sources124a. . .124n, andmedia file sources126a. . .126n) connected to one ormore networks110 via one or more network interfaces204 (wired or wireless);
- presentation module220 for enabling presentation of information (e.g., a media item, a user interface for an application or a webpage, audio and/or video content, text, etc.) atclient device104 via one or more output devices212 (e.g., displays, speakers, etc.) associated with user interface210; and
- input processing module222 for detecting one or more user inputs or interactions from one of the one ormore input devices214 and interpreting the detected input or interaction.
In some embodiments,memory206 also includes a client-side module102 associated with an application for creating, exploring, and playing back media items that includes, but is not limited to:
- detectingmodule224 for detecting one or more user inputs corresponding to the application;
- requestingmodule226 for querying a server (e.g., server system108) for a media item;
- receivingmodule228 for receiving, fromserver system108, one or more media files (e.g., one or more video clips and/or one or more images) and information identifying at least a portion of an audio track associated with the requested media item;
- determiningmodule230 for determining a source for the audio track associated with the media item;
- obtainingmodule232 for obtaining at least the portion of the audio track associated with the audio track;
- presentingmodule234 for presenting the requested media item via one ormore output devices212 by displaying the one or more media files associated with the media item on the display and playing back at least the portion of the audio track via the one or more speakers associated with the media item;
- synchronizingmodule236 for synchronizing at least the portion of the audio track with the one or more media files;
- effects module238 for applying audio and/or video effects while displaying the one or more media files and/or playing back at least the portion of the audio track;
- sharing module240 for sharing the media item via one or more sharing methods (e.g., email, SMS, social media outlets, etc.);
- modifyingmodule242 for modifying a pre-existing media item so as to generate a new media item based on the pre-existing media item; and
- publishing module244 for publishing the new media item.
In some embodiments,memory206 also includesclient data250 for storing data for the application.Client data250 includes, but is not limited to:
- audio buffer252 for buffering at least the portion of the obtained audio track for playback;
- video buffer254 for buffering the one or more media files received fromserver system108 for display;
- video library256 storing one or more pre-existing video clips recorded prior to executing the application;
- image library258 storing one or more pre-existing images captured prior to executing the application;
- audio library260 storing one or more pre-existing audio tracks created or stored prior to executing the application;
- effects library262 including functions for implementing one or more real-time or post-processed audio and/or video effects (e.g., OpenGL Shading Language (GLSL) shaders); and
- user profile264 including a plurality of preferences associated with the application for the user ofclient device104.
Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, modules or data structures, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations,memory206, optionally, stores a subset of the modules and data structures identified above. Furthermore,memory206, optionally, stores additional modules and data structures not described above.
FIG. 3 is a block diagram illustratingserver system108 in accordance with some embodiments.Server system108, typically, includes one or more processing units (CPUs)112, one or more network interfaces304 (e.g., including I/O interface to one ormore clients118 and I/O interface to one or more external services120),memory306, and one ormore communication buses308 for interconnecting these components (sometimes called a chipset).Memory306 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices.Memory306, optionally, includes one or more storage devices remotely located from one ormore processing units112.Memory306, or alternatively the non-volatile memory device(s) withinmemory306, includes a non-transitory computer readable storage medium. In some implementations,memory306, or the non-transitory computer readable storage medium ofmemory306, stores the following programs, modules, and data structures, or a subset or superset thereof:
- operating system310 including procedures for handling various basic system services and for performing hardware dependent tasks;
- network communication module312 that is used for connectingserver system108 to other computing devices (e.g.,client devices104,audio sources124a. . .124n, andmedia file sources126a. . .126n) connected to one ormore networks110 via one or more network interfaces304 (wired or wireless);
- a server-side module106 associated with the application for generating, exploring, and presenting media items that includes, but is not limited to:
- receivingmodule314 for receiving a request, fromclient device104, to playback a media item or for receiving at least a portion of the modified metadata structure;
- transmittingmodule318 for transmitting, toclient device104, one or more media files (e.g., one or more video clips and/or a sequence of one or more images) and information identifying at least a portion of an audio track associated with the requested media item; and
- maintainingmodule320 for maintaining mediaitem metadata database116, including, but not limited to:
- updatingmodule322 for updating one or more fields, tables, and/or entries in a metadata structure associated with a respective media item (e.g., play count, likes, shares, comments, associated media items, and so on);
- generatingmodule324 for generating a metadata structure for a new media item and appending a new node associated with the new media item to a corresponding family tree;
- analyzingmodule326 for analyzing the audio track and the one or more media files associated with the new media item; and
- determiningmodule328 determining whether the analyzed audio track and one or more media files match one of the reference audio tracks and/or video clips inreference database344;
- modifyingmodule330 for flattening the new media item into a single stream or digital media item or for re-encoding media items for different formats and bit rates;
- effects module332 for receiving and transmitting video and/or audio effects as scripts or computer-readable instructions (e.g., GLSL shaders for use with OpenGL ES) augmented with effect metadata corresponding to effect type, effect version, content, effect parameters, and so on;
- server data340, including but not limited to:
- media files database114 storing one or more media files (e.g., images and/or video clips);
- mediaitem metadata database116 storing a metadata structure for each media item, where each metadata structure associates one or more media files and at least a portion of an audio track with a media item;
- effects database342 storing one or more real-time or post-processed audio and/or video effects as scripts or computer-readable instructions (e.g., GLSL shaders for use with OpenGL ES) augmented with effect metadata corresponding to effect type, effect version, content, effect parameters, a table mapping of interactive input modalities to effect parameters for real-time effect interactivity, and so on; and
- reference database344 storing a plurality of reference audio tracks and video clips and associated preferences.
Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations,memory306, optionally, stores a subset of the modules and data structures identified above. Furthermore,memory306, optionally, stores additional modules and data structures not described above.
Attention is now directed towards embodiments of user interfaces and associated processes that may be implemented on arespective client device104 with one ormore speakers402 enabled to output sound, zero ormore microphones404 enabled to receive sound input, and atouch screen406 enabled to receive one or more contacts and display information (e.g., media content, webpages and/or user interfaces for an application).FIGS. 4A-4I illustrate example user interfaces for presenting and modifying a pre-existing media item in accordance with some embodiments.
Although some of the examples that follow will be given with reference to inputs on touch screen406 (where the touch sensitive surface and the display are combined), in some embodiments, the device detects inputs on a touch-sensitive surface that is separate from the display. In some embodiments, the touch sensitive surface has a primary axis that corresponds to a primary axis on the display. In accordance with these embodiments, the device detects contacts with the touch-sensitive surface at locations that correspond to respective locations on the display. In this way, user inputs detected by the device on the touch-sensitive surface are used by the device to manipulate the user interface on the display of the device when the touch-sensitive surface is separate from the display. It should be understood that similar methods are, optionally, used for other user interfaces described herein.
Additionally, while the following examples are given primarily with reference to finger inputs (e.g., finger contacts, finger tap gestures, finger swipe gestures, etc.), it should be understood that, in some embodiments, one or more of the finger inputs are replaced with input from another input device (e.g., a mouse based input or stylus input). For example, a swipe gesture is, optionally, replaced with a mouse click (e.g., instead of a contact) followed by movement of the cursor along the path of the swipe (e.g., instead of movement of the contact). As another example, a tap gesture is, optionally, replaced with a mouse click while the cursor is located over the location of the tap gesture (e.g., instead of detection of the contact followed by ceasing to detect the contact). Similarly, when multiple user inputs are simultaneously detected, it should be understood that multiple computer mice are, optionally, used simultaneously, or a mouse and finger contacts are, optionally, used simultaneously.
FIGS. 4A-4Ishow user interface408 displayed on client device104 (e.g., a mobile phone) for an application for generating, exploring, and presenting media items; however, one skilled in the art will appreciate that the user interfaces shown inFIGS. 4A-4I may be implemented on other similar computing devices. The user interfaces inFIGS. 4A-4I are used to illustrate the processes described herein, including the processes described with respect toFIGS. 6A-6C and7A-7B.
FIG. 4A illustratesclient device104 displaying a user interface for a feed view of the application that includes a feed of media items ontouch screen406. InFIG. 4A, the user interface includes a plurality of media item affordances410 corresponding to media items generated by users in a community of users andsearch query box416 configured to enable the user ofclient device104 to search for media items. In some embodiments, media affordances410 corresponding to sponsored media items are displayed at the top or near the top of the feed of media items. In some embodiments, advertisements are concurrently displayed with the feed of media items such as banner advertisements or advertisements in a side region of the user interface. In some embodiments, one or more of media item affordances410 correspond to media items that are advertisements. InFIG. 4A, each of media item affordances410 includes atitle412 of the corresponding media item and arepresentation414 of the user in the community of users who authored the corresponding media item. For example, each ofrepresentations414 includes an image associated with the author of the media item (e.g., a headshot or avatar) or an identifier, name, or handle associated with the author of the media item. In some embodiments, arespective representation414, when activated (e.g., by a touch input from the user), causesclient device104 to display a profile associated with the author of the corresponding media item.
InFIG. 4A, the user interface also includesnavigation affordance418, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a navigation panel for navigating between user interfaces of the application (e.g., one or more of a feed view, user profile, user media items, friends view, exploration view, settings, and so on) andcreation affordance420, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a first user interface of a process for generating a media item. For further description of the process for generating a media item see U.S. Provisional Patent Application No. 61/934,665, Attorney Docket No. 103337-5002, entitled “Methods and Devices for Touch-Based Media Creation,” filed Jan. 31, 2014, which is hereby incorporated by reference in its entirety. InFIG. 4A, the user interface includes a portion of media item affordances410-gand410-hindicating that the balance of the media items can be viewed by scrolling downwards in the feed view.FIG. 4A also illustratesclient device104 detectingcontact422 at a location corresponding to media item affordance410-b.
FIG. 4B illustratesclient device104 presenting a respective media item ontouch screen406 that corresponds to media item affordance410-bin response to detectingcontact422 selecting media item affordance410-binFIG. 4A. InFIG. 4B, the user interface includesinformation affordance424, which, when activated (e.g., by a touch input from the user), causesclient device104 to display an informational user interface (e.g., the user interface inFIG. 4C) with information and one or more options associated with the respective media item andrepresentation426, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a profile associated with the author of the respective media item. For example,representation426 is an image associated with the author of the respective media item (e.g., a headshot or avatar) or an identifier, name, or handle associated with the author of the respective media item. InFIG. 4B, the user interface also includeshashtags428 associated with the respective media item,remix affordance430, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a remix panel (e.g.,remix options458 inFIG. 4E) for modifying the respective media item, and likeaffordance432, which, when activated (e.g., by a touch input from the user), causesclient device104 to send a notification toserver system108 to update a like field in the metadata structure associated with the respective media item (e.g., likesfield530 inFIG. 5B). For example, in response to receiving the notification,server system108 or a component thereof (e.g., updatingmodule322,FIG. 3) updates likesfield530, as shown inFIG. 5B, in a metadata structure associated with the media item to reflect the notification. For example, in response to detectingcontact422 selecting media item affordance410-binFIG. 4A,client device104 sends a notification toserver system108 to update a play count field in the metadata structure associated with the respective media item (e.g., playcount field526 inFIG. 5B). In this example, in response to receiving the notification,server system108 or a component thereof (e.g., updatingmodule322,FIG. 3) updates playcount field526, as shown inFIG. 5B, in a metadata structure associated with the media item to reflect the notification.FIG. 4B also illustratesclient device104 detectingcontact434 at a location corresponding toinformation affordance424.
In some embodiments, advertisements are concurrently displayed with the respective media item such as banner advertisements or advertisements in a side region of the user interface. In some embodiments, owners of copyrighted audio tracks and video clips upload at least a sample of the audio tracks and video clips to reference database344 (FIG. 3) associated with the provider of the application. For example, prior to or while presenting the respective media item,server system108 or a component thereof (e.g., analyzingmodule326,FIG. 3) analyzes the one or more audio tracks and one or more video clips associated with the respective media item to determine a digital fingerprint for the one or more audio tracks and one or more video clips. In some embodiments, whenserver system108 or a component thereof (e.g., determiningmodule328,FIG. 3) determines that the digital fingerprint for the one or more audio tracks and one or more video clips associated with the respective media item matches copyrighted audio tracks and/or video clips inreference database344,server system108 or a component thereof is configured to share advertising revenue with the owners of copyrighted audio tracks and/or video clips.
FIG. 4C illustratesclient device104 displaying the informational user interface associated with the respective media item ontouch screen406 in response to detectingcontact434 selectinginformation affordance424 inFIG. 4B. InFIG. 4C, the informational user interface comprises information associated with the respective media item, including:representation426 associated with the author of the respective media item;title440 of the respective media item; number ofviews442 of the respective media item; date/time444 on which the respective media item was authored; and number oflikes446 of the respective media item. InFIG. 4C, the informational user interface also includespre-existing hashtags428 associated with the respective media item andtext entry box448 for adding a comment or hashtag to the respective media item. For example, when a user adds a comment or hashtag,client device104 sends a notification toserver system108 to update a comment field in the metadata structure associated with the respective media item (e.g., commentsfield538 inFIG. 5B). In this example, in response to receiving the notification,server system108 or a component thereof (e.g., updatingmodule322,FIG. 3) updates commentsfield538, as shown inFIG. 5B, in a metadata structure associated with the media item to reflect the notification.
InFIG. 4C, the informational user interface further includes one or more options associated with the respective media. InFIG. 4C, shareaffordance450, when activated (e.g., by a touch input from the user), causesclient device104 to display a sharing panel with a plurality of options for sharing the respective media item (e.g., affordances for email, SMS, social media outlets, etc.),flag affordance452, when activated (e.g., by a touch input from the user), causesclient device104 to send a notification toserver system108 to flag the respective media item (e.g., for derogatory, inappropriate, or potentially copyrighted content), and likeaffordance432, when activated (e.g., by a touch input from the user), causesclient device104 to send a notification toserver system108 to update a like field in the metadata structure associated with the respective media item (e.g., likesfield530 inFIG. 5B). InFIG. 4C, the informational user interface additionally includes backnavigation affordance436, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a previous user interface (e.g., the user interface inFIG. 4B).FIG. 4C also illustratesclient device104 detectingcontact454 at a location corresponding to backnavigation affordance436.
FIG. 4D illustratesclient device104 presenting the respective media item ontouch screen406 that corresponds to media item affordance410-bin response to detectingcontact454 selecting backnavigation affordance436 inFIG. 4C.FIG. 4D also illustratesclient device104 detectingcontact456 at a location corresponding to remixaffordance430.
FIG. 4E illustratesclient device104 displayingremix options458 over the respective media item being presented ontouch screen406 in response to detectingcontact456 selectingremix affordance430 inFIG. 4D. InFIG. 4E,remix options458 includes:affordance460 for adding, removing, and/or modifying audio and/or video effect associated with the respective media item;affordance462 for adding and/or removing one or more video clips associated with the respective media item;affordance464 for adding and/or removing one or more audio tracks associated with the respective media item; andaffordance466, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a family tree user interface associated with the respective media item (e.g., the user interface inFIG. 4F).FIG. 4E also illustratesclient device104 detectingcontact468 at a location corresponding toaffordance466.
Alternatively, in some embodiments, in response to detectingcontact456 selectingremix affordance430 inFIG. 4D,client device104 enters a remix mode for editing the respective media item. In the remix mode,client device104 displays a sequence of representations corresponding to the one or more video clips comprising the respective media item. While in the remix mode, the user ofclient device104 is able to remove or reorder video clips associated with the respective media item by performing one or more gestures with respect to the representations in the sequence of representations. Furthermore, while in the remix mode, the user ofclient device104 is able to shoot one or more additional video clips, apply different audio and/or video effects, and/or change the audio track associated with the respective media item.
FIG. 4F illustratesclient device104 displaying the family tree user interface associated with the respective media item ontouch screen406 in response to detectingcontact468 selectingaffordance466 inFIG. 4E. InFIG. 4F, the family tree user interface includesfamily tree468 associated with the respective media item. InFIG. 4F,family tree468 includes genesis node (e.g., node470-a) corresponding to a root media item (i.e., the original media item) forfamily tree468 and a plurality of leaf nodes (e.g., nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k, and470-l) corresponding to media items that are modified versions of the root media item. In some embodiments, the user ofclient device104 is able to view and/or modify the characteristics associated with any of the nodes infamily tree468 by selecting a node (e.g., with a tap gesture). InFIG. 4F, the dotted oval surrounding node470-bindicates the currently selected node, i.e., node470-bcorresponding to the respective media item.
In some embodiments, each of the leaf nodes infamily tree468 are associated with one parent node and zero or more leaf nodes. For example, with respect to node470-bcorresponding to the respective media item, genesis node470-ais its parent node and leaf nodes470-dand470-eare its child nodes. InFIG. 4F, the family tree user interface also includes backnavigation affordance436, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a previous user interface (e.g., the user interface inFIG. 4D),navigation affordance418, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a navigation panel for navigating between user interfaces of the application (e.g., one or more of a feed view, user profile, user media items, friends view, exploration view, settings, and so on), andcreation affordance420, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a first user interface of a process for generating a media item. InFIG. 4F, the family tree user interface further includesrecreation affordance472, which, when activated (e.g., by a touch input from the user), causesclient device104 to present an evolutionary history or a step-by-step recreation of modifications from the genesis node to the currently selected node.FIG. 4F also illustratesclient device104 detectingcontact474 at a location corresponding to node470-g.
FIG. 4G illustratesclient device104 displayingremix panel476 in the family tree user interface ontouch screen406 in response to detectingcontact474 selecting node470-ginFIG. 4F. InFIG. 4G, the dotted oval surrounding node470-gindicates the currently selected node. InFIG. 4G,remix panel476 enables the user ofclient device104 to view and/or modify the characteristics (e.g., audio and/or video effects, video clip(s), and audio track(s)) of the media item associated with node470-g. InFIG. 4G,remix panel476 includes audio and/orvideo effects region478, video clip(s)region482, and audio track(s)region486. InFIG. 4G, audio and/orvideo effects region478 includes affordances for removing or modifying effects480-aand480-bassociated with the media item corresponding to node470-gand affordance481 for adding one or more additional audio and/or video effect to the media item corresponding to node470-g. InFIG. 4G, video clip(s)region482 includes affordances for removing or modifying video clip484-aassociated with the media item corresponding to node470-gandaffordance485 for adding one or more video clips to the media item corresponding to node470-g. For example, the user ofclient device104 is able to shoot one or more additional video clips or select one or more additional pre-existing video clips from a media file source126 (e.g., YouTube, Vimeo, etc.). InFIG. 4G, audio track(s)region486 includes affordances for removing or modifying audio track488-aassociated with the media item corresponding to node470-gandaffordance489 for adding one or more audio tracks to the media item corresponding to node470-g. For example, the user ofclient device104 is able to select one or more additional pre-existing audio tracks from audio library260 (FIG. 2) and/or a media file source126 (e.g., SoundCloud, Spotify, etc.).FIG. 4G also illustratesclient device104 detectingcontact490 at a location corresponding to the modify affordance for effect480-a. For example, in response to detectingcontact490 selecting modify affordance for effect480-a, the user ofclient device104 is able to modify one or more parameters associated with effect480-asuch as the effect type, effect version; the start time (t1) for effect480-a, the end time (t2) for effect480-a, and/or one or more preset parameters (p1, p2, . . . ) for effect480-a.
Alternatively, in some embodiments, in response to detectingcontact474 selecting node470-ginFIG. 4F,client device104 enters a remix mode for editing the media item corresponding to node470-g. In the remix mode, client device presents the media item corresponding to node470-gand displays a sequence of representations corresponding to the one or more video clips comprising the media item corresponding to node470-g. While in the remix mode, the user ofclient device104 is able to remove or reorder video clips associated with the media item by performing one or more gestures with respect to the representations in the sequence of representations. Furthermore, while in the remix mode, the user ofclient device104 is able to shoot one or more additional video clips, apply different audio and/or video effects, and/or change the audio track associated with the media item.
FIG. 4H illustratesclient device104 displaying a preview of the modified media item ontouch screen406 that was created inFIG. 4G from the media item corresponding to node470-g. InFIG. 4H, the user interface includes backnavigation affordance436, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a previous user interface (e.g., the user interface inFIG. 4G),navigation affordance418, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a navigation panel for navigating between user interfaces of the application (e.g., one or more of a feed view, user profile, user media items, friends view, exploration view, settings, and so on), andcreation affordance420, which, when activated (e.g., by a touch input from the user), causesclient device104 to display a first user interface of a process for generating a media item. InFIG. 4H, the user interface also includes publishaffordance492, which, when activated (e.g., by a touch input from the user), causesclient device104 to display an updated family tree user interface (e.g., the user interface inFIG. 4I) and to cause the modified media item to be published.FIG. 4H also illustratesclient device104 detectingcontact494 at a location corresponding to publishaffordance492. In some embodiments, client device causes the modified media item to be published by sending, toserver system108, first information identifying the one or more audio tracks (e.g., audio track488-a) associated with the modified media item, second information identifying one or more media files (e.g., video clip484-a) associated with the modified media item, and third information identifying the one or more audio and/or video effects (e.g., the modified version of effect480-aand effect480-b) associated with the modified media item.
FIG. 4I illustratesclient device104 displaying the updated family tree user interface ontouch screen406 in response to detectingcontact494 selecting publishaffordance492 inFIG. 4H. InFIG. 4I, the dotted oval surrounding node470-mindicates the currently selected node that corresponds to the modified media item created inFIG. 4G from the media item corresponding to node470-g. For example, with respect to node470-m, node470-gis its parent node and it has no child nodes.
FIG. 5A is a diagram of mediaitem metadata database116 in accordance with some embodiments. In some embodiments, mediaitem metadata database116 is maintained byserver system108 or a component thereof (e.g., maintainingmodule320,FIG. 3) and stores a metadata structure for each media item generated by a user in the community of users of the application. In some embodiments, mediaitem metadata database116 is divided into a plurality ofmetadata regions502. In some embodiments, eachmetadata region502 is associated with a root media item (e.g., an original media item) and includes a family tree for the root media item. In some embodiments, a respective family tree (e.g.,family tree468,FIG. 4I) is composed of a genesis node (e.g., node470-a,FIG. 4I) corresponding to the root media item and a plurality of leaf nodes (e.g., nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k,470-l, and470-m,FIG. 4I) corresponding to media items that are modified versions of the root media item. To this end, eachmetadata region502 includes a metadata structure for each node in the family tree to which it is associated. For example, metadata region502-a, inFIG. 5A is associated withfamily tree468 inFIG. 4I. In this example, metadata structures504-a. . .504-min metadata region502-acorrespond to each of the nodes in family tree468 (i.e., nodes470-a. . .470-m). One of ordinary skill in the art will appreciate that mediaitem metadata database116 can be arranged in various other ways.
FIG. 5B is a diagram ofrepresentative metadata structure510 for a respective media item in accordance with some embodiments. For example, in response to receiving information from a client device indicating that a user of the client device has generated a new media item (e.g., the respective media item),server system108 generatesmetadata structure510. In some embodiments, the received information at least includes first information identifying one or more audio tracks associated with the respective media item and second information identifying one or more media files (e.g., video clips or images) associated with the respective media item. In some embodiments, the received information, optionally, includes third information identifying one or more audio and/or video effects associated with the respective media item. In some embodiments,metadata structure510 is stored in mediaitem metadata database116, as shown inFIGS. 1 and 3, and maintained byserver system108 or a component thereof (e.g., maintainingmodule320,FIG. 3).
Metadata structure510 includes a plurality of entries, fields, and/or tables including a subset or superset of the following:
- identification tag field512 includes a unique identifier for the respective media item;
- author field514 includes the identifier, name, or handle associated with the creator/author of the respective media item;
- date/time field516 includes a date and/or time stamp associated with generation of the respective media item;
- one or more media file pointer fields518 including a pointer or link (e.g., a URL) for each of the one or more media files (e.g., video clips or images) associated with the respective media item;
- one or more audio track pointer fields520 for each of the one or more audio tracks associated with the respective media item;
- one or more start time fields521 for each of the one or more audio tracks associated with the respective media item;
- effects table522 includes an entry523 for each of zero or more audio and/or video effects to be applied to the respective media item at run-time upon playback by a subsequent viewer, for example, entry523-aincludes one or more of: the identifier, name, or handle associated with the user who added the effect; the effect type; the effect version; the content (e.g., one or more media files and/or audio tracks) subjected to the effect; a start time (t1) for the effect; an end time (t2) for the effect; one or more preset parameters (p1, p2, . . . ) for the effect; a table mapping interactive input modalities to effect parameters; and an effect script or computer-readable instructions for the effect (e.g., GLSL);
- interactive effects table524 includes an entry525 for each of zero or more interactive audio and/or video effects to be controlled and manipulated at run-time by a subsequent viewer of the respective media item, for example, the entry525-aincludes one or more of: the identifier, name, or handle associated with the user who added the interactive effect; the interactive effect type; the interactive effect version; the content (e.g., one or more media files and/or audio tracks) subjected to the effect; one or more parameters (p1, p2, . . . ) for the interactive effect; and an effect script or computer-readable instructions for the interactive effect (e.g., GLSL);
- playcount field526 includes zero or more entries528 for each play back of the respective media item, for example, entry528-aincludes: the identifier, name, or handle associated with the user who played the respective media item; the date and time when the respective media item was played; and the location where the respective media item was played;
- likesfield530 includes zero or more entries532 for each like of the respective media item, for example, entry532-aincludes: the identifier, name, or handle associated with the user who liked the respective media item; the date and time when the respective media item was liked; and the location where the respective media item was liked;
- shares field534 includes zero or more entries536 for each share of the respective media item, for example, entry536-aincludes: the identifier, name, or handle associated with the user who shared the respective media item; the method by which the respective media item was shared; the date and time when the respective media item was shared; and the location where the respective media item was shared;
- comments field538 includes zero or more entries540 for each comment (e.g., a hashtag) corresponding to the respective media item, for example, entry540-aincludes: the comment; the identifier, name, or handle associated with the user who authored the comment; the date and time when the comment was authored; and the location where the comment was authored; and
- associatedmedia items field542 includes zero or more entries in aparent node sub-field544 and zero or more entries in achild node sub-field548 for each media item associated with the respective media item, for example:
- parent node sub-field544 includes entry546-acorresponding to a parent media item associated with the respective media item that includes: an identification tag for the parent media item; the identifier, name, or handle associated with the user who authored the parent media item; the date and time when the parent media item was authored; and the location where the parent media item was authored; and
- child node sub-field548 includes entry550-acorresponding to a child media item associated with the respective media item that includes: an identification tag for the child media item; the identifier, name, or handle associated with the user who authored the child media item; the date and time when the child media item was authored; and the location where the child media item was authored.
In some implementations,metadata structure510, optionally, stores a subset of the entries, fields, and/or tables identified above. Furthermore,metadata structure510, optionally, stores additional entries, fields, and/or tables not described above.
In some embodiments,identification tag field512 includes a node type identifier bit that is set for root media items/genesis nodes and unset for leaf nodes. In some embodiments, a parent or child node entry in a metadata structure links to a node in a different family tree (and, ergo, metadata region). In this way, in some embodiments, metadata structures are included in more than one metadata region as a node is linked to more than one family tree. In some embodiments, effect parameters include, but are not limited to: (x,y) position and scale of audio and/or video effects, edits, specification of interactive parameters, and so on.
For example,metadata structure510 is metadata structure504-binFIG. 5A, which corresponds to a respective media item in the family tree associated with metadata region502-a. In this example, the family tree associated with metadata region502-aisfamily tree468 inFIG. 4I, and the node corresponding to metadata structure504-bis node470-b. Continuing with this example, associatedmedia items field542 includes entry546-acorresponding to node470-ainparent node sub-field544 and entries550-aand550-bcorresponding to nodes470-dand470-einchild node sub-field548.
FIGS. 6A-6C illustrate a flowchart diagram of a client-side method600 of presenting a media item in accordance with some embodiments. In some embodiments,method600 is performed by an electronic device with one or more processors and memory. For example, in some embodiments,method600 is performed by a mobile device (e.g.,client device104,FIGS. 1-2) or a component thereof (e.g., client-side module102,FIGS. 1-2). In some embodiments,method600 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the electronic device. Optional operations are indicated by dashed lines (e.g., boxes with dashed-line borders).
The client device detects (602) a user input to play the media item, where the media item is associated with at least a portion of an audio track and one or more media files (e.g., one or more video clips and/or a sequence of one or more images). For example, inFIG. 4A,client device104 detectscontact422 at a location corresponding to media item affordance410-bto play the media item associated with media item affordance410-b. In some other embodiments, the media item is only associated with audio or video and the application generates the missing media content (e.g., audio or video content). For example, the media item is associated with at least a portion of an audio track and the application is configured to present a visualizer that is synchronized with the portion of the audio track or to match one or more video clips or a sequence of one or more images to the portion of the audio track to be synchronized with the portion of the audio track.
In response to the user input, the client device requests (604) the media item from a server. For example, in response to detectingcontact422, inFIG. 4A, at a location corresponding to media item affordance410-b,client device104 sends a request toserver system108 requesting the media item that corresponds to media item affordance410-b.
In response to the request, the client device receives (606), from the server, the one or more media files and information identifying at least the portion of the audio track. In some embodiments,client device104 receives, fromserver system108, one or more media files associated with the requested media item and a metadata structure, or a portion thereof, associated with the requested media item (e.g., including information identifying at least a portion of an audio track associated with the requested media item). In some embodiments,client device104 buffers the one or more media files received fromserver system108 in video buffer254 (FIG. 2) for display. In some embodiments,client device104 receives, fromserver system108, a metadata structure, or a portion thereof, associated with the requested media item (e.g., including information identifying one or more media files associated with the requested media item and information identifying at least a portion of an audio track associated with the requested media item). In some embodiments, a metadata structure associated with the media item is stored in media item metadata database116 (FIGS. 1 and 3) atserver system108. In some embodiments, the metadata structure associated with the media item includes a pointer to each of one or more media files associated with the media item and a pointer to each of one or more audio tracks associated with the media item. In some embodiments, a respective pointer to a media file associated with the media item points to a media file stored inmedia file database114 or available from a media file source126 (FIG. 1). In some embodiments, a respective pointer to an audio track associated with the media item points to an audio track stored in audio library260 (FIG. 2) associated with the user ofclient device104 or provided by an audio source124 (FIG. 1) (e.g., a streaming audio service provider such as Spotify, SoundCloud, Rdio, Pandora, or the like).
In some embodiments, prior to obtaining at least the portion of the audio track, the client device determines (608) whether the portion of the audio track is available in the memory of the client device or available for streaming (e.g., from a streaming audio service provider such as SoundCloud, Spotify, Rdio, etc.). In some embodiments,client device104 or a component thereof (e.g., determiningmodule230,FIG. 2) determines whether the audio track identified in the metadata structure corresponding to the media item is available in audio library260 (FIG. 2) and/or from one or more audio sources124 (FIG. 1).
In some embodiments, in accordance with a determination that the portion of the audio track is available from the streaming audio service provider, the client device provides (610) a user of the client device with an option to buy the audio track associated with the media item and/or an option to subscribe to the streaming audio service provider. In some embodiments, afterclient device104 or a component thereof (e.g., determiningmodule230,FIG. 2) determines that the audio track identified in the metadata structure for the media item is available from an audio source124 (FIG. 1),client device104 additionally presents the user ofclient device104 with the option to buy the audio track and/or to subscribe to the audio source124 from which the audio track is available. In some embodiments, upon presenting the media item,client device104 presents the user ofclient device104 with the option to buy the audio track and/or to subscribe to the audio source124 from which the audio track is available.
In some embodiments, in accordance with a determination that the portion of the audio track is available in the memory and also from the streaming audio service provider, the client device identifies (612) a user play back preference so as to determine whether to obtain the audio track from the memory or from the streaming audio service provider. In some embodiments, afterclient device104 or a component thereof (e.g., determiningmodule230,FIG. 2) determines that the audio track identified in the metadata structure for the media item is available both in audio library260 (FIG. 2) and from one or more audio sources124 (FIG. 1),client device104 identifies a play back preference in user profile262 (FIG. 2). For example, when the play back preference in user profile262 indicates that audio library260 (FIG. 2) is the default,client device104 plays back at least the portion of the audio track fromaudio library260 in synchronization with the one or more media files. For example, when the play back preference in user profile262 indicates that streaming audio is the default,client device104 plays back at least the portion of the audio track from audio source124 in synchronization with the one or more media files.
In some embodiments, in accordance with a determination that the portion of the audio track is neither available neither in the memory nor from the streaming audio service provider, the client device provides (614) a user of the client device with an option to buy the audio track associated with the media item. In some embodiments, afterclient device104 or a component thereof (e.g., determiningmodule230,FIG. 2) determines that the audio track identified in the metadata structure for the media item is neither available in audio library260 (FIG. 2) nor from one or more audio sources124 (FIG. 1),client device104 presents the user ofclient device104 with the option to buy the audio track from an audio track marketplace (e.g., Amazon, iTunes, etc.).
In some embodiments, in accordance with a determination that the portion of the audio track is neither available in the memory nor available for streaming, the client device buffers (616) a similar audio track for play back with the one or more media files, where the similar audio track is different from the audio track associated with the media item. In some embodiments, as a contingency for when the audio track is unavailable, the metadata structure associated with the media item optionally includes information identifying one or more audio tracks that are similar to the audio track associated with the media item. For example, the similar audio track is a cover of the audio track associated with the media item or has a similar music composition (e.g., similar genre, artist, instruments, notes, key, rhythm, and so on) to the audio track associated with the media item. In some embodiments, afterclient device104 or a component thereof (e.g., determiningmodule230,FIG. 2) determines that the audio track identified in the metadata structure for the media item is neither available in audio library260 (FIG. 2) nor from one or more audio sources124 (FIG. 1),client device104 obtains at least a portion of a similar audio track from a source (e.g.,audio library260 or an audio source124) and buffers at least the portion of the similar audio track in audio buffer252 (FIG. 2) for play back.
The client device obtains (618) at least the portion of the audio track based on the information identifying at least the portion of the audio track. In some embodiments, after determining a source for the audio track (e.g., audio library260 (FIG. 2) or an audio source124 (FIG.1)),client device104 or a component thereof (e.g., obtainingmodule232,FIG. 2) obtains at least the portion of the audio track from the identified source and buffers at least the portion of the audio track in audio buffer252 (FIG. 2) for play back.
The client device displays (620) the one or more media files. For example, inFIG. 4B,client device104 or a component thereof (e.g., presentingmodule234,FIG. 2) displays ontouch screen406 one or more media files associated with the media item that corresponds to media item affordance410-bselected inFIG. 4A.
While displaying the one or more media files, the client device plays back (622) at least the portion of the audio track in synchronization with the one or more media files. In some embodiments,client device104 or a component thereof (e.g., presentingmodule234,FIG. 2) plays back, via one ormore speakers402, at least a portion of an audio track associated with the media item. In some embodiments,client device104 or a component thereof (e.g., synchronizingmodule236,FIG. 2) synchronizes play back of the portion of the audio track with display of the one or more media items.
In some embodiments, the client device receives (624), from the server, synchronization information including an audio playback timestamp, where play back of the portion of the audio track starts from the audio playback timestamp. In some embodiments,client device104 or a component thereof (e.g., synchronizingmodule236,FIG. 2) synchronizes play back of the portion of the audio track with display of the one or more media items by starting play back of the portion of the audio track from the audio playback timestamp identified in the synchronization information (e.g., audio start time field521,FIG. 5B).
In some embodiments, the information identifying at least the portion of the audio track includes (626) information identifying a licensed source of the audio track, and obtaining at least the portion of the audio track based on the information identifying at least the portion of the audio track includes obtaining at least the portion of the audio track from the licensed source, where the licensed source can be the client device or a streaming audio service provider. In some embodiments, the audio track is recorded or provided by a user in the community of user associated with the application. In some embodiments, the licensed source is audio library260 (FIG. 2), which contains one or more audio tracks purchased by the user ofclient device104, or an audio source124 (e.g., a streaming audio service provider such as SoundCloud, Spotify, or the like) with licensing rights to the audio track.
In some embodiments, the client device receives (628), from the server, third information including one or more audio and/or video effects associated with the media item, and the client device applies the one or more audio and/or video effects in real-time to the portion of the audio track being played back or the one or more video clips being displayed. In some embodiments, the one or more audio and/or video effects are static, predetermined effects that are stored in effects table522 in ametadata structure510, as shown inFIG. 5B, and the one or more audio and/or video effects are applied to the one or more media files and/or the portion of the audio track at run-time. In some embodiments, the one or more audio and/or video effects are interactive effects that are stored in interactive effects table524 in ametadata structure510, as shown inFIG. 5B, and the user ofclient device104 controls and manipulates the application of one or more audio and/or video interactive effects to the one or more media files and/or the portion of the audio track in real-time upon play back. Storage of the audio and/or video effects in effects table522 and/or interactive effects table524 enables the application to maintain original, first generation media files and audio tracks in an unadulterated and high quality form and to provide an unlimited modification functionality (e.g., remix and undo).
In some embodiments, the third information includes (630) computer-readable instructions or scripts for the one or more audio and/or video effects. For example,client device104 downloads effects, fromserver system108, at run-time including computer-readable instructions or scripts for the effects written in a language such as GLSL, accompanied by effect metadata indicating effect type, effect version, effect parameters, a table mapping interactive modalities (e.g., touch, gesture, sound, vision, etc.) to effect parameters, and so on. In this way, the choice, number, and type of effect can be varied at run-time. In some embodiments, a web-based content management server (CMS) is available for the real-time browser-based authoring and uploading of effects to the server, including real-time preview of effects on video and/or audio (e.g., using technologies such as WebGL). In some embodiments, the audio and/or video effects have interactive components that can specified and customized by authors via the CMS, and then be controlled and manipulated at run-time via user inputs.
In some embodiments, the client device shares (632) the media item via one or more sharing methods. For example, shareaffordance450, inFIG. 4C, causesclient device104 to display a sharing panel with a plurality of options for sharing the respective media item (e.g., affordances for email, SMS, social media outlets, etc.). In this example, in response to detecting a user input selecting one of the options in the sharing panel,client device104 sends, toserver system108, a command to share the media item presented inFIG. 4B. Continuing with this example, in response to receiving the command,server system108 causes a link to the media item to be placed on a profile page in social media application corresponding to the user ofclient device104. In some embodiments,server system108 or a component thereof (e.g., modifyingmodule330,FIG. 3) generates a flattened version of the media item by combining the one or more audio tracks, one or more video clips, and zero or more effects associated with the media item into a single stream or digital media item. In some embodiments, the link placed on the profile page in social media application corresponds to the flattened version of the media item for web browsers.
In some embodiments, sharing the media item is accomplished by a specialized web player that recreates a subset of the functions of the application and runs in a web browser, such as some combination of: synchronizing audio and video streams from different sources during playback; applying real-time effects; allowing interaction with the player; allowing sharing and re-sharing of the media item on social networks or embedded in web pages, etc.
In some embodiments, the client device detects (634) one or more second user inputs, and, in response to detecting the one or more second user inputs, the client device modifies the media item based on the one or more second user inputs. For example,client device104 detects one or more second userinputs selecting affordance464, inFIG. 4E, to add and/or remove one or more audio tracks associated with the media item presented inFIGS. 4B and 4D that corresponds to affordance410-b. In this example, the user of client device selects a cover audio track from audio library260 (FIG. 2) or an audio source124 (FIG. 1) to replace the audio track associated with the media item. In some embodiments, this requires that the server system determine a corresponding start time (synchronization information) for the cover audio track. Continuing with this example,client device104 creates a modified media item based on the media item presented inFIGS. 4B and 4D that corresponds to affordance410-b.
In some embodiments, the client device publishes (636) the modified media item with attribution to an author of the media item. In some embodiments, in response to one or more second user inputs modifying the media item presented inFIGS. 4B and 4D that corresponds to affordance410-b,client device104 publishes the modified media item by sending, toserver system108, first information identifying the one or more audio tracks associated with the modified media item (e.g., the selected cover of the audio track associated with the media item presented inFIGS. 4B and 4D), second information identifying one or more media files associated with the modified media item, and third information identifying the one or more audio and/or video effects associated with the modified media item. In some embodiments, attribution is given to an author of individual new or modified media items and metadata. For example, with reference toFIG. 5B, each entry523 in effects table522 includes the identifier, name, or handle associated with the user who added the effect.
FIGS. 7A-7B illustrate a flowchart diagram of a client-side method700 of modifying a pre-existing media item in accordance with some embodiments. In some embodiments,method700 is performed by an electronic device with one or more processors and memory. For example, in some embodiments,method700 is performed by a mobile device (e.g.,client device104,FIGS. 1-2) or a component thereof (e.g., client-side module102,FIGS. 1-2). In some embodiments,method700 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the electronic device. Optional operations are indicated by dashed lines (e.g., boxes with dashed-line borders).
The client device displays (702) a family tree associated with a root media item including a plurality of leaf nodes stemming from a genesis node.FIG. 4F, for example, showsclient device104 displayingfamily tree468 with genesis node470-aand a plurality of leaf nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k, and470-l. In some embodiments, the root media item is a professionally created video (e.g., a music video, film clip, or advertisement) either in “flat” format or in the metadata-annotated format with media items and metadata.
The genesis node corresponds to (704) a root media item and a respective leaf node of the plurality of leaf nodes corresponds to a modified media item, where the modified media item is a modified version of the respective root media item. InFIG. 4F, for example, genesis node470-acorresponds to a root media item (i.e., the original media item) forfamily tree468 and leaf nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k, and470-lcorrespond to media items that are modified versions of the root media item.
The genesis node corresponding to (706) the root media item and the respective leaf node corresponding to the first modified media item include metadata structures, where a respective metadata structure includes first information identifying one or more audio tracks, second information identifying one or more media files, and third information identifying zero or more audio and/or video effects. In some embodiments, mediaitem metadata database116 stores a metadata structure for each media item generated by a user in the community of users of the application. For example, metadata region502-aof mediaitem metadata database116, inFIG. 5A, corresponds tofamily tree468, and metadata structures504-a, . . . ,504-mcorresponds to nodes470-a, . . . ,470-moffamily tree468 inFIG. 51. In this example,metadata structure510, inFIG. 5B, corresponds to metadata structure504-binFIG. 5A, which corresponds to a respective media item in the family tree associated with metadata region502-a. Continuing with this example, the family tree associated with metadata region502-aisfamily tree468 inFIG. 4I, and the node corresponding to metadata structure504-bis node470-b.Metadata structure510, inFIG. 5B, includes one or more audio track pointer fields520 for each of the one or more audio tracks associated with the media item, one or more media file pointer fields520 for each of the one or more media files associated with the media item, and effects table522 with entries523 for each of zero or more audio and/or video effects to be applied to the respective media item at run-time.
The client device detects (708) a first user input selecting one of the nodes in the family tree. For example, inFIG. 4F,client device104 detectscontact474 selecting node470-ginfamily tree468. Alternatively, in some embodiments,client device104 detects a first user input to modify or remix a media item, where the family tree is not displayed or otherwise visualized. For example, with respect toFIG. 4D,client device104 detectscontact456 selectingremix affordance430 to modify the respective media item being presented inFIGS. 4B and 4D.
In response to detecting the first user input, the client device displays (710) a user interface for editing a media item corresponding to the selected node. For example, inFIG. 4G,client device104displays remix panel476 in the family tree user interface in response to detectingcontact474 selecting node470-ginFIG. 4F. For example,remix panel476 enables the user ofclient device104 to re-order, add, or remove one or more audio tracks and/or one or more video clips associated with the media item corresponding to node470-g, or to add, remove, or modify one or more audio and/or video effects associated with the media item corresponding to node470-g.
The client device detects (712) one or more second user inputs modifying the media item corresponding to the selected node. For example, in response to detectingcontact490, inFIG. 4G, selecting modify affordance for effect480-a, the user ofclient device104 is able to modify one or more parameters associated with effect480-asuch as the effect type, the effect version, the start time (t1) for effect480-a, the end time (t2) for effect480-a, and/or one or more preset parameters (p1, p2, . . . ) for effect480-a.
In response to detecting the one or more second user inputs (714), the client device modifies (716) a metadata structure associated with the media item that corresponds to the selected node so as to generate modified metadata associated with a new media item. For example, in response to detecting the one or more second user inputs modifying one or more parameters associated with effect480-a,client device104 or a component thereof (e.g., modifyingmodule242,FIG. 2) modifies an entry corresponding to effect480-ain the effects table of the metadata structure for node470-gso as to generate modified metadata associated with a new media item.
In response to detecting the one or more second user inputs (714), the client device transmits (718), to a server, at least a portion of the modified metadata associated with the new media item. In some embodiments, in response to detecting the one or more second user inputs modifying one or more parameters associated with effect480-a,client device104 or a component thereof (e.g.,publishing module244,FIG. 2) transmits at least a portion of the modified metadata toserver system108. For example, after modifying a pre-existing media item corresponding to node470-ginfamily tree468, inFIG. 4G, so as to generate a new media item,client device104 publishes the new media item by sending, toserver system108, first information identifying the one or more audio tracks associated with the new media item (e.g., audio track488-a), second information identifying one or more media files associated with the new media item (e.g., video clip484-a), and third information identifying the one or more audio and/or video effects of associated with the new media item (e.g., modified effect480-aand effect480-b).
In some embodiments, the client device presents (720) an evolutionary history from the genesis node to the selected node, where nodes of the family tree are used to replay step-by-step creation of the selected node in real-time. For example, with respect toFIG. 4I, client device detects a user input selectingrecreation affordance472. In this example, in response to detecting the user input selectingrecreation affordance472,client device104 presents an evolutionary history or a step-by-step recreation of modifications from the genesis node (e.g., node470-a) to the currently selected node (e.g., node470-m).
FIGS. 8A-8B illustrate a flowchart diagram of a server-side method800 of maintaining a database in accordance with some embodiments. In some embodiments,method800 is performed by an electronic device with one or more processors and memory. For example, in some embodiments,method800 is performed by a server (e.g.,server system108,FIGS. 1 and 3) or a component thereof (e.g., server-side module106,FIGS. 1 and 3). In some embodiments,method800 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the electronic device. Optional operations are indicated by dashed lines (e.g., boxes with dashed-line borders).
The server maintains (802) a database for a plurality of root media items. In some embodiments,server system108 or a component thereof (e.g., maintainingmodule320,FIG. 3) maintains mediaitem metadata database116 for a plurality of root media items. In some embodiments, mediaitem metadata database116 stores a metadata structure for each media item generated by a user in the community of users of the application. InFIG. 5A, for example, each ofmetadata regions502 correspond to a root media item and include metadata structures for the root media item and modified versions of the root media item that comprise a family tree of the root media item.
A respective root media item is associated with (804) a family tree that includes a genesis node and a plurality of leaf nodes. For example,family tree468, inFIG. 4I, includes genesis node470-a, which corresponds to the root media item, and a plurality of leaf nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k, and470-l. In some embodiments, the root media item is a professionally created video (e.g., a music video, film clip, or advertisement) either in “flat” format or in the metadata-annotated format with media items and metadata.
The genesis node corresponds to (806) the respective root media item and a respective leaf node of the plurality of leaf nodes corresponds to a first modified media item, where the first modified media item is a modified version of the respective root media item. InFIG. 4I, for example, genesis node470-acorresponds to a root media item (i.e., the original media item) forfamily tree468 and leaf nodes470-b,470-c,470-d,470-e,470-f,470-g,470-h,470-i,470-j,470-k,470-l, and470-mcorrespond to media items that are modified versions of the root media item.
The genesis node corresponding to the respective root media item and the respective leaf node corresponding to the first modified media item include (808) metadata structures, where a respective metadata structure includes first information identifying one or more audio tracks, second information identifying one or more media files, and third information identifying zero or more audio and/or video effects. For example, metadata region502-aof mediaitem metadata database116, inFIG. 5A, corresponds tofamily tree468, and metadata structures504-a. . .504-mcorresponds to nodes470-a. . .470-moffamily tree468 inFIG. 51. In this example, the family tree associated with metadata region502-aisfamily tree468 inFIG. 4I, and the node corresponding to metadata structure504-bis node470-b. Continuing with this example,metadata structure510, inFIG. 5B, corresponds to metadata structure504-binFIG. 5A, andmetadata structure510 includes one or more audio track pointer fields520 for each of the one or more audio tracks associated with the media item, one or more media file pointer fields520 for each of the one or more media files associated with the media item, and effects table522 with entries523 for each of zero or more audio and/or video effects to be applied to the respective media item at run-time.
The server receives (810), from a client device, at least a portion of a modified metadata corresponding to a second modified media item, where the second modified media item is a modified version of a media item corresponding to a respective node in the family tree (e.g., adding or removing audio/video, or adding, removing, or modifying audio and/or video effects associated with the respective node). For example,server system108 or a component thereof (e.g., receivingmodule314,FIG. 3) receives at least a portion of modified metadata associated with a new media item created in response toclient device104 detecting the one or more second user inputs (e.g., includingcontact490 inFIG. 4G) modifying one or more parameters associated with effect480-aof the media item corresponding to node470-g. In this example, the portion of the modified metadata includes first information identifying the one or more audio tracks associated with the new media item (e.g., audio track488-a), second information identifying one or more media files associated with the new media item (e.g., video clip484-a), and third information identifying the one or more audio and/or video effects of associated with the new media item (e.g., modified effect480-aand effect480-b).
In some embodiments, the modified metadata corresponding to the second modified media item includes (812) addition or removal of first information identifying one or more audio tracks from a metadata structure corresponding to the respective node. In some embodiments, the first information in the modified metadata associated with the new media item includes additional audio tracks or ceases to include audio tracks in comparison to the first information in the metadata structure associated with the media item that corresponds to the respective node (e.g., node470-ginFIG. 4G).
In some embodiments, the modified metadata corresponding to the second modified media item includes (814) addition or removal of second information identifying one or more media files from a metadata corresponding to the respective node. In some embodiments, the second information in the modified metadata structure associated with the new media item includes additional video clips or ceases to include video clips in comparison to the second information in the metadata structure associated with the media item that corresponds to the respective node (e.g., node470-ginFIG. 4G).
In some embodiments, the modified metadata corresponding to the second modified media item includes (816) addition, removal, or modification of third information identifying zero or more audio and/or video effects from a metadata structure corresponding to the respective node. In some embodiments, the third information in the modified metadata associated with the new media item includes additional audio and/or video effects, ceases to include audio and/or video effects, or includes modified audio and/or video effects in comparison to the third information in the metadata structure associated with the media item that corresponds to the respective node (e.g., node470-ginFIG. 4G).
In response to receiving at least the portion of the modified metadata corresponding to the second modified media item, appends (818), to the family tree, a new leaf node that is linked to the respective node, where the new leaf node corresponds to the second modified media item. For example, in response to receiving the portion of the modified metadata,server system108 or a component thereof (e.g., generatingmodule324,FIG. 3) generates a metadata structure for the new media item and appends a new node associated with the new media item to a corresponding family tree. For example, node470-mcorresponding to the new media item is appended tofamily tree468 as shown inFIG. 4I, and metadata structure504-mcorresponding to the new media item is added to metadata region502-ainFIG. 5A.
In some embodiments, each node in the family tree is tagged (820) with at least one of a user name and a time indicator (e.g., a date/time stamp). For example,metadata structure510, inFIG. 5B, corresponds to metadata structure504-binFIG. 5A and includesauthor field514 with the identifier, name, or handle associated with the creator/author ofmetadata structure510 and date/time field516 with a date and/or time stamp associated with generation ofmetadata structure510.
In some embodiments, each media item and metadata field in the metadata structure corresponding to the media item is tagged with at least one of a user name and a time indicator. In this way, an attribution history may be stored and displayed to users for the purposes of entertainment, community building, copyright attribution, monetization, advertising, or other reasons. For example, user A added a first effect to a media item and during a subsequent modification of the media item, user B added a second effect to the media item. In this example, with respect to the modified media item, the first effect is attributed to user A and the second effect is attributed to user B. Continuing with this example, in some embodiments, user A and user B share in the advertising revenue generated from users watching the modified media item.
In some embodiments, the nodes of the family tree are configured to provide (822) a user of the client device with an immutable modification facility. For example, a new node may be generated from any of the nodes in the family without modifying the pre-existing nodes in the family tree. In this way, the family tree forms an immutable graph of modifications to the root media item. For example, a user may start at a leaf node in a family tree and undo modifications until the user is back to the genesis node in the family tree.
In some embodiments, owners of copyrighted audio tracks and video clips upload at least a sample of the audio tracks and video clips to reference database344 (FIG. 3) associated with the provider of the application. In some embodiments, when the server appends the new leaf node to the family tree,server system108 or a component thereof (e.g., analyzingmodule326,FIG. 3) analyzes the one or more audio tracks and one or more video clips associated with the respective media item to determine a digital fingerprint for the audio tracks and video clips. In some embodiments, whenserver system108 or a component thereof (e.g., determiningmodule328,FIG. 3) determines that the digital fingerprint for the audio tracks and video clips associated with the respective media item matches copyrighted audio tracks and/or video clips inreference database344,server system108 or a component thereof is configured to further link the new node to a node or family tree associated with the copyrighted audio tracks and/or video clips.
It will be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first user input could be termed a second user input, and, similarly, a second user input could be termed a first user input, without changing the meaning of the description, so long as all occurrences of the “first user input” are renamed consistently and all occurrences of the “second user input” are renamed consistently. The first user input and the second user input are both user inputs, but they are not the same user input.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the claims. As used in the description of the embodiments and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting,” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the claims to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain principles of operation and practical applications, to thereby enable others skilled in the art.