RED5 is open source flash server written in java supports streaming audio/video, recording client streams, shared objects, live stream publishing etc.
1) Download and Install Java
RED5 server depends on Java. CentOS 5.3 comes with OpenJDK 1.6 and install it using yum.
1 |
yum -y install java-1.6.0-openjdk java-1.6.0-openjdk-devel |
2) Export Variables for Ant and Java
1 2 3 |
export ANT_HOME=/usr/local/ant export JAVA_HOME=/usr/lib/jvm/java export PATH=$PATH:/usr/local/ant/bin |
Also export these variables in /etc/bashrc to become available for every user login or for any terminal opens.
1 2 3 |
echo ‘export ANT_HOME=/usr/local/ant’ >> /etc/bashrc echo ‘export JAVA_HOME=/usr/lib/jvm/java’ >> /etc/bashrc echo ‘export PATH=$PATH:/usr/local/ant/bin’ >> /etc/bashrc |
3) Download and Install Ant & Ivy (Apache Project)
Ant will need to compile RED5 server code. Ant comes in binary form, so just download and install it in /usr/local directory.
1 2 3 4 |
cd /usr/src wget <a class="external free" href="http://mirrors.isu.net.sa/pub/apache//ant/binaries/apache-ant-1.8.2-bin.tar.bz2" rel="nofollow">http://mirrors.isu.net.sa/pub/apache//ant/binaries/apache-ant-1.8.2-bin.tar.bz2</a> tar jxvf apache-ant-1.8.2-bin.tar.bz2 mv apache-ant-1.8.2 /usr/local/ant |
1 2 3 4 5 |
cd /usr/src svn co <a class="external free" href="https://svn.apache.org/repos/asf/ant/ivy/core/trunk" rel="nofollow">https://svn.apache.org/repos/asf/ant/ivy/core/trunk</a> ivy cd ivy ant jar cp build/artifact/jars/ivy.jar /usr/local/ant/lib/ |
4) Download and Install RED5 Server
Here the latest version available for RED5 is 0.7 on site but download from google code using svn as the tarball of 0.7 on site is missing some of the files.
1 2 3 4 5 6 |
cd /usr/src svn checkout <a class="external free" href="http://red5.googlecode.com/svn/java/server/trunk/" rel="nofollow">http://red5.googlecode.com/svn/java/server/trunk/</a> red5 mv red5 /usr/local/ cd /usr/local/red5 ant prepare ant dist |
you will see a ton of lines, but you should get at last
1 |
BUILD SUCCESSFUL |
that’s mean its install and now copy the conf directory from dist/ and test the red5 installation.
1 2 |
cp -r dist/conf . ./red5.sh |
If it shows Installer service created in the last then everything is fine here, press ctrl+c and move to next step to create init script.
5) Init Script
Now we will create init script for red5 to start, stop and restart easily.
1 |
vi /etc/init.d/red5 |
download http://www.sohailriaz.com/downloads/red5.txt and copy / paste code in it. The init script code also be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#!/bin/bash # For RedHat and cousins: # chkconfig: 2345 85 85 # description: Red5 flash streaming server # processname: red5 PROG=red5 RED5_HOME=/usr/local/red5 DAEMON=$RED5_HOME/$PROG.sh PIDFILE=/var/run/$PROG.pid # Source function library . /etc/rc.d/init.d/functions [ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5 RETVAL=0 case "$1" in start) echo -n $"Starting $PROG: " cd $RED5_HOME $DAEMON >/dev/null 2>/dev/null & RETVAL=$? if [ $RETVAL -eq 0 ]; then echo $! > $PIDFILE touch /var/lock/subsys/$PROG fi [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup" echo ;; stop) echo -n $"Shutting down $PROG: " killproc -p $PIDFILE RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG ;; restart) $0 stop $0 start ;; status) status $PROG -p $PIDFILE RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" RETVAL=1 esac exit $RETVAL |
Enable executable permission
1 |
chmod +x /etc/init.d/red5 |
Now start the service
1 |
/etc/init.d/red5 start |
Check status
1 |
/etc/init.d/red5 status |
1 |
red5 (pid XXXXX) is running… |
Again you can do stop, restart.
6) Test
Now test the RED5 installation by opening following URL in browser
1 |
<a class="external free" href="http://yourip:5080/" rel="nofollow">http://yourip:5080/</a> |
7) Toubleshooting.
When you run ./red5.sh, it will show you Installer service created. Thats mean everything runs fine and red5 server is up. But if you went to port_tester.swf using demos above or your application shows connections FAILS, this is an issue of RTMPT and RTMPTS. You can see it by running
1 2 3 4 5 6 7 8 |
/usr/local/red5/red5.sh output trancated [INFO] [main] org.red5.server.tomcat.TomcatLoader – RTMPT server bean was not found [INFO] [main] org.red5.server.tomcat.TomcatLoader – RTMPS server bean was not found output truncated |
If you see this you have to uncomment the RTMPT and RTMPTS TomcatLoader in/usr/local/red5/conf/red5-core.xml
1 |
vi /usr/local/red5/conf/red5-core.xml |
Search for a lines
1 2 3 |
<!– RTMPT –> <!– <bean id=”rtmpt.server” class=”org.red5.server.net.rtmpt.TomcatRTMPTLoader” init-method=”init” lazy-init=”true”> |
Remove the <!– from start of <bean and –> from end of </bean>
Same goes for RTMPS
1 2 3 |
<!– RTMPS –> <!– <bean id=”rtmps.server” class=”org.red5.server.net.rtmps.TomcatRTMPSLoader” init-method=”init” lazy-init=”true”> |
Remove the <!– from start of <bean and –> from end of </bean>
Restart the red5 services and connection fails problem will be fixed.