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

Другие вопросы по тегам