使用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!非常令人沮丧。
任何建议都会有所帮助!
提前致谢
答案 0 :(得分:0)
重新生成并重新上传视频,为我修复此问题。后期制作人员认为视频的特定部分可能已损坏,重新创建后问题已解决