播流
登录房间成功后,会收到房间内的除自己以外的推流数据, 通过调用播流接口, 可以播放房间内存在的远端流。
步骤
1、 播/停播流时机
1.1 房间流状态变化回调
登录房间成功以后, 当房间内有流进入房间和离开房间时, 会触发on('RoomStreamUpdate', function(roomId, type, streamList){})
回调方法, 此时APP层可在回调方法中处理新增流, 比如分配新的播放容器video, 调用开始播流方法开始播流。
/*
@description 房间流状态变化回调
@param roomId 房间ID
@param type 房间流改变类型
@param streamList 流列表
*/
ChuangLiveEngine.on(on('RoomStreamUpdate', function(roomId, type, streamList){}))
2、 播流
2.1 开始播流方法
当收到上述1.1 和1.2 的回调时, 需要主动调用startPlayStream (streamId, canvas, onFailure)
播流方法实现远端流的播放, 并在UI上添加播流Video,否则不会展示播流画面。
ChuangLiveEngine.startPlayStream (streamId, canvas, onFailure);
注意:必须登录成功, 才能进行播流, 否则播流无效。
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 远端流的ID |
canvas | ChuangVideoCanvas | 必传 | 页面用于用于播放的容器详情请参考ChuangVideoCanvas |
onFailure | failCallback | 选传 | 回调:播放远端流失败 |
3、 停播
3.1 停止播流方法
当收到上述1.3离开房间的流信息回调的时候, 需要调用stopPlayStream (streamId, onFailure)
停止播该方法,停止播流,并从UI上移除播流Video。
ChuangLiveEngine.stopPlayStream(streamId, onFailure);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 停止播放的流名 |
onFailure | failCallback | 选传 | 回调:停止播放远端流失败 |
3.2 播流状态回调
当主动调用播流接口并播流成功,主动调用停止播流接口并成功停止播流,或者其他网络异常引起播流中断的时候会收到该回调, 可用来监控远端流的视频流状态。
/*
@description 播流状态变化回调
@param streamId 流ID
@param state 流状态
@param errorCode 错误码
*/
ChuangLiveEngine.on(on('PlayStreamStateUpdate', function(streamId, state, errorCode){}))
流状态 | 错误码 | 说明 |
---|---|---|
0 | 0 | 停止播流成功 |
1 | 12013 | 网络原因导致播流中断重连 |
2 | 0 | 播流成功 |
2 | 12025 | 播流重连成功 |
3.3播流质量回调
当开始播流后, 可以监听远端流质量on('PlayStreamQualityUpdate',function((streamId, ChuangPlayStreamQuality){})
,实时了解远端流的情况。
ChuangStreamQuality是一个对象,包含帧率,码率,丢包等内容。
3.3 首帧视频回调,当推流的模式是音视频模式或者视频模式时会收到该回调【仅用于调试,上线时不要使用】
当服务端收到第一帧视频信息时会触发首帧视频回调, 调试阶段可以通过该回调判断视频画面显示是否正常。
/*
@description (可选)回调收到首帧视频信息(推荐仅在调试时使用)
@param streamId 流ID
*/
ChuangLiveEngine.on('PlayStreamFirstVideo', function(streamId) {})
3.4 首帧音频回调,当推流的模式是音视频模式或者音频模式时会收到该回调【仅用于调试,上线时不要使用】
当服务端收到第一帧音频信息时会触发首帧音频回调, 调试阶段可以通过该回调判断声音显示是否正常。
/*
@description (可选)回调收到首帧音频信息(推荐仅在调试时使用)
@param streamId 流ID
*/
ChuangLiveEngine.on('PlayStreamFirstAudio', function(streamId) {})
4、媒体设备控制
4.1 设置远端麦克风是否静音
即播流时是否收集远端的声音, 如果不收集mute设置为true, 如果收集则mute设置为false。 如果不设置, 播流默认是收集声音。
ChuangLiveEngine.muteRemoteAudio(streamId, mute)
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 静音的流的ID |
mute | boolean | 必传 | 设置是否收集远端流的声音,不收集为true,收集为false |
4.2 设置远端摄像头是否静音
即播流时是否收集远端的视频, 如果不收集mute设置为true, 如果收集则mute设置为false。 如果不设置, 播流默认是收集视频。
ChuangLiveEngine.muteRemoteVideo(streamId, mute)
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 静音的流的ID |
mute | boolean | 必传 | 设置是否收集远端流的视频,不收集为true,收集为false |
4.3音视频状态回调
当远端流执行静音静视频操作/反操作时会收到该回调。
/*
@description 音视频状态变化回调
@param streamId 流ID
@param state 流状态
*/
ChuangLiveEngine.on(on('PlayStreamStateChanged', function(streamId, state){}))