gpt4 book ai didi

ios - AVQueuePlayer 不前进到 iOS 8 中的下一个项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:59 25 4
gpt4 key购买 nike

我正在使用 AVQueuePlayer 播放一些视频,在 iOS 6 和 7 中一切正常。但是,在 iOS 8 中,当当前 AVPlayerItem 完成播放时,下一个视频不会播放。将观察者放置在队列的 currentItem 属性上显示队列将下一个视频设置为预期的当前项目,它只是不播放(即使有明确的播放调用)。

是否有人了解可能发生的情况以及如何解决?还有其他人遇到过这个问题吗?

最佳答案

我遇到了完全相同的问题,我在这上面浪费了十个小时...
但现在通过将“insertItem”方法添加到主线程中修复了它。

所以我有我的播放器作为属性:

@property AVQueuePlayer * player;

我只是像这样初始化它:

_player = [[AVQueuePlayer alloc] init];

这是我从路径添加项目的方法:

- (void)addInQueuePlayerFile:(NSString *)path {
AVAsset * asset = [AVAsset assetWithURL:[[NSURL alloc] initFileURLWithPath:path]];
AVPlayerItem * playerItem = [AVPlayerItem playerItemWithAsset:asset];

dispatch_async(dispatch_get_main_queue(), ^{
[_player insertItem:playerItem afterItem:nil];
});
}

所以它有效,但我真的不明白为什么......所以如果有人有答案......

但如果这对您不起作用,请尝试向您的播放器(和/或您的 playerItem)添加一个观察器。你可以像这样添加一个观察者:

[_player addObserver:self forKeyPath:@"status" options:0 context:nil]

然后用这个方法捕获它:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == _player && [keyPath isEqualToString:@"status"]) {
if (_player.status == AVPlayerStatusFailed) {
NSLog(@"AVPlayer Failed");
} else if (_player.status == AVPlayerStatusReadyToPlay) {
NSLog(@"AVPlayer item Ready to Play");
} else if (_player.status == AVPlayerStatusUnknown) {
NSLog(@"AVPlayer item Unknown");
}
}
}

如果这对您有用,请告诉我。

关于ios - AVQueuePlayer 不前进到 iOS 8 中的下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com