当前位置: 首页 > java >正文

火山 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.xdnf.cn/news/7361.html

相关文章:

  • 5月19日笔记
  • 4.7 时间模块
  • 网络传输(ping命令,wget命令,curl命令),端口
  • 接口排查不能靠猜:实战中如何用抓包工具精准定位问题(含 Charles 使用示例)
  • 人工智能、机器学习与深度学习:全面介绍与对比分析
  • 组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例
  • 队列和栈的区别
  • 【科研项目】大三保研人科研经历提升
  • Windows多功能工具箱软件推荐
  • gcc: attribute: packed
  • 区块链blog2_中心化与效率
  • 将 Element UI 表格拖动功能提取为公共方法
  • SpringBoot(二)--- SpringBoot基础(http协议、分层解耦)
  • HGDB中如何为表增加自增主键
  • 如何映射 MongoDB 的 _id 字段?
  • Java大厂面试实战:Spring Boot与微服务场景中的技术点解析
  • 4.6 sys模块
  • 线程池中任务队列满-如何把多余的任务存储到Redis中
  • python打卡第30天
  • 体育赛事直播App的架构设计与关键技术解析
  • JavaScript面试题之原型链详解
  • 多商户1.8.1版本前端问题优化集合指南
  • python:pymysql概念、基本操作和注入问题讲解
  • 嵌入式学习--江协51单片机day8
  • AI Agent开发第71课-一个完善的可落地企业AI Agent全架构
  • 博客系统功能测试
  • CI/CD 实践:实现可灰度、可监控、可回滚的现代部署体系
  • MySQL死锁:面试通关“三部曲”心法
  • 电子学会Python真题知识点总结与分析
  • Java高频面试之并发编程-18