播流

登录房间成功后,会收到房间内的除自己以外的推流数据,通过调用播流接口,可以播放房间内指定远端流的流视频。

步骤

必须先登录房间成功才能进行播流,播流相关回调如下。

1 房间流状态变化

 /**
 * 房间流状态变化通知
 * @param roomId     房间Id
 * @param updateType 流状态
 * @param streamList 流列表
 */
ChuangLiveEngine.on("onRoomStreamUpdate", function (roomId, type, streams) {
  //增加
  if (type == 0) {   
    for (var index = 0; index < streams.length; index++) {
      //Engine.startPlayStream
    }
  }
//减少
  else{
    for (var index = 0; index < streams.length; index++) {
      //Engine.stopPlayStream
    }
  }

});

2 开始播流

2.1 开始播流

当收到上述1.1房间内新加入流信息回调(onRoomStreamUpdate)时,需要主动调用开始播流实现远端视频的播放,否则不会展示播流画面。

注意:必须登录成功,才能进行播流,否则播流无效。

  var ChuangVideoCanvas = {};
  ChuangVideoCanvas.renderMode = 1;
  ChuangVideoCanvas.mirrorMode = 0;
  ChuangVideoCanvas.canvas = renderView;
  Engine.startPlayStream(roomId, streamId, ChuangVideoCanvas);

方法参数说明:

参数 类型 是否必传 描述
streamId string 必传 要播放的流Id
canvas ChuangVideoCanvas 必传 显示播流画面的容器view

2.2 开始播流结果回调

当调用开始播流接口后,会收到播流结果回调,表示播流成功与否。返回code:0表示播流成功,code为其他表示播流异常。

/**
 * 播流状态回调
 * @param streamId  流Id
 * @param playState 播流状态
 * @param errorCode 错误码
 */  

ChuangLiveEngine.on("onPlayStreamStateUpdate", function (streamId, state, errorCode) {
      console.log("onPlayStreamStateUpdate", streamId, state, errorCode);

});

2.3 播流首帧回调

当调用开始播流接口后,播流开始后会收到首帧回调。

/**  
 * 播流首帧视频回调
 * @param streamId 流Id
 */    
 ChuangLiveEngine.on("onPlayStreamFirstVideo", function (streamId) {
      console.log("onPlayStreamFirstVideo", streamId);

});

3 停止播流

3.1 停止播流方法

当收到上述1.2离开房间的流信息回调(onPlayStreamStateUpdate)时候,需要停止播放该流数据和从UI上移除播流View,停止播放流数据的方法:stopPlayStream:

 Engine.stopPlayStream(streamId);

方法参数说明:

参数 类型 是否必传 描述
streamId string 必传 要播放的流Id

3.2 停止播流回调

当主动调用停止播流接口或者其他网络异常引起播放中断的时候会收到该回调,可用来监控异常停止播流的视频流。

/**
 * 播流状态回调
 * @param streamId  流Id
 * @param playState 播流状态
 * @param errorCode 错误码
 */
ChuangLiveEngine.on("onPlayStreamStateUpdate", function (streamId, playState, errorCode) {
      console.log("onPlayStreamStateUpdate", streamId, state, errorCode);

});

results matching ""

    No results matching ""