使用 AVPlayer 作为 AVCaptureSession 的输入?

Using AVPlayer as input for AVCaptureSession?

是否可以使用 AVCaptureSession 捕获 AVPlayer 的输出?我相信这是可能的,但不知道如何使用 AVPlayer 作为输入。

您不能将 AVPlayer 插入 AVCaptureSession,尽管您可以以 CVPixelBuffers 和 AudioBufferLists 的形式访问播放器的视频和音频.

这是通过两个 API 实现的:AVPlayerItemVideoOutput 用于视频,MTAudioProcessingTap 用于音频。

尽管是 c-api,但 MTAudioProcessingTap 更容易集成,就像 AVCaptureSession 一样,它通过回调向您推送样本,而使用 AVPlayerItemVideoOutput 您拉帧在给定的时间内。 因此,如果您想要 AVCaptureSession 般的体验(real-time,推送),您可能应该让音频分路器驱动您的 frame-pulling。

objective-c here and in swift here and an example of using an MTAudioProcessingTap in swift here 中有一些 AVPlayerItemVideoOutput 示例代码。