Users of computer systems employ various applications to render media files, including multimedia files. A media file is a digital file that contains digitized information, such as text, audio, video, images, and so forth. A multimedia file is a digital file that contains multiple types of media. A common example of a multimedia file is a video file that contains a correlated sequence of images and audio, such as a movie. Rendering is the process of converting information from digital to analog form so that a person can perceive the information, such as by displaying text, playing back audio or video, drawing an image, and so forth.
Another example of a multimedia file is a collaboration file that is created, manipulated, or stored by collaboration software. Collaboration software enables multiple users to share an application, view an online presentation, or collaborate in other ways using computing devices that are engaged in a collaboration session. A collaboration session enables participants to share information or applications via their computing devices. The collaboration software can record the collaboration session in a multimedia file, which can contain audio, video, images, presentation graphics, mouse cursor movements, keyboard input, text, documents, and other facets of the collaboration.
Media files can become very large. As an example, users may collaborate in a collaboration session that lasts for several hours. The collaboration session may also span multiple sessions so that, for example, a collaboration file has information from all collaboration sessions that, together, last for hours. As another example, a movie can span two hours or longer.
It is difficult for users to locate relevant or desirable content in large media files. As an example, a user may desire to locate a particular scene in a movie, a particular training segment in a training-related collaboration file, and so forth. The user can find it difficult to locate the relevant or desirable portions because the user may not know the position in the media files at which the desirable portions are located. Conventionally, the user may start rendering a media file from the beginning until the relevant or desirable content is rendered. Alternatively, the user may estimate a position and employ a user interface element (e.g., a slider bar or timeline) to begin rendering the media file at various points until the relevant or desirable content is located.
A facility is provided for adding, identifying, and rendering annotation information that is associated with a media file. Examples of media files include collaboration files that store a collaboration session, audio files, video files, and other multimedia files. A user can add an annotation that is associated with a specified point or region associated with the media file, such as a time or time span relative to the beginning of the media file. Alternatively, the facility can identify annotations based on user actions during a collaboration session. The facility then stores the annotations in association with the media file. When the media file is later rendered, or upon user input, the facility can display the stored annotations. Indications of annotations can be identified on a timeline representing the media file, such as by using markers near the timeline.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
A facility is provided for managing annotation information that is associated with a media file. Managing annotation information includes adding, identifying, and rendering the annotation information. Annotation information is information that is added to a media file, such as without affecting the multimedia content contained by the media file. In various embodiments, the facility receives annotation information from a user or actively collects the annotation information based on the user's actions. The facility receives annotation information when the user directs the facility to add annotation information and provides the annotation information directly. The facility collects the annotation information based on the user's actions by collecting keyboard or mouse events, receiving events from an application, and so forth. The received or collected annotation information is associated with a particular point or region in a media file, and the facility stores the annotation information accordingly. This point or region can be referred to as an annotation time. When a user causes the media file to be rendered, the facility informs the user that an annotation is available and can render the stored annotation. The facility can inform the user that an annotation is available by providing an indication, such as a marker, near a timeline that is associated with the media file. Annotation information can be provided in various formats and can have various content. As an example, the annotation information can include an identification of the user that provided the annotation and the point or region with which the annotation is to be associated, such as a time span in relation to the beginning of the media file. As another example, the annotation information can include annotation text or an identifier of a file containing an annotation (e.g., a video or audio file). As another example, the annotation can be text, audio, images, video, or any other multimedia content.
In various embodiments, a user can provide annotation information by selecting a point or region of a timeline associated with the media file and adding an annotation at an indicated point or region. This point or region would then be identified as an annotation time. As an example, the user can indicate a point in a timeline that represents the media file or a time span corresponding to a portion of the media file, such as by identifying a point with the mouse pointer and depressing a mouse button. The user can then provide the annotation by typing text or selecting a file that contains annotation information that is to be added. This text would then be associated with the media file at the annotation time. Alternatively, the facility can associate information provided by a user when creating or rendering the media file. As an example, the facility detects mouse move events or keyboard events caused by a user while the media file is created or rendered, and captures these events to create annotations. As another example, a user may make a change to a spreadsheet cell during a collaboration session in which a spreadsheet is shared among multiple participants. The facility can capture the changes to the spreadsheet cell as an annotation. As another example, the facility can capture and include as annotation information an identification of the person who is making a presentation, identification of people who have joined or left the meeting and the time, text or other content of presented slides, and so forth.
The collected annotation information can be stored as metadata that is associated with other data without affecting the other data. The metadata can either be stored in the media file or in another file that is associated with the media file. The metadata can be stored in a form that is modifiable and searchable.
In various embodiments, the facility observes and records user activity to create annotations. As an example, the facility determines changes that multiple users make to a document during a collaboration session and records as annotations the changes made by the users. The annotations can include comments added by users, such as when the collaboration application does not record comments in the collaboration file. The annotations can also include other aspects of the collaboration, such as which users were presenting or attending a presentation, at what times they joined the collaboration session, and so forth. The facility can actively collect this information and store the collected information as annotations relative to an annotation time (e.g., the time at which the user made the change or joined a collaboration session).
In various embodiments, a user can view the annotation information when the media file is rendered. As an example, during playback of a recorded collaboration session, a stored annotation may be rendered when the facility renders a portion of the media file corresponding to a time at which the stored annotation is associated with the collaboration file (e.g., the annotation time). As an example, when playing back a movie, the facility can display at twenty-three minutes from the beginning of the movie, text, images, audio, video, etc., that a user added as an annotation that is associated with the twenty-third minute position in the movie.
In various embodiments, a user can search the annotation information of a media file. As an example, the user can search for annotation information that the user or another user associated with a media file. As a further example, a user can search for text or other input that was provided or changed during a collaboration session and that was recorded in a collaboration file. If this information is found, the facility displays indications, such as markers on a timeline, corresponding to a point in a media file at which the annotation information was associated with the media file. Thus, the facility can search for both collaboration information and annotation information.
When the user causes a portion of the media file near the indications to be rendered, the facility also renders the annotations. Alternatively, when the user positions a mouse pointer momentarily over an indication, the facility can render the stored annotation information associated with that indication. The annotation information may be displayed for a specified duration when the media file is rendered.
Thus, the facility enables users to manage annotation information that is associated with a media file, such as by adding, identifying, or rendering annotation information. Doing so removes the difficulty users have in locating relevant or desirable content in large media files.
Turning now to the figures,
The computer 100 typically includes a variety of computer-readable media that are operable with the storage device 106. Computer-readable media can be any available media that can be accessed by the computer 100 and include both volatile and nonvolatile media and removable and nonremovable media.
The computer 100 may operate in a networked environment using logical connections to one or more remote computers. A remote computer may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above in relation to the computer 100. A logical connection can be made via a local area network (LAN) or a wide area network (WAN), but may also include other networks. Such networking environments are commonplace in homes, offices, enterprisewide computer networks, intranets, and the Internet. The computer 100 can be connected to a network through a network interface or adapter 108, such as to a wired or wireless network.
The computer 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the facility. Neither should the computing system be interpreted as having any dependency or requirement relating to any one or a combination of the illustrated components.
The facility is operational with numerous other general purpose or special purpose computing systems or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the facility include, but are not limited to, personal computers, server computers, handheld or laptop devices, cellular telephones, tablet devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The facility may be described in the general context of computer-executable instructions, such as program modules, that are executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The facility may also be employed in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media, including memory storage devices.
The facility may have multiple annotation rendering components 122, such as a text annotation rendering component, an audio annotation rendering component, a video annotation rendering component, and so forth. The facility employs the annotation rendering components to render stored annotations.
The facility may have an annotation creation component 124 that creates annotations, such as based on user actions. As an example, the facility may create annotations when users in a collaboration session modify a document, move a mouse pointer, type information, and so forth.
The facility may have an annotation search component 126 that searches for annotations matching a criterion (or multiple criteria) provided by the user.
While various functionalities and data are shown in
The techniques may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
The collaboration session can be recorded in a collaboration file and a user can later view a recorded session by rendering the collaboration file, during which a playback controls region 306 may be visible. A user can manipulate the rendering of the recorded collaboration session using the playback controls illustrated in the playback controls region. The playback controls are described in further detail below in relation to
A timeline 308 indicates a duration of the media file. In some embodiments, the actual duration (e.g., in hours, minutes, and seconds) may additionally be provided (not illustrated). A pointer 309 indicates a position at which the facility is rendering from the media file, in relation to the duration of the media file. When the pointer is at the leftmost position of the timeline, the beginning of the media file is indicated.
When a user selects control 310, the facility moves the pointer to the leftmost position of the timeline. When the user selects control 322, the facility moves the pointer to the rightmost position of the timeline (e.g., the end of the media file).
Controls 312, 314, and 316 enable the user to select a rendering speed. Control 312 enables a user to decrease the rendering speed. Control 314 enables the user to set the rendering speed at a normal speed (e.g., a speed at which the media file was originally recorded or at which rendering time corresponds to “real” time). Control 316 enables the user to increase the rendering speed.
Control 318 enables the user to pause rendering, and control 320 enables the user to stop rendering.
Control 324 enables the user to increase or decrease the volume.
As previously discussed, the facility can collect annotation information automatically. As an example, the facility may collect annotations when users make changes to a document during a collaboration session. The annotation indications may then be displayed when the user searches for an annotation or indicates that annotations are to be displayed. As an example, the user can search for all annotations having particular text. As another example, the user can search for all changes made to a particular spreadsheet cell or section of a document. When corresponding annotations are found, the facility provides indications near the timeline, such as markers.
Text region 506 enables a user to enter a text annotation, as is indicated by a text cursor 509. In various embodiments, a text annotation region that receives user input may be indicated using a coloring, border, or other indication that differentiates it from a text annotation region that provides an annotation. These indications can additionally enable users to distinguish among annotations provided by multiple people. In the illustrated embodiment, the facility has automatically provided the name of the user, Ellen (508) and the time in relation to the beginning of the media file, 12 minutes and 18 seconds (510). The facility detected the time based on the position at which the media file was being rendered when the user indicated to add an annotation. In some embodiments, the time is based on the position at which the user positioned a mouse pointer when indicating to add an annotation.
Annotations table 800 of
Annotations table 816 of
While
At block 904, the routine receives an indication that an annotation is to be stored. As an example, the routine may receive the indication when the user selects a command to enter an annotation. As another example, the routine may receive the indication when a user makes a change to a document that is being shared.
At block 906, the routine determines the time in relation to the beginning of the media file. The time is used to associate the annotation with a particular point or region in the media file. When the annotation is to be associated with a time span, the facility may determine a beginning and end time, such as under user direction.
At block 908, the routine determines which user made the annotation. As an example, the facility may determine which user is presently logged into the system or is responsible for making mouse or keyboard events that are shared with other participants of a collaboration session.
At block 910, the routine provides a user interface that the user can use to provide the annotation. In embodiments in which the facility automatically determines annotations, the facility may not provide such a user interface.
At block 912, the routine receives an annotation or an indication of an annotation, such as the uniform resource locator or file path.
At block 914, the routine determines properties for the annotation that are to be stored in an annotations table. As an example, the routine may determine a type of the annotation.
At block 916, the routine stores annotation information in an annotations table associated with the media file. As an example, the routine stores a time or time span, annotation type, author identifier, and annotation in the annotations table.
At block 918, the routine indicates availability of an annotation, such as by illustrating a marker, near a media timeline associated with the media file. The position of the indication may correspond to the time at which the annotation is associated with the media file in relation to the duration of the media file. As an example, an annotation associated with the media file near the beginning of the media file would appear near the beginning of the timeline. In contrast, an annotation associated with the media file near the end of the media file would appear near the end of the timeline.
At block 920, the routine returns.
At block 1004, the routine retrieves a list of annotation times from an annotations table associated with the media file.
At block 1006, the routine selects the first annotation in the list.
At block 1008, the routine determines a position for the selected annotation near the timeline. The position may correspond to the time at which the annotation is associated with the media file in relation to the duration of the media file. As an example, an annotation associated with the media file near the beginning of the media file would appear near the beginning of the timeline. In contrast, an annotation associated with the media file near the end of the media file would appear near the end of the timeline.
At block 1010, the routine draws an indication of the annotation, such as a marker, near the timeline at the determined position.
At decision block 1012, the routine determines whether there are more annotations in the list that have not yet been processed. If there are more annotations in the list, the routine continues at block 1014. Otherwise, the routine continues at block 1016 where it returns.
At block 1014, the routine selects the next annotation in the list. The routine then continues at block 1008.
At block 1104, the routine receives an indication to render an annotation. As an example, the routine receives an indication to render an annotation when the user positions a mouse pointer near an annotation indication. Alternatively, the routine receives an indication to render an annotation when a media file is rendered to a position at which an annotation was associated.
At block 1108, the routine retrieves an annotation from the annotations table corresponding to the time. As an example, the routine retrieves an annotation associated with a marker or indication that the user has selected. Alternatively, the routine retrieves an annotation associated with a time or time span corresponding to the position of the media file that is being rendered.
At block 1110, the routine determines an annotation type for the retrieved annotation.
At block 1112, the routine selects an annotation rendering component for rendering the annotation type. As an example, the routine may select a text annotation rendering component, audio annotation rendering component, video annotation rendering component, and so forth.
At block 1114, the routine renders the retrieved annotation using the selected annotation component.
At block 1116, the routine returns.
Those skilled in the art will appreciate that the steps shown in
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. Accordingly, the invention is not limited except as by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4649499 | Sutton et al. | Mar 1987 | A |
5333266 | Boaz et al. | Jul 1994 | A |
5524193 | Covington et al. | Jun 1996 | A |
5526407 | Russell et al. | Jun 1996 | A |
5572643 | Judson | Nov 1996 | A |
5583980 | Anderson | Dec 1996 | A |
5600775 | King et al. | Feb 1997 | A |
5633916 | Goldhagen et al. | May 1997 | A |
5699089 | Murray | Dec 1997 | A |
5732216 | Logan et al. | Mar 1998 | A |
5809250 | Kisor | Sep 1998 | A |
5838313 | Hou et al. | Nov 1998 | A |
5893087 | Wlaschin et al. | Apr 1999 | A |
5893110 | Weber et al. | Apr 1999 | A |
5903892 | Hoffert et al. | May 1999 | A |
5923848 | Goodhand et al. | Jul 1999 | A |
5969716 | Davis et al. | Oct 1999 | A |
5991365 | Pizano et al. | Nov 1999 | A |
6006241 | Purnaveia et al. | Dec 1999 | A |
6009462 | Birrell et al. | Dec 1999 | A |
6081829 | Sidana | Jun 2000 | A |
6085185 | Matsuzawa et al. | Jul 2000 | A |
6105055 | Pizano et al. | Aug 2000 | A |
6144375 | Jain et al. | Nov 2000 | A |
6173287 | Eberman et al. | Jan 2001 | B1 |
6173317 | Chaddha et al. | Jan 2001 | B1 |
6230172 | Purnaveja et al. | May 2001 | B1 |
6311189 | deVries et al. | Oct 2001 | B1 |
6317141 | Pavely et al. | Nov 2001 | B1 |
6332144 | deVries et al. | Dec 2001 | B1 |
6332147 | Moran et al. | Dec 2001 | B1 |
6360234 | Jain et al. | Mar 2002 | B2 |
6366296 | Boreczky et al. | Apr 2002 | B1 |
6404978 | Abe et al. | Jun 2002 | B1 |
6424370 | Courtney | Jul 2002 | B1 |
6438566 | Okuno et al. | Aug 2002 | B1 |
6449653 | Klemets et al. | Sep 2002 | B2 |
6452615 | Chiu et al. | Sep 2002 | B1 |
6452875 | Lee et al. | Sep 2002 | B1 |
6484156 | Gupta et al. | Nov 2002 | B1 |
6571295 | Sidana | May 2003 | B1 |
6584479 | Chang et al. | Jun 2003 | B2 |
6701311 | Biebesheimer et al. | Mar 2004 | B2 |
6718308 | Nolting | Apr 2004 | B1 |
6724401 | Hennum et al. | Apr 2004 | B1 |
6833865 | Fuller et al. | Dec 2004 | B1 |
6871318 | Wynblatt et al. | Mar 2005 | B1 |
6901207 | Watkins | May 2005 | B1 |
6922702 | Jensen et al. | Jul 2005 | B1 |
6956593 | Gupta et al. | Oct 2005 | B1 |
7051275 | Gupta et al. | May 2006 | B2 |
7111009 | Gupta et al. | Sep 2006 | B1 |
7162690 | Gupta et al. | Jan 2007 | B2 |
7233951 | Gainer et al. | Jun 2007 | B1 |
7631015 | Gupta et al. | Dec 2009 | B2 |
7702730 | Spataro et al. | Apr 2010 | B2 |
7823058 | Pea et al. | Oct 2010 | B2 |
20020026478 | Rodgers et al. | Feb 2002 | A1 |
20020069190 | Geiselhart | Jun 2002 | A1 |
20020112004 | Reid et al. | Aug 2002 | A1 |
20020118300 | Middleton et al. | Aug 2002 | A1 |
20030078973 | Przekop et al. | Apr 2003 | A1 |
20040267871 | Pratley et al. | Dec 2004 | A1 |
20050050021 | Timmons | Mar 2005 | A1 |
20050068905 | Dorner et al. | Mar 2005 | A1 |
20050081159 | Gupta et al. | Apr 2005 | A1 |
20050160080 | Dawson | Jul 2005 | A1 |
20050198006 | Boicey et al. | Sep 2005 | A1 |
20050198193 | Halme | Sep 2005 | A1 |
20050234885 | Szeto et al. | Oct 2005 | A1 |
20060015904 | Marcus | Jan 2006 | A1 |
20060026013 | Kraft | Feb 2006 | A1 |
20070011206 | Gupta et al. | Jan 2007 | A1 |
20070276852 | Fletcher | Nov 2007 | A1 |
Number | Date | Country |
---|---|---|
0650126 | Apr 1995 | EP |
0899737 | Mar 1999 | EP |
2254725 | Oct 1992 | GB |
2301260 | Nov 1996 | GB |
WO-9749251 | Dec 1997 | WO |
WO-0242864 | May 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20070266304 A1 | Nov 2007 | US |