MPMoviePlayerController MovieAccessLogEvent – 膨胀的obserBitrate

我目前正在使用MPMoviePlayerController并分析video播放的指标。 具体来说,分析自适应比特率。

作为testing的一部分,我以一个固定的比特率( 995kbps )加载video的一个特定格式,然而当从我的MPMovieAccessLogEventobservedBitrate属性中MPMovieAccessLogEvent ,这个值要大得多 – 大概是15mbps

是否有任何已知的理由,为什么这个比特率返回比回放的相当高? 我已经双重检查了所有的值,所有的回放,这是肯定的被夸大的observedBitrate到的比特率。

根据文件,这个值是:

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

更新

我在开发者论坛上发布了这个问题,并且收到了一个答案,这个答案依然只是猜想,不过也认为它可以帮助解决这个问题,也许会引发一个更好的答案。

https://devforums.apple.com/thread/216659?tstart=0

使用mediastreamvalidator来检查你的HLSvideo是非常值得的,它将会下载和测量你的分段比特率。

有一个简单的答案 – MPMovieAccessLogEventindicatedBitrate MPMovieAccessLogEvent (或AVPlayerItemAccessLogEventAVPlayer )是来自当前播放列表的比特率,因此是播放该stream所需的平均比特率。

然而, observedBitrate的比特率并不是平均值,而是下载特定video块时播放器实现的即时比特率(或下载速度)。

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

indicatedBitrate :1000 Kb / s

observedBitrate :10,000Kb / s

我自己被这些巨大的价值所困惑,但是我认为这可以解释它。

这仅仅是为了说明 – 这些值并不是很有意义,因为我们不知道下载块需要多长时间,或者每个块有多大。 所有observedBitrate的比特率都告诉你,玩家如何保持播放stream所需的比特率。 如果前者比后者大10倍,那么仅使用10%的可用时间下载每个块。 这个比率可以用作服务质量指标。 例如,如果observedBitrate率小于indicatedBitrate比特率,那么很可能由于缓冲而使玩家停顿,但只要比较大,那么一切都很好,并且该stream可能顺畅地播放。