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.