简介
实时音视频TRTCSDK适用的业务场景是视频会议、坐席通话、在线教育等,也可以实现类似微信的语音通话、语音会议功能,
官网开发文档已经给出了音视频通话的调用示例,本专栏的《实现类似微信的纯语音通话》也提供了纯音频通话示例。接下来就是本文重点:怎么把通话的纯音频流,从实时音视频后台,旁推到直播后台,提供海量用户使用CDN地址播放收听??
实现
把音视频数据流旁推到直播后台,直播后台接收流的依据是以画面数据为准的,纯音频流里面没有画面数据,这就需要额外的信令通道来提醒直播后台:“这条是音频流,麻烦接收一下”。下面我们就来看,如何通过TRTCSDK的终端接口,实现传信令的功能。
Android:
1.构造音频推流参数
音频推流参数需要填充到TRTCParams.businessInfo字段中,因为音频推流参数是一个 JSON 字符串,所以需要构造一个JSON数据。
代码语言:javascript复制JSONObject Str_uc_params = new JSONObject();
JSONObject pure_audio_push_mod = new JSONObject();
try {
pure_audio_push_mod.put("pure_audio_push_mod", 1);
// 1: 允许纯音频推流,2: 允许纯音频推流 录制
Str_uc_params.put("Str_uc_params", pure_audio_push_mod);
Log.i(TAG, "纯音频推流参数: " Str_uc_params.toString());
} catch (JSONException e) {
e.printStackTrace();
}
iOS、Windows、Mac、Linux端也是适用,小程序端看文档进阶:小程序实时音视频参数透传
2.设置频推流参数
然后赋值给 TRTCParams.businessInfo
代码语言:javascript复制private TRTCCloudDef.TRTCParams trtcParams;
// TRTC SDK 视频通话房间进入所必须的参数
Intent intent = getIntent();
int sdkAppId = intent.getIntExtra("sdkAppId", 0);
int roomId = intent.getIntExtra("roomId", 0);
String selfUserId = intent.getStringExtra("userId");
String userSig = intent.getStringExtra("userSig");
trtcParams = new TRTCCloudDef.TRTCParams(sdkAppId, selfUserId, userSig, roomId, "",
Str_uc_params.toString());
3. 进入房间
代码语言:javascript复制trtcCloud.startLocalAudio();
//进房
trtcCloud.enterRoom(trtcParams, TRTCCloudDef.TRTC_APP_SCENE_VIDEOCALL);
iOS:
代码语言:javascript复制// 设置纯音频旁路参数
self.param.bussInfo = @"{"Str_uc_params":{"pure_audio_push_mod":1}}";
// 进房
[_trtc enterRoom:self.param appScene:TRTCAppSceneVideoCall];
注意:传给SDK的json字符串参数注意大小写一致,参数名错误会导致进房失败。
补充:
纯音频推流参数完整说明:
代码语言:javascript复制{
"Str_uc_params": {
"record_id": 43567, //可选字段,自动录制时业务自定义id,int32,录制回调时给到用户.注意:同一个房间中的成员,这个字段要么全带,要么不带.且值需要一致
"pure_audio_push_mod": 1, //可选字段,纯音频推流模式。 1表示旁路推流;2表示旁路推流 录制
"recordfile_storage_time": 10000 //录制文件保存时长,单位秒
}
}