ViMP provide a very good installation guide. I am documenting some points that may be helpful for running ViMP successfully.
I used Ubuntu 12.04 and ViMP Community 2.5.4 version in this example.
I am assuming Apache, PHP and MySQL are already installed in the system otherwise it can be installed easily using apt-get. For the hardware and software requirements of ViMP, please see the Installation guide of ViMP.
Install gcc compiler
$ sudo apt-get install gcc
If make is not installed, install make
$ sudo apt-get install make
I will install the required PHP extensions:
$ sudo apt-get install php5-gd
$ sudo apt-get install php5-curl
$ sudo apt-get install php5-xsl
Also we need to install SourceGuardian module for PHP.
Check the PHP extensions directory
$ php -i | grep extension_dir extension_dir => /usr/lib/php5/20090626+lfs => /usr/lib/php5/20090626+lfs
My PHP extensions directory is /usr/lib/php5/20090626+lfs , go to this directory
$ cd /usr/lib/php5/20090626+lfs
Download the PHPShield loader into PHP extensions directory.
pranabs@ubuntu:/usr/lib/php5/20090626+lfs$ sudo wget http://downloads.phpmotion.com/phpshield-loaders/linux/i386/ixed.5.3
We have to add this new extension to PHP configuration file
$ cd /etc/php5/conf.d/
Create a new file ixed.5.3.ini
$ sudo pico ixed.5.3.ini
Add the line extension=ixed.5.3 to the new file and save it.
Enable apache mod_rewrite:
$ sudo a2enmod rewrite
Restart Apache.
$ sudo service apache2 restart
Install Ruby
$ sudo apt-get install ruby
Now we have to install the tools required for video encoding. ViMP document describes for debian installation. For Ubuntu we can get the required tools and codec from Medibuntu repository. You can find document for Medibuntu in the link https://help.ubuntu.com/community/Medibuntu .
Add Medibuntu repository:
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
Install the transcoding tools
$ sudo apt-get install mplayer mencoder ffmpeg flvtool2
Install the codec package:
$ sudo apt-get install w32codecs
Note: I am installing it for 32bit system, for 64bit it is w64codecs
Pre-requisite installation part is complete now, for configuration and installation of ViMP you can refer to ViMP installation manual.
Troubleshooting:
Even after installing the required tools I got the following error in the transcoding process
>> transcode media 5687762ac90946a84dfb015a19d677bc [1]
>> transcode + move 5112de7fe0d8b45d87fa5...2d9e899bb28fb1c7348ad79a042.flv
>> rename /var/www/mediaserver/data/web/u...4dfb015a19d677bc_1336642858.flv
>> chmod 775 /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chown www-data.www-data /var/www/mediaserver/dat...a19d677bc_1336642858.flv
>> exec "mplayer" -vo null -ao null -fr...87762ac90946a84dfb015a19d677bc"
>> exec cat /tmp/info_output_5687762ac9...a19d677bc | grep ID_VIDEO_WIDTH
>> exec cat /tmp/info_output_5687762ac9...19d677bc | grep ID_VIDEO_HEIGHT
>> exec cat /tmp/info_output_5687762ac9...fb015a19d677bc | grep ID_LENGTH
>> file- /tmp/info_output_5687762ac90946a84dfb015a19d677bc
>> file+ /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chmod 775 /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chown www-data.www-data /var/www/mediaserver/dat...a19d677bc_1336642858.flv
>> exec nice -n 19 "ffmpeg" -i /var/www...4dfb015a19d677bc_1336642858.m4v
>> transcode + Problem executing command. (error 1)
For transcoding errors we can view the framework.convert.log file located inside the log folder in ViMP application’s data directory.
After lots of trial and failure, I have decided to remove ffmpeg and compile it from latest source
$ sudo git clone git://source.ffmpeg.org/ffmpeg
$ cd ffmpeg
$ sudo ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
The configure script may give some dependent library error (if it is already not present), these libraries can be installed easily using apt-get install command. Run apt-cache search command to find the exact library name and then install it.
$ sudo make
$ sudo make install
Manually compiling ffmpeg may install it in /usr/local/bin/ffmpeg, so create a symbolic link /usr/bin/ffmpeg pointing to /usr/local/bin/ffmpeg
I tried transcoding again, but got the same error. After some searching I found the solution in ViMP support forum http://www.vimp.com/143/topic/929.html?page=1
I have to copy the ffmpeg-presets which can be downloaded from http://www.vimp.com/en/download-configurations.html
Download and extract the ffmpeg.presets.tar.gz file. Put all the extracted files into /usr/local/share/ffmpeg directory (I have compiled ffmpeg, so I have this folder otherwise it is /usr/share/ffmpeg)
It didn’t resolve my problem, so another solution was provided in http://www.vimp.com/143/topic/929.html?page=2
Open the /usr/local/share/ffmpeg/libx264-slow.ffpreset file and delete the following lines:
Note: It is better to copy the presets in the ffmpeg's source (including the modified libx264-slow.ffpreset file) and recompile ffmpeg again.
After that I recompiled ffmpeg and this error was gone but I started getting another error.
>> chmod 775 /var/www/mediaserver/data/web/i...380eebfd1c44f67_1336646839.webm
>> chown www-data.www-data /var/www/mediaserver/dat...d1c44f67_1336646839.webm
>> exec "flvtool2" -UP "/var/www/medias...033b6005d51c6f4380eebfd1c44f67"
>> exec cat /tmp/duration_output_13033b...380eebfd1c44f67 | grep duration
>> transcode + Problem executing command. (error 1)
I checked the duration_output_13033b… file mentioned in the error log. The content of the file was as follows:
root@ubuntu:~/flvtool2-1.0.6# cat /tmp/duration_output_13033b6005d51c6f4380eebfd1c44f67 ERROR: EOFError
ERROR: /usr/local/lib/site_ruby/1.8/flv/amf_string_buffer.rb:37:in `read'
ERROR: /usr/local/lib/site_ruby/1.8/flv/video_tag.rb:80:in `read_header'
ERROR: /usr/local/lib/site_ruby/1.8/flv/video_tag.rb:47:in `after_initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flv/tag.rb:56:in `initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:449:in `new'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:449:in `read_tags'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:58:in `initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:272:in `new'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:272:in `open_stream'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:238:in `process_files'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:225:in `each'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:225:in `process_files'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:44:in `execute!'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2.rb:168:in `execute!'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2.rb:228
ERROR: /usr/bin/flvtool2:2:in `require'
ERROR: /usr/bin/flvtool2:2
After lots of searching I found the solution in the forum:
http://www.wowza.com/forums/showthread.php?467-Modifying-flvtool2-to-work-with-flv-files-recorded-using-Wowza-Pro-(fix)
I changed the audio_tag.rb file:
from:
def after_initialize(new_object)
@tag_type = AUDIO
read_header
end to:
def after_initialize(new_object)
@tag_type = AUDIO
if data_size > 0
read_header
end
end
and changed the video_tag.rb file
from:
bit_sequence = data_stream.read(9).unpack('B72').to_s
to:
if @codec_id == H263VIDEOPACKET || @codec_id == SCREENVIDEOPACKET
bit_sequence = data_stream.read(9).unpack('B72').to_s
end
These two files located in prefix/site_ruby/1.8/flv folder (prefix will change depending on your installation), in my case it is in /usr/local/lib/site_ruby/1.8/flv folder.
It worked for me without reinstalling flvtool2.
If it doesn’t work, you may have to download flvtool2 from http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz , change the audio_tag.rb and video_tag.rb files, rebuild and install it again.
e.g.
$ wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
$ tar xzvf flvtool2-1.0.6.tgz
$ cd flvtool2-1.0.6/lib/flv
Edit audio_tag.rb and video_tag.rb files
$ cd ../..
$ sudo ruby setup.rb config
$ sudo ruby setup.rb setup
$ sudo ruby setup.rb install
That’s it and enjoy ViMP.
I used Ubuntu 12.04 and ViMP Community 2.5.4 version in this example.
I am assuming Apache, PHP and MySQL are already installed in the system otherwise it can be installed easily using apt-get. For the hardware and software requirements of ViMP, please see the Installation guide of ViMP.
Install gcc compiler
$ sudo apt-get install gcc
If make is not installed, install make
$ sudo apt-get install make
I will install the required PHP extensions:
$ sudo apt-get install php5-gd
$ sudo apt-get install php5-curl
$ sudo apt-get install php5-xsl
Also we need to install SourceGuardian module for PHP.
Check the PHP extensions directory
$ php -i | grep extension_dir extension_dir => /usr/lib/php5/20090626+lfs => /usr/lib/php5/20090626+lfs
My PHP extensions directory is /usr/lib/php5/20090626+lfs , go to this directory
$ cd /usr/lib/php5/20090626+lfs
Download the PHPShield loader into PHP extensions directory.
pranabs@ubuntu:/usr/lib/php5/20090626+lfs$ sudo wget http://downloads.phpmotion.com/phpshield-loaders/linux/i386/ixed.5.3
We have to add this new extension to PHP configuration file
$ cd /etc/php5/conf.d/
Create a new file ixed.5.3.ini
$ sudo pico ixed.5.3.ini
Add the line extension=ixed.5.3 to the new file and save it.
Enable apache mod_rewrite:
$ sudo a2enmod rewrite
Restart Apache.
$ sudo service apache2 restart
Install Ruby
$ sudo apt-get install ruby
Now we have to install the tools required for video encoding. ViMP document describes for debian installation. For Ubuntu we can get the required tools and codec from Medibuntu repository. You can find document for Medibuntu in the link https://help.ubuntu.com/community/Medibuntu .
Add Medibuntu repository:
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
Install the transcoding tools
$ sudo apt-get install mplayer mencoder ffmpeg flvtool2
Install the codec package:
$ sudo apt-get install w32codecs
Note: I am installing it for 32bit system, for 64bit it is w64codecs
Pre-requisite installation part is complete now, for configuration and installation of ViMP you can refer to ViMP installation manual.
Troubleshooting:
Even after installing the required tools I got the following error in the transcoding process
>> transcode media 5687762ac90946a84dfb015a19d677bc [1]
>> transcode + move 5112de7fe0d8b45d87fa5...2d9e899bb28fb1c7348ad79a042.flv
>> rename /var/www/mediaserver/data/web/u...4dfb015a19d677bc_1336642858.flv
>> chmod 775 /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chown www-data.www-data /var/www/mediaserver/dat...a19d677bc_1336642858.flv
>> exec "mplayer" -vo null -ao null -fr...87762ac90946a84dfb015a19d677bc"
>> exec cat /tmp/info_output_5687762ac9...a19d677bc | grep ID_VIDEO_WIDTH
>> exec cat /tmp/info_output_5687762ac9...19d677bc | grep ID_VIDEO_HEIGHT
>> exec cat /tmp/info_output_5687762ac9...fb015a19d677bc | grep ID_LENGTH
>> file- /tmp/info_output_5687762ac90946a84dfb015a19d677bc
>> file+ /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chmod 775 /var/www/mediaserver/data/web/i...4dfb015a19d677bc_1336642858.flv
>> chown www-data.www-data /var/www/mediaserver/dat...a19d677bc_1336642858.flv
>> exec nice -n 19 "ffmpeg" -i /var/www...4dfb015a19d677bc_1336642858.m4v
>> transcode + Problem executing command. (error 1)
For transcoding errors we can view the framework.convert.log file located inside the log folder in ViMP application’s data directory.
After lots of trial and failure, I have decided to remove ffmpeg and compile it from latest source
$ sudo git clone git://source.ffmpeg.org/ffmpeg
$ cd ffmpeg
$ sudo ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
The configure script may give some dependent library error (if it is already not present), these libraries can be installed easily using apt-get install command. Run apt-cache search command to find the exact library name and then install it.
$ sudo make
$ sudo make install
Manually compiling ffmpeg may install it in /usr/local/bin/ffmpeg, so create a symbolic link /usr/bin/ffmpeg pointing to /usr/local/bin/ffmpeg
I tried transcoding again, but got the same error. After some searching I found the solution in ViMP support forum http://www.vimp.com/143/topic/929.html?page=1
I have to copy the ffmpeg-presets which can be downloaded from http://www.vimp.com/en/download-configurations.html
Download and extract the ffmpeg.presets.tar.gz file. Put all the extracted files into /usr/local/share/ffmpeg directory (I have compiled ffmpeg, so I have this folder otherwise it is /usr/share/ffmpeg)
It didn’t resolve my problem, so another solution was provided in http://www.vimp.com/143/topic/929.html?page=2
Open the /usr/local/share/ffmpeg/libx264-slow.ffpreset file and delete the following lines:
directpred=3 flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip wpredp=2
Note: It is better to copy the presets in the ffmpeg's source (including the modified libx264-slow.ffpreset file) and recompile ffmpeg again.
After that I recompiled ffmpeg and this error was gone but I started getting another error.
>> chmod 775 /var/www/mediaserver/data/web/i...380eebfd1c44f67_1336646839.webm
>> chown www-data.www-data /var/www/mediaserver/dat...d1c44f67_1336646839.webm
>> exec "flvtool2" -UP "/var/www/medias...033b6005d51c6f4380eebfd1c44f67"
>> exec cat /tmp/duration_output_13033b...380eebfd1c44f67 | grep duration
>> transcode + Problem executing command. (error 1)
I checked the duration_output_13033b… file mentioned in the error log. The content of the file was as follows:
root@ubuntu:~/flvtool2-1.0.6# cat /tmp/duration_output_13033b6005d51c6f4380eebfd1c44f67 ERROR: EOFError
ERROR: /usr/local/lib/site_ruby/1.8/flv/amf_string_buffer.rb:37:in `read'
ERROR: /usr/local/lib/site_ruby/1.8/flv/video_tag.rb:80:in `read_header'
ERROR: /usr/local/lib/site_ruby/1.8/flv/video_tag.rb:47:in `after_initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flv/tag.rb:56:in `initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:449:in `new'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:449:in `read_tags'
ERROR: /usr/local/lib/site_ruby/1.8/flv/stream.rb:58:in `initialize'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:272:in `new'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:272:in `open_stream'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:238:in `process_files'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:225:in `each'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:225:in `process_files'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2/base.rb:44:in `execute!'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2.rb:168:in `execute!'
ERROR: /usr/local/lib/site_ruby/1.8/flvtool2.rb:228
ERROR: /usr/bin/flvtool2:2:in `require'
ERROR: /usr/bin/flvtool2:2
After lots of searching I found the solution in the forum:
http://www.wowza.com/forums/showthread.php?467-Modifying-flvtool2-to-work-with-flv-files-recorded-using-Wowza-Pro-(fix)
I changed the audio_tag.rb file:
from:
def after_initialize(new_object)
@tag_type = AUDIO
read_header
end to:
def after_initialize(new_object)
@tag_type = AUDIO
if data_size > 0
read_header
end
end
and changed the video_tag.rb file
from:
bit_sequence = data_stream.read(9).unpack('B72').to_s
to:
if @codec_id == H263VIDEOPACKET || @codec_id == SCREENVIDEOPACKET
bit_sequence = data_stream.read(9).unpack('B72').to_s
end
These two files located in prefix/site_ruby/1.8/flv folder (prefix will change depending on your installation), in my case it is in /usr/local/lib/site_ruby/1.8/flv folder.
It worked for me without reinstalling flvtool2.
If it doesn’t work, you may have to download flvtool2 from http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz , change the audio_tag.rb and video_tag.rb files, rebuild and install it again.
e.g.
$ wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
$ tar xzvf flvtool2-1.0.6.tgz
$ cd flvtool2-1.0.6/lib/flv
Edit audio_tag.rb and video_tag.rb files
$ cd ../..
$ sudo ruby setup.rb config
$ sudo ruby setup.rb setup
$ sudo ruby setup.rb install
That’s it and enjoy ViMP.