//切換攝像頭方向
- (void)changeCameraPositionWithCurrentIsFront:(BOOL)isFront {
if (isFront) {
[self.session stopRunning];
[self.session removeInput:self.backCameraInput];
if ([self.session canAddInput:self.frontCameraInput]) {
[self.session addInput:self.frontCameraInput];
[self.session startRunning];
}
} else {
[self.session stopRunning];
[self.session removeInput:self.frontCameraInput];
if ([self.session canAddInput:self.backCameraInput]) {
[self.session addInput:self.backCameraInput];
[self.session startRunning];
}
}
//解決輸出鏡像問題
AVCaptureConnection *videoConnection = nil;
for ( AVCaptureConnection *connection in [self.videoDataOut connections] )
{
NSLog(@"%@", connection);
for ( AVCaptureInputPort *port in [connection inputPorts] )
{
NSLog(@"%@", port);
if ( [[port mediaType] isEqual:AVMediaTypeVideo] )
{
videoConnection = connection;
}
}
}
if([videoConnection isVideoOrientationSupported]) // **Here it is, its always false**
{
[videoConnection setVideoOrientation:[UIDevice currentDevice].orientation];
}
//設(shè)置前置攝像頭鏡像問題
[self videoMirored];
}
//攝像頭輸入
- (AVCaptureDeviceInput *)backCameraInput {
if (_backCameraInput == nil) {
NSError *error;
_backCameraInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self cameroWithPosition:AVCaptureDevicePositionBack] error:&error];
if (error) {
NSLog(@"后置攝像頭獲取失敗");
}
}
self.isDevicePositionFront = NO;
return _backCameraInput;
}
- (AVCaptureDeviceInput *)frontCameraInput {
if (_frontCameraInput == nil) {
NSError *error;
_frontCameraInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self cameroWithPosition:AVCaptureDevicePositionFront] error:&error];
if (error) {
NSLog(@"前置攝像頭獲取失敗");
}
}
self.isDevicePositionFront = YES;
return _frontCameraInput;
}
//獲取可用的攝像頭
- (AVCaptureDevice *)cameroWithPosition:(AVCaptureDevicePosition)position{
if ([[UIDevice currentDevice].systemVersion floatValue] == 10.0) {
AVCaptureDeviceDiscoverySession *dissession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInDuoCamera,AVCaptureDeviceTypeBuiltInTelephotoCamera,AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:position];
for (AVCaptureDevice *device in dissession.devices) {
if ([device position] == position ) {
return device;
}
}
} else {
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device position] == position) {
return device;
}
}
}
return nil;
}
iOS 切換攝像頭前后方向
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苞氮,“玉大人湾揽,你說我怎么就攤上這事〈写荆” “怎么了钝腺?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長赞厕。 經(jīng)常有香客問我艳狐,道長,這世上最難降的妖魔是什么皿桑? 我笑而不...
- 正文 為了忘掉前任毫目,我火速辦了婚禮,結(jié)果婚禮上诲侮,老公的妹妹穿的比我還像新娘镀虐。我一直安慰自己,他們只是感情好沟绪,可當我...
- 文/花漫 我一把揭開白布刮便。 她就那樣靜靜地躺著,像睡著了一般绽慈。 火紅的嫁衣襯著肌膚如雪恨旱。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼掂名,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哟沫?” 一聲冷哼從身側(cè)響起饺蔑,我...
- 正文 年R本政府宣布捣作,位于F島的核電站誉结,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏券躁。R本人自食惡果不足惜惩坑,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也拜。 院中可真熱鬧以舒,春花似錦、人聲如沸慢哈。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽卵贱。三九已至滥沫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艰赞,已是汗流浹背佣谐。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 最近發(fā)現(xiàn)項目里杯瞻,切換前后攝像頭幾次之后镐牺,會出現(xiàn)錄制的視頻方向上下顛倒,可是明明已經(jīng)在切換攝像頭后魁莉,給videoco...
- pragma mark - 攝像頭和相冊相關(guān)的公共類 // 判斷設(shè)備是否有攝像頭 (BOOL) isCameraA...
- 背景 公司有一位追求完美的產(chǎn)品經(jīng)理睬涧,提出Vuforia提供的前后攝像頭切換太生硬募胃,后置攝像頭切換到前置攝像頭的時候...