如果您的缓冲区大小意味着播放缓冲区,那么我相信这个大小没有记录。
此行为由 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];
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |