当我试图在通过AVCaptureVideoDataOutput:setSampleBufferDelegate选择器处理单个帧时从使用前置摄像头切换到使用后置摄像头时,我遇到了一个有趣的问题。相机交换工作,我正在显示的预览屏幕看起来很棒,只是我捕获的结果帧不再是纵向模式,它们是横向的。此外,从前面交换,然后返回到后置相机将导致后置相机捕获风景帧。我怀疑,由于这种情况,当我换出输入时,有些事情搞砸了--不是输入不正确。我通过使用前置摄像头启动AVCaptureSession来验证这一理论-传递给buffer代理的帧在纵向模式下是正确的。我还尝试了在交换设备输入时显式停止AVCaptureSession,结果没有差别。
我抄袭了AVCam的演示以获取灵感。这段代码和我的代码之间可疑的区别是,它记录到一个AVCaptureMovieFileOutput中--它不处理单独的帧。
有什么想法吗?为什么当我换出设备输入时,发送到处理器的帧的方向会发生变化?
感谢您的回复!
发布于 2012-03-13 14:29:51
啊哈!我想通了。由于某种原因,在切换设备输入后,我的视频输出的AVCaptureConnection的方向被重置为右横屏。为了解决这个问题,在交换输入之后,我显式地要求视频输出的AVCaptureConnection将其方向设置为纵向。
https://stackoverflow.com/questions/9662897
复制相似问题