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



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

我正在流式传输一个966 kbps的mp4视频文件,它是151mb(编解码器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)}

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

现在更奇怪的是-错误只发生在使用实际设备时,不会发生在模拟器测试。哎!真是令人沮丧。

任何建议都会有帮助!

Thanks in advance

重新生成和重新上传视频为我解决了这个问题。后期制作人员认为视频的特定部分可能会损坏,在重新创建后,问题得到了解决

最新更新