Установка FFMPEG и FFMPEG-PHP на CentOS

Запись создана марта 12, 2008

Выкачиваем сорцы:

cd /usr/local/src
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2
wget http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz
wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
wget http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.0.tbz2
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz

Распаковываем:

bunzip2 essential-20061022.tar.bz2; tar xvf essential-20061022.tar
tar zxvf flvtool2_1.0.5_rc6.tgz
tar zxvf lame-3.97.tar.gz
bunzip2 ffmpeg-php-0.5.0.tbz2; tar xvf ffmpeg-php-0.5.0.tar
tar zxvf libogg-1.1.3.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz

Устанавливаем кодеки:

mkdir /usr/local/lib/codecs/
mv essential-20061022/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

Ставим SVN/Ruby:

yum install subversion
yum install ruby
yum install ncurses-devel

берём свежий FFMPEG/MPlayer из SVN:

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

В файл /etc/ld.so.conf вставим строчку: /usr/local/lib
затем выполним: ldconfig -v

Переходим к установке LAME libOGG libVorbis flvtool2 MPlayer FFMPEG

cd /usr/local/src/lame-3.97
./configure
make && make install

cd /usr/local/src/libogg-1.1.3
./configure
make && make install

cd /usr/local/src/libvorbis-1.1.2
./configure
make && make install

cd /usr/local/src/flvtool2_1.0.5_rc6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

cd /usr/local/src/mplayer
./configure
make && make install

cd /usr/local/src/ffmpeg
./configure --enable-libmp3lame --enable-libogg --enable-libvorbis --disable-mmx --enable-shared
echo '#define HAVE_LRINTF 1' >> config.h
make && make install

Завершаем установку кодеков:

ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50
ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51
ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0
ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51

Перед установкой FFMPEG-PHP ставим:

yum install automake
yum install autoconf
yum install libtoolх

Переходим к установке FFMPEG-PHP:

cd /usr/local/src/ffmpeg-php-0.5.0
phpize
./configure
make && make install

Включаем FFMPEG-PHP как расширение к PHP. Для этого в конфиг php.ini добавим:
extension=ffmpeg.so

Рестартим апача: service httpd restart

для проверки загрузился ли FFMPEG-PHP корректно создадим файл phpinfo.php содержащий:

 

В выводе phpinfo должен появиться блок ffmpeg.

Внимание: Господа, если у Вас не получается выполнить установку самостоятельно, готов помочь Вам за небольшое вознаграждение. Мои контакты в колонке справа.

» Запись из раздела PHP, Unix | 33 комментария

Комментарии



33 комментария to “Установка FFMPEG и FFMPEG-PHP на CentOS”

  1. admin on июня 10, 2008 19:07

    На x86_64 может возникать ошибка:
    checking for ffmpeg support… yes, shared
    checking for ffmpeg headers… configure: error: ffmpeg headers not found. Make sure you’ve built ffmpeg as shared libs using the —enable-shared option

    лечится так:
    mkdir /usr/local/include/ffmpeg
    ln -s /usr/local/include/libavcodec/avcodec.h /usr/local/include/ffmpeg
    ln -s /usr/local/include/libavcodec/opt.h /usr/local/include/ffmpeg

  2. admin on июня 10, 2008 19:14

    Затем скопировать либы в папку с исходниками
    cp /usr/local/include/libavformat/avio.h ffmpeg-php-0.5.0
    cp /usr/local/include/libavformat/avformat.h ffmpeg-php-0.5.0

  3. oleg on июля 3, 2008 15:41

    пришлось прибегнуть к лечению из коментов т.к. выдавало:
    shared libs using the –enable-shared option
    Инсталил, но в phpinfo нет ffmpeg? а при запросе php -r ‘phpinfo();’ | grep ffmpeg
    пишет:
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/ffmpeg.so’ — /usr/lib/php/modules/ffmpeg.so: undefined symbol: av_free_static in Unknown on line 0

    Подскажите как решить…

  4. oleg on июля 3, 2008 16:16

    кстати extension_dir = «/usr/lib64/php/modules»
    непонял почему он ищет его в /usr/lib/php/modules/ffmpeg.so

  5. oleg on июля 21, 2008 23:07

    ну хоть скажите что незнаете тогда….

  6. admin on июля 21, 2008 23:10

    Когда собираете ffmpeg-php сделайте make test
    обычно это помогает понять в чём проблема.

  7. Aleksey on ноября 27, 2008 15:09

    Сделал все как описано и при установке на CentOS выдает ошибку:

    -bash-3.2# make && make test && make install
    /bin/sh /usr/local/src/ffmpeg-php-0.5.0/libtool —mode=compile gcc -I. -I/usr/local/src/ffmpeg-php-0.5.0 -DPHP_ATOM_INC -I/usr/local/src/ffmpeg-php-0.5.0/include -I/usr/local/src/ffmpeg-php-0.5.0/main -I/usr/local/src/ffmpeg-php-0.5.0 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/ffmpeg -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c -o ffmpeg_frame.lo
    gcc -I. -I/usr/local/src/ffmpeg-php-0.5.0 -DPHP_ATOM_INC -I/usr/local/src/ffmpeg-php-0.5.0/include -I/usr/local/src/ffmpeg-php-0.5.0/main -I/usr/local/src/ffmpeg-php-0.5.0 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/ffmpeg -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c -fPIC -DPIC -o .libs/ffmpeg_frame.o
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_convert_frame’:
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:162: warning: implicit declaration of function ‘img_convert’
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_crop_frame’:
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:215: warning: implicit declaration of function ‘img_copy’
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_resample_frame’:
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: ‘ImgReSampleContext’ undeclared (first use in this function)
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: (Each undeclared identifier is reported only once
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: for each function it appears in.)
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: ‘img_resample_ctx’ undeclared (first use in this function)
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:263: warning: implicit declaration of function ‘img_resample_full_init’
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:276: warning: implicit declaration of function ‘img_resample’
    /usr/local/src/ffmpeg-php-0.5.0/ffmpeg_frame.c:281: warning: implicit declaration of function ‘img_resample_close’
    make: *** [ffmpeg_frame.lo] Error 1
    -bash-3.2#

    Как решить проблему?

  8. iva on ноября 30, 2008 5:30

    При попытке:
    Затем скопировать либы в папку с исходниками
    cp /usr/local/include/libavformat/avio.h ffmpeg-php-0.5.0
    cp /usr/local/include/libavformat/avformat.h ffmpeg-php-0.5.0
    Пишет:
    cp: cannot stat `/usr/local/include/libavformat/avio.h’: No such file or directory

  9. iva on ноября 30, 2008 17:42

    Чья это директория? Почему её у меня нет..что не установилось…
    ps я в линуксе новичек, помогите плиз

  10. admin on декабря 1, 2008 16:15

    ivam, где Вы взяли рекоммендацию скопировать?

    внимательно пройдитесь по всей инструкции.

  11. iva on декабря 1, 2008 19:12

    admin, у меня возникает ошибка при конфигурации ffmpeg-php-0.5.0

    checking for ffmpeg headers… configure: error: ffmpeg headers not found. Make sure you’ve built ffmpeg as shared libs using the —enable-shared option

    вы описали способ лечения в первых комментах, но при попытке ввести команды
    cp /usr/local/include/libavformat/avio.h ffmpeg-php-0.5.0
    cp /usr/local/include/libavformat/avformat.h ffmpeg-php-0.5.0

    я получаю ошибку
    cp: cannot stat `/usr/local/include/libavformat/avio.h’: No such file or directory

  12. Виталий on декабря 5, 2008 11:15

    Подскажите пожалуйста, при выполнении ./configure выдается такое:

    Unable to create and execute files in /tmp. Set the TMPDIR environment
    variable to another directory and make sure that /tmp is not mounted
    noexec.
    Sanity test failed.

    Смена TMPDIR никакого результата не дала.

    Заранее спасибо.

  13. Maxim on марта 3, 2009 19:59

    При выполнении make на ffmpeg-php выдает ошибку:

    /bin/sh /tmp/ffmpeg/ffmpeg-php-0.5.0/libtool —mode=compile gcc -I. -I/tmp/ffmpeg/ffmpeg-php-0.5.0 -DPHP_ATOM_INC -I/tmp/ffmpeg/ffmpeg-php-0.5.0/include -I/tmp/ffmpeg/ffmpeg-php-0.5.0/main -I/tmp/ffmpeg/ffmpeg-php-0.5.0 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c -o ffmpeg_frame.lo
    gcc -I. -I/tmp/ffmpeg/ffmpeg-php-0.5.0 -DPHP_ATOM_INC -I/tmp/ffmpeg/ffmpeg-php-0.5.0/include -I/tmp/ffmpeg/ffmpeg-php-0.5.0/main -I/tmp/ffmpeg/ffmpeg-php-0.5.0 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -Wall -fno-strict-aliasing -c /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c -fPIC -DPIC -o .libs/ffmpeg_frame.o
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_convert_frame’:
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:162: warning: implicit declaration of function ‘img_convert’
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_crop_frame’:
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:215: warning: implicit declaration of function ‘img_copy’
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c: In function ‘_php_resample_frame’:
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: ‘ImgReSampleContext’ undeclared (first use in this function)
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: (Each undeclared identifier is reported only once
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: for each function it appears in.)
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:237: error: ‘img_resample_ctx’ undeclared (first use in this function)
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:263: warning: implicit declaration of function ‘img_resample_full_init’
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:276: warning: implicit declaration of function ‘img_resample’
    /tmp/ffmpeg/ffmpeg-php-0.5.0/ffmpeg_frame.c:281: warning: implicit declaration of function ‘img_resample_close’

    Помогите, пожалуйста, решить проблему.

  14. Артур Шакиров on марта 3, 2009 20:17

    Проверьте билды пакетов, соответствуют ли они указанным в статье. есть информация о том что взятый из SVN билд не собирается.

    могу посмотреть что там и как, но услуга платная.

  15. Артур Шакиров on марта 3, 2009 20:21

    Виталий, проверьте доступен ли раздел /tmp для записи и не смонтировн ли он с опцией noexec.
    просто создайте в /tmp файл с текстом echo test затем chmod +x на него и попробуйте исполнить.

  16. Alex33 on марта 24, 2009 12:23

    Уважаемый автор!
    Напишите пожалуйста такую статью для FreeBSD :)

  17. Surgeon on апреля 2, 2009 18:08

    при выполнении make && make install выдаёт syntax error near unexpected token `&’

    в чём проблема?

  18. Артур Шакиров on апреля 2, 2009 18:17

    вероятно у Вас скопировалась команда в формате html, т.е. вместо & его мнемоника.

    make
    make install

  19. Surgeon on апреля 3, 2009 1:34

    нет нет… вписал я его правильно, как у вас указано:) это в каментах он таким стал:)

  20. Артур Шакиров on апреля 3, 2009 9:46

    Ну тогда выполняйте последовательно, сначала make потом make install

  21. Игорь on октября 3, 2009 2:44

    Большое человеческое спасибо, Артур, за подробный пошаговый ман. Мне, как новичку в linux, оказалось довольно легко установить ffmpeg на VPS, следуя приведенным инструкциям. Не обошлось конечно без накладок (не захотел вставать libvorbis, my failure ^-^), но благодаря этой статье пользователи наконец могут заливать на сайт свою медиатеку. Так что от меня и от лица пользователей еще раз — Спасибо :-)

  22. WebGraf on октября 6, 2009 3:05

    make: *** [ffmpeg-php.lo] Error 1
    что с этим сделать?

  23. Igor Olemskoi on октября 6, 2009 17:00
  24. andy on декабря 3, 2009 0:25

    Лучше всего конвертировать в On2VP6
    Здесь полностью подробно описано как настроить качественный HDTV-видеохостинг

  25. Артур Шакиров on декабря 7, 2009 4:11

    andy, извините но ссылка вообще ни о чем. ни единого слова о том как чего куда конвертировать. а тупое yum install httpd php ffmpeg mplayer

  26. andy on декабря 8, 2009 0:00

    >>>andy, извините но ссылка вообще ни о чем. ни единого слова о том как чего куда конвертировать. а тупое yum install httpd php ffmpeg mplayer

    Доброго времени суток Артур Шакиров.

    Вы знаете, с помощью этой статьи с ******, о которой Вы говорите «…тупое yum install…» я реально за 15 минут полностью поставил все, что связано с видео-хостингом.

    А этот подход по установки FFMpeg-a тупо слизанный Вами и переведенный на русский язык с просторов инета (если быть точнее с ***********) просто напросто не рабочий т.к. FFMpeg зачастую любит выкладывать битые исходники.

    Не будьте хамом, укажите в статье источник!!!

    Жаль что люди этот комментарий не успеют прочитать до того как Вы его удалите :-(

  27. Артур Шакиров on декабря 8, 2009 0:34

    Здравствуйте,

    во первых, это перевод официальной доки из гуглогруппы ffmpeg-php
    во вторых, если руки ростут не из плечь, то исходники в svn действительно битые.
    в третьих, не поленитсь и почитайте мой пост: http://itblog.su/php-ffmpeg-ustanovka-na-centos-5.html

    PS: я не тру комменты, я затираю ссылки на быдлоблги про yum install.

  28. www on декабря 8, 2009 1:11

    Это лично мое мнение — ЗАЧЕМ ДЕЛАТЬ ВСЕ ЧЕРЕЗ **** КАК ЗДЕСЬ ОПИСАНО ЕСЛИ ВСЕ МОЖНО СДЕЛАТЬ ЧЕРЕЗ YUM!!!

  29. Артур Шакиров on декабря 8, 2009 1:21

    это официальный мануал ffmpeg-php универсальный для любого дистрибутива линукс.

    если не хочется собирать из исходников, то пожалуйста я описал и этот вариант: http://itblog.su/php-ffmpeg-ustanovka-na-centos-5.html

  30. alex on февраля 7, 2010 16:45

    попал на ошибку с /usr/lib/libavdevice.so, говорило что нет прав. в гугле решения нет но полечилось так:

    ls -lZ /usr/lib/libavdevice.so
    видим что ссылка симолическая, лечим :
    chcon -c -v -R -u system_r -t textrel_shlib_t /usr/lib/*

    надеюсь кому поможет

  31. Артур Шакиров on февраля 7, 2010 22:37

    не менее радикальный способ это отключить SElinux

  32. BadNickName on марта 19, 2010 3:26

    admin, у меня возникает ошибка при конфигурации ffmpeg-php-0.5.0

    checking for ffmpeg headers… configure: error: ffmpeg headers not found. Make sure you’ve built ffmpeg as shared libs using the –enable-shared option

    вы описали способ лечения в первых комментах, но при попытке ввести команды
    cp /usr/local/include/libavformat/avio.h ffmpeg-php-0.5.0
    cp /usr/local/include/libavformat/avformat.h ffmpeg-php-0.5.0

    я получаю ошибку
    cp: cannot stat `/usr/local/include/libavformat/avio.h’: No such file or directory

  33. Виталий on января 21, 2011 11:48

    Установил практически все, но когда устанавливал,
    cd /usr/local/src/ffmpeg
    ./configure —enable-libmp3lame —enable-libogg —enable-libvorbis —disable-mmx —enable-shared

    Пишет вот, что,

    root@server [~]# cd /usr/local/src/ffmpeg
    root@server [/usr/local/src/ffmpeg]# ./configure —enable-libmp3lame —enable-libogg —enable-libvorbis —disable-mmx —enable-shared
    Unknown option «—enable-libogg».
    See ./configure —help for available options.
    root@server [/usr/local/src/ffmpeg]#

    Почему не устанавливает дальше в чем ошибка?




Ответить