我目前正在使用MPMoviePlayerController
,正在分析视频播放的指标。具体来说,分析自适应比特率。
作为测试的一部分,我以固定的比特率(995kbps
)加载了特定的视频副本,但是从observedBitrate
的MPMovieAccessLogEvent
属性读取时,该值被夸大了-约为15mbps
。
是否有任何已知的原因导致返回的比特率比播放的比特率高得多?我仔细检查了所有值和所有回放,并且肯定是被夸大的observedBitrate
。
根据文档,此值为:
电影下载的所有媒体上的经验吞吐量
播放器,以每秒位数为单位。
更新
我在开发者论坛上发布了这个问题,并得到了答案,这仍然只是一个推测,但认为它仍然可以帮助解决这个问题,并且可能会带来更好的答案。
https://devforums.apple.com/thread/216659?tstart=0
值得用mediastreamvalidator检查您的HLS视频
它将下载并测量您的细分比特率。
最佳答案
有一个简单的答案-indicatedBitrate
的MPMovieAccessLogEvent
(或AVPlayerItemAccessLogEvent
的AVPlayer
)是当前播放列表中的比特率,因此播放流所需的平均比特率也是如此。
但是,observedBitrate
并非平均-它是播放器在下载特定视频块时达到的瞬时比特率(或下载速度)。
示例:以1000 Kb / s的流播放播放列表,每个10秒。该设备可通过WiFi实现超过10MB / s的下载速度,因此下载每个块所需的时间不到1秒。因此,播放器在每个块中的下载速度都超过10,000 Kb / s。
我希望玩家返回(大约)这些值:indicatedBitrate
:1000 Kb / sobservedBitrate
:10,000 Kb / s
我自己被这些巨大的价值迷住了,但是我认为这可以解释这一点。
这只是为了说明-这些值不是很有意义,因为我们并不真正知道下载一个块需要多长时间,或者每个块实际上有多大。 observedBitrate
真正告诉您的是,播放器正在设法跟上播放流所需的比特率。如果前者比后者大10倍,则它仅使用10%的可用时间来下载每个块。该比率可用作服务质量指标。
例如,如果observedBitrate
小于indicatedBitrate
,则播放器很可能会由于缓冲而停顿,但只要更大,则一切都会好转,并且流可能会流畅播放。