WebRTC iOS: фильтрация потока с камеры из RTCCameraVideoCapturer.Преобразование из RTCFrame в CVPixelBuffer - PullRequest
0 голосов
/ 09 февраля 2019

Я обнаружил, что git ниже прост и эффективен при использовании 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 Ответ

0 голосов
/ 10 февраля 2019

можете ли вы указать, что вы ожидаете?потому что вы можете легко получить пиксельный буфер из RTCVideoframe, но я чувствую, что может быть лучшее решение, если вы хотите фильтровать видео буфер, чем отправленный на Webrtc, вы должны работать с RTCVideoSource .

, который вы можетеполучить буфер с как видно

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

(с последним SDK и только с локальным буфером видеокамеры)

но в примере я могуПосмотрите, что фильтр не будет работать для удаленного.enter image description here

Я прикрепил скриншот, так же вы можете проверить предварительный просмотр.

...