При работе с HTML5 и уход от флеш плееров появилась необходимость конвертауии видео на сервере в несколько форматов (mp4, webm, ogv, flv). Реализовать это можно средствами.
Сервере чистий со свежей системой CentOS 6. Из пакетов установлен httpd, mysql, nginx, nagios, munin и других мелких утилит. Теперь начнем по порядку.
Обновляем все пакеты что установлены ранее, чтобы не было какихто заминок, но это по вкусу. И устанавливываем пакеты из стандартного репазетория.
yum update && yum upgrade
yum groupinstall "Development Tools"
yum install git wget man mlocate gcc gcc-c++ ruby yasm make check-devel libogg
После создаем папку и загружаем пакеты которых нет в стандартных репазитории.
mkdir ffmpeg-distr
cd ./ffmpeg-distr/
git clone git://github.com/yasm/yasm.git yasm
git clone http://git.chromium.org/webm/libvpx.git libvpx
git clone git://git.videolan.org/ffmpeg.git ffmpeg
git clone git://git.videolan.org/x264.git libx264
wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.bz2
wget http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.gz
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
wget http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
Распаковываем все скаченные архива
tar -xvf ./faad2-2.7.tar.bz2
tar -xvf ./faac-1.28.tar.gz
tar -xvf ./lame-3.99.5.tar.gz
tar -xvf ./libogg-1.3.1.tar.gz
tar -xvf ./libtheora-1.1.1.tar.gz
tar -xvf ./libvorbis-1.3.3.tar.gz
tar -xvf ./flvtool2-1.0.6.tgz
Начинаем собирать и ставить пакеты
Начнем по порядку. Библиотека libx264
cd yasm/
./autogen.sh
make && make install
Библиотеки звука
cd ../faad2-2.7
./configure --with-mp4v2
make clean && make && make install
cd ../faac-1.28
./configure --with-mp4v2
vim ./common/mp4v2/mpeg4ip.h
#закоментировать 126 строчку
#/*char *strcasestr(const char *haystack, const char *needle);*/
make clean && make && make install
cd ../lame-3.99.5
./configure
make clean && make && make install
cd ../libogg-1.3.1
./configure --enable-shared
make clean && make && make install
cd ../libvorbis-1.3.3
./configure --enable-shared
make clean && make && make install
cd ../libtheora-1.1.1
./configure
make clean && make && make install
Теперь перейдем к видео
cd ../flvtool2-1.0.6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
cd ../libvpx/
./configure --enable-shared
make clean && make && make install
cd ../libx264/
./configure --enable-shared --enable-static --prefix=/usr
make clean && make && make install
И самое интересное, ffmpeg
cd ../ffmpeg/
./configure --prefix=/usr --enable-shared --enable-libfaac --enable-libvpx --enable-libx264 --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-pic --enable-gpl --enable-nonfree --enable-version3
make && make instal
По окончанию установки можно увидеть такую картину
# ffmpeg
ffmpeg version N-53323-gb8a9876 Copyright (c) 2000-2013 the FFmpeg developers
built on May 21 2013 20:09:13 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
configuration: --prefix=/usr --enable-shared --enable-libfaac --enable-libvpx
--enable-libx264 --enable-libmp3lame --enable-libtheora --enable-libvorbis
--enable-pic --enable-gpl --enable-nonfree --enable-version3
libavutil 52. 33.100 / 52. 33.100
libavcodec 55. 10.101 / 55. 10.101
libavformat 55. 7.100 / 55. 7.100
libavdevice 55. 1.100 / 55. 1.100
libavfilter 3. 68.102 / 3. 68.102
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
При появление ошибки связанные с кодеками смотрите статью "ffmpeg не видит кодеки"
Для конвертауии видео набираем:
для создания FLV из любого формата
ffmpeg -i "/temp/video_file.mp4" -threads 4 -f flv -vcodec libx264 -b 500k -ar 44100 -ab 64k -s 402x226 "/temp/video_file.mp4.flv"
для создания Mp4 из любого формата
ffmpeg -i "/temp/video_file.flv" -threads 4 -f mp4 -b 412k -bt 450k -acodec libfaac -ar 44100 -ab 64k -s 402x226 "/temp/video_file.flv.mp4"
для создания OGG или OGV из любого формата
ffmpeg -i "/temp/video_file.flv" -threads 4 -b 450k -bt 500k -acodec libvorbis -ar 44100 -ab 64k -s 402x226 "/temp/video_file.flv.ogv"
для создания WebM из любого формата
ffmpeg -i "/temp/video_file.flv" -threads 4 -b 450k -bt 500k -acodec libvorbis -ar 44100 -ab 64k -ac 2 -s 402x226 "/temp/video_file.flv.webm"
На этом все можно использовать.