FFmpeg: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
 
(не показано 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 исправления, и '''amr''', содержащий код для поддержки библиотек libamrnb/libamrwb. Бранч xvmc считается устаревшим.
# В любой момент времени существует несколько feature/patch бранчей для более удобной поддержки того или иного патчсета, будь то alt-specific исправления или поддержка дополнительных кодеков. В данный момент таких бранчей два: '''alt''', содержащий alt-specific исправления. Бранчи amr и xvmc считаются устаревшим.
# Для каждого из feature/patch бранчей делается pull из "низлежащего" бранча. Отправная точка -- бранч upstream, из него надо придти в бранч master. В данный момент схема merge'й такова:
# Для каждого из feature/patch бранчей делается pull из «низлежащего» бранча. Отправная точка — бранч upstream, из него надо придти в бранч master. В данный момент схема merge’й такова:
#: upstream{{==)}}alt{{==)}}amr{{==)}}master, то есть все feature-патчи проходят мержи в алфавитном порядке.
#: upstream{{==)}}alt{{==)}}master, то есть все feature-патчи проходят мержи в алфавитном порядке.
# В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи.
# В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи.
# В данный момент в Сизифе поддерживается версия 0.5, всё вышеперечисленное применимо к бранчам с суффиксом −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

Особенности пакета

  1. Поддержка всех encoder’ов и decoder’ов из стандартно распространяемых в исходниках ffmpeg.
  2. Поддержка linamrnb/linamrwb через dlopen для проигрывания 3gp (patch branch amr) (obsoleted через libopencore)
  3. Поддержка xvmc для карт via openchrome (в версиях 11199-alt3 <= ffmpeg <= 16869-alt1).

Особенности сборки

Сборка ведётся из git при помощи git-svn.

  1. git-svn вытягивает trunk и бранч 0.5 в refs/remotes/ffmpeg/trunk и refs/remotes/ffmpeg/0.5 соответственно. Этим remote бранчам соответствуют локальные ffmpeg-trunk и ffmpeg-0.5
  2. git-svn вытягивает trunk проекта libswscale в refs/remotes/libswscale. Этому remote бранчу соответствует бранч libswscale-trunk.
  3. Бранчи ffmpeg-trunk и libswscale-trunk мержатся в бранч upstream, причем libswscale-trunk является subtree для бранча upstream. Этим достигается наличие вложенной истории libswscale относительно ffmpeg.
  4. В любой момент времени существует несколько feature/patch бранчей для более удобной поддержки того или иного патчсета, будь то alt-specific исправления или поддержка дополнительных кодеков. В данный момент таких бранчей два: alt, содержащий alt-specific исправления. Бранчи amr и xvmc считаются устаревшим.
  5. Для каждого из feature/patch бранчей делается pull из «низлежащего» бранча. Отправная точка — бранч upstream, из него надо придти в бранч master. В данный момент схема merge’й такова:
    upstream ⇒ alt ⇒ master, то есть все feature-патчи проходят мержи в алфавитном порядке.
  6. В бранче master относительно последнего feature-бранча содержатся только spec-файл и правила для gear. Любые другие исправления должны попадать в feature/patch бранчи.
  7. В данный момент в Сизифе поддерживается версия 0.5, всё вышеперечисленное применимо к бранчам с суффиксом -0.5.
  8. Сборка 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

Использование Ffmpeg