質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1674閲覧

一つのViewに写真撮影レイヤーと動画撮影レイヤーを共存させたい

tgmdik

総合スコア12

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/09/22 03:28

###前提・実現したいこと
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問