How to compile Openmeetings: an audio and video conferensing program for Linux (Part I)

Disclaimer: Remember that everything in this post is provided purely on educational purposes. If any harm should come to your system the author of this blog withdraws from any responsibility.

Openmeetings home page: http://openmeetings.apache.org/

Openmeetings is an audio and video conferensing program for Linux which provides a free alternative for similar software provided by Adobe and others. Openmeetings home page says that: “Openmeetings provides video conferencing, instant messaging, white board, collaborative document editing and other groupware tools using API functions of the Red5 Streaming Server for Remoting and Streaming.”

In this entry we will do the following steps to get the essential Openmeetings parts:

1  Compile Yasm modular assembler  from git. Yasm is needed by X264
2. Compile x264 from git.X264 is an advanced encoding library for creating H.264 (MPEG-4 AVC) video streams.
3. Compile VP8 from git. VP8 is a video codec.

Why build from git?

Your system’s packages might be a bit outdated or you might want to ensure a complete functionality when using Openmeetings. Using the packages that your system provides might not seem to be a big deal but in reality it may just be a very significant factor so I strongly recommend compiling from the source if possible.

Note: I recommend that when compiling things you keep every source folder in a good location like /opt which will serve as a safeguard against accidental source folder deletions because it needs sudo or root access in the case of modifications.

Starting note. You might want to install these before you start. This section also contains some Openmeetings dependencies. You might also consider installing Libreoffice (or parts of it) as Openmeetings will require it to function in a full form.

apt-get install subversion yasm sox checkinstall binutils build-essential git-svn git-core libgnutls-dev librtmp-dev libv4l-dev libvpx-dev libx264-dev libopenal-dev libmp3lame-dev libmp3lame0 subversion x11proto-core-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-video-dev x11proto-xext-dev xindy xindy-rules xtrans-dev yasm zlib1g-dev yasm sox libunistring0 libvdpau-dev libvdpau1 libvorbis-dev libbz2-dev libc-dev-bin libc6-dev libcaca-dev libasound2-dev libglu1-mesa-dev  libslang2-dev libsm-dev libdirectfb-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxfixes-dev libxt-dev libaudio-dev manpages-dev mesa-common-dev libxv-dev libxvmc-dev linux-libc-dev libice-dev libaudiofile-dev libavahi-client-dev libfaad-dev libaa1-dev libpulse-dev libogg-dev  libopenjpeg-dev autotools-dev dpkg-dev libdirac-dev  libsysfs-dev  libschroedinger-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libspeex-dev libgsm1-dev  libidn11 libimlib2-dev libtheora-dev libltdl-dev libavahi-common-dev libass-dev libiec61883-dev libass-dev libmodplug-dev libpulse-ocaml-dev libdx4-dev imagemagick swftools ghostscript jodconverter sox

The above packages appear partially in Ffmpeg section and might be needed even before Ffmpeg compilation. You might also consider executing the following command if you are using Debian or similar:

apt-get build-dep ffmpeg (installs at least the following: libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libcv-dev libcvaux-dev libdc1394-22-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libhighgui-dev libilmbase-dev libjasper-dev libopencv-calib3d-dev libopencv-calib3d2.3 libopencv-contrib-dev libopencv-contrib2.3 libopencv-core-dev libopencv-core2.3 libopencv-dev libopencv-features2d-dev libopencv-features2d2.3 libopencv-flann-dev libopencv-flann2.3 libopencv-gpu-dev libopencv-gpu2.3 libopencv-highgui-dev libopencv-highgui2.3 libopencv-imgproc-dev libopencv-imgproc2.3 libopencv-legacy-dev libopencv-legacy2.3 libopencv-ml-dev libopencv-ml2.3 libopencv-objdetect-dev libopencv-objdetect2.3 libopencv-video-dev libopencv-video2.3 libopenexr-dev libpango1.0-dev libpixman-1-dev libtbb2 libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxi-dev libxrandr-dev x11proto-composite-dev x11proto-damage-dev  x11proto-randr-dev)

Compiling things

1. YASM
cd /opt
git clone git://github.com/yasm/yasm.git
apt-get build-dep yasm (installs at least the following packages: bison docbook-xsl libbison-dev xmlto xsltproc)

cd yasm
./autogen.sh
make
make install

2. X264
cd /opt
git clone git://git.videolan.org/x264

apt-get build-dep x264 (installs at least the following packages:libavcodec-dev libavformat-dev libavutil-dev libffms2-2 libffms2-dev libgpac-dev libgpac2 libpostproc-dev libswscale-dev)

cd x264
./configure – -prefix=/usr – -enable-shared
make
make install

Note: There should be no space between the two – – in ./configure line. Worldpress does not show the markings correctly.

3. VP8
cd /opt
git clone http://git.chromium.org/webm/libvpx.git

apt-get build-dep libvpx (installs at least the following:libonig2 libqdbm14 php5-cli php5-common)

cd libvpx
./configure
make
make install

If you want to upgrade your source folders for new revisions execute:

git pull

In addition to the above we will of course need Ffmpeg as well. For Ffmpeg compilation see the part two once you have done every step mentioned above: http://www.techtimejourney.net/?p=88