FFmpeg на CentOS 6.4

ffmpeg linux centos 6.4

UPD 22.07.2018: Для CentOS 7 существует более простой способ установки описанный в knowledgebase: https://shurshun.ru/knowledgebase/ustanovka-ffmpeg-na-centos-7/

На одном из своих проектов, возникла необходимость работы с видео файлами. Прорешерстив Интернет, выбор пал на FFmpeg, который по сути является удобной «оберткой-конвертером» к существующим видео и аудио кодекам, с интерфейсом командной строки. В репозитариях необходимого пакета не оказалось, те что оказались, вызывали некоторые нарекания в работе, поэтому сам кодировщик и сопутствующие библиотеки были собраны из дистрибутивов.

На сервере — свежая СentOS 6.4, правда почему-то 32-битная. В моем случае (тестирование) это особо роли не сыграло.


[root@test /]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m

[root@test /]# uname -a
Linux shurshun 2.6.32-358.6.1.el6.i686 #1 SMP Tue Apr 23 18:13:20 UTC 2013 i686 i686 i386 GNU/Linux

Оговорюсь сразу. Я нашел как минимум 2 подхода к установке FFmpeg.

Оба описаны на Хабре.

Первый (http://habrahabr.ru/post/188380/) в общем-то очень простой, и начинается с ключевого «Скачиваем пакет»:

cd  /tmp
wget http://mirror.ffmpeginstaller.com/old/scripts/ffmpeg7/ffmpeginstaller.7.4.tar.gz
tar -xzf ffmpeginstaller.7.4.tar.gz ffmpeg
cd ffmpeg

К сожалению о нем я вспомнил слишком поздно, поэтому о работоспособности ничего конкретного сказать не могу.

А вот второй (http://habrahabr.ru/post/132495/) способ опробован и является вполне рабочим.

1. Для начала обновим все пакеты и установим необходимое из стандартного репозитория



yum update && yum upgrade

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

2. Добавим в конфиг путь для поиска библиотек:

echo /usr/local/lib >/etc/ld.so.conf.d/local.conf

3. Закачаем необходимые исходники:

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

4. Распакуем:

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

6. Ну и начинаем собирать.
Необходимая билиотека для 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

Далее пошло видео:

У меня 32-битная система, поэтому параметр «—target=x86_64-linux-gcc» у меня выключен.

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

Технически все.
На практике, оказалось, что две библиотеки (libmp3lame.so.0 и libfaac.so.0)  не подцепились, несмотря на то, что были скомпилины и установлены.  Ничего страшного в этом нет, найдя их через find, сделав симлинк в /usr/lib и повторив «ldconfig -v» проблему удалось исправить.


[root@test ffmpeg]# ldd `which ffmpeg`
        linux-gate.so.1 =>  (0x00e7d000)
        libavdevice.so.55 => /usr/lib/libavdevice.so.55 (0x00ebc000)
        libavfilter.so.3 => /usr/lib/libavfilter.so.3 (0x00a9a000)
        libavformat.so.55 => /usr/lib/libavformat.so.55 (0x003cb000)
        libavcodec.so.55 => /usr/lib/libavcodec.so.55 (0xb68d3000)
        libpostproc.so.52 => /usr/lib/libpostproc.so.52 (0x00cdc000)
        libswresample.so.0 => /usr/lib/libswresample.so.0 (0x001df000)
        libswscale.so.2 => /usr/lib/libswscale.so.2 (0x001f6000)
        libavutil.so.52 => /usr/lib/libavutil.so.52 (0x00e02000)
        libm.so.6 => /lib/libm.so.6 (0x00bca000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00b97000)
        libc.so.6 => /lib/libc.so.6 (0x0053b000)
        libasound.so.2 => /lib/libasound.so.2 (0x0025e000)
        librt.so.1 => /lib/librt.so.1 (0x00bf6000)
        libbz2.so.1 => /lib/libbz2.so.1 (0x06947000)
        libz.so.1 => /lib/libz.so.1 (0x00bb4000)
        libx264.so.135 => /usr/lib/libx264.so.135 (0x00767000)
        libvpx.so.0 => /usr/lib/libvpx.so.0 (0x965d3000)
        libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00ec8000)
        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x0034a000)
        libtheoraenc.so.1 => /usr/lib/libtheoraenc.so.1 (0x00d31000)
        libtheoradec.so.1 => /usr/lib/libtheoradec.so.1 (0x00374000)
        /lib/ld-linux.so.2 (0x009d1000)
        libmp3lame.so.0 => not found
        libfaac.so.0 => not found
        libdl.so.2 => /lib/libdl.so.2 (0x00b90000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0x00385000)

В итоге последняя версия ffmpeg-а установлена:

[root@ffmpeg ffmpeg]# ffmpeg
[root@shurshun lib]# ffmpeg
ffmpeg version N-55390-g55a88da Copyright (c) 2000-2013 the FFmpeg developers
  built on Aug  8 2013 21:45:11 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
  libavutil      52. 41.100 / 52. 41.100
  libavcodec     55. 24.100 / 55. 24.100
  libavformat    55. 13.102 / 55. 13.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 82.100 /  3. 82.100
  libswscale      2.  4.100 /  2.  4.100
  libswresample   0. 17.103 /  0. 17.103
  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.

Вы можете оставить комментарий ниже.