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

标签 ios ios8 xcode6 avplayer avqueueplayer

我正在使用 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/

相关文章:

html - ios中的图像高度错误

javascript - Bootstrap 3 Modal,里面有文本区域。当点击/聚焦文本区域时,背景会滚动到顶部。仅限 iOS 8

xcode - 无法在 Xcode 6.1 中看到构建阶段和常规设置

ios - 忽略 Xcode 6 中的特定警告

uiimagepickercontroller - 带有 UIImagePickerController 图像裁剪的 iOS 8 错误

xcode - 对象库 Xcode 6 中没有项目

xcode - 静态库未在 Link Binary 中与 Cocoapods 链接

ios - 使用 populateCellWithBlock FirebaseUI 时出错

html - Phonegap,iOS 上的屏幕键盘正在转移我的内容

ios - 在带有触摸指示器且没有光标的设备或模拟器上录制 iOS 应用程序的视频