2017-09-29 67 views
0

所以我使用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)但是,如果我關閉應用程序,然後重新打開它,視頻在應用上播放就像沒有錯。我不確定發生了什麼事。

回答

0

對於任何人遇到這種相同的情況下,對我來說,問題是裏面相同的塊,我是讓我的API調用,我初始化這樣的:

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

AVPlayerViewController是(強)引用導致保留塊內的循環,所以每次我進行API調用以獲取新視頻時,我都會初始化一個全新的AVPlayerViewController,而不會釋放先前的視頻。除此之外,我發現API成功響應中的其他對象也被強烈引用。等我回去做那些弱引用,然後我搬到

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

要將視圖做負載的方法,所以它的初始化一次,而每次的新的視頻網址來通過。

我花了整整一天的時間來弄清楚發生了什麼事情,因爲在看到其他有這方面問題的用戶之後,我非常關注「BUFFERING」或者用盡緩衝是罪魁禍首,但是卻發現這只是不好的實現對象和錯位。

祝福未來的程序員。