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影片给了我这样的:
编辑:2)但是,如果我关闭应用程序,然后重新打开它,视频在应用上播放就像没有错。我不确定发生了什么事。
答
对于任何人遇到这种相同的情况下,对我来说,问题是里面相同的块,我是让我的API调用,我初始化这样的:
AVPlayerViewController *playerViewController =
[[AVPlayerViewController alloc] init];
AVPlayerViewController是(强)引用导致保留块内的循环,所以每次我进行API调用以获取新视频时,我都会初始化一个全新的AVPlayerViewController,而不会释放先前的视频。除此之外,我发现API成功响应中的其他对象也被强烈引用。等我回去做那些弱引用,然后我搬到
AVPlayerViewController *playerViewController =
[[AVPlayerViewController alloc] init];
要将视图做负载的方法,所以它的初始化一次,而每次的新的视频网址来通过。
我花了整整一天的时间来弄清楚发生了什么事情,因为在看到其他有这方面问题的用户之后,我非常关注“BUFFERING”或者用尽缓冲是罪魁祸首,但是却发现这只是不好的实现对象和错位。
祝福未来的程序员。