推流
如果登录房间时选择了主播或者互动身份,需要进行推流操作,其他人才能看到直播画面。
即将自己的视频画面通过调用推流方法推送到服务端,观看者通过从服务端拉流,才可以看到推流者的视频画面。
步骤
1、设置推流配置
(1)设置推流视频配置:
推流前需要设置推流视频配置ChuangVideoConfig,设置推流的分辨率、比特率、帧率等数据,一定要在推流前设置,推流后设置或者修改不会生效。如果需要修改配置,需要停止推流,修改配置后,重新发起推流新的配置才会生效。
Engine.setVideoConfig(videoConfig,MAIN);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
videoConfig | ChuangVideoConfig | 必传 | 设置推流配置 |
MAIN | ChuangPublishChannel | 必传 | 设置推流的通道 |
推流参数众多,具体可参考demo代码示例。
(2)设置推流音频配置:
推流前设置推流音频配置ChuangAudioConfig,通过该函数可以设置推流音频的编码类型、码率、音频声道等,如果不调用此函数,则默认标准音质,目前仅支持推流前设置,推流后设置或者修改不会生效。如果需要修改配置,需要停止推流,修改配置后,重新发起推流新的配置才会生效。
Engine.setAudioConfig(audioConfig,MAIN);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
audioConfig | ChuangAudioConfig | 必传 | 设置推流配置 |
MAIN | ChuangPublishChannel | 必传 | 设置推流的通道 |
2 发起推流
登录房间成功返回后,比如主播或者多人视频场景下,需要将自己音视频流推送给他人看到,则必须调用以下推流接口,将上述初始化的配置类传入推流接口。
推流前设置推流音频配置ChuangAudioConfig,内部包括RTMP服务地址(rtmpAddress)和流类型(streamMode),默认流类型是音视频,如果不需要转推流到RTMP,推流类型也是音视频流。
注意
如果推流时需要同时推流到RTMP服务则必须给ChuangStreamConfig的rtmpAddress参数传入正确的RTMP服务地址,RTMP地址内容请参考以下方法参数说明;如果不需要同时推流到RTMP,则RTMP地址传空。为了保证RTMP推流和RTC推流状态一致,如果RTMP地址传了值则必须保证RTMP地址正确,否则会影响正常的RTC推流。
如果推流不是默认的音视频,比如推纯音频,则可以给ChuangStreamConfig的streamMode传相应纯音频推流的值。
//推主流
Engine.startPublishStream(StreamConfig, MAIN);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
StreamConfig | ChuangStreamConfig | 必传 | 推流配置参数对象 |
MAIN | ChuangPublishChannel | 必传 | 设置推流的通道 |
3、停止推流
需要停止推流时调用:stopPublishStream
//停主流
Engine.stopPublishStream(MAIN);
4、媒体设备控制
设置本端麦克风是否静音
即推流时是否采集本端的声音,如果不采集设置true,如果采集则设置false,推流中可以实时修改该参数,会立即生效。如果不设置,推流默认是采集声音。
Engine.muteLocalAudio(streamId,true);
方法参数说明:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
streamId | string | 必传 | 流ID |
mute | bool | 必传 | 本端是否静音,如果静音(即不采集麦克风声音)设置true,如果不静音(即采集麦克风声音)设置false |
5、实现推流相关回调
当调用了开始推流、停止推流等方法,会触发onPublishStreamStateUpdate。可在回调方法中处理推流返回的结果。
ChuangLiveEngine.on("onPublishStreamStateUpdate", function (streamId, state, errorCode) {
console.log("onPublishStreamStateUpdate", streamId, state, errorCode);
});