是否可以使用 FFMPEG 中的 signalstats YAVG 过滤器来控制视频中的伽马校正?

是否可以使用 FFMPEG 中的 signalstats YAVG 过滤器来控制视频中的伽马校正?

我不知道这是否可行,但有东西告诉我这是可能的……你看,我想动态控制伽马校正FFMPEG/FFPLAY取决于视频/电影中重现的帧有多亮/暗……

就上下文而言,有一个过滤器FFMPEG/FFPLAY/FFPROBE调用该函数报告有关正在处理/再现/分析的视频的各种有用信息。过滤器中signalstats有一个参数返回帧的平均级别(YAVGsignalstatslumahttps://ffmpeg.org/ffmpeg-filters.html#signalstats-1)。这就是我想要用来确定/计算gamma在 eq 过滤器中使用的值gammahttps://ffmpeg.org/ffmpeg-filters.html#eq)…例如,最后我想使用这样的公式"1-(YAVG/50)+1"……

通过signalstats YAVG过滤器/参数,我成功地完成了这些不相关的练习:

分析(用FF探针)视频并写下日志YAVG包含每帧值的文件:

ffprobe -f lavfi movie=VIDEO_INPUT,signalstats -show_entries frame_tags=lavfi.signalstats.YAVG -of csv="p=0" > YAVG.log

我还可以播放视频(使用飞飞游戏),并在左上角显示YAVG正在重现的每一帧的值:

首先,我们需要在主文件夹中创建一个名为“ signalstat_drawtext.txt”的文本文件,其内容如下:

    %{metadata:lavfi.signalstats.YAVG}

然后,我们运行这个命令:

    ffplay VIDEO_INPUT -vf signalstats,drawtext=fontfile=FreeSerif.ttf:fontcolor=lime:textfile=signalstat_drawtext.txt

但是,我无法找到/猜测如何使用输出YAVG来(实时)控制过滤器gamma中的值eq...我认为这是可能的,我只是不知道如何编写命令。

使用飞飞游戏,我会想象这样的事情:

ffplay VIDEO_INPUT -vf signalstats,eq=gamma="1-(metadata:lavfi.signalstats.YAVG/50)+1"

但当然,这是行不通的,而且我确信我写的只是废话。

相关内容