Ios AVCaptureVideoDataOutput和AVCaptureAudioDataOutput是同一队列
Apple最近的一个示例代码使用相同的串行队列从AVCaptureVideoDataOutput和AVCaptureAudioDataOutput委托接收示例。我需要知道,从性能的角度来看,这是否是可接受的做法。两个示例缓冲区委托应该有不同的队列还是单个队列?特别是在多个摄像机输入/输出的设置中,这变得非常重要Ios AVCaptureVideoDataOutput和AVCaptureAudioDataOutput是同一队列,ios,avfoundation,avcapturesession,avcapturedevice,avcapturevideodataoutput,Ios,Avfoundation,Avcapturesession,Avcapturedevice,Avcapturevideodataoutput,Apple最近的一个示例代码使用相同的串行队列从AVCaptureVideoDataOutput和AVCaptureAudioDataOutput委托接收示例。我需要知道,从性能的角度来看,这是否是可接受的做法。两个示例缓冲区委托应该有不同的队列还是单个队列?特别是在多个摄像机输入/输出的设置中,这变得非常重要 private let dataOutputQueue = DispatchQueue(label: "data output queue") ... ... videoData
private let dataOutputQueue = DispatchQueue(label: "data output queue")
...
...
videoDataOutput.setSampleBufferDelegate(self, queue: dataOutputQueue)
audioDataOutput.setSampleBufferDelegate(self, queue: dataOutputQueue)
我想在性能方面:
我看到了这个问题,但这个答案的奇怪之处在于使用并发队列。AVCaptureVideoDataOutput documentation()只指定使用串行队列。他们说:“必须使用串行调度队列,以确保视频帧按顺序传送。”他们之所以这样说,主要是因为句子的最后一部分->确保帧的顺序正确。但你说的是多个摄像头输入。如果您只是对每个摄像头输入使用串行队列,它仍然可以。另外,我刚刚用并发队列的链接更新了我的答案。