Feb
21
|
Установка FFmpeg в Linux
|
В частности речь пойдет про Debian Lenny, но это же самое вполне подойдет и для любого Linux, ровно как и для FreeBSD.
Немного предыстории: с самого начала видеохостинга у меня ffmpeg был просто втупую поставлен через менеджер пакетов —
Однако со временем я пришел к тому, что версия сильно устаревает (например текущая сборка в lenny датируется маем 2009 года — почти год назад), а версию из sid не всегда удается корректно собрать, и с этим надо
А что делать? Да взять и собрать себе ffmpeg из официального svn. Так и поступим.
Подготовка
Для начала рекомендую удалить ffmpeg, если он уже установлен. В случае менеджера пакетов apt:
Если собирали из исходников — достаточно удалить сам бинарник, найдя его через whereis ffmpeg.
После этого нам понадобиться скачать себе файлы из svn ffmpeg (предполагаю, что svn уже установлен в системе, если нет — надо сначала поставить):
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
ну или же, если используется git:
git clone git://git.ffmpeg.org/ffmpeg/
cd ffmpeg
git clone git://git.ffmpeg.org/libswscale/
Настройка, сборка и установка
Переходим в папку ffmpeg, слитого с репозитория:
cd ffmpeg
Для установки ffmpeg нужно запустить ./configure с нужным набором ключей. У меня, как думаю и у многих, одной из проблем было какие ключи нужны. Методом проб и ошибок я пришел к такой команде:
./configure
–prefix=/usr –libdir=/usr/lib –shlibdir=/usr/lib –bindir=/usr/bin –incdir=/usr/include/ffmpeg –enable-libx264 –enable-postproc –enable-libxvid –enable-pthreads –enable-libvorbis –enable-libfaad –enable-gpl –enable-x11grab –enable-shared –enable-libmp3lame –enable-libtheora –enable-libfaac –enable-libfaad –enable-nonfree –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libgsm –enable-version3 –enable-avfilter –enable-libspeex –enable-zlib –enable-libschroedinger –disable-encoder=libschroedinger –enable-libdc1394 –disable-mmx –disable-stripping –enable-libdirac –disable-decoder=libdirac –disable-altivec –disable-armv5te –disable-armv6 –disable-vis –enable-avfilter-lavf –enable-libopenjpeg –extra-cflags=-Wall –cc=ccache cc–enable-swscale
Однако это еще не все. Чтобы Makefile сделался с таким набором ключей еще прийдется попотеть, а именно доставить все то, что он потребует (если в системе еще нету). Как правило после запуска конфигуратор скажет
FAAD test failed
Это означает, что нужно установить libfaad, что делается довольно просто:
Сообщения могут быть разными, но суть одна и та же — как правило
Но не все ;P
Исключением будут, как правило, ключи:
1.
2.
3.
С этими библиотеками так просто не выйдет. Но тоже решаемо. Разберемся с ними:
1.
Ранее этих ключей не было, они пришли на замену
FFmpeg has removed support for libamr as of svn revision 19365. It has been replaced with support for
libopencore-amr. Naturally the configure options have changed. The libamr options have been removed and there are two new options to take their place:*
–enable-libopencore-amrnb
*–enable-libopencore-amrwb The reason for this change is that the libamr license was
non-free, whilelibopencore-amr is licensed under an Apache 2 license. The change was discussed at length on the developer mailing list during May, June, and July. This has several effects:* You may now distribute FFmpeg builds with support for dynamically loading
libopencore-amr
* Support forAMR-WB encoding has been removed sincelibopencore-amr does not support it
Это означает, что поддержки из свн данной библиотеки нету. И что самое интересное, пакета нет и через установку с помощью apt (вроде есть в sid, но у меня не поставилось из него, куча побитых зависимостей и т.д.), поэтому сделаем иначе — скачаем исходники отсюда и собираем вручную через:
./configure
make
make install
Я собирал этот исходник на трех машинах, почти одинаковых и вот такие грабли иногда возникали:
1.
configure: error: c++ compiler cannot create executables
Лечиться либо через apt —
2.
unable to guess system typeThis script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts fromhttp://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
pertinent toin order to provide the needed
information to handle your system.
Лечиться через дополнительный ключ к ./configure (зависит от вашей архитектуры, у меня i686, свою узнать можно через uname -a)
./configure
–build=i686
Других проблем мною не было замечено. После установки данной библиотеки ffmpeg будет собираться с поддержкой их (они предназначены для перекодировки видео с мобильных телефонов — 3gp и другие подобные форматы).
2.
Как правило требуется установить libx264. Но даже если библиотека установлена, всеравно можно получить сообщение, о том, что библиотека довольно старая и требуется версия не ниже 0.83 (которой естественно в ветке lenny нету).
Не стоит отчаиваться, делаем следующее:
mcedit /etc/apt/sources.list
и заменяем строку
deb
http://www.debian-multimedia.org lenny main
на
deb
http://www.debian-multimedia.org sid main
После чего делаем
и
где и увидим нужное:
libx264–83 — x264 video coding library
Все, можно ставить:
и вопрос с данным ключем на этом тоже решен. После установки библиотеки рекомендую вернуть в souces.list строку в изначальное положение (тоесть вернуть lenny) и выполнить
3.
Тут тоже запущенный вариант, т.к.
Но наша нигде не пропадала, поэтому опять открываем sources.list и меняем строку
deb http://ftp.ua.debian.org/debian/ lenny main
на
deb http://ftp.ua.debian.org/debian/ sid main
и делаем
libtheora0 — The Theora Video Compression Codec
Ставим выделенное жирным:
После этого конфигурационный скрипт больше не будет матюкаться на libtheora.
Больше по идее проблем с конфигурацией не должно возникать. После этого ./configure с указанными выше ключами должен успешно выполниться (если все библиотеки доставлены), и можно делать
make
Тут иногда возможны варианты. Например не собирается, ругается на
Иногда проскакивают разного рода глюки компиляции, когда выводит
Процесс сборки make занимает некоторое продолжительное время, от 10 до 30 минут, в зависимости от мощности машины, где это запущено.
Если все хорошо, можно делать
make install
После этого стоит проверить, все ли хорошо, выполнив команду:
ffmpeg
Если установка успешна, вы должны увидеть
FFmpeg version
SVN-r21796, Copyright ©2000-2010 Fabrice Bellard, et al.
built on Feb 21 2010 14:55:21 with gcc 4.3.2
configuration:–prefix=/usr –libdir=/usr/lib –shlibdir=/usr/lib –bindir=/usr/bin –incdir=/usr/include/ffmpeg –enable-libx264 –enable-postproc –enable-libxvid –enable-pthreads –enable-libvorbis –enable-libfaad –enable-gpl –enable-x11grab –enable-shared –enable-libmp3lame –enable-libtheora –enable-libfaac –enable-libfaad –enable-nonfree –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libgsm –enable-version3 –enable-avfilter –enable-libspeex –enable-zlib –enable-libschroedinger –disable-encoder=libschroedinger –enable-libdc1394 –disable-mmx –disable-stripping –enable-libdirac –disable-decoder=libdirac –disable-altivec –disable-armv5te –disable-armv6 –disable-vis –enable-avfilter-lavf –enable-libopenjpeg –extra-cflags=-Wall –cc=ccache cc–enable-swscale
libavutil 50. 9. 0 / 50. 9. 0 libavcodec 52.54. 0 / 52.54. 0 libavformat 52.52. 0 / 52.52. 0 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1.17. 0 / 1.17. 0 libswscale 0.10. 0 / 0.10. 0 libpostproc 51. 2. 0 / 51. 2. 0
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 выводит не то, что я показал выше, а сообщения по типу:
libavformat.so.52: no version information available (required by ffmpeg)
Пришлось поморочиться, но в итоге я нашел решение.
Дело в том, что процесс установки менеджера пакетов
Лечится банально — копируем 3 файла из папки, куда установил либы ffmpeg (зависит от конфигурации в ./configure). В моих ключах можно заметить, что библиотеки пошли в /usr/lib/.
Отлично, копируем libavformat.so libavformat.so.52 libavformat.so.52.52.0 из этой папки в папку /usr/lib/i686/cmov/
После этого радуемся жизни с ffmpeg ;P
Вместо заключения
Приятного использования свежей версии ffmpeg!
Мне она помогла устранить пару багов с перекодированными видео, которые оставляла предыдущая версия, установленная через менеджер пакетов.
Есть вопросы? Пишем в комментариях, не стесняемся, помогу, чем смогу.
22.02.2010 в 01:52
І навіщо кілометр тексту там, де можна просто підправити src.deb під свої потреби? Невже приємніше спочатку мучитися з інсталяцією і компіляцію на кожній машині, а потім ще й чистити машини?
22.02.2010 в 02:03
Volodymyr Lisivka:
Покажите пример, т.к. я не совсем понимаю, как вы предлагаете отредактировать и что именно.
Задача: мне нужен свежий ffmpeg. Машины разные, а не одинаковые, с разной архитектурой.
03.03.2010 в 15:42
Вчера кстати пересобрал из svn’a на трех машинах ffmpeg. Из приятных новинок и вкусностей – ffprobe интегрировали в ffmpeg, после сборки которого утилита стает сразу доступной, а ранее ставилась отдельно.
Ту, что ставил через apt – снес, ложилась с сообщением Segmentation Fault.
ffprobe легко и удобно применять, например, для получения данных о битрейте видео и т.д.
07.04.2010 в 23:00
Він має на увазі просто додати в соурс ліст стейбл вітки дебіана запис з девелопментської версії, а потім знову назад. або ж просто перейти на девелопментську версію.
і взагалі можна man checkinstall.