首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在webrtc ios中录制远程视频

如何在webrtc ios中录制远程视频
EN

Stack Overflow用户
提问于 2021-11-05 01:52:13
回答 1查看 149关注 0票数 0

我使用webrtc-ios和swiftui成功地在屏幕上实时播放了远程视频。但我也想要实时录制视频。我知道如何将RTCVideooframe更改为CMsamplebuffer,并且我知道我必须使用Avassetwriter保存它。但我不确定在哪里可以实时提取RTCVideoFrame。

这是我的代码。

代码语言:javascript
复制
struct VideoView: UIViewRepresentable {

    let videoTrack: RTCVideoTrack?
    @Binding var refreshVideoTrack: Bool

    //RTCNSGLVideoView
    //RTCMTLNSVideoView
    func makeUIView(context: Context) -> RTCEAGLVideoView {
        let view = RTCEAGLVideoView(frame: .zero)
        view.contentMode = .scaleAspectFill
        return view
    }

    func updateUIView(_ view: RTCEAGLVideoView, context: Context) {

        if(refreshVideoTrack){
            videoTrack?.add(view)
            refreshVideoTrack = false
        }
    }
} 

VideoView(videoTrack: homeViewModel.remoteVideoTrack, refreshVideoTrack: Binding<Bool>(get: {return homeViewModel.refreshRemoteVideoTrack},
                                                                                                                                                          set: { p in homeViewModel.refreshRemoteVideoTrack = p}))

我使用RTCPeerConnectionDelegate获取remoteVideoTrack

代码语言:javascript
复制
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd stream: RTCMediaStream) {
        dLog("")

        remoteVideoTrack = stream.videoTracks.first
        remoteVideoTrack?.isEnabled = true
        refreshRemoteVideoTrack = true
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-05 09:40:44

要获取RTCVideoFrame,您可以创建一个中间RTCVideoRenderer

代码语言:javascript
复制
class FrameRenderer : NSObject, RTCVideoRenderer {
    func setSize(_ size: CGSize) {}
    func renderFrame(_ frame: RTCVideoFrame?) {}
}
代码语言:javascript
复制
videoTrack?.add(FrameRenderer())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69847842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档