<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmer's testimony &#187; Xuggle</title>
	<atom:link href="http://en.jakubiak.info/tag/xuggle/feed" rel="self" type="application/rss+xml" />
	<link>http://en.jakubiak.info</link>
	<description>My experience with: Java, JEE, Adobe Flex, PHP, Video</description>
	<lastBuildDate>Wed, 25 Nov 2009 19:02:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Maven2 + Red5 + Xuggle</title>
		<link>http://en.jakubiak.info/2009/02/26/maven2-red5-xuggle.html</link>
		<comments>http://en.jakubiak.info/2009/02/26/maven2-red5-xuggle.html#comments</comments>
		<pubDate>Thu, 26 Feb 2009 11:19:11 +0000</pubDate>
		<dc:creator>Antoni Jakubiak</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Red5]]></category>
		<category><![CDATA[Xuggle]]></category>

		<guid isPermaLink="false">http://en.jakubiak.info/2009/02/26/maven2-red5-xuggle.html</guid>
		<description><![CDATA[ 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 [...]]]></description>
			<content:encoded><![CDATA[<p>
 </p><p>This time I would like to invite you to my project <a href="http://code.google.com/p/jakubiak-red5/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/jakubiak-red5/?referer=');">jakubiak-red5</a>, the purpose of which is the combination of the following technologies : Red5, Xuggle and  Maven2. <a href="http://www.xuggle.com/" onclick="pageTracker._trackPageview('/outgoing/www.xuggle.com/?referer=');">Xuggle</a> is a tool for the conversion of video images in real-time. <a href="http://osflash.org/red5" onclick="pageTracker._trackPageview('/outgoing/osflash.org/red5?referer=');">Red5</a> is a server of multimedia applications. <a href="http://maven.apache.org/" onclick="pageTracker._trackPageview('/outgoing/maven.apache.org/?referer=');">Maven2</a>  is the most efficient tool for organizing the process of building  applications. My goal is to combine them all together.</p><p>
		<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/022609-1119-maven2red511.png" alt=""/>
	</p><p>
 </p><p>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&#8217;s have a look on how it works.  In <a href="http://code.google.com/p/jakubiak-red5/source/browse/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/jakubiak-red5/source/browse/?referer=');">SVN repository</a> there is a structure of the Maven project, along with  the files <em>pom.xml</em>.  The source code of Red5 and Xuggle libraries does not  change because it is connected to the source code of the original projects using <a href="http://svnbook.red-bean.com/en/1.0/ch07s03.html" onclick="pageTracker._trackPageview('/outgoing/svnbook.red-bean.com/en/1.0/ch07s03.html?referer=');">svn:externals</a>. All you need to do in order to build a project is to write  <em>mvn clean install. </em>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.
</p><p>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). 
</p><p>Welcome to a battle-field!
</p><p>What we need is Xuggle. The installation of Xuggle <a href="http://www.xuggle.com/xuggler/" onclick="pageTracker._trackPageview('/outgoing/www.xuggle.com/xuggler/?referer=');">Instalacja Xuggle jest prosta</a>  seems to be suprisingly simple, compared to the capability of this <span style="text-decoration:underline">library</span> (at least for Windows) Setup.exe.
</p><p>The next installation is Red5. I recommend you to try <a href="http://www.red5.org/" onclick="pageTracker._trackPageview('/outgoing/www.red5.org/?referer=');">wersje 0.8RC2</a> version. Again, follow the procedure setup.exe. For Windows you will need a 32-bit Java.
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/022609-1119-maven2red521.png" alt=""/>
	</p><p>One more thing &#8211; a binary <a href="http://maven.apache.org/" onclick="pageTracker._trackPageview('/outgoing/maven.apache.org/?referer=');">Maven2</a>. Download, unzip and try out.
</p><p>Finally, you need to download the sources of my project:
</p><p><pre><code>svn checkout http://jakubiak-red5.googlecode.com/svn/trunk/ jakubiak-red5-read-only
</code></pre></p><p>
 </p><p>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&#8217;s time for a testing compilation:
</p><p><pre><code>cd jakubiak-red5-pom/<br/>mvn clean install<br/>cd ../jakubiak-xuggle-pom/<br/>mvn clean install
</code></pre></p><p>
 </p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/022609-1119-maven2red531.png" alt=""/>
	</p><p>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.
</p><p>It&#8217;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:
</p><p><pre><code>cp -r jakubiak-red5-oflaDemo/target/jakubiak-red5-oflaDemo-0.8-SNAPSHOT/ ../../Program Files (x86)/Red5/webapps/<br/>cp -r jakubiak-xuggle-xuggler-red5-videotranscoder/target/jakubiak-xuggle-xuggler-red5-videotranscoder-1.0-SNAPSHOT/ ../../Program Files (x86)/Red5/webapps/<br/>net start Red5
</code></pre></p><p>
 </p><p>Once we start up the internet browser, we can try out a few examples: 
</p><ul><li><a href="http://localhost:5080/demos/ofla_demo.html" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/demos/ofla_demo.html?referer=');">http://localhost:5080/demos/ofla_demo.html</a>
		</li><li><a href="http://localhost:5080/demos/publisher.html" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/demos/publisher.html?referer=');">http://localhost:5080/demos/publisher.html</a>
		</li></ul><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/022609-1119-maven2red541.png" alt=""/>
	</p><p>If we want to see Xuggle &#8220;in action&#8221;, we need to connect to the application <strong><em>videotranscoder</em></strong>: <em>rtmp://localhost/videotranscoder</em> using  the <em>Publisher</em> program. The name of the stream should be preceded by a prefix <strong>&#8220;xuggle_</strong>&#8220;.
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/022609-1119-maven2red551.png" alt=""/>
	</p><p>My library <a href="http://code.google.com/p/jakubiak-red5/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/jakubiak-red5/?referer=');">Jakubiak-red5</a> 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.
</p><p>However, the most significant fact is that my library does not modify the sources of Xuggle and Red5 projects.
</p><p>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.</p>]]></content:encoded>
			<wfw:commentRss>http://en.jakubiak.info/2009/02/26/maven2-red5-xuggle.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to start Xuggle at Red5</title>
		<link>http://en.jakubiak.info/2009/02/02/how-to-start-xuggle-at-red5.html</link>
		<comments>http://en.jakubiak.info/2009/02/02/how-to-start-xuggle-at-red5.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 18:52:18 +0000</pubDate>
		<dc:creator>Antoni Jakubiak</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Red5]]></category>
		<category><![CDATA[Xuggle]]></category>

		<guid isPermaLink="false">http://en.jakubiak.info/2009/02/02/how-to-start-xuggle-at-red5.html</guid>
		<description><![CDATA[A big breakthrough today &#8211; I finally managed to start a Xuggle demo on the server Red5. I am really proud of this, because this kind of technologies will have a tremendous impact on further advancement in the Internet world. I have already given the details of the functioning of the tandem Xuggle and Red5. [...]]]></description>
			<content:encoded><![CDATA[A big breakthrough today &#8211; I finally managed to start  a <a href="http://www.xuggle.com/" onclick="pageTracker._trackPageview('/outgoing/www.xuggle.com/?referer=');">Xuggle</a> demo on the server <a href="http://osflash.org/red5" onclick="pageTracker._trackPageview('/outgoing/osflash.org/red5?referer=');">Red5</a>. I am really proud of this, because this kind of technologies will have a tremendous impact on further advancement  in the Internet world. I have already given the details of the <a href="http://en.jakubiak.info/2009/02/02/xuggle-red5-hello-world.html">functioning of the tandem Xuggle and Red5</a>. Now it is time to present how I have activated Xuggle and Red5 on my computer with Windows Vista64bit. <a href="http://en.jakubiak.info/2009/02/02/red5-–-the-installation-of-administrators-pane.html">I began with downloading and installing the latest version of the server Red5 &#8211; 0.8RC2</a>. Of course I also installed the Xuggle. All the Widnows versions are really easy to install &#8211;  by using the command: Setup.exe and restarting a computer.

What I did next was to create an web application archive, consisting of the following files:
<br/>
<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1852-howtostartx1.png" alt="" />

<br/>All the useful files can be found here:
<ol>
	<li><a href="http://xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler-red5/xuggle-xuggler-red5-1.17.117.jar" onclick="pageTracker._trackPageview('/outgoing/xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler-red5/xuggle-xuggler-red5-1.17.117.jar?referer=');">http://xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler-red5/xuggle-xuggler-red5-1.17.117.jar</a></li>
	<li><a href="http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.properties" onclick="pageTracker._trackPageview('/outgoing/xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.properties?referer=');">http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.properties</a></li>
	<li><a href="http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.xml" onclick="pageTracker._trackPageview('/outgoing/xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.xml?referer=');">http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/red5-web.xml</a></li>
	<li><a href="http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/web.xml" onclick="pageTracker._trackPageview('/outgoing/xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/web.xml?referer=');">http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler-red5/web/videotranscoder/WEB-INF/web.xml</a></li>
</ol>
I then saved my application in the folder <em>webapps </em>in the server Red5. Using the 32bit version of Java I started the server Red5. I also set the environment variables:

 
<pre><code>$ export | grep HOME
declare -x JAVA_HOME="C:\Program Files\Java\jdk1.6.0_10"
declare -x RED5_HOME="C:\Program Files (x86)\Red5"
declare -x XUGGLE_HOME="C:\Program Files (x86)\Xuggle"
</code></pre>
 

 

I started red5: <em>red5.bat. </em>For testing I used the demo application from the server Red5 &#8211; Publisher. <a href="http://localhost:5080/demos/publisher.html" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/demos/publisher.html?referer=');">http://localhost:5080/demos/publisher.html</a>. It is important to remember to connect to the <em>videotranscoder </em>application rather than <em>oflaDemo</em>.

<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1852-howtostartx2.png" alt="" />

All other settings do not require any changes. I just turn on the camera and the microphone and begin a video session.

<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1852-howtostartx3.png" alt="" />

The name of the stream is <em>antek</em>. In order to see the results of Xuggle operations I start the option &#8220;View&#8221;. The name is <em>xuggle_antek</em>.

<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1852-howtostartx4.png" alt="" />

After severals hours of trials and errors and <a href="http://groups.google.com/group/xuggler-users/browse_thread/thread/e6e6d95a1cb9fa46" onclick="pageTracker._trackPageview('/outgoing/groups.google.com/group/xuggler-users/browse_thread/thread/e6e6d95a1cb9fa46?referer=');">using</a>
<a href="http://www.xuggle.com/" onclick="pageTracker._trackPageview('/outgoing/www.xuggle.com/?referer=');">Art Clarke</a> I got it! I&#8217;ve finally seen my &#8220;second nature&#8221; &#8211; my second face<span style="font-family:Wingdings">J</span>

Thanks a lot, Art! In the next chapter I&#8217;m going to explain how to programme Xuggle using Eclipse and Maven 2. However, first I have to learn how to do it and, most importantly, EAT SOMETHING!

<img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1852-howtostartx5.png" alt="" />]]></content:encoded>
			<wfw:commentRss>http://en.jakubiak.info/2009/02/02/how-to-start-xuggle-at-red5.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Xuggle + Red5 = Hello World</title>
		<link>http://en.jakubiak.info/2009/02/02/xuggle-red5-hello-world.html</link>
		<comments>http://en.jakubiak.info/2009/02/02/xuggle-red5-hello-world.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 18:38:39 +0000</pubDate>
		<dc:creator>Antoni Jakubiak</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Red5]]></category>
		<category><![CDATA[Xuggle]]></category>

		<guid isPermaLink="false">http://en.jakubiak.info/2009/02/02/xuggle-red5-hello-world.html</guid>
		<description><![CDATA[I finally got it ! I managed to activate an example of the class Hello Word in tandem with Xuggle and Red5. Now, how does it work? In the internet browser I start the application which publishes the image from the digital camera of my laptop. This image is then being converted (processed?) on the [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got it ! I managed to activate an example of the class Hello Word  in tandem with <a href="http://www.xuggle.com/" onclick="pageTracker._trackPageview('/outgoing/www.xuggle.com/?referer=');">Xuggle</a> and <a href="http://osflash.org/red5" onclick="pageTracker._trackPageview('/outgoing/osflash.org/red5?referer=');">Red5</a>. 
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered51.png" alt=""/>
	</p><p>Now, how does it work? In the internet browser I start the application which publishes the image from the digital camera of my laptop. This image is then being converted (processed?) on the server by means of Xuggle. In this way the net surfers are able to see in their browsers the target  image that has been processed by a server. Welcome to the new era in the multimedia web applications!
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered52.png" alt=""/>
	</p><p>It seems to me that this application opens a window of new, amazing opportunities. For example, we can image a video conference which allows the participants to see each other&#8217;s if they were actually sitting together at one table:). Another possibility might be the server recognizing the users face and, as a result, greeting him with his name, nickname or some other familiar phrase. Or, for example, let&#8217;s say we visit the tourist agency website. We start our laptop&#8217;s web cam and, after a while, we could see the blissful image of ourselves resting in a hammock hanging between trees on the beautiful beach far away. 
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered53.png" alt=""/>
	</p><p>There is no doubt that the image of lying in a hammock is far more tempting than sitting at the computer desk. But let&#8217;s  go back to details. What is actually going on in the server area? The server &#8211; Red5 &#8211; receives the video from the user. This video is in the form of a data stream. It might contain an image, music or other data. The video stream is, of course, compressed. The server&#8217;s  is now required to decompress it so that we receive the successive shots (and this is the task performed by Xuggle and FFmpeg). In fact it reminds of the old-fashioned film tape, which has still been in use for movie-making in Hollywood. 
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered54.png" alt=""/>
	</p><p>As a  result of a video&#8217;s decompression we receive a sequence of pictures. What the server does next depends entirely of the imagination and goals of the web-site designers. Then the server compresses the sequence of pictures, thus creating a brand new video &#8211; a new data stream. The server can save the results of its operation, or create and access enabling an online transfer. 
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered55.png" alt=""/>
	</p><p>Obviously this method can be also used for the processing of sound. For instance, we can introduce some changes in popular communicators, such as <a href="http://www.skype.com/" onclick="pageTracker._trackPageview('/outgoing/www.skype.com/?referer=');">Skype</a> by adding the users&#8217; favourite music to the background, or creating other sounds typical for cafe, pub or other popular meeting places.
</p><p>As you can see, the server, which is supposed to perform so many  tasks, may be overloaded: it is responsible for decompression and compression of the audio / video stream, as well as processing images or sounds. During the system testing , the overload of my laptop went up to 10%. However, we should keep in mind that the server is performing a new operation, something that has never been done before . Something that might actually become a key to success. Personally I am convinced that the expected results are worth its costs, and it pays off to risk an occasional overload.
</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1838-xugglered56.png" alt=""/>
	</p><p>In my next article I am going to explain how to start and application Xuggle Hello World on the server Red5.</p>]]></content:encoded>
			<wfw:commentRss>http://en.jakubiak.info/2009/02/02/xuggle-red5-hello-world.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Red5 – the installation of administrator&#8217;s pane</title>
		<link>http://en.jakubiak.info/2009/02/02/red5-%e2%80%93-the-installation-of-administrators-pane.html</link>
		<comments>http://en.jakubiak.info/2009/02/02/red5-%e2%80%93-the-installation-of-administrators-pane.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 18:20:50 +0000</pubDate>
		<dc:creator>Antoni Jakubiak</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Red5]]></category>
		<category><![CDATA[Xuggle]]></category>

		<guid isPermaLink="false">http://en.jakubiak.info/2009/02/02/red5-%e2%80%93-instalacja-panelu-administratora.html</guid>
		<description><![CDATA[Briefly speaking, Red5 is a server of the multimedia web applications. It is undoubtedly booming right now; I have just managed to start the administrator&#8217;s panel and, since it is a complicated process, I find it reasonable to describe it here in order to remember it well. The first step is to load the latest [...]]]></description>
			<content:encoded><![CDATA[<p>Briefly speaking, <a href="http://osflash.org/red5" onclick="pageTracker._trackPageview('/outgoing/osflash.org/red5?referer=');">Red5</a> is a server of the multimedia web applications. It is undoubtedly booming right now; I have just managed to start the administrator&#8217;s panel and, since it is a complicated process, I find it reasonable to describe it here in order to remember it well.
</p><p><a href="http://osflash.org/red5" onclick="pageTracker._trackPageview('/outgoing/osflash.org/red5?referer=');"><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1820-red5theinst1.png" alt="" border="0"/></a>
	</p><p>The first step is to load the latest version of Red5 0.8RC2  from the website <a href="http://blog.xuggle.com/2009/01/28/red5-08-rc2-first-candidate-build/" onclick="pageTracker._trackPageview('/outgoing/blog.xuggle.com/2009/01/28/red5-08-rc2-first-candidate-build/?referer=');">Xuggle</a> . Then I install it according to instructions: I unzip and set the  environment variables <em>RED5_HOME. </em>The next thing to do is to start the <em>Installer</em> application : <a href="http://localhost:5080/installer/" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/installer/?referer=');">http://localhost:5080/installer/</a>, install the administer application and restart Red5. Thereafter, following the instructions provided on <a href="http://www.nabble.com/Admin-Username-password-td15699161.html" onclick="pageTracker._trackPageview('/outgoing/www.nabble.com/Admin-Username-password-td15699161.html?referer=');">forum</a>, I register at: <a href="http://localhost:5080/admin/register.html" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/admin/register.html?referer=');">http://localhost:5080/admin/register.html</a>  After registration I move to restarting Red5 again. Now I can finally log in: <a href="http://localhost:5080/demos/adminPanel.html" onclick="pageTracker._trackPageview('/outgoing/localhost_5080/demos/adminPanel.html?referer=');">http://localhost:5080/demos/adminPanel.html</a>
	</p><p><img src="http://en.jakubiak.info/wp-content/uploads/2009/02/020209-1820-red5theinst2.png" alt=""/>
	</p><p>Using the administrator&#8217;s panel I can view the list of active applications, find the active online users or check the transfer.</p>]]></content:encoded>
			<wfw:commentRss>http://en.jakubiak.info/2009/02/02/red5-%e2%80%93-the-installation-of-administrators-pane.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
