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

Vic*_*ova 6 buffer avplayer

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

sai*_*day 2

如果您的缓冲区大小意味着播放缓冲区,那么我相信这个大小没有记录。

此行为由 AVFoundation 提供,引用于Advances in AVFoundation Playback

我们看到播放开始,但很快就陷入停顿,因为我们没有足够的缓冲区来播放到最后。

在这种情况下,我们将进入等待状态并重新缓冲,直到有足够的内容可以玩为止。

他们只是提到了足够多的内容,而不是确切的时间或大小,根据当前网络情况,这是一个动态测量单位,但谁知道呢。

回到主题,如果您想控制缓冲。您可以观察AVPlayerItemloadedTimeRanges属性。

下面的代码片段有 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];
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)