推流
如果登录房间时选择了主播或者互动连麦角色, 需要进行推流操作, 其他人才能看到直播画面。即将自己的视频画面通过调用推流方法推送到服务端, 观看者通过从服务端播流, 才可以看到对方的音视频画面。
步骤
1、设置推流容器
推流开启之前需要设置展示流的Dom节点,用户需要在APP层创建Dom节点并设置标签id。
2、设置推流配置
推流前需要实例化一个ChuangStreamConfig流配置对象,对所要推的流进行属性设置,参数为主流或者副流(web端可以推两路流,通过主流副流来区分,流本质上没有区别)。
streamConfig = ChuangLiveEngine.newStreamConfig(ChuangLiveEngine.ChuangPublishChannel.MAIN);
所有推流配置一定要在推流前设置, 推流后设置或者修改不会生效。 如果需要修改配置, 需要停止推流, 修改配置后重新发起推流, 新的配置才会生效。
2.1 设置推流的流模式
设置推流的流模式,流的模式(参数streamstat)有三种,音视频模式: 0; 纯音频模式: 1; 纯视频模式: 2,详情请参考ChuangStreamMode。
streamConfig.setStreamstat(streamstat)
2.2 设置推流预览镜像
设置推流预览镜像,参数为true镜像,参数为false非镜像,如果不进行设置默认为镜像。
streamConfig.setMirror(mirror)
2.3 设置推流的流属性配置
通过调用setVideoConfig(videoConfig)
方法对视频的分辨率、比特率、帧率,推流模式,设备ID等内容进行设置。
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
videoConfig | ChuangVideoConfig | 必传 | 配置信息对象 ChuangVideoConfig |
streamConfig.setVideoConfig(videoConfig);
2.4 设置推流转推RTMP
如果需要推流转推到RTMP,需要设置RTMP地址, 通过调用如下方法实现:
streamConfig.setRtmpAddress(rtmpAddress);
2.5 发起推流
登录房间成功返回后, 比如主播或者多人视频场景下, 需要将自己流信息推送给他人看到, 则必须调用ChuangLiveEngine.startPublishStream(streamId, domId, streamConfig, option, onFailure)
推流接口, 将上述初始化的配置类传入推流接口。
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 流ID,流信息唯一标识,注意流ID在APP内不能重复,流ID仅支持’0’-‘9’,’a’-‘z’,’A’-‘Z',‘-’,'_'字符,不超过256个字符 |
domId | string | 必传 | 页面用于承载video的html节点的id |
streamConfig | ChuangStreamConfig | 必传 | 推流配置参数对象,详情参照ChuangVideoConfig |
option | DomPlayerOptions | 必传 | 播放器默认属性,详情参照DomPlayerOptions |
onFailure | failCallback | 选传 | 回调:播放本地流并发布失败 |
3、停止推流
需要停止推流时调用:ChuangLiveEngine.stopPublishStream (streamId, onFailure)
停止推流接口。
4、媒体设备控制
4.1 设置本端麦克风是否静音
即推流时是否采集本端的声音, 如果不采集mute设置为true, 如果采集则mute设置为false。 如果不设置, 推流默认是采集声音。
ChuangLiveEngine.muteLocalAudio(streamId, mute)
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 静音的流的ID |
mute | boolean | 必传 | 设置是否采集本端麦克风声音,不采集为true,采集为false |
4.2 设置本端摄像头是否静音
即推流时是否采集本端的视频, 如果不采集mute设置为true, 如果采集则mute设置为false。 如果不设置, 推流默认是采集视频。
ChuangLiveEngine.muteLocalVideo(streamId, mute)
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 静音的流的ID |
mute | boolean | 必传 | 设置是否采集本端视频,不采集为true,采集为false |
5、推流相关回调
5.1 推流状态回调
当主动调用推流接口并推流成功,主动调用停止推流接口并成功停止推流,或者其他网络异常引起推流中断的时候会收到该回调, 可用来监控本地流的视频流状态。
/*
@description 推流状态变化回调
@param streamId 流ID
@param state 流状态
@param errorCode 错误码
*/
ChuangLiveEngine.on(on('PublishStreamStateUpdate', function(streamId, state, errorCode){}))
流状态 | 错误码 | 说明 |
---|---|---|
0 | 0 | 停止推流成功 |
1 | 12013 | 网络原因导致推流中断重连 |
2 | 0 | 推流成功 |
2 | 12025 | 推流重连成功 |
5.2 推流质量监控回调【仅用于调试,上线时不要使用】
当开始推流后, 可以监听本地流质量on('PublishStreamQualityUpdate',function((streamId, ChuangPublishStreamQuality){})
,实时了解本地流的情况。
ChuangStreamQuality是一个对象,包含帧率,码率,丢包等内容。
6、配置混流输入流视频混入情况
用户可以通过该方法 设置 该流在参与混流时,是否混入视频数据。
streamConfig.setMixv(boolean)