A facility is provided for identifying and downloading portions of a media file. Examples of media files include audio files, video files, multimedia files, and collaboration files. The media files may be hosted by a server either in a downloadable format or in a streaming format. In various embodiments, the facility receives information from a user that identifies one or more portions of a media file, prepares a downloadable media file containing the identified portion or portions of the media file but not the other portions of the media file, and provides the prepared media file for downloading. The user can identify portions of the media file by selecting a segment of a timeline representing the media file, by searching for annotations or other searchable information associated with the media file, and so forth. As an example, a user can indicate that content within a media file associated with a particular search term is to be downloaded. The facility then creates downloadable content by retrieving from the media file the identified portions and assembling the retrieved portions into a downloadable media file. The facility can then download the downloadable content to the user's computer. The user can then cause the computer to render the downloaded content without having to download the entire media file.
In various embodiments, the facility may identify and retrieve portions of the media file that are associated with search terms the user provides. As an example, the facility may search for the search terms in annotations associated with the media file. Annotating media files is described in further detail in U.S. patent application Ser. No. 11/383,346, filed on May 15, 2006, and entitled “Annotating Media Files,” the disclosure of which is incorporated herein by reference in its entirety. As another example, the facility may search for the search terms in information associated with the media file, such as in a collaboration file. Collaboration files can contain information corresponding to a presentation, text typed by a viewer of the presentation, and so forth.
Thus, the facility can identify and provide a portion of a media file based on selection information provided by a user.
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, enterprise-wide 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.
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.
In various embodiments, the client or server computing devices may be a host computing device. A host computing device is a computing device that participates in a collaboration session by hosting the collaboration. The host computing device may also store media files, such as collaboration files.
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). The timeline can be illustrated before a media file is downloaded. As an example, a pointer 309 indicates a position at which the facility is rendering content 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.
Controls 310-324 enable the user to control the rendering of the media file. 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 the 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 of any audio that is played in the speakers.
In various embodiments, a user can select a subset of a set of portions the facility identifies in response to a search request. As an example, upon receiving a search term, the facility may identify several portions of the media file corresponding to the search term, such as by adding several markers to the timeline. The user may then be able to select zero, one, multiple, or all of the identified portions of the media file for downloading. The user can identify which portions to download by removing some of the markers on the timeline or adding markers. Alternatively, the facility may provide a list of portions and the user can identify which regions from the list to download.
In various embodiments, the facility downloads additional portions of the media file, such as portions just before or after the portions identified by the search, so that additional context can be provided to the user. As an example, the facility may download an additional thirty seconds of the media file before and/or after the identified portion.
Annotations table 900 has ID 902, time 904, type 906, author 908, and content 910 columns. The ID column identifies each stored annotation. The time column indicates a time or time span, in relation to the beginning of the media file, with which the annotation is to be associated. As an example, annotation 912 is associated with the media file at 10 minutes and 24 seconds after the beginning of the media file. The type column indicates the type of the annotation. Annotations 912 and 914 are text annotations. Other types of annotations include audio, video, image, document change, and so forth. The author column indicates the user who provided the annotation. The content column stores the contents of the annotation. The content column can contain text, an identifier of a file (e.g., uniform resource locator or file path), identification of a position in a document and a change made by the user, and so forth. When the facility searches annotations, it will generally search the author and content columns, but could also search other columns of the annotations table.
While
At block 1004, the routine receives one or more sets of content delimiters. Content delimiters indicate the start and end time, relative to the beginning of the media file, for each portion of the media file that is to be downloaded. Content delimiters are identified by markers identified by the user, either manually or by performing a search.
At block 1006, the facility creates content segments based on the received delimiters. In various embodiments, the facility extracts portions of the content file identified by the delimiters and stores them as separate content files. In some embodiments, the facility stores the segments together in a single downloadable content file.
At block 1008, the facility creates a downloadable content file. As an example, when the facility stores separate content files that were extracted from the original content file, the facility may combine them to create a single downloadable content file. In some embodiments, the facility provides the multiple portions as separate downloadable content files.
At block 1010, the facility provides the downloadable content files to the client computer from which it received the request.
At block 1012, the routine returns.
Those skilled in the art will appreciate that the logic illustrated in
In some embodiments, the original media file may be a streaming content file from which portions are extracted for downloading. Alternatively, the original media file may be a downloadable media file that is too large to be downloaded practically. By using the facility, users are able to download portions of media files that are too large or cannot be downloaded. In some embodiments, a user may be able to view a portion of a collaboration during the collaboration session.
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.