录制视频后,我会获取其URL并使用AVURLAsset加载它.然后我创建一个AVAssetReader和AVAssetReaderTrackOutput来获取各个帧.
当我将帧作为CMSampleBufferRef获取时,我将它们传递给Apple的imageFromSampleBuffer方法,该方法应该返回一个UIImage.当我使用AVCaptureSession获取帧时,此方法工作正常,但当我使用通过UIImagePickerController录制的视频时,此行返回0x0:
CVImageBufferRef imageBuffer = CMSampleBufferGetimageBuffer(sampleBuffer);
其中sampleBuffer是我传递的CMSampleBufferRed.
我通过调试器检查了sampleBuffer的值,看起来没问题(不是0x0). CMSampleBufferGetimageBuffer会返回0x0有什么原因吗?
或者是否有另一种方法从MOV文件中提取单个视频帧并将其保存为UIImage?
谢谢.
解决方法 我找到了解决方案.您必须在初始化AVAssetReaderTrackOutput时传递的设置中设置像素格式.我通过了以下设置字典:
Nsstring* key = (Nsstring*)kCVPixelBufferPixelFormatTypeKey;NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];NSDictionary* vIDeoSettings = [NSDictionary dictionaryWithObject:value forKey:key];
希望这有助于其他人.
总结以上是内存溢出为你收集整理的ios – UIImagePickerController:从视频中获取图像全部内容,希望文章能够帮你解决ios – UIImagePickerController:从视频中获取图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)