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.