SDK使用
- 检测浏览器是否兼容SDK。
try { let isMatch = await ISDPRTC.checkSystemRequirements() if(isMatch) { console.log(‘兼容’) } } ecatch(error) { console.log(‘不兼容’) }
2.创建客户端。
let config = {appId, domain} let client = ISDPRTC.createClient(config)
domain:域名。
appId:应用ID,只有App ID相同的应用程序才能进入同一个房间进行互通。
说明:
domain和appId请提交工单申请。
3.加入房间。
JoinConfig option = {userId:userId, signature:signature, ctime:ctime, host:host, port:port, role:role, 驼峰结构: userName } async joinRoom() { try{ await client.join(channel, option) console.log(‘加入成功’) } catch(e){ console.log(‘加入失败’) } }
- userId:本端用户唯一标识。
- signature:鉴权签名字串,应用开发者需要向远端服务器获取鉴权签名。
- host: 媒体服务器接入IP
- port: 媒体服务器接入端口
- userRole: 角色,可以标识媒体方向,取值如下:
0:publisher。
- channel:房间ID,房间唯一标识。
加入房间成功后,对端会收到“peer-join”事件。
4.创建本地流并发布。
Stream stream = ISDPRTC.createStream({audio:true,microphoneId:xxx,video:true,cameraId:yyy}) stream.initialize().then(() => { client.publish(stream) stream.play(elementId,{muted:true}) //播放本地流 })
5.当收到服务器发送的“stream-added”事件通知时,可以订阅远端媒体。
client.on('stream-added’, (event) => { const stream = event.stream client.subscribe(stream,{video:true, audio:true}) }
订阅完成之后,本端会收到“stream-subscribed”事件通知,可设置对端窗口,播放对端音视频。
client.on('stream-subscribed', (event) => { const stream = event.stream stream.play(elementId, { objectFit: contain, muted: true}) }
- elementId:HTML <div>标签 ID。
- 播放选项参数:
objectFit:必选,string类型,取值包括contain、cover和fill。
muted:可选,boolean类型,true表示静音,false表示不静音,默认值为false。
若是不想观看对端,则可取消订阅对端音视频:
client.unsubscribe(stream)
6.当远端离开房间,本端会收到“peer-leave”事件通知,清理远端用户的资源。
client.on('peer-leave', (event) => { // just do something… }
event.userId:对端用户标识,通过监听“peer-leave”事件获得。
远端用户退出,本端同时会收到“stream-removed”事件通知,可在事件处理函数中,关掉视频窗口。
client.on('stream-removed', (event) => { event.stream.close() }
通过stream对象调用close()方法,该方法会移除之前用“play”创建的video标签元素并关闭摄像头、麦克风。
7.本端离开房间。
client.leave()
当音视频通话结束时,调用此接口离开房间。
至此,音视频通话基本流程可以成功运行。