这个问题可能是由于AVPlayer内部使用的自适应流媒体算法导致的。但我们可以通过手动限制最高码率来解决这个问题。
代码示例:
//创建播放器 AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://example.com/video.mp4"]];
//设置最大码率(以比特为单位) CGFloat maxBitrate = 2000000; // 2 Mbps [player.currentItem.preferredPeakBitRate = maxBitrate;
//开始播放 [player play];
//检查 observedBitrate 值 NSLog(@"observed bitrate: %f", player.currentItem.observedBitrate);
这样,即使内部自适应算法在某个时刻调高了码率,也不会超过你手动设置的最大码率,解决了实际码率超过观察到的码率的问题。