火山 RTC 引擎9 ----集成 appkey

一、集成 appkey

1、网易RTC 初始化过程

1)、添加头文件

实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间、观众CDN拉流、连麦者上下麦、结束直播等。本文档为您展示互动直播提供的基本业务流程。https://doc.yunxin.163.com/interactive-streaming/guide/jM1MjM5ODc?platform=windows

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

}
相关推荐
小白|5 小时前
CANN与实时音视频AI:构建低延迟智能通信系统的全栈实践
人工智能·实时音视频
我真会写代码1 天前
WebSocket:告别轮询,实现Web实时通信 WebRTC:无需插件,实现浏览器端实时音视频通信
网络·websocket·网络协议·webrtc·实时音视频
TSINGSEE2 天前
国标GB28181视频质量诊断:EasyGBS服务插件EasyVQD快速识别花屏、蓝屏、画面冻结抖动
人工智能·音视频·实时音视频·视频编解码·视频质量诊断·花屏检测·画面抖动
柒.梧.2 天前
理解WebRTC:浏览器原生实时音视频通信
webrtc·实时音视频
REDcker3 天前
RTSP 直播技术详解
linux·服务器·网络·音视频·实时音视频·直播·rtsp
shansz20205 天前
暂时无法解决的关于STM32F103的RTC日期更新问题
stm32·嵌入式硬件·实时音视频
ZEGO即构开发者6 天前
如何用一句话让AI集成 ZEGO 产品
ai·实时互动·实时音视频·rtc
视频技术分享10 天前
2026年实时音视频服务选型深度解析
音视频·实时音视频·视频
摸摸电10 天前
RTC电路电池寿命计算?
实时音视频
mftang10 天前
STM32 RTC 唤醒中断功能实现低功耗功能
stm32·单片机·嵌入式硬件·rtc·超低功耗