我正在尝试制作一个 iOS 应用程序,对来自相机的视频进行一些预处理,然后通过 webrtc 将其发送出去。我正在使用协议对每个单独的帧进行预处理AVCaptureVideoDataOutputSampleBufferDelegate
,然后使用该captureOutput
方法捕获帧。
现在我需要弄清楚如何在 WebRTC 上发送它。我正在使用 Google WebRTC 库:https ://webrtc.googlesource.com/src/ 。
有一个名为RTCCameraVideoCapturer
[(link)][1] 的类,大多数使用这个库的 iOS 示例应用程序似乎都在使用它。此类访问相机本身,因此我将无法使用它。它使用AVCaptureVideoDataOutputSampleBufferDelegate
,并且在captureOutput
,它这样做
RTC_OBJC_TYPE(RTCCVPixelBuffer) *rtcPixelBuffer =
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:pixelBuffer];
int64_t timeStampNs = CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(sampleBuffer)) *
kNanosecondsPerSecond;
RTC_OBJC_TYPE(RTCVideoFrame) *videoFrame =
[[RTC_OBJC_TYPE(RTCVideoFrame) alloc] initWithBuffer:rtcPixelBuffer
rotation:_rotation
timeStampNs:timeStampNs];
[self.delegate capturer:self didCaptureVideoFrame:videoFrame];
[self.delegate capturer:self didCaptureVideoFrame:videoFrame]
似乎是将单个帧输入 webRTC 的调用。
How can I write swift code that will allow me to feed frames into webRTC one at a time, similar to how it is done in the `RTCCameraVideoCapturer` class?
[1]: https://webrtc.googlesource.com/src/+/refs/heads/master/sdk/objc/components/capturer/RTCCameraVideoCapturer.m