Using Tomcat 6.0.20 an error occurs in MapperListener and I cant find any
new information on using Tomcat Embed. The problematic area in 6.0.20 is
here:
    private void registerHost(ObjectName objectName)
        throws Exception {
        String name=objectName.getKeyProperty("host");
        if( name != null ) {

            Host host = (Host) ServerFactory.getServer().findService(
                    domain).getContainer().findChild(name);

            String[] aliases = host.findAliases();
            mapper.addHost(name, aliases, objectName);
            host.addContainerListener(this);
            if(log.isDebugEnabled())
                log.debug(sm.getString
                     ("mapperListener.registerHost", name, domain));
        }
    }

In 6.0.18 the same method is quite different:
    private void registerHost(ObjectName objectName)
        throws Exception {
        String name=objectName.getKeyProperty("host");
        if( name != null ) {
            String[] aliases = (String[])
                mBeanServer.invoke(objectName, "findAliases", null, null);
            mapper.addHost(name, aliases, objectName);
            if(log.isDebugEnabled())
                log.debug(sm.getString
                     ("mapperListener.registerHost", name, domain));

        }
    }

I didn't see any info about this in the release notes, nor on the tomcat
site. Is there additional setup work that I need to do when using Tomcat
within Red5?

With 6.0.20 this exception occurs:

2009-06-03 21:26:17,119 [main] DEBUG o.apache.catalina.startup.Embedded -
Adding connector (org.apache.catalina.connector.Connector/2.1)
2009-06-03 21:26:17,119 [main] DEBUG o.a.catalina.connector.Connector -
Creating name for connector red5Engine:type=Connector,port=5080
2009-06-03 21:26:17,135 [main] INFO  o.a.coyote.http11.Http11Protocol -
Initializing Coyote HTTP/1.1 on http-5080
2009-06-03 21:26:17,151 [main] INFO  o.a.coyote.http11.Http11Protocol -
Starting Coyote HTTP/1.1 on http-5080
2009-06-03 21:26:17,166 [main] WARN  o.a.c.connector.MapperListener - Error
registering contexts
java.lang.NullPointerException
at
org.apache.catalina.connector.MapperListener.registerHost(MapperListener.java:332)
[catalina-6.0.20.jar:na]
at
org.apache.catalina.connector.MapperListener.init(MapperListener.java:129)
[catalina-6.0.20.jar:na]
at org.apache.catalina.connector.Connector.start(Connector.java:1146)
[catalina-6.0.20.jar:na]
at org.red5.server.tomcat.TomcatLoader.init(TomcatLoader.java:424)
[red5.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_10]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[na:1.6.0_10]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[na:1.6.0_10]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_10]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
[spring-beans-2.5.6.jar:2.5.6]
at java.security.AccessController.doPrivileged(Native Method) [na:1.6.0_10]
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
[spring-beans-2.5.6.jar:2.5.6]
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
[spring-context-2.5.6.jar:2.5.6]
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
[spring-context-2.5.6.jar:2.5.6]
at org.red5.server.Launcher.launch(Launcher.java:60) [red5.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_10]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[na:1.6.0_10]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[na:1.6.0_10]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_10]
at org.red5.server.Bootstrap.bootStrap(Bootstrap.java:106) [boot.jar:na]
at org.red5.server.Bootstrap.main(Bootstrap.java:50) [boot.jar:na]
2009-06-03 21:26:17,166 [main] DEBUG o.a.catalina.connector.Connector -
register Mapper: red5Engine:type=Mapper,port=5080

*In 6.0.18 we have a working setup:*
2009-06-03 21:50:15,557 [main] DEBUG o.apache.catalina.startup.Embedded -
Adding connector (org.apache.catalina.connector.Connector/2.1)
2009-06-03 21:50:15,572 [main] INFO  org.red5.server.tomcat.TomcatLoader -
Starting Tomcat servlet engine
2009-06-03 21:50:15,572 [main] INFO  o.apache.catalina.startup.Embedded -
Starting tomcat server
2009-06-03 21:50:15,572 [main] DEBUG o.apache.catalina.startup.Embedded -
Setting naming prefix=org.apache.naming
2009-06-03 21:50:15,572 [main] DEBUG o.a.catalina.core.StandardEngine -
Register red5Engine
2009-06-03 21:50:15,776 [main] INFO  o.a.catalina.core.StandardEngine -
Starting Servlet Engine: Apache Tomcat/6.0.18
2009-06-03 21:50:15,776 [main] DEBUG o.apache.catalina.core.StandardHost -
Register host 0.0.0.0 with domain red5Engine
2009-06-03 21:50:15,776 [main] DEBUG o.apache.catalina.core.StandardHost -
XML validation disabled
2009-06-03 21:50:15,807 [main] DEBUG o.a.catalina.startup.ContextConfig -
ContextConfig: Initializing
2009-06-03 21:50:15,807 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/] configuration file C:\dev\red5\java\server\trunk\dist
conf/context.xml
2009-06-03 21:50:15,854 [main] DEBUG o.a.catalina.startup.ContextConfig -
Successfully processed context [/] configuration file
C:\dev\red5\java\server\trunk\dist conf/context.xml
2009-06-03 21:50:15,854 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/] configuration file
C:\dev\red5\java\server\trunk\dist\conf red5Engine/
0.0.0.0/context.xml.default
2009-06-03 21:50:15,854 [main] DEBUG o.a.catalina.core.StandardContext -
Starting /
2009-06-03 21:50:15,854 [main] DEBUG o.a.catalina.core.StandardContext -
Registering j2eeType=WebModule,name=//
0.0.0.0/,J2EEApplication=none,J2EEServer=none for null
2009-06-03 21:50:15,854 [main] DEBUG o.a.catalina.core.StandardContext -
Configuring default Resources
2009-06-03 21:50:15,979 [main] DEBUG o.a.catalina.core.StandardContext -
Processing standard container startup
2009-06-03 21:50:16,010 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,path=/,host=0.0.0.0 red5Engine:j2eeType=WebModule,name=//
0.0.0.0/,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,010 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname =
red5Engine:type=Valve,name=StandardContextValve,path=/,host=0.0.0.0
2009-06-03 21:50:16,010 [main] DEBUG o.apache.catalina.startup.TldConfig -
 Accumulating TLD resource paths
2009-06-03 21:50:16,010 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning <taglib> elements in web.xml
2009-06-03 21:50:16,010 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF subdirectory
2009-06-03 21:50:16,026 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/red5-web.properties subdirectory
2009-06-03 21:50:16,026 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/red5-web.xml subdirectory
2009-06-03 21:50:16,026 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/web.xml subdirectory
2009-06-03 21:50:16,354 [main] DEBUG o.apache.catalina.startup.TldConfig -
Adding tld listeners:0
2009-06-03 21:50:16,354 [main] DEBUG o.a.catalina.startup.ContextConfig -
ContextConfig: Processing START
2009-06-03 21:50:16,354 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/] web configuration resource
file://C:\dev\red5\java\server\trunk\dist\conf\web.xml
2009-06-03 21:50:16,354 [main] DEBUG o.a.catalina.core.StandardContext -
Setting deployment descriptor public ID to 'null'
2009-06-03 21:50:16,369 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[default]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/]
2009-06-03 21:50:16,385 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[jsp]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/]
2009-06-03 21:50:16,463 [main] DEBUG o.a.catalina.startup.ContextConfig -
Parsing application web.xml file at jndi:/0.0.0.0//WEB-INF/web.xml
2009-06-03 21:50:16,463 [main] DEBUG o.a.catalina.core.StandardContext -
Setting deployment descriptor public ID to 'null'
2009-06-03 21:50:16,463 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[gateway]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/]
2009-06-03 21:50:16,463 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[rtmpt]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/]
2009-06-03 21:50:16,557 [main] DEBUG o.a.c.a.AuthenticatorBase - No
SingleSignOn Valve is present
2009-06-03 21:50:16,557 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,path=/,host=0.0.0.0 red5Engine:j2eeType=WebModule,name=//
0.0.0.0/,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,557 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname =
red5Engine:type=Valve,name=NonLoginAuthenticator,path=/,host=0.0.0.0
2009-06-03 21:50:16,572 [main] DEBUG o.a.catalina.startup.ContextConfig -
Configured an authenticator for method NONE
2009-06-03 21:50:16,572 [main] DEBUG o.a.catalina.startup.ContextConfig -
Pipeline Configuration:
2009-06-03 21:50:16,572 [main] DEBUG o.a.catalina.startup.ContextConfig -
org.apache.catalina.authenticator.NonLoginAuthenticator/1.0
2009-06-03 21:50:16,572 [main] DEBUG o.a.catalina.startup.ContextConfig -
org.apache.catalina.core.StandardContextValve/1.0
2009-06-03 21:50:16,572 [main] DEBUG o.a.catalina.startup.ContextConfig -
======================
2009-06-03 21:50:16,572 [main] DEBUG o.a.c.core.NamingContextListener -
Bound StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/]
2009-06-03 21:50:16,572 [main] DEBUG o.a.c.core.NamingContextListener -
Creating JNDI naming context
2009-06-03 21:50:16,619 [main] DEBUG o.a.catalina.core.StandardContext -
Configuring application event listeners
2009-06-03 21:50:16,619 [main] DEBUG o.a.c.c.C.[.[0.0.0.0].[/] - Sending
application start events
2009-06-03 21:50:16,619 [main] DEBUG o.a.c.c.C.[.[0.0.0.0].[/] - Starting
filters
2009-06-03 21:50:16,713 [main] DEBUG o.a.catalina.core.StandardContext -
Starting completed
2009-06-03 21:50:16,713 [main] DEBUG o.a.catalina.core.StandardContext -
Checking for red5Engine:j2eeType=WebModule,name=//
0.0.0.0/,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,713 [main] DEBUG o.a.catalina.startup.ContextConfig -
ContextConfig: Initializing
2009-06-03 21:50:16,713 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/installer] configuration file
C:\dev\red5\java\server\trunk\dist conf/context.xml
2009-06-03 21:50:16,729 [main] DEBUG o.a.catalina.startup.ContextConfig -
Successfully processed context [/installer] configuration file
C:\dev\red5\java\server\trunk\dist conf/context.xml
2009-06-03 21:50:16,729 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/installer] configuration file
C:\dev\red5\java\server\trunk\dist\conf red5Engine/
0.0.0.0/context.xml.default
2009-06-03 21:50:16,744 [main] DEBUG o.a.catalina.core.StandardContext -
Starting /installer
2009-06-03 21:50:16,744 [main] DEBUG o.a.catalina.core.StandardContext -
Registering j2eeType=WebModule,name=//
0.0.0.0/installer,J2EEApplication=none,J2EEServer=none for null
2009-06-03 21:50:16,744 [main] DEBUG o.a.catalina.core.StandardContext -
Configuring default Resources
2009-06-03 21:50:16,744 [main] DEBUG o.a.catalina.core.StandardContext -
Processing standard container startup
2009-06-03 21:50:16,744 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,path=/installer,host=0.0.0.0
red5Engine:j2eeType=WebModule,name=//
0.0.0.0/installer,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,744 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname =
red5Engine:type=Valve,name=StandardContextValve,path=/installer,host=0.0.0.0
2009-06-03 21:50:16,744 [main] DEBUG o.apache.catalina.startup.TldConfig -
 Accumulating TLD resource paths
2009-06-03 21:50:16,744 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning <taglib> elements in web.xml
2009-06-03 21:50:16,744 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF subdirectory
2009-06-03 21:50:16,744 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/red5-web.properties subdirectory
2009-06-03 21:50:16,744 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/red5-web.xml subdirectory
2009-06-03 21:50:16,744 [main] TRACE o.apache.catalina.startup.TldConfig -
Scanning TLDs in /WEB-INF/web.xml subdirectory
2009-06-03 21:50:16,869 [main] DEBUG o.apache.catalina.startup.TldConfig -
Adding tld listeners:0
2009-06-03 21:50:16,869 [main] DEBUG o.a.catalina.startup.ContextConfig -
ContextConfig: Processing START
2009-06-03 21:50:16,869 [main] DEBUG o.a.catalina.startup.ContextConfig -
Processing context [/installer] web configuration resource
file://C:\dev\red5\java\server\trunk\dist\conf\web.xml
2009-06-03 21:50:16,885 [main] DEBUG o.a.catalina.core.StandardContext -
Setting deployment descriptor public ID to 'null'
2009-06-03 21:50:16,885 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[default]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/installer]
2009-06-03 21:50:16,885 [main] DEBUG o.a.catalina.core.ContainerBase - Add
child StandardWrapper[jsp]
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/installer]
2009-06-03 21:50:16,916 [main] DEBUG o.a.catalina.startup.ContextConfig -
Parsing application web.xml file at jndi:/0.0.0.0/installer/WEB-INF/web.xml
2009-06-03 21:50:16,916 [main] DEBUG o.a.catalina.core.StandardContext -
Setting deployment descriptor public ID to 'null'
2009-06-03 21:50:16,932 [main] DEBUG o.a.c.a.AuthenticatorBase - No
SingleSignOn Valve is present
2009-06-03 21:50:16,932 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,path=/installer,host=0.0.0.0
red5Engine:j2eeType=WebModule,name=//
0.0.0.0/installer,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,932 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname =
red5Engine:type=Valve,name=NonLoginAuthenticator,path=/installer,host=0.0.0.0
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.startup.ContextConfig -
Configured an authenticator for method NONE
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.startup.ContextConfig -
Pipeline Configuration:
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.startup.ContextConfig -
org.apache.catalina.authenticator.NonLoginAuthenticator/1.0
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.startup.ContextConfig -
org.apache.catalina.core.StandardContextValve/1.0
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.startup.ContextConfig -
======================
2009-06-03 21:50:16,932 [main] DEBUG o.a.c.core.NamingContextListener -
Bound
StandardEngine[red5Engine].StandardHost[0.0.0.0].StandardContext[/installer]
2009-06-03 21:50:16,932 [main] DEBUG o.a.c.core.NamingContextListener -
Creating JNDI naming context
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.core.StandardContext -
Configuring application event listeners
2009-06-03 21:50:16,932 [main] DEBUG o.a.c.c.C.[.[0.0.0.0].[/installer] -
Sending application start events
2009-06-03 21:50:16,932 [main] DEBUG o.a.c.c.C.[.[0.0.0.0].[/installer] -
Starting filters
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.core.StandardContext -
Starting completed
2009-06-03 21:50:16,932 [main] DEBUG o.a.catalina.core.StandardContext -
Checking for red5Engine:j2eeType=WebModule,name=//
0.0.0.0/installer,J2EEApplication=none,J2EEServer=none
2009-06-03 21:50:16,947 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,host=0.0.0.0 red5Engine:type=Host,host=0.0.0.0
2009-06-03 21:50:16,947 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname = red5Engine:type=Valve,name=AccessLogValve,host=0.0.0.0
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,host=0.0.0.0 red5Engine:type=Host,host=0.0.0.0
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname = red5Engine:type=Valve,name=ErrorReportValve,host=0.0.0.0
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent=,host=0.0.0.0 red5Engine:type=Host,host=0.0.0.0
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname = red5Engine:type=Valve,name=StandardHostValve,host=0.0.0.0
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve parent= red5Engine:type=Engine
2009-06-03 21:50:16,963 [main] DEBUG o.apache.catalina.valves.ValveBase -
valve objectname = red5Engine:type=Valve,name=StandardEngineValve
2009-06-03 21:50:16,979 [main] DEBUG o.a.catalina.connector.Connector -
Creating name for connector red5Engine:type=Connector,port=5080
2009-06-03 21:50:16,994 [main] INFO  o.a.coyote.http11.Http11Protocol -
Initializing Coyote HTTP/1.1 on http-5080
2009-06-03 21:50:17,010 [main] INFO  o.a.coyote.http11.Http11Protocol -
Starting Coyote HTTP/1.1 on http-5080
2009-06-03 21:50:17,010 [main] DEBUG o.a.c.connector.MapperListener -
Register host 0.0.0.0 at domain red5Engine
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Context /installer
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Context
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper jsp in Context
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper default in Context
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper default in Context /installer
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper jsp in Context /installer
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper rtmpt in Context
2009-06-03 21:50:17,026 [main] DEBUG o.a.c.connector.MapperListener -
Register Wrapper gateway in Context
2009-06-03 21:50:17,026 [main] DEBUG o.a.catalina.connector.Connector -
register Mapper: red5Engine:type=Mapper,port=5080

A direct link to the red5 class is here:
http://red5.googlecode.com/svn/java/server/trunk/src/org/red5/server/tomcat/TomcatLoader.java

Any info I can use to resolve this would be nice..

Paul

-- 
http://gregoire.org/
http://osflash.org/red5

Reply via email to