2017-09-29 2 views
0

Also ich bin mit AVPlayerViewController und was ich tue das Video zu laden, ist im Grunde diese:AVPLAYER VIDEOPUFFER VOLL ??? (Wie Zurücksetzen/Leer Der Buffer)

ich eine große Anzahl von Videos in meiner Datenbank habe, mache ich einen Anruf an die db, um das nächste Video nach dem Abspielen des aktuellen Videos abzurufen, das Problem, das ich denke, könnte damit zu tun haben, dass der Puffer voll ist? Nachdem ich mich auf dem Stapel & im Internet umsah, konnte ich keine Antwort finden, die mir half.

Ich versuche herauszufinden, wie kann ich den Puffer nach jedem Video zurückgesetzt werden, oder zumindest wissen, wenn der Puffer nicht genügend Platz, so dass ich ein Bild oder etwas anzeigen kann, während der Puffer lädt, also dann ich kann einen Anruf tätigen, um Videos weiterhin anzuzeigen. Unten ist mein Code für den 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]; 

Edit: 1) Ich bin über etwa 15-25 Videos vor dem Videospiel zu spielen gibt mir diese:

enter image description here

Edit: 2) Aber wenn ich die App schließen und dann öffne es wieder, die videos spielen auf der app wie nichts falsch ist. Ich bin mir nicht wirklich sicher, was los ist.

Antwort

0

Für alle, die das gleiche Szenario treffen, war das Thema für mich innerhalb des gleichen Blockes, dass ich meinen API Anruf ich dies initialisiert:

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

AVPlayerViewController wurde (STRONG) Referenz einer Verursachung behalte den Zyklus innerhalb des Blocks, also habe ich jedes Mal, wenn ich einen API-Aufruf gemacht habe, um ein neues Video aufzunehmen, einen ganz neuen AVPlayerViewController in Betrieb genommen, ohne den vorherigen freizugeben. Außerdem habe ich festgestellt, dass andere Objekte innerhalb der API-Erfolgsantwort ebenfalls stark referenziert wurden. Also ging ich zurück gemacht diejenigen, die eine schwache Referenz und dann zog ich

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

Zur Ansicht Load-Methode hat, so ist es ONCE statt jedes Mal initialisiert ein neues Video URL kommt durch.

Ich brauchte den ganzen Tag, um herauszufinden, was los war, denn nachdem ich andere Benutzer mit Problemen gesehen hatte, war ich so konzentriert auf "BUFFERING" oder das Puffern war der Schuldige, aber kommt um es herauszufinden es war nur eine schlechte Implementierung von Objekten und Fehlplazierungen.

Viel Glück für zukünftige Programmierer.