9

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

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)中。

提前致谢

4

1 回答 1

1

我没有准备好尝试您的代码,但是您是否尝试过replaceCurrentItemWithPlayerItem:强制@autoreleasepoolARC 进行一些清理?

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

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

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

让我们知道 Instruments-Allocations 显示了什么。我敢打赌,这是追根究底的关键。

于 2015-01-09T04:00:15.527 回答