Ясность на FFmpeg Описание графика фильтра - PullRequest
1 голос
/ 08 марта 2019

Я использую libavfilter C API для масштабирования моего видео.

Я начал читать документы, связанные с libavfilter, и застрял на Filtergraph-description .

Я не понимаю терминологию "фильтровальные площадки".Во всех документах я встречал такие термины, как панель ввода фильтра и панель вывода.

Было бы действительно замечательно, если бы кто-нибудь объяснял прокладки фильтра простым способом.Также, пожалуйста, поделитесь любыми документами или ссылками, связанными с примерами libavfilter C API.

1 Ответ

2 голосов
/ 08 марта 2019

pad (pæd)
Мякотная нижняя часть стопы кошки, собаки и т. Д.


Мне никогда не нравился термин «блокнот» при использовании в контексте фильтрации, и я не знаю, почему этот термин использовался. Замена его словом «узел» может сделать его более понятным.

Это можно визуально представить с помощью инструмента graph2dot:

enter image description here

В этом примере разделенный фильтр создает две идентичные копии видео. Одна копия переворачивается, а затем фильтр hstack складывает их рядом для создания выходных данных.

Каждый фильтр связан, и каждая ссылка связана с входным «узлом» (pad) и выходным «узлом» (pad).

Это может иметь больше смысла, если вы когда-либо использовали программное обеспечение, которое использует архитектуру графа узлов , такое как Nuke или, к сожалению, прекращенную Apple Shake.

Фильтр без входных площадок называется «источником», а фильтр без выходных площадок называется «приемником». Примеры фильтров источника включают testsrc2 , color и sine . Эти фильтры могут генерировать видео или аудио сами по себе без необходимости ввода, поэтому нет входных площадок. Пример для вывода тестового шаблона видео, 3 секунды, 1280x720:

ffmpeg -f lavfi -i testsrc2=d=3:s=1280x720 output.mp4

Раковина менее полезна для большинства пользователей. Одним из применений является тестирование сложных фильтровографов. Если у вас есть цепочка фильтров, которую вы хотите временно опустить, вы можете прекратить ее в приемник, такой как anullsink . Нет выхода из раковины. Это похоже на использование /dev/null, если вы знакомы с этим.

...