AgoraVideoSourceProtocol 协议

Conforms to NSObject
Declared in AgoraMediaIO.h

概览

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

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

AgoraVideoSourceProtocol 由以下方法组成:

– shouldInitialize required method

初始化视频源

- (BOOL)shouldInitialize

返回

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

详情

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

Note: 初始化视频源过程中,开发者需要在 bufferType 中指定一种 Buffer 类型,并在自定义视频源中只使用与其对应的方法来传递视频帧数据。

在初始化视频源过程中,Media Engine 会传递给开发者的一个 AgoraVideoFrameConsumer 对象。开发者需要保存该对象,并在视频源启动后,通过这个对象把视频帧输入给 Media Engine。

开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否已准备好。

Declared In

AgoraMediaIO.h

– shouldStart required method

启动视频源

- (void)shouldStart

详情

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

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

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

Declared In

AgoraMediaIO.h

– shouldStop required method

停止视频源

- (void)shouldStop

详情

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

Declared In

AgoraMediaIO.h

– shouldDispose required method

释放视频源

- (void)shouldDispose

详情

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

Declared In

AgoraMediaIO.h

– bufferType required method

获取 Buffer 类型

- (AgoraVideoBufferType)bufferType

详情

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

Declared In

AgoraMediaIO.h