Вы можете прослушать уведомление AVPlayerItemNewAccessLogEntry
, чтобы получить текущий битрейт для вашего потока, например:
observedBitrate
— ваша текущая скорость загрузки
indicatedBitrate
- происходит от m3u8 (BANDWIDTH) и означает минимальное значение битрейта для воспроизведения вашего текущего потока.
Адаптивное воспроизведение видео с помощью AVPlayer
может изменить текущий поток на поток с высокой или низкой пропускной способностью туда и обратно в зависимости от условий сети, но эти изменения не появляются при каждых прилавках, проблемах с сетью и т. д., потому что ваш Steam может быть буферизован, m3u8 не имеет поток с более низкой пропускной способностью для воспроизведения и т. д. Поэтому, если вам нужно определить текущее состояние воспроизведения в реальном времени, обратите внимание на зависания, FPS.
В Swift есть пример кода, но его легко преобразовать в objc, если вам нужно:
let url = URL(string: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8")!
let playerItem = AVPlayerItem(url: url)
self.player = AVPlayer(playerItem: playerItem)
NotificationCenter.default.addObserver(forName: .AVPlayerItemNewAccessLogEntry, object: playerItem, queue: nil) { notification in
if let event = playerItem.accessLog()?.events.last {
let bitrates = [event.observedBitrate,
event.indicatedBitrate,
event.averageVideoBitrate,
]
print(">", bitrates)
}
}
player?.play()
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
Outputs:
> [16375938.865617642, 628000.0, 307568.0]
> [nan, 1728000.0, 0.0]
> [9830221.39078689, 2528000.0, 1422032.0]
person
iUrii
schedule
22.03.2021
ObservedBitrate
иIndicatedBitrate
? 3. где ваши коды? - person Raptor   schedule 22.03.2021