凌晨一点半,我盯着后台那个一直跳的「在线人数」数字,开始怀疑它。

免费网站视频播放人数统计工具,说到底就是一门「怎么数人」的手艺。数得糙,就只是给人看的热闹;数得细,才能知道谁真的在看。

播放量埋点 在线人数 免费方案 实测记录
深夜屏幕上的数据流

最近在写的一些小事

共 10 条 · 更新到 11 月 7 日
埋点

周航把「心跳包」从 30 秒改成 15 秒之后

在线人数涨了 61%,但他第一反应不是高兴,是去翻日志。

叶子11-07
工具

用 Matomo 数视频人数,卡在 2 万条事件上

免费版的自定义事件表一天后就慢到打不开后台。

叶子11-05
踩坑

播放到第 3 秒才算一次播放,这个规矩谁定的

我在两家小站对比,同一批访客,数字差了 3.4 倍。

叶子11-03
场景

老陈的社区影院网站,一共 400 个固定观众

他不要大盘数据,只想知道「今晚有多少人一起看」。

叶子10-31
工具

Umami 接视频事件:一顿操作,卡在两行代码

轻是真的轻,但它默认不算「停留」,得自己补。

叶子10-28
杂记

10 月 19 日,我在笔记本第 87 页记了一句话

「统计不是把数字做大,是把数字做实。」写的时候是深夜。

叶子10-19
工具

自建方案:一条 SQL 数出 1 分钟内的心跳去重

不快,但够用,1 台 2 核小机器能扛住 3000 人。

叶子10-16
延伸

跨端统计:手机端比桌面端多 68% 的「无痕播放」

你以为是隐私,其实是跳过登录。在线观看无人区高清版那种页面最典型。

叶子10-12
叶子的头像

关于我

我叫叶子,做了七年小站的前端和运营,现在在一家做在线教育的公司里和埋点打交道。

这个站是我自己写给自己的:每次看到「播放 10 万+」这种数字,我就想问它到底怎么数出来的。

所以我在这边一篇一篇把免费工具试完,把坑写下来,顺便留给和我一样深夜盯后台的人,比如那台 2 核机器上的 74 个在线。

写得慢,但不糊弄。

免费网站视频播放人数统计工具

昨晚一点半,我在改一个视频落地页的埋点。后台那块「在线人数」的窗口一直在跳,67、69、72……我看着它,忽然想起下午周航发来的一条消息。

他说:「叶子,我把心跳包从 30 秒改成 15 秒,在线人数直接涨了 61%,这算不算骗人?」

我回他:不算骗,算数得细了。

然后我拿着这个数,在笔记本第 87 页写了一行字:「数得细,不等于数得准。」

先说清楚:所谓「播放人数」,到底在数什么

免费网站视频播放人数统计工具,本质上是三件事叠在一起:一是播放事件,二是会话/心跳,三是去重。

播放事件好理解,`play` 一触发就 +1。问题是这个 +1 太廉价了。用户点开、缓冲、卡住、关掉,全都算了一次。

所以有些站会要求播到第 3 秒才算,有些要求播到第 10 秒。这个规则差一点,数字就差很多。

我 10 月 27 号在一家朋友的站点上做过一次对照:同一批 1.2 万个访问,按「触发即算」统计是 9.8 万次播放,按「播满 3 秒」统计是 7.1 万,按「播满 30 秒且看得见」统计只剩 2.9 万。

差了 3.4 倍。这还没算机器人。

屏幕上的统计图表
我那个仪表盘,数字跳得越快,我心里越没底。

免费工具里,我最后留下的是这三个

先说结论,没有任何一个免费工具能替你把「人」数准,它们只能把「事件」数准。准不准,取决于你怎么写规则。

Matomo 我用了两年多。自建、免费、数据在你自己手里,这点很舒服。缺点是自定义事件一多,MySQL 表会撑不住,我那次 2 万条事件之后,后台列表要等 8 秒才出来。

Umami 轻,一行脚本就能上,页面停留也认。但它默认不统计视频内的进度,要自己补一段 `timeupdate` 上报,这块文档写得不算细。

第三个是我自己拼的:一个 30 行的上报函数 + 一张心跳表,15 秒一个包,用 SQL 做 1 分钟窗口去重。丑,但在那台 2 核 2G 的机器上跑得稳稳的,3100 个并发在线吃得住。

顺便说,跨端这块我踩过坑,手机端「无痕播放」比桌面多 68%,里面很大一部分是没登录的访客,在看欧洲windows10永久免费版下载那种页面的用户,行为其实和看剧一样。

我个人的观点:大多数站点根本不需要「播放人数」,它们需要的是「同时在看的房间人数」。前者是虚荣数字,后者才是能用来做产品决定的东西。

为什么我更信「同时在线」而不是「总播放」

总播放是可以吹的,也是可以刷的。而「此刻有多少人在看」这个数,很难作假,因为它必须实时。

老陈那个社区影院站,一共就 400 个固定观众。他要的不是播放量,是「今晚 8 点这场,有多少人一起看」。

他 10 月 30 号给我发语音,说:「叶子,你把那个实时人数做出来,比什么都强。」第二天我给他加了一行 `当前 23 人在看`,他说这就对了。

所以我现在的顺序是:实时在线人数 → 会话时长 → 播放完成率 → 总播放。前三个都比最后一个有用。

一个简单判断标准:如果你后台的播放数环比涨了 30%,但会话时长和完成率没动,那大概率是某个规则被放宽了,或者有人在刷。

数人这件事,最后落到两条规则上

第一条:什么算「一次播放」。我现在的标准是播满 5 秒、且页面可见、且不是预加载。

第二条:什么算「一个在线」。15 秒心跳,60 秒窗口,超时就下线。这比 30 秒心跳细,也更接近真实感受。

周航把心跳改成 15 秒后涨了 61%,其实就是把「犹豫着要不要走」的人多留住了一轮统计窗口。这不是造假,是精度上来了。

但我也要提醒他:心跳越密,服务器压力越大。他那台机器 2000 人在线就开始丢包,我让他先在 30 秒和 15 秒之间做个灰度。

今天写这篇的时候是下午四点,窗外在下雨。我把这个页面最后调了一遍,把实时窗口从 90 秒改成 60 秒,人数从 74 掉到 61。

少了 13 个人。但我心里反而踏实了一点。

标签:播放量埋点 · 在线人数 · 免费统计工具 · 实时数据

「统计不是把数字做大,是把数字做实。做大的数字一天就过去了,做实的数字能用三年。」

—— 老陈,10 月 30 日晚上 9 点 47 分,微信语音转文字