ARVideoSourceProtocol

最近更新时间:2022-09-20 05:17:40

ARVideoSourceProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频源,并设置给 sdk 底层的 Media Engine

实时通讯过程中,SDK 通常会启动默认的视频输入设备,即内置的摄像头,进行视频推流。 使用 ARVideoSourceProtocol 接口可以自定义视频源。通过调用 设置视频源 setVideoSource 接口,可以改变并控制默认的视频输入设备,再将自定义的视频源发送给 Media Engine,让 Media Engine 进行其它视频处理,如过滤视频、将视频发布到 RTC 链接等。

ARVideoFrameConsumer 协议

@property (strong) id<ARVideoFrameConsumer> _Nullable consumer;

shouldInitialize

- (BOOL)shouldInitialize;

初始化视频源

Media Engine 在初始化视频源的时候会回调此方法。开发者可以在这个方法中做一些准备工作,例如打开 Camera,或者初始化视频源,并通过返回值告诉 Media Engine,自定义的视频源是否已经准备好。

返回值

初始化状态:

  • YES: 自定义的视频源已经完成了初始化工作
  • NO: 自定义的视频源设备没准备好或者初始化失败,Media Engine 会停下来并上报错误

注意事项: 初始化视频源过程中,开发者需要在 bufferType 中指定一种 Buffer 类型,并在自定义视频源中只使用与其对应的方法来传递视频帧数据。 在初始化视频源过程中,Media Engine 会传递给开发者的一个ARVideoFrameConsumer对象。开发者需要保存该对象,并在视频源启动后,通过这个对象把视频帧输入给 Media Engine。 开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否已准备好。

shouldStart

- (void)shouldStart;

启动视频源

Media Engine 在启动视频源时会回调这个方法。开发者可以在该方法中启动视频帧捕捉。开发者需要通过返回值告诉告知 Media Engine 自定义的视频源是否开启成功。

开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否开启:

  • YES:自定义的视频源已成功开启,接下来会打开 ARVideoFrameConsumer 的开关,接收开发者传输的视频帧
  • NO:自定义的视频源设备启动失败,Media Engine 会停下来并上报错误

shouldStop

- (void)shouldStop;

停止视频源

Media Engine 在停止视频源的时候会回调这个方法。开发者可以在这个方法中停止视频的采集。Media Engine 通过这个回调通知开发者,ARVideoFrameConsumer 的帧输入开关即将关闭,之后输入的视频帧都会被丢弃。

shouldDispose

- (void)shouldDispose;

释放视频源

Media Engine 通知开发者视频源即将失效,开发者可以在这个方法中关闭视频源设备。引擎会销毁 ARVideoFrameConsumer 对象,开发者需要确保在此回调之后不再使用它。

bufferType

- (ARVideoBufferType)bufferType;

释放视频源

Media Engine 在初始化的时候,会调用这个方法来查询该视频源所使用的 Buffer 类型。开发者必须指定且只能指定一种 Buffer 类型并通过返回值告诉 Media Engine

返回值

ARVideoBufferType:

  • ARVideoBufferTypePixelBuffer pixelbuffer

  • ARVideoBufferTypeRawData rawdata