关于实时捕获摄像头预览视图图像的问题

DanteSu 2016-08-21 05:06:05
我想通过-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection这个方法在摄像头进行预览视图的时候捕获实时的图片,保存到UImage中,然后对UImage做相应的处理。现在遇到的问题是我在全局变量声明的全局变量UImage在这个函数获取的时候总是为空,后来发现是因为是在毫秒级别的拍照操作(captureStillImageAsynchronouslyFromConnection),有可能快速拍照后速度给释放了,然后进行下一次的captureStillImageAsynchronouslyFromConnection。
我现在有一个这样的设想,通过-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection这个方法获取图片,然后按照这样一个执行队列进行操作,捕获视频中的图片》保存到UImage》做其他函数处理》返回处理结果,然后loop这个过程。这个过程应该是线程处理的(我用了队列)
我在思考这个问题的时候遇到几个问题:
1.用队列我认为应该是正确的,但是-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection方法在我对UImage处理完成之前就进行了第二次调用(它可能应该是用消息的传递机制),导致我上一次调用的图片被释放,我想是否能限制captureOutput函数的调用方式
2.因为caputreOutput的执行速度应该是毫秒级的,我如何限制执行速度

总结:就是一个后台获取摄像头预览视频的实时截图问题,毕竟我是第一次接触iOS,还是希望各位老司机提供思路和方法。如果能指出用哪个函数或者类最好,感谢万分!
...全文
499 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hslinux 2016-08-22
  • 打赏
  • 举报
回复
可以通过改变帧率来调节输出数据的快慢。
DanteSu 2016-08-21
  • 打赏
  • 举报
回复
求人不如求己,已经解决!谁回复下我给分,然后截贴

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧