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

}
相关推荐
byte轻骑兵1 天前
【LE Audio】PBP精讲[3]: 公共广播角色的能力要求与执行规范
实时音视频·蓝牙耳机·le audio·蓝牙音频·低功耗音频
YMWM_1 天前
lerobot库中RTC更新逻辑
人工智能·rtc·lerobot
大模型探索者1 天前
重塑金融合规与效率:中关村科金AI+RTC智能双录系统解析
人工智能·金融·实时音视频
Multipath7122 天前
破解近海通信盲区:多链路聚合技术的安全与效率价值
网络·5g·安全·智能路由器·实时音视频
hz567893 天前
视频会议终端品牌如何选择?主流产品特点与选型标准
安全·音视频·实时音视频·信息与通信
hellojackjiang20113 天前
移动端实时音视频聊天框架 RainbowAV v2.2.7发布
webrtc·实时音视频·即时通讯
山顶夕景6 天前
【全模态】音视频理解模型Audio-Visual Flamingo
音视频·video·vlm·多模态理解
调试到凌晨7 天前
免费配音工具前置验证价值分析:音色选型、参数调优、克隆测试的零成本方案
人工智能·经验分享·实时音视频
深圳元器猫8 天前
从分立到集成:RX8130CE RTC时钟模块架构解析与选型实战
架构·实时音视频
DogDaoDao9 天前
FFmpeg 9.0 “Lei“ 正式发布:十年之后,以你之名
ffmpeg·音视频·实时音视频·视频编解码·ffprobe·ffmpeg 9.0