FFmpeg: различия между версиями
Ilis (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
(не показано 20 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
{{Note|Если вам нужна инструкция по FFmpeg, см. страницу '''[[Команды FFmpeg]]'''}} | |||
== Особенности пакета == | == Особенности пакета == | ||
# Поддержка всех encoder’ов и decoder’ов из стандартно распространяемых в исходниках ffmpeg. | # Поддержка всех encoder’ов и decoder’ов из стандартно распространяемых в исходниках ffmpeg. | ||
# Поддержка linamrnb/linamrwb через dlopen для проигрывания 3gp (patch branch '''amr''') | # Поддержка linamrnb/linamrwb через dlopen для проигрывания 3gp (patch branch '''amr''') (obsoleted через libopencore) | ||
# Поддержка xvmc для карт via openchrome (в версиях 11199-alt3 <= ffmpeg <= 16869-alt1). | # Поддержка xvmc для карт via openchrome (в версиях 11199-alt3 <= ffmpeg <= 16869-alt1). | ||
==Особенности сборки== | == Особенности сборки == | ||
Сборка ведётся из git при помощи git-svn. | Сборка ведётся из git при помощи git-svn. | ||
# git-svn вытягивает trunk и бранч 0.5 в refs/remotes/ffmpeg/trunk и refs/remotes/ffmpeg/0.5 соответственно. Этим remote бранчам соответствуют локальные ffmpeg-trunk и ffmpeg-0.5 | # git-svn вытягивает trunk и бранч 0.5 в refs/remotes/ffmpeg/trunk и refs/remotes/ffmpeg/0.5 соответственно. Этим remote бранчам соответствуют локальные ffmpeg-trunk и ffmpeg-0.5 | ||
# git-svn вытягивает trunk проекта libswscale в refs/remotes/libswscale. Этому remote бранчу соответствует бранч libswscale-trunk. | # git-svn вытягивает trunk проекта libswscale в refs/remotes/libswscale. Этому remote бранчу соответствует бранч libswscale-trunk. | ||
# Бранчи ffmpeg-trunk и libswscale-trunk мержатся в бранч upstream, причем libswscale-trunk является subtree для бранча upstream. Этим достигается наличие вложенной истории libswscale относительно ffmpeg. | # Бранчи ffmpeg-trunk и libswscale-trunk мержатся в бранч upstream, причем libswscale-trunk является subtree для бранча upstream. Этим достигается наличие вложенной истории libswscale относительно ffmpeg. | ||
# В любой момент времени существует несколько feature/patch бранчей для более удобной поддержки того или иного патчсета, будь то alt-specific исправления или поддержка дополнительных кодеков. В данный момент таких бранчей два: '''alt''', содержащий alt-specific исправления | # В любой момент времени существует несколько feature/patch бранчей для более удобной поддержки того или иного патчсета, будь то alt-specific исправления или поддержка дополнительных кодеков. В данный момент таких бранчей два: '''alt''', содержащий alt-specific исправления. Бранчи amr и xvmc считаются устаревшим. | ||
# Для каждого из feature/patch бранчей делается pull из | # Для каждого из feature/patch бранчей делается pull из «низлежащего» бранча. Отправная точка — бранч upstream, из него надо придти в бранч master. В данный момент схема merge’й такова: | ||
#: upstream{{==)}}alt | #: upstream{{==)}}alt{{==)}}master, то есть все feature-патчи проходят мержи в алфавитном порядке. | ||
# В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи. | # В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи. | ||
# В данный момент в Сизифе поддерживается версия 0.5, всё вышеперечисленное применимо к бранчам с суффиксом | # В данный момент в Сизифе поддерживается версия 0.5, всё вышеперечисленное применимо к бранчам с суффиксом {{term|-0.5}}. | ||
# Сборка unstable trunk ffmpeg предназначена для power users и для подготовки девелоперских версий зависимого софта. Никакой поддержки по сборкам из trunk не оказывается. | # Сборка unstable trunk ffmpeg предназначена для power users и для подготовки девелоперских версий зависимого софта. Никакой поддержки по сборкам из trunk не оказывается. | ||
== Работа с ffmpeg svn == | |||
<pre> | |||
$ git svn fetch ffmpeg | |||
$ git svn fetch libswscale | |||
$ git checkout -f ffmpeg-trunk && git pull . refs/remotes/ffmpeg/trunk | |||
$ git checkout -f libswscale-trunk && git pull . refs/remotes/libswscale | |||
$ git checkout -f upstream | |||
$ git pull . refs/heads/ffmpeg-trunk | |||
$ git pull -s subtree . refs/heads/libswscale-trunk | |||
$ git checkout -f <feature branch> | |||
$ git pull . upstream | |||
$ ... | |||
$ git checkout -f master | |||
$ git pull . <latest feature branch> | |||
$ ... | |||
$ PROFIT | |||
</pre> | |||
[[Категория:Documentation]] | [[Категория:Documentation]] | ||
[[Категория:Packaging]] | [[Категория:Packaging]] | ||
== Пример для получения 3gp (требует установленной libopencore_amrnb) == | |||
''ffmpeg -i infile.avi -s qcif -vcodec h263 -acodec libopencore_amrnb -ac 1 -ar 8000 -r 25 -ab 12.2k -y outputfile.3gp'' | |||
== Бенчмарк с CMOV == | |||
Измерения проводятся со сборкой ffmpeg-0.6-alt1.svn24911 для версии без CMOV и ffmpeg-0.6-alt1.svn24911.cmov для версии с CMOV. | |||
Команда для запуска тестирования: <code>ffmpeg -benchmark -i inputfile.mp4 outputfile.mp4</code> | |||
Интересует последняя строка вида <code>bench: utime=200.677s maxrss=31052kB</code> | |||
В таблицу записывается среднее значение utime для 5 измерений. | |||
<center> | |||
{| class="standard" | |||
!Процессор | |||
!Результат без CMOV, сек | |||
!Результат с CMOV, сек | |||
!Изменение, % | |||
|- | |||
|Intel Core 2 Duo 6600 @ 2.40 Ghz | |||
|202.8642 | |||
|201.1434 | |||
| -0.848 | |||
|- | |||
|Athlon XP 3200+ | |||
|62.5862 | |||
|61.7132 | |||
| -1.394 | |||
|- | |||
|Intel Atom N270 | |||
|217.552 | |||
|216.778 | |||
| -0.35 | |||
|} | |||
</center> | |||
==Использование Ffmpeg== | |||
*[[Команды FFmpeg]] | |||
[[Категория:HOWTO]] | |||
{{Category navigation|title=Документация|category=Documentation|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 20:33, 29 сентября 2023
Примечание: Если вам нужна инструкция по FFmpeg, см. страницу Команды FFmpeg
Особенности пакета
- Поддержка всех encoder’ов и decoder’ов из стандартно распространяемых в исходниках ffmpeg.
- Поддержка linamrnb/linamrwb через dlopen для проигрывания 3gp (patch branch amr) (obsoleted через libopencore)
- Поддержка xvmc для карт via openchrome (в версиях 11199-alt3 <= ffmpeg <= 16869-alt1).
Особенности сборки
Сборка ведётся из git при помощи git-svn.
- git-svn вытягивает trunk и бранч 0.5 в refs/remotes/ffmpeg/trunk и refs/remotes/ffmpeg/0.5 соответственно. Этим remote бранчам соответствуют локальные ffmpeg-trunk и ffmpeg-0.5
- git-svn вытягивает trunk проекта libswscale в refs/remotes/libswscale. Этому remote бранчу соответствует бранч libswscale-trunk.
- Бранчи ffmpeg-trunk и libswscale-trunk мержатся в бранч upstream, причем libswscale-trunk является subtree для бранча upstream. Этим достигается наличие вложенной истории libswscale относительно ffmpeg.
- В любой момент времени существует несколько feature/patch бранчей для более удобной поддержки того или иного патчсета, будь то alt-specific исправления или поддержка дополнительных кодеков. В данный момент таких бранчей два: alt, содержащий alt-specific исправления. Бранчи amr и xvmc считаются устаревшим.
- Для каждого из feature/patch бранчей делается pull из «низлежащего» бранча. Отправная точка — бранч upstream, из него надо придти в бранч master. В данный момент схема merge’й такова:
- upstream ⇒ alt ⇒ master, то есть все feature-патчи проходят мержи в алфавитном порядке.
- В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи.
- В данный момент в Сизифе поддерживается версия 0.5, всё вышеперечисленное применимо к бранчам с суффиксом -0.5.
- Сборка unstable trunk ffmpeg предназначена для power users и для подготовки девелоперских версий зависимого софта. Никакой поддержки по сборкам из trunk не оказывается.
Работа с ffmpeg svn
$ git svn fetch ffmpeg $ git svn fetch libswscale $ git checkout -f ffmpeg-trunk && git pull . refs/remotes/ffmpeg/trunk $ git checkout -f libswscale-trunk && git pull . refs/remotes/libswscale $ git checkout -f upstream $ git pull . refs/heads/ffmpeg-trunk $ git pull -s subtree . refs/heads/libswscale-trunk $ git checkout -f <feature branch> $ git pull . upstream $ ... $ git checkout -f master $ git pull . <latest feature branch> $ ... $ PROFIT
Пример для получения 3gp (требует установленной libopencore_amrnb)
ffmpeg -i infile.avi -s qcif -vcodec h263 -acodec libopencore_amrnb -ac 1 -ar 8000 -r 25 -ab 12.2k -y outputfile.3gp
Бенчмарк с CMOV
Измерения проводятся со сборкой ffmpeg-0.6-alt1.svn24911 для версии без CMOV и ffmpeg-0.6-alt1.svn24911.cmov для версии с CMOV.
Команда для запуска тестирования: ffmpeg -benchmark -i inputfile.mp4 outputfile.mp4
Интересует последняя строка вида bench: utime=200.677s maxrss=31052kB
В таблицу записывается среднее значение utime для 5 измерений.
Процессор | Результат без CMOV, сек | Результат с CMOV, сек | Изменение, % |
---|---|---|---|
Intel Core 2 Duo 6600 @ 2.40 Ghz | 202.8642 | 201.1434 | -0.848 |
Athlon XP 3200+ | 62.5862 | 61.7132 | -1.394 |
Intel Atom N270 | 217.552 | 216.778 | -0.35 |