请教视频流带宽计算的问题

2020-11-28 14:40:18 +08:00
 Juszoe

背景:观看者不总是完整的观看整个视频,需要计算实际下载的数据量。


问题:已知观看者观看的帧数序列(如 1-100,103-108 ),并且有原始视频,求总下载的数据量。应当如何计算?有没现成的工具?


我的尝试:视频使用 H264/H265 编码,使用 ffprobe 解析出每一帧的信息,虽说可以看到每一帧大小了,但是 P 帧需要依赖之前的帧进行解析,在 ffprobe 中并没有看到相关的内容,在这里卡住不知道如何解决了。

2059 次点击
所在节点    程序员
13 条回复
aru
2020-11-28 16:55:37 +08:00
平均码率=文件大小 / 时长
下载数据量=平均码率*观看的时长。

不过上面计算方法是错误的,实际下载量和观看用到的数据量不相同,不完整观看总是会有下载了没观看的部分
mingl0280
2020-11-28 18:10:28 +08:00
平均码率*(播放时间+缓冲时间)≈总下载数据量
码率看单帧看不出来的。单帧图像的总和比视频流码率算出来的结果要高一大截……
misdake
2020-11-28 18:20:30 +08:00
P 帧应该是依赖前一个 I 帧,B 帧依赖前后各一个 I 帧。记录好当前 I 帧和下一个 I 帧的位置,随便给你一帧就能找到这一帧依赖的所有帧了。
不过确实按照 1L 说的,想要知道下载量,只看播放量肯定不行啊,感觉想要真正解决问题还是从下载部分入手比较好。
cest
2020-11-28 18:27:56 +08:00
这是考题吧, 实作从 server 下手简单快速方便, 小学生就行了, 以至於没有 kpi

那计算实际流量还要考虑播放器的 buffer 策略, seek 的消耗, protocol overhead
你用码率算只能得到被看到的部分其解码所需的数据量

需要知道出题者脑子想什麽才能知道答案要实际到那
fredcc
2020-11-28 18:28:08 +08:00
不说封装传输协议算传输流量好吗。
Juszoe
2020-11-28 19:08:24 +08:00
@misdake #3 P 帧仅仅依赖前一个 I 帧吗,会不会需要其他 P 帧呢,我对这个细节不太了解,能否细说一下。我也想从下载部分入手,有什么程序可以模拟这种行为并统计吗?
Juszoe
2020-11-28 19:10:20 +08:00
@aru #1
@mingl0280 #2
需要的精度比较高,最好精确到 KB,只考虑下载的数据量就可以了
Juszoe
2020-11-28 19:10:53 +08:00
@cest #4 老哥想复杂了,就是一个简单的小实验
Juszoe
2020-11-28 19:13:14 +08:00
@fredcc #5 传输协议 emmm...HTTP,DASH 算吗?实际也不用考虑这些啦,只想计算视频封装前的流量
DoctorCat
2020-11-28 21:24:14 +08:00
“这个实验目的是为了衡量视频画面切割算法的开销,仅用于比对。” 你看看,这又是 X-Y Problem
Juszoe
2020-11-28 22:20:52 +08:00
@DoctorCat 啊这,虽然问题容易让人误解,但也不至于是 X-Y problem 吧,这个问题也是这个领域绕不开的实验,原问题暂时不需要解决
futou
2020-11-28 22:46:34 +08:00
你的问题和论文种的不一样。
你问的问题很复杂,牵扯到实际编码过程是采用 closed GOP 还是 open GOP 的问题。计算要找到关键帧( IDR/CRA 等),编码过程遇到关键帧才会清空参考帧序列,也就是从你需要的最后一帧一直向前到最近的关键帧都具有依赖关系,只有全部传输才能正确解码。这个关键帧并不一定是 I 帧,需要去看你编码器的参数设置,如 HM 的相关参数是 DecodingRefreshType(-dr)。另外,#3 的说法有误导性,P 帧 B 帧的相邻帧并不需要是 I 帧,甚至 B 帧并不需要前后两个参考帧,B 帧也不依赖于后一个 I 帧。

但是你附言的问题,那个论文似乎并没有涉及到码流的时域切分问题,看起来像是只编码 ROI 区域,这个直接帧比特累加,不过我只是扫了一眼,供参考...
futou
2020-11-28 22:52:22 +08:00
#嘴瓢了一个地方,关键帧一定是 I 帧,I 帧并不一定是关键帧...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730107

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX