文档中心
互动直播 (Legacy)
API 参考
AgoraVideoSourceProtocol Protocol Reference
Objective-C API Reference for iOS/macOS
AgoraVideoSourceProtocol Protocol Reference
Conforms to |
NSObject |
Declared in |
AgoraMediaIO.h |
Overview
AgoraVideoSourceProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频源,并设置给声网底层的 Media Engine
实时通讯过程中,SDK 通常会启动默认的视频输入设备,即内置的摄像头,进行视频推流。 使用 AgoraVideoSourceProtocol 接口可以自定义视频源。通过调用 设置视频源 setVideoSource 接口,可以改变并控制默认的视频输入设备,再将自定义的视频源发送给声网 Media Engine,让 Media Engine 进行其它视频处理,如过滤视频、将视频发布到 RTC 链接等。
AgoraVideoSourceProtocol 由以下方法组成:
@property (strong) id<AgoraVideoFrameConsumer> _Nullable consumer
Discussion
Note: SDK 目前不支持 alpha 通道。传入的 alpha 值将被丢弃。
Declared In
AgoraMediaIO.h
- (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
- (void)shouldStart
Discussion
Media Engine 在启动视频源时会回调这个方法。开发者可以在该方法中启动视频帧捕捉。开发者需要通过返回值告诉告知 Media Engine 自定义的视频源是否开启成功。
开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否开启:
Declared In
AgoraMediaIO.h
- (void)shouldStop
Discussion
Media Engine 在停止视频源的时候会回调这个方法。开发者可以在这个方法中停止视频的采集。Media Engine 通过这个回调通知开发者,AgoraVideoFrameConsumer 的帧输入开关即将关闭,之后输入的视频帧都会被丢弃。
Declared In
AgoraMediaIO.h
- (void)shouldDispose
Declared In
AgoraMediaIO.h
- (AgoraVideoBufferType)bufferType
Discussion
Media Engine 在初始化的时候,会调用这个方法来查询该视频源所使用的 Buffer 类型。开发者必须指定且只能指定一种 Buffer 类型并通过返回值告诉 Media Engine
Declared In
AgoraMediaIO.h
- (AgoraVideoCaptureType)captureType
Availability
v3.1.0
在你初始化自定义视频源之前,SDK 会触发该回调查询自采集的视频源类型。你必须在返回值中指定一种视频源类型来告知 SDK。SDK 会在接收到视频帧后根据视频源的类型对启用相应的视频处理策略。
Declared In
AgoraMediaIO.h
- (AgoraVideoContentHint)contentHint
Availability
v3.1.0
如果指定自定义视频源为屏幕共享的视频,那么在你初始化自定义视频源之前,SDK 会触发该回调查询屏幕共享视频源的内容类型。你必须在返回值中指定一种内容类型来告知 SDK。SDK 会在接收到视频帧后根据屏幕共享视频的内容类型启用相应的视频处理策略。
Declared In
AgoraMediaIO.h