ffmpeg и x264



FFmpeg - это универсальный инструмент для кодирования и декодирования множества видео и аудио форматов, хотя FFmpeg и x264 есть в официальных репозитариях различных дистрибутивов, иногда возникает необходимость собирать эти пакеты самостоятельно. Дело в том, что FFmpeg из Ubuntu не имеет некоторых кодеков, декодеров и не поддерживает некоторые форматы. К тому же, сами вы соберёте более свежую версию, где будут доступны последние наработки программистов.

Данная инструкция подразумевает, что у вас Ubuntu LTS (10.04) или 10.10.

Подготовительный этап



Для начала потребуется удалить некоторые установленные пакеты и установить необходимые зависимости.

Первым делом удаляем x264, libx264-dev и ffmpeg, если таковые установлены:

sudo apt-get remove ffmpeg x264 libx264-dev


Затем, устанавливаем необходимые для последующей сборки зависимости. Репозитарии universe и multiverse должны быть подключены!

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


Установка x264


Создаём в домашней директории каталог src:

<br>mkdir ~/src<br>


И выполняем следующее:

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


После этих действий будет собран и установлен пакет x264, который можно будет удалить/обновить в будущем.

Установка FFmpeg


Получив исходные коды FFmpeg команда "./configure --help" позволит увидеть опции, которые можно включить или выключить. Итак, собираем и устанавливаем пакет:

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


Примеры использования FFmpeg и x264


Кодирование в один проход:

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


Чем ниже параметр -crf, тем выше качество, но больше файл. Разумными являются значения от 18 до 28.

Двухпроходное кодирование:

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


Перекодирование для iPod (640x480):
<br><br>ffmpeg -i input.avi -acodec libfaac -aq 100 -ac 2 -vcodec libx264 -vpre slow \<br> -vpre ipod640 -crf 26 -map_meta_data 0:0 -vf scale=640:-1 -threads 0 output.mp4<br>


Обновление FFmpeg и x264



Удаляем ранее установленные пакеты:

sudo apt-get remove ffmpeg x264 libx264-dev


Обновляем x264:

<br>cd ~/src/x264<br>make distclean<br>git pull<br>


Обновляем FFmpeg:

<br>cd ~/src/ffmpeg<br>make distclean<br>svn update<br>


В обоих случаях повторяем процедуру установки FFmpeg и x264, как было описано ранее, только с места "./configure ля-ля-ля..."

Отмена всех изменений, проделанных по данной инструкции


<br>sudo apt-get remove x264 ffmpeg build-essential subversion git-core \<br> checkinstall yasm texi2html libfaac-dev libmp3lame-dev libsdl1.2-dev libtheora-dev \<br> libvorbis-dev libvpx-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev<br><br>rm -rf ~/src<br>


Источник: ubuntuforums.org