Opencast Developer Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

Google Summer of Code Ideas Page

Ideas a plenty!  There's lots to do and this is a great place to flesh out some of our community proposed ideas and parking lot features.  The goal is to attract students with fun, tractable, and useful projects.  Please edit as you see fit, and feel free to volunteer up as a mentor.  Remember, a short term coder can turn into a long time contributor over night!

Students; if you're new to Opencast check out what we're all about on our announcement video or our latest promo video .

Ideas

Web-based video editor

Difficulty: Easy - Medium
Knowledge Requirements: Various, might include: Flex/Flash, Ajax/HTML, Java, REST-based web services, FFMPEG usage, Gstreamer and Java/OSGI depending on student background knowledge
Potential Mentors: cab938, mket

Social video sites are everywhere, but 5 minute snipits of lectures aren't really as effective as dropping in the whole thing.  But wouldn't it be nice if an instructor or technician could clean them up a bit by cropping; trimming, adding some intro, and maybe some nice overlays?  Not only would it make videos look more professional, but it would might increase usability too.
We can do this using final cut, or adobe premier, but this project is all about building a web-based solution.  With powerful media tools on the back end (e.g. ffmpeg, gstreamer), a clear services oriented framework, and rich internet applications on the front end (e.g. adobe flex/flash, html 5), it's well within reach.
In consultation with mentors, the student involved in this project will hive off the front end interactive tools, the back end services and composition logic, or both, to create a stunning and useful basic video editor.  Beyond integrating it into opencast, it can be made available for other open source projects as a stand alone package.

Processing video for single-stream delivery

Difficulty: Medium
Knowledge Requirements: FFMPEG, Java, image manipulation libraries, other options available (Python/PIL, Gstreamer), mobile development experience a bonus
Potential Mentors: cab938

Lectures are often made up of multiple streams (e.g. a talking head of the instructor and the powerpoints).  By using cue points, we can transform one stream into another (e.g. via a fade technique) to provide a single stream delivery of multiple streams.  Selecting cue points is a key component of this work, though previous work done on the REPLAY project (now part of Matterhorn) and the Recollect project have demonstrated the tractability of doing this automatically.  Single stream delivery of multiple lecture artifacts is particularly relevant for personal media players and smartphones (e.g. iPhone), where screen real estate is at a premium.  The ideal candidate for this will feel comfortable working with or learning image manipulation toolkits (e.g. PIL for python, OpenCV, or others), and open to not only creating routines to merge video but services to expose these routines to the workflow engine in Matterhorn.

Enriching recordings with additional images

Difficulty: Medium
Knowledge Requirements: Javascript, HTML, Java, XML
Potential Mentors: rrolf

Although Matterhhorn supports the recording of multiple video-streams this is not always possible in the production. So it would be great to be able to enrich the recording afterwards with images that provide additional information. These images may be uploaded one after the other or would be taken from a presentation (PowerPoint or PDF). There are several points in the Matterhorn workflows where such a function could be added. One would be to create an additional hold-state during the processing of the mediapackage where the user can upload the material and sync it with the video. Among the technical implementation one of the challenges here is to create an interface that makes the autoring efficent.

Visual Workflow Definition Editor

Difficulty: Medium - Hard
Knowledge Requirements: Javascript, HTML, Java, XML
Potential Mentors: rrolf

Matterhorn uses workflow definitions that concatinate several small workflows to adopt the system to the needs of the institution that uses Matterhorn. Encoding, analysis, distribution workflows can be added or removed from these workflow definitions just like it is needed for a current purpose. Currently these workflow definitions are created in XML files, but it would be great if this could be done by less experienced administrators from within the admin web-interface. The main challenge here is to create an implementation that knows what parameters a workflow has, what type of result this workflow creates and how this it can connect these workflows to each other. The implementation must be generic, as developers will create new workflows frequently and these new workflows should be deployable and itegrateable to Matterhorn without to much efford for the admin.

Matterhorn Market Place

Difficulty: Medium
Knowledge Requirements: Javascript, HTML, Java
Potential Mentors: rrolf

The first modules for Matterhorn have emerged that will not be part of a default Matterhorn distribution, because it may replicate already existing functions or depends on commercial services. But despite this restrictions these modules may be usefull to quite a lot Matterhorn administrators. Additional to modules which offer new functionality, workflow definitions and encoding settings could be provided by a market place. This market place should not be used financial transactions but simply to give an overview over the existing enhancements and provide an easy way to install these new features. In the distribution part this market place could be integreated into Matterhorn's admin UI and if an enhancement is selected it could already be deployed to Matterhorn (in many cases even without a restart). On the other side we need a website where people can upload the modules workflow definitions, etc. that they want to offer.

Web-based Remote Capture

Difficulty: Easy - Medium
Knowledge Requirements: Adobe Flash/Flex, Javascript, HTML
Potential Mentors: rrolf

Big Blue Button (BBB) already integrates with Matterhorn for the recording of web-meetings. For many scenarios it would be great to have an even simpler version of this, where only the lecturer and his presentation will be recorded. This should be done without any additional hardware needed (except a mic and a webcam), and it would be great if not even software would need to be installed on the lecturers machine. So with some modifications to the BBB setup or a new module for Red5 such a remote capture system could be created.

Draw Markup on Video

Difficulty: Medium
Knowledge Requirements: Javascript, HTML
Potential Mentors: rrolf

Matterhorns own Engage Player is currently enhanced with an comment feature. This cufeature is currently text based. It would be a very valuable improvement to place an HTML5 canvas over the video(s) that allows the user to draw annotations on the video.

Securing Streams from external Servers

Difficulty: Medium
Knowledge Requirements: Java, Javascript, Apache, Lighttpd, Red5, (Wowza), (Adobe Media Server)
Potential Mentors: rrolf

Mattherhorn has gained authn/authz abilities in the last releases. Unfortunately the streams from the Streaming Servers or from external Web Servers are still unprotected and could be watched by anyone. Currently Red5 and Lighttpd are the recommended servers to dirstribute the streams.

Social Network Integration

Difficulty: Medium
Knowledge Requirements: Java, Javascript, HTML, XML, OpenSocial
Potential Mentors: rrolf

Currently Matterhorn can be integrated into typical university enterprise systems with LTI, LDAP, CAS and other standards. For certain scenarios (small universities, external companies, etc.) it may be interesting to do their usermanagment with a social network instead. So it would be great to integrate Matterhorn with the facebook, google+ and OpenSocial APIs.


Title: Gstreamer-based video composition service
Difficulty: Hard
Knowledge Requirements: C, Java, gstreamer framework
Potential Mentors:
Description:


Title: Blob tracking
Difficulty: Medium - Hard
Knowledge Requirements: OpenCV
Potential Mentors:
Description:


  • No labels