我将 AVQueuePlayer(AVPlayer) 用于视频流(http 协议,MP4 格式)。我的代码是(参考 AV Foundation Programming Guide)
AVURLAsset *asset = [AVAsset assetWithURL:movieUrl];
NSArray *keys = [NSArray arrayWithObject:@"playable"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {
dispatch_async(dispatch_get_main_queue(), ^{
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:@"playable" error:&error];
switch (status) {
case AVKeyValueStatusLoaded: {
self.movieItem = [AVPlayerItem playerItemWithAsset:asset];
[self.player insertItem:self.movieItem afterItem:nil];
}
case AVKeyValueStatusFailed: {
break;
}
case AVKeyValueStatusCancelled: {
break;
}
default:
break;
}
});
}];
并观察 AVPlayer.status 像这样玩
switch (status) {
case AVPlayerItemStatusUnknown:
break;
case AVPlayerItemStatusReadyToPlay:
NSLog(@"READY TO PLAY");
[myPlayer play];
break;
case AVPlayerItemStatusFailed:
break;
default:
break;
}
这些代码运行良好。但是当我通过监控工具(如fiddler)监控网络流量和请求的使用时,我发现了一些重复请求电影url和加载数据的问题。
我尝试停止加载电影数据(将播放器设置为 nil 或播放器 removeAllItems)但它不起作用。
我想知道我使用了正确的方式来加载电影数据,我应该怎么做才能停止加载。