iPhone:通过setSampleBufferDelegate处理单个帧时切换前/后AVCaptureDeviceInput相机

时间:2012-03-12 06:58:38

标签: ios camera orientation swap avcapturesession

当我尝试通过AVCaptureVideoDataOutput:setSampleBufferDelegate选择器处理单个帧时,尝试从使用前置摄像头切换到使用后置摄像头时,我遇到了一个有趣的问题。相机交换工作和我正在显示的预览屏幕看起来很棒,只是我捕获的结果帧不再处于纵向模式,它们处于横向状态。此外,从前面交换到后置摄像头将导致后置摄像头捕获景观帧。我怀疑,因为在这种情况下,当我交换输入时,某些事情变得搞砸了 - 这不是输入不正确。我通过使用前置摄像头启动AVCaptureSession验证了这一理论 - 传递给缓冲区代表的帧正确处于纵向模式。我也玩过明确停止AVCaptureSession,同时交换设备输入,结果没有区别。

我从AVCam演示中汲取灵感。该代码与我之间的可疑差异是它记录到AVCaptureMovieFileOutput - 它不处理单个帧。

有什么想法吗?当我换出设备输入时,为什么发送到处理器的帧的方向会发生变化?

感谢您的回复!

1 个答案:

答案 0 :(得分:0)

啊哈哈!我想到了。由于某些原因,在切换设备输入后,我的视频输出的AVCaptureConnection正在将其方向重置为横向右侧。为了解决这个问题,我在交换输入后明确要求视频输出的AVCaptureConnection将其方向设置为纵向。