AVCaptureSession旋转|视频传输时的方向

时间:2014-10-07 12:32:07

标签: ios video objective-c++ avcapturesession avcapturedevice

我正在开发视频流应用程序,其中我需要捕获前置摄像头视频帧并编码然后转移到另一端,典型的流程是这样的

AVCaptureSession - > AVCaptureDeviceInput - > AVCaptureVideoDataOutput - >捕获帧 - >编码帧 - >发送帧到另一端,

它工作正常,我已将 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 设置为帧格式。

还预览用于显示预览的图层,

问题出现在设备方向发生变化时,如果设备从纵向移动到横向,然后在另一端框架旋转90度,我期待由于预览层支持方向,所以我将自动接收旋转缓冲区Capture回调,但看起来,预览层只显示捕获的缓冲区的预览和UI orating缓冲区,而在另一端我会得到咆哮的缓冲区,

所以我想知道,有没有任何配置可以让它改变,或者我需要在Capture缓冲区回调中旋转/转换缓冲区。

1 个答案:

答案 0 :(得分:8)

感谢您查看,基本上解决方案是,应该设置连接方向,我正在使用预览图层,因此它影响预览图层而不是方向。

这里是代码段

-(void) orientationChanged
{
    // get the new orientation from device 
    AVCaptureVideoOrientation newOrientation = [self videoOrientationFromDeviceOrientation];

    // set the orientation of preview layer :( which will be displayed in the device )
    [previewLayer.connection setVideoOrientation:newOrientation];

    // set the orientation of the connection: which will take care of capture
    [pCaptureConnection setVideoOrientation:newOrientation];

}