Swift 對(duì)WebRTC采集的視頻流設(shè)置美顏效果

本文分享從WebRTC中使用RTCCameraVideoCapturer采集到的相機(jī)數(shù)據(jù)美顏處理的過(guò)程。

思路:在RTCCameraVideoCapturer(視頻數(shù)據(jù)捕捉器)--> RTCVideoSource(視頻數(shù)據(jù)使用者)之間,進(jìn)行美顏設(shè)置。

第一步、截取視頻數(shù)據(jù)

    private func createVideoTrack() -> RTCVideoTrack {
        let videoSource = WebRTCClient.factory.videoSource()
        
        #if targetEnvironment(simulator)
        /// your simulator code
        self.videoCapturer = RTCFileVideoCapturer(delegate: videoSource)
        #else
        /// your real device code
//        self.videoCapturer = RTCCameraVideoCapturer(delegate: videoSource)
        // 1、將相機(jī)獲取的數(shù)據(jù)代理給自己,用于對(duì)數(shù)據(jù)進(jìn)行美顏設(shè)置
        self.videoCapturer = RTCCameraVideoCapturer(delegate: self)
        #endif
        
        let videoTrack = WebRTCClient.factory.videoTrack(with: videoSource, trackId: "video0")
        return videoTrack
    }

第二步、響應(yīng)代理,對(duì)相機(jī)獲取的數(shù)據(jù)進(jìn)行美顏處理,處理完之后再返回給數(shù)據(jù)源videoSource

extension WebRTCClient: RTCVideoCapturerDelegate {
    // RTCFileVideoCapturer的代理方法,相機(jī)采集的數(shù)據(jù)都會(huì)通過(guò)這個(gè)方法返回出來(lái),只需要對(duì)這個(gè)數(shù)據(jù)進(jìn)行處理就行
    func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame) {
        // 1、美顏處理,美顏采用的是相芯SDK FURenderKit
        guard let buffer: RTCCVPixelBuffer = frame.buffer as? RTCCVPixelBuffer else {
            print("error - 1")
            return
        }
        let input: FURenderInput = FURenderInput()
        input.pixelBuffer = buffer.pixelBuffer
        let output: FURenderOutput = FURenderKit.share().render(with: input)
        let nrwbuffer: RTCCVPixelBuffer = RTCCVPixelBuffer.init(pixelBuffer: output.pixelBuffer)
        let newframe = RTCVideoFrame(buffer: nrwbuffer, rotation: frame.rotation, timeStampNs: frame.timeStampNs)
        // 2、顯示畫(huà)面
//            self.renderView?.renderFrame(newframe)
        // 3、重新把代理響應(yīng)給videoSource
        self.localVideoTrack?.source.capturer(capturer, didCapture: newframe)
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容