关于视频预加载的主题有很多,但对我来说仍然不太清楚。
目标:
理想情况下,计算下载速度,预测缓冲 60% 视频时的 fe,我们开始播放,40% 将在播放时缓冲,无延迟。
我尝试过的:
NSURL *url = [NSURL URLWithString:@"video url address here"];
AVURLAsset *avasset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVPlayerItem *item = [[AVPlayerItem alloc] initWithAsset:avasset];
self.player = [[AVPlayer alloc] initWithPlayerItem:item];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
CGSize size = self.view.bounds.size;
float x = size.width/2.0-202.0;
float y = size.height/2.0 - 100;
self.playerLayer.frame = CGRectMake(x, y, 404, 200);
self.playerLayer.backgroundColor = [UIColor blackColor].CGColor;
[self.view.layer addSublayer:self.playerLayer];
NSString *tracksKey = @"tracks";
[avasset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
^{
dispatch_async(dispatch_get_main_queue(),
^{
NSError *error = nil;
AVKeyValueStatus status = [avasset statusOfValueForKey:tracksKey error:&error];
NSLog(@"Status %d", status);
if (status == AVKeyValueStatusLoaded) {
[self.player play];
}
else {
NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);
}
});
}];
}
Run Code Online (Sandbox Code Playgroud)
视频开始播放,在连接速度较慢时会挂起,但如果我们开始播放,假设 1 分钟后,它会播放得很好。
主要问题 - 是否能够在比赛开始时收到通知,并在不延迟的情况下一直比赛到结束?
注意:是否是一个并不重要AVFoundation or MPMovieController
我假设这只能通过单独下载视频,将其存储在本地然后播放来完成。不利的方面是 - 在下载整个文件之前我们无法开始播放。
| 归档时间: |
|
| 查看次数: |
9523 次 |
| 最近记录: |