我正在为我的 webrtc 应用程序使用 janus 网关,并从我的相机捕获 samplebuffer 作为 kCVPixelFormatType_32BGRA,因为我正在处理 samplebuffer 并且不能直接使用 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 将其直接发送到 janus。所以我的问题是,如何将样本缓冲区的 RGBA 像素格式转换为 420YpCbCr8BiPlanarFullRange 样本缓冲区
我没有找到任何执行这种转换形式的脚本,我知道有一个代码可以将 420Y 转换为 RGBA,而不是相反。
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
//WebRTC delegate
externalVideoBufferDelegate?.captureOutput!(output, didOutput: sampleBuffer, from: connection)
if i % 40 == 0 {
let visionImage = VisionImage(buffer: sampleBuffer)
let metadata = VisionImageMetadata()
metadata.orientation = .rightTop
visionImage.metadata = metadata
faceDetector.process(visionImage) { features, error in
for feature in faces {
print("detected")
}
if faces.isEmpty {
print("Scan Failed: Found nothing to scan :")
}
}
}
}
我期望来自默认 32RGBA 样本缓冲区的 Y420 样本缓冲区