AVCaptureVideoPreviewLayer
を使用して、ライブビデオを渡し、openGL
シェーダをリアルタイムで適用します。 フロントカメラを使用している場合、ビデオはミラーリングされています。シェーダを適用する前に、ミラーリングを解除します。AVCaptureVideoPreviewLayerフロントカメラは、OpenGLシェーダに渡す前にピクセルバッファを反転します。
誰か助けてもらえますか?
追加:フロントカメラに切り替えるためのコード:
-(void)showFrontCamera{
NSLog(@"inside showFrontCamera");
[captureSession removeInput:videoInput];
// Grab the front-facing camera
AVCaptureDevice *backFacingCamera = nil;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device position] == AVCaptureDevicePositionFront) {
backFacingCamera = device;
}
}
// Add the video input
NSError *error = nil;
videoInput = [[[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error] autorelease];
if ([captureSession canAddInput:videoInput]) {
[captureSession addInput:videoInput];
}
}
あなたは、のような、より多くの詳細を提供することができますコードスニペットどこでカメラを切り替えるのですか?そして、後ろのカメラに戻ったとき何が起きていますか?それはまだ鏡像ですか? –
こんにちはファーリ、フロントカメラに切り替えるコードを追加しました。問題は、フロントカメラのビデオが鏡映されていることです。これはポートレートモードでは問題ありませんが、カメラを回転させるとビデオが反転して上下逆になります。例えば。人の顔が180°回転します。 –
私の以前のコメントでは、カメラを回転させると、私は風景モードに変更することを意味します。 –