ffmpeg:如何添加像素效果?

时间:2012-02-01 09:35:41

标签: ffmpeg

我需要模糊一些上传的视频并对其进行编码。 事实上,通过模糊,它意味着像素化它们,因此“大方块”出现并模糊它。

关于我如何做到这一点的任何想法? (ffmpeg会很棒,任何命令行windows工具都应该没问题)

感谢。

2 个答案:

答案 0 :(得分:8)

FFmpeg可以支持包含pixeliz0r的frei0r滤镜。例如:

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

这两个参数是:

  • BlockSizeX:水平尺寸为一个“像素”
  • BlockSizeY:一个“像素”的垂直大小

较大的值当然会产生更大的块。 Zeranoe FFmpeg builds包括frei0r,但是我不确定它是否有效,因为有些用户在 #ffmpeg IRC中遇到了问题,尽管这可能至少在6个月之前。

至于Linux编译很简单。 Ubuntu用户可以关注HOWTO: Install and use the latest FFmpeg and x264,只需添加 frei0r-plugins-dev 作为依赖项,然后将--enable-frei0r添加到您的ffmpeg配置中。

original pixeliz0r

答案 1 :(得分:1)

如果您不想为此安装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使用最近的邻居重缩放算法,这会导致像素化效果。您可以通过更改数字15来更改块大小。

第一行需要找出输入的原始尺寸并直接按比例缩小,否则按比例缩小和按比例放大可能会导致舍入误差,从而稍微改变输出的大小。