AVFoundation - Как использовать beginConfiguration и commitConfiguration для изменения настроек AVCaptureMovieFileOutput?
Документация Apple для AVCaptureSession
"s beginConfiguration
а также commitConfiguration
Говорит, что
After calling beginConfiguration, you can for example add or remove outputs, alter the sessionPreset, or configure individual capture input or output properties.
Я специально использую часть "Настройка свойств вывода". В частности, я хотел бы использовать атомарное изменение конфигурации, чтобы остановить запись на одном AVCaptureMovieFileOutput и начать запись на другом. К сожалению, это не похоже на работу. Что я конкретно пытаюсь это следующий код:
NSLog(@" = %d", [[self output] isRecording]);
NSLog(@" = %d", [[self output2] isRecording]);
[[self session] beginConfiguration];
[[self output] stopRecording];
[[self session] removeOutput:output];
[[self session] addOutput:output2];
outputFileURL = [self getMovieSaveURL];
[[self output2] startRecordingToOutputFileURL:outputFileURL recordingDelegate:self];
[[self session] commitConfiguration];
NSLog(@" = %d", [[self output] isRecording]);
NSLog(@" = %d", [[self output2] isRecording]);
Тем не менее, из операторов NSLog, которые я поместил в код, я вижу, что первый вывод все еще записывает, а второй - даже после коммита. Любые идеи, как я могу сделать эту работу? Спасибо много!
1 ответ
Вы можете отделить захват и запись в файл, используя AVCaptureOutput и AVAssetWriter. Затем все данные захвата поступают на обратный вызов в вашем приложении, и вы можете затем передать их в правильный экземпляр средства записи ресурсов. Есть пример, который показывает нечто очень похожее на http://www.gdcl.co.uk/2013/02/20/iPhone-Pause.html