2016-09-26 24 views
0

遅延は約10秒です。 私のコードスニペット。私はKVOを追加した後、クリックプレイプレイヤーのステータスがAVPlayerStatusUnknownされる結果だAVPlayerは、長い遅延の後にビデオの再生を開始します。

@interface HomeController() 
@property(nonatomic, strong) AVPlayerViewController *playerViewController; 
@implementation HomeController 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    ... 
    self.playerViewController = [[AVPlayerViewController alloc] init]; 
} 
- (IBAction)watchDemoToggle:(id)sender { 
    NSURL *url = [NSURL URLWithString:@"http://blahblahblah.com/demo.mp4"]; 
     AVURLAsset *asset = [AVURLAsset assetWithURL: url]; 
     AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; 
    if(playerItem) 
    { 
     AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem]; 
     self.playerViewController.player = player; 
     [self.playerViewController.player addObserver:self forKeyPath:@"status" options:0 context:nil]; 
     [self.playerViewController setShowsPlaybackControls:NO]; 
     [self presentViewController:self.playerViewController animated:YES completion:^{ 
      [self.playerViewController.player play]; 
      self.playerViewController.showsPlaybackControls = YES; 
     }]; 
    } 
} 

#pragma mark - KVO 
- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context { 
     if ([keyPath isEqualToString:@"status"]) { 
      AVPlayerStatus status = [change[NSKeyValueChangeNewKey] integerValue]; 
      NSLog(@"status = %ld", (long)status); 
     } 
} 

:それはにHomeControllerの* .mファイルです。その後、ビデオが再生されているにもかかわらず、それは変化していません。 誰にも分かりますか?

答えて

3

AVPlayerのプロパティを自動的にfalseに設定すると、すぐに再生が開始されます。

AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem]; 
player.automaticallyWaitsToMinimizeStalling = false; 

しかし、十分なコンテンツが再生できない場合、プレーヤーはストールする可能性があります。

詳細については、このAppleのマニュアルを参照してください。

avplayer

+0

ありがとうございます!私はなぜ自分自身を見つけられなかったのか理解できません。しかし、これについてどう思いますか:KVOを追加し、クリックプレイプレイヤーステータスがAVPlayerStatusUnknownであるという結果を得ました。その後、ビデオが再生されているにもかかわらず、それは変化していません。誰にも分かりますか? –

+0

AVPlayerStatusUnknownは、再生のための新しいメディアリソースを読み込もうとしていないため、プレイヤーのステータスが未知であることを示します。ローカルURLで確認できますか?問題がある場合 –

+0

このプロパティはiOS 10以上でのみ使用できます.iOS 9をサポートする他のソリューションもあります – sanman

関連する問題