为提升数据传输量和避免网络拥塞,声网 RTSA SDK 会根据网络带宽状况的变化建议开发者实时调整发送码率。
有以下两种情况:
onDecBitrate
回调,建议某频道应该降低编码码率。收到此回调后,发送端应该按照回调中提示的值降低码率。onIncBitrate
回调,建议某频道应该提高编码码率。收到此回调后,发送端应该按照回调中提示的值提高码率。以下为示例代码,仅供参考:
final public static int VIDEO_TARGET_BPS_MAX = 1 << 23; // 8Mbps
final public static int VIDEO_TARGET_BPS_MIN = 1 << 16; // 64Kbps
static int checkTargetBps(int bps) {
// Make sure the target bps is valid
if (bps > VIDEO_TARGET_BPS_MAX) {
bps = VIDEO_TARGET_BPS_MAX;
} else if (bps < VIDEO_TARGET_BPS_MAX) {
bps = VIDEO_TARGET_BPS_MIN;
}
return bps;
}
private final AgoraRtcEvents event_listener = new AgoraRtcEvents() {
@Override
public void onDecBitrate(String s, int i) {
VideoEncoder video_encoder = getVideoEncoder(channel);
final int target_bps = checkTargetBps(video_encoder.getTargetBps() - bps);
video_encoder.setTargetBps(target_bps);
}
@Override
public void onIncBitrate(String s, int i) {
VideoEncoder video_encoder = getVideoEncoder(channel);
final int target_bps = checkTargetBps(video_encoder.getTargetBps() + bps);
video_encoder.setTargetBps(target_bps);
}
// ...
};
inc_bitrate
表示网络可用带宽充足,可以增加编码码率;dec_bitrate
表示网络可用带宽不够,应该减少编码码率。开发者应该自行控制码率上限和下限,确保码率不过大或过小。