一、集成 appkey
1、网易RTC 初始化过程
1)、添加头文件
cpp
#include "nrtc_engine.h"
2)、初始化NERtcEngine
cpp
// 创建 RTC 引擎对象并返回指针。
nertc::IRtcEngineEx *rtc_engine_ = (IRtcEngineEx *)createNERtcEngine();
// 设置已开通音视频功能的云信应用的AppKey。
rtc_engine_context_.app_key = app_key_.c_str();
// 设置日志目录的完整路径,采用UTF-8 编码。可选。
rtc_engine_context_.log_dir_path = log_dir_path_.c_str();
// 设置日志级别,默认级别为 kNERtcLogLevelInfo。
rtc_engine_context_.log_level = log_level;
// 指定 SDK 输出日志文件的大小上限,单位为 KB。如果设置为 0,则默认为 20 M。
rtc_engine_context_.log_file_max_size_KBytes = log_file_max_size_KBytes;
// 设置SDK向应用发送回调事件的通知。
rtc_engine_context_.event_handler = this;
// 初始化 NERTC SDK 服务。
if (kNERtcNoError != rtc_engine_->initialize(rtc_engine_context_))
{
//TODO
}
3)、NRTCEngine
3.1)、
cpp
class NRTCEngine {
public:
explicit NRTCEngine(void *parent);
~NRTCEngine();
nertc::IRtcEngineEx* GetRtcEngine() { return rtc_engine_; }
bool Init(const char* app_key, const char* log_dir_path, uint32_t log_file_max_size_KBytes);
void Uninit();
int joinChannel(const string& token, const string& roomid, const string& uid, bool autoStartVideo, bool autoStartAudio, int video_resolution,std::string json="");
int leaveChannel();
void setCurrentVideoProfile(unsigned int index);
int muteLocalAudioStream(bool mute);
int sendSEIMsg(std::string SEIMsg);
int enableLocalVideo(bool enabled);
3.2)、
cpp
bool NRTCEngine::Init(const char *app_key, const char *log_dir_path, uint32_t log_file_max_size_KBytes){
//return true;
rtc_engine_ = static_cast<IRtcEngineEx *>(createNERtcEngine());
rtc_engine_context_.app_key = app_key;
rtc_engine_context_.log_dir_path = log_dir_path;
rtc_engine_context_.log_level = kNERtcLogLevelInfo;
rtc_engine_context_.log_file_max_size_KBytes = log_file_max_size_KBytes;
rtc_engine_context_.event_handler = rtc_engine_handler_.get();
rtc_engine_context_.video_use_exnternal_render = false;
//Init NERTC engine
if (kNERtcNoError != rtc_engine_->initialize(rtc_engine_context_)){
//qDebug("ERROR: Failed to initialize NERtc Engine\n");
return false;
}
rtc_engine_->setStatsObserver(rtc_engine_handler_.get());
//Init audio/video device manager
auto ret = rtc_engine_->queryInterface(kNERtcIIDAudioDeviceManager, (void**)&audio_device_manager);
//auto ret= rtc_engine_->queryInterface(nertc::kNERtcIIDAudioDeviceManager, (void**)(&audio_device_manager));
ret = rtc_engine_->queryInterface(kNERtcIIDVideoDeviceManager, (void**)&video_device_manager);
rtc_engine_->setParameters("{\"publish_self_stream_enabled\":true,\"audio_processing_ai_ns_enable\":true}"); //AI 降噪
GetAllDeviceInfo();
rtc_engine_->enableSuperResolution(true); //AI 超分
// rtc_engine_->startBeauty("d:\\bk\\nebeauty");
return true;
}
3.3)、APP_KEY
cpp
NRTCEngine::NRTCEngine(void *parent):
rtc_engine_handler_(new NRTCEngineEvent(*this))
{
auto_start_video_ = false;
auto_start_audio_ = false;
rtc_engine_ = nullptr;
audio_device_manager = nullptr;
video_device_manager = nullptr;
connection_state_ = kNERtcConnectionStateDisconnected;
cur_my_uid_ = 0;
app_key_ = APP_KEY;
current_video_profile = kNERtcVideoProfileStandard;
std::string byteLogDir ;
cpp
#define APP_KEY "81b33512dd86b9f4cffafe....." // put your app key here, testing
#define MAX_PATH 260 // max length of the log's directory path
#define LIVE_STREAM_WIDTH (g_CanvasW)
#define LIVE_STREAM_HEIGHT (g_CanvasH)
2、字节SDK 初始化过程
1)、appkey

集成到项目中,暂时放在nrtc_engine.h中

2)、调用示例
cpp
//火山rtc
bytertc::IRTCVideo* m_video = nullptr;
std::unique_ptr<ByteRTCEventHandler> m_handler;
void CreateByterRtcVideo();
cpp
void NRTCEngine::CreateByterRtcVideo()
{
bytertc::LogConfig log;
log.log_level = bytertc::LocalLogLevel::kInfo;
bytertc::setLogConfig(log);
if (m_video == nullptr) {
m_handler.reset(new ByteRTCEventHandler());
m_video = bytertc::createRTCVideo(g_appid.c_str(), m_handler.get(), nullptr);
if (m_video == nullptr) {
return;
}
}
else {
return;
}
}