我想更改 rtccameravideocapture 的视频源以删除背景或添加过滤器。我所做的方法是将 initwithdelegate 更改为我创建的名为 myvideosourcefilter 的类,因此我无法使用 didcapturevideoframe 方法,但问题是 didcapturevideoframe 方法永远不会进入,我做错了什么,结果我可以initwithmyvideosource 类,但我无法使用 didcapturevideoframe 方法,我想知道我做错了什么。
MyVideoSourceFilter *filter = [[MyVideoSourceFilter alloc] initWithSource:videoSource];
self.videoCapturer = [[RTCCameraVideoCapturer alloc] initWithDelegate:filter];
self.videoCapturer.delegate = filter;
我想重写 didcapturevideoframe 方法,但是 didcaptureframe 方法永远不会进入,我做错了什么或者我应该添加什么
MyVideoSourceFilter *filter = [[MyVideoSourceFilter alloc] initWithSource:videoSource]; self.videoCapturer = [[RTCCameraVideoCapturer alloc] initWithDelegate:filter]; self.videoCapturer.delegate = filter;
- (instancetype)initWithSource:(RTCVideoSource *)source {
NSLog(@"init with source ");
self = [super init];
self.videoSource = source;
//if (self = [super init]) {
//}
return self;
}
- (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame {
NSLog(@"did capture video frame ");
if (self.videoSource != nil) {
[self.videoSource capturer:capturer didCaptureVideoFrame:frame];
}else{
NSLog(@"self.source = nil ");
}
}
我所做的方法是将 initwithdelegate 更改为我创建的名为 myvideosourcefilter 的类,因此我无法使用 didcapturevideoframe 方法,但问题是 didcapturevideoframe 方法永远不会进入,我做错了什么,结果是我可以 initwithmyvideosource 类,但我不能使用 didcapturevideoframe 方法,我想知道我做错了什么。
因为您的
filter
变量在函数完成运行后不会保持引用,就像 videoCapturer
变量一样,它在 self.让我们这样做吧,我认为它会起作用。现在在头文件中定义 filter
变量,如 videoCapturer
并编辑代码如下:
self.filter = [[MyVideoSourceFilter alloc] initWithSource:videoSource];
self.videoCapturer = [[RTCCameraVideoCapturer alloc] initWithDelegate:filter];
self.videoCapturer.delegate = self.filter;