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

}
相关推荐
海水冷却2 天前
2026年实时音视频服务计费模式指南
实时音视频
番茄灭世神4 天前
PN学堂GD32教程第8篇——RTC
实时音视频
runner365.git4 天前
RTC实现VoiceAgent(二)
大模型·webrtc·实时音视频·voiceagent
xuxie994 天前
N18 RTC
单片机·嵌入式硬件·实时音视频
runner365.git5 天前
RTC会议实时翻译系统
实时音视频
runner365.git5 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
深念Y6 天前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
海水冷却9 天前
2026 主流 RTC SDK 选型参考,7 大维度横向对比
实时音视频·rtc
TEL1892462247710 天前
IT6636/IT66362(3进1出 / 2进1出 HDMI 2.1 48Gbps Retiming Switch,内置 MCU)
音视频·实时音视频·视频编解码
天上路人15 天前
A-59F 多功能语音处理模组在本地会议系统扩音啸叫处理中的技术应用与性能分析
人工智能·神经网络·算法·硬件架构·音视频·语音识别·实时音视频