我需要对一些上传的视频进行模糊处理并对其进行编码。实际上,模糊处理就是使其像素化,从而出现“大块状”效果并进行模糊处理。
你有任何关于如何做到这一点的想法吗?(ffmpeg是不错的选择,但任何命令行Windows工具都可以)
谢谢。
我需要对一些上传的视频进行模糊处理并对其进行编码。实际上,模糊处理就是使其像素化,从而出现“大块状”效果并进行模糊处理。
你有任何关于如何做到这一点的想法吗?(ffmpeg是不错的选择,但任何命令行Windows工具都可以)
谢谢。
示例:
ffmpeg -i input -vf "frei0r=filter_name=pixeliz0r:filter_params=0.02|0.02" output
filter_params
参数如下:
Windows用户可以从gyan.dev获取“完整版本”。
Linux用户可以下载或编译:
frei0r.h
(例如Ubuntu中的frei0r-plugins-dev或CentOS中的frei0r-devel)的软件包,然后将--enable-frei0r
添加到您的ffmpeg配置中进行编译。请参阅FFmpeg Wiki:编译指南。macOS用户可以使用Homebrew。您可能需要--with-frei0r
选项。
如果您不想安装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来更改块大小。
第一行是为了找出输入的原始尺寸并直接缩回到它,否则缩小和放大可能会导致舍入误差,稍微改变输出的大小。
"csv=p=0:s=\:"
来消除head
和sed
。 - lloganhead
,因为输入中有视频和音频流时,您将获得一个空白行来显示音频流的尺寸。 - Tom