前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >更高效直观,腾讯云媒体处理MPS视频评测系统帮助企业精准权衡性能成本

更高效直观,腾讯云媒体处理MPS视频评测系统帮助企业精准权衡性能成本

作者头像
腾讯云音视频
发布2024-07-15 08:59:37
770
发布2024-07-15 08:59:37
举报
文章被收录于专栏:音视频咖
在点播、直播等多媒体业务中,原始的视频文件在被分发前通常会被转码压缩,以降低对网络带宽的占用,并适应终端用户的硬件处理(解码)能力。由于转码参数设置的不同,转码后视频的编码格式、分辨率、码率等属性通常会发生改变。转码后视频的质量关系到用户的体验,并且不同转码方式对原始视频的压缩程度、对算力资源的消耗也不相同。对平台企业来说,能否客观有效地评测视频质量,并以此为基准调整各项参数实现性能、体验和成本的平衡,非常重要。本文会详细介绍当前常见的视频评测指标及方法,并讲解如何使用腾讯云媒体处理MPS新推出的视频评测系统,来更为快速有效地实现视频质量评测。

以原始视频为参考,将转码后的视频与原始视频进行对比是评价视频质量的一类方法,这类方法属于视频质量评测中的全参考方法,精确性较高。一段视频由大量的视频帧组成,如果原始视频和转码后视频的每一帧都是同步的,可以从两个视频中各取对应的一帧,对这两帧进行比较,使用一些算法去统计、评估两个视频的差异,进而得到一些客观上的指标。目前常见的全参考评测指标有峰值信噪比(Peak signal-to-noise ratio,PSNR)、结构相似性(Structural Similarity,SSIM)、视频多方法评估融合(Video Multimethod Assessment Fusion,VMAF) 等,一些开源的媒体处理库(如 FFmpeg)提供了这些指标的计算方式。

从单个评测指标中可以看出转码后的视频与原始视频之间的质量差异,为评估不同转码方式(编码器)之间的差异,需要知道编码器输出的流在不同码率下的质量。可以使用每个编码器对原始视频转码多次,输出多路不同码率的转码视频,计算这些转码视频的评分,然后以码率为横轴、评分为纵轴绘制一组RD(Rate Distortion)曲线。如下图所示,以横轴为基准,可以看出相同码率下哪个编码器编码出的视频评分较高,有更好的质量;以纵轴为基准,可以看出相同评分下哪种编码器编码出的视频码率更低、更能节省网络带宽。VCEG-M33 提出了一种衡量两种编码器差异的指标 BD-Rate,可以评估两种编码器在编码两路相同质量的流时,两路流在码率上的差异。

RD曲线

常见评测指标及方式

PSNR

峰值信噪比 PSNR 是衡量图像失真的指标,其值越大,通常表明视频中图像的质量越好。其计算方式和意义可参考:https://zh.wikipedia.org/wiki/峰值信噪比。

FFmpeg 提供了psnr filter(https://ffmpeg.org/ffmpeg-filters.html#psnr)来计算两个视频之间的 PSNR,以一个对比视频(如由原始视频转码后得到)和一个原始视频作为输入。两个视频的视频帧在输入到 filter 前必须有相同的分辨率和像素格式,同时也假定两个视频有相同的帧数。示例如下:

代码语言:javascript
复制
# 相同分辨率的编码视频
ffmpeg -i transcode_video.mp4 -i video.mp4 -lavfi  "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]psnr=stats_file=psnr.log" -f null -

# 不同分辨率的编码视频(对齐到高分辨率的原视频)
ffmpeg -i transcode_video_720p.mp4 -i video_1080p.mp4 -lavfi  "[0:v]scale=1920x1080,settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]psnr=stats_file=psnr.log" -f null -

# 未编码流(yuv420p)
ffmpeg -video_size 1280x720 -pixel_format yuv420p -i transcode_video.yuv -video_size 1280x720 -pixel_format yuv420p -i video.yuv -lavfi "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]psnr=stats_file=psnr.log" -f null -

SSIM

结构相似度 SSIM 是一种用以衡量两张图像相似程度的指标,其值越大,通常表明视频中的图像质量越好。其计算方式及意义可参考:https://zh.wikipedia.org/wiki/結構相似性。

FFmpeg 提供了ssim filter(https://ffmpeg.org/ffmpeg-filters.html#ssim)来计算两个视频之间的 SSIM,以一个对比视频(如由原始视频转码后得到)和一个原始视频作为输入。两个视频的视频帧在输入到 filter 前必须有相同的分辨率和像素格式,同时也假定两个视频有相同的帧数。示例如下:

代码语言:javascript
复制
# 相同分辨率的编码视频
ffmpeg -i transcode_video.mp4 -i video.mp4 -lavfi  "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]ssim=stats_file=ssim.log" -f null -

# 不同分辨率的编码视频(对齐到低分辨率的原视频)
ffmpeg -i transcode_video_720p.mp4 -i video_1080p.mp4 -lavfi  "[0:v]settb=AVTB,setpts=N[main];[1:v]scale=1280x720,settb=AVTB,setpts=N[ref];[main][ref]ssim=stats_file=ssim.log" -f null -

# 编码流与未编码流(rgb)
ffmpeg -i transcode_video_720p.webm -video_size 1280x720 -pixel_format rgb24 -i video.rgb -lavfi "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]ssim=stats_file=ssim.log" -f null -

VMAF

VMAF 是 Netflix 开发的一种视频感知质量融合算法,它结合多个度量指标来对视频质量进行评估,通过机器学习算法将基本指标融合到最终的指标中。其值越大,视频中图像的质量越好。

FFmpeg 提供了libvmaf filter(https://ffmpeg.org/ffmpeg-filters.html#libvmaf-1)来计算两个视频之间的 VMAF,其内部调用了 Netflix 的vmaf库(https://github.com/Netflix/vmaf),以一个对比视频(如由原始视频转码后得到)和一个原始视频作为输入。示例如下:

代码语言:javascript
复制
# 相同分辨率的编码视频
ffmpeg -i transcode_video.mp4 -i video.mp4 -lavfi "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]libvmaf=log_fmt=json:log_path=vmaf.json:n_threads=8" -f null -

# 不同分辨率的编码视频(对齐到高分辨率的原视频)
ffmpeg -i transcode_video_720p.mp4 -i video_1080p.mp4 -lavfi "[0:v]]scale=1920x1080,settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]libvmaf=log_fmt=json:log_path=vmaf.json:n_threads=8" -f null -

# 未编码流(yuv420p)
ffmpeg -video_size 1920x1080 -pixel_format yuv420p -i transcode_video.yuv -video_size 1920x1080 -pixel_format yuv420p -i video.yuv -lavfi "[0:v]settb=AVTB,setpts=N[main];[1:v]settb=AVTB,setpts=N[ref];[main][ref]libvmaf=log_fmt=json:log_path=vmaf.json:n_threads=8" -f null -

BD-Rate

BD-Rate 全称 Bjontegaard-Delta rate,用于评测不同编码器的 RD(Rate Distortion) 性能。其计算方式如下:

  1. 给定两个编码器 { E1, E2 } 和一个输入视频,以不同的目标码率 {a, b, c, d} 对输入视频进行转码,得到码率为 {a1, b1, c1, d1} 和 {a2, b2, c2, d2} 的两组视频。计算每个视频的 PSNR 评分,如下表所示:

Bitrate-PSNR表格

  1. 以评分为横轴、取对数后的码率为纵轴,进行三次多项式拟合或分段三次 Hermite 插值,得到两条曲线 C1、C2;
  2. 取评分区间 [pa1, pd1] 和 [pa2, pd2] 的交集 [p1, p2],计算 C1、C2 在 [p1, p2] 下的积分,得到积分值 i1、i2;
  3. 计算 BD-Rate:bdrate(E1, E2) = [exp[(i2-i1) / (p2-p1)] - 1] * 100。

若 BD-Rate 值为 -N%(N 是非负值),说明当编码出的流质量相同时,编码器 E2 相对编码器 E1 能节省 N% 的码率;若BD-Rate 值为 +N%,说明为编码出相同质量的流,编码器 E2 需要增加 N% 的码率。

开源方案的局限

及腾讯云给出的解决方案

使用 FFmpeg 命令行的方式对视频进行评测存在一些不便和问题:

  1. 不支持两个以上的批量评测,FFmpeg 的评测 filter 只支持两个输入视频,如果有一个原始视频和多个对比视频,每次评测时原始视频都需要被解码一次;
  2. 不支持评测视频中的某个时间区间,如果用户希望只评测视频中的某个时间区间,需要先截取该片段,然后才能进行评测;
  3. 不支持评测视频中的某个帧区间,如果用户希望只评测视频中的某个帧区间,也需要先截取该片段,然后才能进行评测;
  4. 只支持评测视频文件,不支持直播流,多路直播流的播放时间可能不完全同步,评测时从这些流中获得的第一帧不一定是对齐的。

下面介绍一下可以处理上述问题的方案。

多个视频并行评测

假设输入有 1 个原始视频和 N 个对比视频,并行评测的流程如下:

  1. 根据输入视频的属性初始化 N 个 filter {f1, f2, ..., fN};
  2. 同时解码 1+N 个视频,得到 1+N 个视频帧 {r, m1, m2, ..., mN},写入到 1+N 个帧缓存队列中,其中 r 是参考视频帧,mK 为第 K 个对比视频帧;
  3. 从 1+N 个队列中各读取一帧,将参考视频帧 r 与对比视频帧 {m1, m2, ..., mN} 两两结合,得到视频帧对 {r, m1}、{r,m2}、... 、{r,mN};
  4. 将第 3 步中的 N 个视频帧对同时输入到 N 个 filter {f1, f2, ..., fN} 中,计算当前 N 个帧的评分;
  5. 重复执行第 2 步,直到视频解码结束;
  6. 汇总各个视频的评测结果。

并行评测

在并行评测过程中,每个视频只被解码了一次,充分利用了 CPU 的多核能力,减小了评测时间,提高了评测效率。在并行评测之前需要评估其对内存资源的消耗,如果并行评测的视频数量过多,并且视频的分辨率、码率较高(如 8K 视频),可能会存在内存溢出的问题。

指定时间区间评测

假设视频时长为 T 秒,指定的时间区间为 [t1, t2],评测流程如下:

  1. 定位最接近 t1 的关键帧 k,丢弃该关键帧前的 GOP;
  2. 从 k 开始解码,计算当前帧的时间戳 t(由视频流的 timebase 和帧的 pts 计算得到);
  3. 若 t < t1,丢弃当前帧,继续解码;若 t > t2 或 t > T,解码结束,执行第 5 步;若 t >= t1,执行下一步;
  4. 将当前帧写入帧缓存队列,从队列中读取一个帧对,输入到 filter 中计算评分;
  5. 汇总评测结果。

指定时间区间评测

指定帧区间评测

假设指定的帧区间为 [f1, f2],评测流程如下:

  1. 定位最接近 f1 的关键帧 k,丢弃该关键帧前的 GOP;
  2. 解码视频获取视频帧,统计当前帧的序号 f;
  3. 若 f < f1,丢弃当前帧,执行第 1 步,继续解码;若 f > f2 或视频解码结束,执行第 4 步;若 f >= f1,执行下一步;
  4. 将当前帧写入帧缓存队列,从队列中读取一个帧对,输入到 filter 中计算评分;
  5. 汇总评测结果。

指定帧区间评测

直播流首帧对齐

如前所述,视频评测的过程是逐帧评分的过程,如果输入的两个视频帧之间没有对应关系,那么评测的结果是没有意义的。对于 HLS/DASH 这类自适应码率的流,分片之间通常是对齐的,保证了帧的同步;对于其它类型的直播流,它们的第一帧可能并不同步,一路流的第一帧可能要早于或晚于另一路流的第一帧,因此需要在评测前对两路流进行分析,找出它们匹配的起始帧,然后从起始帧开始进行评测。

为对齐评测的起始帧,一种方案是从两路流的开头各取一小段视频,将视频再划分成多个小片段,比较这些片段之间的相似性,两个片段的相似性越高,它们互相匹配的可能性就越大。可以基于 PSNR/SSIM/VMAF 等评测指标来做相似性评价,基于指定帧区间评测的能力去计算两个视频片段的评分。

假设有一路源流 S 和 一路转码流 T,从两者中各读取一定时长的片段 s1 和 t1,s1 和 t1 中一定有可以对齐的两帧(即存在两种情况:s1 的第一帧能与 t1 中的某一帧对齐;t1 的第一帧能与 s1 中的某一帧对齐)。流程如下:

  1. 取 t1 的前 n 帧(如 n = 10),依次与 s1 的第 [1, n]、[2, n+1]、... 、[m, m+n-1] 帧进行评测,获取 m 个评分(如 m = 100),记录最大分值 x 和最大分值对应的帧序号 xi;
  2. 取 s1 的前 n 帧(如 n = 10),依次与 t1 的第 [1, n]、[2, n+1]、... 、[m, m+n-1] 帧进行评测,获取 m 个评分(如 m = 100),记录最大分值 y 和最大分值对应的帧序号 yi;
  3. 若 x >= y,则评测的起始帧为 s1 的第 xi 帧和 t1 的第一帧;若 x < y,则评测的起始帧为s1 的第一帧和 t1 的第 yi 帧 。

评测首帧对齐

评测直播流的一种方案是将其转封装成点播流,然后对点播流进行评测,但需要评估这个过程引入的延时。

MPS视频评测系统

为降低视频评测的使用门槛,提高评测效率,直观展示评测结果,腾讯云媒体处理服务 MPS 上线了视频评测系统。您可前往媒体处理控制台,在【更多服务】中选择【转码评测】,使用相关功能。系统目前提供两种评测功能:视频质量评测和 BD-Rate 评测,可以客观的评估视频质量和不同编码器之间的差异,即将上线直播流转码质量监控。

视频质量评测

视频质量评测用于计算多个视频(一个原始视频和多个对比视频)的 PSNR、SSIM、VMAF 等评分。

用户可以以腾讯云存储 COS、URL 的方式输入原始视频,以腾讯云存储 COS 、 URL、MPS 转码模版的方式输入或创建对比视频。以 MPS 转码模版为输入时,评测系统将先对原始视频进行转码,然后对转码后的视频进行评测。

用户可以自定义评测的时间范围或帧数范围;若输入视频的分辨率不一致,可以选择将评测时的分辨率对齐到高分辨率视频或低分辨率视频。

系统会对输入视频进行评分,获取整体分数和逐帧分数,绘制时间/帧数-分数曲线图,并截取视频中得分最低(质量最差的)若干张视频帧,生成评测报告。用户可以在评测详情页查看评测结果,导出 PDF 格式的评测报告。

系统还支持对输入的多个视频进行同屏对比,在同一页面下同时播放多个输入视频,展示视频帧的分数随时间的变化。

具体用法可参考文档:

https://cloud.tencent.com/document/product/862/103989

BD-Rate评测

BD-Rate 评测用于评估编码器之间的差异。

用户可以以腾讯云存储 COS、URL 的方式输入原始视频,以腾讯云存储 COS、URL、MPS 转码模版的方式输入或创建对比视频。以 MPS 转码模版为输入时,可以选择以指定码率或 CRF 的方式进行转码。用户可以自定义评测的时间范围或帧数范围;若输入视频的分辨率不一致,可以选择将评测时的分辨率对齐到高分辨率视频或低分辨率视频。

系统会对输入视频进行评分,获取每个视频的码率及整体分数,绘制 RD 曲线,展示不同编码方式下码率与评分的关系;计算 BD-Rate,评估不同编码器之间的差异,生成评测报告。用户可以在评测详情页查看评测结果,导出 PDF 格式的评测报告。

RD曲线示例

BD-Rate示例

系统还支持对输入的多个视频进行同屏对比,在同一页面下同时播放多个输入视频,展示视频帧的分数随时间的变化。

具体用法可参考文档:

https://cloud.tencent.com/document/product/862/103990

直播流转码质量监控

直播流转码质量监控用于对转码流的视频帧进行评分,监控流的质量和码率变化,后续腾讯云媒体处理MPS视频测评系统将会上线这项能力。

当前转码评测功能正在内测中,限时免费试用。您可前往【媒体处理控制台】→【更多服务】→【转码评测】中,体验相关功能。

如果您想要进一步了解或使用腾讯云相关能力,欢迎扫描下方二维码添加音视频小姐姐微信,我们将安排产研同学专门跟进您的需求。

腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备腾讯云RT-ONE™全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云音视频 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档