關(guān)于ios視頻錄制切換前后攝像頭后方向錯(cuò)誤解決辦法

最近發(fā)現(xiàn)項(xiàng)目里,切換前后攝像頭幾次之后,會(huì)出現(xiàn)錄制的視頻方向上下顛倒,可是明明已經(jīng)在切換攝像頭后,給videoconnection重新設(shè)置了錄制方向,我項(xiàng)目視頻錄制固定為橫屏錄制,所以每次切換攝像頭都執(zhí)行了以下方法self.videoConnection.videoOrientation=AVCaptureVideoOrientationLandscapeRight;摸索了兩天,才發(fā)現(xiàn)了bug所在,是因?yàn)関ideoConnection 采用了懶加載,切換攝像頭后并沒有重新初始化,所以才讓設(shè)置沒有生效。解決辦法很簡單,重寫懶加載,直接改為每次都重新初始化。

//視頻連接

- (AVCaptureConnection*)videoConnection {

_videoConnection= [self.videoOutputconnectionWithMediaType:AVMediaTypeVideo];

return_videoConnection;

}

最后附上攝像頭前后切換的代碼

//切換前后置攝像頭

- (void)changeCameraInputDeviceisFront:(BOOL)isFront {

if(isFront) {

//改變會(huì)話的配置前一定要先開啟配置,配置完成后提交配置改變

[self.recordSessionstopRunning];

[self.recordSessionbeginConfiguration];

[self.recordSessionremoveInput:self.backCameraInput];

if([self.recordSessioncanAddInput:self.frontCameraInput]) {

[selfchangeCameraAnimation];

[self.recordSessionaddInput:self.frontCameraInput];

//提交會(huì)話配置

[self.recordSessioncommitConfiguration];

}

}else{

[self.recordSessionstopRunning];

[self.recordSessionbeginConfiguration];

[self.recordSessionremoveInput:self.frontCameraInput];

if([self.recordSessioncanAddInput:self.backCameraInput]) {

[selfchangeCameraAnimation];

[self.recordSessionaddInput:self.backCameraInput];

[self.recordSessioncommitConfiguration];

}}}

//后置攝像頭輸入

- (AVCaptureDeviceInput*)backCameraInput {

if(_backCameraInput==nil) {

NSError*error;

_backCameraInput= [[AVCaptureDeviceInputalloc]initWithDevice:[selfbackCamera]error:&error];

if(error) {

NSLog(@"獲取后置攝像頭失敗~");

}

}

return_backCameraInput;

}

//前置攝像頭輸入

- (AVCaptureDeviceInput*)frontCameraInput {

if(_frontCameraInput==nil) {

NSError*error;

_frontCameraInput= [[AVCaptureDeviceInputalloc]initWithDevice:[selffrontCamera]error:&error];

if(error) {

NSLog(@"獲取前置攝像頭失敗~");

}

}

return_frontCameraInput;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容