一、集成 appkey
1、網易RTC 初始化過程
1)、添加頭文件
實現互動直播 - 互動直播 2.0網易云信互動直播產品的基本功能包括音視頻通話和連麥直播,當您成功初始化 SDK 之后,您可以簡單體驗本產品的基本業務流程,例如主播加入房間、觀眾CDN拉流、連麥者上下麥、結束直播等。本文檔為您展示互動直播提供的基本業務流程。https://doc.yunxin.163.com/interactive-streaming/guide/jM1MjM5ODc?platform=windows
#include "nrtc_engine.h"
2)、初始化NERtcEngine?
// 創建 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)、
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)、
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 engineif (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 managerauto 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
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 ;
#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)、調用示例
//火山rtcbytertc::IRTCVideo* m_video = nullptr;std::unique_ptr<ByteRTCEventHandler> m_handler;void CreateByterRtcVideo();
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;}}