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

22.08.2010, рубрики: how-to | Теги: , | 16 комментариев »

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 которые уже установлены у вас в системе. Откройте терминал и запустите вот эту команду:

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

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

  1. sudo apt-get update
  2. 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 периодически обновляется тут.

  1. cd
  2. git clone git://git.videolan.org/x264.git
  3. cd x264
  4. ./configure
  5. make
  6. 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:

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

Установка FFmpeg

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

  1. cd
  2. svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
  3. cd ffmpeg
  4. ./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
  5. make
  6. sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default
  7. hash x264 ffmpeg ffplay

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

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

  1. cd ~/ffmpeg
  2. make tools/qt-faststart
  3. 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) Часто используемая технология:

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

Two-Pass:

  1. 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:

  1. 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:

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

OGV to MKV:

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

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

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

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

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

OGV to MP4:

  1. 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:

  1. sudo apt-get remove ffmpeg x264 libx264-dev libvpx
  2. cd ~/x264
  3. make distclean
  4. git pull

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

Обновляем libvpx:

  1. cd ~/libvpx
  2. make clean
  3. git pull

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

Обновляем FFmpeg:

  1. cd ~/ffmpeg
  2. make distclean
  3. svn update

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

Удаление

  1. 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):

  1. cd ~
  2. rm -rf x264
  3. rm -rf libvpx
  4. rm -rf ffmpeg

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

FFmpeg is working

FFmpeg is working

Ссылки

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

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

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


16 комментариев на запись “Как установить последнюю версию FFmpeg и x264”

  1. 1 scard сказала в 22:27, 27.08.2010:

    Я вот таким пакетником в 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

  2. 2 admin сказала в 23:33, 27.08.2010:

    Спасибо.
    Конвертации я хочу посвятить отдельный пост в котором привести примеры самых полезных и наиболее востребованных на мой взгляд команд для конвертации с использованием mencoder & ffmpeg.
    С полным объяснением и конечно же со скриптовой оболочкой.

    Если у вас есть еще примеры, которые вы реально используете, запостите их тут пожалуйста.

  3. 3 scard сказала в 0:34, 28.08.2010:

    Не вопрос – просто в итоге много месячных исканий, проб и ошибок
    пришел к тому что отписал. Конечно, уровень качество выставил в 7 и
    потерял в скорости – но зато получил полностью довольное свое
    iPhone/iPad сообщество – юзайте на здоровье -думаю понравится – счас
    разбираю MKV формат – не было времени на возню с ним – теперь надо
    будет пару терабайт перековертить – прийдется возиться. А так я же
    просто хостинг пристраиваю среди своих)) Вот ссылочки полезные глянь -
    поможет в возне со всем этим хозяйством
    http://sites.google.com/site/linuxencoding/x264-encoding-guide Не по
    русски – но вполне понятно. Ну в своем скрипте я по полное некоторые
    параметры расписал – но можно и в краткой форме, как в примере

  4. 4 admin сказала в 17:10, 28.08.2010:

    Пасиба) пасмотрим)

  5. 5 gkv311 сказала в 13:21, 06.09.2010:

    Статья угловата – в ней FFmpeg рассматривается исключительно как программа для конвертирования аудио/видео, а не
    >>FFmpeg — набор свободных библиотек…
    А значит следуя вашим инструкциям пользователи обновят только сами программы FFMpeg и FFplay, но не библиотеки (libavcore, livavcodec, libavformat, libavutils, swscale), которые могут быть использованы сторонними приложениями в системе.

    Название статьи также не совсем корректно – «установка» больше подойдёт для статьи про сторонний репозитарий со свежими пакетами. А в данном случае лучше подходит название «Как собрать последнюю версию FFmpeg и x264″.

  6. 6 admin сказала в 21:28, 06.09.2010:

    Эта статья перевод HOW-TO с офф. форума Убунту, это указано в конце. FFmpeg и на Линукс и на Виндовс в 90% случаев используется именно для конвертации. livavcodec – это кодеки, какое отношение к FFmpeg с возможностью поддержки x264 которой нет в сборках из репов.

    Название статьи верно, видно по всему что вы ее не читали, если бы она называлась «Как собрать последнюю версию FFmpeg и x264″ то после команды ./configure, я бы больше ничего не написал.

  7. 7 scard сказала в 21:54, 06.09.2010:

    А я например и не знаю кроме чего еще нужен ffmpeg кроме как для кодирования видео из одного формата в другой, так что имел в виду gkv311 совершенно непонятно :)

  8. 8 admin сказала в 22:49, 06.09.2010:

    Мне тоже)) Верно что,
    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.

    Просто не внимательно прочел статью)))

  9. 9 gkv311 сказала в 8:14, 07.09.2010:

    scard писал(а)
    >>А я например и не знаю кроме чего еще нужен ffmpeg кроме как для кодирования видео из одного формата в другой, так что имел в виду gkv311 совершенно непонятно :)

    admin писал(а)
    >>Мне тоже))

    Я по-моему вполне ясно указал, что помимо консольной утилиты ffmpeg для конвертирования медиа данных FFmpeg предоставляет также набор библиотек, которые могут быть собраны как статические или динамические. В Linux сильны традиции отдавать предпочтение динамической линковке общеиспользуемых библиотек.

    В репозитарии Ubuntu, например, есть несколько пакетов для каждой библиотеки в составе FFmpeg, ну и конечно же пакет самой консольной утилиты. Эти библиотеки могут использоваться другими программами, и в том числе аудио/видео проигрывателями (разумеется не такими как демонстрационный ffplay).

    Следуя же переводу НЕ вашей статьи, пользователь обновит вовсе не FFmpeg, а только лишь консольную утилиту ffmpeg (со статически слинкованными библиотечками). Скажете разница всего две буквы? А ведь как смысл то меняется…

    То что вы используете только ffmpeg для конвертирования медиа файлов – ваше право, но зачем же пользователей вводить в заблуждение, будто бы FFmpeg в системе больше ни для чего не полезен! И зачем отстаивать своё невежество?

  10. 10 scard сказала в 9:51, 07.09.2010:

    Полезен – никто и не спорит. Просто я выделил его базовое значение для большинства пользователей. Да, можно использовать его и для целей, как Вы указали проигрывания аудио/видео, но мне кажется тут впереди другие проигрыватели, например как VLC. Может он конечно и использует что-либо от FFmpeg, но я этого не замечал. Во всяком случае сборка для федоры спокойно работает, и спользует свои библиотеки.

  11. 11 KathyHeath23 сказала в 14:37, 21.02.2011:

    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.

  12. 12 Иван сказала в 4:34, 22.02.2011:

    Привет, люди помогите разобраться, вот раньше стояла сборка 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 и вообще какие есть рекомендации по увеличению скорости конвертирования при этом не теряя качество видео!

  13. 13 nema сказала в 10:47, 29.09.2011:

    бесполезно. Постоянно ошибка по попытке конфигурирования ffmpeg ERROR: libx264 version must be >= 0.99.

  14. 14 admin сказала в 12:31, 29.09.2011:

    Наверное, ты забыл выполнить команду:
    # sudo apt-get remove ffmpeg x264 libx264-dev

    Там надо удалить старый libx264, и собрать свой из исходников. У тебя, ошибка говорит, что нужна более новая версия, чем у тебя в системе.

  15. 15 nema сказала в 14:15, 29.09.2011:

    нет, не забыл. Помогло конфигурирование x264 с параметром –enable-shared. Уж не знаю почему

  16. 16 nema сказала в 16:23, 02.10.2011:

    одно разжъешь, за другое зацепится :) а вот что можно сделать с этой проблемой:

    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 не желает стартовать. Порт чтавил любой – ноль ампер реакции.


Оставить комментарий

  • Доступные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

  • *