WebRTC iOS:从 RTCCameraVideoCapturer 过滤摄像头流。从 RTCFrame 到 CVPixelBuffer 的转换

Gir*_*bat 1 video-capture ios webrtc cvpixelbuffer

我发现下面的 git 使用func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame)of既简单又高效RTCVideoCapturerDelegate。你得到RTCVideoFrame然后转换CVPixelBuffer为修改。

https://gist.github.com/lyokato/d041f16b94c84753b5e877211874c6fc

但是,我发现 Chronium 说获得 PixelBuffer 的 nativeHandle 不再可用(链接如下)。我尝试了 frame.buffer.pixelbuffer...,但是,查看框架 > 标题 > RTCVideoFrameBuffer.h,我发现 CVPixelBuffer 也从这里消失了!

https://codereview.webrtc.org/2990253002

有什么好的方法可以转换RTCVideoFrameCVPixelBuffer?或者我们有更好的方法来修改从 RTCCameraVideoCapturer 捕获的视频吗?

下面的链接建议直接修改 sdk,但希望我们可以在 Xcode 上实现这一点。

如何修改(添加过滤器)WebRTC 发送到其他对等点/服务器的摄像头流

Sum*_*ena 5

你能具体说明你的期望吗?因为您可以轻松地从 RTCVideoframe 获取像素缓冲区,但我觉得如果您想过滤视频缓冲区而不是发送到 Webrtc,则可以有更好的解决方案,您应该使用RTCVideoSource

你可以得到缓冲, 如所见

    RTCCVPixelBuffer *buffer = (RTCCVPixelBuffer *)frame.buffer;
    CVPixelBufferRef imageBuffer = buffer.pixelBuffer;
Run Code Online (Sandbox Code Playgroud)

(仅使用最新的 SDK 和本地视频摄像头缓冲区)

但在示例中,我可以看到过滤器不适用于远程。 在此处输入图片说明

我附上了截图,这也是你可以检查预览的方式。