AVPlayer 在长时间延迟后开始重现视频
AVPlayer starts to reproduce a video after a long delay
延迟大约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);
}
}
我添加了KVO,点击播放后播放器状态为AVPlayerStatusUnknown。之后,尽管视频正在重现,但它并没有改变。
有人知道吗?
将 AVPlayer 的 automaticallyWaitsToMinimizeStalling 属性 设置为 false 以便立即开始播放。
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
player.automaticallyWaitsToMinimizeStalling = false;
但是如果没有足够的内容可供播放,那么播放器可能会停止。
有关详细信息,请参阅此 Apple 文档。
延迟大约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);
}
}
我添加了KVO,点击播放后播放器状态为AVPlayerStatusUnknown。之后,尽管视频正在重现,但它并没有改变。 有人知道吗?
将 AVPlayer 的 automaticallyWaitsToMinimizeStalling 属性 设置为 false 以便立即开始播放。
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
player.automaticallyWaitsToMinimizeStalling = false;
但是如果没有足够的内容可供播放,那么播放器可能会停止。
有关详细信息,请参阅此 Apple 文档。