Matt Dyson


My life and everything in it

Introduction

MediaMixer is a small program I wrote for use at the 2009 Van Mildert College Fashion Show, with the aim of being able to switch between multiple live camera inputs in order to create a software based video mixer. To fufil these criteria, I used the Java Media Framework (JMF) and Swing (for GUIs).

The program was designed and written from scratch in under two weeks, and was successfully used at the fashion show without any issues!

Since JMF is no longer supported, and Sun are expected to release a better framework for working with multimedia, I will probably not do any more work on this software. However, I have chosen to release the software here in order that people can take it and adapt to their own needs. The basic framework can be adapted to take any kind of input, and could even be applied to a cheap home CCTV system!

Source code will be available here soon

How to use it

Due to the short development time, the actual camera inputs are hard-coded into the program in the VideoMixer.java file. The inputs can be any source that JMF will accept, such as VFW or RTP. Change these inputs to what you desire, and then run VideoMixer.java. A preview window will appear for each input, with a mixing desk and output window, which can be fullscreened.

For use in the show, I had a separate monitor with the output, which was cloned to two projectors (pictures to follow). A separate monitor was used for preview and mixing. Several other laptops with cameras and video capture cards were then networked to this central PC, each of which was set up to stream the camera input as RTP over the network, which the central PC then took in and used. This lead to some slight latency issues, however with a better network setup this could work extremely well!

Limitations

Obviously, at this stage the software is extremely limited - however if you are willing to put a bit of time and effort it, it could look extremely professional!

Currently, there are no video transitions (a last-minute bug foiled this), however the groundwork is there. The preview window freezes when that input is sent to output due to a limitation with JMF, however it may be possible to work around this.

Caveat

This product is not an example of best coding practice, nor is it completely flawless. Use at your own risk!

However - note that it was used without fault at a very large production