小编dra*_*vit的帖子

防止ffmpeg在降低视频分辨率的同时改变颜色的强度

我有一个用例,我需要将716x1280mp4 视频缩小到358x640(原始视频的一半)。我使用的命令是

ffmpeg -i ./input.mp4 -vf "scale=640:640:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2" ./output.mp4
Run Code Online (Sandbox Code Playgroud)

在 10 个示例视频中,其中 2 个受到颜色影响。下面我附上了一个与受影响最大的比较。

比较受影响最大的视频的帧

注意:右侧的一帧来自原始视频,左侧的一帧来自已处理(缩小)的视频。注意图像中的红色和绿色(甚至皮肤颜色和头发颜色也发生了变化)。

我正在寻找的是

  • 有什么办法可以防止发生这样的变化吗?可能是饱和度、亮度、对比度或任何其他参数的标志。
  • 我假设 ffmpeg 在缩小视频时使用一些默认设置。是什么让 ffmpeg 只为这两个视频改变颜色?如果它也对其余视频进行了类似的更改,那么如何事先预测这种行为?

编辑:

我已经尝试过什么?

  • -crf 值为 0 和 18。
  • -preset veryslow正如这里提到的

没有帮助

Mediainfo 输入 V/S 输出

参数 输入 输出
颜色范围 有限的 NA(属性不在描述中)
原色 BT.2020 NA(属性不在描述中)
传递特性 HLG NA(属性不在描述中)
矩阵系数 BT.2020 非常数 NA(属性不在描述中)
位深 8 8

ffmpeg 命令的日志

ffmpeg -i ./input.mp4 -vf "scale=640:640:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2" -movflags +faststart ./output.mp4
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg …
Run Code Online (Sandbox Code Playgroud)

ffmpeg colors image-processing video-processing

5
推荐指数
1
解决办法
433
查看次数

将 vmaf 与 ffmpeg 结合使用的正确方法

我正在尝试计算处理后的视频与原始文件的VMAF分数。

我使用过的命令:

ffmpeg -y -loglevel info -stats -i original.mp4 -i processed.mp4 -lavfi "[0]null[refdeint];[refdeint]scale=1920:1080:flags=neighbor[ref];[1]setpts=PTS+0.0/TB[b];[b]scale=1920:1080:flags=neighbor[c];[c][ref]libvmaf=log_fmt=json:phone_model=1:model_path={model_path_here}/vmaf_v0.6.1.json:n_subsample=1:log_path=log.json" -f null -
Run Code Online (Sandbox Code Playgroud)

现在,根据此处vmaf with ffmpeg找到的官方文档,它表示文件,然后是文件。source/referenceencoded/distorted/processed

但我遇到的几乎所有博客都使用相反的参数顺序,即processed文件后面跟着文件original

几个例子:

  1. https://medium.com/@eyevinntechnology/keep-an-eye-on-the-video-quality-b9bcb58dd5a1:在其中搜索“在 FFMPEG 中使用 VMAF”。

  2. https://websites.fraunhofer.de/video-dev/calculate-vmaf-and-psnr-with-ffmpeg/:在其中搜索“Metric Calculation with FFmpeg”。

编辑

注意:更改顺序确实会更改 VMAF 分数。

video ffmpeg videoquality

3
推荐指数
1
解决办法
9769
查看次数