从m3u流获取流的带宽

时间:2016-04-18 08:39:11

标签: ios avplayer

我正在使用带有HLS网址的AVURAsset。回复如下

    QualityLevels(1020000)/Manifest(video,format=m3u8-aapl)
    #EXT-X-I-FRAME-STREAM-   INF:BANDWIDTH=1189576,RESOLUTION=668x376,CODECS="avc1.4d401f",URI="QualityLevels(1020000)/Manifest(video,format=m3u8-aapl,type=keyframes)"
    #EXT-X-STREAM-INF:BANDWIDTH=1810952,RESOLUTION=924x520,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="audio"


   QualityLevels(1628000)/Manifest(video,format=m3u8-aapl)
   #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1810952,RESOLUTION=924x520,CODECS="avc1.4d401f",URI="QualityLevels(1628000)/Manifest(video,format=m3u8-aapl,type=keyframes)"
   #EXT-X-STREAM-INF:BANDWIDTH=2803314,RESOLUTION=1280x720,CODECS="avc1.640029,mp4a.40.2",AUDIO="audio"

我可以使用AVFoundation类获取此播放列表文件中的元数据,例如带宽,分辨率吗?

1 个答案:

答案 0 :(得分:3)

您可以将视频的分辨率视为跟随AVURLAsset getting video size

的自然尺寸

关于带宽,它可能是视频的比特率。您可以尝试此实现

- (int)getBandwidth:(AVPlayer *)moviePlayer {
    VPlayerItemAccessLog *log = [moviePlayer.currentItem accessLog];
    NSArray *events = [log events];
    AVPlayerItemAccessLogEvent *event = [events lastObject];
    return ((int) ceilf(event.indicatedBitrate / 1000.0));
}

我希望这会有所帮助。