首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用ffmpeg计算vmaf分数时同步帧

如何在使用ffmpeg计算vmaf分数时同步帧
EN

Stack Overflow用户
提问于 2020-07-06 18:00:27
回答 1查看 402关注 0票数 0

我有一个源视频和该源的编码器版本。现在我需要找到vmaf分数。然而,我读到,为了确保正确的vmaf分数,重要的是源视频和编码视频都是帧同步的。你能告诉我如何在ffmpeg中使用过滤器对解码的流进行过滤吗?我

我有如下命令

代码语言:javascript
运行
复制
ffmpeg2 -i 11sec_encoded_720p_200k.mp4 -i 11sec_original_1080p.mxf -filter_complex "[0:v]scale=1920x1080:flags=bicubic[main]; [main][1:v]libvmaf=model_path=vmaf_v0.6.1.pkl:psnr=1:ssim=1:ms_ssim=1:log_fmt=json:log_path=720p_200k.json" -report -f null -
EN

回答 1

Stack Overflow用户

发布于 2020-07-07 23:29:24

您可以使用trim filter来处理输入视频之间的<offset>,即

  • 如果11sec_encoded_720p_200k.mp4的第一帧(失真)比11sec_original_1080p.mxf (参考)领先,则通过指定<offset>值将trim应用于参考。<offset>应该是参考视频上其帧与失真帧的第一帧匹配的秒数(请参阅下图的命令):

代码语言:javascript
运行
复制
ffmpeg2 -i 11sec_encoded_720p_200k.mp4 -i 11sec_original_1080p.mxf -filter_complex "[0:v]scale=1920x1080:flags=bicubic[main];[1:v]trim=start=<you offset> [ref];[main][ref]libvmaf=model_path=vmaf_v0.6.1.pkl:psnr=1:ssim=1:ms_ssim=1:log_fmt=json:log_path=720p_200k.json" -report -f null -

  • 否则,如果11sec_original_1080p.mxf (Reference)相对于11sec_encoded_720p_200k.mp4 (失真)在前面,则将trim应用于失真(参见下面的命令图像):

代码语言:javascript
运行
复制
ffmpeg2 -i 11sec_encoded_720p_200k.mp4 -i 11sec_original_1080p.mxf -filter_complex "[0:v]trim=start=<you offset> [main0];[main0]scale=1920x1080:flags=bicubic[main];[main][1:v]libvmaf=model_path=vmaf_v0.6.1.pkl:psnr=1:ssim=1:ms_ssim=1:log_fmt=json:log_path=720p_200k.json" -report -f null -

上面的例子认为你已经知道了正确的偏移量,如果不是这样,你需要计算它。这个计算可以使用失真视频的样本并逐帧滑动(向前和向后)来完成,以便查找关于Reference的最佳PSNR。一旦找到最佳PSNR,滑动的时间量就是同步帧所需的偏移量。在这里,您可以找到一个已经处理此问题的python脚本:https://github.com/gdavila/easyVmaf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62753638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档