AgoraVideoSourceProtocol Protocol Reference

Conforms to NSObject
Declared in AgoraMediaIO.h

Overview

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

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

AgoraVideoSourceProtocol 由以下方法组成:

  consumer required method

SDK 传给你的一个 AgoraVideoFrameConsumer 对象。你需要保存该对象,并在视频源启动后,通过这个对象把视频帧传给 SDK。 详见 AgoraVideoFrameConsumer

@property (strong) id<AgoraVideoFrameConsumer> _Nullable consumer

Discussion

Note: SDK 目前不支持 alpha 通道。传入的 alpha 值将被丢弃。

Declared In

AgoraMediaIO.h

– shouldInitialize required method

初始化视频源

- (BOOL)shouldInitialize

Return Value

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

Discussion

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

Discussion

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

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

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

Declared In

AgoraMediaIO.h

– shouldStop required method

停止视频源

- (void)shouldStop

Discussion

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

Declared In

AgoraMediaIO.h

– shouldDispose required method

释放视频源

- (void)shouldDispose

Discussion

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

Declared In

AgoraMediaIO.h

– bufferType required method

获取 Buffer 类型

- (AgoraVideoBufferType)bufferType

Return Value

AgoraVideoBufferType

Discussion

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

Declared In

AgoraMediaIO.h

– captureType required method

指定自采集的视频源类型。

- (AgoraVideoCaptureType)captureType

Return Value

AgoraVideoCaptureType

Availability

v3.1.0

在你初始化自定义视频源之前,SDK 会触发该回调查询自采集的视频源类型。你必须在返回值中指定一种视频源类型来告知 SDK。SDK 会在接收到视频帧后根据视频源的类型对启用相应的视频处理策略。

Declared In

AgoraMediaIO.h

– contentHint required method

指定自采集屏幕共享视频的内容类型。

- (AgoraVideoContentHint)contentHint

Return Value

AgoraVideoContentHint

Availability

v3.1.0

如果指定自定义视频源为屏幕共享的视频,那么在你初始化自定义视频源之前,SDK 会触发该回调查询屏幕共享视频源的内容类型。你必须在返回值中指定一种内容类型来告知 SDK。SDK 会在接收到视频帧后根据屏幕共享视频的内容类型启用相应的视频处理策略。

Declared In

AgoraMediaIO.h