Как установить последнюю версию FFmpeg и x264

ffmpegLogoСтатья посвящена вопросу компиляции и установки пакетов FFmpeg и x264. Стоит отметить, что процесс это совершенно не простой, с учетом того, что вы ставите не мейнтейнерские сборки в виде deb пакетов или вытягиваете пакеты из вашего репозитория, а компилируете исходники. Многие команды являются трехстрочными и вам совсем нет смысла заучивать их наизусть, достаточно посидеть и разобраться в том, что они делают. Данный мануал является абсолютно рабочим пособием, по-этому, если у вас что-то не получилось, вернитесь в начало и проверьте каждую запятую. Исходники вам предстоит добывать из GIT & SVN, если вы совершенно не знакомы с ними, и не знаете, что это такое, то перейдите по указанным ссылкам, для общего ознакомления. В общем мануал рассчитан на опытного пользователя, хотя принцип step-by-step и copy-past-enter поможет установить FFmpeg даже совершенному новичку в Linux. Итак, как установить последнюю версию FFmpeg и x264 читаем ниже.

FFmpeg — набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec — библиотеку кодирования и декодирования аудио и видео и libavformat — библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и FF, означающего fast forward. FFmpeg разработан под ОС на основе GNU/Linux, однако может быть скомпилирован под многие другие операционные системы. Разработчики не выпускают релизов и рекомендуют использовать последнюю версию из Subversion. Распространяется под лицензиями GNU LGPL или GNU GPL.

x264 — свободная библиотека программных компонентов для кодирования видеопотоков H.264. Код этой библиотеки был написан с нуля. Сейчас этот проект является одним из наиболее продвинутых среди свободно доступных AVC-компрессоров. Это также один из немногих свободно доступных компрессоров High Profile AVC.

Коротко :-)
FFmpeg представляет собой универсальный инструмент для кодирования и декодирования множества видео и аудио форматов. x264 кодирует видео высокого качества лучше других популярных кодеков.

ВНИМАНИЕ: Мануал актуален ТОЛЬКО для Ubuntu Lucid Lynx 10.04

Подготовка. Установка зависимостей

1. Удалите x264, libx264-dev, и ffmpeg которые уже установлены у вас в системе. Откройте терминал и запустите вот эту команду:

sudo apt-get remove ffmpeg x264 libx264-dev
sudo apt-get remove ffmpeg x264 libx264-dev

2. Теперь необходимо получить все необходимые библиотеки для компилирования, для этого репозитарии universe и multiverse должны быть подключены в вашем /etc/apt/sources.list:

sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

Установка x264

3. Нужно получить последние доступные исходники, скомпилировать их и установить, помним, что для включения в скомпилированную сборку дополнительных опций делаем ./configure –help. Ночные сборки так же доступны. Пакеты для Ubuntu периодически обновляется тут.

cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default
cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default

Установка libvpx (опционально)

5. Эта библиотека используется для кодирования и декодирования VP8 видео. Если вы хотите пропустить это шаг, то в шаге 6 уберите опцию –enable-libvpx:

cd
git clone git://review.webmproject.org/libvpx.git
cd libvpx
./configure
make
sudo checkinstall --pkgname=libvpx --pkgversion="`date +%Y%m%d%H%M`-git" --backup=no --default
cd
git clone git://review.webmproject.org/libvpx.git
cd libvpx
./configure
make
sudo checkinstall --pkgname=libvpx --pkgversion="`date +%Y%m%d%H%M`-git" --backup=no --default

Установка FFmpeg

6. Нужно получить последние доступные исходники из официального SVN FFmpeg, скомпилировать их и установить. Ночные сборки доступны по этой ссылке:

cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default
hash x264 ffmpeg ffplay
cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default
hash x264 ffmpeg ffplay

Установка qt-faststart (опционально)

7. Эта полезная библиотека включая FFmpeg, позволяет работать с файлами типа H.264:

cd ~/ffmpeg
make tools/qt-faststart
sudo checkinstall --pkgname=qt-faststart --pkgversion "4:SVN-r`svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default install -D -m755 tools/qt-faststart /usr/local/bin/qt-faststart
cd ~/ffmpeg
make tools/qt-faststart
sudo checkinstall --pkgname=qt-faststart --pkgversion "4:SVN-r`svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default install -D -m755 tools/qt-faststart /usr/local/bin/qt-faststart

Это всё. Вы можете сохранить директории ~/x264 и ~/ffmpeg, так как они могут понадобиться вам в будущем, если вы захотите обновить сборки.

Использование FFmpeg и x264

Наиболее простой метод для кодирования видео высокого качества, использование библиотеки libx264 которая идет в комплекте с последними сборками FFmpeg. С помощью этих библиотек вы можете кодировать видео в форматы mp4 & mkv. А так же видео для ваших iPhone & iPod.

Простые примеры. Подробно на кодировании видео мы остановимся в одной из следующих статей.
One-pass CRF (Constant Rate Factor) Часто используемая технология:

ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 output.mp4
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 output.mp4

Two-Pass:

ffmpeg -i input.avi -pass 1 -vcodec libx264 -vpre fast_firstpass -b 512k -bt 512k -threads 0 -f rawvideo -an -y /dev/null && ffmpeg -i input.avi -pass 2 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre fast -b 512k -bt 512k -threads 0 output.mp4
ffmpeg -i input.avi -pass 1 -vcodec libx264 -vpre fast_firstpass -b 512k -bt 512k -threads 0 -f rawvideo -an -y /dev/null && ffmpeg -i input.avi -pass 2 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre fast -b 512k -bt 512k -threads 0 output.mp4

iPod 640×480:

ffmpeg -i input.avi -acodec libfaac -aq 100 -ac 2 -vcodec libx264 -vpre slow -vpre ipod640 -crf 26 -map_meta_data 0:0 -vf scale=640:-1 -threads 0 output.mp4
ffmpeg -i input.avi -acodec libfaac -aq 100 -ac 2 -vcodec libx264 -vpre slow -vpre ipod640 -crf 26 -map_meta_data 0:0 -vf scale=640:-1 -threads 0 output.mp4

Any to MP4:

ffmpeg -i input.foo -vcodec libx264 -vpre fast -crf 22 -threads 0 output.mp4

OGV to MP4:

ffmpeg -i foo.ogv -vcodec libx264 -vprefast -crf 22 -threads 0 -acodec libfaac -ab 96k -ac 1 foo.mp4
ffmpeg -i foo.ogv -vcodec libx264 -vprefast -crf 22 -threads 0 -acodec libfaac -ab 96k -ac 1 foo.mp4

OGV to MKV:

ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec copy foo.mkv
ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec copy foo.mkv

Выходящее аудио как VBR:

ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec libfaac -aq 100 foo.mp4
ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec libfaac -aq 100 foo.mp4

Использование разных аудио декодеров:
OGV to MKV:

ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec libmp3lame -aq 4 foo.mkv
ffmpeg -i input.ogv -vcodec libx264 -vpre fast -crf 22 -threads 0 -acodec libmp3lame -aq 4 foo.mkv

OGV to MP4:

ffmpeg -i foo.ogv -vcodec libx264 -vpre fast -vpre main -crf 22 -threads 0 -acodec libfaac -ab 96k foo.mp4
ffmpeg -i foo.ogv -vcodec libx264 -vpre fast -vpre main -crf 22 -threads 0 -acodec libfaac -ab 96k foo.mp4

Обновление сборок FFmpeg и x264

Разработка FFmpeg и x264 идет очень активно, так что обновление штука актуальная. Тем более если вы захотите задать возникшие у вас вопросы в mail-рассылке для FFmpeg и x264, от вас будет требоваться наличие ПОСЛЕДНЕЙ сборки из SVN на борту.

Помним! Что все директории, что используются ниже (/x264 , /libvpx , /ffmpeg) которые мы создавали когда проводили начальную сборку и установку пакетов, их и используем.

Для обновления x264:

sudo apt-get remove ffmpeg x264 libx264-dev libvpx
cd ~/x264
make distclean
git pull
sudo apt-get remove ffmpeg x264 libx264-dev libvpx
cd ~/x264
make distclean
git pull

Теперь скомпилируйте сборку как мы это делали в мануале выше, начните со строки ./configure

Обновляем libvpx:

cd ~/libvpx
make clean
git pull
cd ~/libvpx
make clean
git pull

Теперь скомпилируйте сборку как мы это делали в мануале выше, начните со строки ./configure

Обновляем FFmpeg:

cd ~/ffmpeg
make distclean
svn update
cd ~/ffmpeg
make distclean
svn update

Теперь скомпилируйте сборку как мы это делали в мануале выше, начните со строки ./configure

Удаление

sudo apt-get remove x264 ffmpeg qt-faststart build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
sudo apt-get remove x264 ffmpeg qt-faststart build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

Так же удалите директории (/x264 , /libvpx , /ffmpeg):

cd ~
rm -rf x264
rm -rf libvpx
rm -rf ffmpeg
cd ~
rm -rf x264
rm -rf libvpx
rm -rf ffmpeg

Процесс перекодировки в консоли:

FFmpeg is working

FFmpeg is working

Ссылки

Официальный сайт – FFmpeg
Официальный сайт – x264
Официальный сайт – x264 Blu-ray

PS:
Данная статья является свободным переводом и я не претендую на ее авторство!
Автором данной статьи, является человек скрывающийся под ником: FakeOutdoorsman

Оригинал статьи находиться на форуме http://ubuntuforums.org/
Статья составлена и дополнена: 2010-08-17