https://cloud.tencent.com/developer/user/4772807 腾讯云 - chaoli https://cloud.tencent.com/developer/user/4772807 发表于云通信与音视频 https://cloud.tencent.com/developer/column/75088
167
简介
实时音视频 TRTCSDK 适用的业务场景是视频会议, 坐席通话, 在线教育等, 也可以实现类似微信的语音通话, 语音会议功能,
官网开发文档已经给出了音视频通话的调用示例, 本专栏的《实现类似微信的纯语音通话》也提供了纯音频通话示例. 接下来就是本文重点: 怎么把通话的纯音频流, 从实时音视频后台, 旁推到直播后台, 提供海量用户使用 CDN 地址播放收听??
实现
把音视频数据流旁推到直播后台, 直播后台接收流的依据是以画面数据为准的, 纯音频流里面没有画面数据, 这就需要额外的信令通道来提醒直播后台:"这条是音频流, 麻烦接收一下". 下面我们就来看, 如何通过 TRTCSDK 的终端接口, 实现传信令的功能.
Android:
1. 构造音频推流参数
音频推流参数需要填充到 TRTCParams.businessInfo 字段中, 因为音频推流参数是一个 JSON 字符串, 所以需要构造一个 JSON 数据.
- 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
- 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. 进入房间
- trtcCloud.startLocalAudio();
- // 进房
- trtcCloud.enterRoom(trtcParams, TRTCCloudDef.TRTC_APP_SCENE_VIDEOCALL);
- iOS:
- // 设置纯音频旁路参数
- self.param.bussInfo = @"{\"Str_uc_params\":{\"pure_audio_push_mod\":1}}";
- // 进房
- [_trtc enterRoom:self.param appScene:TRTCAppSceneVideoCall];
注意: 传给 SDK 的 JSON 字符串参数注意大小写一致, 参数名错误会导致进房失败.
补充:
纯音频推流参数完整说明:
- {
- "Str_uc_params": {
- "uc_biz_type": 1000, // 可选字段, 取值参考 ENUM_CONFMASTER_BIZTYPE
- "uc_callee_number": "0086135xxxxxxxx", // 可选字段, 用户手机号码, biztype=1001 时必填 (必须为 11 位手机或固话号码, 号码前加 0086, 如 008613631686024, 固话如: 0086075586013388)
- "record_id": 43567, // 可选字段, 自动录制时业务自定义 id,int32, 录制回调时给到用户. 注意: 同一个房间中的成员, 这个字段要么全带, 要么不带. 且值需要一致
- "pure_audio_push_mod": 1, // 可选字段, 纯音频推流模式, 取值参考 ENUM_PURE_AUDIO_PUSH_MOD
- "recordfile_storage_time": 10000 // 录制文件保存时长, 单位秒
- }
- }
原创声明, 本文系作者授权云 + 社区发表, 未经许可, 不得转载.
如有侵权, 请联系 yunjia_community@tencent.com 删除.
编辑于 5 天前
移动直播云直播实时音视频 iOSJSON
来源: https://www.qcloud.com/developer/article/1402853