Red5 Backwards Compatibility Report

February 24, 2009

Update Period

06-FEB-2009 to 24-FEB-2009


We upgraded the JRuby and Groovy jars that we use. Also, Application Listeners now pay attention to return values.

Changes With Compatibility Impacts

Revision Description
R3544 Upgraded Groovy to 1.5.7, and updated associated dependencies
R3523 ApplicationListeners now pay attention to return values. That means you can use listeners to control appConnect(), roomJoin() etc. by returning false. If your current listeners return true, then no changes are required. If your current listeners return false, you will need to review and decide whether to return the right value.

More Details

For details on these and all other changes to red5:

Previous Reports

You can find the last report here.

What Is This Report

Red5 is under active development and as such APIs and the implementation are subject to change at any time.

To help with that problem and as a service to the Red5 team, every two weeks Xuggle publishes updates giving a summary of major changes since the last report that MAY require changes to your existing Red5 applications.

Other changes may have been made as well, but we do not expect them to cause backwards compatibility issues.

See here for more background.


February 24, 2009

Hi folks,

In case you couldn’t make it to Amsterdam for the Infrared5/Xuggle presentation, Robert and I recorded a new demo video just for you.

Check it out.

– Art

Xuggler 1.20 FINAL

February 19, 2009

Introducing Xuggler 1.20 – The First Official Release Get It Here.


1.20.FINAL is the first full release of Xuggler; thanks to everyone who tested to help us get here.

This release is the same as 1.19.RC5, but fixes the last critical bug we had.

Release Notes

Encoding Files on Windows

In some earlier releases encoding files on disk in Windows failed if you asked Xuggler to interleave data for you (Linux and Mac worked great), but encoding live streams on windows worked fine. We fixed the root cause of this in this release, and so Windows now works like Linux and Mac.

Convert Tool Can Strip Audio or Video

We introduced two new options to “-ano” strips out all audio and “-vno” strips out all video.

Latest FFMPEG Version

1.19.RC5 ships with FFMPEG version #17451 and libswscale version #28655.

Known Issues

There are no known critical issues in this release.

Issues Fixed

  • Issue #61: Windows encoding producing corrupted files
  • Issue #64: Seg Fault while running xugglerTestStreamCoderProperty.exe

Enhancements Added

  • Enhancement 65: would like way to have strip audio and video


No new tests were added, but several existing tests were modified to more quickly catch regressions of issue #61.

  • Java Tests: 179 (+0)
  • Native Tests: +0

Source Control Versions

Xuggle Version: 1.20.209.Final

– Hudson Good Build

Dynamic Revisions
    * svn:// : 17451
    * svn:// : 28655
    * : 170
    * : 205
    * : 209

- Static Dependencies
    * libx264:
    * libmp3lame: 3.98
    * libspeex: 1.2 RC1

On Windows, here's what we built our installer with:
    * Mingw gcc/g++ 4.2.4:
    * Msys 1.0.11
    * mingw-runtime 3.15.1
    * w32api 3.13
    * gmake 3.81
    * binutils 2.91
    * yasm
    * Msys Perl 5.6
    * Ant 1.7
    * Java JDK 1.5
    * MSFT C++ Visual Studio 2005
    * NullSoft NSIS Installer  2.42
    * SWIG 1.3.36 modified with doc gen capabilities
    * Subversion 1.5

It’s Always Darkest Before the Dawn

February 18, 2009

We’ve been frantically getting ready for FITC and we’re just about there. Except for one little detail.

As we posted earlier, our code was failing to encode files to disk on Windows but worked elsewhere, and it had been eluding us for a few weeks now. Well last night in a fit of madness, we uncovered the error.

We’ll have a fix out later today, and that (drum roll please) will also be our official Xuggler release. That is, we’re no longer Beta. Have at it folks!

– Art

p.s. in case anyone was curious, you can read about it on the ffmpeg-devel users list (details here).

Request for Help

February 17, 2009

Hi folks,

We’re close to calling Xuggler a final release — just one critical issue remains. Unfortunately it’s a doozy and we haven’t been able to track it down.

It’s Issue #61: encoding files on disk is broken on Microsoft Windows. It works great on any other operating system, and strangely encoding live video works great on Windows as well. Just encoding to disk is broken.

We spent the entire weekend (and then some) trying to get to the bottom of this, and while we have some clues, we’re not there yet. But we could use some help. We think it’s a memory corruption problem only showing up on Windows, but we have no tool to verify. We’d like to use IBM’s Rational Purify tool, but it costs $900, which is beyond our current budget.

If anyone can donate a Rational Purify license to us, we’d really appreciate it. If you can, e-mail me at aclarke (at) Otherwise, we’ll keep hammering away on this, but we don’t have an ETA for a fix yet (hard to know that without a cause).

Thanks for your patience,

– Art & Robert

FITC Amsterdam

February 15, 2009

Hi folks,

Just wanted to let you know Robert and I will be visiting Amsterdam next weekend for the FITC conference. We’ll actually be demoing Xuggler live on stage during the Innovating with Red5 presentation. If you’re going to be there, please stop by and say hi. We’ll also be hanging out at the Infrared5 booth during the show.

– Art

Xuggler 1.19.RC5

February 12, 2009

Introducing Xuggler 1.19 Release Candidate 5. Get it here.


1.19.RC5 is a new feature release and a bug fix release. And there are some big changes:

  • Support for encoding h.264 video using libx264
  • We now expose all FFMPEG AVOption configuration options for use in Xuggler
  • As usual, we include the latest FFMPEG version
  • And a few other interesting features you can find out about in the details.


H.264 Encoding Support

First off, big thanks to Georges-Etienne Legendre who stepped up and provided the starting edits for h.264 support. Georges has submitted the 2nd change from the community (his contribution is licensed under LGPL).

We support h.264 support with libx264 out of the box now by building libx264 along with Xuggler. This enables the FFMPEG libx264 codec.

There are a few known issues with h.264 encoding right now. First, libx264 does not pass all of our Valgrind memory check tests, but doesn’t appear to crash the Java Virtual Machine so we’re enabling it anyway. Second, we’re seeing some issues under windows. See further in this note for details.

IConfigurable Exposes FFMPEG Configuration Options

FFMPEG‘s libav library has a lot of configurable options. The ffmpeg command-line tool exposes a bunch of them as:

  • AVCodecContext AVOptions
  • AVFormatContext AVOptions
  • SWScaler AVOptions

We now expose 100% of those options, using the same option names and valid settings on the following interfaces:

  • IStreamCoder
  • IContainer
  • IVideoResampler

We do this with the new IConfigurableinterface which all those options implement. To use, you can write code such as:

IStreamCoder coder = stream.getStreamCoder();
coder.setProperty("flags", "+cgop+umv");
coder.setProperty("me_method", "+esa");
coder.setProperty("qcomp", 0.6);
double example = coder.getPropertyAsDouble("qcomp");;

You can also query all available options, and potential settings using IConfigurable. For an example of this, pass -Dxuggle.options to the GetContainerInfo demo.

java -cp $XUGGLE_HOME/share/java/jars/xuggle-xuggler.jar -Dxuggle.options com.xuggle.xuggler.demos.GetContainerInfo yourfile.mpg

Latest FFMPEG Version

1.19.RC5 ships with FFMPEG version #17166 and libswscale version #28537.

The FFMPEG team is preparing for an actual release, tentatively named 0.5 Bikeshed. That release should come out around the end of February 2009. This version of Xuggler contains an early version of that (the FFMPEG team is not planning to add new features between now and 0.5 — just bug fixes).

We’ll release another Xuggler once FFMPEG 0.5 goes final, but if you want, you can always use the latest Xuggler tip-of-tree build to get the latest FFMPEG.

Flushing buffered packets

You can use IContainer.flushPackets(); to tell Xuggler to flush any buffered packets to its output. By default Xuggler will buffer until it has a default buffer size (which you can configure). It defaults to 32k of data. However if you’re writing to a network, it can be handy to force a flush. Hence this method.

YASM Support

If you install yasm on your machine, then when we build Xuggler we’ll include lots of assembly optimizations for libx264 and FFMPEG.

Other Minor Changes

  • Support for some new PixelFormat types
  • Support for getting the current URL from an IContainer
  • Support for using assembly optimizations on all supported platforms if you’ve installed yasm

Known Issues

Windows Encoding for non FLV Containers Broken

We have some encoding issues on Windows that we’re trying to fix. Right now encoding h.263 into an FLV container does work (and hence our Red5 integration works).
But other containers (for example MOV) seem to get corrupted data. We’re trying to figure out why (the ffmpeg.exe we ship with works correctly). Let us know if you have ideas why.

Make Sure You Clean Build Tree Before Build If Using SVN

If you just update your svn checkout of Xuggler, you’ll need to do a ant clobber before you rebuild. Sorry.

Issues Fixed

  • Issue #43: jerkyness of java video filters
  • Issue #58: Errors when decoding mp3 audio
  • Issue #14: com.xuggle.xuggler.ConvertTest output doesn’t play in Quicktime
  • Issue #51: non monotone timestamp error thrown when transcoding video WITH audio
  • Issue #54: 1.18.142 No video output using
  • Issue #40: -vbitrate not being honored
  • Issue #55: DecodeAndCaptureFrames demo captures frames at incorrect interval
  • Issue #49: Backup Hudson
  • Issue #48: The Hudson Build Server runs out of disk space frequently

Enhancements Added


  • Java Tests: 179 (+17)
  • Native Tests: +4

Source Control Versions

Xuggle Version: 1.19.189.RC5

– Hudson Good Build

– Dynamic Revisions (From Hudson)
* svn:// : 17166
* svn:// : 28537
* : 170
* : 153
* : 189

– Static Dependencies
* libx264:
* libmp3lame: 3.98
* libspeex: 1.2 RC1

On Windows, here’s what we built our installer with:
Mingw gcc/g++ 4.2.4:
Msys 1.0.11
mingw-runtime 3.15.1
w32api 3.13
gmake 3.81
binutils 2.91
ActivePerl 5.10
Ant 1.7
Java JDK 1.5
MSFT C++ Visual Studio 2005

NullSoft NSIS Installer 2.42
SWIG 1.3.36 modified with doc gen capabilities
Subversion 1.5

Red5 and Xuggler Updated Documentation

February 11, 2009

Hi folks,

We updated the documentation somewhat on our web page for how to get the Red5 and Xuggle’s Xuggler demos working.  We’ve also linked to a most awesome screen-shot by screen-shot tutorial from Antoni Jakubiak.  Check it out.

And for those who are wondering, RC5 will be released by end of this week.  We’re trying to track down some Windows encoding issues, but otherwise the release is ready, and has 1 or 2 really cool new features.

Stay tuned.

– Art

Good Sample Code for Shared Objects with Red5 and Flex

February 8, 2009

Rob Silverton has put together some sample Flex code for using Shared Objects with a media server, and then shown sample code for the server-side application in both Red5 Java and Adobe Flash Media Server Server-Side ActionScript.  It’s pretty simple, but powerful.  Check it out.

It’s based on 0.8.RC1, but should work with 0.8.RC2 even better.

– Art

Announcing Red5 0.8

February 7, 2009

Infrared5 released Red5 0.8 final two weeks ago.  Currently the site is down (with no estimate for when it will work), but you can find it (and the Red5 source) on the googlecode site.

It’s official: Red5 0.8 Release Candidate 2 (RC2) is now live. Visit: and click on the RC2 link.

Now, some thanks are in order:
1) Thank you to Mondain.
This release involved a lot of people, but would not have happened without Mondain — it would have been dead on arrival. If you haven’t sent hugs to your friendly neighborhood Mondain, do so now.

2) Big thanks (props) to, well, YOU!
The outpouring of support from the community was great. We had over 20 people sign up for testing, along with many others who didn’t “sign up” in advance. We had people submit patches and unit tests to fix our open bugs. I’m not going to name folks individually (too many), but the spirit of cooperation is exactly what Red5 needs. Keep up the good work.

3) Lastly thanks to Infrared5
Infrared5 ( is a company that does some interesting Flash and Web projects, and in addition to running a great business, also encourages their employees to give back to open source projects, and donates equipment for hosting behind the scenes. That’s why we have Mondain’s, Dominick’s, and many other’s time. If you’re a manager, but have folks on your team who are chomping at the bit to work on Red5, you could really learn from what Infrared5 does, and actively give your engineers time to give back to Red5. You’ll find it not only helps the community; it helps your business too!

Now the team is moving onto Release Candidate 3 (and hopefully our last 0.8 release). The plan for that is:

  • Fix the Red5 War install (you can’t install Red5 0.8.RC2 as a WAR in another Tomcat instance; we hope to fix that).
  • Fix a few remaining bugs in our Windows Installers and hopefully auto-build them.
  • Despite the name “Release Candidate”, we’ll likely add a few new features as well. Specifically stay tuned for a slight but powerful change in how Listeners work!

After that, who knows. I’m not big on predicting too far 🙂

That’s all, and have a great weekend!

– Art & the rest of the Red5 Team