metaRTC6.0标准版C++API

概述

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;
};

猜你喜欢

转载自blog.csdn.net/m0_56595685/article/details/130165785