Яндекс.Метрика

    Песочница

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

    Работая с одним проектом, столкнулся с необходимостью заливки видео на сервер (качественные ролики длительностью 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++ checkinstall 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 © 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
    -acodec libvorbis -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720


    WebM
     -acodec libvorbis -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720


    Mp4
    -ab 192k -ac 2 -ar 44100 -b 1500k -s 1280x720 -level 21 -refs 2 -bt 1500k


    Буду рад если кто-то подскажет более оптимальные.