播流
登录房间成功后,会收到房间内的除自己以外的推流数据,通过调用播流接口,可以播放房间内指定远端流的流视频。
步骤
必须先登录房间成功才能进行播流,播流相关回调如下。
1.1 房间流状态变化
/**
* 房间流状态变化通知
* @param roomId 房间Id
* @param updateType 流状态
* @param streamList 流列表
*/
public void onRoomStreamUpdate(String roomId, ChuangStreamUpdateType updateType, List<ChuangStreamInfo> streamList) {
if (chuangStreamUpdateType == ChuangStreamUpdateType.ADD) {
//处理新增用户,分配新的播放view,调用开始播流方法
}
if (chuangStreamUpdateType == ChuangStreamUpdateType.DELETE) {
//处理离开用户,如调用停止播流方法等
}
}
1.2 开始播流
1.2.1 开始播流
当收到上述1.1房间内新加入流信息回调(onRoomStreamUpdate)时,需要主动调用开始播流实现远端视频的播放,否则不会展示播流画面。
注意:必须登录成功,才能进行播流,否则播流无效。
ChuangVideoCanvas canvas = new ChuangVideoCanvas();
canvas.view = surfaceView;
canvas.videoRenderMode = ChuangVideoRenderMode.ASPECT_FIT;
canvas.videoMirrorMode = ChuangVideoMirrorMode.MIRROR_AUTO;
mLiveEngine.startPlayStream(streamId, canvas);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | String | 必传 | 要播放的流Id |
canvas | ChuangVideoCanvas | 必传 | 显示播流画面的容器view、填充模式、镜像模式 |
1.2.2 开始播流结果回调
当调用开始播流接口后,会收到播流结果回调,表示播流成功与否。返回code:0表示播流成功,code为其他表示播流异常。
/**
* 播流状态回调
* @param streamId 流Id
* @param playState 播流状态
* @param errorCode 错误码
*/
public void onPlayStreamStateUpdate(String streamId, ChuangPlayState playState, int errorCode) {
if (chuangPlayState == ChuangPlayState.PLAY_CONNECTED && code == ChuangLiveVideoError.CHUANG_SUCCESS) {
//播流成功
}
1.2.3 播流首帧回调
当调用开始播流接口后,播流开始后会收到首帧回调。
/**
* 播流首帧视频回调
* @param streamId 流Id
*/
public void onPlayStreamFirstVideo(String streamId) {
}
1.3 停止播流
1.3.1 停止播流方法
当收到上述1.2离开房间的流信息回调(onPlayStreamStateUpdate)时候,需要停止播放该流数据和从UI上移除播流View,停止播放流数据的方法:stopPlayStream:
mLiveEngine.stopPlayStream(streamId);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | String | 必传 | 要播放的流Id |
1.3.2 停止播流回调
当主动调用停止播流接口或者其他网络异常引起播放中断的时候会收到该回调,可用来监控异常停止播流的视频流。
/**
* 播流状态回调
* @param streamId 流Id
* @param playState 播流状态
* @param errorCode 错误码
*/
public void onPlayStreamStateUpdate(String streamId, ChuangPlayState playState, int errorCode) {
if (chuangPlayState == ChuangPlayState.PLAY_DISCONNECTED && code == ChuangLiveVideoError.CHUANG_SUCCESS) {
//播流停止
}
1.4 其他播流相关回调
1.4.1播流质量回调【仅在调试时使用,上线时不要使用】
当成功调用开始播流之后,就会每隔1秒收到1次该回调,主要用来调试查看播流质量状况。
/**
* 推流质量回调
* @param streamId 流Id
* @param quality 流质量信息
*/
public void onPublishStreamQualityUpdate(String streamId, ChuangPublishStreamQuality quality) {
}
1.4.2 播放远端流方向旋转回调
推流端默认竖屏采集视频,且支持自适应推流方向,如果是竖屏采集推流,当推流端手机旋转方向,则在播流端开始播流后,会收到远端流方向改变的回调,APP可以根据此回调调整播放填充模式等处理。
/**
* 播放流视频方向发生改变
* @param streamId 播放流ID
* @param rotation 旋转方向,
*/
public void onPlayStreamVideoRotationChanged(String streamId, int rotation) {
}
1.4.3 播放远端的麦克风摄像头状态更新回调
当远端推流者修改了麦克风、摄像头状态时,当前播流端会收到该回调。
/**
* 音视频流状态改变回调
*
* @param streamId 流Id
* @param state 流状态
*/
public void onPlayStreamStateChanged(String streamId, ChuangStreamState state) {
}
1.4.4 播放远端流音量大小变化回调
当开始播流后按照设定频率进行回调,如果没有播流,则不回调 。
/**
* 播流音量大小回调
* @param soundLevels 音量信息
*/
public void onRemoteSoundLevelUpdate(ChuangSoundLevel[] soundLevels) {
}