媒体流附属信息分发
metadataMaxSize
当 SDK 请求元数据的最大大小时触发。
Objective-C
- (NSInteger)metadataMaxSize NS_SWIFT_NAME(metadataMaxSize());
调用 setMediaMetadataDelegate:withType: 方法成功注册后,SDK 每发送一帧视频时会触发该回调。你需要在该回调的返回值中指定元数据的最大大小。
返回值
方法调用成功,返回你希望使用的元数据缓冲区的最大大小,单位为字节。最大值为 1024 字节。
所属接口类readyToSendMetadataAtTimestamp:sourceType:
当 SDK 准备好发送元数据时触发回调。
Objective-C
- (NSData * _Nullable)readyToSendMetadataAtTimestamp:(NSTimeInterval)timestamp sourceType:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(readyToSendMetadata(atTimestamp:sourceType:));
该回调在 SDK 准备好发送元数据时触发。
信息
请确保元数据的大小不超过 metadataMaxSize 回调中设置的值。
调用时机
当 SDK 准备好发送元数据时触发。
参数
- timestamp
- 时间戳。
- sourceType
- 视频数据类型,详见 AgoraVideoSourceType。
返回值
你希望发送的元数据,格式为
所属接口类NSData,包含以下参数: uid:发送元数据的远端用户 ID。size:元数据的大小。buffer:元数据内容。timeStampMs:发送元数据时的 NTP 时间戳(毫秒)。
setMediaMetadataDelegate:withType:
注册元数据观察者。
Objective-C
- (BOOL)setMediaMetadataDelegate:(id<AgoraMediaMetadataDelegate> _Nullable)metadataDelegate withType:(AgoraMetadataType)type NS_SWIFT_NAME(setMediaMetadataDelegate(_:with:));
你需要实现 AgoraMediaMetadataDelegate 协议,并在该方法中指定元数据类型。该方法使你能够在视频流中添加同步的元数据,以实现更丰富的直播互动场景,例如发送购物链接、数字优惠券和在线问答。
信息
请在调用
joinChannelByToken 之前调用该方法。参数
- metadataDelegate
- 元数据观察者,详见 AgoraMediaMetadataDelegate。
- type
- 元数据类型,详见 AgoraMetadataType。当前 SDK 仅支持
AgoraMetadataTypeVideo。
返回值
- YES:方法调用成功。
- NO:方法调用失败。
setMediaMetadataDataSource:withType:
设置元数据的数据源。
Objective-C
- (BOOL)setMediaMetadataDataSource:(id<AgoraMediaMetadataDataSource> _Nullable)metadataDataSource withType:(AgoraMetadataType)type NS_SWIFT_NAME(setMediaMetadataDataSource(_:with:));
你需要在该方法中实现 AgoraMediaMetadataDataSource 协议,并指定元数据的数据格式。成功调用该方法后,SDK 会触发 metadataMaxSize 回调。你可以结合 setMediaMetadataDelegate:withType: 方法,在视频流中添加同步的元数据,实现更丰富的直播互动,例如发送购物链接、数字优惠券和在线问答。
信息
该方法需要在加入频道前调用。
参数
- metadataDataSource
- 元数据的数据源,需实现 AgoraMediaMetadataDataSource 协议。详见 AgoraMediaMetadataDataSource。
- type
- 元数据的类型,详见 AgoraMetadataType。SDK 当前仅支持
AgoraMetadataTypeVideo。
返回值
- YES:方法调用成功。
- NO:方法调用失败。
didMetadataReceived:
当本地用户接收到元数据时触发。
Objective-C
- (void)didMetadataReceived:(AgoraMetadata * _Nonnull)metadata NS_SWIFT_NAME(didMetadataReceived(_:));
触发时机
该回调在本地用户接收到元数据时被触发。
参数
- metadata
- 接收到的元数据。详见 AgoraMetadata。