1

我发现下面的git 通过使用func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame). RTCVideoCapturerDelegate你得到RTCVideoFrame然后转换CVPixelBuffer为修改。

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

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

https://codereview.webrtc.org/2990253002

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

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

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

4

1 回答 1

5

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

你可以得到缓冲区, 如所见

    RTCCVPixelBuffer *buffer = (RTCCVPixelBuffer *)frame.buffer;
    CVPixelBufferRef imageBuffer = buffer.pixelBuffer;

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

但在示例中我可以看到过滤器不适用于远程。 在此处输入图像描述

我附上了屏幕截图,这也是您检查预览的方式。

于 2019-02-10T20:31:18.537 回答