- FFmpeg Compilation Guide
- All platforms
- Linux
- macOS
- Windows
- Other Platforms
- Performance Tips
- Windows ffmpeg builds что это
- Linux Packages
- Linux Static Builds
- Windows EXE Files
- macOS
- FFmpeg 4.4 «Rao»
- FFmpeg 4.3.2 «4:3»
- FFmpeg 4.2.4 «Ada»
- FFmpeg 4.1.6 «al-Khwarizmi»
- FFmpeg 4.0.6 «Wu»
- FFmpeg 3.4.8 «Cantor»
- FFmpeg 3.2.15 «Hypatia»
- FFmpeg 2.8.17 «Feynman»
- Электрический блогнот
- мои заметки на полях
- ffmpeg для начинающих
- Из чего состоит FFmpeg
- ffmpeg
- ffplay
- ffserver
- ffprobe
- История
- Установка
- Два типа FFmpeg
- А как смотреть кино?
- А как перекодировать?
- Заключение
FFmpeg Compilation Guide
This page contains a list of resources which describe the necessary steps required for compiling FFmpeg from scratch or with the help of build scripts and/or package managers.
All platforms
Read the Generic compilation guide, regardless of your platform. It provides generic compilation and installation instructions, including the use of configure .
- CompilationGuide/vcpkg – vcpkg also aims to be portable accross all platforms. For windows it uses MinGW/MSYS compilation toolchain.
Linux
Alternative ways to obtain/compile ffmpeg under Linux:
macOS
Windows
- CompilationGuide/MinGW – MinGW Compilation Guide for compiling FFmpeg with Windows/MinGW/MSYS.
- CompilationGuide/CrossCompilingForWindows – Cross compiling for Windows is sometimes easier than using MSYS+MinGW.
- CompilationGuide/WinRT – Compiling FFmpeg for Windows Apps (Windows 10 and Windows 8.1)
- CompilationGuide/MSVC – Compiling FFmpeg using MSYS+MSVC, see also:
- Instructions on the reference web page
- Roxlu’s guide
Using external scripts or tools:
- Media Autobuild Suite – Automatically build FFmpeg under Windows
- Linuxbrew, which can be used with Windows Subsystem for Linux (WSL)
- Chocolatey – a package manager for Windows with an FFmpeg package
Other Platforms
Performance Tips
There are numerous avenues to extract maximum performance out of FFmpeg when it is built from source. The following list describes some of them:
- If using GCC/Clang , consider adding -march=native to —extra-cflags to make slightly better use of your hardware. Alternatively, for a more general solution, examine the —arch and —cpu options. Gains are variable, and usually quite small. However, this is usually even more safe than the above, and is thus listed here.
- Depending on your use case, —enable-hardcoded-tables may be a useful option. It results in an increase of approximately 15% in the size of libavcodec , the main library impacted by this change. It enables savings in table generation time, done once at codec initialization, since by hardcoding the tables, they do not need to be computed at runtime. However, the savings are often negligible (
100k cycles is a typical number) especially when amortized over the entire encoding/decoding operation. By default, this is not enabled. Improvements are being made to the runtime initialization, and so over time, this option will have an impact on fewer and fewer codecs.
- Other options may be found by examining ./configure —help .
Windows ffmpeg builds что это
FFmpeg only provides source code. Below are some links that provide it already compiled and ready to go.
Linux Packages
Linux Static Builds
Windows EXE Files
macOS
You can retrieve the source code through Git by using the command:
FFmpeg has always been a very experimental and developer-driven project. It is a key component in many multimedia projects and has new features added constantly. Development branch snapshots work really well 99% of the time so people are not afraid to use them.
Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available.
All FFmpeg releases are cryptographically signed with our public PGP key and should be verified for authenticity.
To verify a release:
- Import our public key into your local keyring:
- Download a release tarball and its corresponding signature.
- Verify the signature:
Approximately every 6 months the FFmpeg project makes a new major release. Between major releases point releases will appear that add important bug fixes but no new features. Note that these releases are intended for distributors and system integrators. Users that wish to compile from source themselves are strongly encouraged to consider using the development branch (see above), this is the only version on which FFmpeg developers actively work. The release branches only cherry pick selected changes from the development branch, which therefore receives much more and much faster bug fixes such as additional features and security patches.
FFmpeg 4.4 «Rao»
4.4 was released on 2021-04-08. It is the latest stable FFmpeg release from the 4.4 release branch, which was cut from master on 2021-04-08.
It includes the following library versions:
FFmpeg 4.3.2 «4:3»
4.3.2 was released on 2021-02-20. It is the latest stable FFmpeg release from the 4.3 release branch, which was cut from master on 2020-06-08.
It includes the following library versions:
FFmpeg 4.2.4 «Ada»
4.2.4 was released on 2020-07-09. It is the latest stable FFmpeg release from the 4.2 release branch, which was cut from master on 2019-07-21.
It includes the following library versions:
FFmpeg 4.1.6 «al-Khwarizmi»
4.1.6 was released on 2020-07-05. It is the latest stable FFmpeg release from the 4.1 release branch, which was cut from master on 2018-11-02.
It includes the following library versions:
FFmpeg 4.0.6 «Wu»
4.0.6 was released on 2020-07-03. It is the latest stable FFmpeg release from the 4.0 release branch, which was cut from master on 2018-04-16.
It includes the following library versions:
FFmpeg 3.4.8 «Cantor»
3.4.8 was released on 2020-07-04. It is the latest stable FFmpeg release from the 3.4 release branch, which was cut from master on 2017-10-11.
It includes the following library versions:
FFmpeg 3.2.15 «Hypatia»
3.2.15 was released on 2020-07-02. It is the latest stable FFmpeg release from the 3.2 release branch, which was cut from master on 2016-10-26.
It includes the following library versions:
FFmpeg 2.8.17 «Feynman»
2.8.17 was released on 2020-07-07. It is the latest stable FFmpeg release from the 2.8 release branch, which was cut from master on 2015-09-05. Amongst lots of other changes, it includes all changes from ffmpeg-mt, libav master of 2015-08-28, libav 11 as of 2015-08-28.
It includes the following library versions:
Электрический блогнот
мои заметки на полях
ffmpeg для начинающих
В данной статье попробуем «на пальцах» объяснить, что такое FFmpeg для начинающих пользователей Linux (да и Windows тоже). FFmpeg популярный набор программ и библиотек среди multimedia и web разработчиков. На базе FFmpeg сделано множество программ по конвертированию видео из одного формата в другой. Популярность этой программы крайне высока. Почему он так популярен? Для чего его чаще используют? Как установить и как запустить?
Итак, основные фишки FFmpeg, которые могут привлечь внимание неискушенного Linux пользователя, только-только начавшего изучать Ubuntu:
- FFMpeg — бесплатный.
- Есть во всех Linux дистрибутивах.
- Можно просмотреть любой фильм.
- Работает со всевозможными видеоформатами.
- Позволяет сконвертировать видео из одного формата в другой.
- Поддерживает параллельное кодирование на нескольких процессорах.
- Ускорения кодирования на NVidia картах.
- Можете использовать FFmpeg в своих программах, а потом продавать их.
FFmpeg доступен на Linux, Windows, Mac Os. И везде работает одинаково. Так что, если вы научились работать с FFmpeg под Windows, то точно так же его надо запускать и в Linux и наоборот.
FFmpeg абсолютно самодостаточен. Для того чтобы посмотреть фильм нет необходимости искать в сети, скачивать и устанавливать кодеки. Достаточно всего лишь одного файла (ffplay.exe), все кодеки содержатся внутри этого файла.
FFmpeg — бесплатный софт (лицензии GPL 2.0 и LGPL 2.1) и вы можете использовать его код в своих проектах, как в коммерческих, так и в свободно-распространяемых.
Из чего состоит FFmpeg
Как было уже сказано, FFmpeg — это набор программ. Что значит “набор программ”? Нужно все программы качать или можно по отдельности? Что там внутри? На эти вопросы мы сейчас и постараемся ответить.
Но для начала определимся с термином FFmpeg — это сокращенное от Fast Forward Mpeg. Когда говорим о FFmpeg, как о наборе программ, то первые две буквы «F» должны быть большие (FF).
Итак, FFmpeg состоит из следующих инструментов (tools): ffmpeg, ffplay, ffserver, ffprobe (заметьте, все с маленькой буквы). Для Windows это обычные exe файлы. Причем размер у них очень внушительный. Все дело в том, что все видео и аудио кодеки уже находятся внутри них. Если вам нужно посмотреть фильм, то просто скачайте из сети ffplay.exe, больше ничего не потребуется. Никаких инсталляторов, никаких кодеков, права Administrator не нужны. Скачали, разархивировали, можете приступать к просмотру фильма.
FFmpeg в Windows, размер каждого файла 38-39Mb, все кодеки скомпилированы и прилинкованы «внутрь» исполняемого файла.
ffmpeg
С помощью этой программы можно конвертировать видео из одного формата в другой. Склеивать несколько видеороликов в один. Разбирать видео на отдельные кадры (изображения), а потом склеивать обратно. Ускорять/замедлять, масштабировать, добавлять субтитры и несколько звуковых дорожек. И еще 100500 полезных действий.
Список доступных опций этой команды занимает 203 страницы:
Впечатляет, не так ли?
ffplay
Используется для просмотра фильмов. Если вы начинаете знакомство с FFmpeg с просмотра фильмов, то ffplay, то что вам нужно. На начальном этапе весь пакет FFmpeg для начинающих сводится к использованию лишь этой программы.
ffserver
Если вам вдруг захотелось создать свой видео хостинг похожий на YouTube, то используйте ffserver.
ffprobe
Волшебная программа, расскажет вам все о фильме, который вы скачали (формат, продолжительность, сколько звуковых дорожек и многое другое). Выдаст на экран столько информации о фильме, что потребуется полдня, чтобы все это прочитать.
Помимо четырех программ в пакет FFmpeg входит еще и набор свободно-распространяемых библиотек (из которых вышеприведенные программы и собраны):
- libavutil — набор вспомогательных функций;
- libavcodec — аудио/видео кодеки;
- libavformat — библиотека по работе с контейнерами;
- libavdevice — работа с устройствами поставляющими медиа контент;
- libavfilter — различные фильтры;
- libswscale — библиотека масштабирования, работа с цветовыми пространствами;
- libswresample — библиотека обработки звука.
В принципе, из-за этих библиотек весь проект FFmpeg и затевался, а программы уже так, бонусом пошли 🙂
Используя эти библиотеки вы можете создавать свои приложения по работе с мультимедиа контентом и даже потом продавать их. Написать свой видеоплеер или видеоконвертер не составит труда. В сети полно руководств и инструкций по использованию библиотек FFmpeg.
История
История развития FFmpeg так же богата, как и его содержимое. Начавшись в 2000 году она претерпела сильное потрясение в 2011, когда часть разработчиков решила создать свою собственную библиотеку по работе с медиа контентом, назвали они ее — Libav. Свое желание уйти из проекта они объяснили недовольством организацией проекта FFmpeg, где по сути вся власть находилась в руках одного человека и все решения принимал только он сам.
Сейчас Libav идет своим путем и никого не слушает. Код обновляется не так часто, как FFmpeg. Каждое обновление тщательно проверяется.
FFmpeg в долгу не остался и исправно, каждые два дня, забирает к себе в норку изменения в коде, сделанные командой Libav:-)
В настоящее время FFmpeg продолжает активно развиваться, как доказательство скриншот репозитария исходных кодов:
Установка
Пакет FFmpeg настолько популярен, что включен во многие дистрибутивы Linux по умолчанию. Если вы по какой-то причине не установили его сразу, то это можно сделать потом с помощью менеджера пакетов. Установка FFmpeg для начинающих не должна вызвать особых проблем. В зависимости от дистрибутива Linux, нужно будет выполнить ряд стандартных команд.
Ubuntu
CentOS
openSuSe
Windows
Самые свежие версии FFmpeg для Windows можно скачать с:
Два типа FFmpeg
Есть два вида в которых FFmpeg приходит на ваш компьютер:
1) static-build — в этом случае все кодеки, фильтры и утилиты вкомпилированы «внутрь» ffmpeg.exe (ffprobe.exe, ffplay.exe) и вам достаточно скачать только один из этих файлов, чтобы начать смотреть киношку (ffplay.exe). В этом случае размер исполняемого модуля сильно раздувается (до 39Mb). Зато очень удобно.
2) shared-build — здесь кодеки, фильтры и другие вспомогательные программки являются самостоятельными отдельными файлами, которые FFmpeg находит и по мере надобности подгружает. В этом случае размер исполняемого модуля всего 190Kb.
Если вы устанавливаете FFmpeg в Linux, то с вероятностью 99.9% будет установлен shared-build.
Лично я, предпочитаю static-build (не надо думать о других библиотеках). Чтобы получить static-build под Linux нужно собрать FFmpeg самому из исходников. Для начинающих пользователей Linux это может оказаться сложно.
А как смотреть кино?
Все понятно, но как фильмы-то смотреть? Как говорилось выше, ffplay (ffplay.exe — под Windows) является консольной программой, то есть у нее нет графического интерфейса. Для просмотра видео необходимо выполнить в командной строке:
после чего сразу начинает воспроизводиться фильм:
Для начинающего пользователя такой способ запуска фильма может показаться необычным. Но в этом-то вся и мощь ffplay. У него такое же огромное количество опций, как и у ffmpeg, которы помогут настроить картинку для самых взыскательных ценителей кино.
Если вы чувствуете себя неуверенно при работе с командной строкой Windows, то можете воспользоваться следующим способом. Захватите фильм мышкой и перетащите его на ffplay.exe, кино сразу же станет воспроизводиться.
Контроль за воспроизведением (краткий список команд):
q, ESC — выход,
f — полный экран (двойной клик левой кнопкой мыши),
p — поставить на паузу,
m — звук вкл/выкл,
9, 0 — звук прибавить/убавить,
t — переключение субтитров,
c — cycle program
s — покадровое перемещение по фильму,
стрелка влево/вправо — перемещение на 10 сек назад/вперед,
стрелка вниз/вверх — перемещение на 1 мин назад/вперед,
page down/page up — перемещение на 10 мин назад/вперед.
Графический интерфейс проигрывателя ffplay выглядит довольно аскетичным, вернее сказать его вообще нет. Отсутствуют привычные ползунки, кнопочки, менюшки присущие media player’ам с графическим интерфейсом. При работе с ffplay вы видите только сам фильм и какие-то непонятные цифры и слова мелькающие в окне терминала, как в фильме «Матрица». На самом деле управлять фильмом с клавиатуры просто и понятно, через несколько просмотров пальцы сами запомнят какие кнопки нужно нажимать.
Несколько примеров запуска ffplay с различными опциями:
Уменьшить изображение в 4 раза по ширине
Почистить видео от шума
Ускорение в 2 раза
А как перекодировать?
Перевести mpg в avi
Извлечь звук из видео и записать в формате MP3
Склеить звук и видео
Извлечь видеодорожку (без звука)
Изменить размер видео
Выбросить первые 45 секунд видео и оставить участок длительностью 40 секунд
Перекодировать WAV в MP3
Разложить видео на кадры (изображения)
Сделать видео из набора изображений
Заключение
Данная статья имеет целью познакомить читателя с мощнейшим набором программ FFmpeg. Дается краткое описание пакета FFmpeg. Приводятся примеры его использования для просмотра видео и для обработки (ковертиования) аудио и видео материалов.
Перечислена только малая часть возможностей пакета FFmpeg. Для первого ознакомления я думаю достаточно. Остались за кадром такие FFmpeg фичи, как многопроходное кодирование, фильтры и цепочки фильтров, связка с Avisynth, сборка FFmpeg со сторонними кодеками.
Задачей данной статьи было показать, что FFmpeg для начинающих пользователей Linux должен быть незаменимым инструментом при работе с media контентом. Не нужно бояться отсутствия GUI. Работа с аудио и видео из консоли тоже может быть очень эффективной.