我目前正在使用MPMoviePlayerController,正在分析视频播放的指标。具体来说,分析自适应比特率。
作为测试的一部分,我以固定的比特率(995kbps)加载了特定的视频副本,但是从observedBitrateMPMovieAccessLogEvent属性读取时,该值被夸大了-约为15mbps
是否有任何已知的原因导致返回的比特率比播放的比特率高得多?我仔细检查了所有值和所有回放,并且肯定是被夸大的observedBitrate
根据文档,此值为:

电影下载的所有媒体上的经验吞吐量
播放器,以每秒位数为单位。

更新
我在开发者论坛上发布了这个问题,并得到了答案,这仍然只是一个推测,但认为它仍然可以帮助解决这个问题,并且可能会带来更好的答案。

https://devforums.apple.com/thread/216659?tstart=0
值得用mediastreamvalidator检查您的HLS视频
它将下载并测量您的细分比特率。

最佳答案

有一个简单的答案-indicatedBitrateMPMovieAccessLogEvent(或AVPlayerItemAccessLogEventAVPlayer)是当前播放列表中的比特率,因此播放流所需的平均比特率也是如此。

但是,observedBitrate并非平均-它是播放器在下载特定视频块时达到的瞬时比特率(或下载速度)。

示例:以1000 Kb / s的流播放播放列表,每个10秒。该设备可通过WiFi实现超过10MB / s的下载速度,因此下载每个块所需的时间不到1秒。因此,播放器在每个块中的下载速度都超过10,000 Kb / s。
我希望玩家返回(大约)这些值:
indicatedBitrate:1000 Kb / s
observedBitrate:10,000 Kb / s

我自己被这些巨大的价值迷住了,但是我认为这可以解释这一点。

这只是为了说明-这些值不是很有意义,因为我们并不真正知道下载一个块需要多长时间,或者每个块实际上有多大。 observedBitrate真正告诉您的是,播放器正在设法跟上播放流​​所需的比特率。如果前者比后者大10倍,则它仅使用10%的可用时间来下载每个块。该比率可用作服务质量指标。
例如,如果observedBitrate小于indicatedBitrate,则播放器很可能会由于缓冲而停顿,但只要更大,则一切都会好转,并且流可能会流畅播放。

10-08 04:52