Как установить последнюю версию FFmpeg и x264
22.08.2010, рубрики: how-to | Теги: bash, ffmpeg | 16 комментариев »
Статья посвящена вопросу компиляции и установки пакетов 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
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
Установка 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
Установка 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
Установка 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
Установка 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
Это всё. Вы можете сохранить директории ~/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
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
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
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
OGV to 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
Использование разных аудио декодеров:
OGV to 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 и 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
Теперь скомпилируйте сборку как мы это делали в мануале выше, начните со строки ./configure
Обновляем libvpx:
- cd ~/libvpx
- make clean
- git pull
Теперь скомпилируйте сборку как мы это делали в мануале выше, начните со строки ./configure
Обновляем FFmpeg:
- 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
Так же удалите директории (/x264 , /libvpx , /ffmpeg):
- cd ~
- rm -rf x264
- rm -rf libvpx
- rm -rf ffmpeg
Процесс перекодировки в консоли:
Ссылки
Официальный сайт – FFmpeg
Официальный сайт – x264
Официальный сайт – x264 Blu-ray
PS:
Данная статья является свободным переводом и я не претендую на ее авторство!
Автором данной статьи, является человек скрывающийся под ником: FakeOutdoorsman
Оригинал статьи находиться на форуме http://ubuntuforums.org/
Статья составлена и дополнена: 2010-08-17



Я вот таким пакетником в MP4 конвертирую видео для iPhone
#!/bin/bash
for f in *.avi; do
#echo $f
ffmpeg -i $f -vcodec libx264 -b 512k -s 480×320 -maxrate 2500k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 mp4/$(echo $f | sed -e «s/avi/mp4/»)
done
Как понятно итоговые файлы складываются в каталог mp4
Спасибо.
Конвертации я хочу посвятить отдельный пост в котором привести примеры самых полезных и наиболее востребованных на мой взгляд команд для конвертации с использованием mencoder & ffmpeg.
С полным объяснением и конечно же со скриптовой оболочкой.
Если у вас есть еще примеры, которые вы реально используете, запостите их тут пожалуйста.
Не вопрос – просто в итоге много месячных исканий, проб и ошибок
пришел к тому что отписал. Конечно, уровень качество выставил в 7 и
потерял в скорости – но зато получил полностью довольное свое
iPhone/iPad сообщество – юзайте на здоровье -думаю понравится – счас
разбираю MKV формат – не было времени на возню с ним – теперь надо
будет пару терабайт перековертить – прийдется возиться. А так я же
просто хостинг пристраиваю среди своих)) Вот ссылочки полезные глянь -
поможет в возне со всем этим хозяйством
http://sites.google.com/site/linuxencoding/x264-encoding-guide Не по
русски – но вполне понятно. Ну в своем скрипте я по полное некоторые
параметры расписал – но можно и в краткой форме, как в примере
Пасиба) пасмотрим)
Статья угловата – в ней FFmpeg рассматривается исключительно как программа для конвертирования аудио/видео, а не
>>FFmpeg — набор свободных библиотек…
А значит следуя вашим инструкциям пользователи обновят только сами программы FFMpeg и FFplay, но не библиотеки (libavcore, livavcodec, libavformat, libavutils, swscale), которые могут быть использованы сторонними приложениями в системе.
Название статьи также не совсем корректно – «установка» больше подойдёт для статьи про сторонний репозитарий со свежими пакетами. А в данном случае лучше подходит название «Как собрать последнюю версию FFmpeg и x264″.
Эта статья перевод HOW-TO с офф. форума Убунту, это указано в конце. FFmpeg и на Линукс и на Виндовс в 90% случаев используется именно для конвертации. livavcodec – это кодеки, какое отношение к FFmpeg с возможностью поддержки x264 которой нет в сборках из репов.
Название статьи верно, видно по всему что вы ее не читали, если бы она называлась «Как собрать последнюю версию FFmpeg и x264″ то после команды ./configure, я бы больше ничего не написал.
А я например и не знаю кроме чего еще нужен ffmpeg кроме как для кодирования видео из одного формата в другой, так что имел в виду gkv311 совершенно непонятно :)
Мне тоже)) Верно что,
FFmpeg — набор свободных библиотек с открытым исходным кодом.
FFmpeg состоит из ffmpeg, ffserver, ffplay, ffplay, libavutil, libavcodec, libavformat, libavdevice, libswscale.
где ffmpeg — утилита командной строки для конвертирования видео файла из одного формата в другой. С её помощью можно также захватывать видео в реальном времени с TV-карты.
из Wikipedia и официального сайта:
ffmpeg is a command line tool to convert multimedia files between formats.
Просто не внимательно прочел статью)))
scard писал(а)
>>А я например и не знаю кроме чего еще нужен ffmpeg кроме как для кодирования видео из одного формата в другой, так что имел в виду gkv311 совершенно непонятно :)
admin писал(а)
>>Мне тоже))
Я по-моему вполне ясно указал, что помимо консольной утилиты ffmpeg для конвертирования медиа данных FFmpeg предоставляет также набор библиотек, которые могут быть собраны как статические или динамические. В Linux сильны традиции отдавать предпочтение динамической линковке общеиспользуемых библиотек.
В репозитарии Ubuntu, например, есть несколько пакетов для каждой библиотеки в составе FFmpeg, ну и конечно же пакет самой консольной утилиты. Эти библиотеки могут использоваться другими программами, и в том числе аудио/видео проигрывателями (разумеется не такими как демонстрационный ffplay).
Следуя же переводу НЕ вашей статьи, пользователь обновит вовсе не FFmpeg, а только лишь консольную утилиту ffmpeg (со статически слинкованными библиотечками). Скажете разница всего две буквы? А ведь как смысл то меняется…
То что вы используете только ffmpeg для конвертирования медиа файлов – ваше право, но зачем же пользователей вводить в заблуждение, будто бы FFmpeg в системе больше ни для чего не полезен! И зачем отстаивать своё невежество?
Полезен – никто и не спорит. Просто я выделил его базовое значение для большинства пользователей. Да, можно использовать его и для целей, как Вы указали проигрывания аудио/видео, но мне кажется тут впереди другие проигрыватели, например как VLC. Может он конечно и использует что-либо от FFmpeg, но я этого не замечал. Во всяком случае сборка для федоры спокойно работает, и спользует свои библиотеки.
I think that to receive the mortgage loans from creditors you must present a good motivation. Nevertheless, once I’ve got a student loan, because I was willing to buy a car.
Привет, люди помогите разобраться, вот раньше стояла сборка ffmpeg такая:
FFmpeg version SVN-r25526, Copyright (c) 2000-2010 the FFmpeg developers
built on Oct 28 2010 16:36:34 with gcc 4.3.2
configuration: –enable-gpl –enable-nonfree –enable-pthreads –enable-libfaac –enable-avfilter –enable-libx264 –enable-filter=movie
libavutil 50.32. 3 / 50.32. 3
libavcore 0. 9. 1 / 0. 9. 1
libavcodec 52.92. 0 / 52.92. 0
libavformat 52.83. 0 / 52.83. 0
libavdevice 52. 2. 2 / 52. 2. 2
libavfilter 1.53. 0 / 1.53. 0
libswscale 0.12. 0 / 0.12. 0
С такими настройками (-vpre veryfast) 40 минутный файл конвертился где то 10-12 минут: тоесть где то (1:3)
-vcodec libx264 -vpre veryfast -threads 0 -r 25 -g 50 -b 450k -bt 450k -acodec libfaac -ar 44100 -ab 128k -ac 2 -f mp4
Сейчас сборка другая:
FFmpeg version SVN-r25942, Copyright (c) 2000-2010 the FFmpeg developers
built on Dec 14 2010 03:25:12 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
configuration: –enable-gpl –enable-nonfree –enable-pthreads –enable-libfaac –enable-avfilter –enable-libx264 –enable-filter=movie –arch=x86_64
libavutil 50.34. 0 / 50.34. 0
libavcore 0.16. 0 / 0.16. 0
libavcodec 52.99. 1 / 52.99. 1
libavformat 52.88. 0 / 52.88. 0
libavdevice 52. 2. 2 / 52. 2. 2
libavfilter 1.69. 0 / 1.69. 0
libswscale 0.12. 0 / 0.12. 0
И с теме же настройками -vpre veryfast конвертит примерно (1:1) 40 минутный файл около 40 минут, если же поставить -vpre superfast то конвертит в два раза быстрее (1:2) но уже теряется качество, да и по времени все равно меньше!!!
Подскажите из-за чего может сборка повлиять на скорость конвертирования, ведь процессор тот же 2 ядерный амд, и посоветуйте мне самую стабильную и быструю сборку ffmpeg и вообще какие есть рекомендации по увеличению скорости конвертирования при этом не теряя качество видео!
бесполезно. Постоянно ошибка по попытке конфигурирования ffmpeg ERROR: libx264 version must be >= 0.99.
Наверное, ты забыл выполнить команду:
# sudo apt-get remove ffmpeg x264 libx264-dev
Там надо удалить старый libx264, и собрать свой из исходников. У тебя, ошибка говорит, что нужна более новая версия, чем у тебя в системе.
нет, не забыл. Помогло конфигурирование x264 с параметром –enable-shared. Уж не знаю почему
одно разжъешь, за другое зацепится :) а вот что можно сделать с этой проблемой:
FFserver version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
built on Sep 30 2011 00:15:59 with gcc 4.4.3
configuration: –prefix=/usr –enable-gpl –enable-version3 –enable-nonfree –enable-postproc –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-x11grab
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.93. 0 / 52.93. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
libswscale 0.12. 0 / 0.12. 0
libpostproc 51. 2. 0 / 51. 2. 0
bind(port 8090): Invalid argument
Sun Oct 2 22:21:00 2011 Could not start server
ffserver не желает стартовать. Порт чтавил любой – ноль ампер реакции.