本文对引擎创建的会话相关的回调函数进行说明。
会话控制
其中包含发起人创建房间、发布音视频流、订阅方加入房间等回调通知。
/**
* 会话控制,每次通话对应一个会话
* 用于创建房间,加入房间、发布、订阅等操作,只有加入或者创建房间成功,才会分配合法的 sessionId
* 对于房间创建者,典型流程是:CreateRoom -> Publish -> FeedAudio/FeedVideo -> LeaveRoom,后续有人加入再做 Subscribe
* 对于房间加入者,典型流程是:JoinRoom -> Subscribe -> LeaveRoom,当然,JoinRoom 以后也可以做 Publish
* 另外还支持通过 SendMessage 接口发送文本消息到对端,peers 存放接收方的 uid 列表
**/
struct MRtcSession {
MRtcSession() {};
virtual ~MRtcSession() {};
virtual void CreateRoom(const CreatRoomParam& createParam) = 0;
virtual void JoinRoom(const JoinRoomParam& joinParam) = 0;
virtual void Publish(const PublishParam& pubParam) = 0;
virtual void Subscribe(const SubscribeParam& subParam) = 0;
virtual void FeedAudio(const RtcAudioData& audio) = 0;
virtual void FeedVideo(const RtcVideoData& video) = 0;
virtual void SendText(const std::string& text,const std::list<std::string> peers) = 0;
virtual void LeaveRoom() = 0;
virtual std::string GetSessionId() = 0;
virtual void ClearAudio() = 0; //清除音频队列数据,实现打断机器人说话的功能
virtual int32_t AudioQueueSize() = 0; //查看音频队列大小,一定程度上可以判断机器人说的话是不是发送完毕了
virtual void StartRecord() = 0;
};
会话监听器
音视频流发布成功、加入方订阅成功等事件均会触发相应的回调通知。
/**
* 会话监听器,可以侦听会话中产生的一些事件,比如发布成功,订阅成功等
* 当有新的发布者加入或者离开会话,会得到通知,告知该发布者的一些信息,包括使用的流 ID、用户 ID 等
* 如果订阅了某个发布者的流数据,那么还会收到其相应的音视频数据
**/
struct MRtcSessionListener {
MRtcSessionListener() {};
virtual ~MRtcSessionListener(){};
virtual void OnSessionEvent(RtcEvent event) = 0;
virtual void OnNewPublisher(StreamInfo info) = 0;
virtual void OnStreamGone(StreamInfo info) = 0;
virtual void OnNewSubscriber(StreamInfo info) = 0;
virtual void OnMixedAudio(const RtcAudioData& audio){} //混音后的音频数据,该接口保留,两人场景下没有用到
virtual void OnAudio(const RtcAudioData& audio,const std::string& streamId) = 0;
virtual void OnVideo(const RtcVideoData& video,const std::string& streamId) = 0;
virtual void OnText(const RtcTextData& text) = 0;
//H264-NALU 对接的场景下,需要反馈一些信息 给到编码器做实时调节
virtual void OnKeyFrameRequest() {}
virtual void OnEncoderQosRequest(const MRtcEncoderQosParams& params) {}
//通知有人进入房间,主要是确保 2 人都在房间以后,再启动录制,业务不需要录制则不需要关注该回调
virtual void OnNewJoiner(UserInfo user) {}
};
文档内容是否对您有帮助?