12

我目前正在研究一个应用程序。出现的一个有趣的想法是同时从前置摄像头和 facetime 摄像头录制。你们有谁知道这是否可行?

谢谢 :)

编辑:我的意思是说前后摄像头。我想同时从两台摄像机录制到两个单独的流中。我希望我更清楚一点。

4

2 回答 2

13

这是 API 允许的。我在运行最新 iOS 4.2.1 的 iPhone 4 上尝试了三种方法。

首先,我尝试使用两个视频设备作为输入连接的单个捕获会话。附加第二个设备会产生异常:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“ *当前不支持多个音频/视频 AVCaptureInputs。”

其次,我尝试设置两个不同的会话,每个会话只有一个摄像头并同时启动它们。这导致第一个会话报告帧大约一秒钟,但是一旦第二个会话开始,它会自行决定第一次停止。您发送“startRunning”的顺序决定了哪些会话最终设法迫使另一个会话退出。

最后,我尝试了一个简单的乒乓球方法。所以我创建了两个会话,启动第一个,一旦它报告一个帧,停止它并启动第二个。然后停止第二个并开始第一个,无穷无尽。遗憾的是,请求会话开始和接收第一帧之间的延迟让我每两秒就有大约一帧。

当然,我的代码可能会出错,但我倾向于说这在当前的硬件或操作系统上是不可能的。我将挂钩 AVCaptureSession 通知,看看我是否有明确的理由停止并更新这篇文章。

补充:我的程序只接收 AVCaptureSessionDidStartRunningNotification 通知,来自每个捕获会话。停止的那个不会报告错误、中断或其他停止。我也找不到我的代码的问题,例如对象或调度队列重用,这可能会导致这个问题。

于 2011-03-01T16:31:54.450 回答
5

似乎可以使用 AVFoundation API 从多个视频输入进行录制。根据文档,可以在 AVCaptureSession 中使用多个 AVCaptureDevice 输入。在 iPhone 4 中,这意味着一个会话可以为两个摄像头同时拥有两个 AVCaptureDevices。在实践中,这可能是不可行的。我没有试过,所以我不能确定。

我认为标准的 UIImagePickerController 不能同时用于记录两者。

于 2011-03-01T16:10:11.580 回答