如何找到AVPlayer当前比特率

kar*_*hik 3 bitrate avplayer ios7 avplayeritem

我正在尝试获取AVPlayer播放视频流的比特率。我尝试使用的observed bit rate属性AVPlayerItemAccessLogEvent,但它提供了很高Observed-bit-rate的价值download rate of a segment。进一步研究属性后,我了解到该属性显示的值。我需要知道播放器播放流的比特率。

下图显示了LIVE流的“观察到的比特率”与“指示的比特率”。 在此处输入图片说明

请就这个问题提出您的建议。

我尝试了以下链接,但没有运气:

/sf/answers/1039219821/

MPMoviePlayerController MovieAccessLogEvent-膨胀的observedBitrate

Anu*_*rag 8

您是正确的observedBitrate。这表明下载速度。

indicatedBitrate告诉您播放当前流所需的广告比特率。我相信价值来自HLS主清单。当播放没有多个比特率变体的流,并且只有一个比特率变体可用时,的值indicatedBitrate将为-1

如果您一直在处理具有主清单的流,那么这indicatedBitrate是最佳选择。

如果要处理没有主清单的流,则估算比特率的一种方法是获取最后一个AVPlayerItemAccessLogEvent条目,然后使用以下方法进行计算:

numberOfBitsTransferred = (numberOfBytesTransferred * 8)
numberOfBitsTransferred / segmentsDownloadedDuration
Run Code Online (Sandbox Code Playgroud)

从经验上讲,每次播放器切换比特率时,它将发布一个新的访问日志条目。最新的访问日志条目将包含有关最近选择的流的数据。

  • 正如Anurag所说的,所指示的比特率只是当前正在播放的m3u8变体播放列表中的“ BANDWIDTH”参数。根据您的HLS服务器,其中可能有任何值。如果没有主播放列表,则此值设置为-1,表示播放列表“不表示比特率”。对于运行良好的HLS服务器,使用变体播放列表,此值应该相当准确,但要获取当前的网络比特率,请使用Anurag的公式:bitrate(以位/秒为单位)=(logEvent.numberOfBytesTransferred * 8)/ logEvent.segmentsDownloadedDuration (2认同)