即构科技 (ZEGO) 极速音视频 OHOS SDK 是一个基于 ZegoExpressEngine 鸿蒙Next原生开发,提供视频直播以及实时音视频服务。仅需几行代码,30分钟即可轻松接入。
了解更多解决方案:https://www.zego.im
ohpm i @zego/zego-express-engine
OpenHarmony ohpm 环境配置等更多内容,请参考 如何安装 OpenHarmony ohpm 包
登录 ZEGO 官网 注册账号,根据自身实际业务需求选择场景,获取 AppID 与 AppSign,用于初始化 SDK。
使用鸿蒙官方IDE DevecoStudio,创建Arkts类型的项目
开发者需要从 ohpm 处下载或 ZEGO SDK 官网下载 sdk,然后在项目中引入对 sdk 的依赖,SDK提供的是Har包的形式。
import ZegoExpressEngine, {
ZegoBarrageMessageInfo,
ZegoBroadcastMessageInfo,
ZegoLogConfig,
ZegoPlayerConfig,
ZegoPublishChannel,
ZegoPublisherConfig,
ZegoRoomConfig,
ZegoRoomExtraInfo,
ZegoRoomState,
ZegoScenario,
ZegoSoundLevelConfig,
ZegoStreamResourceMode,
ZegoView,
ZegoEngineProfile
} from '@zego/zego-express-engine'
// 使用从 ZEGO 控制台申请到的 appID 用于初始化
let profile:ZegoEngineProfile = new ZegoEngineProfile(KeyCenter.appID, KeyCenter.appSign, ZegoScenario.General, Context);
ZegoExpressEngine.createEngine(profile).then((engineInst) => {
this.ZegoExpressInstance = engineInst;
})
let user:ZegoUser = new ZegoUser();
user.userID = this.currentUserID;
user.userName = this.currentUserName;
let roomConfig:ZegoRoomConfig = new ZegoRoomConfig();
roomConfig.isUserStatusNotify = true;
this.ZegoExpressInstance.loginRoom(this.currentRoomID, user, roomConfig);
在成功登入房间后,可调用 startPreview 开启音视频:
// 需要在登入房间之后才能开启音视频通话
let view:ZegoView = new ZegoView();
view.view = this.previewID;
view.viewMode = this.viewMode;
this.ZegoExpressInstance.startPreview(view, ZegoPublishChannel.Main);
let publisherConfig:ZegoPublisherConfig = new ZegoPublisherConfig();
publisherConfig.roomID = this.currentRoomID;
publisherConfig.forceSynchronousNetworkTime = 1;
this.ZegoExpressInstance.startPublishingStream(this.currentStreamID, publisherConfig, ZegoPublishChannel.Main);
登入房间后主动监听 onRoomStreamUpdate,在收到其他用户推出的音视频流,即可拉取:
// 监听 roomStreamUpdate
this.ZegoExpressInstance.on('onRoomStreamUpdate', (roomID: string, updateType: zego.ZegoUpdateType, streamList: zego.ZegoStream[], extendedData: string) => {
this.currentPlayStreamID = streamList[0].streamID;
})
let view:ZegoView = new ZegoView();
view.view = this.playerViewID;
view.viewMode = this.viewMode;
let playerConfig:ZegoPlayerConfig = new ZegoPlayerConfig();
playerConfig.resourceMode = ZegoStreamResourceMode.Default;
this.ZegoExpressInstance.startPlayingStream(this.currentPlayStreamID, view, playerConfig);
// 退出房间
this.ZegoExpressInstance.logoutRoom(this.currentRoomID);
// 销毁引擎
ZegoExpressEngine.destroyEngine();
Generated using TypeDoc