Home

First experiments with the installed Red5 server.

Pimp some Spring beans in the Red5 server installation

First experiments with the installed Red5 server.

The oflaDemo streams from data files inside the exploded war. In this experiment i want to stream from outside the Red5 installation. Take a deep breath and dive into the code of the Red5 server:

Some small changes in DefaultStreamFilenameGenerator and the class is configurable via Spring: First i refactored the hardwired local variable "streams/" into a field to make to make the prefix configurable and added an appropriate setter.
    private String prefix = "streams/";
...
    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }
Next was to refactor the hardwired absolute path flag:
    public boolean resolvesToAbsolutePath() {
        return false;
    }
To make it configurable, too.
    private boolean absolutePath = false;
...
    public boolean resolvesToAbsolutePath() {
        return absolutePath;
    }
    public void setAbsolutePath(boolean absolutePath) {
        this.absolutePath = absolutePath;
    }
The resulting bean definition in our example is added to red5-default.xml and looks is as follows (beware! name/id matters with Red5 bean resolving strategy):
    <bean id="streamFilenameGenerator" class="org.red5.server.stream.DefaultStreamFilenameGenerator">
        <property name="prefix" value="${sfg.prefix}" />
        <property name="absolutePath" value="${sfg.absolutePath}" />
    </bean>
With the configuration inside red5.properties.
# streamFilenameGenerator configuration
sfg.prefix=/tmp/upload/
sfg.absolutePath=true

Test the pimped version of Red5 with some small changes in the oflaDemo.

As with the Red5 DefaultStreamFilenameGenerator the oflaDemo, DemoService is given a configurable field:
    private String fileDirectory = "streams/";
...
    public void setFileDirectory(String fileDirectory) {
        this.fileDirectory = fileDirectory;
    }
The resulting configurable bean definition inside WEB-INF/red5-web.xml:
    <bean id="demoService.service" class="org.red5.demos.oflaDemo.DemoService">
        <property name="fileDirectory" value="${fileDirectory}" />
    </bean>
is configured via WEB-INF/red5-web.properties
#fileDirectory=streams/
fileDirectory=file:/tmp/upload/
Drop the oflaDemo.war into the embedded Tomcat deploy directory.
server:~> cp oflaDemo.war ~red5/red5/webapps
Red5 will "explode" the web archive and start the application. Point your browser to see the oflaDemo in action.



Add a comment