ffmpeg: как добавить пиксельный эффект?

Мне нужно размыть некоторые загруженные видео и закодировать их. Фактически, размытие означает, что пикселируйте их так, чтобы появились "большие квадраты", и размыли их.

Есть идеи, как я могу это сделать? (ffmpeg был бы хорош, любой инструмент командной строки Windows должен быть в порядке)

Благодарю.

3 ответа

Решение

FFmpeg может поддерживать фильтры frei0r, которые включают pixeliz0r. Пример:

ffmpeg -i input -filter:v frei0r=pixeliz0r=0.02:0.02 output

Два параметра:

  • BlockSizeX: горизонтальный размер одного "пикселя"
  • BlockSizeY: вертикальный размер одного "пикселя"

Конечно, большее значение создаст большие блоки. Сборки Zeranoe FFmpeg включают frei0r, однако я не уверен, работает ли он, так как у некоторых пользователей были проблемы с ним в #ffmpeg IRC, хотя это было, по крайней мере, 6 месяцев назад.

Что касается Linux, то компиляция проста. Пользователи Ubuntu могут следовать HOWTO: установить и использовать последние версии FFmpeg и x264 и просто добавить frei0r-plugins-dev в качестве зависимости, а затем добавить --enable-frei0r к вашей конфигурации ffmpeg.

оригиналpixeliz0r

Если вы не хотите устанавливать для этого плагин frei0r, есть альтернативный способ.

dimensions=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of "csv=p=0:s=\:" input)

ffmpeg -i input -filter_complex \
"[0:v] scale='iw/15:-1', scale='$dimensions:flags=neighbor'" output

Это уменьшает размер входного файла (в данном примере, на 15), а затем уменьшает его до исходных размеров. flags=neighbor говорит ffmpeg использовать алгоритм пересчета ближайшего соседа, что приводит к эффекту pixelated. Вы можете изменить размер блока, изменив число 15.

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

Фильтр пикселизации может помочь:

      ffmpeg -i input -vf pixelize=300 output

Замените 300 на свою интенсивность (ограничено 1024).

Другие вопросы по тегам