FFmpeg胶片颗粒

时间:2018-02-16 06:28:07

标签: ffmpeg

如果可能,我想使用FFMPEG添加胶片颗粒效果。

采用漂亮干净的电脑渲染场景和滤镜,打造坚韧不拔的黑白16mm胶片外观。举个例子,像Clerks https://www.youtube.com/watch?v=Mlfn5n-E2WE

根据Simulating TV noise,我应该可以使用以下过滤器

-filter_complex "geq=random(1)*255:128:128;aevalsrc=-2+random(0)"

但是当我将它添加到我的ffmpeg命令

ffmpeg.exe -framerate 30 -i XYZ%05d.PNG -vf format=yuv420p -dst_range 1 -color_range 2 -c:v libxvid -vtag xvid -q:v 1 -y OUTPUT.AVI

所以命令现在是

ffmpeg.exe -framerate 30 -i XYZ%05d.PNG -vf format=yuv420p -dst_range 1 -color_range 2 -c:v libxvid -vtag xvid -q:v 1 -y -filter_complex "geq=random(1)*255:128:128;aevalsrc=-2+random(0)" OUTPUT.AVI

我收到了消息

Filtergraph'format = yuv420p'是通过-vf / -af / -filter选项为输出流0:0指定的,它是从复杂的滤波器图形中提供的。 -vf / -af / -filter和-filter_complex不能一起用于同一个流。

如何更改我的ffmpeg命令行以使谷物过滤器工作?另外,我可以添加轻微模糊吗?旧的16毫米看起来更像模糊,然后是颗粒状。

感谢您的任何提示。

2 个答案:

答案 0 :(得分:1)

过滤器"geq=random(1)*255:128:128;aevalsrc=-2+random(0)"用于白噪声

对于“一个粗糙的黑白16毫米电影外观”,你想要的是相反的东西,

-vf hue=s=0,boxblur=lr=1.2,noise=c0s=7:allf=t

您指定的format是一个过滤器,应在输入中应用的所有过滤器应在单个链中指定,因此它应该是,

-vf hue=s=0,boxblur=lr=1.2,noise=c0s=7:allf=t,format=yuv420p

请参阅https://ffmpeg.org/ffmpeg-filters.html处的过滤器文档,了解您可以调整的说明和参数列表。

答案 1 :(得分:1)

我只需要制作一个胶片颗粒,并且想要一些“更整洁”的东西,而不仅仅是随机化每个像素。这是我想出的:

https://gist.github.com/logiclrd/287140934c12bed1fd4be75e8624c118

以白噪声开头:

white noise

然后,它使用“放气”和“膨胀”过滤器使某些功能扩展到多个像素:

made clumpy with deflate and dilation

效果非常微妙,但是您可以看到噪声中有一些较大的白色和黑色“斑点”。这意味着噪点的特征不再仅仅是单像素化。然后,该图像的分辨率减半,因为它以目标视频分辨率的两倍进行渲染。

scaled down

现在,最高分辨率的细节被柔化了,像素块的大小减小为1-2像素。所以,这就是噪声平面。

然后,我获取源视频并对其进行一些处理。

original frame

去饱和:

desaturated

过滤亮度,以使输入像素越接近亮度级别75(实验达到),像素就越亮。如果输入像素变暗或变亮,则输出像素均匀变暗。这将创建亮度“带”,其中亮度级别接近75。

luminance band filter

然后按比例缩小,这是“调整”噪声水平的地方。此频段选择意味着我们将专门在最容易注意到的帧区域添加噪声。在其他区域不添加噪声会留下更多的比特来编码噪声。

luminance band filter, scaled

然后将此缩放的蒙版应用于先前计算的噪声。在此屏幕截图中,我删除了调音,以便可以轻松看到噪音:

masked noise, unscaled

未通过波段滤波器选择的区域将按比例缩小,并且基本上是黑色的;噪声变化逐渐消失。

这是缩放因子为0.32时的样子-相当微妙:

masked noise, scaled

然后我反转该图像,以使没有噪音的部分变成纯白色,然后将有噪音的区域从白色稍微拉下:

film grain alpha channel

最后,我拉出同一源视频的另一个副本,将此计算的图像作为alpha通道应用到它上,然后将其覆盖在黑色上,这样,白色稍少的胶片颗粒点就会变成稍暗的像素。 / p>

final image

效果非常微妙,即使在静止不动的情况下也很难看到,但是如果您将噪点调高,则可以得到这样的帧:

final image, exaggerated