长时间延迟后,AVPlayer开始再现视频

Eug*_*ich 0 objective-c ios avplayer ios10

延迟约为10秒。我的代码段。这是HomeController的* .m文件:

@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);
        }
}
Run Code Online (Sandbox Code Playgroud)

我添加了KVO并得到的结果是,单击播放后播放器状态为AVPlayerStatusUnknown。此后,尽管正在再现视频,但它没有改变。有谁有想法吗?

Gan*_*ule 5

将AVPlayer的automaticWaitsToMinimizeStalling属性设置为false以便立即开始播放。

AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
player.automaticallyWaitsToMinimizeStalling = false;
Run Code Online (Sandbox Code Playgroud)

但是,如果没有足够的内容来播放,则播放器可能会停顿。

有关更多详细信息,请参阅此Apple文档。

影音播放器