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

}
相关推荐
TSINGSEE1 天前
数据库选择有讲究?SQLite、PostgreSQL还是MySQL?
mysql·音视频·实时音视频·数据库架构·视频编解码
Natsume17103 天前
音视频开发入门:FFmpeg vs GStreamer,新手该如何选择?
c语言·c++·ffmpeg·音视频·webrtc·实时音视频·视频编解码
DogDaoDao4 天前
深入解析quiche开源项目:从QUIC协议到云原生实践
音视频·实时音视频·tcp·quic·视频直播·流媒体协议·quiche
leo__5206 天前
STM32的RTC模块及其应用场景
stm32·嵌入式硬件·实时音视频
智能物联实验室6 天前
如何解决网关断网后时间不再统计的问题?无RTC子设备如何打通主网关的时间同步功能?
嵌入式硬件·网关·实时音视频·智能硬件
DogDaoDao8 天前
视频软解码技术详解:原理、应用与未来发展
ffmpeg·音视频·实时音视频·视频编解码·hevc·视频解码·视频软解码
ZEGO即构开发者12 天前
简单4步,快速搭建数字人实时视频通话功能
实时互动·webrtc·实时音视频·数字人·即时通讯·rtc·视频聊天·虚拟人·社交·音视频技术·ai虚拟人·ai语音驱动·android多人语音·java多人语音通话·zego·泛娱乐·社交泛娱乐·视频美颜·虚拟形象sdk·自动聊天机器人
从后端到QT22 天前
RTCP详解
服务器·音视频·实时音视频·rctp
索迪迈科技22 天前
提升行车安全的关键技术:BSD(盲点监测)与DSM(驾驶员监测)是如何工作的?
智慧城市·实时音视频·量子计算·车载监控·车辆安全
DogDaoDao1 个月前
深入理解VideoToolbox:iOS/macOS视频硬编解码实战指南
macos·ios·音视频·实时音视频·视频编解码·videotoolbox·硬编码