概述
metaRTC6.0标准版架构进行了重构,本篇文章将介绍metaRTC6.0标准版 C++ API和回调接口。
C++接口YangPeerConnection2
头文件:include/yangrtc/YangPeerConnection2.h
class YangPeerConnection2 {
public:
YangPeerConnection2(YangAVInfo* avinfo,YangStreamConfig2* streamConfig);
virtual ~YangPeerConnection2();
YangStreamConfig* streamConfig;
public:
//加入audio track
int32_t addAudioTrack(YangAudioCodec codec);
//加入video track
int32_t addVideoTrack(YangVideoCodec codec);
//设置direction
int32_t addTransceiver(YangRtcDirection direction);
//生成本端sdp
int32_t createOffer( char **psdp);
//交换sdp时,获取对端sdp后,生成本地sdp以回传回对端
int32_t createAnswer(char* answer);
//http侦听信令侦听到请求后,生成http的answer sdp
int32_t createHttpAnswer(char* answer);
//生成datachnnel
int32_t createDataChannel();
//生成数字证书
int32_t generateCertificate();
//启动metaRTC,开始ice的搜集/连接验证等,启动ice/dtls等webrtc通信
int32_t setLocalDescription(char* sdp);
//接收远程sdp
int32_t setRemoteDescription(char* sdp);
//封装了srs/zlm的信令交换并启动metaRTC
int32_t connectSfuServer();
//连接支持whip/whep协议的sfu/mcu
int32_t connectWhipWhepServer(char* url);
//关闭metartc
int32_t close();
//是否活连接
int32_t isAlive();
//是否已经连接
int32_t isConnected();
//推音频流
int32_t on_audio(YangFrame* audioFrame);
//推视频流
int32_t on_video(YangFrame* videoFrame);
//推送datachannel消息
int32_t on_message(YangFrame* msgFrame);
//加入远程candidate 专业版实现,标准版待并入
int32_t addIceCandidate(char* candidateStr);
//发送rtc系统消息
int32_t sendRtcMessage( YangRtcMessageType mess);
};
C++回调抽象类
//数据接收调用接口
class YangReceiveCallback2 {
public:
YangReceiveCallback2(){};
virtual ~YangReceiveCallback2(){};
virtual void receiveAudio(YangFrame *audioFrame)=0;
virtual void receiveVideo(YangFrame *videoFrame)=0;
virtual void receiveMsg(YangFrame *videoFrame)=0;
};
//ICE回调接口
class YangIceCallback2{
public:
YangIceCallback2(){};
virtual ~YangIceCallback2(){};
virtual void onIceStateChange(int32_t uid,YangIceCandidateState iceState)=0;
virtual void onConnectionStateChange(int32_t uid,YangRtcConnectionState connectionState)=0;
virtual void onIceCandidate(int32_t uid,char* sdp)=0;
virtual void onIceGatheringState(int32_t uid,YangIceGatheringState gatherState)=0;
};
//RTC回调接口
class YangRtcCallback2{
public:
YangRtcCallback2(){};
virtual ~YangRtcCallback2(){};
virtual void setMediaConfig(int32_t puid,YangAudioParam* audio,YangVideoParam* video)=0;
virtual void sendRequest(int32_t puid,uint32_t ssrc,YangRequestType req)=0;
};
struct YangStreamConfig2{
YangStreamConfig* streamConfig;
YangReceiveCallback2* receiveCallback;
YangRtcCallback2* rtcCallback;
YangIceCallback2* iceCallback;
};