You need to enable JavaScript to run this app.
导航
通用指标说明
最近更新时间:2024.10.22 14:49:48首次发布时间:2021.11.04 10:45:08

本文档为您介绍质量平台播放 QoS 指标、播放 QoE 指标和成本指标的统计原理和定义。

背景信息

质量平台通过在视频点播播放器中增加埋点的方式获取统计数据。埋点上报和数据收集的流程如下图所示。
Image
从设置 URL 后第一次调用 play 即视为一次播放,一次播放只上报一次埋点日志。根据视频播放完成情况,分为播放成功和播放失败两种场景。不同场景下埋点日志上报的时机如下表所示。

场景

上报时间

播放成功

  • 起播失败:起播阶段出现错误造成首帧未播放。
  • 用户退出:起播、首次播放或循环播放阶段,用户主动退出播放。
  • 播放完成:单次播放场景下,完成尾帧播放。

播放失败

  • 起播失败:起播阶段出现错误造成首帧未播放。
  • 用户退出:起播或视频正常播放阶段,用户退出。
  • 播放失败:播放器内部错误触发重试机制,重试失败造成播放失败。

说明

  • 首帧播放是起播阶段和视频播放阶段的分界点。
    • 视频首帧指视频显示出的第一帧画面。
    • 纯音频或只含音频流的视频源,首帧指播放的第一帧音频。
  • 循环播放场景下,视频循环次数不影响播放次数统计,即视频循环播放多次,也仅记为一次播放。

QoS 指标说明

播放量

播放量指用户播放视频的总次数。设置播放源后,客户端首次调用 play 被记为一次播放,其他调用 play 的场景下不会记为播放,例如,暂停后重新调用 play 进行播放。

实际播放量

实际播放量指首帧成功渲染的播放次数,即排除客户端调用了 play 但是没有收到首帧成功渲染回调的情况。

播放失败率

播放失败率 = 播放失败的次数 * 100% / 播放总量
播放失败总数指播放失败次数占总播放次数的比例,也就是在播放过程中播放器内部发生不可修复的错误,导致播放失败的次数。

首帧时间

首帧时间 = AVG(Video First Frame - User hits Play)
首帧时间指从用户点击播放到显示首帧的时间间隔。

说明

如果在起播阶段就用户退出播放,或起播失败,则没有首帧时间。

卡顿率

卡顿率 = 发生卡顿的播放量 * 100% / 播放总量
卡顿是指视频播放过程中,由于下载不到视频数据而造成视频加载的情况,其中不包含拖动进度条 seek 造成的视频加载。
卡顿率指播放过程中出现网络卡顿的播放次数占总播放次数的比例。

中断率

中断率 = 发生过中断的播放量 * 100% / 播放总量
发生过中断的播放数指播放过程中因播放器内部错误,触发重试的次数。重试可能会成功,也可能失败,只要触发重试,就会记做一次中断。
中断率指播放过程中出现失败但内部重试后成功的播放次数占总播放次数的比例。

未起播率

未起播率 = 未起播的播放量 * 100% / 播放总量
未起播包含视频起播之前用户退出或起播失败两种场景。未起播率指未显示首帧的播放次数占总播放次数的比例。

百秒卡顿时长

百秒卡顿时长 = 播放中卡顿总时长 / 播放时长 * 100
百秒卡顿时长指每播放 100 秒视频所发生的网络卡顿总时长,不包括首帧显示前的卡顿和由 Seek 操作引起的卡顿。用于反映用户观看视频过程中卡顿的严重程度。百秒卡顿时长越长,视频卡顿越严重。

百秒卡顿次数

百秒卡顿次数 = 卡顿次数 / 播放时长 * 100,000
播放时长的单位为毫秒,1 毫秒 = 0.001 秒
百秒卡顿次数指每播放 100 秒视频所发生的网络卡顿次数,不包括首帧显示前的卡顿和由 Seek 操作引起的卡顿。

平均播放码率

平均播放码率 = AVG(bit_rate)
平均播放码率指每次播放对应的视频文件码率,计算全部播放视频的平均码率。
即客户端 SDK 上报的播放视频平均码率,其中 bit_rate 为某次播放对应的资源文件码率。

平均 Seek 时长

平均 Seek 时长 = Seek 视频加载总耗时 / Seek 用户拖动进度总数 = sum(seek_dur) / sum(seek_cnt)
平均 Seek 时长指全部播放视频时,用户拖动进度条产生的视频加载时间的平均值。

QoE 指标说明

完播量

完播量 = sum(finish_cnt)
完播量指音/视频成功显示最后一帧(即尾帧)的播放次数。循环播放记为一次完播。以下情况也属于播放完成。

  • 播放过程中拖动进度条 Seek 到视频结尾,显示出尾帧。
  • 播放过程中拖动进度条 Seek 到视频任意位置,继续播放视频,直至显示出尾帧。
  • 循环播放场景中,显示出尾帧后,进入循环播放。在循环播放阶段,用户退出播放。

播放用户数

播放用户数 = count(distinct(device_id))
播放用户数指使用播放器 SDK 进行播放的用户数(设备级去重),即日均活跃用户数量(Daily Active User,简称 DAU),通过设备标识 device_id 统计访问用户数,每个设备拥有唯一的设备标识。

人均播放时长

人均播放时长 = 用户实际播放视频的总时长/播放用户数 = sum(watch_dur)/count(distinct case when watch_cnt>0 THEN device_id end)
即人均播放视频的时长。watch_dur 表示用户实际播放视频的时长,单位为 ms。
用户实际播放视频的时长,指从视频起播开始计算,到播放退出时累计的时长,不包含以下场景的时间:

  • 暂停的时间
  • 拖动进度条 Seek 的时间
  • 网络卡顿的时间
  • 出错重试的时间
  • 以及其他一切进度条暂停的时间

人均播放数

人均播放数 = 播放量 / 播放用户数 = 播放总量 / count(distinct(device_id))
播放量/用户表示平均每个用户的播放量。

人均完播次数

人均完播次数 = 完播量 / 播放用户数 = sum(finish_cnt) / count(distinct(device_id))
即人均播放完成的次数。
完播量指音/视频成功显示最后一帧(即尾帧)的播放次数。循环播放记为一次完播。以下情况也属于播放完成。

  • 播放过程中拖动进度条 Seek 到视频结尾,显示出尾帧。
  • 播放过程中拖动进度条 Seek 到视频任意位置,继续播放视频,直至显示出尾帧。
  • 循环播放场景中,显示出尾帧后,进入循环播放。在循环播放阶段,用户退出播放。

完播率

完播率 = sum(finish_cnt) * 100% / 播放总量
即播放完成的次数占总播放次数的比例。

平均播放时长

平均播放时长 = 用户实际播放视频的总时长 / 播放量 = sum(watch_dur) / sum(watch_cnt)
watch_dur 表示用户实际播放视频的时长,单位为 ms。
用户实际播放视频的时长,是指从视频起播开始计算,一直到播放退出时累计的时长, 不包含以下场景的时间。

  • 暂停的时间
  • 拖动进度条 seek 的时间
  • 网络卡顿的时间
  • 出错重试的时间
  • 以及其他一切进度条暂停的时间

警告

循环播放的时长也会累计进 watch_dur。

平均视频时长

平均视频时长 = AVG(vplay_video_dur)
vplay_video_dur 表示从视频头中获取的视频时长。全部播放视频的平均时长,基于从视频头中获取的视频时长,计算全部视频的平均时长。

成本指标说明

播放器消耗带宽

播放器消耗带宽 = sum(player_stream_data) x 8 / 300
播放器 SDK 统计到的消耗带宽。

播放器消耗流量

播放器消耗流量 = sum(player_stream_data)
播放器 SDK 统计到的消耗流量。