AVPlayer的默认缓冲区大小是多少?

7
iOS AVPlayer的默认最大和最小缓冲区大小是多少?如何增加其mp3流媒体的缓冲区大小?谢谢。

1
你找到答案了吗?我也在寻找,但是到目前为止我还没有找到任何解决方案。如果你找到了任何答案,请在这里发布。 - Javeed
1个回答

2
如果您提到的“缓冲区大小”是指播放缓冲区,那么我相信这个大小未经记录。这种行为由 AVFoundation 提供,引用自 Advances in AVFoundation Playback
引用如下: “我们发现播放开始后很快就进入了停顿状态,因为我们没有足够的缓冲来播放到最后。 在这种情况下,我们将进入等待状态并重新缓冲,直到我们有足够的缓冲来播放。”
他们只提到了“足够”,并没有具体的时间或大小,这似乎是根据当前网络情况动态测量的单位,但谁知道呢。
回到主题,如果您想控制缓冲,可以观察 AVPlayerItem 的 loadedTimeRanges 属性。
以下代码片段设置了5秒的缓冲时间:
if ([keyPath isEqualToString:@"loadedTimeRanges"]) {
    
    NSArray *timeRanges = (NSArray *)[change objectForKey:NSKeyValueChangeNewKey];
    if (timeRanges && [timeRanges count]) {
        CMTimeRange timerange = [[timeRanges objectAtIndex:0] CMTimeRangeValue];
        
        if (self.audioPlayer.rate == 0 && !pauseReasonForced) {
            CMTime bufferdTime = CMTimeAdd(timerange.start, timerange.duration);
            CMTime milestone = CMTimeAdd(self.audioPlayer.currentTime, CMTimeMakeWithSeconds(5.0f, timerange.duration.timescale));
            
            if (CMTIME_COMPARE_INLINE(bufferdTime , >, milestone) && self.audioPlayer.currentItem.status == AVPlayerItemStatusReadyToPlay && !interruptedWhilePlaying && !routeChangedWhilePlaying) {
                if (![self isPlaying]) {
                    
                    [self.audioPlayer play];
                }
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接