Pull to refresh

Сборка ffmpeg на CentOS 6.0 x64 для Web видео mp4, webm, ogv

Reading time 3 min
Views 13K
Работая с одним проектом, столкнулся с необходимостью заливки видео на сервер (качественные ролики длительностью 2-3 минуты) с последующей репликаций их на S3 & дистрибьюцией через CouldFront. На хостинге стоит Centos 6.0 x64. ffmpeg который в дополнительных репозиториях к сожалению лохматой версии 6.1 и не включает в себя vp8 и иже с ним. Поэтому пришлось заниматься собственноручной сборкой. К сожалению пошарив по инету толкового гайда не нашел, поэтому почитав в округе на данную тему откатал для себя гайд на VirtualBox. Буду рад если кому-то пригодится. Библиотеки были выбраны последние на момент начала ноября.


Буду описывать установку на чистый сервер. Часть компонентов которые использовал для своих нужд (mysql, httpd, etc) я выбросил. Для начала обновим все пакеты и установим необходимое из стандартного репозитория

yum update && yum upgrade

yum install git wget man mlocate gcc gcc-c++ make check-devel libogg
yum groupinstall "Development Tools" -y


Добавим в конфиг путь для поиска библиотек:
echo /usr/local/lib >/etc/ld.so.conf.d/local.conf


Закачаем необходимые исходники:
cd /usr/local/src
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.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.2.tar.gz


Распакуем:
tar -xvf faad2-2.7.tar.bz2
tar -xvf faac-1.28.tar.gz
tar xf lame-3.99.1.tar.gz
tar xfv libtheora-1.1.1.tar.gz
tar xfv libvorbis-1.3.2.tar.gz


Ну и начинаем собирать.
Необходимая билиотека для 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
vi common/mp4v2/mpeg4ip.h
#comment line 126
#:126
#/*char *strcasestr(const char *haystack, const char *needle);*/
make clean && make && make install

cd ../lame-3.99.1
./configure
make clean && make && make install

cd ../libvorbis-1.3.2
./configure
make clean && make && make install

cd ../libtheora-1.1.1
./configure
make clean && make && make install


Далее пошло видео:
cd ../libvpx
./configure --target=x86_64-linux-gcc  --enable-pic --enable-vp8 --enable-shared
make clean && make && make install

cd ../libx264/
./configure --enable-shared --enable-static --prefix=/usr
make clean && make && make install


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
make clean && make && make install

ldconfig -v


По идее после всех шагов у вас должна быть установлена последняя версия рабочего ffmpeg-а:

[root@ffmpeg ffmpeg]# ffmpeg
ffmpeg version N-34650-g083d9ba, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 11 2011 00:00:37 with gcc 4.4.4 20100726 (Red Hat 4.4.4-13)
  configuration: --prefix=/usr --enable-shared --enable-libfaac --enable-libvpx --enable-libx264 --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-pic --enable-gpl --enable-nonfree
  libavutil    51. 24. 1 / 51. 24. 1
  libavcodec   53. 31. 0 / 53. 31. 0
  libavformat  53. 20. 0 / 53. 20. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 47. 2 /  2. 47. 2
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
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'


Для конвертации мы используем следующие флаги:

OGV
ffmpeg -i test.avi -acodec libvorbis -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720 test.cvt.ogv


WebM
ffmpeg -i test.avi  -acodec libvorbis -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720 test.cvt.webm


Mp4
ffmpeg -i test.avi -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720 -level 21 -refs 2 -bt 1500k test.cvt.mp4


Буду рад если кто-то подскажет более оптимальные.
Tags:
Hubs:
+11
Comments 21
Comments Comments 21

Articles