如果可能,我想使用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毫米看起来更像模糊,然后是颗粒状。
感谢您的任何提示。
答案 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
以白噪声开头:
然后,它使用“放气”和“膨胀”过滤器使某些功能扩展到多个像素:
效果非常微妙,但是您可以看到噪声中有一些较大的白色和黑色“斑点”。这意味着噪点的特征不再仅仅是单像素化。然后,该图像的分辨率减半,因为它以目标视频分辨率的两倍进行渲染。
现在,最高分辨率的细节被柔化了,像素块的大小减小为1-2像素。所以,这就是噪声平面。
然后,我获取源视频并对其进行一些处理。
去饱和:
过滤亮度,以使输入像素越接近亮度级别75(实验达到),像素就越亮。如果输入像素变暗或变亮,则输出像素均匀变暗。这将创建亮度“带”,其中亮度级别接近75。
然后按比例缩小,这是“调整”噪声水平的地方。此频段选择意味着我们将专门在最容易注意到的帧区域添加噪声。在其他区域不添加噪声会留下更多的比特来编码噪声。
然后将此缩放的蒙版应用于先前计算的噪声。在此屏幕截图中,我删除了调音,以便可以轻松看到噪音:
未通过波段滤波器选择的区域将按比例缩小,并且基本上是黑色的;噪声变化逐渐消失。
这是缩放因子为0.32时的样子-相当微妙:
然后我反转该图像,以使没有噪音的部分变成纯白色,然后将有噪音的区域从白色稍微拉下:
最后,我拉出同一源视频的另一个副本,将此计算的图像作为alpha通道应用到它上,然后将其覆盖在黑色上,这样,白色稍少的胶片颗粒点就会变成稍暗的像素。 / p>
效果非常微妙,即使在静止不动的情况下也很难看到,但是如果您将噪点调高,则可以得到这样的帧: