我有一些视频文件,它们从黑白胶片转换为 29.97 fps 隔行扫描。胶片被转换得太暗(这意味着它需要一些亮度),并且它还具有一些暗淡的偏色伪影。我能够调整亮度级别,将饱和度设置为零,并使用 ffmpeg 进行去隔行扫描:
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i in.mkv -vf curves=psfile="curves.acv",hue=s=0,hwupload,yadif_cuda=1 -c:v h264_nvenc -preset:v p7 -tune:v hq -rc:v vbr -cq:v 10 -b:v 0 -maxrate 240M -bufsize 480M -c:a copy out.mkv
使用输出文件(现在已去隔行到 59.94fps),我在 VLC 中逐帧逐帧地进行处理,其中我计算出重复帧的重复模式:3、2、3、2、3、2、3、... 我推断,这是来自 24 fps --> 60 fps 的转换。“重复”帧实际上并不完全相同 - 每个帧都有不同量的噪声,这可以归因于影片的录制方式以及我现在正在执行的去隔行工作。
我知道可以使用 ffmpeg 删除这些重复帧,但由于视频是在低光照水平下编码的,动态范围受到损害,并且每帧中的暗区分辨率较差。我想知道如何才能平均它们,而不是简单地删除重复帧,以便在嘈杂区域获得更好的清晰度。
我还需要确保删除的帧与实际的重复帧相对应:即,ffmpeg 应该丢弃与上面的“3”相对应的两个重复帧,而不是“2”,因为只应删除一个帧。
我尝试检查 fps 过滤器的 ffmpeg 文档:
https://ffmpeg.org/ffmpeg-filters.html#fps
但似乎没有任何平均程序,也没有任何明确的算法来选择删除哪些帧。它会从假设“3”重复开始,还是“2”重复?
原则上,我想在上面的命令中向我的视频过滤器添加一些内容,以便视频文件只重新编码一次。
谢谢您的帮助或建议!