2017-09-29 5 views
0

私はAVPlayerViewControllerを使用していますが、ビデオをロードするために私がやっていることは基本的に次のとおりです:AVPLAYER VIDEO BUFFER FULL ??? (バッファをリセット/空にする方法)

私のデータベースには多数のビデオがあります。現在のビデオ再生が終了した後、次のビデオを取得するためにdbに、私はバッファがいっぱいである必要があるかもしれないと思う問題?スタック&をインターネットで見回した後、私は私を助けた答えを見つけることができませんでした。

私は各ビデオが再生された後にバッファをリセットする方法を見つけようとしています。バッファが空いていることを少なくとも知っているので、バッファがロードされている間に画像などを表示できますビデオの表示を継続するために電話をかけることができます。以下は私の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)しかし、私はアプリを閉じていればそれを再度開いて、ビデオは、間違ったnothingsのようなアプリで再生されます。私は本当に何が起こっているのか分かりません。

答えて

0

この同じシナリオに遭遇した人にとって、私にとっての問題は、私は私のAPI呼び出し、私はこれを初期化して作っていた同じブロックの中にあったが:

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

AVPlayerViewControllerが原因(STRONG)を参照しましたブロック内にサイクルを保持するので、新しいビデオを取得するAPI呼び出しを行うたびに、前のリリースを行わずに全く新しいAVPlayerViewControllerを初期化しました。それと並行して、APIの成功応答内の他のオブジェクトも強力に参照されていることがわかりました。だから私はそれらの弱い参照作られ、その後、私はビューに

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

を移動し、新しい動画URLが伝わってくるONCEの代わりに、毎回初期化されていますので、負荷の方法を行った戻りました。

これに問題のある他のユーザーを見た後、私は「バッファリング」に集中していたか、バッファリングが不足していたことが原因でしたが、それはオブジェクトや誤った配置の悪い実装でした。

今後のプログラマーにとっては幸運です。

関連する問題