AVPLAYER VIDEO BUFFER FULL ??? (如何重置/清除缓冲器)

AVPLAYER VIDEO BUFFER FULL ??? (如何重置/清除缓冲器)

问题描述:

所以我使用AVPlayerViewController和我在做什么加载视频基本上是这样的:AVPLAYER VIDEO BUFFER FULL ??? (如何重置/清除缓冲器)

我有大量的在我的数据库的影片,我打个电话到数据库检索当前视频播放完成后的下一个视频,我认为这个问题可能与缓冲区已满的问题?在环视互联网后,我无法找到帮助我的答案。

我试图找出如何重置每个视频播放后的缓冲区,或至少知道缓冲区空间不足时,以便我可以显示一个图像或缓冲区加载时的东西,所以然后我可以拨打电话继续显示视频。以下是我的AVPlayerViewController代码。

AVPlayerViewController *playerViewController = [[AVPlayerViewController 
alloc] init]; 

playerViewController.player = [AVPlayer @"www.videoURL.com"]; 

self.avPlayerViewcontroller = playerViewController; 

[playerViewController.view setFrame: userView.bounds]; 

[userView addSubview:playerViewController.view]; 

self.avPlayerViewcontroller.player.volume = 0.0; 
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(volumeChanged:) 
name:@"AVSystemController_SystemVolumeDidChangeNotification" 
object:nil]; 


[playerViewController.player play]; 
[userImageView setHidden:NO]; 

编辑:1)我对视频播放前,播放约15-25影片给了我这样的:

enter image description here

编辑:2)但是,如果我关闭应用程序,然后重新打开它,视频在应用上播放就像没有错。我不确定发生了什么事。

对于任何人遇到这种相同的情况下,对我来说,问题是里面相同的块,我是让我的API调用,我初始化这样的:

AVPlayerViewController *playerViewController = 
[[AVPlayerViewController alloc] init]; 

AVPlayerViewController是(强)引用导致保留块内的循环,所以每次我进行API调用以获取新视频时,我都会初始化一个全新的AVPlayerViewController,而不会释放先前的视频。除此之外,我发现API成功响应中的其他对象也被强烈引用。等我回去做那些弱引用,然后我搬到

AVPlayerViewController *playerViewController = 
[[AVPlayerViewController alloc] init]; 

要将视图做负载的方法,所以它的初始化一次,而每次的新的视频网址来通过。

我花了整整一天的时间来弄清楚发生了什么事情,因为在看到其他有这方面问题的用户之后,我非常关注“BUFFERING”或者用尽缓冲是罪魁祸首,但是却发现这只是不好的实现对象和错位。

祝福未来的程序员。