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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍Qwen3技术报告中提到的模型架构技术

详细介绍Qwen3技术报告中提到的一些主流模型架构技术&#xff0c;并为核心流程配上相关的LaTeX公式。 这些技术都是当前大型语言模型&#xff08;LLM&#xff09;领域为了提升模型性能、训练效率、推理速度或稳定性而采用的关键组件。 1. Grouped Query Attention (GQA) - 分组…

光电效应理论与实验 | 从爱因斯坦光量子假说到普朗克常量测定

注&#xff1a;本文为“光电效应”相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排&#xff0c;未整理去重。 图片清晰度受引文原图所限。 如有内容异常&#xff0c;请看原文。 Photoelectric Effect 光电效应 Discussion dilemma Under the…

Visual Studio 2019/2022:当前不会命中断点,还没有为该文档加载任何符号。

1、打开调试的模块窗口&#xff0c;该窗口一定要在调试状态下才会显示。 vs2019打开调试的模块窗口 2、Visual Studio 2019提示未使用调试信息生成二进制文件 未使用调试信息生成二进制文件 3、然后到debug目录下看下确实未生成CoreCms.Net.Web.WebApi.pdb文件。 那下面的…

打破性能瓶颈:用DBB重参数化模块优化YOLOv8检测头

文章目录 引言DBB 重参数化模块简介DBB 的优势 YOLOv8 检测头的结构分析使用 DBB 模块魔改检测头替换策略代码实现改进后的效果预期 实验与验证总结与展望 引言 在目标检测领域&#xff0c;YOLO 系列算法一直以其高效的检测速度和不错的检测精度受到广泛关注。随着版本的不断更…

如何成为更好的自己?

成为更好的自己是一个持续成长的过程&#xff0c;需要结合自我认知、目标规划和行动力。以下是一些具体建议&#xff0c;帮助你逐步提升&#xff1a; 1. 自我觉察&#xff1a;认识自己 反思与复盘&#xff1a;每天花10分钟记录当天的决策、情绪和行为&#xff0c;分析哪些做得…

免费使用GPU的探索笔记

多种有免费时长的平台 https://www.cnblogs.com/java-note/p/18760386 Kaggle免费使用GPU的探索 https://www.kaggle.com/ 注册Kaggle账号 访问Kaggle官网&#xff0c;使用邮箱注册账号。 发现gpu都是灰色的 返回home&#xff0c;右上角的头像点开 验证手机号 再次code-you…

CSS- 4.2 相对定位(position: relative)

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 点…

如何使用Antv X6使用拖拽布局?

拖拽效果图 拖拽后 布局预览 官方&#xff1a; X6 图编辑引擎 | AntV 安装依赖 # npm npm install antv/x6 --save npm install antv/x6-plugin-dnd --save npm install antv/x6-plugin-export --save需要引入的代码 import { Graph, Shape } from antv/x6; import { Dnd } …

数据库健康监测器(BHM)实战:如何通过 HTML 报告识别潜在问题

在数据库运维中,健康监测是保障系统稳定性与性能的关键环节。通过 HTML 报告,开发者可以直观查看数据库的运行状态、资源使用情况与潜在风险。 本文将围绕 数据库健康监测器(Database Health Monitor, BHM) 的核心功能展开分析,结合 Prometheus + Grafana + MySQL Export…

PCB设计实践(二十四)PCB设计时如何避免EMI

PCB设计中避免电磁干扰&#xff08;EMI&#xff09;是一项涉及电路架构、布局布线、材料选择及制造工艺的系统工程。本文从设计原理到工程实践&#xff0c;系统阐述EMI产生机制及综合抑制策略&#xff0c;覆盖高频信号控制、接地优化、屏蔽技术等核心维度&#xff0c;为高密度、…

嵌入式硬件篇---陀螺仪|PID

文章目录 前言1. 硬件准备主控芯片陀螺仪模块电机驱动电源其他2. 硬件连接3. 软件实现步骤(1) MPU6050初始化与数据读取(2) 姿态解算(互补滤波或DMP)(3) PID控制器设计(4) 麦克纳姆轮协同控制4. 主程序逻辑5. 关键优化与调试技巧(1) 传感器校准(2) PID参数整定先调P再调D最后…

【Linux基础I/O】文件调用接口、文件描述符、重定向和缓冲区

【Linux基础I/O一】文件描述符和重定向 1.C语言的文件调用接口2.操作系统的文件调用接口2.1open接口2.2close接口2.3write接口2.4read接口 3.文件描述符fd的本质4.标准输入、输出、错误5.重定向5.1什么是重定向5.2输入重定向和输出重定向5.3系统调用的重定向dup2 6.缓冲区 1.C语…

鸿蒙HarmonyOS 【ArkTS组件】通用属性-背景设置

&#x1f4d1;往期推文全新看点&#xff08;附带最新鸿蒙全栈学习笔记&#xff09; 嵌入式开发适不适合做鸿蒙南向开发&#xff1f;看完这篇你就了解了~ 鸿蒙岗位需求突增&#xff01;移动端、PC端、IoT到底该怎么选&#xff1f; 分享一场鸿蒙开发面试经验记录&#xff08;三面…

【76. 最小覆盖子串】

Leetcode算法练习 笔记记录 76. 最小覆盖子串 76. 最小覆盖子串 滑动窗口的hard题目&#xff0c;思路先找到第一个覆盖的窗口&#xff0c;不断缩小左边界&#xff0c;找到更小的窗口并记录。 思路很简单&#xff0c;写起来就不是一会事了&#xff0c;看题解看了几个h&#xff0…

Spring事务简单操作

什么是事务&#xff1f; 事务是一组操作的集合&#xff0c;是一个不可分割的操作 事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时 成功, 要么同时失败. 事务的操作 分为三步&#xff1a; 1. 开启事start transaction/ begin …

Rust 学习笔记:关于错误处理的练习题

Rust 学习笔记&#xff1a;关于错误处理的练习题 Rust 学习笔记&#xff1a;关于错误处理的练习题想看到回溯&#xff0c;需要把哪个环境变量设置为 1&#xff1f;以下哪一项不是使用 panic 的好理由&#xff1f;以下哪一项最能描述为什么 File::open 返回的是 Result 而不是 O…

MCP 协议传输机制大变身:抛弃 SSE,投入 Streamable HTTP 的怀抱

在技术的江湖里&#xff0c;变革的浪潮总是一波接着一波。最近&#xff0c;模型上下文协议&#xff08;MCP&#xff09;的传输机制就搞出了大动静&#xff0c;决定和传统的服务器发送事件&#xff08;SSE&#xff09;说拜拜&#xff0c;转身拥抱 Streamable HTTP&#xff0c;这…

138. Copy List with Random Pointer

目录 题目描述 方法一、使用哈希表 方法二、不使用哈希表 题目描述 问题的关键是&#xff0c;random指针指向的是原链表的结点&#xff0c;这个原链表的结点对应哪一个新链表的结点呢&#xff1f;有两种办法。一是用哈希表。另一种是复制原链表的每一个结点&#xff0c;并将…

如何评估开源商城小程序源码的基础防护能力?

在电商行业快速发展的背景下&#xff0c;开源商城已经为更多企业或者开发者的首选方案&#xff0c;不过并不是所有的开源商城源码都能让人放心使用&#xff0c;今天就带大家一起了解下如何评估开源商城小程序源码的基础防护能力&#xff0c;帮助大家更好地筛选安全性高的商城源…

[Vue]跨组件传值

父子组件传值 详情可以看文章 跨组件传值 Vue 的核⼼是单向数据流。所以在父子组件间传值的时候&#xff0c;数据通常是通过属性从⽗组件向⼦组件&#xff0c;⽽⼦组件通过事件将数据传递回⽗组件。多层嵌套场景⼀般使⽤链式传递的⽅式实现provideinject的⽅式适⽤于需要跨层级…