gpt4 book ai didi

ios - CMSampleBuffer 将 BGRA 转换为 YUV 420f

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:30 27 4
gpt4 key购买 nike

我正在开展一个项目,我使用 AVCaptureSession 捕获用户的视频输入。问题是我需要 BGRA 格式的输出以使用 OpenCV 渲染它,但随后我需要将其更改回默认的 420f 格式以将其显示给用户。所以,我将 videoSettings 中的 PixelFormatType 设置为 kCVPixelFormatType_32BGRA

[videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]];

我想在 captureOutput 中将样本缓冲区转换为 420f:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
[self doSomeOpenCV:sampleBuffer]; // the OpenCV part

//convert sampleBuffer to kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange

}

有办法吗?或者,也许有一个函数可以在给定输入的情况下返回指定格式的样本缓冲区?

最佳答案

为什么不使用 AVSampleBufferDisplayLayer 来显示您的 BGRA 示例缓冲区并放弃 webRTC(至少为了显示目的)?

如果你不想那样做,你当然可以将你的 BGRA 缓冲区转换为 YUV,你甚至可以在 GPU 上非常有效地完成它,但最好的转换是不转换,而且谁想要输入那么多在 iPad 屏幕键盘上?

关于ios - CMSampleBuffer 将 BGRA 转换为 YUV 420f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com