Ставим и настраиваем FFmpeg, FFmpeg-PHP и дополнительные кодеки
![]()
Итак, ниже я подробно опишу как поставить на ваш Linux-сервер FFmpeg, FFmpeg-PHP, Mplayer, Mencoder , flv2tool, LAME MP3 Encoder, Libogg, Libvorbis.
А нафиг это всё мне нужно – спросите вы, отвечу – при помощи этого набора вы сможете конвертировать видео у себя на сервере, делать скриншоты из видео роликов и много чего другого, а всё это вам приходиться если вы надумаете у себя поднять сервис типа или ещё более гениальную вещь ![]()
Начну с описания своего дистрибутива
[root@server /]# uname -a
Linux server.clientservers.org.ua 2.6.18-8.1.1.el5 #1 SMP Mon Apr 9 09:46:54 EDT 2007 i686 i686 i386 GNU/Linux
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://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.5.2.1.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
#извлекаем архивы:
tar zxvf flvtool2_1.0.5_rc6.tgz
tar zxvf lame-3.97.tar.gz
tar zxvf libogg-1.1.3.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz
tar zxvf flvtool2_1.0.5_rc6.tgz
tar jxvf essential-20061022.tar.bz2
tar jxvf ffmpeg-php-0.5.2.1.tbz2
#сделаем папочку под это дело:
mkdir /usr/local/lib/codecs/
#JUST IN CASE:
yum install gcc gmake make libcpp libgcc libstdc++ gcc4 gcc4-c++ gcc4-gfortran ruby svn
#проверяем SVN репозитарии:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd /usr/local/src/mplayer
svn update
cd /usr/local/src
#Копируем кодеки для MPLAYER:
mv /usr/local/src/essential-20061022/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/
#делаем temp директорию
mkdir /usr/local/src/tmp
chmod 777 /usr/local/src/tmp
export TMPDIR=/usr/local/src/tmp
#LAME:
cd /usr/local/src/lame-3.97
./configure
make && make install
#LIBOGG:
cd /usr/local/src/libogg-1.1.3
./configure && make && make install
#LIBVORBIS:
cd /usr/local/src/libvorbis-1.1.2
./configure && make && make install
#FLVTOOL2:
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/
cd /usr/local/src/mplayer
./configure && make && make install
#FFMPEG:
cd /usr/local/src/ffmpeg/
./configure --enable-libmp3lame --disable-mmx --enable-shared
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
ln -s /usr/local/lib/libavformat.so.52 /usr/lib/libavformat.so.52
ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52
cd /usr/local/src/
#FFMPEG-PHP:
cd /usr/local/src/ffmpeg-php-0.5.2.1/
phpize
./configure
make
make install
#добавляем расширение в наш php.ini
echo 'extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so' >> /usr/local/Zend/etc/php.ini
#рестартуем веб-серве
service httpd restart
Дальше запускаем Скрипт с phpinfo() и ищем раздел ffmpeg
У меня вот так получилось:
ffmpeg
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.2.1
libavcodec version Lavc51.57.0
libavformat version Lavf52.14.0
ffmpeg-php gd support enabled
Directive Local Value Master Value
ffmpeg.allow_persistent 0 0
Всё работает, всё круто
Если у кого-то не получилось – не отчаивайтесь а пишите в коментах.
Разработка интернет-магазинов, скриптов, SEO и повышение конвертации. Менеджмент онлайн проектов.
нико
14 Jul, 2008
./configure
нико
14 Jul, 2008
коро
admin
14 Jul, 2008
николай
18 Jul, 2008
напишите ICQ 9367226
Vladimir
18 Sep, 2008
checking for ffmpeg support… yes, shared
checking whether to force gd support in ffmpeg-php… no
checking for ffmpeg headers…
configure: error: ffmpeg headers not found. Make sure ffmpeg is compiled as shared libraries using the –enable-shared option
leoo
21 Feb, 2009
Спасибо, реально помогло ))))
Saint_Byte
28 мая, 2009
Вот как надо компилить ffmpeg, потому что если его просто так скомпилить он не фига поддерживать не будет http://dotblog.ru/2009/05/20/sborka-ffmpeg-s-maksimalnojj-podderzhkojj-kodekov-i-prochikh-funkcijj/
BadArt
2 Jun, 2009
У меня выводит: ffmpeg-php gd support disabled, как включить?
Евгений
15 Jul, 2010
Могди бы Вы написать для НЕ ПРОГРАММИСТА как пошагово (для совсем тупых) установить на сервер ffmpeg?
Xorg
16 Nov, 2010
Евгений, см. как пользоваться терминалом, и тогда вам строки не будут казаться замысловатым текстом.
Удачи.
murat
10 Jan, 2011
у меня выходить ошибка на ffmpeg-php когда делаю make ffmpeg_frame.lo все исправления которые нашел перепробовал не работает (исправления ffmpeg_frame.loT ffmpeg_frame.lo и замена RGBA32 на RGB32)
помогите, какой то кодек не поставил или как?
admin
10 Jan, 2011
Предоставляйте более расширенный лог, к сожалению телепатии пока не обучен и ответить по такому маленькому количеству информации не представляется возможным
murat
10 Jan, 2011
все делал по инструкции
murat
10 Jan, 2011
извиняюсь ошибка ffmpeg-php.lo
murat
11 Jan, 2011
_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] Ошибка 1
вот такая вот ошибка выходит при make
murat
11 Jan, 2011
у меня файла ffmpeg_frame.lo и ffmpeg_frame.loТ нету даже после make
появляется файл после make ffmpeg-php.lo
и я делаю mv ffmpeg-php.lo ffmpeg_frame.lo
теперь выходит такая ошибка
.libs/ffmpeg-php.o: In function `get_module’:
/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:56: multiple definition of `get_module’
.libs/ffmpeg-php.o:/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:56: first defined here
.libs/ffmpeg-php.o:(.data.rel+0×0): multiple definition of `ffmpeg_module_entry’
.libs/ffmpeg-php.o:(.data.rel+0×0): first defined here
.libs/ffmpeg-php.o: In function `zm_info_ffmpeg’:
/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:113: multiple definition of `zm_info_ffmpeg’
.libs/ffmpeg-php.o:/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:113: first defined here
.libs/ffmpeg-php.o: In function `zm_shutdown_ffmpeg’:
/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:98: multiple definition of `zm_shutdown_ffmpeg’
.libs/ffmpeg-php.o:/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:98: first defined here
.libs/ffmpeg-php.o: In function `zm_startup_ffmpeg’:
/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:71: multiple definition of `zm_startup_ffmpeg’
.libs/ffmpeg-php.o:/usr/local/src/ffmpeg-php-0.5.0/ffmpeg-php.c:71: first defined here
collect2: ld returned 1 exit status
make: *** [ffmpeg.la] Ошибка 1
webphp
17 Jan, 2011
Проверьте билды пакетов, соответствуют ли они указанным в статье. есть информация о том что взятый из SVN билд не собирается.
murat
11 Jan, 2011
помогите пожалуйста
murat
11 Jan, 2011
когда делаю phpize он такое выдает это нормально?
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
webphp
17 Jan, 2011
Да, это нормально.
molatok
29 Jan, 2011
*** [ffmpeg_frame.lo] Ошибка 1
Как ее исправить, нашел уже кто-нибудь?..
Владимир
8 Nov, 2011
FFmpeg SVN-r12665
libavutil 3212800
libavcodec 3356160
libavformat 3411200
libavdevice 3407872
FFmpeg version SVN-r12665, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: –enable-gpl –enable-postproc –enable-swscale –enable-avfilter-lavf –enable-pthreads –enable-liba52 –enable-avisynth –enable-libfaac –enable-libfaad –enable-libgsm –enable-memalign-hack –enable-libmp3lame –enable-libnut –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –cpu=i686 –extra-ldflags=-static
libavutil version: 49.6.0
libavcodec version: 51.54.0
libavformat version: 52.13.0
libavdevice version: 52.0.0
built on Apr 2 2008 22:35:11, gcc: 4.2.3
У меня всё правильно настроено или нет