VLC - the cross-platform media player and streaming server

VLC media player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...) as well as DVDs, VCDs, and various streaming protocols. It can also be used as a server to stream in unicast or multicast in IPv4 or IPv6 on a high-bandwidth network. I tried to compile VLC with all main options.

Source web site: http://www.videolan.org/

-------------------------------------------
My system : RHEL 4 ES (kernel-2.6.9-5)
-------------------------------------------

Check following packages, if not installed, install from Internet and RHEL source CD:

# gettext-0.16.1-1-bin.tar.bz2
# tar xvjf gettext-0.16.1-1-bin.tar.bz2
# cd usr/local
# cp -rp * /usr/local/

Note: Copy source files after tar to related folder (it is for bootstrap from SVN source).

libgpg-error-1.0-1.i386.rpm
libgpg-error-devel-1.0-1.i386.rpm
libgcrypt-1.2.0-3.i386.rpm
libgcrypt-devel-1.2.0-3.i386.rpm

Checkout VLC from SVN server:
# svn co svn://jb@svn.videolan.org/vlc/trunk vlc-trunk
# cd vlc-trunk;
# ./bootstrap
.....
.....

Successfully bootstrapped

******************

Before compile VLC , we have to compile the following packages and libraries :

- x264
The x264 is a library to encode movies in H.264.
Source web site: http://www.videolan.org/developers/x264.html

# cd extras/
# svn co svn://svn.videolan.org/x264/trunk x264
# cd x264/
# ./configure (may be not need)
# make
# cd ..

Also, we installed a x264 from RPM package.
Because, we had error message "x264 librar not exist" during the configure VLC.
# rpm -ivh x264-0.0.0-0.4.20070529.el4.rf.i386.rpm
# rpm -ivh x264-devel-0.0.0-0.4.20070529.el4.rf.i386.rpm

- faac
The faac is a library to encode audio in AAC/MP4A
Source web site: http://www.audiocoding.com/

# tar -zxvf faac-1.26.tar.gz
# cd faac/
# dos2unix *
# patch -p1

Purpose of the patch:
- To avoid warning during bootstrap:

utoreconf: running: aclocal --force
configure.in:10: warning: underquoted definition of MY_DEFINE
run info '(automake)Extending aclocal'

or see http://sources.redhat.com/automake/automake.html#Extending-aclocal

- Error during configuring:

config.status: creating \
.infig.status: error: cannot find input file: \

Note: Source web site of patch: http://research.m1stereo.tv/wiki/index.php/Build_video_enc_env

- faad
The faad is a decoder, AAC (mpeg-4,mpeg-2)
Source web site: http://www.audiocoding.com/

# tar -zxvf faad2-2.6.tar.gz
# cd faad2/
# autoreconf -vif
# ./configure --with-mpeg4ip
# make; make install
# cd ..

- Lame
The lame is a encoder library MPEG Audio Layer III (MP3).
Source web site: http://lame.sourceforge.net/index.php

# tar xvf lame-3.97.tar.gz
# cd lame-3.97/
# ./configure;
# make; make install
# cd ..

- liba52 (a52dec)
The liba52 is a free ATSC A/52 stream decoder.
Source web site: http://liba52.sourceforge.net/

# tar -zxvf a52dec-snapshot.tar.gz
# mv a52dec-0.7.5-cvs liba52
# cd liba52
# ./configure
# make
# make install

Also, we installed a liba52 from RPM package.
Because, we had error message that the source tree not exist during the configure VLC.

# rpm -ivh a52dec-0.7.4-8.el4.rf.i386.rpm
# rpm -ivh a52dec-devel-0.7.4-8.el4.rf.i386.rpm

- ffmpeg
The ffmpeg is a multi-codec library
Source web site: http://ffmpeg.mplayerhq.hu/

# svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
# cd ffmpeg
# ./configure --enable-gpl --enable-pp --enable-pthreads --enable-libmp3lame --enable-libfaac --enable-libfaad --enable-libx264 --enable-liba52
# make
# ldconfig
# ffmpeg -v
libavutil version: 49.5.0
libavcodec version: 51.46.0
libavformat version: 51.15.0
# cd ..

- live
The live is a streaming library.
Source web site: http://live555.com/

# wget http://live555.com/liveMedia/public/live555-latest.tar.gz
# tar xvf live555-latest.tar.gz
# cd live/
# ./genMakefiles linux
# make
# cd ..

- libmpeg2
The libmpeg2 is a MPEG2 video stream decoder.
Source web site: http://libmpeg2.sourceforge.net/

# tar zxvf mpeg2dec-0.4.1.tar.gz
# cd mpeg2dec-0.4.1
# ./configure
# make
# cd ..

Note: During the make, we hade path problem of the source tree.

# mkdir libmpeg2/.libs/.libs
# cp libmpeg2/.libs/libmpeg* libmpeg2/.libs/.libs/

- PortAudio
The portaudio is cross platform audio I/O library and it provide very simple API for recording and/or playing sound a simple callback function.
Source web site: http://www.portaudio.com/

# tar zxvf pa_stable_v19_061121.tar.gz
# cd portaudio
# ./configure
# make; make install

- Libgii
The LibGII is intended to be to input what our LibGGI library is to graphics.
Source web site: http://www.ggi-project.org/packages/libgii.html

# tar zxvf /root/vlc/libgii-1.0.2.src.tar.gz
# cd libgii-1.0.2/
# ./configure
# make; make install
# cd ..

- Libggi
The GGI stands for General Graphics Interface, and it is a project that aims to develop a reliable, stable and fast graphics system that works everywhere.
Source web site: http://www.ggi-project.org/

# tar zxvf /root/vlc/libggi-2.2.2.src.tar.gz
# cd libggi-2.2.2/
# ./configure
# make; make install
# cd ..

- wxWidgets
The wxWidgets gives that easy-to-use API for writing GUI applications on multiple platforms that still utilize the native platform's controls and utilities. Default skin of the VLC is developed by wxWidgets and library of GGI and GII.
Source web site: http://www.wxwidgets.org/

# tar zxvf /tmp/wxWidgets-2.8.6.tar.gz
# cd wxWidgets-2.8.6/
# ./configure --enable-unicode
# make; make install
# ldconfig

- Installing required RPM packages:
During the compile (./configure, make, make install), we have to install following packages which are enabled in configure.

Search and download RPM packages: http://rpm.pbone.net/

libshout-2.2-1.2.el4.rf.i386.rpm
libshout-devel-2.2-1.2.el4.rf.i386.rpm
libdvdcss-1.2.9-3.el4.at.i386.rpm
libdvdread-0.9.7-4.el4.at.i386.rpm
libdvdread-devel-0.9.7-4.el4.at.i386.rpm
libmad-0.15.1b-4.el4.rf.i386.rpm
libmad-devel-0.15.1b-4.el4.rf.i386.rpm
libcdio-0.77-1.el4.rf.i386.rpm
libcdio-devel-0.77-1.el4.rf.i386.rpm
libcddb-1.3.0-1.el4.rf.i386.rpm
libcddb-devel-1.3.0-1.el4.rf.i386.rpm
vcdimager-0.7.23-5.el4.rf.i386.rpm
vcdimager-devel-0.7.23-5.el4.rf.i386.rpm
libsndfile-1.0.17-1.el4.rf.i386.rpm
libsndfile-devel-1.0.17-1.el4.rf.i386.rpm
twolame-0.3.9-1.el4.rf.i386.rpm
twolame-devel-0.3.9-1.el4.rf.i386.rpm
SDL_image-1.2.4-2.el4.i386.rpm
SDL_image-devel-1.2.4-2.el4.i386.rpm
libopendaap-0.4.0-2.el4.rf.i386.rpm
libopendaap-devel-0.4.0-2.el4.rf.i386.rpm
libdca-0.0.5-1.el4.rf.i386.rpm
libdca-devel-0.0.5-1.el4.rf.i386.rpm
libraw1394-0.10.1-3.el4.i386.rpm
libraw1394-devel-0.10.1-3.el4.i386.rpm
libraw1394_8-1.2.1-9_10.el4.i386.rpm
libavc1394-0.4.1-4.el4.i386.rpm
libavc1394-devel-0.4.1-4.el4.i386.rpm
libiec61883_0-1.1.0-0_9.el4.at.i386.rpm
libiec61883-devel-1.1.0-0_9.el4.at.i386.rpm
libfreebob-1.0.0-3.el4.at.i386.rpm
libfreebob-devel-1.0.0-3.el4.at.i386.rpm
jack-audio-connection-kit-0.102.20-3.el4.at.i386.rpm
jack-audio-connection-kit-devel-0.102.20-3.el4.at.i386.rpm
zvbi-0.2.25-1.el4.rf.i386.rpm
zvbi-devel-0.2.25-1.el4.rf.i386.rpm
taglib-1.4-5.1.el4.at.i386.rpm
taglib-devel-1.4-5.1.el4.at.i386.rpm
libmusicbrainz-2.0.2-11.el4.test.i386.rpm
libmusicbrainz-devel-2.0.2-11.el4.test.i386.rpm
libdvbpsi-0.1.5-2.el4.rf.i386.rpm
libdvbpsi-devel-0.1.5-2.el4.rf.i386.rpm
fribidi-0.10.4-6.i386.rpm
fribidi-devel-0.10.4-6.i386.rpm

gnutls-1.0.20-3.i386.rpm
gnutls-devel-1.0.20-3.i386.rpm
hal-0.4.2-1.EL4.i386.rpm
hal-devel-0.4.2-1.EL4.i386.rpm
hal-gnome-0.4.2-1.EL4.i386.rpm
speex-1.0.4.4.i386.rpm
speex-devel-1.0.4.4.i386.rpm
speex-debuginfo-1.0.4-4.i386.rpm

mozilla-***-devel (Success version which I did: 1.7.12-1.4.2)
firefox-XXXXX

Note: Some time we had warning message if we not install following packages.

faad2-2.5-2.el4.rf.i386.rpm
faad2-devel-2.5-2.el4.rf.i386.rpm
portaudio-18_1-3.el4.at.i386.rpm
portaudio-debuginfo-18_1-3.el4.91.at.i386.rpm
lua-5.0.2-1.el4.rf.i386.rpm
lua-devel-5.0.2-1.el4.rf.i386.rpm

********************

- VLC compile

# mkdir linux
# cd linux
#
# ../configure --enable-snapshot --enable-debug --enable-dbus-control --enable-shared --enable-lirc --with-x509-ca-bundle=/etc/ssl/certs/ca-certificates.crt --with-live555-tree=../extras/live --with-ffmpeg-tree=../extras/ffmpeg --enable-taglib --enable-v4l --enable-cddax --enable-dvb --enable-vcdx --enable-realrtsp --enable-svg --enable-dvdread --enable-dv --enable-theora --enable-faad --enable-twolame --enable-real --enable-flac --enable-tremor --with-ffmpeg-mp3lame --with-faac --enable-ncurses --enable-aa --enable-caca --enable-esd --enable-portaudio --enable-jack --enable-xosd --enable-galaktos --enable-goom --enable-ggi --disable-cddax --disable-vcdx --disable-dirac --enable-x264 --disable-xvmc --enable-pvr --enable-loader --enable-audioscrobbler --enable-libcddb --enable-libcdio --enable-opencv --enable-nls --disable-notify --with-libmpeg2-tree=../extras/mpeg2dec-0.4.1 --disable-speex --disable-lua --disable-fluidsynth --disable-gnutls --disable-bonjour --enable-old-dbus --with-included-gettext --enable-skins2 --enable-wxwidgets --enable-mozilla
#
# make
# make install
# ldconfig

Note: For Mozilla and Firefox plugin manage:
# cp -rp mozilla/.libs*.so /root/.mozilla/plugin/
# cp -rp mozilla/.libs*.soT /root/.mozilla/plugin/

- Execute VLC

# vlc
# vlc test-movie.file

URL syntax:
[file://]filename Plain media file
http://ip:port/file HTTP URL
ftp://ip:port/file FTP URL
mms://ip:port/file MMS URL
screen:// Screen capture
[dvd://][device][@raw_device] DVD device
[vcd://][device] VCD device
[cdda://][device] Audio CD device
udp:[[]@[][:]]

Stream in HTTP:

* On the server, run:
# vlc -vvv /var/www/html/hd/shuttle.mpg --sout udp://10.10.10.1 --ttl 12

* On the client(s), run:
# vlc udp://@:1234

Using the HTTP, downloading video stream:

* On the server, start HTTP apache server:
# /etc/init.d/http start

* On the client(s), run VLC with video file:


VLS video player

No comments: