###前提・実現したいこと
HMSegmentedControlで横スライド型のページを作成しております。
タブは3つあり、「ライブラリ」「写真」「動画」として、Instagramのような投稿に使用する
画像を選択する画面を実装してみたいと思っています。
###発生している問題・エラーメッセージ
実機で起動してみると、動画レイヤーの方は動くのですが、写真レイヤーの方はフリーズしてしまい動きません。 レイヤーを一つにしたほうがいいのでしょうか。どうすべきでしょうか。 その他、書き方がおかしい部分等あればあわせてご指南頂けたら幸甚です。
###該当のソースコード
let mySession = AVCaptureSession() mySession.sessionPreset = AVCaptureSessionPresetHigh var myCamera: AVCaptureDevice! let devices = AVCaptureDevice.devices() for device in devices!{ if((device as AnyObject).position == AVCaptureDevicePosition.back){ myCamera = device as! AVCaptureDevice } } do{ let videoInput = try AVCaptureDeviceInput(device: myCamera) mySession.addInput(videoInput) myImageOutput = AVCaptureStillImageOutput() mySession.addOutput(myImageOutput) let myVideoLayer = AVCaptureVideoPreviewLayer(session:mySession) let width = 375 let height = 375 let tabBarHight = self.tabBar.frame.size.height myVideoLayer?.frame = CGRect(x: Int(0), y: Int(0), width: Int(width), height: Int(height)) myVideoLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill self.view.layer.addSublayer(myVideoLayer!) page2view.layer.insertSublayer(myVideoLayer!, at: 0) mySession.startRunning() } catch let error as NSError{ print("カメラは使えません\(error)") } shutter.setImage(shutterImage, for: .normal) shutter.frame = CGRect(x: Int( page2view.frame.size.width / 2.631), y: Int( page2view.frame.size.height * 0.80), width: 90, height: 90) page2view.addSubview(shutter) //movie start let myVideoSession = AVCaptureSession() var myVideo = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) let myVideoImageOutput = AVCaptureStillImageOutput() let videoDevices = AVCaptureDevice.devices() let audioCaptureDevice = AVCaptureDevice.devices(withMediaType: AVMediaTypeAudio) let audioInput = try! AVCaptureDeviceInput.init(device: audioCaptureDevice?.first as! AVCaptureDevice) for device in videoDevices! { if((device as AnyObject).position == AVCaptureDevicePosition.back){ myVideo = device as? AVCaptureDevice } } do{ let videoInput = try! AVCaptureDeviceInput.init(device: myVideo) myVideoSession.addInput(videoInput) myVideoSession.addInput(audioInput) myVideoSession.addOutput(myVideoImageOutput) myvideoOutput = AVCaptureMovieFileOutput() myVideoSession.addOutput(myvideoOutput) let myVideoMovieLayer = AVCaptureVideoPreviewLayer.init(session: myVideoSession) myVideoMovieLayer?.frame = CGRect(x: Int(0), y: Int(0), width: Int(375), height: Int(375)) myVideoMovieLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill self.view.layer.addSublayer(myVideoMovieLayer!) page3view.layer.insertSublayer(myVideoMovieLayer!, at: 0) myVideoSession.startRunning() } catch let error as NSError{ print("カメラは使えません\(error)") }
###補足情報(言語/FW/ツール等のバージョンなど)
swift3 Xcode8
あなたの回答
tips
プレビュー