суббота, 6 марта 2010 г.

Инсталяция и использование FFmpeg с применением x264

Несмотря на то что FFmpeg и x264 доступны в репозиториях Ubuntu, на все равно придется скомпилить их самостоятельно. В дальнейшем, чтобы предотвратить замещение скомпилированных нами программ новыми из стандартных репозиториев Ubuntu, не забудьте зафиксировать полученную версию с помощью программы обновлений synaptic.

Шаг 1. Зависимости

Удалим x264, libx264-dev и ffmpeg если они были установлены ранее:
sudo apt-get remove ffmpeg x264 libx264-dev
Установим пакеты необходимые для компиляции x264 и ffmpeg:
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore4-dev zlib1g-dev
Шаг 2. Инсталяция x264

Скачиваем исходные тексты программ с официального x264 git репозитория, компилируем и устанавливаем видео кодек:
cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default
Шаг 3. Инсталяция libtheora

Для поддержки OGG файлов скомпилируем Theora видео кодек, поскольку тот что находится в репозиториях Ubuntu слишком старый для использования. Иначе при компиляции ffmpeg надо исключить опцию --enable-libtheora:
sudo apt-get install libogg-dev
cd
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
tar xzvf libtheora-1.1.1.tar.gz
cd libtheora-1.1.1
./configure --disable-shared
make
sudo checkinstall --pkgname=libtheora --pkgversion "1.1.1" --backup=no --default
Шаг 4. Инсталяция ffmpeg

Для установки FFmpeg берем текущую версию с официального FFmpeg svn репозитория. Запустив в консоли "./configure --help" вы можете включить или выключить те или иные опции при компиляции программы:
cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no --default
hash ffmpeg
Использование FFmpeg и x264

One-pass CRF (Constant Rate Factor) Однопроходное slow (медленное) перекодирование файла с постоянным коэфициентом сжатия, задаваемое параметром -crf. Меньшее значение повышает качество выходного видео файла, но увеличивает его физический размер. Нормальный диапазон от 18 до 28.
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 output.mp4

Two-Pass encode. Кодирование с опцией fast (быстрое) происходит в два этапа и используется для получения фиксированных размеров битрейта или выходного файла:
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 640x480 использует slow и ipod640 параметры:
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -vpre ipod640 -crf 26 -threads 0 -f ipod output.mp4

1 comments:

Анонимный комментирует...

Бесполезно :( ffserver тут же падает с ошибкой bind(port 8090): Invalid argument