【问题标题】:AVPlayer "Cannot Complete Action"AVPlayer“无法完成动作”
【发布时间】:2015-01-09 12:00:15
【问题描述】:

播放多个视频后出现此错误:

Error Domain=AVFoundationErrorDomain Code=-11819 "Cannot Complete Action" UserInfo=0x1d83a7f0 {NSLocalizedRecoverySuggestion=Try again later., NSLocalizedDescription=Cannot Complete Action}

我的播放功能是这样的:

- (void)playItem:(AVPlayerItem*)item
  playerView:(PlayerView*)playerView
     doReset:(BOOL)reset
{
// if it's different item or we want to reset then replace item and rewind player to zero
if([player currentItem] != item || reset)
{
    [player pause];
    [player replaceCurrentItemWithPlayerItem:item];
    [player seekToTime:kCMTimeZero];
}

// set the view's player
[playerView setPlayer:player];

[player play];

播放器在尝试了几百次后才停止工作。 我有 5 个 PlayerView,它们是 5 个在触摸时会播放的视频。为了达到我得到这个错误的地步(仅通过查看 AVPlayer 实例错误属性),我必须多次触摸这些按钮(就像之前提到的那样,它从几百到几千次)。 我已经尝试了各种方法来解决这个问题,但没有成功。我知道如果我添加这一行 [playerView setVideoFillMode:AVLayerVideoGravityResizeAspectFill] 会使这个错误提前出现(bebore 200 次)。 我还没有尝试过使用单个 PlayerView 将重复用于每个按钮,但将来我将不得不同时播放多个视频,我认为它会在一段时间后引发这个问题。 谷歌搜索此错误或搜索 StackOverflow 并没有给我带来任何解决方案。

有人遇到过这种问题吗?它发生在带有 ARC 的 iOS5 或 iOS6(不针对以下 5)中。

提前致谢

【问题讨论】:

  • 嗨@alamatula,我也面临同样的问题,你有没有找到解决这个问题的方法?

标签: ios ios5 avfoundation avplayer


【解决方案1】:

我没有准备好尝试您的代码,但您是否尝试过将 replaceCurrentItemWithPlayerItem: 包装在 @autoreleasepool 中以强制 ARC 进行一些清理?

或者,您是否通过 Instruments 检查了分配?

根据您的描述,这听起来很像泄漏。您可能AVPlayer 中发现了一个错误(我怀疑它是否得到了您正在给它的那种练习!)如果是这样,您绝对应该file a bug with Apple,但可能有一些你可以做的事情来解决。

您是否有理由继续重复使用同一播放器?您是否尝试过抛弃旧播放器并创建一个新播放器,而不是 replaceCurrentItemWithPlayerItem:

让我们知道 Instruments-Allocations 显示了什么。我敢打赌,这是弄清问题的关键。

【讨论】:

    猜你喜欢
    • 2016-08-26
    • 2011-09-16
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多