AgoraVideoSourceProtocol 协议
Conforms to | NSObject |
---|---|
Declared in | AgoraMediaIO.h |
概览
AgoraVideoSourceProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频源,并设置给 Agora 底层的 Media Engine
实时通讯过程中,Agora SDK 通常会启动默认的视频输入设备,即内置的摄像头,进行视频推流。 使用 AgoraVideoSourceProtocol 接口可以自定义视频源。通过调用 设置视频源 setVideoSource 接口,可以改变并控制默认的视频输入设备,再将自定义的视频源发送给 Agora Media Engine,让 Media Engine 进行其它视频处理,如过滤视频、将视频发布到 RTC 链接等。
AgoraVideoSourceProtocol 由以下方法组成:
- 初始化视频源 (shouldInitialize)
- 启动视频源 (shouldStart)
- 停止视频源 (shouldStop)
- 释放视频源 (shouldDispose)
- 获取 Buffer 类型 (AgoraVideoBufferType)
– 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