まず、AVPlayer
白い画面は表示されません。背景は白です。だから、基本的にあなたAVPlayer
は遅く始めています。UIButton
a を押すと、ファイルが読み込まれAVPlayer
、すぐに再生が開始されると思います。そこが問題です。AVPlayer
が十分なデータをバッファリングし、ファイルを再生できるようになるまで、しばらく時間がかかる場合があります。KVO を使用すると、プレイヤーのステータスの変化を通知することができます。
したがって、最初に再生ボタンを無効にし、ロードしAVPlayer
てオブザーバーを追加する必要があります。
play.enabled = NO;
player = [AVPlayer playerWithURL:URL];
[player addObserver:self forKeyPath:@"status" options:0 context:nil];
次に、チェックした後に有効にしますAVPlayerStatusReadyToPlay
:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (object == player && [keyPath isEqualToString:@"status"]) {
if (player.status == AVPlayerStatusReadyToPlay) {
play.enabled = YES;
}
}
}