AVPlayerItem 一次只能占据玩家队列中的一个位置

Posted

技术标签:

【中文标题】AVPlayerItem 一次只能占据玩家队列中的一个位置【英文标题】:An AVPlayerItem can occupy only one position in a player's queue at a time 【发布时间】:2011-07-07 04:19:50 【问题描述】:

尝试从我的临时目录播放视频时出现此错误:

NSString *tmpDir = [NSTemporaryDirectory() stringByAppendingString:@"/"];
NSString *url = [tmpDir stringByAppendingString:videoToPlay];

MPMoviePlayerController *player =
[[MPMoviePlayerController alloc]
 initWithContentURL:[NSURL fileURLWithPath:url]];

为什么我会收到此错误“一个 。”

代码不正确吗?我错过了一些简单的东西吗?

【问题讨论】:

您在 ios5 beta 2 上遇到过这种情况吗?您应该查看 Apple 开发者论坛,因为我在 devforums.apple.com/message/467199 处按照 Peter Harley 的建议解决了同样的问题。希望对您有所帮助。 是的,我是。这解决了这个问题。你就是男人! 【参考方案1】:

我尝试了苹果开发者论坛中提供的各种解决方案。在我的情况下,只是将源类型从流式更改为未知:

// player.movi​​eSourceType = MPMovieSourceTypeStreaming;

  player.movieSourceType = MPMovieSourceTypeUnknown;

【讨论】:

【参考方案2】:

使用以下语句来避免此类错误。请记住,您使用的 sdk 在 NDA 下。

[self.mPlayer.movi​​ePlayer setControlStyle:MPMovieControlStyleDefault];

【讨论】:

【参考方案3】:

尝试检查控件样式和源类型。 我收到此错误,并且当将源类型更改为未知时(自动检测,也许)它是正确的。

【讨论】:

【参考方案4】:

我得到这个是因为我的movieSourceType 参数无效,我认为您应该在其中放置一个MPMovieMediaTypeMask(视频/音频等),但您应该放置一个MPMovieSourceType。修复它使它对我有用

【讨论】:

【参考方案5】:

当我尝试在我的 AVQueuePlayer 上使用 replaceCurrentItem 时发生这种情况。

Apple 声明您不应将此方法与 AVQueuePlayer 一起使用:https://developer.apple.com/documentation/avfoundation/avplayer/1390806-replacecurrentitemwithplayeritem

相反,我使用 AVPlayerItem 的 nil 值测试 removeAllItems()insert(AVPlayerItem, after: AVPlayerItem?)

iOS12 Swift 5.

【讨论】:

以上是关于AVPlayerItem 一次只能占据玩家队列中的一个位置的主要内容,如果未能解决你的问题,请参考以下文章

查找与 AVPlayerItem 关联的 AVPlayer

更换 AVPlayerItem 几秒钟后视频变黑

如何用本地目录中的 AVPlayerItem 类型的元素填充数组

带有 tvOS 构建目标的 Objective C 中的 AVPlayerItem.externalMetaData

为啥 AVPlayerItem 不触发它的通知?

iOS:收到“304 Not Modified”响应时 AVPlayerItem 中的错误