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