Привет.
Специалисты по линуксу (centos 5 x64), подскажите: как правильно скомпилировать ffmpeg из исходников, но только чтобы все библиотеки, которые нужны для работы ffmpeg, находились бы в определенной папке, а не были разбросаны по разным каталогам?
Это нужно для того, чтобы перенести скомпилированный ffmpeg с библиотеками с одного centos на другой centos.
хм… А можно тогда наводящий вопрос? А зачем собирать ffmpeg руками? Можно же из репозитория поставить.
Ну, так или иначе: по поводу готового rpm-пакета: можно, например, скачать packages.sw.be/ffmpeg/ffmpeg-0.6.1-1.el5.rf.x86_64.rpm потом сделать rpm -i ffmpeg-0.6.1-1.el5.rf.x86_64.rpm;
По поводу сборки из исходников, краткий алгоритм будет что-нибудь типа:
mkdir ~/ffmpeg; cd ~/ffmpeg;
wget ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.bz2
tar xjf ffmpeg-0.7-rc1.tar.bz2
cd ffmpeg-0.7-rc1
mkdir ../ffmpeg_bin
./configure --prefix=../ffmpeg_bin --libdir=../ffmpeg_bin --shlibdir=../ffmpeg_bin --mandir=../ffmpeg_bin --enable-shared --cc=x86_64-pc-linux-gnu-gcc --disable-static --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --disable-stripping --disable-debug --disable-doc --disable-optimizations --enable-runtime-cpudetect --disable-vdpau --enable-libmp3lame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --disable-indev=oss --disable-indev=jack --enable-x11grab --disable-outdev=oss --enable-frei0r --enable-libfreetype --enable-pthreads --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libvpx --enable-libopenjpeg --disable-altivec --disable-avx --cpu=k8 --enable-hardcoded-tables --static
make
make install
Но, на самом деле, я Вам оказываю медвежью услугу: по правильному было бы спровоцировать Вас почитать мануалы и руководства, чтобы Вы понимали, что Вы делаете.
Прошу прощения, я не совсем корректно выразился — я не совсем чайник в линуксе и на мне «висит» сервер с centos 5 x64, который я поддерживаю.
Прежде чем, что либо, сделать на рабочем сервере, я делаю это на «домашнем», а уже потом, если все прошло нормально, то же самое делаю на рабочем.
И вот мне надо обновить ffmpeg на рабочем сервере… на домашнем я скомпилировал ffmpeg, но когда скопировал «exe'шник» на рабочий сервер, то естественно, ffmpeg не заработал так как нет нужных библиотек…
два встречных вопроса:
1) (грамотный путь) что мешает сделать rpm-пакет и переносить на другую машину уже rpm-пакет?
2) (ваш путь) ./configure --опции --опции --static --опции && make
Аналогичный трах у меня закончился безвозвратной миграцией на Ubuntu. Оказалось, что ffmpeg из репозитория этой ОС делает все, что мне нужно. А нужно мне было многое… Гораздо больше, чем тривиальный видеохостинг. Продакшн сдавал на этой ОС.
Да я бы рад смигрировать, но я не установлю и не настрою систему (
Возможно в будующем придется обновить ОС, но пока надо сделать так, чтобы ffmpeg работал на том что есть.
В приципе меня все устраивает, но есть несколько неприятных моментов при конвертировании файлов, которые я надеюсь «обойти» через «обновление» ffmpeg.
О конвертировании, а также о других опциях, собствено, и речь. В Ubuntu есть пакет с проприетарными кодеками, и он стабилен. То есть то, что нужно — доступно, и работает буквально «из коробки» без дополнительных телодвижений.
на самом деле, раз уж и менять дистрибутив, то почему бы (кроме тупого инсталлятора, конечно, но это не всех задевает) не Sabayon? Он умеет и бинарные пакеты ставить и одной комадой собирать из исходников с нужными опциями. Да и лично по мне, даже пакетный менеджер поудобней бубунты будет. А вообще, пусть у человека пока «копейка» постоит на месте, пусть поучится на «костылях», потом легче будет :)))
1. Как показывает многолетняя практика этот пункт только вредит.
2. Например?
3. Какой репозиторий? репозиторий чего? Вы думаете, что в сабайоне кроме родного дерева + гентушного дерева + гентушных оверлеев + ещё трёх «официальных» репозиториев других нету? Вы ошибаетесь :)
4. Простота и доступность ЧЕГО? Софт везде идентичный абсолютно. Разница ТОЛЬКО в версиях установленного софта, буковках на заставке и в пакетном менеджере. Но это решаемо. Для особо желающих в сабайон прекрасно ставятся через родной менеджер пакетов и RPM и pacman и dpkg.
В общем, коротко:
1. чрезмерная популярность — это минус, а не плюс, имхо. А средняя, как у Сабайона — самое то.
2. Конкретнее?
3. ???
4. Простота и доступность ЧЕГО? :)
Я не спец по CentOS, но наверняка там предусмотрена система пакетов. Во FreeBSD, например, то, что вы хотите, делается элементарно — собирается программа (из портов), затем сохраняете бинарный пакет, который на другой машине устанавливается командой pkg_add -r. Учите мат часть касательно ОС, которой вы пользуетесь.
Когда делаете «make install» при компиляции — укажите параметр DESTDIR, например так: «make install DESTDIR=/path/to/some/folder». Это заставит все скомпилированные файлы скинуть в папку "/path/to/some/folder" как в корень. А далее вы спокойно можете переносить эту папку. Или сделать из неё rpm-пакет, как указано в других ответах.
Вообщем не получилось у меня ни скомпилировать ffmpeg, ни поставить из rpm. Какие-то ошибки выскакивали.
Видимо «не мое это»…, но решение все таки нашлось в виде статично скомпилированного ffmpeg. Проверил конвертацию на CentOS 5 x64 — работает.