2014-10-07 6 views
4

를 송신하는 동안은, 일반적인 흐름처럼이AVCaptureSession rotate | 오리엔테이션 비디오가있는 난 다음 다른 쪽 끝으로 전송 전면 카메라의 비디오 프레임을 캡처 및 인코딩해야, 내가 비디오 스트리밍 응용 프로그램을 개발하고

AVCaptureSession -> AVCaptureDeviceInput -> AVCaptureVideoDataOutput -> 캡처 프레임 -> 인코딩 프레임 -> 잘 작동

, 난 프레임 형식으로 설정 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange이, 다른 쪽 끝 프레임을 보낼 수 있습니다. 장치를 세로에서 가로로 이동 한 경우 장치 방향이 변화를 얻을 때

또한 미리보기 층은 미리보기를 표시하는 데 사용되는

문제가되어, 그 다음 다른 쪽 끝 프레임에 (90)에 의해 회전 도착, 난 이후 기다리고 있었다 오리엔테이션은 미리보기 레이어에서 지원되므로 캡쳐 콜백에서 회전 된 버퍼를 자동으로받습니다.하지만 미리보기 레이어는 캡처 된 버퍼의 미리보기와 버퍼를 UI로 알리는 반면, 다른 끝에서는 어떤 버퍼가 버퍼링 되었습니까?

그래서 알고 싶습니다. 변경해야하는 구성이 있습니까? 아니면 캡처 버퍼에서 버퍼를 변환/변환해야합니까? c allback.

+0

을 니펫을 간다? – gabbler

+0

콜백 함수에서 - (void) captureOutput : (AVCaptureOutput *) captureOutput didOutputSampleBuffer : (CMSampleBufferRef) sampleBuffer fromConnection : (AVCaptureConnection *) 연결 – Amitg2k12

답변

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]; 

} 
+0

이것은 좋은 점입니다. – gabbler

+1

@ amitg2k12 pCaptureConnection이란 무엇입니까 ??? – OXXY

+1

pCaptureConnection이란 무엇입니까 ?? – Daniel