媒体附属信息是如何发送消息的?


你好, 咨询下, 我们的媒体附属信息的发送流程或发送接口是什么?

** setMediaMetadataDataSource:withType:**
setMediaMetadataDelegate:withType:
但是目前仅支持视频格式的附属信息:文档链接地址是https://docs.agora.io/cn/Interactive%20Broadcast/API%20Reference/oc/Classes/AgoraRtcEngineKit.html#//api/name/setMediaMetadataDataSource:withType:

收到, 感谢!

你好, 打搅一下,刚才的文档是IOS/MAC端, C++端没有找到这个接口,请问C++平台的是那个接口, 谢谢!

https://docs.agora.io/cn/Interactive%20Broadcast/API%20Reference/cpp/classagora_1_1rtc_1_1_i_metadata_observer.html
这里 onReadyToSendMetadata()为true就发送啦

抱歉,再次打搅下, onReadyToSendMetadata(), 和onMetadataReceived 不是回调么, 我不重写的话, 是要写个循环重复调用么?也没有相通回调怎么拿到返回值哈?

是的,SDK 会循环调用 onReadyToSendMetadata , 用户只需要向回调里的 MetaData 结构里的 buffer 填数据就好~

IMetadataObserver 该类是个虚类,指明 请不要在 IRtcEngineEventHandler 中实现 getMaxMetadataSizeonReadyToSendMetadataonMetadataReceived,和 onMetadataReceived 回调。
那我这个 IMetadataObserver对象如何new出来哈?

打扰下,方便给小案例么?实在是想不明白啊:joy:

我去问问看有没有这个的Demo,这块儿的功能用的少

非常感谢哈!

如果找不到这样的demo, 给你使用方法也可以的。

  1. IMetadataObserver *对象如何创建?
  2. onMetadataReceived(const Metadata & metadata ) 是如何调用的?

前面在恰饭,回晚了哈,不知道你要的是不是这个:然后 Metadata 结构体由如下字段组成:

  • uid : 发送 Metadata 数据的用户 ID
  • size : 发送或收到的 Metadata 的数据大小
  • buffer : 发送或收到的 Metadata 数据
  • timeStampMs : 该 Metadata 的时间戳

registerMediaMetadataObserver()

virtual int agora::rtc::IRtcEngine::registerMediaMetadataObserver ( IMetadataObserver * observer ,


IMetadataObserver::METADATA_TYPE type
)

注册媒体 metadata 观测器用于接收或发送 metadata。

注解

  • 请在 joinChannel 前调用该方法
  • 该方法仅使用于直播场景

参数

observer 指向已注册的 metadata 观测器的指针。详见: IMetadataObserver
type 用户希望在观测器中使用的 METADATA 类型 。目前仅支持 VIDEO_METADATA 。详见: METADATA_TYPE

返回

  • 0: 方法调用成功
  • < 0: 方法调用失败

onReadyToSendMetadata()

virtual bool agora::rtc::IMetadataObserver::onReadyToSendMetadata ( Metadata & metadata )

发送端已准备好发送 Metadata

当 SDK 准备好接收和发送 Metadata 时,会触发该回调方法。

注解

请确保在该方法中传入的 Metadata 大小不超过 getMaxMetadataSize 中设定的值。

参数

metadata 用户想要发送的 Metadata

返回

  • true: 发送
  • false: 不发送

文档我看过了, 谢谢,
我想了解以下两点:

  1. IMetadataObserver *对象如何创建?
  2. onMetadataReceived(const Metadata & metadata ) 是如何调用的?


Demo是没有,类似于这样
继承 IMetadataObserver ,然后重写发送和接收的函数。IMetadataObserver * 指针通过 new 上面继承的子类就行了。
onMetadataReceived 是 SDK 响应这个回调 ,不是让用户去调用的。

感谢!

没事没事,这块儿用的太少了,我其实也很迷糊的哈哈哈哈哈

buffer是把自定义的数据转二进制表