Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 将vmaf与ffmpeg一起使用的正确方法_Video_Ffmpeg_Videoquality - Fatal编程技术网

Video 将vmaf与ffmpeg一起使用的正确方法

Video 将vmaf与ffmpeg一起使用的正确方法,video,ffmpeg,videoquality,Video,Ffmpeg,Videoquality,我试图计算原始文件中处理过的视频的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]libvma

我试图计算原始文件中处理过的视频的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 -
现在,根据找到的带有ffmpeg的
vmaf的官方文档,它显示
源/参考
文件,然后是
编码/失真/处理的
文件

但是,我遇到的几乎所有博客,他们都使用了相反的方式,即
处理的
文件,然后是
原始的
文件

几个例子:

  • :在其中搜索“在FFMPEG中使用VMAF”

  • :在其中搜索“使用FFmpeg进行度量计算”

  • 编辑


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

    FFmpeg过滤器期望第一个输入为编码视频流,第二个输入为参考流


    可能(我没有检查)VMAF计算相对于输入是对称的,因此实际上,顺序可能并不重要。

    在命令行中如何指定源文件并不重要。 如何将视频流提供给libvmaf过滤器非常重要

    默认情况下,命令行中第一个指定的源将成为索引为0的流,第二个指定的源将成为索引为1的流

    您可以指定如何将这些流提供给libvmaf过滤器,但不必指定。如果尚未执行此操作,则索引为0和1的流将按该顺序提供给筛选器

    让我们看看你的例子

    Netflix手册(我删除了不需要的部分):

    请注意,索引为0的视频流(在命令行中首先指定的视频流)被重命名为引用
    [0:v]…[reference]
    ),索引为1的视频流(在命令行中第二个视频流)被重命名为扭曲
    [1:v]…[distributed]

    但当它们发送到libvmaf时,顺序是:扭曲,然后是引用(
    [扭曲][reference]libvmaf

    关于媒介的条款:

    ffmpeg -i distorted-file -i reference-file -lavfi libvmaf -f null –
    
    FFMpeg手册:

    ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
    
    扭曲文件的索引为0 引用文件的索引为1。 由于没有任何重命名/重新映射,它们将按原始顺序发送到libvmaf:0然后1(distorder然后reference)。它等于
    [0][1]libvmaf
    。因此,提供给libvmaf的视频流顺序与Netflix手册中的完全相同

    如果只比较两个视频,最好保持原始顺序,否则人们可能会感到困惑

    然而,在我的ffmpeggui()中,我有相反的顺序。 原因是--可以为程序指定多个扭曲的文件,以便更容易理解和使用: ffmetrics.exe[选项]参考扭曲1[扭曲2][扭曲3][扭曲4]

    您的命令行也正确: ffmpeg-i参考-i失真[0]…[refdeint];[refdeint]…[ref];。。。[b] );[b] …[c];[c] [ref]libvmaf

    在所有重新映射流之后,以正确的顺序提供给libvmaf:扭曲然后引用。 您不能在那里交换两个“-i文件”选项,因为这将极大地改变您的逻辑


    另外,这是实际发生情况的简化版本:)

    就是这样。在官方文档中,第一个参数是引用流,第二个参数是编码流。ffmpeg过滤器的官方文档位于。我已经添加了一个关于输入顺序的注释,它将在今晚出现。是的,这是正确的。我昨天意识到了这一点,忘了在这里关上它。不管怎样,你的回答要详细得多。谢谢D
    ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -