Red5 1.0 RC2 backward compatibility

Latest red5 versions ( Red5 revision > 4326 like 1.0 RC2+) bring changes that make red5 incompatible with older applications.
Changes are required for these applications to work.

Updated VideoWhisper rtmp applications can be downloaded for use or as sample to update other applications.

 

This is covered in Red5 google group:

With revision 4326 you will see problems when building or running your applications with Red5. Most of the problems you’ll run into

are with missing classes; in most cases you can just add the “scope” package to your imports or run “Optimize imports” in Eclipse. Below I have addressed a few items that you may run into.

 

 
1. IScope cannot be resolved to a type

– Update red5 jar or source with latest

– Correct location of IScope is org.red5.server.api.scope.IScope, previously it was org.red5.server.api.IScope

 
2. The import org.red5.server.api.IScope cannot be resolved

– Update red5 jar or source with latest

– Correct location of IScope is org.red5.server.api.scope.IScope, previously it was org.red5.server.api.IScope

 

 
3. WebScope cannot be found

– Open your applications red5-web.xml and change the “web.scope” bean class to

<bean id=”web.scope” class=”org.red5.server.scope.WebScope” init-method=”register”>

instead of this

<bean id=”web.scope” class=”org.red5.server.WebScope” init-method=”register”>

 

 
4. Method signature does not match xxxx.

– For this one the fix is to change your expectation to receive an Iterator and instead make use of a Collection. The scope method

for retrieving scope names now returns a Set as shown here:

 

public Set<String> getScopeNames()

 

 
5. Parameter “type” does not match String.

– For scopes, their type is no longer identified by a string but instead uses an enum of ScopeType. The old method for getting basic

scope names was like so:

 

public Iterator<String> getBasicScopeNames(String type)

 

this is the new version:

 

public Set<String> getBasicScopeNames(ScopeType type)

 

Install ffmpeg mplayer flvtool2 yamdi x264 theora mp3lame vorbis ogg faac

 

 

This is a tutorial to enable video sharing support on Centos servers.

This should install ffmpeg, mplayer, mencoder, flvtool2, yamdi, x264, theora, mp3lame, vorbis, ogg, faac, faad2, xvid, mediainfo, mp4box, neroaacenc . These tools will enable on your server:

  • video and audio conversion
  • thumbnail generation
  • FLV meta injection (flvtool2, yamdi)
  • extra codecs (x264, theora, mp3lame, vorbis, ogg, faac, faad2, xvid)

This is functional and we update it each time we configure a new server.
Installation is done using the “root” account.

 

Attention: If you copy and paste commands below, make sure “-” are not converted to “.”.  If these get converted, edit “.” back to “-“. Some options use 2 * “-“.

Some prerequisites:

 

rpm -ivh  http://rpm.livna.org/livna-release.rpm

yum install libogg libogg-devel libvorbis libvorbis-devel
yum install x264 lame vorbis faac faad2 yamdi

The quick way to setup ffmpeg, mplayer, mencoder:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

or if you have 64bit server

rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

yum install gcc gcc-c++ automake autoconf libtool yasm git subversion
yum install libogg zlib-devel libtool


yum install libogg-devel libvorbis libvorbis-devel
yum -y install ffmpeg ffmpeg-devel mplayer mencoder ffmpeg-libpostproc

 

 

Edit the /etc/ld.so.conf file and add the following lines:

/usr/local/lib
/usr/lib

GIT
(required to get X264)

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

cd /usr/local/src
wget http://www.kernel.org/pub/software/scm/git/git-1.8.4.2.tar.gz
tar -zxvf git-1.8.4.2.tar.gz
cd git-1.8.4.2
make prefix=/usr/local all
make prefix=/usr/local/ install
git –version
Or :
yum –disableexcludes=main install git
And git manpages:
cd /usr/local/src
wget http://www.kernel.org/pub/software/scm/git/git-manpages-1.6.0.4.tar.gz
cd /usr/local/share/man
tar -zxvf /usr/local/src/git-manpages-1.6.0.4.tar.gz

YASM

YASM is a modular assembler, it is required by the x264 package.

 

cd /usr/local/src/
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar zfvx yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make && make install
cd ..

X264

cd /usr/local/src/
git clone git://git.videolan.org/x264.git
cd /usr/local/src/x264
./configure – -enable-shared – -prefix=/usr
make &&  make install
ls -s /usr/local/lib/libx264.so /usr/lib/libx264.so
Essential Codecs
cd /usr/local/src/
wget http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
tar xjvf essential-20071007.tar.bz2
mkdir /usr/local/lib/codecs/
mv essential-20071007/ /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

Or all codecs:

cd /usr/local/src/

wget http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20110131.tar.bz2
tar xjvf all-20110131.tar.bz2

mkdir /usr/local/lib/codecs/

mv  all-20110131 /usr/local/lib/codecs/

LAME

cd /usr/local/src/

wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flame%2Ffiles%2F&ts=1285175656&use_mirror=switch
tar zxvf lame-3.98.4.tar.gz
cd /usr/local/src/lame-3.98.4
./configure
make && make install

OGG

cd /usr/local/src/
wget downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
tar zxvf libogg-1.1.3.tar.gz
cd /usr/local/src/libogg-1.1.3
./configure –enable-shared && make && make install
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

VORBIS

cd /usr/local/src/
wget downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz
cd /usr/local/src/libvorbis-1.1.2
./configure && make && make install

Theora
cd /usr/local/src/
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
tar jxvf libtheora-1.1.1.tar.bz2
cd /usr/local/src/libtheora-1.1.1
./configure –prefix=/usr --enable-shared
make && make installls -s /usr/local/lib/libtheora.so /usr/lib/libtheora.so
FAAC
cd /usr/local/src/
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
tar zxvf faac-1.28.tar.gz
cd /usr/local/src/faac-1.28
./configure –prefix=/usr
make && make install

FAAD2

cd /usr/local/src/
wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz
tar zxf faad2-2.6.1.tar.gz
cd faad2
autoreconf -vif
./configure –disable-drm –disable-mpeg4ip
make && make install

OpenJPEG
cd /usr/local/src/
wget http://openjpeg.googlecode.com/files/openjpeg_v1_3.tar.gz
tar zxvf openjpeg_v1_3.tar.gz
cd OpenJPEG_v1_3

make && make install
ldconfig
VPX

cd /usr/local/src/
wget http://webm.googlecode.com/files/libvpx-v1.1.0.tar.bz2
tar -xjf libvpx-v1.1.0.tar.bz2
cd libvpx-v1.1.0
./configure –prefix=/usr –enable-shared –disable-static
make && make install
Speex
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
tar -xvzf speex-1.2rc1.tar.gz
cd speex-1.2rc1
./configure –prefix=/usr –enable-shared –disable-static
make && make install
Xvid
cd /usr/local/src/
wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
tar zxfv xvidcore-1.3.2.tar.gz
cd /usr/local/src/xvidcore/build/generic
./configure --enable-shared
make && make install
ls -s /usr/local/lib/libxvidcore.so.4.3 /usr/lib/libxvidcore.so.4.3

Before installing ffmpeg, setup some linking for scripts that look in certain locations for codecs:

ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50
ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51
ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0
ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51
ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52

ln -s /usr/lib/libtheora.so.0.3.10 /usr/local/lib/libtheora.so.0.3.10
ln -s /usr/lib/libx264.so.80 /usr/local/lib/libx264.so.80
ln -s /usr/lib/libtheora.so.0.3.10 /usr/local/lib/libtheora.so
ln -s /usr/lib/libx264.so.80 /usr/local/lib/libx264.so

FFMPEG (download latest from SVN)

export TMPDIR=$HOME/tmp
export LD_LIBRARY_PATH=/usr/local/lib/
cd /usr/local/src/
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

cd /usr/local/src/ffmpeg
./configure –enable-gpl –enable-version3 –enable-shared –enable-nonfree –enable-postproc –enable-libfaac –enable-libmp3lame –enable-libspeex –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libvpx –enable-libx264 –enable-libxvid –enable-x11grab –extra-cflags=”-I/usr/local/include” –extra-ldflags=”-L/usr/local/lib”

make && make install
ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg

FFMPEG configure options use 2 x “-“. Older version can be downloaded with git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

ERROR: Xfixes not found #
fix: yum install libX*

 

MPLAYER

 

cd /usr/local/src/
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd /usr/local/src/mplayer
svn update
cd /usr/local/src/mplayer
./configure && make && make install

ln -s /usr/local/bin/mencoder /usr/bin/mencoder
ln -s /usr/local/bin/mplayer /usr/bin/mplayer

FLVTOOL2
First install Ruby from WHM.

cd /usr/local/src/
wget rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz
tar zxvf flvtool2_1.0.5_rc6.tgz
cd /usr/local/src/flvtool2_1.0.5_rc6/
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

YAMDI

 

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/yamdi/yamdi/1.4/yamdi-1.4.tar.gz?use_mirror=ufpr
tar zxf yamdi-1.4.tar.gz
cd yamdi-1.4
gcc yamdi.c -o yamdi -O2 -Wall
mv yamdi /usr/bin/
yamdi -h

INSTALLATION RESULTS

mencoder: /usr/local/bin/mencoder
mplayer: /usr/local/bin/mplayer
yamdi: /usr/bin/yamdi

Add these shortcuts to /usr/bin if you need these there by default:
mencoder to /usr/local/bin/mencoder
mplayer to /usr/local/bin/mplayer

SuPHP fix

With suphp  “env -i” is required when executing php scripts.

exec(“env -i /usr/bin/php ” . $cmd.  ‘>/dev/null &’);

MediaInfo
http://mediainfo.sourceforge.net/en/Download/CentOS

wget http://downloads.sourceforge.net/zenlib/libzen0-0.4.14-1.i386.CentOS_5.rpm
wget http://downloads.sourceforge.net/zenlib/libzen0-devel-0.4.14-1.i386.CentOS_5.rpm
wget http://downloads.sourceforge.net/mediainfo/libmediainfo0-0.7.32-1.i386.CentOS_5.rpm
wget http://downloads.sourceforge.net/mediainfo/libmediainfo0-devel-0.7.32-1.i386.CentOS_5.rpm
wget http://downloads.sourceforge.net/mediainfo/mediainfo-0.7.32-1.i386.CentOS_5.rpm
rpm -vi libzen0-0.4.14-1.i386.CentOS_5.rpm
rpm -vi libzen0-devel-0.4.14-1.i386.CentOS_5.rpm
rpm -vi libmediainfo0-0.7.32-1.i386.CentOS_5.rpm
rpm -vi libmediainfo0-devel-0.7.32-1.i386.CentOS_5.rpm
rpm -vi mediainfo-0.7.32-1.i386.CentOS_5.rpm

ln -s /usr/bin/mediainfo /usr/local/bin/mediainfo

MP4Box

yum -y install freetype-devel SDL-devel freeglut-devel

wget -c http://mirror.ffmpeginstaller.com/source/gpac/gpac-full-0.4.5.tar.gz

tar -xzf gpac-full-0.4.5.tar.gz
cd gpac

./configure –prefix=/usr/local/cpffmpeg/ –extra-cflags=-I/usr/local/cpffmpeg/include/ –extra-ldflags=-L/usr/local/cpffmpeg/lib –disable-wx –strip

make && make lib &&  make apps && make install lib && make install

cp bin/gcc/libgpac.so /usr/lib

ln -s /usr/local/cpffmpeg/bin/MP4Box /usr/local/bin/MP4Box
ln -s /usr/local/cpffmpeg/bin/MP4Box /usr/bin/MP4Box

install -m644 bin/gcc/libgpac.so /usr/local/lib/libgpac.so
chmod +x /usr/local/lib/libgpac.so
ldconfig

neroAacEnc

wget ftp://ftp6.nero.com/tools/NeroDigitalAudio.zip
unzip NeroDigitalAudio.zip -d nero
cd nero/linux
sudo install -D -m755 neroAacEnc /usr/local/bin

ln -s /usr/local/bin/neroAacEnc /usr/bin/neroAacEnc

uploadprogress

cd /usr/local/src
wget http://pecl.php.net/get/uploadprogress-1.0.3.1.tgz

 

t

ar -zxvf uploadprogress-1.0.3.1.tgz
cd uploadprogress-1.0.3.1
phpize
./configure && make && make install

Edit /usr/lib/php.ini and add:

extension = “uploadprogress.so”

 

 

FFMPEG2Theora

 

wget http://v2v.cc/~j/ffmpeg2theora/ffmpeg2theora-0.29.linux32.bin
chmod +x ffmpeg2theora-0.29.linux32.bin
install -m 755 ffmpeg2theora-0.29.linux32.bin  /usr/local/bin/ffmpeg2theora

 

wget http://v2v.cc/~j/ffmpeg2theora/ffmpeg2theora-0.29.linux64.bin
chmod +x ffmpeg2theora-0.29.linux64.bin
install -m 755 ffmpeg2theora-0.29.linux64.bin /usr/local/bin/ffmpeg2theora

 

Also see:

http://www.vimp.com/en/documentation-faq-article/items/howto-install-the-transcoding-tools-on-redhat-centos-etc.html

ASM is a modular assembler, it is required by the x264 package.

codec:$ wget \
http://www.tortall.net/projects/yasm/releases/yasm-0.7.0.tar.gz
codec:$ tar zfvx yasm-0.7.0.tar.gz
codec:$ cd yasm-0.7.0
codec:$ ./configure
codec:$ make && make install
codec:$ cd ..