iOSのドキュメントによると、セッションの実行中に入力を追加および削除できます。たとえば、フロント カメラとバック カメラを切り替えることができます。
ただし、これを試すと、セッションが停止します。beginConfiguration
次のようにcommitConfiguration
呼び出してセッションをロックしています。
- (void)switchCamera:(UIButton *)sender {
dispatch_async([self sessionQueue], ^{
AVCaptureSession *session = self.captureSession;
[session beginConfiguration];
AVCaptureInput *currentInput = self.currentCameraIsBack ? self.videoDeviceInputBack : self.videoDeviceInputFront;
AVCaptureInput *newInput = self.currentCameraIsBack ? self.videoDeviceInputFront : self.videoDeviceInputBack;
[session removeInput:currentInput];
[session addInput:newInput];
self.currentCameraIsBack = !self.currentCameraIsBack;
[session setSessionPreset:AVCaptureSessionPresetMedium];
[self setCameraOutputProperties];
[session commitConfiguration];
});
}
に出力していAVCaptureMovieFileOutput
ます。このセッションを切り替え可能に構成するために必要なことはありますか?
(この質問のOPは、古い入力を削除せずに新しい入力を追加しようとしていることに注意してください。これはここでは問題ではありません)