Methods and Systems for Managing Media Items
The various embodiments described herein include methods and systems for managing media items. In one aspect, a method is performed at a server system. The method includes: (1) receiving a creation request to create a media item, the request including information identifying one or more audio files and one or more visual media files; (2) in response to receiving the request, adding an entry to a media item database for the media item, the entry including metadata identifying the audio files and the visual media files and synchronization information for synchronizing the one or more audio files with the one or more visual media files; (3) receiving at least one of the one or more visual media files; and (4) storing the at least one visual media file at a first location, where the information identifying the one or more visual media files includes information identifying the first location.
This application is a continuation of U.S. patent application Ser. No. 14/608,097, filed Jan. 28, 2015, which claims priority to U.S. Provisional Patent Application No. 61/934,681, filed Jan. 31, 2014, each of which is hereby incorporated by reference in its entirety.
This application is related to U.S. patent application Ser. No. 14/608,099, filed Jan. 28, 2015, entitled, “Methods and Devices for Touch-Based Media Creation,” U.S. patent application Ser. No. 14/608,103, filed Jan. 28, 2015, entitled, “Methods and Devices for Presenting Interactive Media Items,” U.S. patent application Ser. No. 14/608,105, filed Jan. 28, 2015, entitled, “Methods and Devices for Modifying Pre-Existing Media Items,” and U.S. patent application Ser. No. 14/608,108, 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 device 104,
In some embodiments, a client-side method of modifying a pre-existing media item is performed at a client device (e.g., client device 104,
In some embodiments, a server-side method of maintaining a database is performed at a server system (e.g., server system 108,
In some embodiments, an electronic device or a computer system (e.g., client device 104,
So 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.
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 in
In some embodiments, server-side module 106 includes one or more processors 112, media files database 114, media item metadata database 116, an I/O interface to one or more clients 118, and an I/O interface to one or more external services 120. I/O interface to one or more clients 118 facilitates the client-facing input and output processing for server-side module 106. One or more processors 112 receive requests from client-side module 102 to create media items or obtain media items for presentation. Media files database 114 stores media files, such as images and/or video clips, associated with media items, and media item metadata database 116 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 database 114 and media item metadata database 116 are communicatively coupled with but located remotely from server system 116. In some embodiments, media files database 114 and media item metadata database 116 are located separately from one another. In some embodiments, server-side module 106 communicates with one or more external services such as audio sources 124a . . . 124n (e.g., streaming audio service providers such as Spotify, SoundCloud, Rdio, Pandora, and the like) and media file sources 126a . . . 126n (e.g., service provider of images and/or video such as YouTube, Vimeo, Vine, Flickr, Imgur, and the like) through one or more networks 110. I/O interface to one or more external services 120 facilitates such communications.
Examples of client device 104 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 or more networks 110 include local area networks (“LAN”) and wide area networks (“WAN”) such as the Internet. One or more networks 110 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 system 108 is managed by the provider of the application for generating, exploring, and presenting media items. Server system 108 is implemented on one or more standalone data processing apparatuses or a distributed network of computers. In some embodiments, server system 108 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 of server system 108.
Although server-client environment 100 shown in
-
- operating system 216 including procedures for handling various basic system services and for performing hardware dependent tasks;
- network communication module 218 for connecting user device 104 to other computing devices (e.g., server system 108, audio sources 124a . . . 124n, and media file sources 126a . . . 126n) connected to one or more networks 110 via one or more network interfaces 204 (wired or wireless);
- presentation module 220 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.) at client device 104 via one or more output devices 212 (e.g., displays, speakers, etc.) associated with user interface 210; and
- input processing module 222 for detecting one or more user inputs or interactions from one of the one or more input devices 214 and interpreting the detected input or interaction.
In some embodiments, memory 206 also includes a client-side module 102 associated with an application for creating, exploring, and playing back media items that includes, but is not limited to:
-
- detecting module 224 for detecting one or more user inputs corresponding to the application;
- requesting module 226 for querying a server (e.g., server system 108) for a media item;
- receiving module 228 for receiving, from server system 108, 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;
- determining module 230 for determining a source for the audio track associated with the media item;
- obtaining module 232 for obtaining at least the portion of the audio track associated with the audio track;
- presenting module 234 for presenting the requested media item via one or more output devices 212 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;
- synchronizing module 236 for synchronizing at least the portion of the audio track with the one or more media files;
- effects module 238 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 module 240 for sharing the media item via one or more sharing methods (e.g., email, SMS, social media outlets, etc.);
- modifying module 242 for modifying a pre-existing media item so as to generate a new media item based on the pre-existing media item; and
- publishing module 244 for publishing the new media item.
In some embodiments, memory 206 also includes client data 250 for storing data for the application. Client data 250 includes, but is not limited to:
-
- audio buffer 252 for buffering at least the portion of the obtained audio track for playback;
- video buffer 254 for buffering the one or more media files received from server system 108 for display;
- video library 256 storing one or more pre-existing video clips recorded prior to executing the application;
- image library 258 storing one or more pre-existing images captured prior to executing the application;
- audio library 260 storing one or more pre-existing audio tracks created or stored prior to executing the application;
- effects library 262 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 profile 264 including a plurality of preferences associated with the application for the user of client device 104.
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, memory 206, optionally, stores a subset of the modules and data structures identified above. Furthermore, memory 206, optionally, stores additional modules and data structures not described above.
-
- operating system 310 including procedures for handling various basic system services and for performing hardware dependent tasks;
- network communication module 312 that is used for connecting server system 108 to other computing devices (e.g., client devices 104, audio sources 124a . . . 124n, and media file sources 126a . . . 126n) connected to one or more networks 110 via one or more network interfaces 304 (wired or wireless);
- a server-side module 106 associated with the application for generating, exploring, and presenting media items that includes, but is not limited to:
- receiving module 314 for receiving a request, from client device 104, to playback a media item or for receiving at least a portion of the modified metadata structure;
- transmitting module 318 for transmitting, to client device 104, 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
- maintaining module 320 for maintaining media item metadata database 116, including, but not limited to:
- updating module 322 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);
- generating module 324 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;
- analyzing module 326 for analyzing the audio track and the one or more media files associated with the new media item; and
- determining module 328 determining whether the analyzed audio track and one or more media files match one of the reference audio tracks and/or video clips in reference database 344;
- modifying module 330 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 module 332 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 data 340, including but not limited to:
- media files database 114 storing one or more media files (e.g., images and/or video clips);
- media item metadata database 116 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 database 342 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 database 344 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, memory 306, optionally, stores a subset of the modules and data structures identified above. Furthermore, memory 306, 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 a respective client device 104 with one or more speakers 402 enabled to output sound, zero or more microphones 404 enabled to receive sound input, and a touch screen 406 enabled to receive one or more contacts and display information (e.g., media content, webpages and/or user interfaces for an application).
Although some of the examples that follow will be given with reference to inputs on touch screen 406 (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.
In
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 database 344 (
In
Alternatively, in some embodiments, in response to detecting contact 456 selecting remix affordance 430 in
In some embodiments, each of the leaf nodes in family tree 468 are associated with one parent node and zero or more leaf nodes. For example, with respect to node 470-b corresponding to the respective media item, genesis node 470-a is its parent node and leaf nodes 470-d and 470-e are its child nodes. In
Alternatively, in some embodiments, in response to detecting contact 474 selecting node 470-g in
Metadata structure 510 includes a plurality of entries, fields, and/or tables including a subset or superset of the following:
-
- identification tag field 512 includes a unique identifier for the respective media item;
- author field 514 includes the identifier, name, or handle associated with the creator/author of the respective media item;
- date/time field 516 includes a date and/or time stamp associated with generation of the respective media item;
- one or more media file pointer fields 518 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 fields 520 for each of the one or more audio tracks associated with the respective media item;
- one or more start time fields 521 for each of the one or more audio tracks associated with the respective media item;
- effects table 522 includes an entry 523 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, entry 523-a includes 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 table 524 includes an entry 525 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 entry 525-a includes 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);
- play count field 526 includes zero or more entries 528 for each play back of the respective media item, for example, entry 528-a includes: 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;
- likes field 530 includes zero or more entries 532 for each like of the respective media item, for example, entry 532-a includes: 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 field 534 includes zero or more entries 536 for each share of the respective media item, for example, entry 536-a includes: 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 field 538 includes zero or more entries 540 for each comment (e.g., a hashtag) corresponding to the respective media item, for example, entry 540-a includes: 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
- associated media items field 542 includes zero or more entries in a parent node sub-field 544 and zero or more entries in a child node sub-field 548 for each media item associated with the respective media item, for example:
- parent node sub-field 544 includes entry 546-a corresponding 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-field 548 includes entry 550-a corresponding 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 structure 510, optionally, stores a subset of the entries, fields, and/or tables identified above. Furthermore, metadata structure 510, optionally, stores additional entries, fields, and/or tables not described above. In some embodiments, identification tag field 512 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 structure 510 is metadata structure 504-b in
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, in
In response to the user input, the client device requests (604) the media item from a server. For example, in response to detecting contact 422, in
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 device 104 receives, from server system 108, 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 device 104 buffers the one or more media files received from server system 108 in video buffer 254 (
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 device 104 or a component thereof (e.g., determining module 230,
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, after client device 104 or a component thereof (e.g., determining module 230,
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, after client device 104 or a component thereof (e.g., determining module 230,
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, after client device 104 or a component thereof (e.g., determining module 230,
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, after client device 104 or a component thereof (e.g., determining module 230,
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 library 260 (
The client device displays (620) the one or more media files. For example, in
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 device 104 or a component thereof (e.g., presenting module 234,
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 device 104 or a component thereof (e.g., synchronizing module 236,
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 library 260 (
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 table 522 in a metadata structure 510, as shown in
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 device 104 downloads effects, from server system 108, 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, share affordance 450, in
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 device 104 detects one or more second user inputs selecting affordance 464, in
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 in
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.
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. In
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, media item metadata database 116 stores a metadata structure for each media item generated by a user in the community of users of the application. For example, metadata region 502-a of media item metadata database 116, in
The client device detects (708) a first user input selecting one of the nodes in the family tree. For example, in
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, in
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 detecting contact 490, in
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 effect 480-a, client device 104 or a component thereof (e.g., modifying module 242,
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 effect 480-a, client device 104 or a component thereof (e.g., publishing module 244,
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 to
The server maintains (802) a database for a plurality of root media items. In some embodiments, server system 108 or a component thereof (e.g., maintaining module 320,
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 tree 468, in
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. In
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 region 502-a of media item metadata database 116, in
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 system 108 or a component thereof (e.g., receiving module 314,
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., node 470-g in
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., node 470-g in
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., node 470-g in
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 system 108 or a component thereof (e.g., generating module 324,
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 structure 510, in
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 database 344 (
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.
Claims
1. A method of managing media items, the method comprising:
- at a server system with one or more processors and memory: receiving, from an electronic device, a creation request to create a media item, the creation request including information identifying one or more audio files and one or more visual media files; in response to receiving the creation request, adding an entry to a media item database for the media item, the entry including metadata identifying the one or more audio files, information identifying the one or more visual media files, and synchronization information for synchronizing the one or more audio files with the one or more visual media files; receiving at least one of the one or more visual media files; and storing the at least one visual media file at a first location, wherein the information identifying the one or more visual media files includes information identifying the first location.
2. The method of claim 1, further comprising, after receiving the at least one visual media file, editing the at least one visual media file;
- wherein storing the at least one visual media file at the first location comprises storing the edited at least one visual media file at the first location.
3. The method of claim 2, wherein editing the at least one visual media file includes at least one of:
- changing the format;
- changing the bit rate;
- integrating one or more audio tracks; and
- integrating one or more presentation effects.
4. The method of claim 2, wherein the at least one visual media file comprises a plurality of visual media files and editing the plurality of visual media files includes combining the plurality of visual media files into a single visual media file.
5. The method of claim 2, wherein editing the at least one visual media file comprises editing the at least one visual media file based on metadata for the media item.
6. The method of claim 1, wherein storing the at least one visual media file at the first location comprises storing the at least one visual media file in a media database within the server system.
7. The method of claim 1, wherein the metadata identifying the one or more audio files includes information identifying a licensed source for at least one of the one or more audio files, the licensed source distinct from the server system and the electronic device.
8. The method of claim 1, wherein the creation request further includes information identifying one or more presentation effects for the media item; and
- the method further comprises adding metadata identifying the one or more presentation effects to the entry for the media item.
9. The method of claim 1, further comprising:
- receiving, from the second electronic device, a request to publish the media item, the request including a publication location;
- in response to receiving the request to publish the media item, obtaining metadata from the entry for the media item; and
- sending the obtained metadata to the publication location for publication.
10. The method of claim 1, further comprising:
- receiving, from a second electronic device, a request to modify the media item; and
- in response to receiving the request to modify the media item: adding an entry to the media item database for the modified media item; and adding metadata indicating that the modified media item is related to the media item.
11. The method of claim 10, wherein the request to modify the media item includes a request to add one or more visual media files and/or one or more audio tracks to the media item.
12. The method of claim 1, further comprising:
- receiving, from a second electronic device, a user request to play the media item;
- in response to receiving the user request, obtaining metadata of the media item from the media item database;
- obtaining, based on the metadata of the media item, at least a portion of the one or more audio files and at least a portion of the one or more visual media files;
- based on the synchronization information, sending, for concurrent playback at the second electronic device, the obtained at least a portion of the one or more audio files and the obtained at least a portion of the one or more visual media files.
13. The method of claim 12, wherein obtaining, based on the metadata of the media item, the at least a portion of the one or more audio files includes obtaining at least the portion of the one or more audio files from the licensed source.
14. The method of claim 13, wherein the licensed source comprises a streaming audio service provider.
15. The method of claim 12, further comprising:
- prior to obtaining the at least a portion of the one or more audio files, determining whether the one or more audio files include licensed content; and
- in accordance with a determination that the one or more audio files include licensed content, sending, to the second electronic device, information regarding an option to purchase the licensed content from a licensed source.
16. The method of claim 12, further comprising, in response to receiving the user request, updating metadata of the media item in the media item database.
17. A server system, comprising:
- one or more processors; and
- memory storing one or more programs to be executed by the one or more processors, the one or more programs comprising instructions for: receiving, from an electronic device, a creation request to create a media item, the creation request including information identifying one or more audio files and one or more visual media files; in response to receiving the creation request, adding an entry to a media item database for the media item, the entry including metadata identifying the one or more audio files, information identifying the one or more visual media files, and synchronization information for synchronizing the one or more audio files with the one or more visual media files; receiving at least one of the one or more visual media files; and storing the at least one visual media file at a first location, wherein the information identifying the one or more visual media files includes information identifying the first location.
18. The system of claim 17, wherein the one or more programs further comprise instructions for:
- receiving, from a second electronic device, a user request to play the media item;
- in response to receiving the user request, obtaining metadata of the media item from the media item database;
- obtaining, based on the metadata of the media item, at least a portion of the one or more audio files and at least a portion of the one or more visual media files;
- based on the synchronization information, sending, for concurrent playback at the second electronic device, the obtained at least a portion of the one or more audio files and the obtained at least a portion of the one or more visual media files.
19. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by a server system with one or more processors, cause the server system to:
- receive, from an electronic device, a creation request to create a media item, the creation request including information identifying one or more audio files and one or more visual media files;
- in response to receiving the creation request, add an entry to a media item database for the media item, the entry including metadata identifying the one or more audio files, information identifying the one or more visual media files, and synchronization information for synchronizing the one or more audio files with the one or more visual media files;
- receive at least one of the one or more visual media files; and
- store the at least one visual media file at a first location, wherein the information identifying the one or more visual media files includes information identifying the first location.
20. The storage medium of claim 19, wherein the one or more programs further comprise instructions, which, when executed by the server system, cause the server system to
- receive, from a second electronic device, a user request to play the media item;
- in response to receiving the user request, obtain metadata of the media item from the media item database;
- obtain, based on the metadata of the media item, at least a portion of the one or more audio files and at least a portion of the one or more visual media files;
- based on the synchronization information, send, for concurrent playback at the second electronic device, the obtained at least a portion of the one or more audio files and the obtained at least a portion of the one or more visual media files.
Type: Application
Filed: Aug 6, 2015
Publication Date: Nov 26, 2015
Inventors: Scott Snibbe (San Francisco, CA), Graham McDermott (Berkeley, CA), Justin Ponczec (San Francisco, CA), Spencer Schoeben (Palo Alto, CA), Jesse Fulton (San Francisco, CA)
Application Number: 14/820,477