火山 RTC 引擎9 ----集成 appkey
一、集成 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;}}