Ios 如何在iPhone/iPad设备上获取视频流的比特率?

Ios 如何在iPhone/iPad设备上获取视频流的比特率?,ios,objective-c,avfoundation,avplayer,avplayeritem,Ios,Objective C,Avfoundation,Avplayer,Avplayeritem,我有一个iOS应用程序,可以在iPhone/iPad设备上播放视频 现在我需要在iPhone/iPad设备上获取视频流的比特率。 观察到的比特率和指示的比特率对此没有帮助 我也在下面看到了这篇文章,但很少有评论提到它只适用于mpeg4视频。 我正在寻找iPhone/iPad上的视频流的比特率以及任何视频格式 谢谢 您可以监听AVPlayerItemNewAccessLogEntry通知以获取流的当前比特率,例如: observedBitrate-也称为您当前的下载速度 指示的比特率-来自m3

我有一个iOS应用程序,可以在iPhone/iPad设备上播放视频

现在我需要在iPhone/iPad设备上获取视频流的比特率。
观察到的比特率
指示的比特率
对此没有帮助

我也在下面看到了这篇文章,但很少有评论提到它只适用于mpeg4视频。

我正在寻找iPhone/iPad上的视频流的比特率以及任何视频格式


谢谢

您可以监听
AVPlayerItemNewAccessLogEntry
通知以获取流的当前比特率,例如:

  • observedBitrate
    -也称为您当前的下载速度
  • 指示的比特率
    -来自m3u8(带宽),表示播放当前流的最小比特率值
使用
AVPlayer
的自适应视频播放可以根据网络状况将当前流来回更改为具有高或低带宽的流,但这些更改不会出现在每个暂停、网络问题等上,因为您的steam可以缓冲,m3u8没有带宽较低的流可供播放等。因此,如果需要检测当前实时播放状态,请查看暂停、FPS

swift中有示例代码,但如果需要,可以轻松转换为objc:

let url=url(字符串:https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8")!
让playerItem=AVPlayerItem(url:url)
self.player=AVPlayer(playerItem:playerItem)
NotificationCenter.default.addObserver(forName:.AVPlayerItemNewAccessLogEntry,对象:playerItem,队列:nil){
如果let event=playerItem.accessLog()?.events.last{
让比特率=[event.observedBitrate,
event.indicatedBitrate,
event.average视频比特率,
]
打印(“>”,比特率)
}
}
玩家?.play()
let playerLayer=AVPlayerLayer(玩家:玩家)
playerLayer.frame=view.bounds
view.layer.addSublayer(playerLayer)
产出:
> [16375938.865617642, 628000.0, 307568.0]
>[nan,1728000.0,0.0]
> [9830221.39078689, 2528000.0, 1422032.0]

1。正在使用的蒸制协议是什么?请提供一个例子。2.
观察到的比特率
指示的比特率
说明了什么?3.你的代码在哪里?@Raptor-通过http使用ABR。虽然观测到的比特率在2-3 mbps范围内,但指示的比特率也类似。我正在寻找-是否有任何方法可以获得实际的视频流比特率-公式或任何属性。AVPlayerItemAccessLogEvent-甚至对于视频流比特率都没有hv。那么预期的比特率是多少?使用Adobe HTTP Dynamic Streaming或Apple HTTP Live Streaming?有帮助吗?我已经完成了您上面提到的事情,但使用了我自己的一些URL:或者-不会调用通知