AgoraVideoSinkProtocol 协议
Conforms to | NSObject |
---|---|
Declared in | AgoraMediaIO.h |
概览
AgoraVideoSinkProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频渲染器,并设置给 Agora 底层的 Media Engine。
实时通讯过程中,Agora SDK 通常会启动默认的视频渲染器进行视频渲染。 AgoraVideoSinkProtocol 可以自定义视频渲染器,再通过调用 设置本地视频渲染器 setLocalVideoRenderer 和 设置远端视频渲染器 setRemoteVideoRenderer 接口,改变并控制默认的视频渲染器。
AgoraVideoSinkProtocol 由以下方法组成:
- 初始化渲染器(shouldInitialize)
- 启动渲染器 (shouldStart)
- 停止渲染器 (shouldStop)
- 释放渲染器 (shouldDispose)
- 获取 Buffer 类型 (AgoraVideoBufferType)
- 获取像素格式 (AgoraVideoPixelFormat)
- (可选) 输出视频像素 Buffer (renderPixelBuffer)
- (可选) 输出视频裸数据 (renderRawData)
Note: AgoraVideoSinkProtocol 接口中定义的所有方法都是回调方法,Media Engine 内部维护着状态机,并使用这些方法将自定义视频源及渲染器的状态传给 Media Engine。因此请避免直接在 App 中直接调用这些接口。 下面这个例子给出了自定义 video sink 的步骤:
- 调用 bufferType 和 AgoraVideoPixelFormat 方法设置视频帧的 Buffer 类型和像素格式。
- 实现 shouldInitialize、shouldStart、shouldStop 和 shouldDispose 管理自定义的 Video Sink。
- 根据 AgoraVideoFrameConsumer 实现 buffer 类型和像素格式。
- 创建 AgoraVideoFrameConsumer 自定义的 Video Sink 对象。
- 调用 setLocalVideoRenderer 和 setRemoteVideoRenderer 方法设置本地和远端视频渲染器。
- Media Engine 会根据内部状态调用 AgoraVideoSinkProtocol 接口中的方法。