WebRTC iOS: фильтрация потока с камеры из RTCCameraVideoCapturer. Преобразование из RTCFrame в CVPixelBuffer
Я нашел, что мерзавец ниже прост и эффективен при использовании func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame)
из RTCVideoCapturerDelegate
, Ты получаешь RTCVideoFrame
а затем преобразовать в CVPixelBuffer
модифицировать.
https://gist.github.com/lyokato/d041f16b94c84753b5e877211874c6fc
Однако я обнаружил, что Chronium говорит, что nativeHandle для получения PixelBuffer больше недоступен (ссылка ниже). Я попытался frame.buffer.pixelbuffer..., но, глядя на framework > Headers > RTCVideoFrameBuffer.h, я обнаружил, что CVPixelBuffer также пропал!
https://codereview.webrtc.org/2990253002
Есть ли хороший способ конвертировать RTCVideoFrame
в CVPixelBuffer
? Или у нас есть лучший способ изменить захваченное видео из RTCCameraVideoCapturer?
Ниже ссылка предлагает изменить SDK напрямую, но, надеюсь, мы сможем добиться этого на XCode.
Как изменить (добавить фильтры) поток камеры, который WebRTC отправляет другим узлам / серверу
1 ответ
Можете ли вы указать, что вы ожидаете? поскольку вы можете легко получить пиксельный буфер из RTCVideoframe, но я чувствую, что может быть лучшее решение, если вы хотите фильтровать видеобуфер, чем отправленный в Webrtc, вам следует работать с RTCVideoSource.
вы можете получить буфер с, как видно
RTCCVPixelBuffer *buffer = (RTCCVPixelBuffer *)frame.buffer;
CVPixelBufferRef imageBuffer = buffer.pixelBuffer;
(только с последним SDK и только с локальным буфером видеокамеры)
но в примере я вижу, что фильтр не будет работать для удаленного.
Я прикрепил скриншот, так вы можете проверить предварительный просмотр.