Pau*_*nne 4 ios avplayer avqueueplayer
我正在尝试使用AVPlayer播放流媒体视频而没有任何网络延迟.幸运的是,我们的应用程序在播放视频的屏幕之前有一个进度屏幕.我希望在这个进度屏幕上使用一些时间来预加载视频,以便在下一个屏幕上无延迟地播放.
我提出的最有前途的方法是使用AVQueuePlayer播放2个视频,第一个是我在屏幕上播放的视频(所以你看不到它)并且是静音的,所以你不要听到.从我在SO AVQueuePlayer上看到的内容,当第n个视频接近完成时,缓冲第n + 1个视频.
这是我的代码:
NSString *blackVideoPath = [[NSBundle mainBundle] pathForResource:@"black10-counting" ofType:@"MOV"];
AVPlayerItem *blackVideoItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:blackVideoPath]];
AVPlayerItem *realVideoItem = [AVPlayerItem playerItemWithURL:_videoWithEffectsURL];
NSArray *theItems = [NSArray arrayWithObjects:blackVideoItem, realVideoItem, nil];
AVQueuePlayer *theQueuePlayer = [AVQueuePlayer queuePlayerWithItems:theItems];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[theItems firstObject]];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:theQueuePlayer];
playerLayer.frame = self.view.bounds;
[self.view.layer addSublayer:playerLayer];
[theQueuePlayer play];
Run Code Online (Sandbox Code Playgroud)
这确实播放了我的第一个视频(用于调试我有一个带有计数音轨的视频)但是当到达结尾并前进到下一个屏幕(在playerItemDidReachEnd中)时,我的真实视频不能立即播放.
为了确保我的URL正确,我在列表中颠倒了blackVideoItem和realVideoItem,我确实听到了我的"真实"视频的音轨.
我搜索了很多,似乎没有办法播放流媒体视频没有延迟.我爱是错的.
jlw*_*jlw 15
您可以在没有AVQueuePlayer的情况下执行此操作.
根据网络连接的不同,您可能无法在整个过程中体验流畅的播放,但是如果播放器正在缓冲,则监控播放器项目应该会显示一些UI.