Linux下调用ffmpeg计算全参考视频质量评价指标vmaf
安装ffmpeg
下载ffmpeg安装包
在命令行窗口中,依次执行如下两条语句即可
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5
检查安装包的完整性
执行如下语句
md5sum -c ffmpeg-git-amd64-static.tar.xz.md5
执行后,安装包完整则输出下面的内容
ffmpeg-git-amd64-static.tar.xz: OK
解压ffmpeg安装包
tar xvf ffmpeg-git-amd64-static.tar.xz
检查ffmpeg是否安装成功
执行如下语句
./ffmpeg-git-20210611-amd64-static/ffmpeg
若输出下图的结果,则ffmpeg安装成功
截止目前,已经完成了ffmpeg的安装,但是只能局部调用(即只能在当前路径下调用),下面的操作就是让所安装的ffmpeg能够全局调用;
查看PATH环境变量
在命令行中输入echo $PATH,输出如下(每台电脑的输出可能不同):
/usr/local/bin:/usr/bin:/home/vqe/bin
这里的含义在其他路径下(上面提到的当前路径之外)调用ffmpeg时,电脑首先会在/usr/local/bin/路径下去找是否存在ffmpeg;如果没有,则再去/usr/bin/路径下找,依次类推。
设置ffmpeg为全局调用
下面的命令是把ffmpeg放在第一个搜索路径下
sudo mv /ffmpeg-git-20210611-amd64-static/ffmpeg /ffmpeg-git-20210611-amd64-static/ffprobe /usr/loal/bin/
然后,命令行中执行whereis ffmpeg,则会输出ffmpeg: /usr/local/bin/ffmpeg
安装ffmpeg_quality_metrics
安装ffmpeg_quality_metrics需要满足python的版本为3.6以上(包含3.6),然后执行如下语句,则可以完成安装
pip3 install ffmpeg_quality_metrics
使用ffmpeg计算vmaf
完成ffmpeg和ffmpeg_quality_metrics的安装后,执行如下命令则可以计算失真视频dis.mp4和原始视频ref.mp4之间的vmaf
ffmpeg_quality_metrics dis.mp4 ref.mp4 -m vmaf --model-path /usr/local/ffmpeg_quality_metrics/vmaf_model/vmaf_v0.6.1.pkl
这里的模型vmaf_v0.6.1.pkl是可以从github工程ffmpeg-quality-metrics获得,强调一下我把下载得到的工程放到了路径/usr/local/下,大家可以根据自己模型vmaf_v0.6.1.pkl的绝对路径来确定**–model-path**后面的参数。正常情况下,应该就能够正确输出vmaf的值了,下面看一种特殊情况
特殊情况
如果执行计算vmaf的命令后,出现如下图所示:
解决办法是去下载原版的vmaf-master工程。下载完成后,解压。下面这步操作有可能不需要执行,视自己的实际情况而定:
进入./vmaf-master/路径下,输入make,然后按回车键
上面的操作完成后,在执行计算vmaf指令时,输入下面的指令
ffmpeg_quality_metrics dis.mp4 ref.mp4 -m vmaf --model-path /usr/local/vmaf-master/model/vmaf_float_v0.6.1.pkl
则解决这种情况下的报错,输出正常的vmaf值。实际上,这条命令就是把 –model-path 指定为工程 vmaf-master 中模型vmaf_float_v0.6.1.pkl的绝对路径。
PS
这是本人在查找ffmpeg如何计算vmaf指标时,找到的一些资料,以及遇到的问题和对应的解决方案。本人对这一块也不是特别熟悉,如果有技术大佬有便捷的计算方法,或者本博客有不正确的地方,欢迎在评论区中指出。
参考
[1] https://github.com/slhck/ffmpeg-quality-metrics.
[2] https://github.com/Netflix/vmaf.
[3] https://www.johnvansickle.com/ffmpeg/faq/.