Pau*_*l F 5 avfoundation http-live-streaming ios tvos
给定具有多个变体/再现的 HLS 清单:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1612430,CODECS="avc1.4d0020,mp4a.40.5",RESOLUTION=640x360
a.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3541136,CODECS="avc1.4d0020,mp4a.40.5",RESOLUTION=960x540
b.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5086455,CODECS="avc1.640029,mp4a.40.5",RESOLUTION=1280x720
c.m3u8
Run Code Online (Sandbox Code Playgroud)
是否可以从 AVAsset 或 AVPlayerItem 获取三个变体的数组(具有带宽和分辨率等属性)?
我可以通过在 AVPlayerItem 上使用 KVO 来获取当前正在播放的 AVPlayerItemTrack,但同样,它只是正在主动播放的曲目,而不是完整的变体列表。
我有兴趣了解资产是否以尽可能高的质量播放,以便我可以决定用户是否有足够的带宽来启动同步辅助视频流。
小智 1
要了解您当前正在播放的版本,您可以在 AVPlayerItemNewAccessLogEntryNotification 上保留 KVO,并通过查看访问日志中的 AVPlayerItemAcessLogEvent,您可以了解当前比特率以及比特率的任何变化。
AVPlayerItemAccessLog *accessLog = [((AVPlayerItem *)notif.object) accessLog];
AVPlayerItemAccessLogEvent *lastEvent = accessLog.events.lastObject;
if( lastEvent.indicatedBitrate != self.previousBitrate )
{
self.bitrate = lastEvent.indicatedBitrate
}
Run Code Online (Sandbox Code Playgroud)
只要了解可用比特率的完整列表,您只需对主 m3u8 播放列表发出 GET 请求并解析它即可。您只需要执行一次,因此不会有太多开销。
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |