1

AVCaptureSession's的 Apple 文档beginConfigurationcommitConfiguration

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 语句中,我看到第一个输出仍在记录中,而第二个输出在提交之后仍然没有。有什么想法可以让我完成这项工作吗?非常感谢!

4

1 回答 1

1

您可以使用 AVCaptureOutput 和 AVAssetWriter 将捕获和文件写入解耦。然后所有捕获数据到达您应用程序中的回调,然后您可以将其传递给资产编写器的正确实例。在http://www.gdcl.co.uk/2013/02/20/iPhone-Pause.html有一个示例显示了非常相似的内容

于 2013-04-23T13:07:35.577 回答