TECHNICAL FIELDThis invention relates to capturing and processing content.
BACKGROUNDThere are many situations in today's world where there is a need or desire to memorialize what happens, perhaps as documentation to resolve future questions as to what took place, or as a way to later disseminate the knowledge to others. Some aspects of information gathering and manipulation can be performed, or at least aided in part, by use of computer devices or systems that are specifically programmed to perform certain tasks. This ability is useful in the context of knowledge sharing as well as other areas.
As an example, one form of institution that in the past decades has begun to revamp its way of sharing information is educational institutions; that is, universities, colleges and other schools. There are also other institutions that engage in knowledge sharing by arranging public meetings and other gatherings. Many or all of these entities mainly rely on a traditional teaching format based on scheduling a lecturer (e.g., a professor) to speak at a certain place at a certain time. The potential audience for the lecture (e.g., the registered students) are then alerted that they should attend the lecture to help them learn the subject that is being taught. If the scheduled location does not have capacity for all those who want to attend, some may miss the lecture. Similarly, the lecture may be missed by those of the audience who forget the time or the location.
SUMMARYThis invention relates to capturing and processing content.
In a first general aspect, a computer-implemented method for acquiring and processing media content includes receiving at least one input regarding a recording session generated by a user. The input is received at a first device that is configured to perform any of several post-processing operations on a recording generated during the recording session. The method includes forwarding, after receiving the input, a command regarding the recording session from the first device to a second device that is configured to generate the recording. The command is based on the input. The method includes receiving, at the first device and from the second device, the recording and an instruction file specifying at least one of the post-processing operations to be performed on the recording.
Implementations can include any or all of the following features. The command can instruct the second device to do at least one task selected from the group consisting of: starting the recording, pausing the recording, stopping the recording, forwarding the recording and the instruction file, acquire metadata for the instruction file, and combinations thereof The method can further include performing, at the first device and in response to the recording and the instruction file, the at least one post-processing operation on the recording to form a processed recording. The method can further include making the processed recording available as specified in the instruction file. The processed recording can be made available as a podcast. Generating the recording, forwarding the recording and the instruction file, and performing the at least one post-processing operation can form an automated workflow. The recording can be made at a presentation given by a lecturer, and the automated workflow can flow from the lecturer to a student. The lecturer can initiate the recording using a portal, meta data regarding the recording can be captured using the portal for use in generating the instruction file, and the processed recording can be made available through the portal. The recording can be one type selected from: an audio recording, a video recording, an audiovisual recording, a device screen recording, a whiteboard recording, and combinations thereof The method can further include capturing meta data in connection with the input and forwarding the meta data to the second device for use in generating the instruction file. The command can instruct the second device to initiate the recording, and the method can further include including the captured meta data when forwarding the command to the second device. The post-processing operation can include at least one operation selected from the group consisting of: a coding or decoding operation, an operation of adding meta data, compression or decompression, formatting, posting, and combinations thereof. An architecture of the second device can be provided with at least one control plugin. The control plugin can define the input that can be made at the first device to cause the command to be forwarded. The second device can have stored therein several instruction components required by the first device for the post-processing operations, and the method can further include selecting at least one of the instruction components for inclusion in the instruction file. The selected instruction component can be an Xgrid instruction.
In a second general aspect, a computer-implemented method for acquiring and processing media content includes receiving, from a first device and at a second device configured to generate a recording, a command regarding a recording session for the recording. The first device is configured to perform any of several post-processing operations on the recording. The method includes performing, at the second device and in response to receiving the command, at least one operation in relation to the recording. The method includes forwarding, to the first device and from the second device, the recording and an instruction file specifying at least one of the post-processing operations to be performed on the recording.
Implementations can include any or all of the following features. The command can instruct the second device to do at least one task selected from the group consisting of: starting the recording, pausing the recording, stopping the recording, forwarding the recording and the instruction file, acquiring metadata for the instruction file, and combinations thereof. There can be performed, at the first device and in response to the recording and the instruction file, the at least one post-processing operation on the recording to form a processed recording. The first device can further make the processed recording available as specified in the instruction file. The instruction file can instruct the first device to make the processed recording available as a podcast. Generating the recording, forwarding the recording and the instruction file, and performing the at least one post-processing operation can form an automated workflow. The second device can generate the recording at a presentation given by a lecturer, and the automated workflow can flow from the lecturer to a student. The lecturer can initiate the recording using a portal, meta data regarding the recording can be captured using the portal for use in generating the instruction file, and the processed recording can be made available through the portal. The recording can be at least one type selected from the group consisting of: an audio recording, a video recording, an audiovisual recording, a device screen recording, a whiteboard recording, and combinations thereof. The method can further include receiving meta data in connection with the command and using the meta data in generating the instruction file. At least part of the meta data can be forwarded by the first device, and the first device can have captured the metadata upon receiving an input that prompted the first device to forward the command. The post-processing operation can include at least one operation selected from the group consisting of: a coding or decoding operation, an operation of adding meta data, compression or decompression, formatting, posting, and combinations thereof. An Xgrid instruction can be included in the instruction file. XML code can be included in the instruction file.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGSFIG. 1 is a schematic diagram illustrating an architecture for dynamically capturing, processing, and distributing media.
FIGS. 2A-2E are block diagrams illustrating various capture devices and agent configurations.
FIG. 3 is a flow chart illustrating a workflow for an agent in on-line and off-line modes.
FIG. 4 is a schematic diagram illustrating an architecture of an agent.
FIGS. 5A-5G are flow charts illustrating examples of Xgrid jobs that are dynamically configured by the agent using a predefined template.
FIGS. 6A-6F are text blocks illustrating portions of a template file.
FIG. 7 is a schematic diagram illustrating a general computer system Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTIONFIG. 1 is a schematic diagram illustrating anarchitecture100 for dynamically capturing, processing, and distributing media. Thearchitecture100 as described in this example allows content (e.g., lectures and other classroom related activities) to be automatically captured and distributed over networks. Thearchitecture100 can be used in other non-academic environments such as, capturing business meetings (e.g., board meetings or sales meetings) and distributing them to individuals (e.g., shareholders or remote sales persons) that did not attend the meeting but have a vested interest in what occurred.
Thearchitecture100 includes one or more locations (e.g., class rooms)102, providing connections to aprivate network104 and apublic network106. Thearchitecture100 also includes one ormore administrators108 as well as remote participant (e.g.,student)devices110 and otherexternal services112 connected to public networks (104 and114). For example, theadministrator108 can configure the architecture so that media capturing services are available in aclass room102 during a lecture, and students can later access capturedmedia using devices110.
In this implementation, thearchitecture100 provides a fully automated workflow from the content producer (e.g., teacher) to the content consumer (e.g., student). That is, the teacher can initiate the media capture and the captured media content can thereafter be post-processed before it is made available to others in thearchitecture100. Media includes audio, video, images, digital content and computer outputs, to name a few examples. Metadata captured with the teacher's initiation, over thepublic network106, can be used by anagent118 in adapting a template for defining the one or more post-processing steps. The adapted template can be sent with the acquired media over theprivate network104. Post-processing steps include, but are not limited to, encoding or copying the acquired media and providing it with searchable metadata. Post-processing steps are described in more detail in examples below with reference toFIGS. 5A-5G
By way of example, a student-teacher distribution model is discussed further below. Eachclass room102 includes ateacher device116, amedia recording agent118, and acapture device120. Thearchitecture100 can be used for recording of any activity in theclassroom102, such as audio/video or content on theteacher device116. The recorded content can be distributed over a network, such as by podcasting. Podcasting is a method used to distribute media over a network where feeds are updated when new media is available. Feeds include, but are not limited to, Rich Site Summary (RSS) feeds. As the feeds are updated, subscribers to the feeds are notified and may download the new content contemporaneously or at some later point in time. For example, a subscriber can be notified through an email notification, or use a feed aggregator that can check a list of feeds and display the feeds that have been updated.
Theteacher device116 can be a desktop, laptop, a portable electronic device, a cellular phone, a personal digital assistant or some other device capable of sending and receiving data. Theteacher device116 is here connected to thepublic network106 and can be used to initiate a recording session. As another example, the teacher can use the device to make a presentation to the attendees in the classroom and this content can be captured and later processed. As will be described below, an advantage of some implementations is that theagent118 has a control plugin architecture, and this can provide very flexible ways of communicating with the agent. In such implementations, the teacher device can be the Mac remote control available from Apple Computer, or a dedicated applet on a cellphone, or any web capable device, to name a few examples.
Themedia recording agent118 receives one or more commands, for example from theprivate network104. Themedia recording agent118 can reside on a computer and dynamically capture, process, and distribute media captured from thecapture device120, optionally together with template-based commands for processing the same. For example, the agent can be a software program for capturing media content and for automatically initiating one or more predefined post-processing operations. One suitable computer to house the media recording agent is a Mac Mini®, available from Apple Computer, Cupertino, Calif.
Thecapture device120 can be used to capture the media content in the classroom. The capture device can include a camcorder, microphone, or other capture device, and is connected to themedia recording agent118. Various capture device and media recording agent configurations are described in more detail in reference toFIGS. 2A-2E.
Theprivate network104 is connected to aweb portal122, abatch processing system124, afile sharing system126, and network andstorage services128. Theweb portal122,batch processing system124, andfile sharing system126 are here considered part of a back-office system, meaning that they perform some of the functions involved in the workflow from the teacher to the students. For example, thebatch processing system124 andfile sharing system126 can be accessible only to authorized users and devices and can generally be confined to a secure digital environment. For example, the back-office can be protected by one or more firewalls, require a hardwire connection, or employ other safety measures.
Theweb portal122 can provide an interface for the teacher to initiate the recording, and can later provide links or pointers to media that have been processed by thebatch processing system124. For example, such pointers or links can make the content accessible to one or more users connected to theweb portal122 through thepublic network106. For example, a student can connect to thepublic network106, access theweb portal122, and download media generated by the teacher that has been automatically captured, processed and posted. As a particular example, a recording associated with a specific teacher can, after the appropriate post-processing, be posted on a blog associated with that teacher.
Thebatch processing system124 receives one or more recordings from theclass rooms102 and performs processing using its computational resources according to specific commands. For example, themedia recording agent118 can use a predefined template to generate a list of commands for the back office to generate media in a specific resolution using a specific compression, upload it to thefile sharing system126, or to update the feed information for subsequent downloads. Thebatch processing system124 can interpret the received commands and can, for example, divide the compression computations across more than one computer. One suitable batch processing system is based on the Xgrid® controller, developed by Apple Computer, Cupertino, Calif. The Xgrid controller can split a predefined job into so-called Xgrid tasks to be performed. The commands used to initiate such processing, or executable instructions representing such commands, will be referred to herein as “Xgrid instructions”.
Thefile sharing system126 can store and retrieve information such as recordings and distribute the information to other devices connected to thepublic network106 or theprivate network104. For example, thefile sharing system126 can retrieve a requested video recording and stream it to one or more of thestudent devices110 through theweb portal122.
Some implementations use Xsan technology at all server system levels. Xsan is a storage area network (SAN) management solution available from Apple Computer that also requires Fiber Channel. In one implementation, the file sharing server is only used for Ethernet systems (e.g., the agent) to upload captured content. In other words, in such implementations thefile sharing server126 acts as a bridge between Ethernet and the Fiber Channel Xsan. Web Portal servers can then access the content directly at thestorage service132. Using Xsan with Xgrid technology (to be described below) can provide good scalability and bandwidth, for example if many Web Portal servers or batch processing servers are to be used.
The network andstorage services128 includenetwork services130 andstorage services132. The network services130 can be connected to both thepublic network114 and theprivate network104. The network services130 can facilitate the network communications between the one ormore agents118 and the back-office, to name one example. Thestorage service132 manages access to storage devices, for example those used in storing captured media before, during, or after the post-processing operations. Storage requests can be received from both public and private networks including, for example, a SAN.
One ormore administrators108 manage thearchitecture100, including device and user access to theprivate network104. Administrators can have a dedicated connection to the private network through thenetwork service130. A virtual private network (VPN) can be used to enable the dedicated connection.
Thestudent devices110 can interface with the web portal through thepublic network106. Devices include computers, iPods® available from Apple Computer, Cupertino, Calif., PDAs, cell phones, and other devices capable of receiving and displaying media content. In one implementation, the captured and processed media is made available to the student(s) in the form of a podcast. Students may wish to view or review a podcast because, for example, they were unable to attend a lecture, or they want to revisit a specific lecture.
Students can subscribe to one or more podcast feeds. As new media is generated and uploaded to the file sharing system, the feeds can be updated. For example, the file sharing server can access thestorage service132 to store the content. The subscribers can be automatically and can download or view (e.g., stream) the newly generated media at any time thereafter. Subscriptions can be free or require a fee.
External services112, in one implementation, use traditional internet protocols to communicate with other devices and users on the World Wide Web. Example protocols include, network time protocol (NTP), domain name system (DNS), and simple mail transfer protocol (SMTP). For example, theexternal services112 can be requested by theagent118 for any of the media contents being uploaded, and can subsequently be used in the post-processing of such contents.
FIGS. 2A-2E are block diagrams illustrating various capture device and agent configurations. The figures illustrate example configurations for capturing audio, audio plus video, or audio plus screen images, and an ingest station for simulating a recording. For example, the recording agents in any of the illustrated implementations can be configured to capture content and process it for distribution as a podcast, such agents being referred to herein as podcast agents. Any or all of the examples of configurations can be used in thearchitecture100.
As shown inFIG. 2A, acamcorder202 is attached to anagent204 in theclass room102, capturing both audio and video. The camcorder can be attached to the agent through, for example, a FireWire cable. Camcorders in such implementations can include any camcorder that accepts a FireWire connection. For example, the teacher can activate thecamcorder202 to make an audiovisual recording of a lecture and theagent204 can upload the captured content to the back-office with instructions for post-processing it.
As shown inFIG. 2B, in theclass room102, aprojector206 is attached to aVGA splitter208. The VGA splitter is attached to aVGA converter210 and acomputer212. The VGA converter is also attached to anagent204. For example, the VGA converter captures the content from theinteractive whiteboard216, and can convert it to FireWire. Other interfaces can be used, for example digital visual interface (DVI). Theagent204 is connected to an audio-indevice214. The computer is also attached to aninteractive whiteboard216.
The audio-in214 device includes any device that captures audio. Suitable audio-in devices include, but are not limited to, an ambient microphone or a directional audio system. Audio-in devices are connected to theagent204 through, for example, universal serial bus (USB) connections. Captured audio can be sent to theagent118 through the USB connection.
Thecomputer212 can capture media that represents modifications to theinteractive whiteboard216. An example of a suitable white board is an Activboard® available from Promethean Technologies Group Ltd., Lancashire, United Kingdom.
Theprojector206 displays the video, allowing people in the room (e.g., students and the teacher) to view the video as it is being captured by theagent204. TheVGA splitter208 splits the VGA signal between theVGA converter210 and theprojector206. For example, the VGA splitter can provide theagent204 with captured content from theinteractive whiteboard216 or theprojector206, or both. The VGA converter can convert VGA to DV FireWire.
As shown inFIG. 2C, theprojector206 and an audio-indevice214 are attached to thecomputer212 in theclass room102. The computer also includes anagent204. As described previously, the audio-in device includes devices that capture audio. Captured audio can be sent to the computer. As described previously, theprojector206 displays images. Thecomputer212 can record images, as shown by the projector, when the teacher performs a screen capture operation. For example, thecomputer112 is part of a Mac system available from Apple Computer. Recorded images and received audio can be sent to theagent204 for uploading and processing. In one implementation, the computer also captures content from an interactive whiteboard,
As shown inFIG. 2D, in theclass room102, audio can be captured by connecting the audio-indevice214 to theagent204. As described previously, suitable audio-in devices include ambient microphones and directional audio systems.
As shown inFIG. 2E, inclass room102, acomputer212 can also include an ingeststation218. An ingest station simulates a recording by using media already available. An ingest station can manage previously recorded media through the file transfer protocol (FTP). An ingest station can communicate with thebatch processing system124 using, for example, an Xgrid controller. In situations such as simulations, the agent can be run in off-line mode.
In each of the above examples, theagent204 can be provided with a suitable media interface for capturing the content. For example, in one implementation the agent can use a FireWire interface to capture from thecamcorder202, or a USB connection to capture content from theinteractive whiteboard216.
FIG. 3 is a flow chart illustrating anexample workflow300 for an agent, such as a podcast agent, in both on-line and off-line modes. For example, in an implementation that has a control plugin architecture virtually any kind of mechanism (i.e., a cellphone or Mac remote control) can be used to interact with the agent and control it. Some implementations, such as the one to be described, has an intermediary entity (i.e., the back office) between the controller and the agent.
In an on-line mode, the teacher can initiate the session by connecting to the web portal. While connected to the web portal, the teacher can enter information about the recording session directly, or the information can be automatically inferred through a login procedure. The web portal generates an initial set of keys from the information entered by the teacher. For example, the initial set of keys can indicate an author name, a room name, a title, a description, a username, or a password. This information can later be used in instructing the back-office to post-process the captured media. In response to the teacher initiating the recording session, the back-office sends the START command to thepodcast agent204.
The START command triggers the podcast agent to begin recording media instep302. While the media is being recorded, the podcast agent can control the recording instep304. For example, the podcast agent can pause, continue, stop, start, or obtain the status of the recording, optionally upon prompting by the teacher or the back-office. That is, an input by the teacher can be routed via the back office to the agent to control the recording. The podcast agent can receive and process commands from the teacher device using the same command transport as described above.
The recording ends upon a predetermined event, such as when the teacher device sends a command to stop recording. In such an implementation, this teacher command can trigger the back-office to send a STOP command to the agent. Once a STOP command from the back-office is received, the podcast agent saves, instep306, the recorded media locally. For example, the agent saves the file to a hard drive located on a Mac Mini.
The podcast agent also saves, instep308, properties of the newly captured media. Example properties include run length, media type, file extension, and creation date. The properties are also stored locally in this implementation.
The stored media and properties are uploaded and queued by the podcast agent, instep310, for processing. FTP can be used to communicate with the storage service and upload the saved media to the file sharing system. The agent can send an instruction file in connection with the captured content to direct the back-office how to post-process the recording.
After the upload is completed, a job (e.g., an Xgrid post-processing job) is generated instep312. For example, the job can be generated in thebatch processing system124 based on instructions generated by the agent. The parameters of the job can be based on keys passed to the agent by the web portal, keys internal to the specific podcast agent, and a pre-defined template which includes the tasks, binaries and data to apply, to name one example.
The generated job is submitted to the batch processing system instep314. For example, an Xgrid job can be submitted to an Xgrid controller through a pre-defined interface. Examples of Xgrid jobs are described in more detail in reference toFIGS. 5A-5G.
Once the job has been successfully submitted, the podcast agent can remove some or all local files instep316. For example, the captured media content and the parameters specific to the recording session that were used to direct the post processing can be removed. The job can be processed by the batch processing system in parallel. In one implementation, the podcast agent has no further responsibilities regarding the newly submitted media and post-processing steps. After the post-processing, the resulting media presentation, such as a podcast, can be published, distributed or broadcast according to the instructions from the agent.
Media that is created off-line can also be sent to the podcast agent. Media can be recorded off-line instep318, for example using traditional recording methods. A device that is connected to a podcast agent can thereby communicate with the back-office. For example, the agent can capture media from any or all of the devices shown inFIGS. 2A-2D while in off-line mode. Media that is created off-line and sent to the podcast agent can later be uploaded, queued, and processed when the agent is in on-line mode, for example using the same steps (308-314) as described above.
FIG. 4 is a schematic diagram illustrating an example of an architecture400 that can be used in theagents118. The example architecture400 can be implemented on thecomputer212, or in the back-office, or distributed between the two. The agent includes alogic core402, arecording engine404, anotification center406, one or more control-plugin interfaces408, one or more control-plugins410, apost processing engine412, and apost process module414. The agent can be initially configured using aconfiguration file416. The configuration file can specify back-office configurations for a particular back-office implementation. For example, the configuration file can specify that the agent is to be installed on a Mac Mini computer and interface with a camcorder. As another example, the configuration file can contain preferences for the operation of the agent.
Thelogic core402 is responsible for communicating with and activating other subcomponents of the agent and ensures proper execution of the agent, for example as described in reference toFIG. 3.
Therecording engine404 is responsible for executing recording requests. For example, such requests include start, stop, pause, continue, and status requests. The recording engine can be activated by the core to perform a recording. For example, the recording engine can perform a recording in any or all of H.264, Digital Video (DV), MPEG4, or raw digital image output.
Thenotification center406 is here an internal system to communicate and share functionalities between plugins. The notification center communicates with thecore402 through aqueue418. The notifications can be placed in thequeue418, and subsequently processed by thecore402 according to a predetermined protocol.
The control-plugins410 allow the agent400 to be configured to receive commands for controlling the recording. For example, the plugins can define how the teacher can initiate or terminate the recording session. In one implementation, the control plugins are interfaces between theteacher device116 and theweb portal122. Control-plugins can also provide methods allowing the agent to access various subsystems within the back-office. Keys that are defined by theconfiguration file416 can be overwritten by keys contained within a plugin. Control-plugins include, for example, a web service control-plugin for specifying the operations performed in theweb portal122 and a telnet control-plugin for allowing theagent118 to control operations in the back-office.
As a particular example, one or more actions (such as start, stop, . . . ) can be received by any or all of the plugins. This can trigger the core to activate the recording engine to do the recording. The control plugin can be one used by the web portal. As another example, a plugin can do start or stop automatically based on a calendaring system. As another example, a plugin can handle the signal from a remote control. Other plugins can be used.
The control-plugin interfaces408 allow the control-plugin to communicate with thelogic core402 and allow the logic core to execute the methods exposed by the control-plugin interfaces. For example, thelogic core402 can use the web server plugin interface to specify a weblog to update. Theinterfaces408 can also provide that plugins be generated and implemented locally, for example by the learning institution that runs the Mac Mini computer.
Thepost processing engine412 configures a batchprocessing template file422 for use with one or more recordings of media content. The post processing engine can queue the configuration changes using aqueue420. The configurations can be placed in thequeue420, and subsequently processed by thecore402 according to a predetermined protocol. In one implementation, the post-processing engine can perform FTP upload, Xgrid job generation and Xgrid job submission.
Thepost process module414 can perform Xgrid post processing, for example based on a submitted job. The post process module can perform its processing based oncomponents424. For example, the components can include binaries and parameters. Thequeue420 can queue completed recordings before the agent post-processing stage. For example, this can provide that a new recording can be started right after another has been stopped, while the agent is de-queuing thepost-processing queue420. In one implementation, theengine412,module414 andqueue420 can enable the agent to start and stop recordings one after the other while the agent queues the next stage after a recording.
The batchprocessing template file422 can be configured by modifying the template's argument values used by thecomponents424. For example, the template can be configured to specify Xgrid instructions where the components include Xgrid components. In such implementations, exemplary components can include binaries such as PodcastServerXgridQTEncoder or PodcastServerXgridSetQTAnnotation, which can be provided for performing operations such as re-encoding or posting a new weblog entry. Other components can be used. Once configured, the commands specify how the post-processing should be performed, for example as an Xgrid job, which is processed by thebatch processing system124. That is, the components (e.g., binaries) can be part of the agent and can be executed in the back office by an Xgrid system. In some implementations, including the components in the agent can provide the advantage that they can be injected directly into the generated job (such as an Xgrid job). Then, the binaries required by the back office can automatically be submitted, eliminating or reducing the need to install additional software on the Xgrid back office system.
The use of the batchprocessing template file422 can provide advantages in the workflow. For example, the template can facilitate that the workflow is dynamically adaptable for the particular circumstances of each recording. As another example, the template can provide good scalability to the overall architecture such that the implementation can be used for handling few but very complex recordings, and also to handle many recordings of a simple nature.
In one implementation, one or more of the architecture features is a thread. This can provide advantageous asynchronicity and parallelism. Any of thecore402,recording engine404,notification center406,interfaces408,post-processing engine412 andpost process module414 can be a thread. For example, therecording engine404 and thepost process module414 can be temporary threads, and the others permanent threads. In one implementation, thepost processing module414 is created as an instance of thepost-processing engine412 to do the agent post-processing of a just completed recording.FIGS. 5A-5G are flow charts illustrating various examples of Xgrid jobs that can be dynamically configured by the podcast agent using predefined templates. The templates are used by the podcast agent to generate the Xgrid jobs. Thus, the Xgrid jobs in this example can be generated and submitted as part of the automated workflow from the teacher to the student. In one implementation, the steps shown inFIGS. 5A-G are done by the back office system (FIG. 1) using an Xgrid computer.
The podcast agent can dynamically configure the template to specify, for example, the type of encoding, QuickTime® metadata, the storage location, the weblog location, and the notification email list. QuickTime is developed by Apple Computer, Cupertino, Calif. and the metadata can be provided to make to QuickTime content searchable with a search engine.
FIG. 5A illustrates an Xgrid job sequence501 that can encode an audio signal as part of the post-processing. The audio signal can be encoded instep510 with Advanced Audio Coding (AAC). The podcast agent can specify an audio channel (e.g., mono or stereo) and a sample rate (e.g.,24,32,44, or48).
The encoded audio signal can than be combined512 with QuickTime metadata for Spotlight®, developed by Apple Computer, Cupertino, Calif. Spotlight is a search tool that allows a user to find a file on a host computer. The metadata can specify indexing information that Spotlight can use to run searches. Metadata includes, but is not limited to, an author, a comment, a copyright, a director, and keywords. Any combination of metadata can be included as specified by the podcast agent.
The encoded audio with added metadata can then be copied instep514 to a storage location. For example, the podcast agent specifies the storage location within the back-office, such as thefile sharing system126. The storage location can then be copied instep516 to a weblog. The podcast agent specifies, for example, the username, password, and location for the appropriate weblog. The weblog provides access for others, such as the students, to the captured media content that has now been processed.
The administrator and the author can then be notified instep518 e.g., using email once the previously mentioned steps are completed and the content is ready to be distributed. Distribution can be handled automatically through the use of podcast feeds.
FIG. 5B illustrates anXgrid job sequence502 that can encode a video signal with audio as part of the post-processing. The video signal can be encoded instep520 using H.264 encoding, for example to compress the video content. The audio signal can be encoded using the previously described AAC encoding. The podcast agent can specify the codec quality. For example, such qualities include low, medium, high, or lossless. The podcast agent can specify the image width and image height. For example, the audio and video compression can be performed consistent with the playback properties of an iPod device available from Apple Computer, Cupertino, Calif.
TheXgrid job sequence502 also contains steps512-518 for adding QuickTime metadata, copying the encoded video to a storage location, automatically posting a link in a weblog and generating notification emails, for example as described in reference toFIG. 5A.
FIG. 5C illustrates an Xgrid job sequence503 that can, as part of the post-processing, encode a video signal with audio and combine the encoded signal with a static introductory or closing portion for use on an iPod. As described with reference to5B, the podcast agent can specify the audio and video compression instep520. The podcast agent can also specify the portion that instep522 is to be concatenated at the start or appended to the end of the video sequence. For example, a university can include an introductory video portion for introducing the learning institution or for specifying the terms of use for the captured video.
The Xgrid job sequence503 also contains steps512-518 for adding QuickTime metadata, copying the encoded video to a storage location, automatically posting a link in a weblog and generating notification emails, for example as described in reference toFIG. 5A.
FIG. 5D illustrates an example where the automated workflow has two or more parallel paths. Particularly, anXgrid job sequence504 can encode media in more than one way. Using thesequence504, multiple types of media (e.g., audio only, video only, or audio plus video) can be post-processed at various resolutions using various encodings. For example, this allows the recipients of the media to choose the media format that best suits their access device.
As described previously with reference toFIG. 5B, video and audio can be encoded, instep520, for use in an iPod. As described previously with reference toFIG. 5A, audio can be encoded instep510. As described previously with reference to FIG5B, video and audio can be encoded. However, the podcast agent can specify in step524 a quality of good, for example to keep the video signal at its originally capture size.
TheXgrid job sequence504 also contains steps512-518 for adding QuickTime metadata, copying the encoded video to a storage location, automatically posting a link in a weblog and generating notification emails, for example as described in reference toFIG. 5A.
FIG5E illustrates an example where the post-processing includes one or more steps that are common to sequential paths. Particularly, an Xgrid job sequence505 includes a common encoding step and also generates streaming media. The method contains steps previously described inFIGS. 5A,5B, and5D.
The podcast agent can also create, instep526, streaming movie references for the encoded video. A streaming movie reference can create video at various data compressions, allowing the content to be accessed by a variety of connection speeds (e.g., 56 Kbits/sec or 1 Mbit/sec), for example.
The streaming movie reference can be copied, instep514, to the user's home directory. The encoded video can also be copied to the user's streaming directory in the parallel path, as shown instep528. When a user points to a streaming movie reference, their media player (e.g., QuickTime) can automatically choose the best movie for their connection speed.
In addition to the links described previously, a link to the streaming media can also be posted to the user's weblogs, as shown instep516. As described previously, the podcast agent can also generate, instep518, a notification (e.g., an email).
FIG. 5F illustrates an Xgrid job sequence506 that can use a default recording hinted for streaming. The method can usesteps526 and528 described previously in reference toFIG. 5E to stream a hinted movie. The remaining steps of the method can be similar to those described previously with reference toFIG. 5A.
Step530 is entitled “Hint original high quality movie” and is here different from thestep524 in the previous figure. Particularly, thestep530 is not re-encoded. Rather, the original recording from the agent is used. Hinting a movie, as shown instep530, can involve analyzing the media data within a movie and creating hint tracks which can tell the streaming server software how to package the data to send over the network. Thestep530 can reduce the workflow execution time. For example, the hinting process can offload computation-intensive operations from the streaming server (e.g., the web portal122) and therefore can reduce the server's operating overhead and permits the server to serve more content (e.g., media), to name one example.
FIG. 5G illustrates an Xgrid job sequence507 that can begin by dynamically generating an introduction movie instep532. The dynamically generated movie can include, for example, a title, author name, date, and a school logo. The remaining steps of the method can be similar to those described previously with reference toFIGS. 5A-5F.
The examples described above with reference toFIGS. 5A-G illustrate that, in one implementation, the system can be used to design a workflow to simplify repetitive tasks and associate this to automatic recording. For example, one or more new tasks that are added can communicate with an existing school database, or upload the files to a new location, or automatically inform another learning institution of the new content.
FIGS. 6A-6F are text blocks illustrating portions of an example of a template file that can be configured to control the workflow (e.g., from the teacher to the student), for example by specifying the post-processing operations that are to be performed. The template file describes an example sequence for post-processing audio and video content, such as the one described with reference toFIG. 5B. Each template can be specified with the unique information for a particular recording. For example, the room number, the author, the compression type, the storage location, an introductory movie, the metadata, or an email notification list can be specified.
FIG. 6A illustrates a portion of a template file that can be used to initialize an Xgrid job. This portion allows the podcast agent to specifyroom information602 and theadministrator email604, for example. The initialization portion also can specifymethods606 that are to be executed by the Xgrid job. It is noted that the binaries enclosed by the symbols “##” are injected during job creation. As described previously, the initialization portion can be specified with unique information for the particular recording. For example, the room name and the administrator email.
FIG. 6B illustrates a portion of a template file that can be used to encode media. PodcastServerXgridQTEncoder identifies the encoding for the media source file and astring610 identifies the specified destination file based on predefined settings. As described previously, the encoding portion can be specified withunique information612 for the particular recording. In one implementation, this step is a re-encoding of the media. For example, PodcastServerXgridQTEncoder can support all QuickTime codecs and detailed setup to re-encode for any or all of 3G, JPEG, DV, Sorenson or H.264.
FIG. 6C illustrates a portion of a template file that can be used to add QuickTime metadata for Spotlight. The portion is identified as PodcastServerXgridSetQTAnnotation and allows the podcast agent to dynamically define annotations614 used as search criteria including the author name, the room name, the title, and the description, to name a few examples. As described previously, adding the metadata can provide unique information for the particular recording. For example, the author name, the room name, the title, and the recording's description can be provided.
FIG. 6D illustrates a portion of a template file that can be used to copy the encoded media file to the user's home directory. The command can specify a command to be run616 (e.g., the cp, or copy, command). The podcast agent can dynamically specify the arguments of the command, such as therecording directory path618 and the author'shome directory620. The arguments of the command can exist, for example, in the agent's configuration file. As described previously, the copy command can be specified with unique information for the particular recording. For example, the source location of the recording or the location to copy the recording to can be specified.
FIG. 6E illustrates a portion of a template file that can be used to create the weblog entry. The portion is identified as PodcastServerXgrisCreateWeblogEntry and allows the podcast agent to dynamically definevarious aspects622 of the weblog entry. For example, the podcast agent can specify the username, the password, the category, the tile, and the description of the entry. As described previously, the portion pertaining to entering a weblog can be specified with unique information for the particular recording.
FIG. 6F illustrates a portion of a template file that can be used to notify the administrator and the author via email. The portion is identified as PodcastServerXgridSendMail.p1 and can send email using, for example, an SMTP server The podcast agent can dynamically define theconfiguration parameters624 used to specify the server and generate the email. For example, the podcast agent can specify the SMTP server, one or more administrator names, one or more administrator emails, the author's name and the podcast location. As described previously, the email generation portion is specified with unique information for the particular recording.
FIG. 7 is a block diagram illustrating ageneral computer system700. The system can be used for the operations described above according to one implementation.
Thesystem700 includes aprocessor710, amemory720, astorage device730, and an input/output device740. Each of thecomponents710,720,730, and740 are interconnected using asystem bus750. Theprocessor710 is capable of processing instructions for execution within thesystem700. In one embodiment, theprocessor710 is a single-threaded processor. In another embodiment, theprocessor710 is a multi-threaded processor. Theprocessor710 is capable of processing instructions stored in thememory720 or on thestorage device730 to display graphical information for a user interface on the input/output device740.
Thememory720 stores information within thesystem700. In one embodiment, thememory720 is a computer-readable medium. In one embodiment, thememory720 is a volatile memory unit. In another embodiment, thememory720 is a non-volatile memory unit.
Thestorage device730 is capable of providing mass storage for thesystem700. In one embodiment, thestorage device730 is a computer-readable medium. In various different embodiments, thestorage device730 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
The input/output device740 provides input/output operations for thesystem700. In one embodiment, the input/output device740 includes a keyboard and/or pointing device. In one embodiment, the input/output device740 includes a display unit for displaying graphical user interfaces.
The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the invention can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The invention can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.