推流
更新时间:2021-05-26
功能简介
在多人通话和互动直播等场景中,如果想要其他人能够看到自己的画面和听到自己的声音,需要先推送自己的音视频画面和声音到 云端服务
上。然后对端再从 云端服务
上拉取音视频流,才可以获取到视频画面和听到声音。
步骤
推流相关 API
-
登录房间成功后即可进行推流操作,如果要推音频和视频流则必须先开启本地摄像头采集。
-
如果登录房间的时候
isOnlyAudio
参数为 YES 则只发送音频数据,视频数据不会发送,拉流方只能拉取到音频数据。
// 发布音视频数据(推流)
mRtcEngine.startPublishing();
// 停止发布音视频数据
mRtcEngine.stopPublishing();
推流状态变更的通知
-
调用
startPublishing
推流接口之后,成功和失败的状态通过onPublishStateUpdate
接口进行回调 。 -
错误码可参考 推流状态回调错误码
/**
* 推流状态变更的通知,调用 startPublishing 之后会触发该方法回调,发布资源状态的变更会通过该方法进行通知
* @param state 状态码
*/
void onPublishStateUpdate(final int state);
推流在具体业务场景中处理
场景使用参考
-
开播端 - 推流
startCapture
开启摄像头采集addDisplayView
添加绑定渲染推流视图loginRoom
登录房间,在LVResultCallback2
回调接口中进行处理。startPublishing
开始推流
-
加入端
loginRoom
登录房间,拉取房间所有流,在LVResultCallback2
回调接口中进行处。addDisplayView
添加绑定渲染推流视图,指定视图uid
。startPlayingStream
播放房间内的流。
其它 API
设置推流信息回调频率
- 推流状态的变更通过
OnPublishStateUpdate
方法进行回调。 - 通过设置推流信息回调频率,在
OnPublishQualityUpdate
拿到相关质量信息。
// 设置推流时数据统计信息回调的频率(必须在登录房间之前设置)
mRtcEngine.setPublishQualityMonitorCycle(1);
/**
* 推流质量状态变化的通知,SDK 内部会定时统计推流的质量信息,APP 可以实现该方法获取推流的视频质量信息统计,回调的频率可以通过 setPublishQualityMonitorCycle 进行设置
* @param quality 质量信息
*/
void onPublishQualityUpdate(LVVideoStatistic stats);
LVVideoStatistic 数据信息回调类
- 此类包含了推流的相关数据信息,包含当前帧率、分辨率、码率 等。
// 视频编码帧数量
public int videoEncodeFrames;
// 视频总发送包数量
public int videoSentPackets;
// 视频总发送字节数
public long videoSentKBytes;
// 视频输入帧率(视频帧率)
public int videoFps;
// 视频丢包总数
public int videoLostPackets;
// 音频丢包总数
public int audioLostPackets;
// 当前可用的发送带宽
public int availableSendBandwidth;
// 视频码率
public int videoBitrateBps;
// 音频码率
public int audioBitrateBps;
// 视频编码耗时(单位毫秒),仅对视频发送方有效
public int videoAvgEncodeCostMs;
// 音频包 RTT,单位 ms
public int audioRtt;
// 视频包 RTT,单位 ms
public int videoRtt;
// 累计视频丢包百分比
public int videoLostPercent;
// 累计音频丢包百分比
public int audioLostPercent;
// 推流:编码视频宽,拉流:输入视频帧宽
public int frameWidth;
// 推流:编码视频高,拉流:输入视频帧高
public int frameHeight;