Maven2 + Red5 + Xuggle
This time I would like to invite you to my project jakubiak-red5, the purpose of which is the combination of the following technologies : Red5, Xuggle and Maven2. Xuggle is a tool for the conversion of video images in real-time. Red5 is a server of multimedia applications. Maven2 is the most efficient tool for organizing the process of building applications. My goal is to combine them all together.
My project is ,in fact it is a building script. It is supposed to be an instruction for Maven2 on how to build server Red5 and a (Java) part of Xuggle library. Let’s have a look on how it works. In SVN repository there is a structure of the Maven project, along with the files pom.xml. The source code of Red5 and Xuggle libraries does not change because it is connected to the source code of the original projects using svn:externals. All you need to do in order to build a project is to write mvn clean install. I assume that each Java programmer is already a fan of Maven or will become such in a future, so there is no need to dwell on it any more.
The results of work are the dependencies that can be used in a new project – a new Red5 based application (or Red5 and Xuggle based).
Welcome to a battle-field!
What we need is Xuggle. The installation of Xuggle Instalacja Xuggle jest prosta seems to be suprisingly simple, compared to the capability of this library (at least for Windows) Setup.exe.
The next installation is Red5. I recommend you to try wersje 0.8RC2 version. Again, follow the procedure setup.exe. For Windows you will need a 32-bit Java.
One more thing – a binary Maven2. Download, unzip and try out.
Finally, you need to download the sources of my project:
svn checkout http://jakubiak-red5.googlecode.com/svn/trunk/ jakubiak-red5-read-only
This command is supposed to download the sources of my project as well as the sources of Red5 server, and partly the sources of Xuggle project. Now it’s time for a testing compilation:
cd jakubiak-red5-pom/
mvn clean install
cd ../jakubiak-xuggle-pom/
mvn clean install
Yet, before we can finally see this long expected message, we need to use the Internet to download a few dependencies which, for a couple of reasons, might not be found in depositories and they are not downloaded automatically.
It’s a testing time now. You need to publish on the Red5 server the examples build by my script ; in other words, just copy the directories:
cp -r jakubiak-red5-oflaDemo/target/jakubiak-red5-oflaDemo-0.8-SNAPSHOT/ ../../Program Files (x86)/Red5/webapps/
cp -r jakubiak-xuggle-xuggler-red5-videotranscoder/target/jakubiak-xuggle-xuggler-red5-videotranscoder-1.0-SNAPSHOT/ ../../Program Files (x86)/Red5/webapps/
net start Red5
Once we start up the internet browser, we can try out a few examples:
If we want to see Xuggle “in action”, we need to connect to the application videotranscoder: rtmp://localhost/videotranscoder using the Publisher program. The name of the stream should be preceded by a prefix “xuggle_“.
My library Jakubiak-red5 to some extend replaces the usual building process. Red5 and Xuggle are built by means of Apache Ant and Ivy (I am genuinely thrilled hearing these names). I, on the other hand, prefer building them using Maven2. It is quite a complex and time-consuming process, yet it is definitely worth the shot, because it enables me to create applications combining lots of fascinating technologies, for example: JPA, Spring. I can also create the WAR application including Red5 and Xuggle, which will then be started up on Apache Tomcat 6. Moreover, I can enjoy working with Eclipse IDE. To sum up, it offers lots of opportunities.
However, the most significant fact is that my library does not modify the sources of Xuggle and Red5 projects.
One of the alternatives to my building script would be to add the libraries of JAR, Red5 and Xuggle straight to the Maven repository. But, this method will not be sufficient in building WAR version of Red5 application. WAR version is extremely useful, but I will return to this issue next time.
All other settings do not require any changes. I just turn on the camera and the microphone and begin a video session.
The name of the stream is antek. In order to see the results of Xuggle operations I start the option “View”. The name is xuggle_antek.
After severals hours of trials and errors and
