copyCGImageAtTime使用AVAssetImageGenerator抛出-11800未知特定资产框架的错误

时间:2014-07-01 21:47:32

标签: ios objective-c streaming avfoundation screenshot

使用AVPlayer播放内容分发网络上托管的视频文件时遇到了一个非常奇怪的问题。

我正在播放一个容量为151mb的966 kbps mp4视频文件(Codec ID mp42)。整个文件流完美,没有问题。然后我尝试在特定时间截取屏幕截图。

我用来拍摄快照的代码:

- (UIImage*)captureFrame
{
    AVAssetImageGenerator *assetImageGen = [AVAssetImageGenerator assetImageGeneratorWithAsset:_player.currentItem.asset];

    assetImageGen.requestedTimeToleranceBefore = kCMTimeZero;
    assetImageGen.requestedTimeToleranceAfter = kCMTimeZero;

    CMTime actualTime;
    NSError* error;

    CGImageRef cgFrame = [assetImageGen copyCGImageAtTime:_player.currentTime actualTime:&actualTime error:&error];

    if (error) NSLog(@"%@", error);

    return [UIImage imageWithCGImage:cgFrame];
}

除了56到59秒之间的一小段时间外,大部分时间都能完美运行。每当我在这段时间内截取屏幕截图时,我都会收到以下AVFoundation错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x157148e0 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x157c3500 "The operation couldn’t be completed. (OSStatus error 268451843.)", NSLocalizedFailureReason=An unknown error occurred (268451843)}

这真的很奇怪,因为它只发生在那么短的时间段内 - 资产其余部分的截图很好。

现在对于更奇怪的事情 - 错误只发生在使用实际设备时,并且在模拟器中测试时不会发生.. doh!非常令人沮丧。

任何建议都会有所帮助!

提前致谢

1 个答案:

答案 0 :(得分:0)

重新生成并重新上传视频,为我修复此问题。后期制作人员认为视频的特定部分可能已损坏,重新创建后问题已解决