声网SDK使用笔记

1  SDK调用步骤

1 初始化 
agora::rtc::IRtcEngine* m_rtcEngine = createAgoraRtcEngine();

//从IRtcEngineEventHandler派生,事件回调
std::unique_ptr<agora::rtc::IRtcEngineEventHandler> m_eventHandler = new AgoraRtcEngineEvent(*this); 

agora::rtc::RtcEngineContext context;
context.eventHandler = m_eventHandler.get();
context.appId = APPID;
m_rtcEngine->initialize(context);


2 设置参数:场景、角色、编码参数 
//channelType: 通信、直播、游戏
m_rtcEngine->setChannelProfile(channelType);

//roleType:主播—发送和接收,观众—接收
m_rtcEngine->setClientRole(roleType);

VideoEncoderConfiguration vec;
宽高、帧率、码率、orientation--手机摄像头横屏竖屏,是否镜像,degradationPreference编码降级偏好
m_rtcEngine->setVideoEncoderConfiguration(vec);

3 进入房间 
m_rtcEngine->startPreview();
//uid是自己的user id,
m_rtcEngine->joinChannel(key.toUtf8().data(), channel.toUtf8().data(), nullptr, uid);

int joinChannel(const char* token, const char* channelId, const char* info, uid_t uid)
token作用:用户鉴权?

4 显示本地自己视频
VideoCanvas vc;
vc.uid = 0;
vc.view = hVideoWnd; //句柄
vc.renderMode = renderType;
m_rtcEngine->setupLocalVideo(vc);
nRet = m_rtcEngine->startPreview();

5 显示远端视频
VideoCanvas vc;
vc.uid = uid;//区分不同用户
m_rtcEngine->setupRemoteVideo(vc);

6 离开房间
m_rtcEngine->stopPreview();
m_rtcEngine->leaveChannel();


7 释放资源
m_rtcEngine->release();

 图是声网官网的。

2  核心事件

//一般是自己joinChannel成功后的回调
void onJoinChannelSuccess(const char* channel, uid_t uid, int elapsed)

//其它用户加入房间的回调,记录uid
void onUserJoined(uid_t uid, int elapsed)

3 视频帧回调

agora::util::AutoPtr<agora::media::IMediaEngine> mediaEngine;
mediaEngine.queryInterface(m_rtcEngine, agora::AGORA_IID_MEDIA_ENGINE);

agora::media::IVideoFrameObserver  videoFrameObserver;
nRet = mediaEngine->registerVideoFrameObserver(videoFrameObserver);

//自己摄像头的视频帧YUV回调,直接渲染,不用按高拷贝 ?
bool onCaptureVideoFrame(VideoFrame& videoFrame)

//远端用户YUV回调,uid区分不同用户
bool onRenderVideoFrame(unsigned int uid, VideoFrame& videoFrame)

void onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed)

4 音频参数设置、相关函数

//参1 Sets the sample rate, bitrate, encoding mode, and the number of channels
//参2 场景
int setAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario)

//调节麦克风采集音量
int adjustRecordingSignalVolume(int volume)

//uid是onUserJoined回调函数获得的
int adjustUserPlaybackSignalVolume(unsigned int uid, int volume)

//取消/恢复发布本地音频流
int muteLocalAudioStream(bool mute);

//取消/恢复指定远端用户的音频流
int muteRemoteAudioStream(uid_t uid, bool mute);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值