播流
登录房间成功后,会收到房间内的除自己以外的推流数据, 通过调用播流接口, 可以播放房间内存在的远端流。
步骤
1、 播/停播流时机
1.1 房间流状态变化回调
登录房间成功以后, 当房间内有流进入房间和离开房间时, 会触发on('RoomStreamUpdate', function(roomId, type, streamList){})
回调方法,获此时APP层可在回调方法中处理新增流/离开流, 比如分配新的/移除播放容器live-player, 并调用开始/停止播流方法开始/停止播流。
/*
@description 房间流状态变化回调
@param roomId 房间ID
@param type 房间流改变类型
@param streamList 流列表
*/
ChuangLiveEngine.on(on('RoomStreamUpdate', function(roomId, type, streamList){}))
2、 播流
2.1 开始播流方法
当收到上述1.1回调有流进入房间时, 需要主动调用startPlayStream (streamId, onFailure)
播流方法获取播流地址,并在UI上添加播流组件,然后调用组件的start()方法实现远端流的播放。
ChuangLiveEngine.startPlayStream (streamId, onFailure);
注意:必须登录成功, 才能进行播流, 否则播流无效。
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 远端流的ID |
onFailure | failCallback | 选传 | 回调:播放远端流失败 |
3、 停止播流
当收到上述1.1回调有流离开房间时, 需要调用stopPlayStream (streamId, onFailure)
该方法,停止播流,并从UI上移除播流组件。
ChuangLiveEngine.stopPlayStream(streamId, onFailure);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 停止播放的流名 |
onFailure | failCallback | 选传 | 回调:停止播放远端流失败 |
4、 播流状态回调
当主动调用播流接口并播流成功,主动调用停止播流接口并成功停止播流,或者其他网络异常引起播流中断的时候会收到该回调, 可用来监控远端流的视频流状态。
/*
@description 播流状态变化回调
@param streamId 流ID
@param state 流状态
@param errorCode 错误码
*/
ChuangLiveEngine.on(on('PlayStreamStateUpdate', function(streamId, state, errorCode){}))
流状态 | 错误码 | 说明 |
---|---|---|
0 | 0 | 停止播流成功 |
1 | 12013 | 网络原因导致播流中断重连 |
2 | 0 | 播流成功 |
2 | 12025 | 播流重连成功 |
5、 播流状态通知
用户可以根据自己需要调用小程序 statusNotification(streamId, code, {})
方法,进行通知。
6、 播流重连
当用户收到小程序自带回调 bindstatechange 结果为 detail.code === -2301 时,需主动调用播流重连接口 playNextConn(streamId,onFailure)
,进行播流重连,或者调用 5、中的方法,通知SDK层播流状态,稍后会受到播流状态回调。